<?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>ToolBox</name>
	<version>1.3.8</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[DQo8ZGl2IGlkPSJwYWdlX3RhYnMiPiAgICAgDQogIDxkaXYgaWQ9ImdlbmVyYWwiPg0KICAgIEdlbmVyYWwgSW5mbw0KICA8L2Rpdj4gICAgIA0KICA8ZGl2IGlkPSJyZWRpcmVjdCI+DQogICAgUmVkaXJlY3RzIC8gRXJyb3IgVHJhY2tpbmcNCiAgPC9kaXY+IA0KICA8ZGl2IGlkPSJhdXRvbGlnaHRib3giPg0KICAgIEF1dG9MaWdodEJveCAgDQogIDwvZGl2PiAgIA0KICA8ZGl2IGlkPSJzb2NpYWxzaGFyZXByaXZhY3kiPg0KICAgIFNvY2lhbFNoYXJlUHJpdmFjeSAgIA0KICA8L2Rpdj4gICANCiAgPGRpdiBpZD0idHdpdHRlcmZlZWQiPg0KICAgIFR3aXR0ZXJmZWVkICAgDQogIDwvZGl2PiAgIA0KICA8ZGl2IGlkPSJ0YWlsIj4NCiAgICB0YWlsICANCiAgPC9kaXY+ICAgICAgIA0KICA8ZGl2IGlkPSJzbWFydHl0b29scyI+DQogICAgU21hcnR5IFRvb2xzICAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9Im1vYmlsZWRldGVjdCI+DQogIE1vYmlsZSBEZXRlY3QNCiAgPC9kaXY+DQogIDxkaXYgaWQ9InBsdWdpbnMiPg0KICAgIFBsdWdpbnMgICANCiAgPC9kaXY+ICAgICANCjwvZGl2PiAgIA0KPGRpdiBjbGFzcz0iY2xlYXJiIj4gIA0KDQo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPiAgDQogIDxkaXYgaWQ9ImdlbmVyYWxfYyI+DQoNCg0KPGgzPldoYXQgRG9lcyBJdCBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIHdoaWNoIG1heSBiZSB1c2VmdWwgZm9yIHdlYm1hc3RlcnMuIEN1cnJlbnQgZnVuY3Rpb25zOjwvcD4NCjx1bD4NCgk8bGk+MzAxLVJlZGlyZWN0cyAoZS5nLiBvZiBkZWxldGVkIHBhZ2VzKSBpbmNsdXNpbmcgdGhlIHBvc3NpYmlsaXR5IHRvIHNldCBydWxlcyB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zLjwvbGk+DQoJPGxpPjQwNC1FcnJvci1UcmFja2luZyAoYWxzbyBmb3IgaW1hZ2VzLCBQREYtZmlsZXMsIGV0Yy4pIC0gaW5jbHVzaXZlIGlnbm9yZS1maWx0ZXIgYW5kIGxpbmtpbmcgdG8gdGhlIDMwMS1mdW5jdGlvbmFsaXR5LjwvbGk+DQoJPGxpPlNvY2lhbFNoYXJlUHJpdmFjeSAtIEZ1bmN0aW9uYWxpdHkgdG8gaW5zZXJ0IDItQ2xpY2sgU29jaWFsLU1lZGlhIEJ1dHRvbnMsIHRvIGhhdmUgYSBiZXR0ZXIgcHJpdmFjeSBmb3IgdGhlIHdlYnNpdGUgdmlzaXRvcnMuPC9saT4NCgk8bGk+U21hcnR5IC0gU29tZSBjb250ZW50IGZ1bmN0aW9uczwvbGk+DQoJPGxpPlNtYXJ0eSAtIFNvbWUgcGx1Z2luczwvbGk+DQo8L3VsPg0KDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBDTVMgTWFkZSBzaW1wbGUgd2Vic2l0ZTogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLmRlPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIENNUyBNYWRlIFNpbXBsZSBGb3J1bTogPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUvdmlld2ZvcnVtLnBocD9pZD05IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUvdmlld2ZvcnVtLnBocD9pZD05PC9hPjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgTHVrYXMgQmxhdHRlciwgY2FuIGJlIHJlYWNoZWQgdXNpbmcgaGlzIHdlYnNpdGU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuYmxhdHRlcnRlY2guY2giIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmJsYXR0ZXJ0ZWNoLmNoPC9hPjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgQW5kaSBQZXR6b2xkdCwgY2FuIGJlIHJlYWNoZWQgdXNpbmcgaGlzIHdlYnNpdGU6IDxhIGhyZWY9Imh0dHA6Ly9hbmRpbWluaXN0cmF0b3IuZGUiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vYW5kaW1pbmlzdHJhdG9yLmRlPC9hPjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4NCjwvdWw+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxwPkNvcHlyaWdodCDCqSAyMDExLCBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaCBhbmQgQW5kaSBQZXR6b2xkdCA8YW5kaUBwZXR6b2xkdC5uZXQ+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJyZWRpcmVjdF9jIj4NCg0KPGgzPkhvdyBjYW4gSSB1c2UgMzAxLUZvcndhcmRpbmcgb2YgcGFnZXMgb3IgNDA0LUVycm9yLVRyYWNraW5nPzwvaDM+DQo8cD48c3Ryb25nPjEuIENvbmZpZ3VyZSB0aGUgbW9kdWxlPC9zdHJvbmc+PC9wPg0KPHA+VGhlIG1vZHVsZSBpcyBhbHJlYWR5IGFjdGl2ZSB0aHJvdWdoIHRoZSBDTVNtcy1pbnRlZ3JhdGVkIGV2ZW50IG1hbmFnZW1lbnQuPC9wPg0KPHA+QnV0IHlvdSBjYW4gZGVhY3RpdmF0ZSB0aGUgbW9kdWxlIGNhbGxpbmcgdGhyb3VnaCBldmVudCBtYW5hZ2VtZW50IGluIHRoZSBzZXR0aW5ncyBvZiB0aGUgbW9kdWxlLiBJZiB5b3UgdXNlIHRoaXMgb3B0aW9uLCB5b3UgbmVlZCB0byBpbmNsdWRlIHRoZSBtb2R1bGUgY2FsbGluZyBhdCB0aGUgYmVnaW5uaW5nIG9mIHlvdXIgcGFnZS10ZW1wbGF0ZShzKTo8YnIgLz48Y29kZT57Y21zX21vZHVsZSBtb2R1bGU9J1Rvb2xCb3gnfTwvY29kZT48YnIgLz4NClRoZSBiZXN0IHBsYWNlIHRvIGluY2x1ZGUgaXQgaXMgcmlnaHQgYWZ0ZXIge3Byb2Nlc3NfcGFnZWRhdGF9LjwvcD4NCjxwPk5vdyB5b3UgY2FuIGFjdGl2YXRlIHRoZSBmdW5jdGlvbnMgeW91IHdhbnQgdG8gdXNlIHdpdGhpbiB0aGUgbW9kdWxlIHNldHRpbmdzLjwvcD4NCjxwPjxzdHJvbmc+Mi4gQ29uZmlndXJlIHRoZSBkaWZmZXJlbnQgVG9vbEJveCBmdW5jdGlvbnM8L3N0cm9uZz48L3A+DQo8cD5VcCB0byBub3csIHRoZSBtb2R1bGUgaXNuJ3QgZG9pbmcgYW55dGhpbmcuIFlvdSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgc2V0dGluZ3MvcnVsZXMgb2YgdGhlIGRpZmZlcmVudCBUb29sQm94IGZ1bmN0aW9ucy48L3A+DQoNCg0KPC9kaXY+DQo8ZGl2IGlkPSJhdXRvbGlnaHRib3hfYyI+DQoJPGgzPldpZSBiZW51dHplIGljaCBBdXRvTGlnaHRCb3g/PC9oMz4NCgk8cD5BdXRvbGlnaHRib3ggaXN0IGRpZSBlaW5mYWNoc3RlIE3DtmdsaWNoa2VpdCBlaW5lIExpZ2h0Ym94IGVpbmVzIEJpbGRlciB6dSBlcnpldWdlbi4gRGFzIEdydW5kcHJpbnppcCBmdW5rdGlvbmllcnQgc286PC9wPg0KCTxwPkJlaW0gU3BlaWNoZXJuIGVpbmVyIFNlaXRlLCBlaW5lcyBCbG9nLSBvZGVyIGVpbmVzIE5ld3NlaW50cmFncyB3aXJkIGRlciBJbmhhbHQgbmFjaCBCaWxkZXJuIGR1cmNoc3VjaHQuIERhYmVpIHZlcmdsZWljaHQgZGFzIFNjcmlwdCBvYiBkYXMgQmlsZCBtaXQgZGVyIGtvcnJla3RlbiBHcsO2c3NlIG9kZXIgdmVya2xlaW5lcnQgZWluZ2VidW5kZW4gaXN0LiBJc3QgZGFzIEJpbGQgdmVya2xlaW5lcnQgZWluZ2VidW5kZW4sIHdpcmQgZWluIFRodW1ibmFpbCBnZW5lcmllcnQgdW5kIGRpZSBCaWxkLVVSTCBhdWYgZGFzIFRodW1ibmFpbCBhbmdlcGFzc3QuIFp1c8OkdHpsaWNoIHdpcmQgdW0gZGFzIEJpbGQgZWluZW4gTGluayBhdWYgZGFzIE9yaWdpbmFsYmlsZCBlcnN0ZWxsdC48L3A+DQoJDQoJPHA+PGI+V2llIG11c3MgaWNoIGVpbiBCaWxkIGluIGRlbiBUZXh0IGVpbmbDvGdlbiBkYW1pdCBBdXRvTGlnaHRCb3ggYWt0aXYgd2lyZD88L2I+PC9wPg0KCTxwPklkZWFsIHdpcmQgZWluIEJpbGQgd2VsY2hlcyBhdWYgZGVyIFdlYnNlaXRlIGVpbmdlZsO8Z3Qgd2lyZCBhdWYgZWluZSBzaW5udm9sbGUgR3LDtnNzZSB2ZXJrbGVpbmVydC4gT3B0aW1hbCBpc3QgZWluIFdlcnQgendpc2NoZW4gNjAwIC0gMTAwMCBQaXhlbCBhdWYgZGVyIGzDpG5nZXJlbiBLYW50ZS4gRGFuYWNoIGthbm4gZGllc2VzIEJpbGQgbWl0dGVscyBNaWNyb1RpbnkgLyBUaW55TUNFIGluIGRlbiBUZXh0IGVpbmdlZsO8Z3Qgd2VyZGVuLiBNaXR0ZWxzIFZlcsOkbmRlcnVuZyBkZXIgR3LDtnNzZSBkYXMgQmlsZCBhdWYgZGllIG9wdGltYWxlIEdyw7Zzc2UgdmVya2xlaW5lcm4uPC9wPg0KCTxwPkJlaW0gc3BlaWNoZXJuIGVya2VubnQgbnVuIEF1dG9MaWdodEJveCwgZGFzcyBlaW4gQmlsZCB2ZXJrbGVpbmVydCBlaW5nZWbDvGd0IHd1cmRlIHVuZCBlcnNldHp0IGRpZXNlcyBCaWxkIG1pdCBlaW5lbSBUaHVtYm5haWwgdW5kIGVyc3RlbGx0IGVpbmVuIExpbmsgYXVmIGRhcyBPcmlnaW5hbGJpbGQuPC9wPiANCgkNCgk8cD48Yj5GdW5rdGlvbmFsaXTDpHQ8L2I+PC9wPg0KCTx1bD4NCgkJPGxpPkF1dG9MaWdodEJveCBtb2RpZml6aWVydCBJbmhhbHRlIChpbiBqZWRlbSBJbmhhbHRzYmxvY2spLCBOZXdzZWludHLDpGdlIHVuZCBDR0Jsb2cgSW5oYWx0ZTwvbGk+DQoJCTxsaT5FbnRkZWNrdCBBdXRvTGlnaHRCb3ggZGllIEdyw7Zzc2Vuw6RuZGVydW5nIGVpbmVzIGJlc3RlaGVuZGVuIEJpbGRlcywgc28gd2lyZCBkYXMgVGh1bWJuYWlsIGF1dG9tYXRpc2NoIGluIGRlciBuZXVlbiByaWNodGlnZW4gR3LDtnNzZSBlaW5nZWJ1bmRlbi48L2xpPg0KCQk8bGk+RXMga2FubiBlaW4gcmVsPSBvZGVyIGVpbiBjbGFzcz0gQXR0cmlidXRlIGRlZmluaWVydCB3ZXJkZW48L2xpPg0KCQk8bGk+T3B0aW9uYWwga2FubiBkYXMgSmF2YVNjcmlwdCBkZXIgTGlnaHRib3ggZGlyZWt0IGltIE1vZHVsIGdlbnV0enQgd2VyZGVuPC9saT4NCgkJPGxpPkF1dG9tYXRpc2NoZSBFaW5iaW5kdW5nIGRlcyBTdHlsZXNoZWV0cyB1bmQgZGVzIEphdmFTY3JpcHRzIGRlciBMaWdodGJveCBpbnMgVGVtcGxhdGU8L2xpPg0KCTwvdWw+CQ0KICA8L2Rpdj4NCiAgPGRpdiBpZD0ic29jaWFsc2hhcmVwcml2YWN5X2MiPg0KICA8aDM+SG93IGNhbiBJIHVzZSB0aGUgU29jaWFsU2hhcmVQcml2YWN5IEJ1dHRvbnM8L2gzPg0KICA8cD5Tb2NpYWxTaGFyZVByaXZhY3kgaXMgYSBmcm9tIGhlaXNlLmRlIHBvc3RlZCBQbHVnaW4gd2hpY2ggZ2l2ZXMgbW9yZSBwcml2YWN5IGZvciBTb2NpYWxtZWRpYSBCdXR0b25zLiBUaGUgUGx1Z2luIG1lcmdlcyB0aGUgU29jaWFsbWVkaWEgYnV0dG9ucyBvZiBGYWNlYm9vaywgVHdpdHRlciBhbmQgR29vZ2xlKyBvbmx5IG9uIHRoZSBleHByZXNzIGRlc2lyZSBvZiB0aGUgdXNlcnMuPGJyIC8+DQoJIEEgZnVydGhlciBhZHZhbnRhZ2Ugb2YgdGhpcyBtZXRob2QgaXMgdGhhdCB0aGUgbG9hZCBzcGVlZCBvZiBhIHNpZGUgZG9lcyBub3Qgc3VmZmVyIGZyb20gdGhlIFNvY2lhbG1lZGlhIGJ1dHRvbiwgYmVjYXVzZSBkdXJpbmcgdGhlIGZpcnN0IGxvYWRpbmcgcHJvY2VkdXJlIGFsbCBkYXRhIGFyZSBsb2FkZWQgZGlyZWN0bHkgZnJvbSB0aGUgb3duIHNlcnZlci48L3A+DQoJIA0KCSA8cD5JbiBvcmRlciB0byB1c2UgU29jaWFsU2hhcmVQcml2YXksIHRoZSBleHRlbnNpb24gdW5kZXIg4oCcc2V0dGluZ3PigJ0gbXVzdCBiZSBhY3RpdmF0ZWQuIHN1YnNlcXVlbnRseSDigJxTb2NpYWxTaGFyZVByaXZheeKAnSBpbmRpdmlkdWFsIGFkanVzdG1lbnRzIGNhbiBiZSBtYWRlIGluIHRoZSByZWdpc3Rlci4gVGhvc2Ugb2YgYnV0dG9uIGFyZSBpbnNlcnRlZCBhcyBmb2xsb3dzOjwvcD4NCgkgPGNvZGU+e1Rvb2xCb3ggbW9kPSJzb2NpYWxzaGFyZXByaXZhY3kifTwvY29kZT4NCgkgDQoJIDxwPkluIHRoZSBzZXR0aW5ncyBpdCBjYW4gYmUgZGVmaW5lZCBpZiBqUXVlcnkgc2hvdWxkIGJlIGxvYWRlZCBvciBub3QuIFRoYXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0IGRlcGVuZHMgaW4gd2hpY2ggaG9tZXBhZ2UgalF1ZXJ5IGFscmVhZHkgaXMgbWVyZ2VkLiAgIEluIHRoaXMgY2FzZSwgalF1ZXJ5IGhhcyBub3QgdG8gYmUgbG9hZGVkIGFnYWluLiA8L3A+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJ0d2l0dGVyZmVlZF9jIj4NCgkgIDxpbWcgc3JjPSIuLi9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL2hlbHAvdHdpdHRlcmZlZWQucG5nIiB3aWR0aD0iMzUzIiBoZWlnaHQ9IjQ1NCIgYWx0PSJUd2l0dGVyZmVlZCIgc3R5bGU9ImZsb2F0OiByaWdodCIgLz4NCgkgIDxoMz5XaWUgYmVudXR6ZSBpY2ggVHdpdHRlcmZlZWQ8L2gzPg0KCSAgPHA+VHdpdHRlcmZlZWQgd2lyIHdpZSBmb2xndCBlaW5nZWJ1bmRlbjo8L3A+DQoJICA8Y29kZT4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyB1c2VybmFtZT0nbHVrYXNibGF0dGVyJyBjb3VudD01IHRlbXBsYXRlPSd0d2l0dGVyZmVlZCcgZGF0ZWZvcm1hdD0nZnJpZW5kbHknIGNhY2hldGltZT0xMCAmIzEyNTs8YnIgLz4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyB1c2VybmFtZT0nbHVrYXNibGF0dGVyJyBjb3VudD01IHRlbXBsYXRlPSd0d2l0dGVyZmVlZCcgZGF0ZWZvcm1hdD0nZC5tLlkgSDppJyAmIzEyNTs8YnIgLz4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyB1c2VybmFtZT0nbHVrYXNibGF0dGVyJyBsaXN0PSd3ZWJkZXNpZ24nIGNvdW50PTUgJiMxMjU7PGJyIC8+DQoJCSYjMTIzO1Rvb2xCb3ggbW9kPSd0d2l0dGVyZmVlZCcgc2VhcmNoPScjY21zbXMnIGNvdW50PTEwICYjMTI1Ow0KCSAgPC9jb2RlPg0KCSAgDQoJICA8cD5Gb2xnZW5kZSBQYXJhbWV0ZXIga8O2bm5lbiBnZXfDpGhsdCB3ZXJkZW46PC9wPg0KCSAgPHVsPg0KCSAgCTxsaT51c2VybmFtZSAtIFR3aXR0ZXItVXNlcm5hbWUgKHdpcmQgZGVyIFBhcmFtZXRlciBzZWFyY2ggdmVyd2VuZGV0LCBzbyBtdXNzIGtlaW4gdXNlcm5hbWUgYW5nZWdlYmVuIHdlcmRlbik8L2xpPg0KCSAgCTxsaT50ZW1wbGF0ZSAob3B0aW9uYWwpIC0gTmFtZSBkZXMgVGVtcGxhdGUgZGFzIGdlbnV0enQgd2VyZGVuIHNvbGwuIE9obmUgZGllc2UgRGVmaW5pdGlvbiB3aXJkIGRhcyBTdGFuZGFyZHRlbXBsYXRlIGdlbGFkZW48L2xpPg0KCSAgCTxsaT5saXN0IChvcHRpb25hbCkgLSBOYW1lIGVpbmVyIExpc3RlIGRlcyBCZW51dHplcnMuIElzdCBkaWVzZXIgUGFyYW1ldGVyIGFuZ2VnZWJlbiwgd2lyZCBkaWUgVGltZWxpbmUgZGVyIGdld8OkaGx0ZW4gTGlzdGUgYW5nemVpZ3Q8L2xpPg0KCSAgCTxsaT5zZWFyY2ggKG9wdGlvbmFsKSAtIFN1Y2hiZWdyaWZmIG5hY2ggZGVtIGRpZSBUd2l0dGVyYXBpIGFiZ2VmcmFndCB3aXJkIChvaG5lIEJlbnV0emVybmFtZSk8L2xpPg0KCSAgCTxsaT5kYXRlZm9ybWF0IChvcHRpb25hbCkgDQoJICAJCTx1bD4NCgkgIAkJCTxsaT5mcmllbmRseSA9IFN0YW5kYXJkLVR3aXR0ZXJmb3JtYXQgaW4gZGVyIEFydCA8ZW0+MyBkYXlzIGFnbzwvZW0+PC9saT4NCgkgIAkJCTxsaT5kLm0uWSBIOm06cyAtIERhdGV0aW1lIEZvcm1hdGllcnVuZyBuYWNoIDxhIGhyZWY9Imh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZGF0ZXRpbWUuY3JlYXRlZnJvbWZvcm1hdC5waHAiPkRlZmluaXRpb24gcGhwLm5ldDwvYT48L2xpPg0KCSAgCQk8L3VsPg0KCSAgCTwvbGk+DQoJICAJPGxpPmNhY2hldGltZSAob3B0aW9uYWwpIC0gWmVpdCBpbiBNaW51dGVuIGluIHdlbGNoZXIgZGVyIFR3aXR0ZXJmZWVkIGltIENhY2hlIGFiZ2VsZWd0IGJsZWlidC4gU3RhbmRhcmQgMTAgTWludXRlbiwgbWluaW1hbCAxIE1pbnV0ZTwvbGk+DQoJICA8L3VsPg0KCSAgCQ0KCSAgPHA+SW0gVGVtcGxhdGUgc3RlaGVuIGZvbGdlbmRlIFZhcmlhYmxlbiB6dXIgVmVyZsO8Z3VuZzo8L3A+DQoJICA8Y29kZT4NCgkJICAmIzAzNjtpdGVtLSZndDt0ZXh0PGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtkYXRlPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtpbWdfdXJsPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtpbWdfdXJsX2h0dHBzPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzY3JlZW5uYW1lPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzY3JlZW5uYW1lX3VybDxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7YXV0aG9yPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzb3VyY2U8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2xvY2F0aW9uPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X2NvdW50PGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X3NjcmVlbm5hbWU8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfYXV0aG9yPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtmYXZvcml0ZWQNCgkgIDwvY29kZT4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InRhaWxfYyI+DQogIAk8aDM+dGFpbCAtIGEgcGhwL2pxdWVyeSBiYXNlZCBsb2dnaW5nIHN5c3RlbTwvaDM+DQogIAk8cD50YWlsIGlzIHVuZGVyIExpbnV4L1VuaXggYSBjb25zb2xlIHByb2dyYW0gd2hpY2ggbW9uaXRvcnMgbG9nZmlsZXMgbGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlmIGEgbGluZSB3YXMgYWRkZWQgdG8gdGhlIGxvZ2ZpbGUsIHRoYXQgd291bGQgYmUgZGlzcGxheWVkIGltbWVkaWF0ZWx5IHdpdGggdGFpbCwgSWYgdGhlIGxvZ2ZpbGUNCiAgCWlzIG1vbml0b3JlZC4gVGhlIHRhaWwgb2YgZnVuY3Rpb25hbGl0eSBUb29sQm94IHByb3ZpZGVzIGEgc2ltaWxhciBmdW5jdGlvbi4gPC9wPg0KICAJPGgzPkhvdyBkb2VzIGl0IHdvcms/PC9oMz4NCiAgCTxwPkZpcnN0LCB0aGUgbG9nZmlsZSBoYXMgdG8gYmUgZmVkIHdpdGggZGF0YS4gRm9yIHRoaXMgdGhlcmUgYXJlIHR3byBwb3NzaWJpbGl0aWVzOjwvcD4NCiAgCTxwPjxiPkluc3RhbGxhdGlvbiBpbiBhIG1vZHVsZSwgYSBQbHVnaW4gb3IgYW4gVURUPC9iPjwvcD4NCiAgCTxwPkZvciB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSBtdXN0IGJlIGNyZWF0ZWQgOjwvcD4NCiAgCTxjb2RlPgkmIzAzNjtsb2c9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVG9vbEJveCcpOzxiciAvPg0KCQkJJiMwMzY7bG9nLT5zZXRMb2dGaWxlKCd0YkxvZycpOyAvLyBPcHRpb25hbC4gSGVyZSB0aGUgbmFtZSBvZiB0aGUgbG9nIGZpbGUgY291bGQgYmUgc2V0PGJyIC8+DQoJCQkmIzAzNjtsb2ctPmx3cml0ZSgiSGVyZSB3ZSBjYW4gd3JpdGUgc29tZXRoaW5nIGluIHRoZSBsb2ciKTs8YnIgLz4NCgk8L2NvZGU+DQogIAkNCgk8cD48YnIgLz5BcyBwYXJhbWV0ZXIgd2UgY291bGQgdXNlIG5vcm1hbCB2YXJpYWJsZXMsIG9iamVjdHMgb3IgQXJyYXlzPC9wPg0KCTxwPjxiPkluc3RhbGxhdGlvbiBpbiBhIHRlbXBsYXRlPC9iPjwvcD4NCiAgCTxwPlRoZSBmb2xsb3dpbmcgZGF5IGNhbiBiZSBpbnN0YWxsZWQgaW50byBhIHRlbXBsYXRlOjwvcD4NCiAgCTxjb2RlPnt0YldyaXRlTG9nIGxvZz0id2FzIGbDvHIncyBsb2ciIGxvZ0ZpbGU9InRiTG9nIn08L2NvZGU+DQogIAk8cD48YnIgLz5QYXJhbWV0ZXI6PC9wPg0KICAJPHVsPg0KICAJPGxpPmxvZyAtIFRleHQgd2hpY2ggaGFzIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGxvZyBmaWxlPC9saT4NCiAgCTxsaT5bbG9nRmlsZV0gLSAob3B0aW9uYWwpIEhlcmUsIHlvdSBjb3VsZCBkZWZpbmUgdGhlIG5hbWUgb2YgdGhlIGxvZ2ZpbGU8L2xpPg0KICAJPC91bD4NCiAgDQogIAk8aDM+TW9uaXRvcmluZyB0aGUgbG9nIGZpbGU8L2gzPg0KICAJPHA+SW4gdGhlIHRhYiAidGFpbCBzaWduIiB0aGUgbG9nIGZpbGUgY2FuIG5vdyBiZSBtb25pdG9yZWQuIFRvIHNlbGVjdCBmcm9tIHRoZSBkcm9wIGRvd24gYm94IHRoZSBkZXNpcmVkIGxvZywgYXMgd2VsbCBhcyB0aGUgbnVtYmVyIG9mIHJvd3MsIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgbG9hZGluZy4gUGFyYWxlbGwsIA0KICAJbG9nIGZpbGVzIGNhbiBiZSBtb25pdG9yZWQuPC9wPg0KICAJDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzbWFydHl0b29sc19jIj4NCiAgCTxoMz5XaGF0IGZlYXR1cmVzIGhhcyB0aGUgU21hcnR5LU9iamVjdD88L2gzPg0KCTxwPlRvb2xCb3ggY29udGFpbnMgaXRzIG93biBTbWFydHkgQ2xhc3MgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCBmZWF0dXJlLCBhcyB3ZWxsIGFzIHNvbWUgcGx1Zy1pbnMgd2hpY2ggaXMgZm9yIGV4YW1wbGUgY2FuIGJlIHVzZWQgd2l0aCBBZHZhbmNlZCBDb250ZW50LiA8L3A+DQoJPGgzPkhvdyBEbyBJIFVzZSBJdDo8L2gzPg0KCTxwPldoZW4gdGhpcyBtb2R1bGUgaXMgaW5zdGFsbGVkLCBhIG5ldyBzbWFydHkgb2JqZWN0IG5hbWVkIGNnc2ltcGxlIGlzIGF1dG9tYXRpY2FsbHkgYXZhaWxhYmxlIHRvIHlvdXIgcGFnZSB0ZW1wbGF0ZXMsIGdsb2JhbCBjb250ZW50IGJsb2NrcywgYW5kIHZhcmlvdXMgbW9kdWxlIHRlbXBsYXRlcy4gIFRoaXMgc21hcnR5IG9iamVjdCBoYXMgbnVtZXJvdXMgZnVuY3Rpb25zIHRoYXQgeW91IGNhbiBjYWxsIGF0IGFueSB0aW1lLjwvcD4NCgk8aDQ+QXZhaWxhYmxlIEZ1bmN0aW9uczo8L2g0Pg0KCTxwPiZuYnNwOzwvcD4NCgk8dWw+DQoJPGxpPjxzdHJvbmc+c2VsZlVybDwvc3Ryb25nPihbJiMwMzY7YXNzaWduXSkNCgkgICAgPHA+UmV0dXJuIHRoZSBjdXJyZW50IFVSTDwvcD4NCgkgICAgPHA+QXJndW1lbnRzOg0KCSAgICAgICA8dWw+DQoJICAgICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQoJICAgICAgPC91bD4gIA0KCSAgICA8YnIvPjwvcD4NCgkgICAgPHA+RXhhbXBsZTo8YnIvPg0KCSAgICA8cHJlPlRoZSBwYWdlIFVSTCBpcyAmIzEyMzt0YnRvb2xzOjpzZWxmVXJsKCkmIzEyNTs8L3ByZT48YnIvPg0KICAgIAk8L3A+DQoJPC9saT4NCgkNCjxsaT48c3Ryb25nPmdldFBhZ2VVcmw8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCgkgICAgPHA+UmV0dXJuIFVSTCBvZiBhIHNwZWNpZmllZCBwYWdlPC9wPg0KCQkgICA8cD5Bcmd1bWVudHMNCgkgICAgICAgPHVsPg0KCSAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gZmluZCB0aGUgcGFyZW50IG9mLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCgkgICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KCSAgICAgICA8L3VsPiAgDQoJICAgIDxici8+PC9wPg0KCSAgICA8cD5FeGFtcGxlOjxici8+DQoJICAgIDxwcmU+VGhlIHBhcmVudCBwYWdlIFVSTCBpcyAmIzEyMzt0YnRvb2xzOjpnZXRQYWdlVXJsKCdob21lJykmIzEyNTs8L3ByZT48YnIvPg0KICAgIAk8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5pc0RlZmF1bHRQYWdlPC9zdHJvbmc+KCYjMDM2O2FsaWFzLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkNoZWNrIGlmIHBhZ2UgaXMgZGVmYXVsdCBwYWdlPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgIDx1bD4NCgkgICA8bGk+WyYjMDM2O2FsaWFzXSAtICBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byBmaW5kIHRoZSBwYXJlbnQgb2YuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgaXMgdXNlZC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgIDwvdWw+ICAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+JiMxMjM7aWYgdGJ0b29sczo6aXNEZWZhdWx0UGFnZSgmIzAzNjtwYWdlX2FsaWFzKSYjMTI1O0hlbGxvIGFuZCB3ZWxjb21lIHRvIG15IHNpdGUmIzEyMztlbHNlJiMxMjU7YW5vdGhlciBwYWdlJiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCgkNCg0KPGxpPjxzdHJvbmc+Z2V0UGFyZW50QWxpYXM8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5SZXR1cm5zIHRoZSBhbGlhcyBvZiB0aGUgc3BlY2lmaWVkIHBhZ2VzIHBhcmVudC4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlcmUgaXMgbm8gcGFyZW50LjwvcD4NCiAgICA8cD5Bcmd1bWVudHMNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIFRoZSBwYWdlIGFsaWFzIG9yIHRoZSBwYWdlIGlkIHRvIGZpbmQgdGhlIHBhcmVudCBvZi4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT5UaGUgcGFyZW50IHBhZ2UgYWxpYXMgaXMgJiMxMjM7dGJ0b29sczo6Z2V0UGFyZW50QWxpYXMoKSYjMTI1OzwvcHJlPjxici8+DQogICAgPC9wPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0TGV2ZWxBbGlhczwvc3Ryb25nPigmIzAzNjtsZXZlbCxbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPlNwZWNpZmllcyB0aGUgYWxpYXMgb2YgdGhlIHBhcmVudCBzaWRlIG9mIGEgY2VydGFpbiBiYWNrLiBJZiB0aGUgc3BlY2lmaWVkIGxldmVsIGlzIGhpZ2hlciB0aGFuIHRoYXQgb2YgdGhlIGN1cnJlbnQgcGFnZSwgYW4gZW1wdHkgc3RyaW5nIHdvdWxkIGJlIHJldHVybmVkLjwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT4mIzAzNjtsZXZlbCAgIC0gTnVtYmVyIG9mIGxldmVscyBmcm9tIHdoaWNoIHRoZSBhbGlhcyBoYXMgdG8gYmUgcmV0dXJuZWQgKDEgPSAxLiBMZXZlbCwgMiA9IDIuIExldmVsLCBldGMuKTwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIHRoZSBwYWdlIGFsaWFzIG9yIElEIG9mIHRoZSBwYWdlLCB0aGUgcGFyZW50IG9mIHRoZSBzcGVjaWZpZWQgbGV2ZWwgd2hpY2ggaGFzIHRvIGJlIGZvdW5kLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2Ugd291bGQgYmUgdXNlZC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAgIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUsIHRoYXQgdGhlIHJlc3VsdCBoYXMgdG8gYmUgYXNzaWduZWQuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+VGhlIGFsaWFzIG9mIHRoZSBwYXJlbnQgc2lkZSBvZiB0aGUgcGFnZSBvbiBsZXZlbCAxIGlzICYjMTIzO3RidG9vbHM6OmdldExldmVsQWxpYXMoMSkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRSb290QWxpYXM8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCgk8cD5SZXR1cm5zIHRoZSBhbGlhcyBvZiB0aGUgc3BlY2lmaWVkIHBhZ2VzIHJvb3QgcGFyZW50LiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiB0aGVyZSBpcyBubyByb290IHBhcmVudC48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gZmluZCB0aGUgcm9vdCBwYXJlbnQgb2YuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgaXMgdXNlZC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAgLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPlRoZSByb290IHBhcmVudCBwYWdlIGFsaWFzIGlzICYjMTIzO3RidG9vbHM6OmdldFJvb3RBbGlhcygpJiMxMjU7PC9wcmU+PGJyLz4NCiAgICA8L3A+ICAgIA0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0UGFnZVRpdGxlPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQoJPHA+UmV0dXJucyB0aGUgdGl0bGUgb2YgdGhlIHNwZWNpZmllZCBwYWdlLjwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byBmaW5kIHRoZSB0aXRsZSBvZi4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPlRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBwYWdlIGlzICYjMTIzO3RidG9vbHM6OmdldFBhZ2VUaXRsZSgpJiMxMjU7PC9wcmU+PGJyLz4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlTWVudXRleHQ8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCgk8cD5SZXR1cm5zIHRoZSBtZW51dGV4dCBvZiB0aGUgc3BlY2lmaWVkIHBhZ2UuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIFRoZSBwYWdlIGFsaWFzIG9yIHRoZSBwYWdlIGlkIHRvIGZpbmQgdGhlIHRpdGxlIG9mLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gICAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+VGhlIG1lbnV0ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UgaXMgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZU1lbnV0ZXh0KCkmIzEyNTs8L3ByZT48YnIvPg0KICAgIDwvcD4gICAgDQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5oYXNDaGlsZHJlbjwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KCTxwPlRlc3QgaWYgdGhlIHNwZWNpZmllZCBwYWdlIGhhcyBjaGlsZHJlbi48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gdGVzdC4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT4mIzEyMzt0YnRvb2xzOjpoYXNDaGlsZHJlbigiIiwiaGFzQ2hpbGRyZW4iKSYjMTI1Ow0KICAgICYjMTIzO2lmICYjMDM2O2hhc0NoaWxkcmVuJiMxMjU7VGhlIGN1cnJlbnQgcGFnZSBoYXMgY2hpbGRyZW4mIzEyMztlbHNlJiMxMjU7VGhlIGN1cnJlbnQgcGFnZSBoYXMgbm8gY2hpbGRyZW4mIzEyMzsvaWYmIzEyNTs8L3ByZT48YnIvPg0KICAgIDwvcD4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPmdldEZpcnN0Q2hpbGRBbGlhczwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dLFsmIzAzNjtvbmx5SW5NZW51XSA9IHRydWUpDQogICAgPHA+UmV0dXJuIHRoZSBhbGlhcyBvZiB0aGUgZmlyc3QgY2hpbGQgcGFnZS48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gdGVzdC4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7b25seUluTWVudV0gLSAob3B0aW9uYWwpIG9ubHkgYWN0aXZlIHBhZ2VzIGluIG1lbnUuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+JiMxMjM7dGJ0b29sczo6Z2V0Rmlyc3RDaGlsZEFsaWFzKCIiLCJmaXJzdENoaWxkQWxpYXMiKSYjMTI1Ow0KICAgIAlUaGUgYWxpYXMgb2YgdGhlIGZpcnN0IGNoaWxkIHBhZ2UgaXMgeyYjMDM2O2ZpcnN0Q2hpbGRBbGlhc308L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCjxsaT48c3Ryb25nPmdldENoaWxkcmVuPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O3Nob3dpbmFjdGl2ZV0sWyYjMDM2O2Fzc2lnbl0pDQoJPHA+UmV0dXJuIGFuIGFycmF5IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBwYWdlcyBjaGlsZHJlbiAoaWYgYW55KTwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byB0ZXN0LiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O3Nob3dpbmFjdGl2ZV0gLSAob3B0aW9uYWwpIFdldGhlciBpbmFjdGl2ZSBwYWdlcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCAoZGVmYXVsdHMgdG8gZmFsc2UpLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5GaWVsZHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5hbGlhcyAtIHRoZSBwYWdlIGFsaWFzIG9mIHRoZSBjaGlsZDwvbGk+DQogICAgICAgPGxpPmlkIC0gdGhlIHBhZ2UgaWQgb2YgdGhlIGNoaWxkPC9saT4NCiAgICAgICA8bGk+dGl0bGUgLSB0aGUgdGl0bGUgcGFnZSBvZiB0aGUgY2hpbGQgcGFnZS48L2xpPg0KICAgICAgIDxsaT5tZW51dGV4dCAtIHRoZSBtZW51IHRleHQgb2YgdGhlIGNoaWxkPC9saT4NCiAgICAgICA8bGk+c2hvd19pbl9tZW51IC0gd2V0aGVyIHRoaXMgY2hpbGQgcGFnZSBpcyB2aXNpYmxlIGluIG1lbnVzLjwvbGk+DQogICAgICAgPGxpPmFjdGl2ZSAtIHdldGhlciB0aGlzIGNoaWxkIHBhZ2UgaXMgYWN0aXZlLjwvbGk+DQogICAgICAgPGxpPnR5cGUgLSBUaGUgdHlwZSBvZiBjaGlsZCBjb250ZW50IG9iamVjdC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+DQomIzEyMzt0YnRvb2xzOjpnZXRDaGlsZHJlbigiIiwiIiwiY2hpbGRyZW4iKSYjMTI1Ow0Ke2lmIGNvdW50KCYjMDM2O2NoaWxkcmVuKSYjMTI1Ow0KICAge2ZvcmVhY2ggZnJvbT0mIzAzNjtjaGlsZHJlbiBpdGVtPSJjaGlsZCJ9DQogICAgICB7aWYgJiMwMzY7Y2hpbGQuc2hvd19pbl9tZW51fQ0KICAgICAgICBDaGlsZDogIGlkID0gJiMxMjM7JiMwMzY7Y2hpbGQuaWQmIzEyNTsgQWxpYXMgPSAmIzEyMzsmIzAzNjtjaGlsZC5hbGlhcyYjMTI1OzxiciAvPg0KICAgICAgey9pZn0NCiAgIHsvZm9yZWFjaH0NCnsvaWZ9fQ0KICAgIDwvcHJlPjxici8+DQogICAgPC9wPiAgIA0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0UGFnZUNvbnRlbnQ8L3N0cm9uZz4oJiMwMzY7YWxpYXMsWyYjMDM2O2Jsb2NrXSxbJiMwMzY7YXNzaWduXSkNCgk8cD5SZXR1cm5zIHRoZSB0ZXh0IG9mIGEgc3BlY2lmaWMgY29udGVudCBibG9jayBvZiBhbm90aGVyIHBhZ2UuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2FsaWFzIC0gVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gZXh0cmFjdCBjb250ZW50IGZyb20uPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Jsb2NrXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgaW4gdGhlIHNwZWNpZmllZCBwYWdlLiAgSWYgdGhpcyB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkIHRoZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdCBjb250ZW50IGJsb2NrIDxlbT4oY29udGVudF9lbik8L2VtPiBpcyBhc3N1bWVkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ24gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPlRoZSAnc2Vjb25kJyBibG9jayBvZiB0aGUgJ2Fib3V0JyBwYWdlIGlzICYjMTIzO3RidG9vbHM6OmdldFBhZ2VDb250ZW50KCdhYm91dCcsJ3NlY29uZCcsJ2ZvbycpJiMxMjU7JiMxMjM7ZXZhbCB2YXI9JGZvbyYjMTI1OzwvcHJlPjxici8+DQogICAgPC9wPiAgICANCjwvbGk+DQoNCjxsaT48c3Ryb25nPmhhc0ZldUdyb3VwQWNjZXNzPC9zdHJvbmc+KCYjMDM2O2ZldWdyb3VwcyxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5HaXZlcyBhIHRydWUvZmFsc2UgYmFjaywgaWYgdGhlIGxvZ2dlZCBGcm9udEVuZFVzZXIgaXMgYXNzaWduZWQgdG8gb25lIG9mIHRoZSBzcGVjaWZpZWQgdXNlciBncm91cHM8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7ZmV1Z3JvdXBzIC0gSURzIG9mIHRoZSB1c2VyIGdyb3Vwcy4gU2VydmFsIHVzZXIgZ3JvdXBzIHNob3VsZCBiZSBzZXBhcmF0ZWQgd2l0aCBhIGNvbW1hLiBGb3IgZXhhbXBsZTogMSwyLDQ8L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+JiMxMjM7aWYgdGJ0b29sczo6aGFzRmV1R3JvdXBBY2Nlc3MoIjEsMiwzKSYjMTI1O1VzZXIgaGFzIHBlcm1pc3Npb24mIzEyMztlbHNlJiMxMjU7VGhlIHVzZXIgaGFzIG5vIHBlcm1pc3Npb24mIzEyMzsvaWYmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KPGxpPjxzdHJvbmc+aXNMb2dnZWRJbjwvc3Ryb25nPihbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5SZXR1cm5zIHRoZSB1c2VyIElEIG9mIHRoZSBsb2dnZWQgaW4gZnJvbnQtZW5kIHVzZXI8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPiYjMTIzO2lmIHRidG9vbHM6OmlzTG9nZ2VkSW4oKSYjMTI1O1VzZXIgaXMgbG9nZ2VkIGluJiMxMjM7ZWxzZSYjMTI1O1RoZXJlIGlzIG5vIHVzZXIgbG9nZ2VkIGluJiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCjxsaT48c3Ryb25nPmdldFNpYmxpbmc8L3N0cm9uZz4oJiMwMzY7ZGlyZWN0aW9uLFsmIzAzNjthc3NpZ25dLFsmIzAzNjthbGlhc10pDQoJPHA+UmV0dXJucyB0aGUgYWxpYXMgb2YgdGhlIG5leHQgb3IgcHJldmlvdXMgc2libGluZyB0byB0aGUgc3BlY2lmaWVkDQogICAgICAgcGFnZS4gb3IgZmFsc2UuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2RpcmVjdGlvbiAtIHRoZSBkaXJlY3Rpb24gdG8gbG9vayBpbi4gIHBvc3NpYmxlIHZhbHVlcyBhcmUgcHJldixwcmV2aW91cywtMSxuZXh0LDE8L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyB0byBmaW5kIHRoZSBzaWJsaW5nIGZvci4gIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgPGJyLz48L3A+DQogICAgICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgICAgIDxwcmU+TGluayB0byBwcmV2aW91cyBzaWJsaW5nOiAmIzEyMzt0YnRvb2xzOjpnZXRfc2libGluZygmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O3ByZXZfc2libGluZyZxdW90OykmIzEyNTsmIzEyMztpZiAhZW1wdHkoJiMwMzY7cHJldl9zaWJsaW5nKSYjMTI1OyYjMTIzO2Ntc19zZWxmbGluayBwYWdlPSZxdW90OyYjMDM2O3ByZXZfc2libGluZyZxdW90OyB0ZXh0PSZxdW90O1ByZXZpb3VzJnF1b3Q7JiMxMjU7JiMxMjM7L2lmJiMxMjU7PC9wcmU+PGJyLz4NCiAgICA8L2xpPiAgICANCjxsaT48c3Ryb25nPmdldExhc3RNb2RpZmllZDwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkxhc3QgbW9kaWZpZWQgZGF0ZSBhcyB0aW1lc3RhbXA8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgIAk8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gdGVzdC4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgICAgPHByZT5MYXN0IE1vZGlmaWVkOiAmIzEyMzt0YnRvb2xzOjpnZXRMYXN0TW9kaWZpZWQoKXxkYXRlX2Zvcm1hdDoiJUEsICVlLiAlQiwgJVkiJiMxMjU7PC9wcmU+PGJyLz4NCjwvbGk+DQo8bGk+PHN0cm9uZz5nZXRBcnJheUFzVGFibGU8L3N0cm9uZz4oJiMwMzY7YXJyYXkpDQogICAgPHA+UmV0dXJucyBhIG11bHRpZGltZW5zaW9uYWwgYXJyYXkgYXMgYSB0YWJsZTwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT4mIzAzNjthcnJheSAtIHRoZSBhcnJheSB3aGljaCBzaG91bGQgYmUgbGF1Y2hlZCBhcyBhIHRhYmxlLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPiYjMTIzO3RidG9vbHM6OmdldEFycmF5QXNUYWJsZSgmIzAzNjthcnJheSkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCg0KDQo8L3VsPg0KPC9kaXY+DQoNCg0KPGRpdiBpZD0ibW9kaWZpZXJfYyI+DQoNCjxoMz5TbWFydHkgTW9kaWZpZXJ0PC9oMz4NCjx1bD4NCjxsaT48c3Ryb25nPnRiVHJ1bmNhdGVCZXR0ZXI8L3N0cm9uZz4oJiMwMzY7c3RyaW5nLCAmIzAzNjtsZW5ndGggPSA4MCwgJiMwMzY7ZXRjID0gJy4uLicsICYjMDM2O2xpbmsgPSAnJywgJiMwMzY7bGlua190ZXh0ID0gJycpKQ0KICAgIDxwQ3V0IGEgc3RyaW5nIHByZXNlcnZpbmcgYW55IHRhZyBuZXN0aW5nIGFuZCBtYXRjaGluZy48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7c3RyaW5nIC0gdGV4dC48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtsZW5naHQgLSAob3B0aW9uYWwsIDgwIHN0YW5kYXJkKSBudW1iZXIgb2Ygc2lnbi48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtldGMgLSAob3B0aW9uYWwsIC4uLiBzdGFuZGFyZCkgbW9yZSB0ZXh0LjwvbGk+DQogICAgICAgPGxpPiYjMDM2O2xpbmsgLSAob3B0aW9uYWwpIExpbmsgVVJMPC9saT4NCiAgICAgICA8bGk+JiMwMzY7bGlua190ZXh0IC0gKG9wdGlvbmFsKSBsaW5rIHRleHQ8L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIEJvdGggcGFyYW1ldGVyICYjMDM2O2VudHJ5LT5jb250ZW50IHVuZCAmIzAzNjtlbnRyeS0+bW9yZWxpbmsgYXJlIGV4YW1wbGVzDQogICAgPGJyIC8+DQogICAgPHByZT4mIzEyMzsmIzAzNjtlbnRyeS0+Y29udGVudHx0YlRydW5jYXRlQmV0dGVyOjEwMDonIC4uLic6JiMwMzY7ZW50cnktPm1vcmVsaW5rOidbcmVhZCBtb3JlXScmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCjwvdWw+DQoNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJtb2JpbGVkZXRlY3RfYyI+DQoNCjxoMz5Nb2JpbGUgRGV0ZWN0PC9oMz4NCg0KPHA+PGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BocC1tb2JpbGUtZGV0ZWN0L3dpa2kvTW9iaWxlX0RldGVjdCIgdGFyZ2V0PSJfYmxhbmsiPk1vYmlsZV9EZXRlY3Q8L2E+DQogaXMgYSBsaWdodHdlaWdodCBQSFAgY2xhc3MgZm9yIGRldGVjdGluZyBtb2JpbGUgZGV2aWNlcy4gSXQgdXNlcyB0aGUgVXNlci1BZ2VudCBzdHJpbmcgY29tYmluZWQgd2l0aCANCiBzcGVjaWZpYyBIVFRQIGhlYWRlcnMgdG8gZGV0ZWN0IHRoZSBtb2JpbGUgZW52aXJvbm1lbnQuIDwvcD4NCiANCiA8aDQ+VXNhZ2U8L2g0Pg0KIDxwPjxpPkNoZWNrIGZvciBhIHNwZWNpZmljIHBsYXRmb3JtOjwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzaU9TKCkgfSANCiAgLy8gY29kZSB0byBydW4gZm9yIHRoZSBBcHBsZSBpT1MgcGxhdGZvcm0uIA0Key9pZn0gDQogPC9wcmU+IDwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzQW5kcm9pZE9TKCkgfSANCiAgLy8gY29kZSB0byBydW4gZm9yIHRoZSBHb29nbGUgQW5kcm9pZCBwbGF0Zm9ybS4gDQp7L2lmfQ0KPC9wcmU+PC9wPg0KDQogPHA+T3RoZXIgY2FzZSBpbnNlbnNpdGl2ZSBhdmFpbGFibGUgbWV0aG9kcyBhcmUgaXNJcGhvbmUoKSwgaXNJcGFkKCksIGlzQmxhY2tCZXJyeSgpLCBpc0tpbmRsZSgpLCBpc09wZXJhKCksIGV0Yy4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG1ldGhvZHMgPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BocC1tb2JpbGUtZGV0ZWN0L3dpa2kvTW9iaWxlX0RldGVjdCIgdGFyZ2V0PV9ibGFuayI+Y2hlY2sgdGhlIHdpa2kuPC9hPjwvcD4NCg0KPHA+QWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgdG8gc2VlIGlmIHRoZSB1c2VyIGlzIHVzaW5nIGEgbW9iaWxlIGRldmljZSwgd2l0aG91dCBjYXJpbmcgZm9yIHNwZWNpZmljIHBsYXRmb3JtOjwvcD4NCjxwPjxwcmU+DQp7aWYgKCYjMDM2O3RibW9iaWxlLT5pc01vYmlsZSgpKX0NCiAgLy8gYW55IG1vYmlsZSBwbGF0Zm9ybQ0Key9pZn0NCjwvcHJlPjwvcD4NCjxwPjxwcmU+DQp7aWYoJiMwMzY7dGJtb2JpbGUtPmlzVGFibGV0KCkpfQ0KICAvLyBhbnkgdGFibGV0DQp7L2lmfQ0KPC9wcmU+PC9wPg0KDQoNCgkNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJwbHVnaW5zX2MiPg0KDQo8aDM+UGx1Z2luczwvaDM+DQo8cD48Yj5HZW5lcmFsIFBsdWdpbnM8L2I+PC9wPg0KPHA+Jm5ic3A7PC9wPg0KPHVsPg0KDQogPGxpPjxzdHJvbmc+e3RiU2Vzc2lvblNldH08L3N0cm9uZz4NCiAgICA8cD5BIHNtYXJ0eSBwbHVnaW4gdGhhdCBjYW4gc3RvcmUgZGF0YSBpbiB0aGUgdXNlciBzZXNzaW9uLiBUaGlzIGRhdGEgaXMgdGhlbiBhY2Nlc3NpYmxlIHZpYSB0aGUgJiMwMzY7c21hcnR5LnNlc3Npb24gYXJyYXkgaW4gc3Vic2VxdWVudCBwYWdlcy48L3A+DQogICAgPHA+QXJndW1lbnRzOjwvcD4NCiAgICAgICA8dWw+DQogICAgICAgPGxpPm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlIGluIHRoZSBzZXNzaW9uLjwvbGk+DQogICAgICAgPGxpPnZhbHVlIC0gVGhlIGRlc2lyZWQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxiciAvPg0KICAgIDxwcmU+e3RiU2Vzc2lvblNldCBuYW1lPSZxdW90O3Rlc3QmcXVvdDsgdmFsdWU9JnF1b3Q7YmxhaCZxdW90O308L3ByZT48L3A+DQogPC9saT4NCg0KIDxsaT48c3Ryb25nPiYjMTIzO3RiU2Vzc2lvblVuc2V0JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+QSBzbWFydHkgcGx1Z2luIHRoYXQgY2FuIGVyYXNlIGRhdGEgZnJvbSB0aGUgdXNlciBzZXNzaW9uLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGVyYXNlIGluIHRoZSBzZXNzaW9uLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxiciAvPg0KICAgIDxwcmU+JiMxMjM7dGJTZXNzaW9uVW5zZXQgbmFtZT0mcXVvdDt0ZXN0JnF1b3Q7JiMxMjU7PC9wcmU+PC9wPg0KIDwvbGk+DQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJWYXJFeHBvcnQmIzEyNTs8L3N0cm9uZz4NCiAgICA8cD5XaXRoIHRoaXMgcGx1Z2luIGFuIGFycmF5IGNhbiBiZSBwcmVwYXJlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIGZvciBleHBvcnRzLiBUaGUgZ2VyZXJhdGVkIHRleHQgaXMgc2VyaWFsaXplZCBhbmQgY2FuIGJlIGluc2VydGVkIGluIGEgZGlmZmVyZW50IHBsYWNlIG9mIHRoZSBlbnZpcm9ubWVudCBpbmRlcGVuZGVudGx5LjxiciAvPg0KICAgIEFkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCBpcywgdGhhdCBhIHByb2JsZW0gaW5jbHVkaW5nIHRoZSB1c2VkIGRhdGEgLCBjYW4gYmUgcmVjb25zdHJ1Y3RlZCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiwgd2l0aG91dCB0aGUgZW50aXJlIGVudmlyb25tZW50IG11c3QgYmUgcmVjcmVhdGVkLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gTmFtZSBvZiB0aGUgdmFyaWFibGUgdGhhdCBzaG91bGQgYmUgZXhwb3J0ZWQuPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YlZhckV4cG9ydCBuYW1lPSZxdW90O2l0ZW1zJnF1b3Q7JiMxMjU7PC9wcmU+PC9wPg0KIDwvbGk+DQogPC91bD4NCiANCiA8cD48Yj5Ub29sQm94IGZ1bmN0aW9uYWxpdGllczwvYj48L3A+DQogPHA+Jm5ic3A7PC9wPg0KIDx1bD4NCiA8bGk+PHN0cm9uZz4mIzEyMzt0YldyaXRlTG9nJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIFBsdWdpbiBhIHN0cmluZywgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGNhbiBiZSB3cml0dGVuIGluIHRoZSB0YWlsIGxvZyBvZiB0aGUgdG9vbCBib3ggaW4gYSBUZW1wbGF0ZSBvciBvbiBhIHNpZGUuIFRoaXMgUGx1Z2luIGlzIGludGVyZXN0aW5nIGZvciBkZWJ1Z2dpbmcgb2YgcHVycG9zZXMgb3IgdG8gbW9uaXRvciBkaWZmZXJlbnQgYWN0aW9ucy4gPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPmxvZyAtIFRoZSB0ZXh0IHdoaWNoIHNob3VsZCBiZSB3cml0dGVuIGluIHRoZSBsb2cgZmlsZSAoY291bGQgYmUgYSBzdHJpbmcsIGFuIGFycmF5IG9yIGFuIG9iamVjdCkuPC9saT4NCiAgICAgICA8bGk+W2xvZ0ZpbGVdIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgbG9nIGZpbGUgd2hpY2ggdGhlIHRleHQgc2hvdWxkIGJlIHdyaXR0ZW4uPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YldyaXRlTG9nIGxvZz0id2hpY2ggZm9yIHRoZSBsb2ciIGxvZ0ZpbGU9InRiTG9nIjsmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQogPC9saT4gDQogPC91bD4NCiANCiANCiA8cD48Yj5QbHVnaW5zIGZvciBBZHZhbmNlZENvbnRlbnQ8L2I+PC9wPg0KIDxwPiZuYnNwOzwvcD4NCiA8dWw+DQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRQYWdlSGllcmFyY2h5JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIFBsdWdpbiB0aGUgZW50aXJlIHNpZGUgaGllcmFyY2h5IGNhbiBiZSByZXByZXNlbnRlZC4gVGhlIGVtcGxveW1lbnQgb2YgdGhpcyBQbHVnaW4gaXMgcHJhY3RpY2FsIGluIGNvbm5lY3Rpb24gd2l0aCBBZHZhbmNlZENvbnRlbnQuIFNvIHRoYXQgYSBkcm9wIGRvd24gZmllbGQgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGggYWxsIFBhZ2VzIGluIHRoZSBBZGNhbmNlZCBDb250ZW50IDwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bYXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8bGk+W2RlbGltaXRlcl0gLSAob3B0aW9uYWwpIFNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbnRyaWVzLiBTdGFuZGFyZDogfC48L2xpPg0KICAgICAgIDxsaT5bb3V0cHV0XSAtIChvcHRpb25hbCkgd2l0aCBvdXRwdXQ9ImlkIiBhbGwgY29udGVudCBJRHMgaXNzdWVkLiBPdGhlcndpc2UsIHRoZSBtZW51IHRleHQgaXMgZGlzcGxheWVkLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiR2V0UGFnZUhpZXJhcmNoeSBvdXRwdXQ9ImlkIjsmIzEyNTs8L3ByZT48YnIgLz4NCiAgICA8cHJlPiYjMTIzO0FkdmFuY2VkQ29udGVudCBsYWJlbD0iU2VpdGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldFBhZ2VIaWVyYXJjaHk6OjoiIHZhbHVlcz0iOjo6dGJHZXRQYWdlSGllcmFyY2h5IG91dHB1dD0naWQnOjo6IiBzbWFydHk9dHJ1ZSAmIzEyNTs8L3A+DQogPC9saT4gDQogDQogIDxsaT48c3Ryb25nPiYjMTIzO3RiR2V0TmV3c0NhdGVnb3JpZXMmIzEyNTs8L3N0cm9uZz4NCiAgICA8cD5XaXRoIHRoaXMgcGx1Z2luLCBhbGwgbmV3cyBjYXRlZ29yaWVzIGFyZSBpc3N1ZWQuIFByYWN0aWNhbGx5LCB0aGUgdXNlIG9mIHRoaXMgcGx1Z2luIGluIGNvbmp1bmN0aW9uIHdpdGggQWR2YW5jZWQgY29udGVudC4gVGh1cywgaW4gYSBNdWx0aXBsZSBTZWxlY3QgZmllbGQgdGhlIGRlc2lyZWQgbmV3IGNhdGVnb3JpZXMgY291bGQgYmUgc2VsZWN0ZWQ8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPGxpPltkZWxpbWl0ZXJdIC0gKG9wdGlvbmFsKSBTZXBhcmF0b3IgYmV0d2VlbiB0aGUgZW50cmllcy4gU3RhbmRhcmQ6IHwuPC9saT4NCiAgICAgICA8bGk+W291dHB1dF0gLSAob3B0aW9uYWwpIHdpdGggb3V0cHV0PSJpZCIgYWxsIGNvbnRlbnQgSURzIGlzc3VlZC4gT3RoZXJ3aXNlLCB0aGUgbWVudSB0ZXh0IGlzIGRpc3BsYXllZC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldE5ld3NDYXRlZ29yaWVzOyYjMTI1OzwvcHJlPjxiciAvPg0KICAgIDxwcmU+JiMxMjM7QWR2YW5jZWRDb250ZW50IGJsb2NrPSJuZXdzIiBsYWJlbD0iTmV3cyBLYXRlZ29yaWVuLiIgYmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldE5ld3NDYXRlZ29yaWVzOjo6IiBzbWFydHk9dHJ1ZSAmIzEyNTs8L3A+DQogPC9saT4gDQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRVc2VyR3JvdXBzJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIHBsdWdpbiwgYWxsIG5ld3MgY2F0ZWdvcmllcyBjb3VsZCBiZSBpc3N1ZWQuIFByYWN0aWNhbGx5LCB0aGUgdXNlIG9mIHRoaXMgcGx1Z2luIGluIGNvbmp1bmN0aW9uIHdpdGggQWR2YW5jZWQgY29udGVudC4gVGh1cywgaW4gYSBNdWx0aXBsZSBTZWxlY3QgZmllbGQgdGhlIGRlc2lyZWQgbmV3IGNhdGVnb3JpZXMgY291bGQgYmUgc2VsZWN0ZWQ8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPGxpPltncm91cHNfb25seV0gLSAob3B0aW9uYWwpIERpc3BsYXlzIG9ubHkgdGhlIHVzZXIgZ3JvdXBzIChpbmRpdmlkdWFsIHVzZXJzIHdpbGwgbm90IGJlIHNob3duKTwvbGk+DQogICAgICAgPGxpPltkZWxpbWl0ZXJdIC0gKG9wdGlvbmFsKSBTZXBhcmF0b3IgYmV0d2VlbiB0aGUgZW50cmllcy4gU3RhbmRhcmQ6IHwuPC9saT4NCiAgICAgICA8bGk+W291dHB1dF0gLSAob3B0aW9uYWwpIHdpdGggb3V0cHV0PSJpZCIgYWxsIGNvbnRlbnQgSURzIGlzc3VlZC4gT3RoZXJ3aXNlLCB0aGUgbWVudSB0ZXh0IGlzIGRpc3BsYXllZC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldFVzZXJHcm91cHM7JiMxMjU7PC9wcmU+PGJyIC8+DQogICAgPHByZT4mIzEyMztBZHZhbmNlZENvbnRlbnQgYmxvY2s9ImVkaXRvcnMiIGxhYmVsPSJVc2VycyB3aG8gYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGVzZSBwYWdlcyIgYmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldFVzZXJHcm91cHMgZ3JvdXBzX29ubHk9dHJ1ZTo6OiIgdmFsdWVzPSI6Ojp0YkdldFVzZXJHcm91cHMgZ3JvdXBzX29ubHk9dHJ1ZSBvdXRwdXQ9J2lkJzo6OiIgc21hcnR5PXRydWUgJiMxMjU7PC9wPg0KIDwvbGk+IA0KDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRHYWxsZXJ5VHJlZSYjMTI1Ozwvc3Ryb25nPg0KICAgIDxwPk1pdCBkaWVzZW0gUGx1Z2luIGvDtm5uZW4gYWxsZSBHYWxsZXJ5IE9yZG5lciAoTW9kdWwgR2FsbGVyeSkgYXVzZ2VnZWJlbiB3ZXJkZW4uIFByYWt0aXNjaCBpc3QgZGVyIEVpbnNhdHogZGllc2VzIFBsdWdpbiBpbiBWZXJiaW5kdW5nIG1pdCBBZHZhbmNlZENvbnRlbnQuIFNvIGvDtm5uZW4gZGllIEdhbGxlcnlzIGluIGVpbmVtIERyb3Bkb3duIEZlbGQgYXVzZ2VnZWJlbiB3ZXJkZW4uPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPltzdWJkaXJdIC0gKG9wdGlvbmFsKSBVbnRlcm9yZG5lciBkZXIgR2FsbGVyeSBhYiB3ZWxjaGVtIGFsbGVyIGVudGhhbHRlbmVuIE9yZG5lciBhdWZnZWxpc3RldCB3ZXJkZW4gc29sbGVuIC48L2xpPg0KICAgICAgIDxsaT5bYWN0aW9uXSAtIChvcHRpb25hbCkgPHVsPg0KICAgICAgIAkJCQkJCQkJPGxpPmFjdGlvbj0idXJsIiAtPiBQZmFkIHp1bSBPcmRuZXI8L2xpPg0KICAgICAgIAkJCQkJCQkJPGxpPiBhY3Rpb24gPSAiIiAtPiBQZmFkIGRlcyBPcmRuZXJzIGlua2wuIEJpbGRhbnphaGw8L2xpPg0KICAgICAgIAkJCQkJCQk8L3VsPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldEdhbGxlcnlUcmVlJiMxMjU7PC9wcmU+PGJyIC8+DQogICAgPHByZT4mIzEyMztBZHZhbmNlZENvbnRlbnQgYmxvY2s9ImdhbGxlcnkiIGxhYmVsPSJHYWxsZXJ5IiBibG9ja190eXBlPSJkcm9wZG93biIgYWxsb3dfbm9uZT10cnVlIGl0ZW1zPSJLZWluZSBHYWxsZXJ5fDo6OnRiR2V0R2FsbGVyeVRyZWUgOjo6IiB2YWx1ZXM9Inw6Ojp0YkdldEdhbGxlcnlUcmVlIGFjdGlvbj0ndXJsJzo6OiIgc21hcnR5PWJhY2tlbmQgYXNzaWduPSJidEdhbGxlcnlQYXRoIiBub19jb2xsYXBzZT10cnVlICYjMTI1OzwvcHJlPjwvcD4NCiAgICANCiA8L2xpPiAgDQogDQo8L3VsPg0KICANCjwvZGl2Pg0KPC9kaXY+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbW9kPSIiIC0gVG9vbGJveCBNb2R1bCBFbGVtZW50LCBCZWlzcGllbDogbW9kPSJzb2NpYWxzaGFyZXByaXZhY3kiIGbDvHIgZGFzIFNvY2lhbFNoYXJlUHJpdmF5IEVsZW1lbnQ8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRlbXBsYXRlPSIiIC0gTmFtZSBkZXMgVGVtcGxhdGVzIHdlbGNoZXMgdmVyd2VuZGV0IHdpcmQuIERpZXNlcyBUZW1wbGF0ZSBtdXNzIGV4aXN0aWVyZW4gaW0gUmVpdGVyIGRlcyB2ZXJ3ZW5kZXRlbiBUb29sYm94IE1vZHVscyBzaWNodGJhciBzZWluLiBPaG5lIGRpZXNlbiBQYXJhbWV0ZXIgd2lyZCBkYXMgYWxzIFN0YW5kYXJkLVRlbXBsYXRlIGRlZmluaWVydGUgVGVtcGxhdGUgdmVyd2VuZGV0LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGV0YWlsdGVtcGxhdGU9IiIgLSBEZXRhaWx0ZW1wbGF0ZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZmlsZT0iIiAtIERhdGVpPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZWxpbWl0ZXI9IiIgLSBEZWxpbWl0ZXIgKFRyZW5uemVpY2hlbik8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZpbGVjaGFyc2V0PSIiIC0gWmVpY2hlbnNhdHogKGNoYXJzZXQpIGRlciBEYXRlaTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSIiIC0gQWN0aW9uPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzb3J0Ynk9IiIgLSBTb3J0aWVyZW4gbmFjaDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc29ydG9yZGVyPSIiIC0gU29ydGllcnJlaWhlbmZvbGdlPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB1c2VybmFtZT0iIiAtIEJlbnV0emVybmFtZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGlzdD0iIiAtIE5hbWUgZGVyIExpc3RlPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzZWFyY2g9IiIgLSBTdWNoYmVncmlmZjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gY291bnQ9IiIgLSBBbnphaGwgRGF0ZW5zw6R0emUgZGllIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkYXRlZm9ybWF0PSIiIC0gRGF0dW1zZm9ybWF0IGluIGRlciBGb3JtIGQtbS1ZIEg6aTpzPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBjYWNoZXRpbWU9IiIgLSBaZWl0IGluIE1pbnV0ZW4gaW4gZGVuZW4gZGFzIFJlc3VsdGF0IGltIENhY2hlIGdlc3BlaWNoZXJ0IGJsZWlidC4gU3RhbmRhcmQgaXN0IDEwIE1pbnV0ZW4gKDEwKS48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNvbnNvbGVsb2c9IiIgLSAtLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nIC0gbW9kdWxlOlRvb2xCb3ggc3RyaW5nOnBhcmFtY29uc29sZWxvZy0tPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBtb2Q9IiIgLSBUb29sYm94IE1vZHVsIEVsZW1lbnQsIEJlaXNwaWVsOiBtb2Q9InNvY2lhbHNoYXJlcHJpdmFjeSIgZsO8ciBkYXMgU29jaWFsU2hhcmVQcml2YXkgRWxlbWVudDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGVtcGxhdGU9IiIgLSBOYW1lIGRlcyBUZW1wbGF0ZXMgd2VsY2hlcyB2ZXJ3ZW5kZXQgd2lyZC4gRGllc2VzIFRlbXBsYXRlIG11c3MgZXhpc3RpZXJlbiBpbSBSZWl0ZXIgZGVzIHZlcndlbmRldGVuIFRvb2xib3ggTW9kdWxzIHNpY2h0YmFyIHNlaW4uIE9obmUgZGllc2VuIFBhcmFtZXRlciB3aXJkIGRhcyBhbHMgU3RhbmRhcmQtVGVtcGxhdGUgZGVmaW5pZXJ0ZSBUZW1wbGF0ZSB2ZXJ3ZW5kZXQuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZXRhaWx0ZW1wbGF0ZT0iIiAtIERldGFpbHRlbXBsYXRlPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmaWxlPSIiIC0gRGF0ZWk8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRlbGltaXRlcj0iIiAtIERlbGltaXRlciAoVHJlbm56ZWljaGVuKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZmlsZWNoYXJzZXQ9IiIgLSBaZWljaGVuc2F0eiAoY2hhcnNldCkgZGVyIERhdGVpPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249IiIgLSBBY3Rpb248L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNvcnRieT0iIiAtIFNvcnRpZXJlbiBuYWNoPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBzb3J0b3JkZXI9IiIgLSBTb3J0aWVycmVpaGVuZm9sZ2U8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHVzZXJuYW1lPSIiIC0gQmVudXR6ZXJuYW1lPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsaXN0PSIiIC0gTmFtZSBkZXIgTGlzdGU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNlYXJjaD0iIiAtIFN1Y2hiZWdyaWZmPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBjb3VudD0iIiAtIEFuemFobCBEYXRlbnPDpHR6ZSBkaWUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRhdGVmb3JtYXQ9IiIgLSBEYXR1bXNmb3JtYXQgaW4gZGVyIEZvcm0gZC1tLVkgSDppOnM8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNhY2hldGltZT0iIiAtIFplaXQgaW4gTWludXRlbiBpbiBkZW5lbiBkYXMgUmVzdWx0YXQgaW0gQ2FjaGUgZ2VzcGVpY2hlcnQgYmxlaWJ0LiBTdGFuZGFyZCBpc3QgMTAgTWludXRlbiAoMTApLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gY29uc29sZWxvZz0iIiAtIC0tIE1pc3NpbmcgTGFuZ3VhZ2VzdHJpbmcgLSBtb2R1bGU6VG9vbEJveCBzdHJpbmc6cGFyYW1jb25zb2xlbG9nLS08L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBBbmRpIFBldHpvbGR0IC8gTHVrYXMgQmxhdHRlciAmbHQ7YW5kaUBwZXR6b2xkdC5uZXQgLyBsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMy44PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KPGxpPjEuMi41IC0gMTAuMDguMjAxMjxiciAvPg0KVHdpdHRlcmZlZWQgaGluenVnZWbDvGd0PGJyIC8+DQpTbWFydHkga2FubiBudW4gaW4gU3R5bGVzaGVldHMgdW5kIEphdmFzY3JpcHRzIGdlbnV0enQgd2VyZGVuOiB6LkIuIFtbcm9vdF91cmxdXTxiciAvPiANCkZlaGxlcmJlaGVidW5nIEF1dG9MaWdodEJveDxiciAvPg0KSW5rb21wYXRpYmlsaXTDpHQgendpc2NoZW4gQXV0b0xpZ2h0Qm94IHVuZCBTb2NpYWxTaGFyZVByaXZhY3kgYmVob2JlbjxiciAvPg0KSmF2YXNjcmlwdCBrYW5uIG51biBhdWNoIGltIEZvb3RlciBlaW5nZWxlc2VuIHdlcmRlbjxiciAvPg0KRGFyc3RlbGx1bmcgdW5kIEdydXBwaWVydW5nIGRlciBFaW5zdGVsbHVuZ2VuIMO8YmVyYXJiZWl0ZXQgDQo8L2xpPg0KPGxpPjEuMi40IC0gMjAuMDcuMjAxMjxiciAvPg0KQWRkIEF1dG9MaWdodEJveCB0ZW1wbGF0ZSBtYW5hZ2VtZW50IA0KPC9saT4NCjxsaT4xLjIuMyAtIDI2LjA2LjIwMTI8YnIgLz4NCkJ1Z2ZpeGVzIGluIEF1dG9MaWdodEJveA0KPC9saT4NCjxsaT4xLjIuMjxiciAvPg0KTWlub3IgQnVnZml4ZXMNCjwvbGk+DQo8bGk+MS4yLjE8YnIgLz4NCk1pbm9yIEJ1Z2ZpeGVzPC9saT4NCg0KPGxpPjEuMi4wPGJyIC8+DQpBZGRlZCBBdXRvTGlnaHRCb3g8YnIgLz4NCkFkZGVkIHRlbXBsYXRlIGltcG9ydA0KPC9saT4NCg0KPGxpPjEuMS4xPGJyIC8+DQptaW5vciBidWdmaXhlczxiciAvPg0KdXBkYXRlIFNvY2lhbFNoYXJlUHJpdmFjeSAxLjQNCjwvbGk+DQoNCjxsaT4xLjEuMDxiciAvPg0KQWRkZWQgU21hcnR5IHBsdWdpbiAkdGJ0b29scy4gVGhpcyBlbmFibGVzIHlvdSB0byB1c2UgZGlmZmVyZW50IGZ1bmN0aW9ucyB0byBtb2RpZnkgY29udGVudC48YnIgLz4NCkFkZGVkIGRpZmZlcmVudCBwbHVnaW5zLjxiciAvPg0KQWRkZWQgcGx1Z2luIHRvIGV4dGVuZCBBZHZhbmNlZENvbnRlbnQ8YnIgLz4NCkFkZGVkIHBsdWdpbiB0byBzaG93IFNvY2lhbFNoYXJlUHJpdmFjeSBCdXR0b25zPGJyIC8+DQpBZGRlZCBhIFRhaWwtTG9nIFRhYjxiciAvPg0KTW9kdWxlIGhlbHAgaXMgbm93IG11Y2ggYmlnZ2VyIDopPGJyIC8+DQpUb29sQm94IGNhbGwgaXMgbm93IHBvc3NpYmxlIHdpdGgge1Rvb2xCb3h9DQo8L2xpPg0KDQo8bGk+MS4wLjEgLSBkZWNlbWJlciAyMDExPC9saT4NCjxwPkJ1Z2ZpeGVzPC9wPjwvbGk+DQo8bGk+MS4wIC0gZGVjZW1iZXIgMjAxMQ0KPHA+SW5pdGlhbCBSZWxlYXNlIG9mIG1vZHVsIFRvb2xCb3g8L3A+PC9saT4NCjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[This module is a collection of tools which may be useful for webmasters: AutoLightBox, SocialSharePrivacy, Twitterfeed, 301-Redirects, 404-Error-Tracking]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_404ignore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KaWYgKGlzc2V0KCRwYXJhbXNbJ2lfaWdub3JlJ10pKSB7ICRpX2l1cmwgPSBpc3NldCgkcGFyYW1zWydpX2l1cmwnXSkgPyB0cmltKHVybGRlY29kZSgkcGFyYW1zWydpX2l1cmwnXSkpIDogJyc7IH0NCmVsc2UgeyAkaV9pdXJsID0gaXNzZXQoJHBhcmFtc1snaV9pdXJsJ10pID8gdHJpbSgkcGFyYW1zWydpX2l1cmwnXSkgOiAnJzsgfQ0KJGlfaXJlZ2V4cCA9ICRwYXJhbXNbJ2lfaXJlZ2V4cCddID8gMSA6IDA7DQokaWRzID0gJHBhcmFtc1snaWRzJ10gPyBleHBsb2RlKCcsJywkcGFyYW1zWydpZHMnXSkgOiBhcnJheSgpOw0KDQovLyBTYXZlIGlnbm9yZSBydWxlIGNoYW5nZXMNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snaV9pZ25vcmUnXSkpIHsNCgkvLyBTZXQgbmVlZGVkIG9iamVjdHMNCgkkdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoJLy8gRWRpdCBpZ25vcmUgcnVsZXMNCglpZiAoJGlkcykgew0KCQlmb3JlYWNoICgkaWRzIGFzICRpaWQpIHsNCgkJCSRpdXJsID0gaXNzZXQoJHBhcmFtc1snaV9pdXJsJy4kaWlkXSkgPyB0cmltKCRwYXJhbXNbJ2lfaXVybCcuJGlpZF0pIDogJyc7DQoJCQkkaXJlZ2V4cCA9ICRwYXJhbXNbJ2lfaXJlZ2V4cCcuJGlpZF0gPyAxIDogMDsNCgkJCSRzcWwgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnNfaWdub3JlIFNFVCBpdXJsPT8sIGlyZWdleHA9PywgbW9kaWZpZWRfZGF0ZT1OT1coKSBXSEVSRSBpZD0/JzsNCgkJCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRpdXJsLCAkaXJlZ2V4cCwgJGlpZCkpOw0KCQl9DQoJfQ0KCS8vIEluc2VydCBuZXcgaWdub3JlIHJ1bGUNCglpZiAoJGlfaXVybCkgew0KCQkkc3FsID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnNfaWdub3JlIChpdXJsLCBpcmVnZXhwLCBjcmVhdGVkX2RhdGUsIG1vZGlmaWVkX2RhdGUpIFZBTFVFUyAoPywgPywgTk9XKCksIE5PVygpKSc7DQoJCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRpX2l1cmwsICRpX2lyZWdleHApKTsNCgl9DQoJaWYgKGlzc2V0KCRwYXJhbXNbJ2lfaWdub3JlJ10pKSB7DQoJCSRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycyBXSEVSRSB0b3VybD0/JzsNCgkJJHJlcyA9ICR0YkRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGlfaXVybCkpOw0KCX0NCn0NCg0KLy8gUmVkaXJlY3QNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCAndGFidG8nPT4kdGJUYWJUbyApKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/action.admin_autolightbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCiR0YWJ0byA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0YWJ0byddKTsNCg0KJHRoaXMtPlJlZ2lzdGVyRXZlbnRzKCk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfcmVsJywkcGFyYW1zWydyZWwnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X2NsYXNzJywkcGFyYW1zWydjbGFzcyddKTsNCg0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF9saWdodGJveCcsKGludCl0cmltKCRwYXJhbXNbJ2xpZ2h0Ym94J10pKTsNCg0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3N1Y2VzcycgPT4gJ3RydWUnLCAndGFiX21lc3NhZ2UnPT4gJ21zZ19zYXZlcHJlZicsICd0YWJ0byc9PiR0YWJ0byApKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_csv.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCiR0YWJ0byA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0YWJ0byddKTsNCiR0dGFidG8gPSBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndHRhYnRvJ10pOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snZm9ybXNlY3Rpb24nXSkpIHsNCgkNCglpZiAoJHBhcmFtc1snZm9ybXNlY3Rpb24nXSA9PSAiYWxsZ2VtZWluIikgew0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncmVzZXRidXR0b24nXSkgKSB7CQ0KCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoImNzdl9kZWxpbWl0ZXIiLCI7Iik7DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiY3N2X2ZpbGVjaGFyc2V0IiwiaXNvLTg4NTktMSIpOw0KCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoImNzdl9jbXNjaGFyc2V0IiwiVVRGLTgiKTsNCgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgYXJyYXkoICd0YWJfbWVzc2FnZSc9PiAnbXNnX3Jlc2V0cHJlZicsICdzdWNlc3MnID0+ICd0cnVlJywgJ3RhYnRvJz0+JHRhYnRvLCAndHRhYnRvJyA9PiAkdHRhYnRvICkpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCSRmaWxlY2hhcnNldCA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aXy1dLycsJycsJHBhcmFtc1snZmlsZWNoYXJzZXQnXSk7DQoJCSRjbXNjaGFyc2V0ID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfLV0vJywnJywkcGFyYW1zWydjbXNjaGFyc2V0J10pOw0KCQkNCgkJDQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfZGVsaW1pdGVyIiwkcGFyYW1zWydkZWxpbWl0ZXInXSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfZmlsZWNoYXJzZXQiLCRmaWxlY2hhcnNldCk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfY21zY2hhcnNldCIsJGNtc2NoYXJzZXQpOw0KCQkNCgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3N1Y2VzcycgPT4gJ3RydWUnLCAndGFidG8nPT4kdGFidG8sICd0dGFidG8nPT4kdHRhYnRvLCAndGFiX21lc3NhZ2UnPT4gJ21zZ19zYXZlcHJlZicgKSk7DQoJCXJldHVybjsNCgl9DQoJDQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3N1Y2VzcycgPT4gJ3RydWUnLCAndGFidG8nPT4kdGFidG8sICd0dGFidG8nPT4kdHRhYnRvICApKTsNCglyZXR1cm47DQoJDQp9DQoNCg0KJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IHN0cl9yZXBsYWNlKCJbcGFyYW1dIiwgImZvcm1zZWN0aW9uIiwkdGhpcy0+TGFuZygncGFyYW1fZW1wdHknKSksICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJz0+JHR0YWJ0byApOw0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KcmV0dXJuOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_deletedebug.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJGRlYnVnID0gKGludCkkcGFyYW1zWydkZWJ1ZyddOw0KDQovLyBEZWxldGUgdGhlIGRvbWFpbg0KaWYgKCRkZWJ1Zykgew0KCS8vIEdldCBkYiBpbnN0YW5jZQ0KCSR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCgkvLyBEZWxldGUgdGhlIGRvbWFpbg0KCSRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnIFdIRVJFIGlkPT8nOw0KCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRkZWJ1ZykpOw0KfQ0KDQovLyBSZWRpcmVjdA0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoICd0YWJ0byc9PiR0YlRhYlRvICkpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deletedebugs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KDQovLyBHZXQgZGIgaW5zdGFuY2UNCiR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCi8vIERlbGV0ZSB0aGUgZGVidWcNCiRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnJzsNCiRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCkpOw0KDQovLyBSZWRpcmVjdA0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoICd0YWJ0byc9PiR0YlRhYlRvICkpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteerror.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJGVycm9yID0gKGludCkkcGFyYW1zWydlcnJvciddOw0KDQovLyBEZWxldGUgdGhlIGRvbWFpbg0KaWYgKCRlcnJvcikgew0KCS8vIEdldCBkYiBpbnN0YW5jZQ0KCSR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCgkvLyBEZWxldGUgdGhlIGRvbWFpbg0KCSRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycyBXSEVSRSBpZD0/JzsNCgkkcmVzID0gJHRiRGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXJyb3IpKTsNCn0NCg0KLy8gUmVkaXJlY3QNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCAndGFidG8nPT4kdGJUYWJUbyApKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteerrors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KDQovLyBHZXQgZGIgaW5zdGFuY2UNCiR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCi8vIERlbGV0ZSB0aGUgZG9tYWluDQokc3FsID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnMnOw0KJHJlcyA9ICR0YkRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoKSk7DQoNCi8vIFJlZGlyZWN0DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSggJ3RhYnRvJz0+JHRiVGFiVG8gKSk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteignoreerror.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJGllcnJvciA9IChpbnQpJHBhcmFtc1snaWVycm9yJ107DQoNCi8vIERlbGV0ZSB0aGUgZG9tYWluDQppZiAoJGllcnJvcikgew0KCS8vIEdldCBkYiBpbnN0YW5jZQ0KCSR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCgkvLyBEZWxldGUgdGhlIGRvbWFpbg0KCSRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9yc19pZ25vcmUgV0hFUkUgaWQ9Pyc7DQoJJHJlcyA9ICR0YkRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGllcnJvcikpOw0KfQ0KDQovLyBSZWRpcmVjdA0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoICd0YWJ0byc9PiR0YlRhYlRvICkpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteredirect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJHJlZGlyZWN0ID0gKGludCkkcGFyYW1zWydyZWRpcmVjdCddOw0KDQovLyBEZWxldGUgdGhlIHJlZGlyZWN0IHVybA0KaWYgKCRyZWRpcmVjdCkgew0KCS8vIEdldCBkYiBpbnN0YW5jZQ0KCSR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCgkvLyBEZWxldGUgdGhlIHJlZGlyZWN0IHVybA0KCSRzcWwgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X3JlZGlyZWN0IFdIRVJFIGlkPT8nOw0KCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRyZWRpcmVjdCkpOw0KfQ0KDQovLyBSZWRpcmVjdA0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoICd0YWJ0byc9PiR0YlRhYlRvICkpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_editredirect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJGVyZWRpcmVjdCA9IGFycmF5KCk7DQokZXJlZGlyZWN0WydpZCddID0gKGludCkkcGFyYW1zWydyZWRpcmVjdCddOw0KJGVyZWRpcmVjdFsndXJsJ10gPSB0cmltKCRwYXJhbXNbJ3VybCddKTsNCmlmICghcHJlZ19tYXRjaCgnL1x3KzpcL1wvLycsJGVyZWRpcmVjdFsndXJsJ10pKSAkZXJlZGlyZWN0Wyd1cmwnXSA9ICdodHRwOi8vJy4kZXJlZGlyZWN0Wyd1cmwnXTsNCiRlcmVkaXJlY3RbJ3BhZ2UnXSA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCcnLCRwYXJhbXNbJ3BhZ2UnXSk7DQokZXJlZGlyZWN0Wyd0b3VybCddID0gdHJpbSgkcGFyYW1zWyd0b3VybCddKTsNCiRlcmVkaXJlY3RbJ3JlZ2V4cCddID0gJHBhcmFtc1sncmVnZXhwJ10gPyAxIDogMDsNCiRlcmVkaXJlY3RbJ2FjdGl2ZSddID0gJHBhcmFtc1snYWN0aXZlJ10gPyAxIDogMDsNCiRlcmVkaXJlY3RbJ25vdGVzJ10gPSAkcGFyYW1zWydub3RlcyddOw0KDQovLyBTYXZlIHJlZGlyZWN0IGNoYW5nZXMNCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgfHwgaXNzZXQoJHBhcmFtc1snY2FjaGUnXSkgfHwgaXNzZXQoJHBhcmFtc1snYWRkJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ2NhY2hlYWRkJ10pKSB7DQoJLy8gU2V0IG5lZWRlZCBvYmplY3RzDQoJJHRiRGIgPSBjbXNtcygpLT5HZXREYigpOw0KCS8vIEVkaXQgZG9tYWluDQoJaWYgKCRlcmVkaXJlY3RbJ2lkJ10pIHsNCgkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X3JlZGlyZWN0IFNFVCBwYWdlX2lkPT8sIHRvdXJsPT8sIHVybD0/LCB1cmxfcmVnZXhwPT8sIGFjdGl2ZT0/LCBub3Rlcz0/LCBtb2RpZmllZF9kYXRlPU5PVygpIFdIRVJFIGlkPT8nOw0KCQkkcmVzID0gJHRiRGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXJlZGlyZWN0WydwYWdlJ10sICRlcmVkaXJlY3RbJ3RvdXJsJ10sICRlcmVkaXJlY3RbJ3VybCddLCAkZXJlZGlyZWN0WydyZWdleHAnXSwgJGVyZWRpcmVjdFsnYWN0aXZlJ10sICRlcmVkaXJlY3RbJ25vdGVzJ10sICRlcmVkaXJlY3RbJ2lkJ10pKTsNCgkvLyBJbnNlcnQgbmV3IHJlZGlyZWN0DQoJfSBlbHNlIHsNCgkJJHNxbCA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgKHBhZ2VfaWQsIHRvdXJsLCB1cmwsIHVybF9yZWdleHAsIGFjdGl2ZSwgbm90ZXMsIGNyZWF0ZWRfZGF0ZSwgbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCBOT1coKSwgTk9XKCkpJzsNCgkJJHJlcyA9ICR0YkRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGVyZWRpcmVjdFsncGFnZSddLCAkZXJlZGlyZWN0Wyd0b3VybCddLCAkZXJlZGlyZWN0Wyd1cmwnXSwgJGVyZWRpcmVjdFsncmVnZXhwJ10sICRlcmVkaXJlY3RbJ2FjdGl2ZSddLCAkZXJlZGlyZWN0Wydub3RlcyddKSk7DQoJCSRlcmVkaXJlY3RbJ2lkJ10gPSAkdGJEYi0+R2V0T25lKCdTRUxFQ1QgaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgV0hFUkUgdXJsID0gPycsIGFycmF5KCRlcmVkaXJlY3RbJ3VybCddKSk7DQoJfQ0KfQ0KDQovLyBSZWRpcmVjdA0KaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgfHwgaXNzZXQoJHBhcmFtc1snYWRkJ10pKSAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSggJ3RhYnRvJz0+JHRiVGFiVG8gKSk7DQplbHNlICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGlzc2V0KCRwYXJhbXNbJ3J1cmwnXSkgPyBhcnJheSggJ3RhYnRvJz0+JHRiVGFiVG8sICdyZWRpcmVjdCc9PiRlcmVkaXJlY3RbJ2lkJ10sICdydXJsJz0+JHBhcmFtc1sncnVybCddICkgOiBhcnJheSggJ3RhYnRvJz0+JHRiVGFiVG8sICdyZWRpcmVjdCc9PiRlcmVkaXJlY3RbJ2lkJ10gKSk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCR0YkRiKTsNCg0KLy8gR2V0IFBPU1QgZGF0YQ0KJHRiVGFiVG8gPSBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSk7DQoNCi8vIFNldCBwcmVmZXJlbmNlcw0KJGRvbnRfdXNlX2V2ZW50X2hhbmRsZXIgPSBpc3NldCgkcGFyYW1zWydkb250X3VzZV9ldmVudF9oYW5kbGVyJ10pCT8gKGludCkkcGFyYW1zWydkb250X3VzZV9ldmVudF9oYW5kbGVyJ10JOiAwOw0KJHN0YXRzX3VzZQkJCQk9IGlzc2V0KCRwYXJhbXNbJ3N0YXRzX3VzZSddKSAJCQkJPyAoaW50KSRwYXJhbXNbJ3N0YXRzX3VzZSddIAkJCQk6IDA7DQokYXV0b2xpZ2h0Ym94X3VzZSAJCT0gaXNzZXQoJHBhcmFtc1snYXV0b2xpZ2h0Ym94X3VzZSddKQkJPyAoaW50KSRwYXJhbXNbJ2F1dG9saWdodGJveF91c2UnXQkJCTogMDsNCiRzb2NpYWxzaGFyZXByaXZhY3lfdXNlID0gaXNzZXQoJHBhcmFtc1snc29jaWFsc2hhcmVwcml2YWN5X3VzZSddKQk/IChpbnQpJHBhcmFtc1snc29jaWFsc2hhcmVwcml2YWN5X3VzZSddCTogMDsNCiR0d2l0dGVyZmVlZF91c2UJCT0gaXNzZXQoJHBhcmFtc1sndHdpdHRlcmZlZWRfdXNlJ10pCQkJPyAoaW50KSRwYXJhbXNbJ3R3aXR0ZXJmZWVkX3VzZSddCQkJOiAwOw0KJGNzdl91c2UgCQkJCT0gaXNzZXQoJHBhcmFtc1snY3N2X3VzZSddKQkJCQkJPyAoaW50KSRwYXJhbXNbJ2Nzdl91c2UnXQkJCQkJOiAwOw0KJHRhaWxfdXNlIAkJCQk9IGlzc2V0KCRwYXJhbXNbJ3RhaWxfdXNlJ10pCQkJCT8gKGludCkkcGFyYW1zWyd0YWlsX3VzZSddCQkJCQk6IDA7DQokc3RhdHNfNDA0CQkJCT0gaXNzZXQoJHBhcmFtc1snc3RhdHNfNDA0J10pCQkJCT8gKGludCkkcGFyYW1zWydzdGF0c180MDQnXQkJCQkJOiAwOw0KJG1heF80MDQgCQkJCT0gaXNzZXQoJHBhcmFtc1snbWF4XzQwNCddKQkJCQkJPyAoaW50KSRwYXJhbXNbJ21heF80MDQnXQkJCQkJOiAwOw0KJHN0YXRzX2RhaWx5IAkJCT0gaXNzZXQoJHBhcmFtc1snc3RhdHNfZGFpbHknXSkJCQkJPyAoaW50KSRwYXJhbXNbJ3N0YXRzX2RhaWx5J10JCQkJOiAwOw0KJHN0YXRzX2VtYWlsIAkJCT0gaXNzZXQoJHBhcmFtc1snc3RhdHNfZW1haWwnXSkJCQkJPyB0cmltKCRwYXJhbXNbJ3N0YXRzX2VtYWlsJ10pCQkJCTogMDsNCiRvbGR1cmxfdXNlIAkJCT0gaXNzZXQoJHBhcmFtc1snb2xkdXJsX3VzZSddKQkJCQk/IChpbnQpJHBhcmFtc1snb2xkdXJsX3VzZSddCQkJCTogMDsNCiRvbGR1cmxfdXNlX2NkYXRlCQk9IGlzc2V0KCRwYXJhbXNbJ29sZHVybF91c2VfY2RhdGUnXSkJCT8gKGludCkkcGFyYW1zWydvbGR1cmxfdXNlX2NkYXRlJ10JCQk6IDA7DQokb2xkdXJsX3VzZV9tZGF0ZQkJPSBpc3NldCgkcGFyYW1zWydvbGR1cmxfdXNlX21kYXRlJ10pCQk/IChpbnQpJHBhcmFtc1snb2xkdXJsX3VzZV9tZGF0ZSddCQkJOiAwOw0KJGRlYnVnX3VzZSAJCQkJPSBpc3NldCgkcGFyYW1zWydkZWJ1Z191c2UnXSkJCQkJPyAoaW50KSRwYXJhbXNbJ2RlYnVnX3VzZSddCQkJCQk6IDA7DQokbW9kdWxlb3BzX3VzZSAJCQk9IGlzc2V0KCRwYXJhbXNbJ21vZHVsZW9wc191c2UnXSkJCQk/IChpbnQpJHBhcmFtc1snbW9kdWxlb3BzX3VzZSddCQkJCTogMDsNCiRqc19mb290ZXIgCQkJCT0gaXNzZXQoJHBhcmFtc1snanNfZm9vdGVyJ10pCQkJCT8gKGludCkkcGFyYW1zWydqc19mb290ZXInXQkJCQkJOiAwOw0KJG1pbmlmeSAJCQkJPSBpc3NldCgkcGFyYW1zWydtaW5pZnknXSkJCQkJCT8gKGludCkkcGFyYW1zWydtaW5pZnknXQkJCQkJOiAwOw0KCQ0KJGltcG9ydF9tdWx0aWRvbWFpbnMJPSBpc3NldCgkcGFyYW1zWydpbXBvcnRfbXVsdGlkb21haW5zJ10pCQk/IChpbnQpJHBhcmFtc1snaW1wb3J0X211bHRpZG9tYWlucyddCQk6IDA7DQokZHJvcF9tdWx0aWRvbWFpbnMJCT0gaXNzZXQoJHBhcmFtc1snZHJvcF9tdWx0aWRvbWFpbnMnXSkJCT8gKGludCkkcGFyYW1zWydkcm9wX211bHRpZG9tYWlucyddCQkJOiAwOw0KDQoNCi8vIDIwMTIuMTIuMjIgTEJMIC0+IGF1c2tvbW1lbnRpZXJ0LCBkYSBDb250ZW50UG9zdFJlbmRlciBhdWNoIGbDvHIgc29jaWFsc2hhcmVwcml2YWN5IGdlbnV0enQgd2lyZC4NCi8vaWYgKCRkb250X3VzZV9ldmVudF9oYW5kbGVyICE9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkb250X3VzZV9ldmVudF9oYW5kbGVyJykpIHsNCi8vCWlmICgkZG9udF91c2VfZXZlbnRfaGFuZGxlcikgeyAkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudFBvc3RSZW5kZXInKTsgfQ0KLy8JZWxzZSB7ICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50UG9zdFJlbmRlcicsZmFsc2UpOyB9DQovL30NCg0KDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnKSAhPSAxIGFuZCAkYXV0b2xpZ2h0Ym94X3VzZSA9PSAxKSB7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF9saWdodGJveCcsMSk7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91cmx0eXBlJywicmVsYXRpdmUiKTsNCn0NCg0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZG9udF91c2VfZXZlbnRfaGFuZGxlcicsJGRvbnRfdXNlX2V2ZW50X2hhbmRsZXIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N0YXRzX3VzZScsJHN0YXRzX3VzZSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3VzZScsJGF1dG9saWdodGJveF91c2UpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnLCRzb2NpYWxzaGFyZXByaXZhY3lfdXNlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF91c2UnLCR0d2l0dGVyZmVlZF91c2UpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Nzdl91c2UnLCRjc3ZfdXNlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0YWlsX3VzZScsJHRhaWxfdXNlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdGF0c180MDQnLCRzdGF0c180MDQpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21heF80MDQnLCRtYXhfNDA0KTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdGF0c19kYWlseScsJHN0YXRzX2RhaWx5KTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdGF0c19lbWFpbCcsdHJpbSgkc3RhdHNfZW1haWwpKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlJywkb2xkdXJsX3VzZSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZV9jZGF0ZScsJG9sZHVybF91c2VfY2RhdGUpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ29sZHVybF91c2VfbWRhdGUnLCRvbGR1cmxfdXNlX21kYXRlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWJ1Z191c2UnLCRkZWJ1Z191c2UpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2pzX2Zvb3RlcicsJGpzX2Zvb3Rlcik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluaWZ5JywkbWluaWZ5KTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtb2R1bGVvcHNfdXNlJywkbW9kdWxlb3BzX3VzZSk7DQoNCiR0aGlzLT5SZWdpc3RlckV2ZW50cygpOw0KDQppZiAoISRzb2NpYWxzaGFyZXByaXZhY3lfdXNlKQ0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzb2NpYWxzaGFyZXByaXZhY3lfaW5zdGFsbCcsMCk7DQoNCi8vIGluc3RhbGwgc29jaWFsc2hhcmVwcml2YWN5DQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc29jaWFsc2hhcmVwcml2YWN5X2luc3RhbGwnKSA9PSAwKSB7DQoJJHRlbXBsYXRlID0gInNvY2lhbHNoYXJlcHJpdmFjeSI7DQoJJGZuID0gdGJVdGlsczo6Z2V0VHBsWE1MRmlsZSgnc29jaWFsc2hhcmVwcml2YWN5JywgJHRlbXBsYXRlKTsNCglpZiAoZmlsZV9leGlzdHMoJGZuKSkgew0KCQkkeG1sID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJaWYgKCF0YlV0aWxzOjppbXBvcnRUZW1wbGF0ZSgkdGhpcywgJHhtbCwgdHJ1ZSkpIHsNCgkJCSRlcnJvcnMgPSB0YlV0aWxzOjpnZXRFcnJvcnMoKTsNCgkJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygkZXJyb3JbJ2xhbmcnXSkuJyAnLiRlcnJvcnNbJ2FkZGl0aW9uYWwnXSwgJ3RhYnRvJyA9PiAkdGFidG8pOw0KCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAnJywgJHBhcmFtcyk7DQoJCQlyZXR1cm47DQoJCX0NCgkJDQoJCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkdGVtcGxhdGUpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc29jaWFsc2hhcmVwcml2YWN5X2FkdmFuY2VkJywwKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV9qcXVlcnknLCR0ZW1wbGF0ZXByb3BzWydqcXVlcnknXSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzb2NpYWxzaGFyZXByaXZhY3lfaW5mb2xpbmsnLCR0ZW1wbGF0ZXByb3BzWydpbmZvbGluayddKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV9pbnN0YWxsJywxKTsNCgl9DQoJZWxzZSB7DQoJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGxhdGVmaWxlbm90Zm91bmQnKS4nICcuJGZuLCAndGFidG8nID0+ICR0YWJ0byk7DQoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJycsICRwYXJhbXMpOw0KCQlyZXR1cm47DQoJfQkNCn0NCg0KDQovLyBJbXBvcnQgZGF0YSBmcm9tIG9sZCBNdWx0aURvbWFpbnMgdGFibGVzDQppZiAoJGltcG9ydF9tdWx0aWRvbWFpbnMgb3IgJGRyb3BfbXVsdGlkb21haW5zKSB7DQoJLy8gbWQgaW1wb3J0IGNvdW50ZXINCgkkbWRfaW1wb3J0X2NvdW50ZXIgPSAwOw0KCS8vIEdldCBkYXRhIGZyb20gb2xkIE11bHRpRG9tYWlucyB0YWJsZXMNCgkkdGFibGVzID0gJHRiRGItPkdldENvbCgnU0hPVyBUQUJMRVMnLCBhcnJheSgpKTsNCgkvLyAzMDEgKFJlZGlyZWN0cykgdGFibGUNCgkkcmVkaXJlY3RfdGFibGVfZm91bmQgPSBmYWxzZTsNCglpZiAoaW5fYXJyYXkoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbXVsdGlkb21haW5zX3JlZGlyZWN0JywkdGFibGVzKSkgew0KCQlpZiAoKGludCkkcGFyYW1zWydpbXBvcnRfbXVsdGlkb21haW5zJ10pIHsNCgkJCSR0ZW1wID0gJHRiRGItPkdldEFsbCgnU0VMRUNUIGlkLHBhZ2VfaWQsdXJsLGFjdGl2ZSxub3RlcyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSx0b3VybCx1cmxfcmVnZXhwIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tdWx0aWRvbWFpbnNfcmVkaXJlY3QnLCBhcnJheSgpKTsNCgkJCWlmICgkdGVtcCkgew0KCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR0KSB7DQoJCQkJCS8vIENoZWNrIHdoZXRoZXIgcm93IGFscmVhZHkgZXhpc3RzDQoJCQkJCSRtZF9leGlzdHMgPSAkdGJEYi0+R2V0T25lKCdTRUxFQ1QgaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgV0hFUkUgdXJsIGxpa2UgPycsIGFycmF5KCR0Wyd1cmwnXSkpOw0KCQkJCQkvLyBJbnNlcnQgcm93DQoJCQkJCWlmICghJG1kX2V4aXN0cykgew0KCQkJCQkJJHJlcyA9ICR0YkRiLT5FeGVjdXRlKA0KCQkJCQkJCSdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgKGlkLHBhZ2VfaWQsdXJsLGFjdGl2ZSxub3RlcyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSx0b3VybCx1cmxfcmVnZXhwKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/KScsDQoJCQkJCQkJYXJyYXkoJHRbJ2lkJ10sJHRbJ3BhZ2VfaWQnXSwkdFsndXJsJ10sJHRbJ2FjdGl2ZSddLCR0Wydub3RlcyddLCR0WydjcmVhdGVkX2RhdGUnXSwkdFsnbW9kaWZpZWRfZGF0ZSddLCR0Wyd0b3VybCddLCR0Wyd1cmxfcmVnZXhwJ10pDQoJCQkJCQkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCQ0KCQkJfQ0KCQkJJG1kX2ltcG9ydF9jb3VudGVyID0gMTsNCgkJfQ0KCQkvLyBEcm9wIHRhYmxlDQoJCWlmICgoaW50KSRwYXJhbXNbJ2Ryb3BfbXVsdGlkb21haW5zJ10pIHsNCgkJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX211bHRpZG9tYWluc19yZWRpcmVjdCcgKTsNCgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJfQ0KCX0NCgkvLyA0MDQgKEVycm9ycykgdGFibGUNCgkkZXJyb3JfdGFibGVfZm91bmQgPSBmYWxzZTsNCglpZiAoaW5fYXJyYXkoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbXVsdGlkb21haW5zX2Vycm9ycycsJHRhYmxlcykpIHsNCgkJaWYgKChpbnQpJHBhcmFtc1snaW1wb3J0X211bHRpZG9tYWlucyddKSB7DQoJCQkkdGVtcCA9ICR0YkRiLT5HZXRBbGwoJ1NFTEVDVCBpZCxmcm9tdXJsLHRvdXJsLHZpc2l0cyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbXVsdGlkb21haW5zX2Vycm9ycycsIGFycmF5KCkpOw0KCQkJaWYgKCR0ZW1wKSB7DQoJCQkJZm9yZWFjaCAoJHRlbXAgYXMgJHQpIHsNCgkJCQkJLy8gQ2hlY2sgd2hldGhlciByb3cgYWxyZWFkeSBleGlzdHMNCgkJCQkJJG1kX2V4aXN0cyA9ICR0YkRiLT5HZXRPbmUoJ1NFTEVDVCBpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnMgV0hFUkUgdG91cmwgbGlrZSA/JywgYXJyYXkoJHRbJ3RvdXJsJ10pKTsNCgkJCQkJLy8gSW5zZXJ0IHJvdw0KCQkJCQlpZiAoISRtZF9leGlzdHMpIHsNCgkJCQkJCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgNCgkJCQkJCQknSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycyAoaWQsZnJvbXVybCx0b3VybCx2aXNpdHMsY3JlYXRlZF9kYXRlLG1vZGlmaWVkX2RhdGUpIFZBTFVFUyAoPyw/LD8sPyw/LD8pJywNCgkJCQkJCQlhcnJheSgkdFsnaWQnXSwkdFsnZnJvbXVybCddLCR0Wyd0b3VybCddLCR0Wyd2aXNpdHMnXSwkdFsnY3JlYXRlZF9kYXRlJ10sJHRbJ21vZGlmaWVkX2RhdGUnXSkNCgkJCQkJCSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQkkbWRfaW1wb3J0X2NvdW50ZXIgPSAxOw0KCQl9DQoJCS8vIERyb3AgdGFibGUNCgkJaWYgKChpbnQpJHBhcmFtc1snZHJvcF9tdWx0aWRvbWFpbnMnXSkgew0KCQkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbXVsdGlkb21haW5zX2Vycm9ycycgKTsNCgkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJfQ0KCX0NCgkvLyAzMDEgKFJlZGlyZWN0cykgaWdub3JlIHRhYmxlDQoJaWYgKGluX2FycmF5KGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX211bHRpZG9tYWluc19lcnJvcnNfaWdub3JlJywkdGFibGVzKSkgew0KCQlpZiAoKGludCkkcGFyYW1zWydpbXBvcnRfbXVsdGlkb21haW5zJ10pIHsNCgkJCSR0ZW1wID0gJHRiRGItPkdldEFsbCgnU0VMRUNUIGlkLGl1cmwsaXJlZ2V4cCxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbXVsdGlkb21haW5zX2Vycm9yc19pZ25vcmUnLCBhcnJheSgpKTsNCgkJCWlmICgkdGVtcCkgew0KCQkJCWZvcmVhY2ggKCR0ZW1wIGFzICR0KSB7DQoJCQkJCS8vIENoZWNrIHdoZXRoZXIgcm93IGFscmVhZHkgZXhpc3RzDQoJCQkJCSRtZF9leGlzdHMgPSAkdGJEYi0+R2V0T25lKCdTRUxFQ1QgaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzX2lnbm9yZSBXSEVSRSBpdXJsIGxpa2UgPycsIGFycmF5KCR0WydpdXJsJ10pKTsNCgkJCQkJLy8gSW5zZXJ0IHJvdw0KCQkJCQlpZiAoISRtZF9leGlzdHMpIHsNCgkJCQkJCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgNCgkJCQkJCQknSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9yc19pZ25vcmUgKGlkLGl1cmwsaXJlZ2V4cCxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sPyw/LD8pJywNCgkJCQkJCQlhcnJheSgkdFsnaWQnXSwkdFsnaXVybCddLCR0WydpcmVnZXhwJ10sJHRbJ2NyZWF0ZWRfZGF0ZSddLCR0Wydtb2RpZmllZF9kYXRlJ10pDQoJCQkJCQkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJJG1kX2ltcG9ydF9jb3VudGVyID0gMTsNCgkJfQ0KCQkvLyBEcm9wIHRhYmxlDQoJCWlmICgoaW50KSRwYXJhbXNbJ2Ryb3BfbXVsdGlkb21haW5zJ10pIHsNCgkJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX211bHRpZG9tYWluc19lcnJvcnNfaWdub3JlJyApOw0KCQkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQl9DQoJfQ0KCS8vIGluY3JlYXNlIG1kIGltcG9ydCBjb3VudGVyIGluIHNpdGUgc2V0dGluZ3MNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1wb3J0X211bHRpZG9tYWluc19jb3VudCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltcG9ydF9tdWx0aWRvbWFpbnNfY291bnQnKSsxKTsNCn0NCg0KLy8gUmVkaXJlY3QNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCAndGFidG8nPT4kdGJUYWJUbyAsICd0YWJfbWVzc2FnZSc9PiAnbXNnX3NhdmVwcmVmJyApKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/action.admin_redirectactive.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIEdldCBQT1NUIGRhdGENCiR0YlRhYlRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJHJlZGlyZWN0ID0gKGludCkkcGFyYW1zWydyZWRpcmVjdCddOw0KJGFjdGl2ZSA9ICRwYXJhbXNbJ2FjdGl2ZSddID8gMSA6IDA7DQoNCi8vIERlLS9BY3RpdmF0ZSBSZWRpcmVjdCBVUkwNCmlmICgkcmVkaXJlY3QpIHsNCgkvLyBHZXQgZGIgaW5zdGFuY2UNCgkkdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoJLy8gRGUtL0FjdGl2YXRlIHRoZSBSZWRpcmVjdCBVUkwNCgkkc3FsID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgU0VUIGFjdGl2ZT0/IFdIRVJFIGlkPT8nOw0KCSRyZXMgPSAkdGJEYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRhY3RpdmUsICRyZWRpcmVjdCkpOw0KfQ0KDQovLyBSZWRpcmVjdA0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoICd0YWJ0byc9PiR0YlRhYlRvICkpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_socialshareprivacy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCiR0YWJ0byA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0YWJ0byddKTsNCg0KJHRlbXBsYXRlID0gInNvY2lhbHNoYXJlcHJpdmFjeSI7DQoNCmlmIChpc3NldCgkcGFyYW1zWydyZXNldGJ1dHRvbiddKSApDQp7DQoJJGZuID0gdGJVdGlsczo6Z2V0VHBsWE1MRmlsZSgnc29jaWFsc2hhcmVwcml2YWN5JywgJHRlbXBsYXRlKTsNCglpZiAoaXNfZmlsZSgkZm4pKSB7DQoJCSR4bWwgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJaWYgKCF0YlV0aWxzOjppbXBvcnRUZW1wbGF0ZSgkdGhpcywgJHhtbCwgdHJ1ZSkpIHsNCgkJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygkZXJyb3JbJ2xhbmcnXSkuJyAnLiRlcnJvclsnYWRkaXRpb25hbCddLCAndGFidG8nID0+ICR0YWJ0byk7DQoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQoJCX0NCgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3RhYl9tZXNzYWdlJz0+ICd0ZW1wbGF0ZWltcG9ydCcsICdzdWNlc3MnID0+ICd0cnVlJywgJ3RhYnRvJz0+JHRhYnRvICkpOw0KCX0NCgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gJHRoaXMtPkxhbmcoJ2Vycm9yX3RlbXBsYXRlZmlsZW5vdGZvdW5kJykgLiAnICcgLiRmbiwgJ3RhYnRvJyA9PiAkdGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCmVsc2Ugew0KCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygnc29jaWFsc2hhcmVwcml2YWN5Jyk7DQoJDQoJaWYgKGlzc2V0KCRwYXJhbXNbJ2FkdmFuY2VkJ10pKSB7DQoJCWlmIChpc3NldCgkdGVtcGxhdGVwcm9wc1snYWR2YW5jZWQnXSkgYW5kICR0ZW1wbGF0ZXByb3BzWydhZHZhbmNlZCddID09IDEpIHsNCgkJCS8vIHNhdmUgdGVtcGxhdGUNCgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdGVtcGxhdGUsICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddLlRPT0xCT1hfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10uVE9PTEJPWF9TRVBBUkFUT1IuJHBhcmFtc1sndGVtcGxhdGVqcyddLicqfScgKTsNCgkJCQ0KCQkJLy8gc2F2ZSBjc3MtZmlsZSANCgkJCSRoYW5kbGUgPSBmb3BlbihjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCd0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2NzcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nc29jaWFsc2hhcmVwcml2YWN5LmNzcycpLCd3Jyk7DQoJCQlmd3JpdGUoJGhhbmRsZSx0YlV0aWxzOjpleGVjdXRlVGVtcGxhdGVTbWFydHkoJHBhcmFtc1sndGVtcGxhdGVjc3MnXSkpOw0KCQkJZmNsb3NlKCRoYW5kbGUpOw0KCQl9DQoJfQ0KCWVsc2UgaWYgKCFpc3NldCgkcGFyYW1zWydhZHZhbmNlZCddKSBhbmQgJHRlbXBsYXRlcHJvcHNbJ2FkdmFuY2VkJ10gPT0gMSkgew0KCQkkeG1sID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVEYXRhRnJvbVhNTChmaWxlX2dldF9jb250ZW50cyh0YlV0aWxzOjpnZXRUcGxYTUxGaWxlKCdzb2NpYWxzaGFyZXByaXZhY3knLCAnc29jaWFsc2hhcmVwcml2YWN5JykpKTsNCgkJJHRoaXMtPlNldFRlbXBsYXRlKCR0ZW1wbGF0ZSwgJHhtbFsndHBsY29kZSddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbGNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbGpzJ10uJyp9JyApOw0KCQkJDQoJCS8vIHNhdmUgY3NzLWZpbGUNCgkJJGhhbmRsZSA9IGZvcGVuKGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nY3NzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidzb2NpYWxzaGFyZXByaXZhY3kuY3NzJyksJ3cnKTsNCgkJZndyaXRlKCRoYW5kbGUsdGJVdGlsczo6ZXhlY3V0ZVRlbXBsYXRlU21hcnR5KCR4bWxbJ3RwbGNzcyddKSk7DQoJCWZjbG9zZSgkaGFuZGxlKTsNCgkJDQoJfQ0KCQkNCgkkaW5mb2xpbmsgPSBpc3NldCgkcGFyYW1zWydpbmZvbGluayddKSA/ICRwYXJhbXNbJ2luZm9saW5rJ10gOiAnJzsNCgkkYWR2YW5jZWQgPSBpc3NldCgkcGFyYW1zWydhZHZhbmNlZCddKSA/ICRwYXJhbXNbJ2FkdmFuY2VkJ10gOiAnJzsNCg0KCSRvcHRpb25zID0gYXJyYXkoJ2luZm9saW5rJyA9PiAkaW5mb2xpbmssICdhZHZhbmNlZCcgPT4gJGFkdmFuY2VkKTsNCg0KCWlmICghdGJVdGlsczo6c2F2ZVRlbXBsYXRlUHJvcHMoJHRlbXBsYXRlLCAkcGFyYW1zLCAkb3B0aW9ucykpIHsNCgkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+ICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ10sICd0YWJ0bycgPT4gJHRhYnRvKTsNCgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KCX0NCn0NCg0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3N1Y2VzcycgPT4gJ3RydWUnLCAndGFidG8nPT4kdGFidG8sICd0YWJfbWVzc2FnZSc9PiAnbXNnX3NhdmV0ZW1wbGF0ZXByZWYnICkpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_tbimage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KLy8gR2V0IFBPU1QgZGF0YQ0KJHRhYnRvID0gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pOw0KJHR0YWJ0byA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0dGFidG8nXSk7DQoNCmlmIChpc3NldCgkcGFyYW1zWydmb3Jtc2VjdGlvbiddKSBhbmQgJHBhcmFtc1snZm9ybXNlY3Rpb24nXSA9PSAid210Iikgew0KCQkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3RleHQiLGlzc2V0KCRwYXJhbXNbJ3dtdF90ZXh0J10pID8gJHBhcmFtc1snd210X3RleHQnXSA6ICcnKTsNCgkNCgkkZmllbGROYW1lID0gJGlkIC4gIndtdF9mb250IjsNCglpZiAoICFpc3NldCgkX0ZJTEVTWyRmaWVsZE5hbWVdKSB8fCAhaXNzZXQoJF9GSUxFUykgfHwgIWlzX2FycmF5KCRfRklMRVNbJGZpZWxkTmFtZV0pIHx8ICEkX0ZJTEVTWyRmaWVsZE5hbWVdWyduYW1lJ10pIHt9DQoJZWxzZSB7DQoJCQ0KCQkkZm9udCA9IHRiVXRpbHM6OnRydWVwYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLiIvQXV0b0xpZ2h0Qm94LyIuJF9GSUxFU1skZmllbGROYW1lXVsnbmFtZSddKTsNCgkJDQoJCWlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skZmllbGROYW1lXVsndG1wX25hbWUnXSwgJGZvbnQpKSB7DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X2ZvbnQiLCRmb250KTsNCgkJfQ0KCQllbHNlIHsNCgkJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiBzdHJfcmVwbGFjZSgiW3BhcmFtXSIsICJmb3Jtc2VjdGlvbiIsJHRoaXMtPkxhbmcoJ3BhcmFtX2VtcHR5JykpLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0byc9PiR0dGFidG8gKTsNCgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJCXJldHVybjsNCgkJfQ0KCX0NCgkNCgkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3NpemUiLGlzc2V0KCRwYXJhbXNbJ3dtdF9zaXplJ10pID8gJHBhcmFtc1snd210X3NpemUnXSA6ICcxMicpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfY29sb3IiLGlzc2V0KCRwYXJhbXNbJ3dtdF9jb2xvciddKSA/ICRwYXJhbXNbJ3dtdF9jb2xvciddIDogJ2ZmZmZmZicpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfb3BhY2l0eSIsaXNzZXQoJHBhcmFtc1snd210X29wYWNpdHknXSkgPyAkcGFyYW1zWyd3bXRfb3BhY2l0eSddIDogJycpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfcG9zeCIsaXNzZXQoJHBhcmFtc1snd210X3Bvc3gnXSkgPyAkcGFyYW1zWyd3bXRfcG9zeCddIDogJzEwJyk7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoIndtdF9wb3N5Iixpc3NldCgkcGFyYW1zWyd3bXRfcG9zeSddKSA/ICRwYXJhbXNbJ3dtdF9wb3N5J10gOiAnMTAnKTsNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3BvcyIsaXNzZXQoJHBhcmFtc1snd210X3BvcyddKSA/ICRwYXJhbXNbJ3dtdF9wb3MnXSA6ICdMQicpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgYXJyYXkoICdzdWNlc3MnID0+ICd0cnVlJywgJ3RhYnRvJz0+JHRhYnRvLCAndHRhYnRvJz0+JHR0YWJ0bywgJ3RhYl9tZXNzYWdlJz0+ICdtc2dfc2F2ZXByZWYnICkpOw0KCXJldHVybjsNCn0NCmVsc2UgaWYgKGlzc2V0KCRwYXJhbXNbJ2Zvcm1zZWN0aW9uJ10pIGFuZCAkcGFyYW1zWydmb3Jtc2VjdGlvbiddID09ICJ3bWkiKSB7DQoJDQoJJGZpZWxkTmFtZSA9ICRpZCAuICJ3bWlfaW1hZ2UiOw0KCWlmICggIWlzc2V0KCRfRklMRVNbJGZpZWxkTmFtZV0pIHx8ICFpc3NldCgkX0ZJTEVTKSB8fCAhaXNfYXJyYXkoJF9GSUxFU1skZmllbGROYW1lXSkgfHwgISRfRklMRVNbJGZpZWxkTmFtZV1bJ25hbWUnXSkge30NCgllbHNlIHsNCgkJJGltYWdlID0gdGJVdGlsczo6dHJ1ZXBhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uIi9BdXRvTGlnaHRCb3gvd21fIi4kX0ZJTEVTWyRmaWVsZE5hbWVdWyduYW1lJ10pOw0KCQkNCgkJaWYgKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRmaWVsZE5hbWVdWyd0bXBfbmFtZSddLCAkaW1hZ2UpKSB7DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid21pX2ltYWdlIiwkaW1hZ2UpOw0KCQl9DQoJCWVsc2Ugew0KCQkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IHN0cl9yZXBsYWNlKCJbcGFyYW1dIiwgImZvcm1zZWN0aW9uIiwkdGhpcy0+TGFuZygncGFyYW1fZW1wdHknKSksICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJz0+JHR0YWJ0byApOw0KCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KCQ0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bWlfcmVsc2l6ZSIsaXNzZXQoJHBhcmFtc1snd21pX3JlbHNpemUnXSkgPyAkcGFyYW1zWyd3bWlfcmVsc2l6ZSddIDogJycpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bWlfcG9zIixpc3NldCgkcGFyYW1zWyd3bWlfcG9zJ10pID8gJHBhcmFtc1snd21pX3BvcyddIDogJ0xCJyk7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoIndtaV9wb3N4Iixpc3NldCgkcGFyYW1zWyd3bWlfcG9zeCddKSA/ICRwYXJhbXNbJ3dtaV9wb3N4J10gOiAnMTAnKTsNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid21pX3Bvc3kiLGlzc2V0KCRwYXJhbXNbJ3dtaV9wb3N5J10pID8gJHBhcmFtc1snd21pX3Bvc3knXSA6ICcxMCcpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgYXJyYXkoICdzdWNlc3MnID0+ICd0cnVlJywgJ3RhYnRvJz0+JHRhYnRvLCAndHRhYnRvJz0+JHR0YWJ0bywgJ3RhYl9tZXNzYWdlJz0+ICdtc2dfc2F2ZXByZWYnICkpOw0KCXJldHVybjsNCn0NCg0KCQ0KJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IHN0cl9yZXBsYWNlKCJbcGFyYW1dIiwgImZvcm1zZWN0aW9uIiwkdGhpcy0+TGFuZygncGFyYW1fZW1wdHknKSksICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJz0+JHR0YWJ0byApOw0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KcmV0dXJuOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.admin_twitterfeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCiR0YWJ0byA9IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0YWJ0byddKTsNCg0KDQppZiAoaXNzZXQoJHBhcmFtc1sncmVzZXRidXR0b24nXSkgKQ0Kew0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF9jb25zdW1lcktleScsJycpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF9jb25zdW1lclNlY3JldCcsJycpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF90b2tlbicsJycpOwkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfb2snLCcnKTsJDQoJDQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBhcnJheSggJ3N1Y2VzcycgPT4gJ3RydWUnLCAndGFiX21lc3NhZ2UnPT4gJ21zZ19zYXZlcHJlZicsICd0YWJ0byc9PiR0YWJ0byApKTsNCglyZXR1cm47DQp9DQplbHNlIHsNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfY29uc3VtZXJLZXknLCRwYXJhbXNbJ2NvbnN1bWVya2V5J10pOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF9jb25zdW1lclNlY3JldCcsJHBhcmFtc1snY29uc3VtZXJzZWNyZXQnXSk7CQ0KCQ0KCSRrZXkgPSAkcGFyYW1zWydjb25zdW1lcmtleSddOw0KCSRzZWNyZXQgPSAkcGFyYW1zWydjb25zdW1lcnNlY3JldCddOw0KCSR0b2tlblVybCA9ICJodHRwczovL2FwaS50d2l0dGVyLmNvbS9vYXV0aDIvdG9rZW4iOw0KCSRhdXRoID0gYmFzZTY0X2VuY29kZSh1cmxlbmNvZGUoJGtleSkgLiAnOicgLiB1cmxlbmNvZGUoJHNlY3JldCkpOw0KCSRnZXRUb2tlbiA9IGN1cmxfaW5pdCgpOw0KCWN1cmxfc2V0b3B0KCRnZXRUb2tlbiwgQ1VSTE9QVF9VUkwsICR0b2tlblVybCk7DQoJY3VybF9zZXRvcHQoJGdldFRva2VuLCBDVVJMT1BUX1BPU1QsIDEpOw0KCWN1cmxfc2V0b3B0KCRnZXRUb2tlbiwgQ1VSTE9QVF9IVFRQSEVBREVSLCBhcnJheSgnQXV0aG9yaXphdGlvbjogQmFzaWMgJyAuICRhdXRoKSk7DQoJY3VybF9zZXRvcHQoJGdldFRva2VuLCBDVVJMT1BUX1BPU1RGSUVMRFMsICJncmFudF90eXBlPWNsaWVudF9jcmVkZW50aWFscyIpOw0KCWN1cmxfc2V0b3B0KCRnZXRUb2tlbiwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQoJJHRva2VuID0ganNvbl9kZWNvZGUoY3VybF9leGVjKCRnZXRUb2tlbikpOw0KCSR0b2tlbiA9ICR0b2tlbi0+YWNjZXNzX3Rva2VuOw0KCWN1cmxfY2xvc2UoJGdldFRva2VuKTsNCgkNCgkkcXVlc3QgPSAiaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vMS4xL3N0YXR1c2VzL3VzZXJfdGltZWxpbmUuanNvbj9zY3JlZW5fbmFtZT1sdWthc2JsYXR0ZXIiOw0KCSRjdXJsID0gY3VybF9pbml0KCk7DQoJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkcXVlc3QpOw0KCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCgljdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBhcnJheSgnQXV0aG9yaXphdGlvbjogQmVhcmVyICcgLiAkdG9rZW4pKTsNCgkkcmVzdWx0ID0gY3VybF9leGVjKCRjdXJsKTsNCgljdXJsX2Nsb3NlKCRjdXJsKTsNCgkkdHdlZXRzID0ganNvbl9kZWNvZGUoJHJlc3VsdCk7DQoJDQoJaWYgKCR0d2VldHMtPmVycm9yc1swXS0+Y29kZSkgew0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfY29uc3VtZXJLZXknLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3R3aXR0ZXJmZWVkX2NvbnN1bWVyU2VjcmV0JywnJyk7DQoJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAgJHR3ZWV0cy0+ZXJyb3JzWzBdLT5jb2RlIC4gJyAnIC4gJHR3ZWV0cy0+ZXJyb3JzWzBdLT5tZXNzYWdlLCAndGFidG8nID0+ICR0YWJ0byk7DQoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQoJCXJldHVybjsNCgl9DQoJDQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3R3aXR0ZXJmZWVkX29rJyx0cnVlKTsNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfdG9rZW4nLGJhc2U2NF9lbmNvZGUoJHRva2VuKSk7CQ0KCQ0KfQ0KDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsIGFycmF5KCAnc3VjZXNzJyA9PiAndHJ1ZScsICd0YWJfbWVzc2FnZSc9PiAnbXNnX3NhdmVwcmVmJywgJ3RhYnRvJz0+JHRhYnRvICkpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KDQokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCi8vcHJpbnRfcigkcGFyYW1zKTsNCg0KLyoqDQogKiBBdXNnYWJlIHZvbiBNZWxkdW5nZW4gw7xiZXIgZGllIEphdmFzY3JpcHQgS29uc29sZQ0KICovDQoNCg0KaWYgKGlzc2V0KCRwYXJhbXNbJ2NvbnNvbGVsb2cnXSkpIHsNCgkNCgkkY29uc29sZSA9IHRiVXRpbHM6OmRlYnVnMkNvbnNvbGUoJHBhcmFtc1snY29uc29sZWxvZyddKTsNCgkNCgkkdGhpcy0+dGJNZXRhSnNbbWljcm90aW1lKHRydWUpXSA9ICRjb25zb2xlOw0KCQ0KCXJldHVybjsNCn0NCg0KDQovKioNCiAqIE1vZHVsZSB2b24gVG9vbEJveCB3ZWxjaGUgw7xiZXIgZGVuIFBhcmFtZXRlciAibW9kIiBhdWZnZXJ1ZmVuIHdlcmRlbi4NCiAqLw0KDQppZiAoaXNzZXQoJHBhcmFtc1snbW9kJ10pKSB7DQoJDQoJaWYgKHN0cnRvbG93ZXIoJHBhcmFtc1snbW9kJ10pID09ICJjc3YiKSB7DQoJCQ0KCQkkdGVtcGxhdGUgCQk9IGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pID8gJ2NzdnN1bV8nLiRwYXJhbXNbJ3RlbXBsYXRlJ10gOiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiY3VycmVudF9jc3ZzdW1fdGVtcGxhdGUiKTsNCgkJJGRldGFpbHRlbXBsYXRlID0gaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkgPyAnY3N2ZGV0XycuJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSA6ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjdXJyZW50X2NzdmRldF90ZW1wbGF0ZSIpOw0KCQkNCgkJJGZpbGUJIAk9IGlzc2V0KCRwYXJhbXNbJ2ZpbGUnXSkgPyAkcGFyYW1zWydmaWxlJ10gOiAnJzsNCgkJJHNvcnRieQkgCT0gaXNzZXQoJHBhcmFtc1snc29ydGJ5J10pID8gJHBhcmFtc1snc29ydGJ5J10gOiAnJzsNCgkJJHNvcnRvcmRlciAJPSBpc3NldCgkcGFyYW1zWydzb3J0b3JkZXInXSkgPyAkcGFyYW1zWydzb3J0b3JkZXInXSA6ICcnOw0KCQkkYWN0aW9uCSAJPSBpc3NldCgkcGFyYW1zWydhY3Rpb24nXSkgPyAkcGFyYW1zWydhY3Rpb24nXSA6ICdkZWZhdWx0JzsNCgkJJHRiYWN0aW9uCT0gaXNzZXQoJHBhcmFtc1sndGJhY3Rpb24nXSkgPyAkcGFyYW1zWyd0YmFjdGlvbiddIDogJ2RlZmF1bHQnOw0KCQkkZmlsZQkJPSBpc3NldCgkcGFyYW1zWydmaWxlJ10pID8gJHBhcmFtc1snZmlsZSddIDogJyc7IA0KCQkkaXRlbWlkCQk9IGlzc2V0KCRwYXJhbXNbJ2l0ZW1pZCddKSA/ICRwYXJhbXNbJ2l0ZW1pZCddIDogJyc7DQoJCSRkZWxpbWl0ZXIJPSBpc3NldCgkcGFyYW1zWydkZWxpbWl0ZXInXSkgPyAkcGFyYW1zWydkZWxpbWl0ZXInXSA6ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjc3ZfZGVsaW1pdGVyIik7DQoJCSRmaWxlY2hhcnNldD0gaXNzZXQoJHBhcmFtc1snZmlsZWNoYXJzZXQnXSkgPyAkcGFyYW1zWydmaWxlY2hhcnNldCddIDogJHRoaXMtPkdldFByZWZlcmVuY2UoImNzdl9maWxlY2hhcnNldCIpOw0KCQkkY21zY2hhcnNldCA9ICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiY3N2X2Ntc2NoYXJzZXQiKTsNCgkJDQoJCWlmICghJGZpbGUpIHsNCgkJCWVjaG8gc3RyX3JlcGxhY2UoIltwYXJhbV0iLCAiZmlsZSIsJHRoaXMtPkxhbmcoJ3BhcmFtX2VtcHR5JykpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCQ0KCQkkZmlsZSA9IHJlYWxwYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvJy5zdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3VybCddLCAiIiwgJGZpbGUpKTsNCgkJDQoJCWlmICghZmlsZV9leGlzdHMoJGZpbGUpKSB7DQoJCQllY2hvIHN0cl9yZXBsYWNlKCJbZmlsZV0iLCAkZmlsZSwkdGhpcy0+TGFuZygnZXJyb3JfZmlsZW5vdGV4aXN0JykpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCQ0KCQkjIHRhYiBkZWxpbWl0ZWQsIGFuZCBlbmNvZGluZyBjb252ZXJzaW9uDQoJCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsNCgkJJGNzdi0+ZW5jb2RpbmcoJ2lzby04ODU5LTEnLCAnVVRGLTgnKTsNCgkJJGNzdi0+ZGVsaW1pdGVyID0gIjsiOw0KCQkkY3N2LT5wYXJzZSgkZmlsZSk7DQoJCQ0KCQkkZGF0YSA9ICRjc3YtPmRhdGE7DQoJCQ0KCQkvLyBhZGQgSUQgDQoJCSRpZCA9IDE7DQoJCWZvcmVhY2ggKCRkYXRhIGFzICRrID0+ICR2KSB7DQoJCQkkYXJyYXkgPSAkZGF0YVska107DQoJCQkkZGF0YVska10gPSBhcnJheV9tZXJnZShhcnJheSgnaWQnID0+ICRpZCksJGFycmF5KTsNCgkJCSRwcmV0dHl1cmwgPSAndGIvJy4kcGFyYW1zWydtb2QnXS4nLycuJGlkLicvJy4kcmV0dXJuaWQuJy9kZXRhaWwnOw0KCQkJJGxpbmtBcnJheSA9IGFycmF5KCdtb2QnID0+ICdjc3YnLCAnaXRlbWlkJyA9PiAkaWQsICd0YmFjdGlvbicgPT4gJ2RldGFpbCcpOw0KCQkJJGRhdGFbJGtdWydtb3JlX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICcnLCAkbGlua0FycmF5LCcnLCB0cnVlLCBmYWxzZSwgJycsIHRydWUsICRwcmV0dHl1cmwpOw0KCQkJDQoJCQkkaWQrKzsNCgkJfQ0KCQkNCgkJDQoJCS8vIERldGFpbGFuc2ljaHQNCgkJaWYgKCR0YmFjdGlvbiA9PSAnZGV0YWlsJykgew0KCQkJDQoJCQkkdGVtcGxhdGVwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJGRldGFpbHRlbXBsYXRlKTsNCgkJCQ0KCQkJaWYgKCEkdGVtcGxhdGVwcm9wcykgew0KCQkJCWVjaG8gc3RyX3JlcGxhY2UoIlt0ZW1wbGF0ZV0iLCAkZGV0YWlsdGVtcGxhdGUsJHRoaXMtPkxhbmcoJ2Vycm9yX3RlbXBsYXRldW5rbm93bicpKTsNCgkJCQlyZXR1cm47DQoJCQl9DQoJCQkNCgkJCS8vIFN0eWxlc2hlZXQgZWluYmluZGVuIGZhbGxzIHZvcmhhbmRlbg0KCQkJaWYgKGlzX2ZpbGUoJ21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycuJGRldGFpbHRlbXBsYXRlLicuY3NzJykpIHsNCgkJCQkkdGhpcy0+dGJNZXRhWyR0ZW1wbGF0ZV0gPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy8nLiRkZXRhaWx0ZW1wbGF0ZS4nLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+JzsNCgkJCX0NCgkJCQkNCgkJCSRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRPT0xCT1hfU0VQQVJBVE9SLCAkdGhpcy0+R2V0VGVtcGxhdGUoJGRldGFpbHRlbXBsYXRlKSk7DQoJCQkkamF2YXNjcmlwdCA9IGlzc2V0KCRjb250ZW50c2NvZGVbMl0pID8gc3RyX3JlcGxhY2UoIip9IiwgIiIsIHN1YnN0cigkY29udGVudHNjb2RlWzJdLDAsLTIpKSA6ICcnOw0KCQkJCQ0KCQkJaWYgKCRqYXZhc2NyaXB0KSB7DQoJCQkJaWYgKCR0ZW1wbGF0ZXByb3BzWydqcXVlcnknXSkJJHRoaXMtPnRiSnF1ZXJ5ID0gdHJ1ZTsJDQoJCQkJJHRoaXMtPnRiTWV0YUpzWyR0ZW1wbGF0ZV0gPSB0YlV0aWxzOjpleGVjdXRlVGVtcGxhdGVTbWFydHkoJGphdmFzY3JpcHQpLiJcbiI7DQoJCQl9DQoJCQkNCgkJCSRpdGVtID0gKGlzc2V0KCRkYXRhWyRpdGVtaWRdKSkgPyAkZGF0YVskaXRlbWlkXSA6IGFycmF5KCk7DQoJCQkNCgkJCSRpdGVtID0gYnRUb29sczo6YXJyYXlUb09iamVjdCgkaXRlbSk7DQoJCQkkc21hcnR5LT5hc3NpZ24oIml0ZW0iLCRpdGVtKTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkZGV0YWlsdGVtcGxhdGUpOw0KCQl9DQoJCWVsc2UgaWYgKCR0YmFjdGlvbiA9PSAnc2VhcmNoJykgew0KCQkJDQoJCX0NCgkJZWxzZSB7DQoJCQkNCgkJCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkdGVtcGxhdGUpOw0KCQkJDQoJCQlpZiAoISR0ZW1wbGF0ZXByb3BzKSB7DQoJCQkJZWNobyBzdHJfcmVwbGFjZSgiW3RlbXBsYXRlXSIsICR0ZW1wbGF0ZSwkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGxhdGV1bmtub3duJykpOw0KCQkJCXJldHVybjsNCgkJCX0NCgkJCQ0KCQkJLy8gU3R5bGVzaGVldCBlaW5iaW5kZW4gZmFsbHMgdm9yaGFuZGVuDQoJCQlpZiAoaXNfZmlsZSgnbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJy4kdGVtcGxhdGUuJy5jc3MnKSkgew0KCQkJCSR0aGlzLT50Yk1ldGFbJHRlbXBsYXRlXSA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycuJHRlbXBsYXRlLicuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4nOw0KCQkJfQ0KCQkJCQ0KCQkJJGNvbnRlbnRzY29kZSA9IGV4cGxvZGUoVE9PTEJPWF9TRVBBUkFUT1IsICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGUpKTsNCgkJCSRqYXZhc2NyaXB0ID0gaXNzZXQoJGNvbnRlbnRzY29kZVsyXSkgPyBzdHJfcmVwbGFjZSgiKn0iLCAiIiwgc3Vic3RyKCRjb250ZW50c2NvZGVbMl0sMCwtMikpIDogJyc7DQoJCQkJDQoJCQlpZiAoJGphdmFzY3JpcHQpIHsNCgkJCQlpZiAoJHRlbXBsYXRlcHJvcHNbJ2pxdWVyeSddKQkkdGhpcy0+dGJKcXVlcnkgPSB0cnVlOwkNCgkJCQkkdGhpcy0+dGJNZXRhSnNbJHRlbXBsYXRlXSA9IHRiVXRpbHM6OmV4ZWN1dGVUZW1wbGF0ZVNtYXJ0eSgkamF2YXNjcmlwdCkuIlxuIjsNCgkJCX0NCgkJCQ0KCQkNCgkJCWlmICgkc29ydGJ5KSB7DQoJCQkJJHNvcnQgPSBuZXcgdGJBcnJheU11bHRpc29ydCgpOw0KCQkJCSRzb3J0LT5zZXRBcnJheSgkZGF0YSk7DQoJDQoJCQkJJGZpZWxkcyA9IGV4cGxvZGUoIiwiLCAkc29ydGJ5KTsNCgkJCQlmb3JlYWNoICgkZmllbGRzIGFzICRmaWVsZCkgew0KCQkJCQkkZmllbGQgPSAgZXhwbG9kZSgifCIsICRmaWVsZCk7DQoJCQkJCWlmIChpc3NldCgkZmllbGRbMV0pKSB7IA0KCQkJCQkJaWYgKHN0cnRvbG93ZXIoJGZpZWxkWzFdKSA9PSAiZGVzYyIpDQoJCQkJCQkJJHNvcnQtPmFkZENvbHVtbigkZmllbGRbMF0sU1JUX0RFU0MpOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCSRzb3J0LT5hZGRDb2x1bW4oJGZpZWxkWzBdLFNSVF9BU0MpOw0KCQkJCQl9CQ0KCQkJCQllbHNlDQoJCQkJCQkkc29ydC0+YWRkQ29sdW1uKCRmaWVsZFswXSxTUlRfQVNDKTsNCgkJCQl9DQoJCQkJDQoJCQkJJGRhdGEgPSAkc29ydC0+c29ydCgpOw0KCQkJfQ0KCQkNCgkJDQovLwkJCSRkYXRhID0gYnRUb29sczo6c2VhcmNoQXJyYXkoJGRhdGEsICdiZXN0ZWxsbnInLCAnY1MxNTczOEQnKTsNCg0KDQoJLy8NCgkvLwkJZWNobyAiPHByZT4iLnByaW50X3IoJGRhdGEsdHJ1ZSkuIjwvcHJlPiI7DQoJLy8vLw0KCS8vLy8NCgkJCSRkYXRhID0gYnRUb29sczo6YXJyYXlUb09iamVjdCgkZGF0YSk7DQoJCQkNCgkvLwkJZWNobyAiPHByZT4iLnByaW50X3IoJGRhdGEsdHJ1ZSkuIjwvcHJlPiI7DQoJCQkNCgkJCSRzbWFydHktPmFzc2lnbigiaXRlbXMiLCRkYXRhKTsNCgkJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdGVtcGxhdGUpOw0KCQ0KCQkJcmV0dXJuOw0KCQkNCgkJfQ0KCX0NCgkNCgkNCgkNCgkvKioNCgkgKiANCgkgKiBTb2NpYWxTaGFyZVByaXZhY3kgTW9kdWwgLSAyIHN0dWZpZ2UgRWluYmluZHVuZyB2b24gU29jaWFsIE1lZGlhIEJ1dHRvbnMgaW4gZGllIFdlYnNlaXRlDQoJICogQHBhcmFtIG1vZCA9ICJzb2NpYWxzaGFyZXByaXZhY3kiDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlcg0KCSAqIA0KCSAqLw0KCQ0KCWVsc2UgaWYgKCRwYXJhbXNbJ21vZCddPT0gInNvY2lhbHNoYXJlcHJpdmFjeSIgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoInNvY2lhbHNoYXJlcHJpdmFjeV91c2UiKSkgew0KDQoJCSR0ZW1wbGF0ZSA9ICJzb2NpYWxzaGFyZXByaXZhY3kiOw0KCQkkdGVtcGxhdGVwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJHRlbXBsYXRlKTsNCgkJDQoJCSRpbmZvbGluayA9IGlzc2V0KCR0ZW1wbGF0ZXByb3BzWydpbmZvbGluayddKSA/ICR0ZW1wbGF0ZXByb3BzWydpbmZvbGluayddIDogJyc7DQoJCQ0KCQkkdGVtcGxhdGVfanMgPSAiIjsNCgkJJHRlbXBsYXRlX21ldGFkYXRhID0gIiI7DQoJCQ0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHRlbXBsYXRlKTsNCgkJDQoJCSRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRPT0xCT1hfU0VQQVJBVE9SLCAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlKSk7DQoJCQ0KCQkvLyRjb250ZW50ID0gaXNzZXQoJGNvbnRlbnRzY29kZVswXSkgPyAkY29udGVudHNjb2RlWzBdIDogJyc7DQoJCSRzdHlsZXNoZWV0ID0gaXNzZXQoJGNvbnRlbnRzY29kZVsxXSkgPyB0cmltKCRjb250ZW50c2NvZGVbMV0sJyp9JykgOiAnJzsNCgkJJGphdmFzY3JpcHQgPSBpc3NldCgkY29udGVudHNjb2RlWzJdKSA/IHRyaW0oJGNvbnRlbnRzY29kZVsyXSwnKn0nKSA6ICcnOw0KCQkNCgkJLy8gTG9hZCBqUXVlcnkNCgkJaWYgKCR0ZW1wbGF0ZXByb3BzWydqcXVlcnknXSkJJHRoaXMtPnRiSnF1ZXJ5ID0gdHJ1ZTsJDQoJCQkNCgkJaWYgKCRpbmZvbGluaykNCgkJCSRqYXZhc2NyaXB0ID0gc3RyX3JlcGxhY2UoIltpbmZvTGlua10iLCAJCSInaW5mb19saW5rJzogJyIuJGluZm9saW5rLiInLCIsICRqYXZhc2NyaXB0KTsNCgkJZWxzZSAJDQoJCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbaW5mb0xpbmtdIiwgCQkiIiwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbZmFjZWJvb2tBcHBJZF0iLAkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc29jaWFsc2hhcmVwcml2YWN5X2ZhY2Vib29raWQnKSwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbdHh0RmJJbmZvXSIsIAkJJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHRmYmluZm8nKSwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbdHh0RmJPZmZdIiwgCQkkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3R4dGZib2ZmJyksICRqYXZhc2NyaXB0KTsNCgkJJGphdmFzY3JpcHQgPSBzdHJfcmVwbGFjZSgiW3R4dEZiT25dIiwgCQkJJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHRmYm9uJyksICRqYXZhc2NyaXB0KTsNCgkJJGphdmFzY3JpcHQgPSBzdHJfcmVwbGFjZSgiW3R4dFR3aXR0ZXJJbmZvXSIsIAkkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3R4dHR3aXR0ZXJpbmZvJyksICRqYXZhc2NyaXB0KTsNCgkJJGphdmFzY3JpcHQgPSBzdHJfcmVwbGFjZSgiW3R4dFR3aXR0ZXJPZmZdIiwgCSR0aGlzLT5MYW5nKCdzb2NpYWxzaGFyZXByaXZhY3lfdHh0dHdpdHRlcm9mZicpLCAkamF2YXNjcmlwdCk7DQoJCSRqYXZhc2NyaXB0ID0gc3RyX3JlcGxhY2UoIlt0eHRUd2l0dGVyT25dIiwgCSR0aGlzLT5MYW5nKCdzb2NpYWxzaGFyZXByaXZhY3lfdHh0dHdpdHRlcm9uJyksICRqYXZhc2NyaXB0KTsNCgkJJGphdmFzY3JpcHQgPSBzdHJfcmVwbGFjZSgiW3R4dEdwbHVzSW5mb10iLCAJJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHRncGx1c2luZm8nKSwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbdHh0R3BsdXNPZmZdIiwgCQkkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3R4dGdwbHVzb2ZmJyksICRqYXZhc2NyaXB0KTsNCgkJJGphdmFzY3JpcHQgPSBzdHJfcmVwbGFjZSgiW3R4dEdwbHVzT25dIiwgCQkkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3R4dGdwbHVzb24nKSwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbdHh0SGVscF0iLCAJCQkkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3R4dGhlbHAnKSwgJGphdmFzY3JpcHQpOw0KCQkkamF2YXNjcmlwdCA9IHN0cl9yZXBsYWNlKCJbdHh0U2V0dGluZ3NQZXJtYV0iLCAkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3NldHRpbmdzcGVybWEnKSwgJGphdmFzY3JpcHQpOw0KCQkNCgkJDQoJCWlmICghaXNzZXQoJHRoaXMtPnRiTWV0YVskdGVtcGxhdGVdKSkgew0KCQkJaWYgKCRzdHlsZXNoZWV0KSAkdGhpcy0+dGJNZXRhWyR0ZW1wbGF0ZV0gPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy9zb2NpYWxzaGFyZXByaXZhY3kuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4nOw0KCQkJDQoJCQlpZiAoJGphdmFzY3JpcHQpDQoJCQkJJHRoaXMtPnRiTWV0YUpzWyR0ZW1wbGF0ZV0gPSB0YlV0aWxzOjpleGVjdXRlVGVtcGxhdGVTbWFydHkoJGphdmFzY3JpcHQpLiJcbiI7CQ0KCQl9DQoJCQ0KCQlyZXR1cm4gJyc7DQoJCQkJDQoJCQ0KCX0NCgllbHNlIGlmICgkcGFyYW1zWydtb2QnXT09ICJzb2NpYWxzaGFyZXByaXZhY3kiICYmICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgic29jaWFsc2hhcmVwcml2YWN5X3VzZSIpKSB7DQoJCWVjaG8gJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV9pbmFjdGl2ZScpOw0KCQlyZXR1cm4gJyc7DQoJfQ0KCS8qKg0KCSAqIA0KCSAqIFR3aXR0ZXJmZWVkIE1vZHVsIC0gRGllc2VzIE1vZHVsIGlzdCBuaWNodCBkb2t1bWVudGllcnQgdW5kIGJhdXQgYXVmIGRpZSBKYXZhU2NyaXB0IEzDtnN1bmcgdm9uIFR3aXR0ZXIgYXVmLg0KCSAqIFNvYmFsZCBpY2ggbWFsIFplaXQgaGFiZSwgd2VyZGUgaWNoIG1pciBkaWUgVW1zZXR6dW5nIGRlcyBNb2R1bHMgw7xiZXJsZWdlbiB1bmQgZmVydGlnIHVtc2V0emVuDQoJICogQHBhcmFtIG1vZCA9ICJ0d2l0dGVyZmVlZCINCgkgKiBAcGFyYW0gdXNlcm5hbWUgLSBUd2l0dGVyIFVzZXJuYW1lDQoJICogQHBhcmFtIGNvdW50IC0gQW56YWhsIGRlciBUd2VldHMgZGllIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuDQoJICogQHBhcmFtIGRhdGVmb3JtYXQgLSBGb3JtYXQgaW4gd2VsY2hlbSBkYXMgVHdlZXQtRGF0dW0gYW5nZXplaWd0IHdlcmRlbiBzb2xsIChkLm0uWSBIOmk6cyBvZGVyIGZyaWVuZGx5KQ0KCSAqIEBwYXJhbSBub2NhY2hlIC0gQXVzZ2FiZSBuaWNodCBpbSBDYWNoZSBzcGVpY2hlcm4NCgkgKiBAcGFyYW0gY2FjaGV0aW1lIC0gWmVpdCBpbiBTZWt1bmRlbiB3aWUgbGFuZ2UgZGVyIENhY2hlIGVyaGFsdGVuIGJsZWliZW4gc29sbA0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXINCgkgKiANCgkgKi8NCgllbHNlIGlmICgkcGFyYW1zWydtb2QnXSA9PSAidHdpdHRlcmZlZWQiKSB7DQoJCQ0KCQlpZiAoKCFpc3NldCgkcGFyYW1zWyd1c2VybmFtZSddKSBhbmQgIWlzc2V0KCRwYXJhbXNbJ3NlYXJjaCddKSkgb3IgKGlzc2V0KCRwYXJhbXNbJ2xpc3QnXSkgYW5kICFpc3NldCgkcGFyYW1zWyd1c2VybmFtZSddKSkpIHsNCgkJCWVjaG8gIlRvb2xib3ggbW9kPXR3aXR0ZXJmZWVkIC0+IFBhcmFtICd1c2VybmFtZScgbm90IGRlZmluaWVkIjsNCgkJCXJldHVybiAnJzsNCgkJfQ0KCQkNCgkJaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF9vaycpKSB7DQoJCQ0KCQkJJHRlbXBsYXRlIAk9IGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pID8gJ3R3Zl8nLiRwYXJhbXNbJ3RlbXBsYXRlJ10gOiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgiY3VycmVudF90d2l0dGVyZmVlZF90ZW1wbGF0ZSIpOw0KCQkJJHVzZXJuYW1lIAk9IGlzc2V0KCRwYXJhbXNbJ3VzZXJuYW1lJ10pID8gJHBhcmFtc1sndXNlcm5hbWUnXSA6ICcnOw0KCQkJJGxpc3QJIAk9IGlzc2V0KCRwYXJhbXNbJ2xpc3QnXSkgPyAkcGFyYW1zWydsaXN0J10gOiAnJzsNCgkJCSRzZWFyY2gJIAk9IGlzc2V0KCRwYXJhbXNbJ3NlYXJjaCddKSA/ICRwYXJhbXNbJ3NlYXJjaCddIDogJyc7DQoJCQkkY291bnQJICAJPSBpc3NldCgkcGFyYW1zWydjb3VudCddKSA/IChpbnQpICRwYXJhbXNbJ2NvdW50J10gOiAyMDsNCgkJCSRkYXRlZm9ybWF0ID0gaXNzZXQoJHBhcmFtc1snZGF0ZWZvcm1hdCddKSA/ICRwYXJhbXNbJ2RhdGVmb3JtYXQnXSA6ICdmcmllbmRseSc7DQoJCQkkY2FjaGV0aW1lCT0gaXNzZXQoJHBhcmFtc1snY2FjaGV0aW1lJ10pID8gKGludCkgJHBhcmFtc1snY2FjaGV0aW1lJ10gOiAnMTAnOw0KCQkJDQoJCQlpZiAoJGNhY2hldGltZSA8IDEpICRjYWNoZXRpbWUgPSAxMDsNCgkJDQoJCQl0cnkgew0KCQkJCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkdGVtcGxhdGUpOw0KCQkJCQ0KCQkJCS8vIFN0eWxlc2hlZXQgZWluYmluZGVuIGZhbGxzIHZvcmhhbmRlbg0KCQkJCWlmIChpc19maWxlKCdtb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy8nLiR0ZW1wbGF0ZS4nLmNzcycpKSB7DQoJCQkJCSR0aGlzLT50Yk1ldGFbJHRlbXBsYXRlXSA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycuJHRlbXBsYXRlLicuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4nOw0KCQkJCX0NCgkJCQkNCgkJCQkkY29udGVudHNjb2RlID0gZXhwbG9kZShUT09MQk9YX1NFUEFSQVRPUiwgJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZSkpOw0KCQkJCSRqYXZhc2NyaXB0ID0gaXNzZXQoJGNvbnRlbnRzY29kZVsyXSkgPyBzdHJfcmVwbGFjZSgiKn0iLCAiIiwgc3Vic3RyKCRjb250ZW50c2NvZGVbMl0sMCwtMikpIDogJyc7DQoJCQkJDQoJCQkJaWYgKCRqYXZhc2NyaXB0KSB7DQoJCQkJCWlmICgkdGVtcGxhdGVwcm9wc1snanF1ZXJ5J10pICR0aGlzLT50YkpxdWVyeSA9IHRydWU7CQ0KCQkJCQkkdGhpcy0+dGJNZXRhSnNbJHRlbXBsYXRlXSA9IHRiVXRpbHM6OmV4ZWN1dGVUZW1wbGF0ZVNtYXJ0eSgkamF2YXNjcmlwdCkuIlxuIjsJDQoJCQkJfQkNCgkNCgkJCQlpZiAoJHNlYXJjaCkNCgkJCQkJJGZlZWQgPSB0YlR3aXR0ZXJmZWVkOjpnZXRTZWFyY2hGZWVkKCRzZWFyY2gsICRjb3VudCwgJGRhdGVmb3JtYXQsICRjYWNoZXRpbWUpOw0KCQkJCWVsc2UgaWYgKCR1c2VybmFtZSAhPSAiIiBhbmQgJGxpc3QgIT0gIiIpCQ0KCQkJCQkkZmVlZCA9IHRiVHdpdHRlcmZlZWQ6OmdldFVzZXJMaXN0KCR1c2VybmFtZSwgJGxpc3QsICRjb3VudCwgJGRhdGVmb3JtYXQsICRjYWNoZXRpbWUpOw0KCQkJCWVsc2UgCQ0KCQkJCQkkZmVlZCA9IHRiVHdpdHRlcmZlZWQ6OmdldFVzZXJUaW1lbGluZSgkdXNlcm5hbWUsICRjb3VudCwgJGRhdGVmb3JtYXQsICRjYWNoZXRpbWUpOw0KCQkJCQkNCgkJCQkkc21hcnR5LT5hc3NpZ24oInR3aXR0ZXJmZWVkIiwkZmVlZCk7DQoJCQkJJGNvbXBpbGUgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7DQoJCQkJZWNobyAkY29tcGlsZTsNCgkJCX0NCgkJCWNhdGNoIChFeGNlcHRpb24gJGUpIHsgDQoJCQkgCWVjaG8gInRiVHdpdHRlcmZlZWQgRXJyb3I6ICIgLiAkZS0+Z2V0TWVzc2FnZSgpOw0KCQkJIH0NCgkJfSANCgkJZWxzZSB7DQoJCQllY2hvICJ0YlR3aXR0ZXJmZWVkIEVycm9yOiAiIC4gJHRoaXMtPkxhbmcoJ3R3aXR0ZXJmZWVkX25vYXV0aCcpOw0KCQl9DQoJCQkNCgl9DQovLwllbHNlIGlmICgkcGFyYW1zWydtb2QnXSA9PSAiaW1hZ2UiKSB7DQovLwkJDQovLwkJJHdpZHRoID0gaXNzZXQoJHBhcmFtc1snd2lkdGgnXSkgPyAkcGFyYW1zWyd3aWR0aCddIDogJyc7DQovLwkJJGhlaWdodCA9IGlzc2V0KCRwYXJhbXNbJ2hlaWdodCddKSA/ICRwYXJhbXNbJ2hlaWdodCddIDogJyc7DQovLwkJJGltYWdlID0gaXNzZXQoJHBhcmFtc1snaW1hZ2UnXSkgPyAkcGFyYW1zWydpbWFnZSddIDogJyc7DQovLwkJJGFsdCA9IGlzc2V0KCRwYXJhbXNbJ2FsdCddKSA/ICRwYXJhbXNbJ2FsdCddIDogJyc7DQovLwkJJHRpdGxlID0gaXNzZXQoJHBhcmFtc1sndGl0bGUnXSkgPyAkcGFyYW1zWyd0aXRsZSddIDogJyc7DQovLwkJJGNsYXNzID0gaXNzZXQoJHBhcmFtc1snY2xhc3MnXSkgPyAkcGFyYW1zWydjbGFzcyddIDogJyc7DQovLwkJJHN0eWxlID0gaXNzZXQoJHBhcmFtc1snc3R5bGUnXSkgPyAkcGFyYW1zWydzdHlsZSddIDogJyc7DQovLwkJJGlkID0gaXNzZXQoJHBhcmFtc1snaWQnXSkgPyAkcGFyYW1zWydpZCddIDogJyc7DQovLwkJJG5vX3RhZyA9IGlzc2V0KCRwYXJhbXNbJ25vX3RhZyddKSA/ICRwYXJhbXNbJ25vX3RhZyddIDogZmFsc2U7DQovLwkJDQovLwkJaWYgKCEkaW1hZ2UpIHsNCi8vCQkJZWNobyBzdHJfcmVwbGFjZSgiW3BhcmFtXSIsICJpbWFnZSIsICR0aGlzLT5MYW5nKCJwYXJhbV9lbXB0eSIpKTsNCi8vCQkJcmV0dXJuOw0KLy8JCX0NCi8vCQkkaW1hZ2UgPSBzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3BhdGgnXSwgIiIsc3RyX3JlcGxhY2UoJGNvbmZpZ1sncm9vdF91cmwnXSwgIiIsICRpbWFnZSksJGltYWdlKTsNCi8vCQkkcnBpbWFnZSA9IHJlYWxwYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvJy4kaW1hZ2UpOw0KLy8JCQ0KLy8JCWlmICghZmlsZV9leGlzdHMoJHJwaW1hZ2UpKSB7DQovLwkJCWVjaG8gc3RyX3JlcGxhY2UoIltmaWxlXSIsICRpbWFnZSwgJHRoaXMtPkxhbmcoImVycm9yX2ZpbGVub3RleGlzdCIpKTsNCi8vCQkJcmV0dXJuOw0KLy8JCX0gDQovLwkJDQovLwkJJGltZ2luZm8gID0gZ2V0aW1hZ2VzaXplKCRycGltYWdlKTsNCi8vCQkNCi8vCQkkYXR0ciA9ICIiOw0KLy8JCSRhdHRyIC49ICcgYWx0PSInLiRhbHQuJyInOw0KLy8JCWlmICgkdGl0bGUpICRhdHRyIC49ICcgdGl0bGU9IicuJHRpdGxlLiciJzsNCi8vCQlpZiAoJGNsYXNzKSAkYXR0ciAuPSAnIGNsYXNzPSInLiRjbGFzcy4nIic7DQovLwkJaWYgKCRpZCkgJGF0dHIgLj0gJyBpZD0iJy4kaWQuJyInOw0KLy8JCWlmICgkc3R5bGUpICRhdHRyIC49ICcgc3R5bGU9IicuJHN0eWxlLiciJzsNCi8vCQkNCi8vCQlpZiAoJGhlaWdodCBvciAkd2lkdGgpIHsNCi8vCQkJaWYgKCRoZWlnaHQgYW5kICEkd2lkdGggYW5kICRoZWlnaHQgPCAkaW1naW5mb1sxXSkgew0KLy8JCQkJJHdpZHRoID0gJGltZ2luZm9bMF0gLyAoJGltZ2luZm9bMV0gLyAkaGVpZ2h0KTsNCi8vCQkJfQ0KLy8JCQllbHNlIGlmICgkd2lkdGggYW5kICEkaGVpZ2h0IGFuZCAkd2lkdGggPCAkaW1naW5mb1swXSkgew0KLy8JCQkJJGhlaWdodCA9ICRpbWdpbmZvWzFdIC8gKCRpbWdpbmZvWzBdIC8gJHdpZHRoKTsNCi8vCQkJfQ0KLy8JCQkkYXR0cmlidXRlcyA9IGFycmF5KCk7DQovLwkJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3JlbCcpKQkkYXR0cmlidXRlc1sncmVsJ10JCT0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF9yZWwnKTsNCi8vCQkJaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfY2xhc3MnKSkJJGF0dHJpYnV0ZXNbJ2NsYXNzJ10JPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X2NsYXNzJyk7DQovLwkJCQ0KLy8JCQkkaHRtbCA9ICc8aW1nIHNyYz0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kaW1hZ2UuJyIgd2lkdGg9IicuJHdpZHRoLiciIGhlaWdodD0iJy4kaGVpZ2h0LiciICcuJGF0dHIuJyAvPic7DQovLwkJCSRodG1sID0gQXV0b2xpZ2h0Ym94OjpJbWcyVGh1bWIoJGh0bWwsICRhdHRyaWJ1dGVzKTsNCi8vCQl9DQovLwkJZWxzZSB7DQovLwkJCSRodG1sID0gJzxpbWcgc3JjPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRpbWFnZS4nIiB3aWR0aD0iJy4kaW1naW5mb1swXS4nIiBoZWlnaHQ9IicuJGltZ2luZm9bMV0uJyIgJy4kYXR0ci4nIC8+JzsNCi8vCQl9DQovLwkJaWYgKCRub190YWcpIHsNCi8vCQkJJGltZyA9IGJ0VG9vbHM6OmdldEltZ1RhZ3MoJGh0bWwpOw0KLy8JCQllY2hvICRpbWdbMF1bJ3NyYyddOw0KLy8JCQlyZXR1cm47DQovLwkJfQ0KLy8JCQ0KLy8JCWVjaG8gJGh0bWw7DQovLwkJcmV0dXJuOw0KLy8JCQ0KLy8JfQ0KCWVsc2Ugew0KCQllY2hvIHN0cl9yZXBsYWNlKCJbbW9kXSIsICRwYXJhbXNbJ21vZCddLCAkdGhpcy0+TGFuZygicGFyYW1faW52YWxpZCIpKTsNCgl9DQoJDQoJcmV0dXJuICcnOw0KCQ0KfQ0KZWxzZSBpZiAoY291bnQoJHBhcmFtKSA+IDApIHsNCgllY2hvIHN0cl9yZXBsYWNlKCJbcGFyYW1dIiwgIm1vZCIsICR0aGlzLT5MYW5nKCJwYXJhbV9lbXB0eSIpKTsNCglyZXR1cm47DQp9DQovLyBDaGVjayBpZiBtb2R1bGUgd2FzIGFscmVhZHkgdXNlZCAoZGllcyB0cmlmZnQgbnVyIGbDvHIgZGllIExvZ2dpbmcgdW5kIFVSTCBGdW5rdGlvbmVuIGRlcyBNb2R1bHMgenUpDQplbHNlIGlmICghJHRoaXMtPnRiVXNlZCkgew0KCS8vIFNldCB0aGUgbW9kdWxlIHVzZWQNCgkkdGhpcy0+dGJVc2VkID0gdHJ1ZTsNCgkvLyBTZXQgY29udGVudCBpZA0KCSR0aGlzLT5wYWdlSWQgPSAoaW50KWNtc21zKCktPmdldF92YXJpYWJsZSgiY29udGVudF9pZCIpOw0KCQ0KCS8vIExvZyB2aXNpdA0KCSR0YkxvZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0c191c2UnKSA/ICR0aGlzLT50YlJlZGlyZWN0TG9nLT5QcmVwYXJlTG9nVmlzaXQoKSA6IGFycmF5KCk7DQoJLy8gTG9nIGRlYnVnDQoJaWYgICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVidWdfdXNlJykpICR0aGlzLT50YlJlZGlyZWN0TG9nLT5EZWJ1Z01EKCk7DQoJLy8gTG9vayBmb3IgcmVkaXJlY3QgdXJscw0KCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZScpKSAkdGhpcy0+dGJSZWRpcmVjdExvZy0+UmVkaXJlY3RVUkwoJHRiTG9nKTsNCgkvLyBMb2cgZXJyb3JzIChlLmcuIDQwNCkNCglpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzX3VzZScpKSAkdGhpcy0+dGJSZWRpcmVjdExvZy0+TG9nRXJyb3IoJHRiTG9nKTsNCn0NCnJldHVybiAnJzsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KDQovLyBTZXQgbmVlZGVkIG9iamVjdHMNCiR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCg0KLy8gSW5zZXJ0IGNvbnRlbnQgb3BlcmF0aW9ucyBjbGFzcw0KJHRiQ29udGVudE9wcyA9JiBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KDQovLyBHZXQgVGFiIFJlZGlyZWN0IGFjdGlvbg0KJHRiRGVmYXVsdFRhYiA9ICdtYWluJzsNCg0KJHRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSkgOiAkdGJEZWZhdWx0VGFiOw0KDQokdGJTdWNjZXNzID0gaXNzZXQoJHBhcmFtc1snc3VjZXNzJ10pID8gJHBhcmFtc1snc3VjZXNzJ10gOiAnJzsNCg0KDQovLyBHZXQgZGIgaGFuZGxlDQovLyR0YkRiID0gY21zbXMoKS0+R2V0RGIoKTsNCi8vJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkdGJEYik7DQovLyR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJywgJ215c3FsaScgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJyk7DQovLw0KLy8vLyBDU1YNCi8vJGZsZHMgPSAiDQovLwlmaWxlbnIgSSBLRVkgQVVUTywNCi8vCWZpbGVuYW1lIEMoMjU1KSwNCi8vCXBhdGggQyg1MDApLA0KLy8JZmlsZXNpemUgSTgsDQovLwlsYXN0dXBkYXRlIERUDQovLyI7DQovLyRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdG9vbGJveF9jc3YiLAkkZmxkcywgJHRhYm9wdGFycmF5KTsNCi8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQplY2hvICR0aGlzLT50YkRvbmF0ZTsNCg0KLy8gRGlzcGxheXMgdGhlIFRhYnMNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOw0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICkgew0KCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignbWFpbicsJHRoaXMtPkxhbmcoJ21haW4nKSwkdGFidG89PSdtYWluJz90cnVlOmZhbHNlKTsNCn0NCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfNDA0JykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCc0MDQnLCR0aGlzLT5MYW5nKCc0MDQnKSwkdGFidG89PSc0MDQnP3RydWU6ZmFsc2UpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlJykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdyZWRpcmVjdHMnLCR0aGlzLT5MYW5nKCdyZWRpcmVjdHMnKSwkdGFidG89PSdyZWRpcmVjdHMnP3RydWU6ZmFsc2UpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0c191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3N0YXRzJywkdGhpcy0+TGFuZygnc3RhdHMnKSwkdGFidG89PSdzdGF0cyc/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2F1dG9saWdodGJveCcsJHRoaXMtPkxhbmcoJ2F1dG9saWdodGJveCcpLCR0YWJ0bz09J2F1dG9saWdodGJveCc/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0YmltYWdlJywkdGhpcy0+TGFuZygndGJpbWFnZScpLCR0YWJ0bz09J3RiaW1hZ2UnP3RydWU6ZmFsc2UpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzb2NpYWxzaGFyZXByaXZhY3lfdXNlJykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdzb2NpYWxzaGFyZXByaXZhY3knLCR0aGlzLT5MYW5nKCdzb2NpYWxzaGFyZXByaXZhY3knKSwkdGFidG89PSdzb2NpYWxzaGFyZXByaXZhY3knP3RydWU6ZmFsc2UpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3R3aXR0ZXJmZWVkJywkdGhpcy0+TGFuZygndHdpdHRlcmZlZWQnKSwkdGFidG89PSd0d2l0dGVyZmVlZCc/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nzdl91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NzdicsJHRoaXMtPkxhbmcoJ2NzdicpLCR0YWJ0bz09J2Nzdic/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfdXNlJykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0YWlsJywkdGhpcy0+TGFuZygndGFpbCcpLCR0YWJ0bz09J3RhaWwnP3RydWU6ZmFsc2UpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWJ1Z191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2RlYnVnJywkdGhpcy0+TGFuZygnZGVidWcnKSwkdGFidG89PSdkZWJ1Zyc/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21vZHVsZW9wc191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ21vZHVsZW9wcycsJHRoaXMtPkxhbmcoJ21vZHVsZW9wcycpLCR0YWJ0bz09J21vZHVsZW9wcyc/dHJ1ZTpmYWxzZSk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSB7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmcycsJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzJyksJHRhYnRvPT0ncHJlZnMnP3RydWU6ZmFsc2UpOw0KfQ0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KDQovLyBEaXNwbGF5IHRoZSBjb250ZW50IG9mIHRoZSB0YWJzDQplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsNCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignbWFpbicsJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX21haW4ucGhwJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzXzQwNCcpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCc0MDQnLCRwYXJhbXMpOw0KCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl80MDQucGhwJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigncmVkaXJlY3RzJywkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fcmVkaXJlY3RzLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0c191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignc3RhdHMnLCRwYXJhbXMpOw0KCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9zdGF0cy5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3VzZScpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdhdXRvbGlnaHRib3gnLCRwYXJhbXMpOw0KCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9hdXRvbGlnaHRib3gucGhwJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RiaW1hZ2UnLCRwYXJhbXMpOw0KCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl90YmltYWdlLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzb2NpYWxzaGFyZXByaXZhY3lfdXNlJykgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NvY2lhbHNoYXJlcHJpdmFjeScsJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3NvY2lhbHNoYXJlcHJpdmFjeS5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfdXNlJykgKSB7DQoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3R3aXR0ZXJmZWVkJywkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fdHdpdHRlcmZlZWQucGhwJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nzdl91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignY3N2JywkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fY3N2LnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWJ1Z191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignZGVidWcnLCRwYXJhbXMpOw0KCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9kZWJ1Zy5waHAnKTsNCgllY2hvICR0aGlzLT5FbmRUYWIoKTsNCn0NCmlmICggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGFpbF91c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYigndGFpbCcsJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3RhaWwucGhwJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7DQp9DQppZiAoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21vZHVsZW9wc191c2UnKSApIHsNCgllY2hvICR0aGlzLT5TdGFydFRhYignbW9kdWxlb3BzJywkcGFyYW1zKTsNCglpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fbW9kdWxlb3BzLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KaWYgKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICkgew0KCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycsJHBhcmFtcyk7DQoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3ByZWZzLnBocCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOw0KfQ0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOw0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwokY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoKcHJpbnRfcigkcGFyYW1zKTsK]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiR0YnRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkJCT8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pIDogIiI7IA0KJHNlY3Rpb24gPSBpc3NldCgkcGFyYW1zWydzZWN0aW9uJ10pCT8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3NlY3Rpb24nXSkgOiAnJzsNCiR2ZXJzaW9uID0gaXNzZXQoJHBhcmFtc1sndmVyc2lvbiddKQk/ICRwYXJhbXNbJ3ZlcnNpb24nXQkJOiAnJzsNCiRhYm91dAkgPSBpc3NldCgkcGFyYW1zWydhYm91dCddKSAJCT8gJHBhcmFtc1snYWJvdXQnXQkJCTogJyc7DQokanF1ZXJ5CSA9IGlzc2V0KCRwYXJhbXNbJ2pxdWVyeSddKQkJPyAoaW50KSAkcGFyYW1zWydqcXVlcnknXQk6ICcnOw0KJG9wdGlvbnMgPSBhcnJheSgpOw0KDQoNCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgndGFidG8nID0+ICR0YnRhYnRvKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KfQ0KDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIA0Kew0KCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMobGFuZygnbmVlZHBlcm1pc3Npb250bycsICdNYW5hZ2UgVG9vbEJveCcpKTsNCglyZXR1cm47DQp9DQppZiAoIGVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gbGFuZygnZXJyb3JnZXR0aW5ndGVtcGxhdGVuYW1lJyksICd0YWJ0bycgPT4gJHRidGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQoJcmV0dXJuOw0KfQ0KDQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCg0KaWYgKCBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSkgYW5kICRzZWN0aW9uICE9ICJhdXRvbGlnaHRib3giICApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IGxhbmcoJ2ludmFsaWRjb2RlJyksICd0YWJ0bycgPT4gJHRidGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQoJcmV0dXJuOw0KfQ0KDQokcGFyYW1zWyd0ZW1wbGF0ZSddID0gdHJpbSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsNCg0KaWYgKCRzZWN0aW9uID09ICJhdXRvbGlnaHRib3giKSAkcGFyYW1zWyd0ZW1wbGF0ZSddID0gImFsYl8iLiRwYXJhbXNbJ3RlbXBsYXRlJ107DQplbHNlIGlmICgkc2VjdGlvbiA9PSAidHdpdHRlcmZlZWQiKSAkcGFyYW1zWyd0ZW1wbGF0ZSddID0gInR3Zl8iLiRwYXJhbXNbJ3RlbXBsYXRlJ107DQplbHNlIGlmICgkc2VjdGlvbiA9PSAiY3N2IikgJHBhcmFtc1sndGVtcGxhdGUnXSA9ICJjc3YiLnRyaW0oJHBhcmFtc1sndHBsc2VjdGlvbiddKS4nXycuJHBhcmFtc1sndGVtcGxhdGUnXTsNCg0KLy8gY2hlY2sgaWYgdGhpcyB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0cw0KJHR4dCA9IHRyaW0oJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pKTsNCmlmKCAkdHh0ICE9ICIiICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gbGFuZygndGVtcGxhdGVleGlzdHMnKSwgJ3RhYnRvJyA9PiAkdGJ0YWJ0byk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCi8vIHNhdmUgdGVtcGxhdGUNCiR0aGlzLT5TZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddLCAkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXS5UT09MQk9YX1NFUEFSQVRPUi4kcGFyYW1zWyd0ZW1wbGF0ZWNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiRwYXJhbXNbJ3RlbXBsYXRlanMnXS4nKn0nICk7DQoNCi8vIHNhdmUgY3NzLWZpbGUNCiRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCmZ3cml0ZSgkaGFuZGxlLHRiVXRpbHM6OmV4ZWN1dGVUZW1wbGF0ZVNtYXJ0eSgkcGFyYW1zWyd0ZW1wbGF0ZWNzcyddKSk7DQpmY2xvc2UoJGhhbmRsZSk7DQoNCi8vIGNyZWF0ZSBkaXINCmlmICgkc2VjdGlvbiAhPSAidHdpdHRlcmZlZWQiKQ0KCW1rZGlyKCRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuIm1vZHVsZXMiLkRJUkVDVE9SWV9TRVBBUkFUT1IuIlRvb2xCb3giLkRJUkVDVE9SWV9TRVBBUkFUT1IuInRlbXBsYXRlcyIuRElSRUNUT1JZX1NFUEFSQVRPUi4kcGFyYW1zWyd0ZW1wbGF0ZSddKTsJDQoNCi8vIHNhdmUgcHJlZiBpbiBkYg0KJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcw0KCQkodGVtcGxhdGUsdmVyc2lvbixhYm91dCxzZWN0aW9uLGpxdWVyeSxvcHRpb25zLHZpc2libGUpDQoJCVZBTFVFUyAoPyw/LD8sPyw/LD8sMSkiOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ3RlbXBsYXRlJ10sJHZlcnNpb24sJGFib3V0LCRzZWN0aW9uLCRqcXVlcnksc2VyaWFsaXplKCRvcHRpb25zKSkpOw0KDQokcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICd0ZW1wbGF0ZWFkZGVkJywgJ3RhYnRvJyA9PiAkdGJ0YWJ0byk7DQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQ0Kew0KCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMobGFuZygnbmVlZHBlcm1pc3Npb250bycsICdNb2RpZnkgVGVtcGxhdGVzJykpOw0KCXJldHVybjsNCn0NCg0KJHRidGFidG8gPSBpc3NldCgkcGFyYW1zWyd0YWJ0byddKSA/IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0YWJ0byddKSA6ICIiOyANCiRzZWN0aW9uID0gaXNzZXQoJHBhcmFtc1snc2VjdGlvbiddKSA/IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWydzZWN0aW9uJ10pIDogJyc7DQoNCmlmKCAhKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSBvciAkcGFyYW1zWyd0ZW1wbGF0ZSddID09ICIiICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcic9PmxhbmcoJ21pc3NpbmdwYXJhbXMnKSwgJ3RhYnRvJz0+JHRidGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsJHBhcmFtcyk7DQp9DQoNCiR0ZW1wbGF0ZSA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoNCmlmICh0YlV0aWxzOjpkZWxldGVUZW1wbGF0ZSgkdGhpcywgJHRlbXBsYXRlKSkgew0KCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3RlbXBsYXRlZGVsZXRlZCcsICd0YWJ0bycgPT4gJHRidGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQplbHNlIHsNCgkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+c3RyX3JlcGxhdGUoJ1t0ZW1wbGF0ZSJdJywkdGVtcGxhdGUsJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90ZGVsZXRldGVtcGxhdGUnKSksICd0YWJ0byc9PiR0YnRhYnRvKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOw0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJHRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSkgOiAiIjsgDQokc2VjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ3NlY3Rpb24nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1snc2VjdGlvbiddKSA6ICcnOw0KJHZlcnNpb24gPSBpc3NldCgkcGFyYW1zWyd2ZXJzaW9uJ10pCT8gJHBhcmFtc1sndmVyc2lvbiddCQk6ICcnOw0KJGFib3V0CSA9IGlzc2V0KCRwYXJhbXNbJ2Fib3V0J10pIAkJPyAkcGFyYW1zWydhYm91dCddCQkJOiAnJzsNCiRqcXVlcnkJID0gaXNzZXQoJHBhcmFtc1snanF1ZXJ5J10pCQk/IChpbnQpICRwYXJhbXNbJ2pxdWVyeSddCTogMDsNCiRvcHRpb25zID0gYXJyYXkoKTsNCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCd0YWJ0bycgPT4gJHRhYnRvKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOw0KfQ0KDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIA0Kew0KCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMobGFuZygnbmVlZHBlcm1pc3Npb250bycsICdNYW5hZ2UgVG9vbEJveCcpKTsNCglyZXR1cm47DQp9DQoNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KaWYgKCFpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSBvciBlbXB0eSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApDQp7DQoJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IGxhbmcoJ2Vycm9yZ2V0dGluZ3RlbXBsYXRlbmFtZScpLCAndGFidG8nID0+ICR0YWJ0byk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCmlmICgoIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pIG9yIGVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddKSkgYW5kICRzZWN0aW9uICE9ICJhdXRvbGlnaHRib3giKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiBsYW5nKCdpbnZhbGlkY29kZScpLCAndGFidG8nID0+ICR0YWJ0byk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCmlmIChpc3NldCgkcGFyYW1zWydyZXNldGJ1dHRvbiddKSApDQp7DQoNCgkkZm4gPXRiVXRpbHM6OmdldFRwbFhNTEZpbGUoJHNlY3Rpb24sc3RyX3JlcGxhY2UoJHRoaXMtPmdldFRwbFRva2VuKCksICcnLCAkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQoJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApDQoJew0KCQkkeG1sID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQoJCWlmICghdGJVdGlsczo6aW1wb3J0VGVtcGxhdGUoJHRoaXMsICR4bWwsIHRydWUpKSB7DQoJCQkkZXJyb3JzID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7DQoJCQkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gJHRoaXMtPkxhbmcoJGVycm9yWydsYW5nJ10pLicgJy4kZXJyb3JzWydhZGRpdGlvbmFsJ10sICd0YWJ0bycgPT4gJHRhYnRvKTsNCgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0dGVtcGxhdGUnICwgJycsICRwYXJhbXMpOw0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KCWVsc2Ugew0KCQkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90cGFyc2V4bWwnKS4nICcuJGZuLCAndGFidG8nID0+ICR0YWJ0byk7DQoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0dGVtcGxhdGUnICwgJycsICRwYXJhbXMpOw0KCQlyZXR1cm47DQoJfQ0KfQ0KZWxzZQ0Kew0KCSR0cGxjb2RlCT0gaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pID8gJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10gOiAnJzsNCgkkdHBsY3NzCQk9IGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlY3NzJ10pID8gJHBhcmFtc1sndGVtcGxhdGVjc3MnXSA6ICcnOw0KCSR0cGxqcwkJPSBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZWpzJ10pID8gJHBhcmFtc1sndGVtcGxhdGVqcyddIDogJyc7DQoJJHRwbG1vYmNvZGUJPSBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZW1vYmlsZWNvbnRlbnQnXSkgPyAkcGFyYW1zWyd0ZW1wbGF0ZW1vYmlsZWNvbnRlbnQnXSA6ICcnOw0KCSR0cGxtb2Jjc3MJPSBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZW1vYmlsZWNzcyddKSA/ICRwYXJhbXNbJ3RlbXBsYXRlbW9iaWxlY3NzJ10gOiAnJzsNCgkkdHBsbW9ianMJPSBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZW1vYmlsZWpzJ10pID8gJHBhcmFtc1sndGVtcGxhdGVtb2JpbGVqcyddIDogJyc7DQoJDQoJaWYgKGlzc2V0KCRwYXJhbXNbJ3VzZV9tb2JpbGV0ZW1wbGF0ZSddKSkgJG9wdGlvbnNbJ3VzZV9tb2JpbGV0ZW1wbGF0ZSddID0gJHBhcmFtc1sndXNlX21vYmlsZXRlbXBsYXRlJ107DQoJDQoJLy8gc2F2ZSB0ZW1wbGF0ZQ0KCSR0aGlzLT5TZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddLCAkdHBsY29kZS5UT09MQk9YX1NFUEFSQVRPUi4kdHBsY3NzLlRPT0xCT1hfU0VQQVJBVE9SLiR0cGxqcy5UT09MQk9YX1NFUEFSQVRPUi4kdHBsbW9iY29kZS5UT09MQk9YX1NFUEFSQVRPUi4kdHBsbW9iY3NzLlRPT0xCT1hfU0VQQVJBVE9SLiR0cGxtb2Jqcy4nKn0nICk7DQoNCgkvLyBzYXZlIGNzcy1maWxlDQoJJHRwbGNzcyA9IHRyaW0oJHRwbGNzcyk7DQoJaWYgKCBlbXB0eSgkdHBsY3NzKSApDQoJew0KCQlAdW5saW5rKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy8nIC4gJHBhcmFtc1sndGVtcGxhdGUnXSAuICcuY3NzJyk7DQoJfQ0KCWVsc2UNCgl7DQoJCSRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnLmNzcycsJ3cnKTsNCgkJZndyaXRlKCRoYW5kbGUsdGJVdGlsczo6ZXhlY3V0ZVRlbXBsYXRlU21hcnR5KCR0cGxjc3MpKTsNCgkJZmNsb3NlKCRoYW5kbGUpOw0KCX0JDQoJLy8gc2F2ZSBjc3MtZmlsZTsNCgkkdHBsbW9iY3NzID0gdHJpbSgkdHBsbW9iY3NzKTsNCglpZiAoIGVtcHR5KCR0cGxtb2Jjc3MpICkNCgl7DQoJCUB1bmxpbmsoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycgLiAkcGFyYW1zWyd0ZW1wbGF0ZSddIC4gJ19tb2JpbGUuY3NzJyk7DQoJfQ0KCWVsc2UNCgl7DQoJCSRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICRwYXJhbXNbJ3RlbXBsYXRlJ10gLiAnX21vYmlsZS5jc3MnLCd3Jyk7DQoJCWZ3cml0ZSgkaGFuZGxlLHRiVXRpbHM6OmV4ZWN1dGVUZW1wbGF0ZVNtYXJ0eSgkdHBsbW9iY3NzKSk7DQoJCWZjbG9zZSgkaGFuZGxlKTsNCgl9DQoJDQoNCgkkcXVlcnkgPSAiVVBEQVRFICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcw0KCQkJU0VUIHZlcnNpb249PyxhYm91dD0/LHNlY3Rpb249PyxqcXVlcnk9PyxvcHRpb25zPT8NCgkJCVdIRVJFIHRlbXBsYXRlPT8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmVyc2lvbiwkYWJvdXQsJHNlY3Rpb24sJGpxdWVyeSxzZXJpYWxpemUoJG9wdGlvbnMpLCRwYXJhbXNbJ3RlbXBsYXRlJ10pKTsNCgkNCgkvLyBEYXRlaWVuIGzDtnNjaGVuDQoJaWYgKGlzc2V0KCRwYXJhbXNbJ2RlbGZpbGUnXSkpIHsNCgkJZm9yZWFjaCgkcGFyYW1zWydkZWxmaWxlJ10gYXMgJGZpbGUpIHsNCgkJCXVubGluaygkY29uZmlnWydyb290X3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiJtb2R1bGVzIi5ESVJFQ1RPUllfU0VQQVJBVE9SLiJUb29sQm94Ii5ESVJFQ1RPUllfU0VQQVJBVE9SLiJ0ZW1wbGF0ZXMiLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhcmFtc1sndGVtcGxhdGUnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlKTsNCgkJfQ0KCX0NCgkNCgkvLyBjb21iaW5lZCBzdHlsZXNoZWV0cyB1bmQgamF2YXNjcmlwdCBsw7ZzY2hlbg0KCSRtYXNrID0gIHN0cl9yZXBsYWNlKCIvIixESVJFQ1RPUllfU0VQQVJBVE9SLCRjb25maWdbJ3Jvb3RfcGF0aCddLiIvdG1wL2NhY2hlL1Rvb2xCb3hfY29tYmluZWQqIik7DQoJYXJyYXlfbWFwKCAidW5saW5rIiwgZ2xvYiggJG1hc2sgKSApOw0KCQ0KCWlmICgkc2VjdGlvbiA9PSAidHdpdHRlcmZlZWQiKSB7DQoJCSRtYXNrID0gIHN0cl9yZXBsYWNlKCIvIixESVJFQ1RPUllfU0VQQVJBVE9SLCRjb25maWdbJ3Jvb3RfcGF0aCddLiIvdG1wL2NhY2hlL1Rvb2xCb3hfdHdpdHRlcmZlZWQqIik7DQoJCWFycmF5X21hcCggInVubGluayIsIGdsb2IoICRtYXNrICkgKTsNCgl9DQp9DQoJDQppZiAoIGlzc2V0KCRwYXJhbXNbJ2FwcGx5YnV0dG9uJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ3Jlc2V0YnV0dG9uJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RlbXBsYXRlJyA9PiAkcGFyYW1zWyd0ZW1wbGF0ZSddLCAnbW9kZScgPT4gImVkaXQiLCAndGFidG8nID0+ICR0YWJ0bywgJ21vZHVsZV9tZXNzYWdlJyA9PiAkdGhpcy0+TGFuZygndGVtcGxhdGV1cGRhdGVkJykpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdlZGl0dGVtcGxhdGUnLCAnJywgJHBhcmFtcyk7DQp9DQplbHNlDQp7DQoJJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAndGVtcGxhdGV1cGRhdGVkJywgJ3RhYnRvJyA9PiAkdGFidG8pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_exporttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCggJGdDbXMgKSApIGV4aXQoKTsKCiR0YnRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSkgOiAiIjsgCiRzZWN0aW9uID0gaXNzZXQoJHBhcmFtc1snc2VjdGlvbiddKSA/IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWydzZWN0aW9uJ10pIDogJyc7CgppZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICkKewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycyhsYW5nKCduZWVkcGVybWlzc2lvbnRvJywgJ01hbmFnZSBUb29sQm94JykpOwoJcmV0dXJuOwp9CgppZiggIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkKewoJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InPT4gbGFuZygnbWlzc2luZ3BhcmFtcycpLCAndGFidG8nID0+ICR0YnRhYnRvKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsKCXJldHVybjsKfQoKaWYgKCF0YlV0aWxzOjpleHBvcnRUZW1wbGF0ZSgkdGhpcywgJHBhcmFtc1sndGVtcGxhdGUnXSkpIHsKCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygkZXJyb3JbJ2xhbmcnXSkuJyAnLiRlcnJvclsnYWRkaXRpb25hbCddLCAndGFidG8nID0+ICR0YWJ0byk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7Cn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_importtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwppZiAoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICkgZXhpdDsKCiR0YWJ0byA9IGlzc2V0KCRwYXJhbXNbJ3RhYnRvJ10pID8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pIDogIiI7IAokc2VjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ3NlY3Rpb24nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1snc2VjdGlvbiddKSA6ICcnOwokb3ZlcndyaXRlID0gaXNzZXQoJHBhcmFtc1snb3ZlcndyaXRlJ10pID8gKGJvb2wpJHBhcmFtc1snb3ZlcndyaXRlJ10gOiBmYWxzZTsKCiRmaWVsZE5hbWUgPSAkaWQgLiAiaW1wb3J0eG1sIjsKaWYgKCAhaXNzZXQoJF9GSUxFU1skZmllbGROYW1lXSkgfHwgIWlzc2V0KCRfRklMRVMpIHx8ICFpc19hcnJheSgkX0ZJTEVTWyRmaWVsZE5hbWVdKSB8fCAhJF9GSUxFU1skZmllbGROYW1lXVsnbmFtZSddKQp7CgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gbGFuZygnbWlzc2luZ3BhcmFtcycpLCAndGFidG8nID0+ICR0YWJ0byk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7CglyZXR1cm47Cn0KZWxzZSB7CgkvLyBub3JtYWxpemUgdGhlIGZpbGUgdmFyaWFibGUKCSRmaWxlID0gJF9GSUxFU1skZmllbGROYW1lXTsKCQoJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlWyd0bXBfbmFtZSddKTsKCWlmICghdGJVdGlsczo6aW1wb3J0VGVtcGxhdGUoJHRoaXMsICR4bWwsICRvdmVyd3JpdGUpKSB7CgkJJGVycm9yID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7CgkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+ICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ10sICd0YWJ0bycgPT4gJHRhYnRvKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgkJcmV0dXJuOwoJfQoJCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICd0ZW1wbGF0ZWltcG9ydCcsICd0YWJ0bycgPT4gJHRhYnRvKSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/action.do_logUpdater.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KTW9kdWxlOiBUb29sQm94DQpBdXRob3I6IEx1a2FzIEJsYXR0ZXINCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCg0KLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbg0KaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSBleGl0Ow0KDQokdGJTbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCg0KJGxvZ0ZpbGUJPSBpc3NldCgkcGFyYW1zWydmJ10pID8gYmFzZTY0X2RlY29kZSgkcGFyYW1zWydmJ10pIDogJyc7DQoka2V5CQk9IGlzc2V0KCRwYXJhbXNbJ2snXSkgPyBiYXNlNjRfZGVjb2RlKCRwYXJhbXNbJ2snXSkgOiAnJzsNCiRoYXNoCQk9IGlzc2V0KCRwYXJhbXNbJ2gnXSkgPyAkcGFyYW1zWydoJ10gOiAnJzsNCiRsaW5lcyAJCT0gaXNzZXQoJHBhcmFtc1snbCddKSA/ICRwYXJhbXNbJ2wnXSA6ICcyMCc7DQoNCiRwYXJhbXMgPSBhcnJheSgnbG9nRmlsZScgPT4gJGxvZ0ZpbGUsICdrZXknID0+ICRrZXkpOw0KJHNhbHQgPSAidGJUZGlXVmFkbGlsZXNsY2kiOyANCiRoYXNoMiA9IGJ0VG9vbHM6OmdldFBhcmFtc0hhc2goJHBhcmFtcywgJHNhbHQpOw0KDQppZiAoJGhhc2ggIT0gJGhhc2gyKSB7DQoJZWNobyAicGFyYW1ldGVyIHd1cmRlbiBtYW5pcHVsaWVydCI7CQ0KfQ0KDQplY2hvIHRiTG9nVXBkYXRlcjo6Z2V0TG9nTGluZXMoJGxvZ0ZpbGUsICRrZXksICRsaW5lcyk7DQoNCmV4aXQoMCk7DQo=]]></data>
	</file>
	<file>
	  <filename>/action.do_moduleops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbgppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0OwppZiAoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpICkgZXhpdDsKCiR0YWJ0byA9IGlzc2V0KCRwYXJhbXNbJ3RhYnRvJ10pID8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RhYnRvJ10pIDogIiI7IAokbW9kZSAgPSBpc3NldCgkcGFyYW1zWydtb2RlJ10pID8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ21vZGUnXSkgOiAnJzsKCmlmICghJG1vZGUpIHsKCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiBsYW5nKCdtaXNzaW5ncGFyYW1zJykgLiAnIFwnbW9kZVwnJywgJ3RhYnRvJyA9PiAkdGFidG8pOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsICRwYXJhbXMpOwoJcmV0dXJuOwp9CgppZiAoJG1vZGUgPT0gImltcG9ydCIpIHsKCgkkZmllbGROYW1lID0gJGlkIC4gImltcG9ydHhtbCI7CglpZiAoICFpc3NldCgkX0ZJTEVTWyRmaWVsZE5hbWVdKSB8fCAhaXNzZXQoJF9GSUxFUykgfHwgIWlzX2FycmF5KCRfRklMRVNbJGZpZWxkTmFtZV0pIHx8ICEkX0ZJTEVTWyRmaWVsZE5hbWVdWyduYW1lJ10pCgl7CgkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IGxhbmcoJ21pc3NpbmdwYXJhbXMnKSwgJ3RhYnRvJyA9PiAkdGFidG8pOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsKCQlyZXR1cm47Cgl9CgllbHNlIHsKCQkvLyBub3JtYWxpemUgdGhlIGZpbGUgdmFyaWFibGUKCQkkZmlsZSA9ICRfRklMRVNbJGZpZWxkTmFtZV07CgoJCSR4bWwgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZVsndG1wX25hbWUnXSk7CgkJaWYgKCF0YlV0aWxzOjppbXBvcnRUZW1wbGF0ZSgkdGhpcywgJHhtbCwgJG92ZXJ3cml0ZSkpIHsKCQkJJGVycm9yID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7CgkJCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygkZXJyb3JbJ2xhbmcnXSkuJyAnLiRlcnJvclsnYWRkaXRpb25hbCddLCAndGFidG8nID0+ICR0YWJ0byk7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsKCQkJcmV0dXJuOwoJCX0KCgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsIGFycmF5KCd0YWJfbWVzc2FnZSc9PiAndGVtcGxhdGVpbXBvcnQnLCAndGFidG8nID0+ICR0YWJ0bykpOwoJfQp9CmVsc2UgaWYgKCRtb2RlID09ICJleHBvcnQiKSB7CgkkbSA9IGlzc2V0KCRwYXJhbXNbJ20nXSkgPyAkcGFyYW1zWydtJ10gOiAnJzsKCQoJJG1vZCA9IG5ldyB0Yk1vZHVsZU9wcygkbSk7CgkkbW9kdWxlID0gJG1vZC0+Z2V0Q3VycmVudE1vZHVsZSgpOwoJaWYoIWlzX29iamVjdCgkbW9kdWxlKSl7CgkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IGxhbmcoJ2Vycm9yX3Vua25vd25wYXJhbScpIC4gJyBcJ209Jy4kbW9kdWxlLidcJycsICd0YWJ0bycgPT4gJHRhYnRvKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgkJcmV0dXJuOwoJfQoJCgoJJHhtbCA9ICRtb2QtPkNyZWF0ZVhNTFBhY2thZ2UoKTsKCQoKCS8vIHNlbmQgdGhlIGZpbGUKCW9iX2VuZF9jbGVhbigpOwoJb2JfZW5kX2NsZWFuKCk7CgloZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKCWhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9mb3JjZS1kb3dubG9hZCcpOwoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLiRtb2R1bGUtPkdldE5hbWUoKS4nLScuJG1vZHVsZS0+R2V0VmVyc2lvbigpLictcHJlZmVyZW5jZXMueG1sJyk7CgllY2hvICR4bWw7CglleGl0KCk7CgkKCQoJCgkKCQoJCgkKfQplbHNlIHsKCSRwYXJhbXMgPSBhcnJheSgnbW9kdWxlX2Vycm9yJyA9PiAkdGhpcy0+TGFuZygnZXJyb3JfdW5rbm93bnBhcmFtJykgLiAnIFwnbW9kZT0nLiRtb2RlLidcJycsICd0YWJ0bycgPT4gJHRhYnRvKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nICwgJHJldHVybmlkLCAkcGFyYW1zKTsKCXJldHVybjsKfQ==]]></data>
	</file>
	<file>
	  <filename>/action.do_upload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhY21zbXMoKSApIGV4aXQoKTsNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSBleGl0Ow0KDQpjbGFzcyBxcVVwbG9hZGVkRmlsZVhociB7DQogICAgLyoqDQogICAgICogU2F2ZSB0aGUgZmlsZSB0byB0aGUgc3BlY2lmaWVkIHBhdGgNCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gVFJVRSBvbiBzdWNjZXNzDQogICAgICovDQogICAgZnVuY3Rpb24gc2F2ZSgkcGF0aCkgeyAgICANCiAgICAgICAgJGlucHV0ID0gZm9wZW4oInBocDovL2lucHV0IiwgInIiKTsNCiAgICAgICAgJHRlbXAgPSB0bXBmaWxlKCk7DQogICAgICAgICRyZWFsU2l6ZSA9IHN0cmVhbV9jb3B5X3RvX3N0cmVhbSgkaW5wdXQsICR0ZW1wKTsNCiAgICAgICAgZmNsb3NlKCRpbnB1dCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHJlYWxTaXplICE9ICR0aGlzLT5nZXRTaXplKCkpeyAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkdGFyZ2V0ID0gZm9wZW4oJHBhdGgsICJ3Iik7ICAgICAgICANCiAgICAgICAgZnNlZWsoJHRlbXAsIDAsIFNFRUtfU0VUKTsNCiAgICAgICAgc3RyZWFtX2NvcHlfdG9fc3RyZWFtKCR0ZW1wLCAkdGFyZ2V0KTsNCiAgICAgICAgZmNsb3NlKCR0YXJnZXQpOw0KICAgICAgICANCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGdldE5hbWUoKSB7DQogICAgICAgIHJldHVybiAkX0dFVFsncXFmaWxlJ107DQogICAgfQ0KICAgIGZ1bmN0aW9uIGdldFNpemUoKSB7DQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsiQ09OVEVOVF9MRU5HVEgiXSkpew0KICAgICAgICAgICAgcmV0dXJuIChpbnQpJF9TRVJWRVJbIkNPTlRFTlRfTEVOR1RIIl07ICAgICAgICAgICAgDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdHZXR0aW5nIGNvbnRlbnQgbGVuZ3RoIGlzIG5vdCBzdXBwb3J0ZWQuJyk7DQogICAgICAgIH0gICAgICANCiAgICB9ICAgDQp9DQoNCi8qKg0KICogSGFuZGxlIGZpbGUgdXBsb2FkcyB2aWEgcmVndWxhciBmb3JtIHBvc3QgKHVzZXMgdGhlICRfRklMRVMgYXJyYXkpDQogKi8NCmNsYXNzIHFxVXBsb2FkZWRGaWxlRm9ybSB7ICANCiAgICAvKioNCiAgICAgKiBTYXZlIHRoZSBmaWxlIHRvIHRoZSBzcGVjaWZpZWQgcGF0aA0KICAgICAqIEByZXR1cm4gYm9vbGVhbiBUUlVFIG9uIHN1Y2Nlc3MNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzYXZlKCRwYXRoKSB7DQogICAgICAgIGlmKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1sncXFmaWxlJ11bJ3RtcF9uYW1lJ10sICRwYXRoKSl7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGdldE5hbWUoKSB7DQogICAgICAgIHJldHVybiAkX0ZJTEVTWydxcWZpbGUnXVsnbmFtZSddOw0KICAgIH0NCiAgICBmdW5jdGlvbiBnZXRTaXplKCkgew0KICAgICAgICByZXR1cm4gJF9GSUxFU1sncXFmaWxlJ11bJ3NpemUnXTsNCiAgICB9DQp9DQoNCmNsYXNzIHFxRmlsZVVwbG9hZGVyIHsNCiAgICBwcml2YXRlICRhbGxvd2VkRXh0ZW5zaW9ucyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkc2l6ZUxpbWl0ID0gMTA0ODU3NjA7DQogICAgcHJpdmF0ZSAkZmlsZTsNCg0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRhbGxvd2VkRXh0ZW5zaW9ucyA9IGFycmF5KCksICRzaXplTGltaXQgPSAxMDQ4NTc2MCl7ICAgICAgICANCiAgICAgICAgJGFsbG93ZWRFeHRlbnNpb25zID0gYXJyYXlfbWFwKCJzdHJ0b2xvd2VyIiwgJGFsbG93ZWRFeHRlbnNpb25zKTsNCiAgICAgICAgICAgIA0KICAgICAgICAkdGhpcy0+YWxsb3dlZEV4dGVuc2lvbnMgPSAkYWxsb3dlZEV4dGVuc2lvbnM7ICAgICAgICANCiAgICAgICAgJHRoaXMtPnNpemVMaW1pdCA9ICRzaXplTGltaXQ7DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+Y2hlY2tTZXJ2ZXJTZXR0aW5ncygpOyAgICAgICANCg0KICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3FxZmlsZSddKSkgew0KICAgICAgICAgICAgJHRoaXMtPmZpbGUgPSBuZXcgcXFVcGxvYWRlZEZpbGVYaHIoKTsNCiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfRklMRVNbJ3FxZmlsZSddKSkgew0KICAgICAgICAgICAgJHRoaXMtPmZpbGUgPSBuZXcgcXFVcGxvYWRlZEZpbGVGb3JtKCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+ZmlsZSA9IGZhbHNlOyANCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrU2VydmVyU2V0dGluZ3MoKXsgICAgICAgIA0KICAgICAgICAkcG9zdFNpemUgPSAkdGhpcy0+dG9CeXRlcyhpbmlfZ2V0KCdwb3N0X21heF9zaXplJykpOw0KICAgICAgICAkdXBsb2FkU2l6ZSA9ICR0aGlzLT50b0J5dGVzKGluaV9nZXQoJ3VwbG9hZF9tYXhfZmlsZXNpemUnKSk7IA0KDQogICAgICAgIA0KLy8gICAgICAgIA0KLy8gICAgICAgIGlmICgkcG9zdFNpemUgPCAkdGhpcy0+c2l6ZUxpbWl0IHx8ICR1cGxvYWRTaXplIDwgJHRoaXMtPnNpemVMaW1pdCl7DQovLyAgICAgICAgICAgICRzaXplID0gbWF4KDEsICR0aGlzLT5zaXplTGltaXQgLyAxMDI0IC8gMTAyNCkgLiAnTSc7ICAgICAgICAgICAgIA0KLy8gICAgICAgICAgICBkaWUoInsnZXJyb3InOidpbmNyZWFzZSBwb3N0X21heF9zaXplIGFuZCB1cGxvYWRfbWF4X2ZpbGVzaXplIHRvICRzaXplJ30iKTsgICAgDQovLyAgICAgICAgfSAgICAgICAgDQogICAgfQ0KICAgIA0KICAgIHByaXZhdGUgZnVuY3Rpb24gdG9CeXRlcygkc3RyKXsNCiAgICAgICAgJHZhbCA9IHRyaW0oJHN0cik7DQogICAgICAgICRsYXN0ID0gc3RydG9sb3dlcigkc3RyW3N0cmxlbigkc3RyKS0xXSk7DQogICAgICAgIHN3aXRjaCgkbGFzdCkgew0KICAgICAgICAgICAgY2FzZSAnZyc6ICR2YWwgKj0gMTAyNDsNCiAgICAgICAgICAgIGNhc2UgJ20nOiAkdmFsICo9IDEwMjQ7DQogICAgICAgICAgICBjYXNlICdrJzogJHZhbCAqPSAxMDI0OyAgICAgICAgDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICR2YWw7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIFJldHVybnMgYXJyYXkoJ3N1Y2Nlc3MnPT50cnVlKSBvciBhcnJheSgnZXJyb3InPT4nZXJyb3IgbWVzc2FnZScpDQogICAgICovDQogICAgZnVuY3Rpb24gaGFuZGxlVXBsb2FkKCR1cGxvYWREaXJlY3RvcnksICRyZXBsYWNlT2xkRmlsZSA9IEZBTFNFKXsNCiAgICAgICAgaWYgKCFpc193cml0YWJsZSgkdXBsb2FkRGlyZWN0b3J5KSl7DQogICAgICAgICAgICByZXR1cm4gYXJyYXkoJ2Vycm9yJyA9PiAiU2VydmVyIGVycm9yLiBVcGxvYWQgZGlyZWN0b3J5IGlzbid0IHdyaXRhYmxlLiIpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZiAoISR0aGlzLT5maWxlKXsNCiAgICAgICAgICAgIHJldHVybiBhcnJheSgnZXJyb3InID0+ICdObyBmaWxlcyB3ZXJlIHVwbG9hZGVkLicpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkc2l6ZSA9ICR0aGlzLT5maWxlLT5nZXRTaXplKCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHNpemUgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdlcnJvcicgPT4gJ0ZpbGUgaXMgZW1wdHknKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaWYgKCRzaXplID4gJHRoaXMtPnNpemVMaW1pdCkgew0KICAgICAgICAgICAgcmV0dXJuIGFycmF5KCdlcnJvcicgPT4gJ0ZpbGUgaXMgdG9vIGxhcmdlJyk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRwYXRoaW5mbyA9IHBhdGhpbmZvKCR0aGlzLT5maWxlLT5nZXROYW1lKCkpOw0KICAgICAgICAkZmlsZW5hbWUgPSAkcGF0aGluZm9bJ2ZpbGVuYW1lJ107DQogICAgICAgIC8vJGZpbGVuYW1lID0gbWQ1KHVuaXFpZCgpKTsNCiAgICAgICAgJGV4dCA9ICRwYXRoaW5mb1snZXh0ZW5zaW9uJ107DQoNCiAgICAgICAgaWYoJHRoaXMtPmFsbG93ZWRFeHRlbnNpb25zICYmICFpbl9hcnJheShzdHJ0b2xvd2VyKCRleHQpLCAkdGhpcy0+YWxsb3dlZEV4dGVuc2lvbnMpKXsNCiAgICAgICAgICAgICR0aGVzZSA9IGltcGxvZGUoJywgJywgJHRoaXMtPmFsbG93ZWRFeHRlbnNpb25zKTsNCiAgICAgICAgICAgIHJldHVybiBhcnJheSgnZXJyb3InID0+ICdGaWxlIGhhcyBhbiBpbnZhbGlkIGV4dGVuc2lvbiwgaXQgc2hvdWxkIGJlIG9uZSBvZiAnLiAkdGhlc2UgLiAnLicpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZighJHJlcGxhY2VPbGRGaWxlKXsNCiAgICAgICAgICAgIC8vLyBkb24ndCBvdmVyd3JpdGUgcHJldmlvdXMgZmlsZXMgdGhhdCB3ZXJlIHVwbG9hZGVkDQogICAgICAgICAgICB3aGlsZSAoZmlsZV9leGlzdHMoJHVwbG9hZERpcmVjdG9yeSAuICRmaWxlbmFtZSAuICcuJyAuICRleHQpKSB7DQogICAgICAgICAgICAgICAgJGZpbGVuYW1lIC49IHJhbmQoMTAsIDk5KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaWYgKCR0aGlzLT5maWxlLT5zYXZlKCR1cGxvYWREaXJlY3RvcnkgLiAkZmlsZW5hbWUgLiAnLicgLiAkZXh0KSl7DQogICAgICAgICAgICByZXR1cm4gYXJyYXkoJ3N1Y2Nlc3MnPT50cnVlKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHJldHVybiBhcnJheSgnZXJyb3InPT4gJ0NvdWxkIG5vdCBzYXZlIHVwbG9hZGVkIGZpbGUuJyAuDQogICAgICAgICAgICAgICAgJ1RoZSB1cGxvYWQgd2FzIGNhbmNlbGxlZCwgb3Igc2VydmVyIGVycm9yIGVuY291bnRlcmVkJyk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgfSAgICANCn0NCg0KLy8gbGlzdCBvZiB2YWxpZCBleHRlbnNpb25zLCBleC4gYXJyYXkoImpwZWciLCAieG1sIiwgImJtcCIpDQokYWxsb3dlZEV4dGVuc2lvbnMgPSBhcnJheSgianBlZyIsImpwZyIsImdpZiIsInhtbCIsImpzIiwiY3NzIiwicG5nIik7DQovLyBtYXggZmlsZSBzaXplIGluIGJ5dGVzDQokc2l6ZUxpbWl0ID0gMTAgKiAxMDI0ICogMTAyNDsNCg0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KDQokdGVtcGxhdGVwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJF9HRVRbJ3RlbXBsYXRlaWQnXSk7DQoNCiR0ZW1wbGF0ZSA9IGlzc2V0KCR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddKSA/ICR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZSddIDogInVua25vd24iOw0KDQokdXBsb2FkcGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuIm1vZHVsZXMiLkRJUkVDVE9SWV9TRVBBUkFUT1IuIlRvb2xCb3giLkRJUkVDVE9SWV9TRVBBUkFUT1IuInRlbXBsYXRlcyIuRElSRUNUT1JZX1NFUEFSQVRPUi4kdGVtcGxhdGUuRElSRUNUT1JZX1NFUEFSQVRPUjsNCg0KDQokdXBsb2FkZXIgPSBuZXcgcXFGaWxlVXBsb2FkZXIoJGFsbG93ZWRFeHRlbnNpb25zLCAkc2l6ZUxpbWl0KTsNCiRyZXN1bHQgPSAkdXBsb2FkZXItPmhhbmRsZVVwbG9hZCgkdXBsb2FkcGF0aCk7DQoNCi8vIHRvIHBhc3MgZGF0YSB0aHJvdWdoIGlmcmFtZSB5b3Ugd2lsbCBuZWVkIHRvIGVuY29kZSBhbGwgaHRtbCB0YWdzDQplY2hvIGh0bWxzcGVjaWFsY2hhcnMoanNvbl9lbmNvZGUoJHJlc3VsdCksIEVOVF9OT1FVT1RFUyk7DQoNCmV4aXQoMCk7]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbg0KaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSBleGl0Ow0KDQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCiR0YnRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSkgOiAiIjsgDQokc2VjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ3NlY3Rpb24nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1snc2VjdGlvbiddKSA6ICcnOw0KJHRwbHNlY3Rpb24gPSBpc3NldCgkcGFyYW1zWyd0cGxzZWN0aW9uJ10pID8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3RwbHNlY3Rpb24nXSkgOiAnJzsNCg0KJHRlbXBsYXRlbmFtZSA9IGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pID8gc3RyX3JlcGxhY2UoYXJyYXkoImFsYl8iLCJ0d2ZfIiksIiIsJHBhcmFtc1sndGVtcGxhdGUnXSkgOiAnJzsNCiR0aGVtZU9iamVjdCA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOyAvLyAgJiAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ107DQoNCmlmKCAhaXNzZXQoJHBhcmFtc1snbW9kZSddKSApDQp7DQoJJHBhcmFtc1snbW9kdWxlX2Vycm9yJ10gPSBsYW5nKCdtaXNzaW5ncGFyYW1zJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywnJywkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCmlmKCAkcGFyYW1zWydtb2RlJ10gPT0gJ3N3aXRjaGFjdGl2ZScgKQ0Kew0KCSRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdG9vbGJveF90ZW1wbGF0ZXByb3BzIFNFVCB2aXNpYmxlID0gdmlzaWJsZV4xIFdIRVJFIHRlbXBsYXRlaWQgPSA/IjsNCgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyd0ZW1wbGF0ZWlkJ10pKTsNCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndGFidG8nID0+ICR0YWJ0bykpOw0KCXJldHVybjsNCn0NCg0KJGNvbnRlbnRzID0gIiI7DQokdGVtcGxhdGVwcm9wcyA9IGFycmF5KCd0ZW1wbGF0ZWlkJz0+MCwgJ3ZlcnNpb24nPT4iMS4wIiwgJ2Fib3V0Jz0+IiIsICdzZWN0aW9uJz0+JHNlY3Rpb24sICd0cGxzZWN0aW9uJyA9PiAkdHBsc2VjdGlvbiwgJ2pxdWVyeScgPT4gMCwgJ2pxdWVyeV9vd24nID0+IDApOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZGUnLCRwYXJhbXNbJ21vZGUnXSk7DQoNCmlmKCAkcGFyYW1zWydtb2RlJ10gPT0gJ2FkZCcgKQ0Kew0KCSRzbWFydHktPmFzc2lnbignbW9kZScsICdhZGQnKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3RlbXBsYXRlJywgIiIsIDQwICkpOw0KCWlmKCBpc3NldCgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pICYmICRwYXJhbXNbJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pOw0KCX0NCglpZiggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJyApDQoJew0KCQkkY29udGVudHMgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkcGFyYW1zWyd0ZW1wbGF0ZSddKTsNCgkJJHRlbXBsYXRlcHJvcHNbJ3ZlcnNpb24nXSA9ICIxLjAiOw0KCQkNCgl9DQoNCgkkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd2ZXJzaW9uJywgJHRlbXBsYXRlcHJvcHNbJ3ZlcnNpb24nXSkgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnc2VjdGlvbicsICR0ZW1wbGF0ZXByb3BzWydzZWN0aW9uJ10pIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RwbHNlY3Rpb24nLCAkdGVtcGxhdGVwcm9wc1sndHBsc2VjdGlvbiddKS4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RhYnRvJywgJHRidGFidG8pIA0KCSk7DQp9DQplbHNlIHsNCglpZiggIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICkgew0KCQkkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9IGxhbmcoJ21pc3NpbmdwYXJhbXMnKTsNCgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywnJywkcGFyYW1zKTsNCgkJcmV0dXJuOw0KCX0NCgkkc21hcnR5LT5hc3NpZ24oJ21vZGUnLCAnZWRpdCcpOw0KCSRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsICRwYXJhbXMpKTsNCgkNCgkkc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsJHRlbXBsYXRlbmFtZSk7DQoJJGNvbnRlbnRzID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkcGFyYW1zWyd0ZW1wbGF0ZSddKTsNCg0KCSRzZWN0aW9uID0gJHRlbXBsYXRlcHJvcHNbJ3NlY3Rpb24nXTsNCgkNCgkkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZWlkJywgJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXSkgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndmVyc2lvbicsICR0ZW1wbGF0ZXByb3BzWyd2ZXJzaW9uJ10pIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2Fib3V0JywgJHRlbXBsYXRlcHJvcHNbJ2Fib3V0J10pIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3NlY3Rpb24nLCAkdGVtcGxhdGVwcm9wc1snc2VjdGlvbiddKSAuDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0cGxzZWN0aW9uJywgJHRlbXBsYXRlcHJvcHNbJ3RwbHNlY3Rpb24nXSkgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndGFidG8nLCAkdGJ0YWJ0bykgDQoJKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCR0aGlzKTsNCiRzbWFydHktPmFzc2lnbignc2VjdGlvbicsJHRlbXBsYXRlcHJvcHNbJ3NlY3Rpb24nXSk7DQokc21hcnR5LT5hc3NpZ24oInRlbXBsYXRlaWQiLCR0ZW1wbGF0ZXByb3BzWyd0ZW1wbGF0ZWlkJ10pOw0KJHNtYXJ0eS0+YXNzaWduKCJzZWN0aW9uIiwkdGVtcGxhdGVwcm9wc1snc2VjdGlvbiddKTsNCiRzbWFydHktPmFzc2lnbignanF1ZXJ5X293bicsJHRlbXBsYXRlcHJvcHNbJ2pxdWVyeV9vd24nXSkgOw0KDQokY29udGVudHNjb2RlID0gZXhwbG9kZShUT09MQk9YX1NFUEFSQVRPUiwgJGNvbnRlbnRzKTsNCg0KJGh0bWxjb2RlCQk9IGlzc2V0KCRjb250ZW50c2NvZGVbMF0pID8gJGNvbnRlbnRzY29kZVswXSA6ICIiOw0KJGNzc2NvZGUgCQk9IGlzc2V0KCRjb250ZW50c2NvZGVbMV0pID8gJGNvbnRlbnRzY29kZVsxXSA6ICIiOw0KJGpzY29kZSAJCT0gaXNzZXQoJGNvbnRlbnRzY29kZVsyXSkgPyAkY29udGVudHNjb2RlWzJdIDogIiI7DQokaHRtbG1vYmlsZWNvZGUJPSBpc3NldCgkY29udGVudHNjb2RlWzNdKSA/ICRjb250ZW50c2NvZGVbM10gOiAiIjsNCiRjc3Ntb2JpbGVjb2RlIAk9IGlzc2V0KCRjb250ZW50c2NvZGVbNF0pID8gJGNvbnRlbnRzY29kZVs0XSA6ICIiOw0KJGpzbW9iaWxlY29kZSAJPSBpc3NldCgkY29udGVudHNjb2RlWzVdKSA/IHRyaW0oJGNvbnRlbnRzY29kZVs1XSwiKn0iKSA6ICIiOw0KDQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfanF1ZXJ5JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2pxdWVyeScsJzEnLCR0ZW1wbGF0ZXByb3BzWydqcXVlcnknXSwnJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF91c2VfbW9iaWxldGVtcGxhdGUnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwndXNlX21vYmlsZXRlbXBsYXRlJywnMScsaXNzZXQoJHRlbXBsYXRlcHJvcHNbJ3VzZV9tb2JpbGV0ZW1wbGF0ZSddKSA/ICR0ZW1wbGF0ZXByb3BzWyd1c2VfbW9iaWxldGVtcGxhdGUnXSA6IDAsJ2lkPSJ1c2VfbW9iaWxldGVtcGxhdGUiJykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlJywgJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEgKCRpZCwgJGh0bWxjb2RlLCAndGVtcGxhdGVjb250ZW50JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdtb2JpbGV0ZW1wbGF0ZScsICR0aGlzLT5DcmVhdGVTeW50YXhBcmVhICgkaWQsICRodG1sbW9iaWxlY29kZSwgJ3RlbXBsYXRlbW9iaWxlY29udGVudCcpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZWNzcycsICR0aGlzLT5DcmVhdGVTeW50YXhBcmVhICgkaWQsICRjc3Njb2RlLCAndGVtcGxhdGVjc3MnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbW9iaWxlY3NzJywgJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEgKCRpZCwgJGNzc21vYmlsZWNvZGUsICd0ZW1wbGF0ZW1vYmlsZWNzcycpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZWpzJywgJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEgKCRpZCwgJGpzY29kZSwgJ3RlbXBsYXRlanMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbW9iaWxlanMnLCAkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSAoJGlkLCAkanNtb2JpbGVjb2RlLCAndGVtcGxhdGVtb2JpbGVqcycpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FwcGx5JywkcGFyYW1zWydtb2RlJ10gPT0gJ2FkZCcgPyAnJyA6ICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseWJ1dHRvbicsICR0aGlzLT5MYW5nKCdhcHBseScpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsNCiRzbWFydHktPmFzc2lnbigncmVzZXQnLCRwYXJhbXNbJ21vZGUnXSAhPSAnYWRkJyAmJiBmaWxlX2V4aXN0cyhkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ1Rvb2xCb3gtdHBsLScuJHRlbXBsYXRlcHJvcHNbJ3NlY3Rpb24nXS4nLScuJHRlbXBsYXRlbmFtZS4nLnhtbCcpID8gJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAncmVzZXRidXR0b24nLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbCcpLCAnJywgJycsICR0aGlzLT5MYW5nKCdyZXNldG9yaWdpbmFsd2FybmluZycpKSA6ICcnKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KDQoNCg0KJHJvd2FycmF5ID0gYXJyYXkoKTsNCmlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSkgew0KDQoJJGRpciA9ICIuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzLyIgLiAkcGFyYW1zWyd0ZW1wbGF0ZSddOw0KCSRkaXIgPSBpc19kaXIoJGRpcikgPyAkZGlyIDogIi4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvIiAuIHN0cnRvbG93ZXIoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQoJJGZpbGVzID0gdGJVdGlsczo6Z2V0Rm9sZGVyRmlsZXMoJGRpciwgIi8iKTsNCgkNCglmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJDQoJCSRyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCgkJJHJvdy0+ZXh0CQk9ICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9Ub29sQm94L2dldEljb24ucGhwP2V4dD0nLiRmaWxlWydleHQnXS4nIiBhbHQ9IicuJGZpbGVbJ2V4dCddLiciIC8+ICc7DQoJCSRyb3ctPm5hbWUJCT0gJGZpbGVbJ25hbWUnXTsNCgkJJHJvdy0+bGluawkJPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy8nLiRwYXJhbXNbJ3RlbXBsYXRlJ10uJy8nLiRmaWxlWyduYW1lJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGZpbGVbJ25hbWUnXS4nPC9hPic7DQoJCSRyb3ctPnNpemUJCT0gJGZpbGVbJ3NpemUnXTsNCgkJJHJvdy0+cmF3c2l6ZQk9ICRmaWxlWydyYXdzaXplJ107DQoJCSRyb3ctPmFjdGlvbgk9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnZGVsZmlsZVtdJywkZmlsZVsnbmFtZSddLCcnLCcnKTsNCgkJYXJyYXlfcHVzaCAoJHJvd2FycmF5LCAkcm93KTsNCgl9DQoJDQoJaWYgKCFjb3VudCgkcm93YXJyYXkpKSB7DQoJCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJJHJvdy0+bmFtZSA9ICR0aGlzLT5MYW5nKCdub19maWxlcycpOw0KCQkkcm93LT5leHQgID0gIiI7DQoJCSRyb3ctPmxpbmsgPSAkcm93LT5uYW1lOw0KCQkkcm93LT5zaXplID0gIiI7DQoJCSRyb3ctPnJhd3NpemUgPSAiIjsNCgkJJHJvdy0+YWN0aW9uID0gIiI7DQoJCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJfQ0KCQ0KCQ0KfQ0KJHNtYXJ0eS0+YXNzaWduKCd0cGxmaWxlcycsJHJvd2FycmF5KTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ZpbGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZmlsZScpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3NpemUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfc2l6ZScpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2RlbGV0ZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9kZWxldGUnKSk7DQoNCg0KLy8gVXBsb2FkIHNldHRpbmdzDQokcGF0dGVybiA9ICcvPGltZy4qP3NyYz0iKC4rPykiKC4qPyk+L2knOyAgIA0KcHJlZ19tYXRjaCgkcGF0dGVybiwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZGZpbGVzJyksJycsJycsJ3N5c3RlbWljb24nKSwkbWF0Y2hlcyk7DQoNCiRzbWFydHktPmFzc2lnbignYWRkZmlsZXNpY29uJywkY29uZmlnWydyb290X3VybCddLiIvIi4kY29uZmlnWydhZG1pbl9kaXInXS4iLyIuJG1hdGNoZXNbMV0pOw0KJHNtYXJ0eS0+YXNzaWduKCdhZGRmaWxlcycsJHRoaXMtPkxhbmcoJ2FkZGZpbGVzJykpOw0KDQokZXh0ID0gZXhwbG9kZSgnLCcsICJqcGcsanBlZyxnaWYscG5nLGpzLGNzcyIpOw0KJGZpbGV0eXBlcyA9ICcqLicgLiBpbXBsb2RlKCc7Ki4nLCAkZXh0KTsNCiRmaWxlc2l6ZSA9IHN0cl9yZXBsYWNlKCdNJywnIE1CJyxnZXRfY2ZnX3ZhcigncG9zdF9tYXhfc2l6ZScpKTsNCiRzbWFydHktPmFzc2lnbignZmlsZV9zaXplX2xpbWl0JywgJGZpbGVzaXplKTsNCiRzbWFydHktPmFzc2lnbignZmlsZV90eXBlcycsICRmaWxldHlwZXMpOw0KJHNtYXJ0eS0+YXNzaWduKCd1cGxvYWRfdXJsJywgc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fdXBsb2FkJywgJycsICcnLCBhcnJheSgnZGlzYWJsZV90aGVtZSc9Pid0cnVlJyksICcnLCB0cnVlKSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWxldXBsb2FkJywkdGhpcy0+TGFuZygnYWRkZmlsZXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3VwbG9hZGZpbGUnLCR0aGlzLT5MYW5nKCdhZGRmaWxlcycpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3VwbG9hZGZpbGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdXBsb2FkZmlsZScpKTsNCg0KaWYgKCRzZWN0aW9uID09ICJhdXRvbGlnaHRib3giKQ0KCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlX2FsYi50cGwnKTsNCmVsc2UgaWYgKCRzZWN0aW9uID09ICJ0d2l0dGVyZmVlZCIpDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVtcGxhdGVfdHdmLnRwbCcpOw0KZWxzZSBpZiAoJHNlY3Rpb24gPT0gImNzdiIpDQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVtcGxhdGVfY3N2LnRwbCcpOwkNCmVsc2UNCgllY2hvICI8cD50aGVyZSBpcyBubyBhZG1pbiB0ZW1wbGF0ZSBmb3Igc2VjdGlvbiAnIi4kc2VjdGlvbi4iJzwvcD4iOwkNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.edittplabout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhJGdDbXMgKSBleGl0KCk7DQoNCiR0YnRhYnRvID0gaXNzZXQoJHBhcmFtc1sndGFidG8nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSkgOiAiIjsgDQokc2VjdGlvbiA9IGlzc2V0KCRwYXJhbXNbJ3NlY3Rpb24nXSkgPyBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1snc2VjdGlvbiddKSA6ICcnOw0KDQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ3RhYnRvJyA9PiAkdGJ0YWJ0byk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCn0NCg0KaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApDQp7DQoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycyhsYW5nKCduZWVkcGVybWlzc2lvbnRvJywgJ01hbmFnZSBUb29sQm94JykpOw0KCXJldHVybjsNCn0NCg0KaWYoICFpc3NldCgkcGFyYW1zWydtb2RlJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApDQp7DQoJJHBhcmFtc1snbW9kdWxlX2Vycm9yJ10gPSBsYW5nKCdtaXNzaW5ncGFyYW1zJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywnJywkcGFyYW1zKTsNCglyZXR1cm47DQp9DQoNCiR0ZW1wbGF0ZSA9IHN0cl9yZXBsYWNlKCJhbGJfIiwgIiIsICRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RhYnRvJywgJHRidGFidG8pKTsNCg0KJHRlbXBsYXRlcHJvcHMgPSB0YlV0aWxzOjpnZXRUZW1wbGF0ZVByb3BzKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOw0KDQppZiggJHBhcmFtc1snbW9kZSddID09ICdzaG93JyApDQp7DQoJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdlZGl0dHBsYWJvdXQnLCRyZXR1cm5pZCwncG9zdCcsJycsIGZhbHNlLCAnJywgYXJyYXkoJ3RlbXBsYXRlJz0+JHBhcmFtc1sndGVtcGxhdGUnXSwgJ21vZGUnPT4iZWRpdCIpKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZW5hbWUnLCAkdGVtcGxhdGUpOw0KCSRzbWFydHktPmFzc2lnbigndmVyc2lvbicsICR0ZW1wbGF0ZXByb3BzWyd2ZXJzaW9uJ10pOw0KCSRzbWFydHktPmFzc2lnbignYWJvdXQnLCAkdGVtcGxhdGVwcm9wc1snYWJvdXQnXSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnZWRpdGJ1dHRvbicsICR0aGlzLT5MYW5nKCdlZGl0JykpKTsNCn0NCmVsc2VpZiAoICRwYXJhbXNbJ21vZGUnXSA9PSAnZWRpdCcgKQ0Kew0KCSRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZWRpdHRwbGFib3V0JywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCBmYWxzZSwgJycsIGFycmF5KCd0ZW1wbGF0ZSc9PiRwYXJhbXNbJ3RlbXBsYXRlJ10sICdtb2RlJz0+ImRvX2VkaXQiKSkpOw0KCSRzbWFydHktPmFzc2lnbigndGVtcGxhdGVuYW1lJywgJHRlbXBsYXRlKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3ZlcnNpb24nLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd2ZXJzaW9uJywgJHRlbXBsYXRlcHJvcHNbJ3ZlcnNpb24nXSwgMTAsIDIwICkpOw0KCSRzbWFydHktPmFzc2lnbignYWJvdXQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkdGVtcGxhdGVwcm9wc1snYWJvdXQnXSwgJ2Fib3V0JywgJycsICcnLCAnJywgJycsICc4MCcsICcxNScpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCn0NCmVsc2UNCnsNCgkvLyBkb19lZGl0DQoJJHF1ZXJ5ID0gIlVQREFURSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90b29sYm94X3RlbXBsYXRlcHJvcHMNCgkJCQkJCVNFVCB2ZXJzaW9uPT8sIGFib3V0PT8NCgkJCQkJCVdIRVJFIHRlbXBsYXRlPT8iOw0KCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWyd2ZXJzaW9uJ10sJHBhcmFtc1snYWJvdXQnXSwkcGFyYW1zWyd0ZW1wbGF0ZSddKSk7DQoJaWYgKCAhJHJlc3VsdCApDQoJew0KCQllY2hvICdFUlJPUjogJyAuIG15c3FsX2Vycm9yKCk7DQoJCWV4aXQoKTsNCgl9DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXR0cGxhYm91dCcsICcnLCBhcnJheSgndGVtcGxhdGUnPT4kcGFyYW1zWyd0ZW1wbGF0ZSddLCAnbW9kZSc9PiJzaG93IiwgJ3RhYnRvJz0+JHRidGFidG8sICdtb2R1bGVfbWVzc2FnZSc9PiR0aGlzLT5MYW5nKCd0ZW1wbGF0ZXVwZGF0ZWQnKSkpOw0KCWV4aXQoKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9hYm91dCcpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlbmFtZScsJHRoaXMtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZW5hbWUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF92ZXJzaW9uJywkdGhpcy0+TGFuZygncHJvbXB0X3ZlcnNpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hYm91dCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9hYm91dCcpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7DQoNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRwbGFib3V0LnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.logUpdater.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbg0KaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsNCmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSBleGl0Ow0KaWYoICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddICE9ICdQT1NUJyApIGV4aXQ7DQoNCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCJtb2QiLCR0aGlzKTsNCg0KLy8gR2V0IFBPU1QgZGF0YQ0KJHRiVGFiVG8gPSBwcmVnX3JlcGxhY2UoJy9bXjAtOWEtekEtWl9dLycsJycsJHBhcmFtc1sndGFidG8nXSk7DQoNCi8vIHRiTG9nVXBkYXRlciBTZXNzaW9uDQokc2Vzc2lvbl9uYW1lID0gInRiTG9nVXBkYXRlciI7DQpzZXNzaW9uX25hbWUoJHNlc3Npb25fbmFtZSk7DQoNCmlmIChpc3NldCgkcGFyYW1zWydzdGFydGJ1dHRvbiddKSApIHsNCgkNCgkNCgkkc2FsdCA9ICJ0YlRkaVdWYWRsaWxlc2xjaSI7DQoJDQoJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdsb2dVcGRhdGVyJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCB0cnVlLCBhcnJheSgpKSk7DQoJDQoJJGZpbGVOYW1lID0gaXNzZXQoJHBhcmFtc1snbG9nRmlsZSddKSA/ICRwYXJhbXNbJ2xvZ0ZpbGUnXSA6ICcnOw0KCSRsaW5lcyA9IGlzc2V0KCRwYXJhbXNbJ2xvZ0xpbmVzJ10pID8gKGludCkkcGFyYW1zWydsb2dMaW5lcyddIDogMDsNCgkkbG9nRmlsZSA9ICR0aGlzLT50YkxvZ1BhdGguJGZpbGVOYW1lOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0YWlsX2xvZ2xpbmVzJywkbGluZXMpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0YWlsX2ZpbGUnLCRmaWxlTmFtZSk7DQoJDQoJJHJhbmRvbSA9ICR0aGlzLT5yYW5kb21BbHBoYU51bSg1KTsNCgkkX1NFU1NJT05bJ3RiTG9nVXBkYXRlcl8nLiRyYW5kb20uJ19UcyddID0gJyc7DQoJDQoJJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJGZpbGVOYW1lKTsNCgkNCgkkYXJyYXkgPSBhcnJheSgnbG9nRmlsZScgPT4gJGxvZ0ZpbGUsICdrZXknID0+ICRyYW5kb20pOw0KCQ0KCSRoYXNoID0gYnRUb29sczo6Z2V0UGFyYW1zSGFzaCgkYXJyYXksICRzYWx0KTsgDQoJDQovLwlmPScrbG9nRmlsZSsnJms9JytrZXkrJyZoPScNCgkNCgkkdGhpcy0+bG9nVXBkYXRlclBhcmFtID0gYXJyYXkoJ2YnPT4gYmFzZTY0X2VuY29kZSgkbG9nRmlsZSksICdrJyA9PiBiYXNlNjRfZW5jb2RlKCRyYW5kb20pLCAnaCcgPT4gJGhhc2gpOw0KCQ0KCSRzbWFydHktPmFzc2lnbigndGFidG8nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0YWJ0bycsJHRiVGFiVG8pKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2xvZ0ZpbGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdsb2dGaWxlJyxiYXNlNjRfZW5jb2RlKCRsb2dGaWxlKSkpOw0KCSRzbWFydHktPmFzc2lnbigna2V5JywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwna2V5JyxiYXNlNjRfZW5jb2RlKCRyYW5kb20pKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdoYXNoJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaCcsJGhhc2gpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2xpbmVzJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnbGluZXMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0YWlsX2xvZ2xpbmVzJykpKTsNCgkNCgkkbG9nID0gdGJMb2dVcGRhdGVyOjpnZXRMb2dMaW5lcygkbG9nRmlsZSwgJHJhbmRvbSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfbG9nbGluZXMnKSk7IA0KCSRzbWFydHktPmFzc2lnbignaW5wdXRfbG9nJywkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSgkaWQsJGxvZywnbG9nJywnJywndGFpbGxvZ2FyZWEnLCcnLCcnLDEyMCwzMCwncmVhZG9ubHk9InJlYWRvbmx5IiB3cmFwPSJvZmYiJykpOw0KCSRzbWFydHktPmFzc2lnbigncHJvbXB0X2xvZycsJHRoaXMtPkxhbmcoJ3RhaWxfcHJvbXB0X2xvZycpKTsNCgkNCgkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdG9wYnV0dG9uJywgJHRoaXMtPkxhbmcoJ3RhaWxfc3RvcCcpKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgkNCn0NCmVsc2Ugew0KCSRyYW5kb20gPSBpc3NldCgkcGFyYW1zWydrZXknXSkgPyAkcGFyYW1zWydrZXknXSA6ICcnOw0KCXVuc2V0KCRfU0VTU0lPTlsndGJMb2dVcGRhdGVyXycuJHJhbmRvbS4nX1RzJ10pOw0KfQ0KDQokc2lkID0gc2Vzc2lvbl9pZCgpOw0KLy8gRm9yY2UgdG8gc2V0IHRoZSBjb29raWUNCnNldGNvb2tpZSgkc2Vzc2lvbl9uYW1lLCAkc2lkLCAwLCAnLycsICcnKTsNCi8vIENsb3NlIHRoYXQgc2Vzc2lvbg0Kc2Vzc2lvbl93cml0ZV9jbG9zZSgpOw0KDQoNCmlmIChpc3NldCgkcGFyYW1zWydzdGFydGJ1dHRvbiddKSApIHsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xvZ1VwZGF0ZXIudHBsJyk7DQp9DQplbHNlIHsNCgkvLyBSZWRpcmVjdA0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCAndGFidG8nPT4kdGJUYWJUbyApKTsNCn0NCg0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/action.switchdefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CmlmICggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBUb29sQm94JykgKSAKewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycyhsYW5nKCduZWVkcGVybWlzc2lvbnRvJywgJ01hbmFnZSBUb29sQm94JykpOwoJcmV0dXJuOwp9CgokdGFidG8gPSBpc3NldCgkcGFyYW1zWyd0YWJ0byddKSA/ICRwYXJhbXNbJ3RhYnRvJ10gOiAnJzsKJHR0YWJ0byA9IGlzc2V0KCRwYXJhbXNbJ3R0YWJ0byddKSA/ICRwYXJhbXNbJ3R0YWJ0byddIDogJyc7CgppZiAoIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKQp7CgkkcGFyYW1zID0gYXJyYXkoJ21vZHVsZV9lcnJvcicgPT4gbGFuZygnbWlzc2luZ3BhcmFtcycpIC4gJyBcJ3RlbXBsYXRlXCcnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0byk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7CglyZXR1cm47Cn0KCiR0cGxwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJHBhcmFtc1sndGVtcGxhdGUnXSk7CgppZiAoISR0cGxwcm9wcykKewoJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InID0+IGxhbmcoJ21pc3NpbmdwYXJhbXMnKSAuICcgXCdzZWN0aW9uXCcnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0byk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJyAsICRyZXR1cm5pZCwgJHBhcmFtcyk7CglyZXR1cm47Cn0KCgppZiAoJHRwbHByb3BzWydzZWN0aW9uJ10gPT0gInR3aXR0ZXJmZWVkIikgewoJJG1hc2sgPSAgc3RyX3JlcGxhY2UoIi8iLERJUkVDVE9SWV9TRVBBUkFUT1IsJGNvbmZpZ1sncm9vdF9wYXRoJ10uIi90bXAvY2FjaGUvVG9vbEJveF90d2l0dGVyZmVlZCoiKTsKCWFycmF5X21hcCggInVubGluayIsIGdsb2IoICRtYXNrICkgKTsKfQoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfJy4kdHBscHJvcHNbJ3NlY3Rpb24nXS4kdHBscHJvcHNbJ3RwbHNlY3Rpb24nXS4nX3RlbXBsYXRlJywkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicgLCAkcmV0dXJuaWQsIGFycmF5KCd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJyA9PiAkdHRhYnRvKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/changelog.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgo8bGk+MS4xLjEgLSAyMC4wNS4yMDEyPGJyIC8+CjxiciAvPgo8dWw+CjxsaT5NaW5vciBidWdmaXhlczwvbGk+CjxsaT5VcGRhdGUgU29jaWFsU2hhcmVQcml2YWN5IHZlcnNpb24gMS40PC9saT4KPC91bD4KPC9saT4KPC91bD4KPHVsPgo8bGk+MS4xLjAgLSAwNS4wMy4yMDEyPGJyIC8+CjxiciAvPgo8dWw+CjxsaT5BZGRlZCBTbWFydHkgcGx1Z2luICR0YnRvb2xzLiBUaGlzIGVuYWJsZXMgeW91IHRvIHVzZSBkaWZmZXJlbnQgZnVuY3Rpb25zIHRvIG1vZGlmeSBjb250ZW50LjwvbGk+CjxsaT5BZGRlZCBkaWZmZXJlbnQgcGx1Z2lucy48L2xpPgo8bGk+QWRkZWQgcGx1Z2luIHRvIGV4dGVuZCBBZHZhbmNlZENvbnRlbnQ8L2xpPgo8bGk+QWRkZWQgcGx1Z2luIHRvIHNob3cgU29jaWFsU2hhcmVQcml2YWN5IEJ1dHRvbnM8L2xpPgo8bGk+QWRkZWQgYSBUYWlsLUxvZyBUYWI8L2xpPgo8bGk+TW9kdWxlIGhlbHAgaXMgbm93IG11Y2ggYmlnZ2VyIDopPC9saT4KPGxpPlRvb2xCb3ggY2FsbCBpcyBub3cgcG9zc2libGUgd2l0aCB7VG9vbEJveH08L2xpPgo8L3VsPgo8L2xpPgo8L3VsPgo8dWw+CjxsaT4xLjAuMSAtIERlY2VtYmVyIDIwMTEKPHA+U29tZSBzbWFsbGVyIGJ1ZyBmaXhlczwvcD48L2xpPgo8bGk+MS4wIC0gRGVjZW1iZXIgMjAxMQo8cD5Jbml0aWFsIFJlbGVhc2Ugb2YgdGhlIG1vZHVsZSBUb29sQm94PC9wPjwvbGk+CjwvdWw+]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUbyBkZW55IFBIUHMNCjxGaWxlcyB+ICJcLihwaHB8cGhwM3xwaHA0fHBocDV8cGh0bWx8cGx8Y2dpKSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGRlbnkgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjwvRmlsZXM+ICANCg==]]></data>
	</file>
	<file>
	  <filename>/doc/coding_guidelines.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cjx0aXRsZT5Nb2R1bCBUb29sQm94IChDTVMgbWFkZSBzaW1wbGUpOiBQSFAgUHJvZ3JhbW1pZXJ1bmcgUmljaHRsaW5pZW48L3RpdGxlPgo8bWV0YSBuYW1lPSJsYW5ndWFnZSIgY29udGVudD0iZGUiIC8+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCxub2ZvbGxvdyIgLz4KPC9oZWFkPgo8Ym9keT4KCjxoMT5Nb2R1bCBUb29sQm94IChDTVMgbWFkZSBzaW1wbGUpOiBQSFAgUHJvZ3JhbW1pZXJ1bmcgUmljaHRsaW5pZW48L2gxPgoKPGgyPkFsbGdlbWVpbmUgR3J1bmRzw6R0emU8L2gyPgo8dWw+CjxsaT5CZXplaWNobnVuZ2VuIGFscyBQcm9ncmFtbWllcmJlc3RhbmR0ZWlsIChWYXJpYWJsZW4tTmFtZW4sIEZ1bmt0aW9uZW4sIGV0Yy4pIHdlcmRlbiBpbiBFbmdsaXNjaCB2ZXJmYXNzdC48L2xpPgo8bGk+QWxzIEVpbnp1ZyBmw7xyIGRpZSBTdHJ1a3R1cmllcnVuZyB3aXJkIGVpbiBFaW56dWcgdm9uIGVpbmVtIFRhYnVsYXRvciB2ZXJ3ZW5kZXQuIExlZXJ6ZWljaGVuIGFscyBFaW56dWcgc2luZCB2b3IgZGVtIEVpbmNoZWNrZW4gaW4gVGFidWxhdG9yZW4gdW16dXdhbmRlbG4uPC9saT4KPGxpPkJlaSBEYXRlaWVuLCBkaWUgbnVyIFBIUC1Db2RlIGVudGhhbHRlbiwgaXN0IGRlciBBYnNjaGx1c3N0YWcgKCZxdW90Oz8mZ3Q7JnF1b3Q7KSB3ZWd6dWxhc3Nlbi4gVm9uIFBIUCB3aXJkIGRpZXNlciBuaWNodCBiZW7DtnRpZ3QgdW5kIHZlcmhpbmRlcnQgc28gdW5lcnfDvG5zY2h0ZSBMZWVyemVpY2hlbiBiZWltIGZpbmFsZW4gT3V0cHV0LjxiciAvPlN0YXR0ZGVzc2VuIHdpcmQgZGFzIEVuZGUgZGVyIERhdGVpIG1pdCBmb2xnZW5kZW0gS29tbWVudGFyIGdla2VubnplaWNobmV0OiA8cHJlPi8vIEVPRjwvcHJlPjwvbGk+CjxsaT5TdHJpbmdzIHNvbGx0ZSBncnVuZHPDpHR6bGljaCBtaXQgZWluZmFjaGVuIEFwb3N0cm9waGVuIChzaW5nbGUgcXVvdGVzKSBhYmdlZ3Jlbnp0IHdlcmRlbi4gRGllcyBoYXQgZGVuIFZvcnRlaWwsIGRhc3MgUEhQIENvZGUgaW0gU3RyaW5nIG5pY2h0IGF1c2dlZsO8aHJ0IHdpcmQgdW5kIHNvIHouQi4gSFRNTCBBdXNnYWJlbiBlaW5mYWNoZXIgc2luZC4gRG9wcGVsdGUgQXBvc3Ryb3BoZSAoZG91YmxlIHF1b3RlcykgZMO8cmZlbiBudXIgdmVyd2VuZGV0IHdlcmRlbiwgd2VubiBkaWUgQXVzZsO8aHJ1bmcgZGVzIGVudGhhbHRlbmVuIENvZGVzIGJlbsO2dGlndCB3aXJkLiBTdHJpbmd2ZXJiaW5kdW5nZW4gb2RlciBWYXJpYWJsZW4gaW0gU3RyaW5nIHdlcmRlbiBpbW1lciBtaXQgZGVtIFB1bmt0IGFscyBWZXJiaW5kZXIgZ2VzY2hyaWViZW4uPC9saT4KPGxpPkdlc2Nod2VpZnRlIEtsYW1tZXJuIHVtIENvZGUtQmzDtmNrZSB3ZXJkZW4gd2llIGZvbGd0IGVpbmdlc2V0enQ6IERpZSBlcnN0ZSBnZXNjaHdlaWZ0ZSBLbGFtbWVyIHN0ZWh0IHN0ZXRzIGluIGRlciBnbGVpY2hlbiBaZWlsZSB3aWUgZGllIEJlZGluZ3VuZywgZGllIHp3ZWl0ZSBnZXNjaHdlaWZ0ZSBLbGFtbWVyIGluIGVpbmVyIGVpbnplbG5lbiBaZWlsZS48YnIgLz5BbHMgQXVzbmFobWUgZ2lsdCwgd2VubiBkZXIgZ2VzYW10ZSBCbG9jayBtaXQgQmVkaW5ndW5nIGluIGVpbmVyIFplaWxlIHN0ZWh0LjwvbGk+CjwvdWw+Cgo8aDI+S29tbWVudGFyZTwvaDI+Cjx1bD4KPGxpPkRpZSBTcHJhY2hlIGbDvHIgRG9rdW1lbnRhdGlvbi9Lb21tZW50YXJlIGlzdCBEZXV0c2NoIG9kZXIgRW5nbGlzY2guPC9saT4KPGxpPkRlciBTdGFuZGFyZCBmw7xyIEtvbW1lbnRhcmUgcmljaHRldCBzaWNoIG5hY2ggZGVtIHZvbiBwaHBEb2N1bWVudG9yLjwvbGk+CjwvdWw+Cgo8aDI+VmFyaWFibGVuPC9oMj4KPHVsPgo8bGk+VmFyaWFibGVuIGF1w59lcmhhbGIgdm9uIEZ1bmt0aW9uZW4gdmVyd2VuZGVuIGRlbiBQcmVmaXggdGIgLSB6LkIuOiAkdGJSZWZlcmVyLjwvbGk+CjxsaT5Xb3J0ZSBpbm5lcmhhbGIgdm9uIFZhcmlhYmxlbiBiZWdpbm5lbiBzdGV0cyBtaXQgZWluZW0gR3Jvw59idWNoc3RhYmUsIGRlciBSZXN0IHdpcmQgc3RldHMga2xlaW5nZXNjaHJpZWJlbi48L2xpPgo8bGk+VmFyaWFibGVubmFtZW4gZMO8cmZlbiBudXIgYXVzIGFscGhhbnVtZXJpc2NoZW4gWmVpY2hlbiBiZXN0ZWhlbiwgVHJlbm56ZWljaGVuIHdpZSAtIG9kZXIgXyBzaW5kIG5pY2h0IHp1IHZlcndlbmRlbi48L2xpPgo8bGk+VmFyaWFibGVubmFtZW4gc2luZCBzbyBrdXJ6IHVuZCBzbyB2ZXJzdMOkbmRsaWNoIHdpZSBtw7ZnbGljaCB6dSBoYWx0ZW4uPC9saT4KPGxpPlZhcmlhYmxlbiB3aWUgJGkgdW5kICRuIGTDvHJmZW4gbnVyIFrDpGhsZXJuIC8gTG9vcHMgdmVyd2VuZGV0IHdlcmRlbi48L2xpPgo8L3VsPgoKPGgyPkRhdGVuYmFua2VuPC9oMj4KPHVsPgo8bGk+RGllIFZlcndlbmR1bmcgdm9uIFNRTC1CZWZlaGxlbiBsw6R1ZnQgc3RldHMgw7xiZXIgQWRvREIuPC9saT4KPGxpPlNvd2VpdCBtw7ZnbGljaCwgc29sbHRlbiBkaWUgRnVua3Rpb25lbiB2b24gQWRvREIgYXVzZ2VudXR6dCB3ZXJkZW4sIGFsc28gei5CLiBnZXRPbmUsIGdldFJvdyB1c3cuPC9saT4KPGxpPkplZGVzIFNRTC1TdGF0ZW1lbnQgaXN0IGF1ZiBTUUwtSW5qZWN0aW9uIHp1IMO8YmVycHLDvGZlbi4gSU5TRVJUIHVuZCBVUERBVEUgU3RhdGVtZW50cyBzaW5kIG51ciBpbSBadXNhbW1lbmhhbmcgbWl0IGRlbiA/IFBsYXR6aGFsdGVybiBBZG9EQiB6dSB2ZXJ3ZW5kZW4sIEF1c25haG1lbiBzaW5kIFNRTC1BbndlaXN1bmdlbiB3aWUgTk9XKCkuPC9saT4KPGxpPlNRTC1CZWZlaGxlIHdlcmRlbiBzdGV0cyBncm/DnyBnZXNjaHJpZWJlbi48L2xpPgo8L3VsPgoKPGgyPkJlaXNwaWVsPC9oMj4KPHByZT48Y29kZT48c3BhbiBzdHlsZT0iY29sb3I6IzAwMDAwMCI+PHNwYW4gc3R5bGU9ImNvbG9yOiAjRkY4MDAwIj4vKioKKiZuYnNwO1NldHMmbmJzcDt0aGUmbmJzcDtjb2xvciZuYnNwO29mJm5ic3A7dGhlJm5ic3A7ZXllcy4KKiZuYnNwO0BwYXJhbSZuYnNwO3N0cmluZyZuYnNwOyRleWVDb2xvciZuYnNwO0NvbG9yJm5ic3A7b2YmbmJzcDt0aGUmbmJzcDtleWVzCiombmJzcDtAcmV0dXJuJm5ic3A7Ym9vbGVhbgoqLzwvc3Bhbj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjMDA3NzAwIj5wdWJsaWMmbmJzcDtmdW5jdGlvbiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwQkIiPnNldEV5ZUNvbG9yPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+KDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwQkIiPiRleWVDb2xvcjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDc3MDAiPil7CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2lmJm5ic3A7KDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwQkIiPmluX2FycmF5PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+KDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwQkIiPnN0cnRvbG93ZXI8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDA3NzAwIj4oPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBCQiI+JGV5ZUNvbG9yPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+KSwmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMEJCIj5zZWxmPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+Ojo8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMEJCIj4kX3ZhbGlkRXllQ29sb3JzPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+KSkmbmJzcDt7CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDAwQkIiPiR0aGlzPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+LSZndDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMEJCIj5fZXllQ29sb3ImbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDA3NzAwIj49Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBCQiI+c3RydG9sb3dlcjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICMwMDc3MDAiPig8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMEJCIj4kZXllQ29sb3I8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDA3NzAwIj4pOwombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDAwMEJCIj50cnVlPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwNzcwMCI+OwombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt9Jm5ic3A7ZWxzZSZuYnNwO3sKJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzAwMDBCQiI+ZmFsc2U8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjMDA3NzAwIj47CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO30KfTwvc3Bhbj48L3NwYW4+PC9jb2RlPjwvcHJlPgoKPHA+IDwvcD4KCjwvYm9keT4KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/doc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPg0K]]></data>
	</file>
	<file>
	  <filename>/function.admin_404.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJzQwNCc7DQoNCiR0aGVtZU9iamVjdCA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOw0KDQovLyBTZXQgdmFycyBhbmQgaW1hZ2VzDQokaW1hZ2VkZWxldGUgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KJGltYWdlcmVkaXJlY3QgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCR0aGlzLT5MYW5nKCduZXdyZWRpcmVjdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokaW1hZ2VpZ25vcmUgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsJHRoaXMtPkxhbmcoJ2lnbm9yZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoNCi8vIEdldCBlcnJvcnMNCiRhbGxlcnJvcnMgPSAkdGJEYi0+R2V0QWxsKCdTRUxFQ1QgaWQsZnJvbXVybCx0b3VybCx2aXNpdHMsY3JlYXRlZF9kYXRlLG1vZGlmaWVkX2RhdGUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzIE9SREVSIEJZIG1vZGlmaWVkX2RhdGUgREVTQycpOw0KaWYgKCFpc19hcnJheSgkYWxsZXJyb3JzKSkgJGFsbGVycm9ycyA9IGFycmF5KCk7DQoNCi8vIFdhbGsgdGhyb3VnaCBlcnJvcnMNCiRlcmFycmF5ID0gYXJyYXkoKTsNCg0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KZm9yZWFjaCAoICRhbGxlcnJvcnMgYXMgJG9uZWVycm9yICkgew0KCS8vIEJ1aWxkIGEgbmV3IHJvdw0KCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkkcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsNCgkvLyBJRA0KCSRyb3ctPmlkID0gJG9uZWVycm9yWydpZCddOw0KCS8vIEljb24NCgkkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvRElSaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5odG0obCk/KFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9IVE1MaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5jc3MoXC8pPyQvaScsJG9uZWVycm9yWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0NTU2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwucGhwKFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9QSFBpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnR4dChcLyk/JC9pJywkb25lZXJyb3JbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvVFhUaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC56aXAoXC8pPyQvaScsJG9uZWVycm9yWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1pJUGljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwuZ2lmKFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9HSUZpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBuZyhcLyk/JC9pJywkb25lZXJyb3JbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvSlBHaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5qcGcoXC8pPyQvaScsJG9uZWVycm9yWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0pQR2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwubXAzKFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9NUDNpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLndhdihcLyk/JC9pJywkb25lZXJyb3JbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvTVAzaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5hdmkoXC8pPyQvaScsJG9uZWVycm9yWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0FWSWljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwuZmx2KFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9GTFZpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBkZihcLyk/JC9pJywkb25lZXJyb3JbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvUERGaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5kb2MoXC8pPyQvaScsJG9uZWVycm9yWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0RPQ2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwueGxzKFwvKT8kL2knLCRvbmVlcnJvclsndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9YTFNpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBwdChcLyk/JC9pJywkb25lZXJyb3JbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvUFBUaWNvbi5naWYiIC8+JzsNCgkvLyBGcm9tIFVSTA0KCSRyb3ctPmZyb211cmwgPSBzdHJsZW4oJG9uZWVycm9yWydmcm9tdXJsJ10pPD0zMCAJPyAnPGEgaHJlZj0iJy4kb25lZXJyb3JbJ2Zyb211cmwnXS4nIiB0aXRsZT0iJy4kb25lZXJyb3JbJ2Zyb211cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy5wcmVnX3JlcGxhY2UoJy9eaHR0cChzKT86XC9cLy8nLCcnLCRvbmVlcnJvclsnZnJvbXVybCddKS4nPC9hPicNCgkJCQkJCQkJCQkJCQkJOiAnPGEgaHJlZj0iJy4kb25lZXJyb3JbJ2Zyb211cmwnXS4nIiB0aXRsZT0iJy4kb25lZXJyb3JbJ2Zyb211cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy5zdWJzdHIocHJlZ19yZXBsYWNlKCcvXmh0dHAocyk/OlwvXC8vJywnJywkb25lZXJyb3JbJ2Zyb211cmwnXSksMCwxNSkuJy4uLi4nLnN1YnN0cigkb25lZXJyb3JbJ2Zyb211cmwnXSwtMTUpLic8L2E+JzsNCgkvLyBUbyBVUkwNCgkkcm93LT50b3VybCA9ICc8YSBocmVmPSInLiRvbmVlcnJvclsndG91cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kb25lZXJyb3JbJ3RvdXJsJ10uJzwvYT4nOw0KCSRyb3ctPnRvdXJsID0gc3RybGVuKCRvbmVlcnJvclsndG91cmwnXSk8PTMwIAk/ICc8YSBocmVmPSInLiRvbmVlcnJvclsndG91cmwnXS4nIiB0aXRsZT0iJy4kb25lZXJyb3JbJ3RvdXJsJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGljb24uJyAnLnByZWdfcmVwbGFjZSgnL15odHRwKHMpPzpcL1wvLycsJycsJG9uZWVycm9yWyd0b3VybCddKS4nPC9hPicNCgkJCQkJCQkJCQkJCQk6ICc8YSBocmVmPSInLiRvbmVlcnJvclsndG91cmwnXS4nIiB0aXRsZT0iJy4kb25lZXJyb3JbJ3RvdXJsJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGljb24uJyAnLnN1YnN0cihwcmVnX3JlcGxhY2UoJy9eaHR0cChzKT86XC9cLy8nLCcnLCRvbmVlcnJvclsndG91cmwnXSksMCwxNSkuJy4uLi4nLnN1YnN0cigkb25lZXJyb3JbJ3RvdXJsJ10sLTE1KS4nPC9hPic7DQoJLy8gVmlzaXRzDQoJJHJvdy0+dmlzaXRzID0gJG9uZWVycm9yWyd2aXNpdHMnXTsNCgkvLyBDcmVhdGVkIGRhdGUNCgkkcm93LT5jcmVhdGVkID0gJG9uZWVycm9yWydjcmVhdGVkX2RhdGUnXTsNCgkvLyBNb2RpZmllZCBkYXRlDQoJJHJvdy0+bW9kaWZpZWQgPSAkb25lZXJyb3JbJ21vZGlmaWVkX2RhdGUnXTsNCgkvLyBCdWlsZCBlZGl0IGljb24NCgkkcm93LT5yZWRpcmVjdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRtaW5fZWRpdHJlZGlyZWN0JywgJHJldHVybmlkLCAkaW1hZ2VyZWRpcmVjdCwgYXJyYXkgKCAndGFidG8nPT4ncmVkaXJlY3RzJywgJ3JlZGlyZWN0Jz0+JycsICdydXJsJz0+dXJsZW5jb2RlKCRvbmVlcnJvclsndG91cmwnXSkgKSwgJycsIGZhbHNlLCBmYWxzZSwgJyB0aXRsZT0iJy4kdGhpcy0+TGFuZygnbmV3cmVkaXJlY3QnKS4nIicpOw0KCS8vIEJ1aWxkIGlnbm9yZSBpY29uDQoJJHJvdy0+aWdub3JlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdhZG1pbl80MDRpZ25vcmUnLCAkcmV0dXJuaWQsICRpbWFnZWlnbm9yZSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8sICdpX2l1cmwnPT51cmxlbmNvZGUoJG9uZWVycm9yWyd0b3VybCddKSwgJ2lfaWdub3JlJz0+JzEnICksICR0aGlzLT5MYW5nKCdyZWFsbHlpZ25vcmUnKSwgZmFsc2UsIGZhbHNlLCAnIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdpZ25vcmUnKS4nIicpOw0KCS8vIEJ1aWxkIGRlbGV0ZSBpY29uDQoJJHJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdhZG1pbl9kZWxldGVlcnJvcicsICRyZXR1cm5pZCwgJGltYWdlZGVsZXRlLCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0bywgJ2Vycm9yJz0+JG9uZWVycm9yWydpZCddICksICR0aGlzLT5MYW5nKCdyZWFsbHlkZWxldGUnKSwgZmFsc2UsIGZhbHNlLCAnIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdkZWxldGUnKS4nIicpOw0KCS8vIE1lcmdlIG5ldyBkb21haW4gdG8gYXJyYXkNCglhcnJheV9wdXNoICgkZXJhcnJheSwgJHJvdyk7DQoJLy8gQWx0ZXJuYXRlIHJvdyBjb2xvcg0KCSgkcm93Y2xhc3MgPT0gJ3JvdzEnID8gJHJvd2NsYXNzID0gJ3JvdzInIDogJHJvd2NsYXNzID0gJ3JvdzEnKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkdGhpcyk7DQoNCi8vIEFzc2lnbiBzbWFydHkgdmFycw0KJHNtYXJ0eS0+YXNzaWduKCdlcnJvcmFycicsICRlcmFycmF5KTsNCiRzbWFydHktPmFzc2lnbignY2hlY2tfb2xkdXJsJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2UnKSA/ICcxJyA6ICcwJyk7DQoNCi8vIEdldCBpZ25vcmUgbGlzdA0KJGlnbm9yZWVycm9ycyA9ICR0YkRiLT5HZXRBbGwoJ1NFTEVDVCBpZCxpdXJsLGlyZWdleHAsY3JlYXRlZF9kYXRlLG1vZGlmaWVkX2RhdGUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzX2lnbm9yZScpOw0KaWYgKCFpc19hcnJheSgkaWdub3JlZXJyb3JzKSkgJGlnbm9yZWVycm9ycyA9IGFycmF5KCk7DQoNCi8vIFdhbGsgdGhyb3VnaCBpZ25vcmUgbGlzdA0KJGlnYXJyYXkgPSBhcnJheSgpOw0KJGlkcyA9IGFycmF5KCk7DQokcm93Y2xhc3MgPSAncm93MSc7DQpmb3JlYWNoICggJGlnbm9yZWVycm9ycyBhcyAkaWVycm9yICkgew0KCS8vIEJ1aWxkIGEgbmV3IHJvdw0KCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkkcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsNCgkvLyBJRA0KCSRyb3ctPmlkID0gJGllcnJvclsnaWQnXTsNCgkkaWRzW10gPSAkaWVycm9yWydpZCddOw0KCS8vIFVSTCB0byBpZ25vcmUNCgkkcm93LT5pdXJsID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lfaXVybCcuJGllcnJvclsnaWQnXSwkaWVycm9yWydpdXJsJ10sNjAsMjAwKTsNCgkvLyBSZXhFeHA/DQoJJHJvdy0+aXJlZ2V4cCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2lfaXJlZ2V4cCcuJGllcnJvclsnaWQnXSwgJ3RydWUnLCAkaWVycm9yWydpcmVnZXhwJ10gPyAndHJ1ZScgOiAnZmFsc2UnKTsNCgkvLyBDcmVhdGVkIGRhdGUNCgkkcm93LT5jcmVhdGVkID0gJGllcnJvclsnY3JlYXRlZF9kYXRlJ107DQoJLy8gTW9kaWZpZWQgZGF0ZQ0KCSRyb3ctPm1vZGlmaWVkID0gJGllcnJvclsnbW9kaWZpZWRfZGF0ZSddOw0KCS8vIEJ1aWxkIGRlbGV0ZSBpY29uDQoJJHJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdhZG1pbl9kZWxldGVpZ25vcmVlcnJvcicsICRyZXR1cm5pZCwgJGltYWdlZGVsZXRlLCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0bywgJ2llcnJvcic9PiRpZXJyb3JbJ2lkJ10gKSwgJHRoaXMtPkxhbmcoJ3JlYWxseWRlbGV0ZScpLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLiciJyk7DQoJLy8gTWVyZ2UgbmV3IGRvbWFpbiB0byBhcnJheQ0KCWFycmF5X3B1c2ggKCRpZ2FycmF5LCAkcm93KTsNCgkvLyBBbHRlcm5hdGUgcm93IGNvbG9yDQoJKCRyb3djbGFzcyA9PSAncm93MScgPyAkcm93Y2xhc3MgPSAncm93MicgOiAkcm93Y2xhc3MgPSAncm93MScpOw0KfQ0KDQovLyBBc3NpZ24gc21hcnR5IHZhcnMNCiRzbWFydHktPmFzc2lnbignZGVsZXRlYWxsbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdhZG1pbl9kZWxldGVlcnJvcnMnLCAkcmV0dXJuaWQsICRpbWFnZWRlbGV0ZS4nICcuJHRoaXMtPkxhbmcoJ2RlbGV0ZWFsbCcpLCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0byApLCAkdGhpcy0+TGFuZygncmVhbGx5ZGVsZXRlJyksIGZhbHNlLCBmYWxzZSwgJyB0aXRsZT0iJy4kdGhpcy0+TGFuZygnZGVsZXRlYWxsJykuJyInKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluXzQwNGlnbm9yZScsJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsdHJ1ZSxhcnJheSgpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbigndGFidG8nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0YWJ0bycsJHRhYnRvKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lnbm9yZXMnLCAkaWdhcnJheSApOw0KJHNtYXJ0eS0+YXNzaWduKCdpZHMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdpZHMnLGltcGxvZGUoJywnLCRpZHMpKSApOw0KJHNtYXJ0eS0+YXNzaWduKCduZXcnLCAkdGhpcy0+TGFuZygnbmV3JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpX2l1cmwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaV9pdXJsJywnJyw2MCwyMDApKTsNCiRzbWFydHktPmFzc2lnbignaV9pcmVnZXhwJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaV9pcmVnZXhwJywgJ3RydWUnLCAnZmFsc2UnKSk7DQoNCiMkc21hcnR5LT5hc3NpZ24oJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2xpc3RlcnJvcnMudHBsJyk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_autolightbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ2F1dG9saWdodGJveCc7DQokc2VjdGlvbiA9ICdhdXRvbGlnaHRib3gnOw0KDQokdGhlbWVPYmplY3QgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsgLy8gICYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOw0KJGZhbHNlaW1hZ2UxID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCR0aGlzLT5MYW5nICgnc2V0dHJ1ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokdHJ1ZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCR0aGlzLT5MYW5nICgnZGVmYXVsdCcpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokZmFsc2VpbWFnZTIgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsJHRoaXMtPkxhbmcgKCdtYWtldmlzaWJsZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQokdHJ1ZWltYWdlMiA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCR0aGlzLT5MYW5nICgnbWFrZWludmlzaWJsZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdhZG1pbl9hdXRvbGlnaHRib3gnLCRyZXR1cm5pZCwncG9zdCcsJycsIHRydWUsIGFycmF5KCkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCR0aGlzKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdyZWwnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3JlbCcpLCA4MCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NsYXNzJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnY2xhc3MnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X2NsYXNzJyksIDgwKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jbGFzcycsJHRoaXMtPkxhbmcoJ2F1dG9saWdodGJveF9wcm9tcHRfY2xhc3MnKSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdXJsdHlwZScsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndXJsdHlwZScsIGFycmF5KCdyZWxhdGl2ZScgPT4gJ3JlbGF0aXZlJywgJ2Fic29sdXRlJyA9PiAnYWJzb2x1dGUnKSwgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfdXJsdHlwZScpKSk7DQoNCiRzbWFydHktPmFzc2lnbignbGlnaHRib3hfdXNlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X2xpZ2h0Ym94JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9saWdodGJveCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdsaWdodGJveCcsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfbGlnaHRib3gnKSwnMScpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd0YWJ0bycsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYnRvJywkdGFidG8pKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsNCiRzbWFydHktPmFzc2lnbigncmVzZXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3Jlc2V0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3Jlc2V0b3JpZ2luYWwnKSwgJycsICcnLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbHdhcm5pbmcnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KDQokYWxsdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsNCiRjdXJyZW50X3RlbXBsYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfJy4kc2VjdGlvbi4nX3RlbXBsYXRlJyk7DQokcm93YXJyYXkgPSBhcnJheSgpOw0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KDQpmb3JlYWNoKCAkYWxsdGVtcGxhdGVzIGFzICR0cGwgKQ0Kew0KCWlmIChzdWJzdHIoJHRwbCwwLDQpICE9ICJhbGJfIikgY29udGludWU7DQoJDQoJJHRwbHByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkdHBsKTsNCgkkcm93ID0gbmV3IFN0ZENsYXNzKCk7DQoJJHJvdy0+bmFtZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgc3RyX3JlcGxhY2UoImFsYl8iLCAiIiwgJHRwbCksIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ21vZGUnPT4nZWRpdCcsICd0YWJ0bycgPT4gJHRhYnRvKSk7DQoJJHJvdy0+dmVyc2lvbiA9ICR0cGxwcm9wc1sndmVyc2lvbiddOw0KCSRyb3ctPmFib3V0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRwbGFib3V0JywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygncHJvbXB0X2Fib3V0JyksIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ21vZGUnPT4nc2hvdycsICd0YWJ0bycgPT4gJHRhYnRvKSk7DQoJJHJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoJDQoJaWYoICR0cGwgPT0gJGN1cnJlbnRfdGVtcGxhdGUgKQ0KCXsNCgkJJHJvdy0+ZGVmYXVsdCA9ICR0cnVlaW1hZ2UxOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoZGVmYXVsdHRlbXBsYXRlJywgJHJldHVybmlkLCAkZmFsc2VpbWFnZTEsDQoJCQkJICAgICAgIGFycmF5KCd0ZW1wbGF0ZSc9PiR0cGwsICd0YWJ0bycgPT4gJHRhYnRvLCdzZWN0aW9uJz0+JHNlY3Rpb24pKTsNCgl9DQoNCgkkcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSAoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJICAgIGFycmF5ICgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2VkaXQnLCAndGFidG8nID0+ICR0YWJ0bykpOw0KCQ0KCSRyb3ctPmNvcHlsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCSAgICBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKS0+RGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2NvcHkuZ2lmJywgJHRoaXMtPkxhbmcgKCdjb3B5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkgICAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ21vZGUnPT4nYWRkJywgJ3RhYnRvJyA9PiAkdGFidG8sICdzZWN0aW9uJyA9PiAkc2VjdGlvbiwpKTsNCgkNCglpZiggJHRwbCA9PSAkY3VycmVudF90ZW1wbGF0ZSApDQoJew0KCQkkcm93LT5kZWxldGVsaW5rID0gJyZuYnNwOyc7DQoJfQ0KCWVsc2UNCgl7DQoJCSRyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19kZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkJICBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkJICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdHBsLCAndGFidG8nPT4kdGFidG8pLCAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpKTsNCgl9DQoNCgkkcm93LT5leHBvcnQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19leHBvcnR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgJzxpbWcgc3JjPSIuLi9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL3htbF9yc3MuZ2lmIiBhbHQ9IlhNTCIgLz4nLA0KCQkJCSAgICBhcnJheSgndGVtcGxhdGUnID0+ICR0cGwpKTsNCg0KCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOw0KfQ0KDQppZiAoIWNvdW50KCRyb3dhcnJheSkpIHsNCgkkcm93ID0gbmV3IFN0ZENsYXNzKCk7DQoJJHJvdy0+bmFtZSA9ICJFcyBpc3Qga2VpbiBUZW1wbGF0ZSBpbiBkZXIgRGF0ZW5iYW5rIGdlc3BlaWNoZXJ0IjsNCgkkcm93LT5kZWZhdWx0ID0gIiI7DQoJJHJvdy0+ZWRpdGxpbmsgPSAiIjsNCgkkcm93LT5jb3B5bGluayA9ICIiOw0KCSRyb3ctPmRlbGV0ZWxpbmsgPSAiIjsNCgkkcm93LT5leHBvcnQgPSAiIjsNCglhcnJheV9wdXNoICgkcm93YXJyYXksICRyb3cpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5ICk7DQoNCiRzbWFydHktPmFzc2lnbignbmV3dGVtcGxhdGVsaW5rJywNCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCSAgICAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdhZGQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3NlY3Rpb24nID0+ICRzZWN0aW9uLCAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfJy4kc2VjdGlvbi4nX2NvbnRlbnRzJyksICcnLCBmYWxzZSwgZmFsc2UsICcnKS4nICcuDQoNCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCSAgICAgJHRoaXMtPkxhbmcoJ3Byb21wdF9uZXd0ZW1wbGF0ZScpLA0KCQkJICAgICBhcnJheSgnbW9kZScgPT4gJ2FkZCcsICd0YWJ0bycgPT4gJHRhYnRvLCAnc2VjdGlvbicgPT4gJHNlY3Rpb24sICdkZWZhdWx0dGVtcGxhdGVwcmVmJyA9PiAnZGVmYXVsdF8nLiRzZWN0aW9uLidfY29udGVudHMnKSkpOw0KDQoNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnRpbXBvcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdkb19pbXBvcnR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmRpbXBvcnQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2ltcG9ydHhtbCcsICR0aGlzLT5DcmVhdGVJbnB1dEZpbGUoICRpZCwgJ2ltcG9ydHhtbCcsICd0ZXh0L3htbCcsIDMwKSk7DQokc21hcnR5LT5hc3NpZ24oJ292ZXJ3cml0ZScsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ292ZXJ3cml0ZScsICcxJywgJzEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnaW1wb3J0c3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQoNCg0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9hdXRvbGlnaHRib3gudHBsJyk7DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_csv.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ2Nzdic7DQokc2VjdGlvbiA9ICdjc3YnOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZCcsJHRoaXMpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3RhYnRvJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0dGFidG8nLCBpc3NldCgkcGFyYW1zWyd0dGFidG8nXSkgPyAkcGFyYW1zWyd0dGFidG8nXSA6ICcnKTsNCg0KLy8gRmlsZXMNCiRzbWFydHktPmFzc2lnbignY3N2ZmlsZXMnLCB0YlV0aWxzOjpnZXRDU1ZGaWxlcygkdGhpcywkdGFidG8sJ2ZpbGVzJykpOw0KDQovLyBBbGxnZW1laW4NCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnRzZXR0aW5ncycsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2FkbWluX2NzdicsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmRzZXR0aW5ncycsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbnNldHRpbmdzJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZm9ybXNlY3Rpb24nLCdzZXR0aW5ncycpLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3R0YWJ0bycsJ2FsbGdlbWVpbicpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdkZWxpbWl0ZXInLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2RlbGltaXRlcicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjc3ZfZGVsaW1pdGVyIiksIDEwKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpbGVjaGFyc2V0JywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdmaWxlY2hhcnNldCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjc3ZfZmlsZWNoYXJzZXQiKSwgMTApKTsNCiRzbWFydHktPmFzc2lnbignY21zY2hhcnNldCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnY21zY2hhcnNldCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjc3ZfY21zY2hhcnNldCIpLCAxMCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRzZXR0aW5ncycsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc2V0dGluZ3NzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbigncmVzZXRzZXR0aW5ncycsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAncmVzZXRidXR0b24nLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbCcpLCAnJywgJycsICR0aGlzLT5MYW5nKCdyZXNldG9yaWdpbmFsd2FybmluZycpKSk7DQoNCiRzdW1hcnJheSA9IHRiVXRpbHM6OmdldFRwbExpc3QoJHRoaXMsICRzZWN0aW9uLCAic3VtbWFyeSIsICAkdGFidG8sICJzdW1tYXJ5Iik7DQokZGV0YXJyYXkgPSB0YlV0aWxzOjpnZXRUcGxMaXN0KCR0aGlzLCAkc2VjdGlvbiwgImRldGFpbCIsICR0YWJ0bywgImRldGFpbCIpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3N1bW1hcnlpdGVtcycsICRzdW1hcnJheSApOw0KJHNtYXJ0eS0+YXNzaWduKCdkZXRhaWxpdGVtcycsICRkZXRhcnJheSApOw0KDQokc21hcnR5LT5hc3NpZ24oJ25ld3N1bW1hcnl0ZW1wbGF0ZWxpbmsnLA0KCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3dGVtcGxhdGUnKSwnJywnJywnc3lzdGVtaWNvbicpLA0KCQkJICAgICBhcnJheSgnbW9kZScgPT4gJ2FkZCcsICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJyA9PiAnc3VtbWFyeScsICdzZWN0aW9uJyA9PiAkc2VjdGlvbiwgJ3RwbHNlY3Rpb24nID0+ICdzdW1tYXJ5JywgJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnID0+ICdkZWZhdWx0XycuJHNlY3Rpb24uJ3N1bW1hcnlfY29udGVudHMnKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpLicgJy4NCg0KCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksDQoJCQkgICAgIGFycmF5KCdtb2RlJyA9PiAnYWRkJywgJ3RhYnRvJyA9PiAkdGFidG8sICd0dGFidG8nID0+ICdzdW1tYXJ5JywgJ3NlY3Rpb24nID0+ICRzZWN0aW9uLCAndHBsc2VjdGlvbicgPT4gJ3N1bW1hcnknLCAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfJy4kc2VjdGlvbi4nc3VtbWFyeV9jb250ZW50cycpKSk7DQoNCiRzbWFydHktPmFzc2lnbignbmV3ZGV0YWlsdGVtcGxhdGVsaW5rJywNCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCSAgICAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdhZGQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJ2RldGFpbCcsICdzZWN0aW9uJyA9PiAkc2VjdGlvbiwgJ3RwbHNlY3Rpb24nID0+ICdkZXRhaWwnLCAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfJy4kc2VjdGlvbi4nZGV0YWlsX2NvbnRlbnRzJyksICcnLCBmYWxzZSwgZmFsc2UsICcnKS4nICcuDQoNCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCSAgICAgJHRoaXMtPkxhbmcoJ3Byb21wdF9uZXd0ZW1wbGF0ZScpLA0KCQkJICAgICBhcnJheSgnbW9kZScgPT4gJ2FkZCcsICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJyA9PiAnZGV0YWlsJywgJ3NlY3Rpb24nID0+ICRzZWN0aW9uLCAndHBsc2VjdGlvbicgPT4gJ2RldGFpbCcsICdkZWZhdWx0dGVtcGxhdGVwcmVmJyA9PiAnZGVmYXVsdF8nLiRzZWN0aW9uLidkZXRhaWxfY29udGVudHMnKSkpOw0KDQoNCgkJCSAgICAgDQoNCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0aW1wb3J0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9faW1wb3J0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnLCBmYWxzZSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kaW1wb3J0JywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiRzbWFydHktPmFzc2lnbignaGlkZGVuaW1wb3J0JywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykuJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZm9ybXNlY3Rpb24nLCdpbXBvcnQnKS4kdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0dGFidG8nLCdpbXBvcnQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ltcG9ydHhtbCcsICR0aGlzLT5DcmVhdGVJbnB1dEZpbGUoICRpZCwgJ2ltcG9ydHhtbCcsICd0ZXh0L3htbCcsIDMwKSk7DQokc21hcnR5LT5hc3NpZ24oJ292ZXJ3cml0ZScsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ292ZXJ3cml0ZScsICcxJywgJzEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGltcG9ydCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnaW1wb3J0c3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQoNCi8qDQoJQ29kZSBFeGFtcGxlcw0KCS0tLS0tLS0tLS0tLS0tLS0NCgkjIGdlbmVyYWwgdXNhZ2UNCgkkY3N2ID0gbmV3IHBhcnNlQ1NWKCdkYXRhLmNzdicpOw0KCXByaW50X3IoJGNzdi0+ZGF0YSk7DQoJLS0tLS0tLS0tLS0tLS0tLQ0KCSMgdGFiIGRlbGltaXRlZCwgYW5kIGVuY29kaW5nIGNvbnZlcnNpb24NCgkkY3N2ID0gbmV3IHBhcnNlQ1NWKCk7DQoJJGNzdi0+ZW5jb2RpbmcoJ1VURi0xNicsICdVVEYtOCcpOw0KCSRjc3YtPmRlbGltaXRlciA9ICJcdCI7DQoJJGNzdi0+cGFyc2UoJ2RhdGEudHN2Jyk7DQoJcHJpbnRfcigkY3N2LT5kYXRhKTsNCgktLS0tLS0tLS0tLS0tLS0tDQoJIyBhdXRvLWRldGVjdCBkZWxpbWl0ZXIgY2hhcmFjdGVyDQoJJGNzdiA9IG5ldyBwYXJzZUNTVigpOw0KCSRjc3YtPmF1dG8oJ2RhdGEuY3N2Jyk7DQoJcHJpbnRfcigkY3N2LT5kYXRhKTsNCgktLS0tLS0tLS0tLS0tLS0tDQoJIyBtb2RpZnkgZGF0YSBpbiBhIGNzdiBmaWxlDQoJJGNzdiA9IG5ldyBwYXJzZUNTVigpOw0KCSRjc3YtPnNvcnRfYnkgPSAnaWQnOw0KCSRjc3YtPnBhcnNlKCdkYXRhLmNzdicpOw0KCSMgIjQiIGlzIHRoZSB2YWx1ZSBvZiB0aGUgImlkIiBjb2x1bW4gb2YgdGhlIENTViByb3cNCgkkY3N2LT5kYXRhWzRdID0gYXJyYXkoJ2ZpcnN0bmFtZScgPT4gJ0pvaG4nLCAnbGFzdG5hbWUnID0+ICdEb2UnLCAnZW1haWwnID0+ICdqb2huQGRvZS5jb20nKTsNCgkkY3N2LT5zYXZlKCk7DQoJLS0tLS0tLS0tLS0tLS0tLQ0KCSMgYWRkIHJvdy9lbnRyeSB0byBlbmQgb2YgQ1NWIGZpbGUNCgkjICAtIG9ubHkgcmVjb21tZW5kZWQgd2hlbiB5b3Uga25vdyB0aGUgZXh0YWN0IHNjdHJ1Y3R1cmUgb2YgdGhlIGZpbGUNCgkkY3N2ID0gbmV3IHBhcnNlQ1NWKCk7DQoJJGNzdi0+c2F2ZSgnZGF0YS5jc3YnLCBhcnJheSgnMTk4NicsICdIb21lJywgJ05vd2hlcmUnLCAnJyksIHRydWUpOw0KCS0tLS0tLS0tLS0tLS0tLS0NCgkjIGNvbnZlcnQgMkQgYXJyYXkgdG8gY3N2IGRhdGEgYW5kIHNlbmQgaGVhZGVycw0KCSMgdG8gYnJvd3NlciB0byB0cmVhdCBvdXRwdXQgYXMgYSBmaWxlIGFuZCBkb3dubG9hZCBpdA0KCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsNCgkkY3N2LT5vdXRwdXQgKHRydWUsICdtb3ZpZXMuY3N2JywgJGFycmF5KTsNCgktLS0tLS0tLS0tLS0tLS0tDQoNCg0KKi8NCg0KLy8JJGZpbGUgPSByZWFscGF0aCgkdGhpcy0+Y29uZmlnWydyb290X3BhdGgnXS4nL3VwbG9hZHMvYW50aWJhcnQtdGVzdGRhdGVuLmNzdicpOw0KLy8JDQovLwkjIHRhYiBkZWxpbWl0ZWQsIGFuZCBlbmNvZGluZyBjb252ZXJzaW9uDQovLwkkY3N2ID0gbmV3IHBhcnNlQ1NWKCk7DQovLwkkY3N2LT5lbmNvZGluZygnaXNvLTg4NTktMScsICdVVEYtOCcpOw0KLy8JJGNzdi0+ZGVsaW1pdGVyID0gIjsiOw0KLy8JJGNzdi0+cGFyc2UoJGZpbGUpOw0KLy8JcHJpbnRfcigkY3N2LT5kYXRhKTsNCg0KDQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fY3N2LnRwbCcpOw0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_debug.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ2RlYnVnJzsNCg0KLy8gU2V0IHZhcnMgYW5kIGltYWdlcw0KJGltYWdlZGVsZXRlID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCg0KLy8gR2V0IGRlYnVnDQokYWxsZGVidWcgPSAkdGJEYi0+R2V0QWxsKCdTRUxFQ1QgaWQsc2Vzc2lvbl9pZCxpcCxmcm9tdXJsLHRvdXJsLHN0YXR1cyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9kZWJ1ZyBPUkRFUiBCWSBtb2RpZmllZF9kYXRlIERFU0MnKTsNCmlmICghaXNfYXJyYXkoJGFsbGRlYnVnKSkgJGFsbGRlYnVnID0gYXJyYXkoKTsNCg0KLy8gV2FsayB0aHJvdWdoIGVycm9ycw0KJGRlYnVnYXJyYXkgPSBhcnJheSgpOw0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KZm9yZWFjaCAoICRhbGxkZWJ1ZyBhcyAkb25lZGVidWcgKSB7DQoJLy8gQnVpbGQgYSBuZXcgcm93DQoJJHJvdyA9IG5ldyBTdGRDbGFzcygpOw0KCSRyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOw0KCS8vIElEDQoJJHJvdy0+aWQgPSAkb25lZGVidWdbJ2lkJ107DQoJLy8gU3RhdHVzDQoJJHJvdy0+aXAgPSAkb25lZGVidWdbJ2lwJ107DQoJLy8gU3RhdHVzDQoJJHJvdy0+c2Vzc2lvbl9pZCA9ICRvbmVkZWJ1Z1snc2Vzc2lvbl9pZCddOw0KCS8vIEljb24NCgkkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvRElSaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5odG0obCk/KFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9IVE1MaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5jc3MoXC8pPyQvaScsJG9uZWRlYnVnWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0NTU2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwucGhwKFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9QSFBpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnR4dChcLyk/JC9pJywkb25lZGVidWdbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvVFhUaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC56aXAoXC8pPyQvaScsJG9uZWRlYnVnWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1pJUGljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwuZ2lmKFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9HSUZpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBuZyhcLyk/JC9pJywkb25lZGVidWdbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvSlBHaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5qcGcoXC8pPyQvaScsJG9uZWRlYnVnWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0pQR2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwubXAzKFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9NUDNpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLndhdihcLyk/JC9pJywkb25lZGVidWdbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvTVAzaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5hdmkoXC8pPyQvaScsJG9uZWRlYnVnWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0FWSWljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwuZmx2KFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9GTFZpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBkZihcLyk/JC9pJywkb25lZGVidWdbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvUERGaWNvbi5naWYiIC8+JzsNCglpZiAocHJlZ19tYXRjaCgnLy4qXC5kb2MoXC8pPyQvaScsJG9uZWRlYnVnWyd0b3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0RPQ2ljb24uZ2lmIiAvPic7DQoJaWYgKHByZWdfbWF0Y2goJy8uKlwueGxzKFwvKT8kL2knLCRvbmVkZWJ1Z1sndG91cmwnXSkpICRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9YTFNpY29uLmdpZiIgLz4nOw0KCWlmIChwcmVnX21hdGNoKCcvLipcLnBwdChcLyk/JC9pJywkb25lZGVidWdbJ3RvdXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvUFBUaWNvbi5naWYiIC8+JzsNCgkvLyBGcm9tIFVSTA0KCSRyb3ctPmZyb211cmwgPSBzdHJsZW4oJG9uZWRlYnVnWydmcm9tdXJsJ10pPD0zMCAJPyAnPGEgaHJlZj0iJy4kb25lZGVidWdbJ2Zyb211cmwnXS4nIiB0aXRsZT0iJy4kb25lZGVidWdbJ2Zyb211cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy5wcmVnX3JlcGxhY2UoJy9eaHR0cChzKT86XC9cLy8nLCcnLCRvbmVkZWJ1Z1snZnJvbXVybCddKS4nPC9hPicNCgkJCQkJCQkJCQkJCQkJOiAnPGEgaHJlZj0iJy4kb25lZGVidWdbJ2Zyb211cmwnXS4nIiB0aXRsZT0iJy4kb25lZGVidWdbJ2Zyb211cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy5zdWJzdHIocHJlZ19yZXBsYWNlKCcvXmh0dHAocyk/OlwvXC8vJywnJywkb25lZGVidWdbJ2Zyb211cmwnXSksMCwxNSkuJy4uLi4nLnN1YnN0cigkb25lZGVidWdbJ2Zyb211cmwnXSwtMTUpLic8L2E+JzsNCgkvLyBUbyBVUkwNCgkkcm93LT50b3VybCA9ICc8YSBocmVmPSInLiRvbmVkZWJ1Z1sndG91cmwnXS4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kb25lZGVidWdbJ3RvdXJsJ10uJzwvYT4nOw0KCSRyb3ctPnRvdXJsID0gc3RybGVuKCRvbmVkZWJ1Z1sndG91cmwnXSk8PTMwIAk/ICc8YSBocmVmPSInLiRvbmVkZWJ1Z1sndG91cmwnXS4nIiB0aXRsZT0iJy4kb25lZGVidWdbJ3RvdXJsJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGljb24uJyAnLnByZWdfcmVwbGFjZSgnL15odHRwKHMpPzpcL1wvLycsJycsJG9uZWRlYnVnWyd0b3VybCddKS4nPC9hPicNCgkJCQkJCQkJCQkJCQk6ICc8YSBocmVmPSInLiRvbmVkZWJ1Z1sndG91cmwnXS4nIiB0aXRsZT0iJy4kb25lZGVidWdbJ3RvdXJsJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJGljb24uJyAnLnN1YnN0cihwcmVnX3JlcGxhY2UoJy9eaHR0cChzKT86XC9cLy8nLCcnLCRvbmVkZWJ1Z1sndG91cmwnXSksMCwxNSkuJy4uLi4nLnN1YnN0cigkb25lZGVidWdbJ3RvdXJsJ10sLTE1KS4nPC9hPic7DQoJLy8gU3RhdHVzDQoJJHN0YXR1cyA9ICRvbmVkZWJ1Z1snc3RhdHVzJ109PSdvaycgPyAnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzBhMDsiPicuJG9uZWRlYnVnWydzdGF0dXMnXS4nPC9zcGFuPicgOiAkb25lZGVidWdbJ3N0YXR1cyddOw0KCWlmIChzdWJzdHIoJG9uZWRlYnVnWydzdGF0dXMnXSwwLDMpPT0nNDA0JykgJHN0YXR1cyA9ICc8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojYTAwOyI+Jy4kb25lZGVidWdbJ3N0YXR1cyddLic8L3NwYW4+JzsNCglpZiAoc3Vic3RyKCRvbmVkZWJ1Z1snc3RhdHVzJ10sMCwzKT09JzMwMScpICRzdGF0dXMgPSAnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6Izk2MDsiPicuc3Vic3RyKCRvbmVkZWJ1Z1snc3RhdHVzJ10sMCwzKS4nPC9zcGFuPicuc3Vic3RyKCRvbmVkZWJ1Z1snc3RhdHVzJ10sMyk7DQoJJHJvdy0+c3RhdHVzID0gJHN0YXR1czsNCgkvLyBDcmVhdGVkIGRhdGUNCgkkcm93LT5jcmVhdGVkID0gJG9uZWRlYnVnWydjcmVhdGVkX2RhdGUnXTsNCgkvLyBNb2RpZmllZCBkYXRlDQoJJHJvdy0+bW9kaWZpZWQgPSAkb25lZGVidWdbJ21vZGlmaWVkX2RhdGUnXTsNCgkvLyBCdWlsZCBkZWxldGUgaWNvbg0KCSRyb3ctPmRlbGV0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRtaW5fZGVsZXRlZGVidWcnLCAkcmV0dXJuaWQsICRpbWFnZWRlbGV0ZSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8sICdkZWJ1Zyc9PiRvbmVkZWJ1Z1snaWQnXSApLCAkdGhpcy0+TGFuZygncmVhbGx5ZGVsZXRlJyksIGZhbHNlLCBmYWxzZSwgJyB0aXRsZT0iJy4kdGhpcy0+TGFuZygnZGVsZXRlJykuJyInKTsNCgkvLyBNZXJnZSBuZXcgZG9tYWluIHRvIGFycmF5DQoJYXJyYXlfcHVzaCAoJGRlYnVnYXJyYXksICRyb3cpOw0KCS8vIEFsdGVybmF0ZSByb3cgY29sb3INCgkoJHJvd2NsYXNzID09ICdyb3cxJyA/ICRyb3djbGFzcyA9ICdyb3cyJyA6ICRyb3djbGFzcyA9ICdyb3cxJyk7DQp9DQoNCi8vIEFzc2lnbiBzbWFydHkgdmFycw0KJHNtYXJ0eS0+YXNzaWduKCdkZWJ1Z3MnLCAkZGVidWdhcnJheSApOw0KJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsNCiRzbWFydHktPmFzc2lnbignaXAnLCAkdGhpcy0+TGFuZygnaXAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Nlc3Npb25faWQnLCAkdGhpcy0+TGFuZygnc2Vzc2lvbl9pZCcpKTsNCiRzbWFydHktPmFzc2lnbignZnJvbXVybCcsICR0aGlzLT5MYW5nKCdmcm9tdXJsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0b3VybCcsICR0aGlzLT5MYW5nKCd0YXJnZXR1cmwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXR1cycsICR0aGlzLT5MYW5nKCdzdGF0dXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWQnLCAkdGhpcy0+TGFuZygnY3JlYXRlZCcpKTsNCiRzbWFydHktPmFzc2lnbignbW9kaWZpZWQnLCAkdGhpcy0+TGFuZygnbW9kaWZpZWQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RpbWUnLCAkdGhpcy0+TGFuZygndGltZScpKTsNCiRzbWFydHktPmFzc2lnbignZGVidWcnLCAkdGhpcy0+TGFuZygnZGVidWcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RlYnVnX2xvZycsICR0aGlzLT5MYW5nKCdkZWJ1Z19sb2cnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RlbGV0ZWFsbGxpbmsnLCAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRtaW5fZGVsZXRlZGVidWdzJywgJHJldHVybmlkLCAkaW1hZ2VkZWxldGUuJyAnLiR0aGlzLT5MYW5nKCdkZWxldGVhbGwnKSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8gKSwgJHRoaXMtPkxhbmcoJ3JlYWxseWRlbGV0ZScpLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ2RlbGV0ZWFsbCcpLiciJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0YWJ0bycsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYnRvJywkdGFidG8pKTsNCg0KLy8gRGlzcGxheSBUZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9kZWJ1Zy50cGwnKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/function.admin_main.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ21haW4nOw0KDQovLyBBc3NpZ24gU21hcnR5IHZhcnMNCi8vJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9taW4nLCRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnLHRydWUsYXJyYXkoKSkpOw0KLy8kc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KLy8kc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCi8vJHNtYXJ0eS0+YXNzaWduKCd0YWJ0bycsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykpOw0KDQokYWN0aXZlID0gYXJyYXkoKTsNCiRpbmFjdGl2ZSA9IGFycmF5KCk7DQoNCi8vIGV2ZW50aGFuZGxlcg0KaWYgKCR0aGlzLT5MYW5nKCdkb250X3VzZV9ldmVudF9oYW5kbGVyJykgPT0gMCkNCgkkYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9ldmVudF9oYW5kbGVyX2FjdGl2ZScpOw0KZWxzZQ0KCSRpbmFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fZXZlbnRfaGFuZGxlcl9pbmFjdGl2ZScpOwkNCg0KLy8gc3RhdHMNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfdXNlJykpCQ0KCSRhY3RpdmVbXSA9ICR0aGlzLT5MYW5nKCdtYWluX3N0YXRzX2FjdGl2ZScpOw0KZWxzZQ0KCSRpbmFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fc3RhdHNfaW5hY3RpdmUnKTsNCg0KLy8gNDA0IFN0YXRzDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzXzQwNCcpKQkNCgkkYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9zdGF0c180MDRfYWN0aXZlJyk7DQplbHNlDQoJJGluYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9zdGF0c180MDRfaW5hY3RpdmUnKTsNCgkNCi8vIG9sZCB1cmwNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZScpKQkNCgkkYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9vbGR1cmxfYWN0aXZlJyk7DQplbHNlDQoJJGluYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9vbGR1cmxfaW5hY3RpdmUnKTsNCg0KLy9hdXRvbGlnaHRib3gNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3VzZScpKQkNCgkkYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9hdXRvbGlnaHRib3hfYWN0aXZlJyk7DQplbHNlDQoJJGluYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9hdXRvbGlnaHRib3hfaW5hY3RpdmUnKTsJDQoJDQovLyB0YmltYWdlDQoJJGFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ3RiaW1hZ2UnKTsNCgkNCi8vc29jaWFsc2hhcmVwcml2YWN5DQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnKSkJDQoJJGFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fc29jaWFsc2hhcmVwcml2YWN5X2FjdGl2ZScpOw0KZWxzZQ0KCSRpbmFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fc29jaWFsc2hhcmVwcml2YWN5X2luYWN0aXZlJyk7CQ0KCQ0KLy9zb2NpYWxzaGFyZXByaXZhY3kNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfdXNlJykpCQ0KCSRhY3RpdmVbXSA9ICR0aGlzLT5MYW5nKCdwcm9tcHRfdHdpdHRlcmZlZWRfdGl0bGUnKTsNCmVsc2UNCgkkaW5hY3RpdmVbXSA9ICR0aGlzLT5MYW5nKCdwcm9tcHRfdHdpdHRlcmZlZWRfdGl0bGUnKTsJDQoJDQovLyB0YWlsDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfdXNlJykpCQ0KCSRhY3RpdmVbXSA9ICR0aGlzLT5MYW5nKCdtYWluX3RhaWxfYWN0aXZlJyk7DQplbHNlDQoJJGluYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl90YWlsX2luYWN0aXZlJyk7DQoJDQovLyBkZWJ1Zw0KaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWJ1Z191c2UnKSkJDQoJJGFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fZGVidWdfYWN0aXZlJyk7DQplbHNlDQoJJGluYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9kZWJ1Z19pbmFjdGl2ZScpOw0KCQ0KLy8gU21hcnR5IFBsdWdpbnMNCiRhY3RpdmVbXSA9ICR0aGlzLT5MYW5nKCdtYWluX3NtYXJ0eXBsdWdpbnNfYWN0aXZlJyk7DQoNCi8vTW9iaWxlIERldGVjdA0KJGFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fbW9iaWxlZGV0ZWN0X2FjdGl2ZScpOw0KDQovLyBUb29sQm94IEZ1bmN0aW9ucw0KJGFjdGl2ZVtdID0gJHRoaXMtPkxhbmcoJ21haW5fZnVuY3Rpb25zX2FjdGl2ZScpOw0KDQovLyBUb29sQm94IE1vZGlmaWVyDQokYWN0aXZlW10gPSAkdGhpcy0+TGFuZygnbWFpbl9tb2RpZmllcl9hY3RpdmUnKTsNCg0KDQokc21hcnR5LT5hc3NpZ24oJ2FjdGl2ZScsJGFjdGl2ZSk7DQokc21hcnR5LT5hc3NpZ24oJ2luYWN0aXZlJywkaW5hY3RpdmUpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hY3RpdmUnLCR0aGlzLT5MYW5nKCdhY3RpdmUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pbmFjdGl2ZScsJHRoaXMtPkxhbmcoJ2luYWN0aXZlJykpOw0KDQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X21heF80MDQnLCR0aGlzLT5MYW5nKCdtYWluX21heF80MDQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21heF80MDQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfNDA0JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3RhdHNfZGFpbHknLCR0aGlzLT5MYW5nKCdtYWluX3N0YXRzX2RhaWx5JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGF0c19kYWlseScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzX2RhaWx5JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc3RhdHNfZW1haWwnLCR0aGlzLT5MYW5nKCdtYWluX3N0YXRzX2VtYWlsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdGF0c19lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzX2VtYWlsJykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FjdGl2ZWl0ZW1zJywkYWN0aXZlKTsNCiRzbWFydHktPmFzc2lnbignaW5hY3RpdmVpdGVtcycsJGluYWN0aXZlKTsNCg0KDQovLyBEaXNwbGF5IFRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX21haW4udHBsJyk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_moduleops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ21vZHVsZW9wcyc7DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCR0aGlzLT5MYW5nKCdiYWNrdXByZWNvdmVyeScpKTsNCiRzbWFydHktPmFzc2lnbignZGVzY3JpcHRpb24nLCcnKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbmFtZScsbGFuZygnbmFtZScpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3ZlcnNpb24nLGxhbmcoJ3ZlcnNpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdGF0dXMnLCR0aGlzLT5MYW5nKCdwcm9tcHRfYWN0aXZlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXhwb3J0JyxsYW5nKCdleHBvcnQnKSk7DQokc21hcnR5LT5hc3NpZ24oIm1vZHVsZXMiLHRiTW9kdWxlT3BzOjpsaXN0TW9kdWxlcygpKTsNCgkgDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydGltcG9ydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX21vZHVsZW9wcycsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmRpbXBvcnQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLA0KCQkJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYnRvJywkdGFidG8pIC4NCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdtb2RlJywnaW1wb3J0JykNCgkJCSk7DQoNCiRzbWFydHktPmFzc2lnbigndGl0bGVfaW1wb3J0eG1sJywkdGhpcy0+TGFuZygndGl0bGVfaW1wb3J0eG1sJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbXBvcnR4bWxub3RlJyxubDJicigkdGhpcy0+TGFuZygnaW1wb3J0eG1sbm90ZScpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pbXBvcnR4bWwnLCR0aGlzLT5MYW5nKCdpbXBvcnR4bWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ltcG9ydHhtbCcsICR0aGlzLT5DcmVhdGVJbnB1dEZpbGUoICRpZCwgJ2ltcG9ydHhtbCcsICd0ZXh0L3htbCcsIDMwKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnaW1wb3J0c3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQoNCg0KLy8gRGlzcGxheSBUZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9tb2R1bGVvcHMudHBsJyk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRiVGFiVG8gPSAncHJlZnMnOw0KDQovLyBBc3NpZ24gU21hcnR5IHZhcnMNCiRzbWFydHktPmFzc2lnbignbW9kJywkdGhpcyk7DQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3ByZWZzJywkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJyx0cnVlLGFycmF5KCkpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbigndGFidG8nLCR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3RhYnRvJywkdGJUYWJUbykpOw0KDQovLyBVc2UgVG9vbEJveCB3aXRoIEV2ZW50LUhhbmRsZXIgb3Igbm90DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RvbnRfdXNlX2V2ZW50X2hhbmRsZXInLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnZG9udF91c2VfZXZlbnRfaGFuZGxlcicsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkb250X3VzZV9ldmVudF9oYW5kbGVyJyksJycpKTsNCg0KLy8gRGlmZmVyZW50IHNldHRpbmdzDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N0YXRzX3VzZScsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdzdGF0c191c2UnLCcxJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfdXNlJyksJycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3RhdHNfNDA0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3N0YXRzXzQwNCcsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0c180MDQnKSwnJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9tYXhfNDA0JywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbWF4XzQwNCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF80MDQnKSw1LDEwKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N0YXRzX2RhaWx5JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3N0YXRzX2RhaWx5JywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzX2RhaWx5JyksJycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3RhdHNfZW1haWwnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdzdGF0c19lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0YXRzX2VtYWlsJyksMzAsMTAwKSk7DQoNCi8vIDMwMSBGb3J3YXJkaW5nIHVzZQ0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9vbGR1cmxfdXNlJywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ29sZHVybF91c2UnLCcxJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZScpLCcnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X29sZHVybF91c2VfY2RhdGUnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnb2xkdXJsX3VzZV9jZGF0ZScsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlX2NkYXRlJyksJycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfb2xkdXJsX3VzZV9tZGF0ZScsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdvbGR1cmxfdXNlX21kYXRlJywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2VfbWRhdGUnKSwnJykpOw0KDQovLyBTb2NpYWwgTWVkaWEgQnV0dG9ucyB1c2UNCiRzbWFydHktPmFzc2lnbignaW5wdXRfc29jaWFsc2hhcmVwcml2YWN5X3VzZScsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdzb2NpYWxzaGFyZXByaXZhY3lfdXNlJywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnKSwnJykpOw0KDQovLyBBdXRvTGlnaHRCb3ggdXNlDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2F1dG9saWdodGJveF91c2UnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnYXV0b2xpZ2h0Ym94X3VzZScsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfdXNlJyksJycpKTsNCg0KLy9Ud2l0dGVyZmVlZCB1c2UNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdHdpdHRlcmZlZWRfdXNlJywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3R3aXR0ZXJmZWVkX3VzZScsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF91c2UnKSwnJykpOw0KDQovL0NTViB1c2UNCiRzbWFydHktPmFzc2lnbignaW5wdXRfY3N2X3VzZScsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdjc3ZfdXNlJywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nzdl91c2UnKSwnJykpOw0KDQovLyBUYWlsIHVzZQ0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90YWlsX3VzZScsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCd0YWlsX3VzZScsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0YWlsX3VzZScpLCcnKSk7DQoNCi8vIE1vZHVsZW9wcyB1c2UNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X21vZHVsZW9wc191c2UnLCR0aGlzLT5MYW5nKCdtb2R1bGVvcHNfdXNlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9tb2R1bGVvcHNfdXNlJywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ21vZHVsZW9wc191c2UnLCcxJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbW9kdWxlb3BzX3VzZScpLCcnKSk7DQoNCi8vIERlYnVnIHVzZQ0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZWJ1Z191c2UnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnZGVidWdfdXNlJywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlYnVnX3VzZScpLCcnKSk7DQoNCi8vIEphdmFzY3JpcHQgaW4gRm9vdGVyIGVpbmJpbmRlbg0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9qc19mb290ZXInLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnanNfZm9vdGVyJywnMScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2pzX2Zvb3RlcicpLCcnKSk7DQoNCi8vIE1pbmlmeSBKYXZhc2NyaXB0IHVuZCBDU1MNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbWluaWZ5JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ21pbmlmeScsJzEnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5pZnknKSwnJykpOw0KDQovLyBDaGVjaywgd2hldGhlciBNdWx0aURvbWFpbnMgdGFibGVzIGV4aXN0cw0KJHRhYmxlcyA9ICR0YkRiLT5HZXRDb2woJ1NIT1cgVEFCTEVTJywgYXJyYXkoKSk7DQokbWRfdGFibGVzX2V4aXN0ID0gMDsNCmlmIChpbl9hcnJheShjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tdWx0aWRvbWFpbnNfcmVkaXJlY3QnLCR0YWJsZXMpIHx8IGluX2FycmF5KGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX211bHRpZG9tYWluc19lcnJvcnMnLCR0YWJsZXMpIHx8IGluX2FycmF5KGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX211bHRpZG9tYWluc19lcnJvcnNfaWdub3JlJywkdGFibGVzKSkgew0KCSRtZF90YWJsZXNfZXhpc3QgPSAxOw0KfQ0KLy8gTXVsdGlEb21haW5zIGltcG9ydA0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbXBvcnRfbXVsdGlkb21haW5zJywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2ltcG9ydF9tdWx0aWRvbWFpbnMnLCcxJywnMCcsJycpKTsNCiRzbWFydHktPmFzc2lnbignaGVscF9pbXBvcnRfbXVsdGlkb21haW5zJywkdGhpcy0+TGFuZygnaW1wb3J0X211bHRpZG9tYWluc19oZWxwJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1wb3J0X211bHRpZG9tYWluc19jb3VudCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ltcG9ydF9tdWx0aWRvbWFpbnNfY291bnQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbXBvcnRfbXVsdGlkb21haW5zX2NvdW50JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdtZF90YWJsZXNfZXhpc3QnLCRtZF90YWJsZXNfZXhpc3QpOw0KLy8gR2V0IHZlcnNpb24gb2YgTXVsdGlEb21haW5zDQokbWRfdmVyc2lvbiA9ICR0YkRiLT5HZXRPbmUoJ1NFTEVDVCB2ZXJzaW9uIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZXMgV0hFUkUgbW9kdWxlX25hbWUgbGlrZSAiTXVsdGlEb21haW5zIicsIGFycmF5KCkpOw0KaWYgKCEkbWRfdmVyc2lvbikgJG1kX3ZlcnNpb24gPSAnMC4wJzsNCiRtZF9vbGQgPSAwOw0KaWYgKChmbG9hdCkkbWRfdmVyc2lvbj4wLjAgJiYgKGZsb2F0KSRtZF92ZXJzaW9uPDIuMCkgJG1kX29sZCA9IDE7DQokc21hcnR5LT5hc3NpZ24oJ21kX29sZCcsJG1kX29sZCk7DQovLyBEZWxldGUgb2xkIE11bHRpRG9tYWlucyB0YWJsZXMNCiRzbWFydHktPmFzc2lnbignaW5wdXRfZHJvcF9tdWx0aWRvbWFpbnMnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnZHJvcF9tdWx0aWRvbWFpbnMnLCcxJywnMCcsJycpKTsNCg0KLy8gRGlzcGxheSBUZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9wcmVmcy50cGwnKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/function.admin_redirects.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3JlZGlyZWN0cyc7DQoNCi8vIERpc3BsYXkgZm9ybSBmb3IgZWRpdGluZyBhIHJlZGlyZWN0IHVybA0KaWYgKGlzc2V0KCRwYXJhbXNbJ3JlZGlyZWN0J10pKSB7DQoNCgkvLyBHZXQgUmVkaXJlY3QgSUQNCgkkcmVkaXJlY3QgPSAoaW50KSRwYXJhbXNbJ3JlZGlyZWN0J107DQoJLy8gR2V0IFVSTA0KCSR1cmwgPSBpc3NldCgkcGFyYW1zWydydXJsJ10pID8gdHJpbSh1cmxkZWNvZGUoJHBhcmFtc1sncnVybCddKSkgOiAnJzsNCgkvLyBHZXQgZG9tYWluIGluZm8NCglpZiAoJHJlZGlyZWN0KSB7ICRyZWRpcmVjdGluZm8gPSAkdGJEYi0+R2V0Um93KCdTRUxFQ1QgcGFnZV9pZCx0b3VybCx1cmwsdXJsX3JlZ2V4cCxhY3RpdmUsbm90ZXMsY3JlYXRlZF9kYXRlLG1vZGlmaWVkX2RhdGUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgV0hFUkUgaWQgPSA/JywgYXJyYXkoJHJlZGlyZWN0KSk7IH0NCgllbHNlIHsgJHJlZGlyZWN0aW5mbyA9IGFycmF5ICggJ3BhZ2VfaWQnPT4wLCd0b3VybCc9PicnLCd1cmwnPT4nJywndXJsX3JlZ2V4cCc9PjAsJ2FjdGl2ZSc9PjAsJ25vdGVzJz0+JycgKTsgfQ0KICAgIC8vIEFzc2lnbiBTbWFydHkgdmFycw0KICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fZWRpdHJlZGlyZWN0JywkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJyx0cnVlLGFycmF5KCkpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJHJlZGlyZWN0ID8gJ3N1Ym1pdCc6ICdhZGQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOw0KICAgICRzbWFydHktPmFzc2lnbignY2FjaGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCRyZWRpcmVjdCA/ICdjYWNoZScgOiAnY2FjaGVhZGQnLCR0aGlzLT5MYW5nKCdjYWNoZScpKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdyZXNldCcsICR0aGlzLT5DcmVhdGVJbnB1dFJlc2V0KCRpZCwncmVzZXQnLCR0aGlzLT5MYW5nKCdyZXNldCcpKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLCR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOw0KICAgICRzbWFydHktPmFzc2lnbigndGFidG8nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0YWJ0bycsJHRhYnRvKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdyZWRpcmVjdCcsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3JlZGlyZWN0JywkcmVkaXJlY3QpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0ZWRpdCcsICR0aGlzLT5MYW5nKCdyZWRpcmVjdGVkaXQnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdXJsJywgJHRoaXMtPkxhbmcoJ3VybCcpKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3VybCcsICR1cmwgPyAkdXJsIDogJHJlZGlyZWN0aW5mb1sndXJsJ10pOw0KCSRzbWFydHktPmFzc2lnbigncHJvbXB0X3JlZGlyZWN0aWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdzaG93X2NkYXRlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2VfY2RhdGUnKSA/ICcxJyA6ICcwJyk7DQoJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfY2RhdGUnLCAkdGhpcy0+TGFuZygnZGF0ZV9jcmVhdGVkJykpOw0KCSRzbWFydHktPmFzc2lnbignY2RhdGUnLCAkcmVkaXJlY3QgPyAkcmVkaXJlY3RpbmZvWydjcmVhdGVkX2RhdGUnXSA6ICcnKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3Nob3dfbWRhdGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZV9tZGF0ZScpID8gJzEnIDogJzAnKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9tZGF0ZScsICR0aGlzLT5MYW5nKCdkYXRlX21vZGlmaWVkJykpOw0KCSRzbWFydHktPmFzc2lnbignbWRhdGUnLCAkcmVkaXJlY3QgPyAkcmVkaXJlY3RpbmZvWydtb2RpZmllZF9kYXRlJ10gOiAnJyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF91cmwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwndXJsJywkdXJsID8gJHVybCA6ICRyZWRpcmVjdGluZm9bJ3VybCddLDgwLDIwMCkpOw0KICAgICRzbWFydHktPmFzc2lnbigncHJvbXB0X3BhZ2UnLCAkdGhpcy0+TGFuZygndGFyZ2V0cGFnZScpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BhZ2UnLCR0YkNvbnRlbnRPcHMtPkNyZWF0ZUhpZXJhcmNoeURyb3Bkb3duKCcnLCRyZWRpcmVjdGluZm9bJ3BhZ2VfaWQnXSwkaWQuJ3BhZ2UnLDAsMSwwLDEpKTsgLy8gY3VycmVudCwgcGFyZW50LCBwYXJlbnRfaWQsIGFsbG93Y3VycmVudCwgdXNlX3Blcm1zLCBpZ25vcmVfY3VycmVudCwgYWxsb3dfYWxsDQoJJHNtYXJ0eS0+YXNzaWduKCdhbHRlcm5hdGl2ZV91cmwnLCAkdGhpcy0+TGFuZygnYWx0ZXJuYXRpdmVfdXJsJykpOw0KCSRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXJsJywgJHRoaXMtPkxhbmcoJ3RhcmdldHVybCcpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RvdXJsJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3RvdXJsJywkcmVkaXJlY3RpbmZvWyd0b3VybCddLDgwLDI1MCkpOw0KCSRzbWFydHktPmFzc2lnbigndG91cmwnLCB0cmltKCRyZWRpcmVjdGluZm9bJ3RvdXJsJ10pKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZWdleHAnLCAkdGhpcy0+TGFuZygncmVnZXhwJykpOw0KCSRzbWFydHktPmFzc2lnbignaW5wdXRfcmVnZXhwJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAncmVnZXhwJywgJ3RydWUnLCAkcmVkaXJlY3RpbmZvWyd1cmxfcmVnZXhwJ10gPyAndHJ1ZScgOiAnZmFsc2UnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfYWN0aXZlJywgJHRoaXMtPkxhbmcoJ2FjdGl2ZScpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X2FjdGl2ZScsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2FjdGl2ZScsICd0cnVlJywgJHJlZGlyZWN0aW5mb1snYWN0aXZlJ10gPyAndHJ1ZScgOiAnZmFsc2UnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbm90ZXMnLCAkdGhpcy0+TGFuZygnbm90ZXMnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdkb21haW5fbm90ZXMnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJHJlZGlyZWN0aW5mb1snbm90ZXMnXSwgJ25vdGVzJywgJ3BhZ2VzbWFsbHRleHRhcmVhJykpOw0KICAgIC8vIERpc3BsYXkgVGVtcGxhdGUNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2VkaXRyZWRpcmVjdC50cGwnKTsNCg0KfQ0KLy8gRGlzcGxheSBhIGxpc3Qgd2l0aCBhdmFpbGFibGUgcmVkaXJlY3QgdXJscw0KZWxzZSB7DQoNCgkvLyBTZXQgdmFycyBhbmQgaW1hZ2VzDQoJJGltYWdldmlldyA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCR0aGlzLT5MYW5nKCd2aWV3JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkaW1hZ2VpbmZvID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9ydW4uZ2lmJywkdGhpcy0+TGFuZygncmVnZXhwJyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkaW1hZ2Vub3N0YW5kYXJkID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCR0aGlzLT5MYW5nKCdtYWtlc3RhbmRhcmQnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCSRpbWFnZWluYWN0aXZlID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCR0aGlzLT5MYW5nKCdtYWtlYWN0aXZlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkaW1hZ2VzdGFuZGFyZCA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCR0aGlzLT5MYW5nKCdzdGFuZGFyZCcpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoJJGltYWdlYWN0aXZlID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsJHRoaXMtPkxhbmcoJ21ha2VpbmFjdGl2ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoJJGltYWdlZWRpdCA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCR0aGlzLT5MYW5nKCdlZGl0JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkkaW1hZ2VkZWxldGUgPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCR0aGlzLT5MYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCSRpbWFnZW5ldyA9ICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsJHRoaXMtPkxhbmcoJ25ld3RlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCg0KCS8vIEdldCByZWRpcmVjdHMNCgkkYWxscmVkaXJlY3RzID0gJHRiRGItPkdldEFsbCgnU0VMRUNUIGlkLHBhZ2VfaWQsdG91cmwsdXJsLHVybF9yZWdleHAsYWN0aXZlLG5vdGVzLERBVEUoY3JlYXRlZF9kYXRlKSBjZGF0ZSxEQVRFKG1vZGlmaWVkX2RhdGUpIG1kYXRlIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X3JlZGlyZWN0Jyk7DQoJaWYgKCFpc19hcnJheSgkYWxscmVkaXJlY3RzKSkgJGFsbHJlZGlyZWN0cyA9IGFycmF5KCk7DQoNCgkvLyBMaXN0IHJlZGlyZWN0cw0KCSRyb3dhcnJheSA9IGFycmF5KCk7DQoJJHJvd2NsYXNzID0gJ3JvdzEnOw0KCWZvcmVhY2ggKCAkYWxscmVkaXJlY3RzIGFzICRvbmVyZWRpcmVjdCApIHsNCgkJLy8gQnVpbGQgYSBuZXcgcm93DQoJCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJJHJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoJCS8vIElEDQoJCSRyb3ctPmlkID0gJG9uZXJlZGlyZWN0WydpZCddOw0KCQkvLyBEYXRlcw0KCQkkcm93LT5jZGF0ZSA9ICRvbmVyZWRpcmVjdFsnY2RhdGUnXTsNCgkJJHJvdy0+bWRhdGUgPSAkb25lcmVkaXJlY3RbJ21kYXRlJ107DQoJCS8vIFJlZ0V4cCBJbmZvDQoJCSRyb3ctPnJlZ2V4cCA9ICRvbmVyZWRpcmVjdFsndXJsX3JlZ2V4cCddOw0KCQkvLyBJY29uDQoJCSRpY29uID0gJzxpbWcgc3JjPSIvbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9ESVJpY29uLmdpZiIgLz4nOw0KCQlpZiAocHJlZ19tYXRjaCgnLy4qXC5odG0obCk/KFwvKT8kL2knLCRvbmVyZWRpcmVjdFsndXJsJ10pKSAkaWNvbiA9ICc8aW1nIHNyYz0iL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvSFRNTGljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmNzcyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0NTU2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnBocChcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1BIUGljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnR4dChcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1RYVGljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnppcChcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1pJUGljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmdpZihcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0dJRmljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnBuZyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0pQR2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmpwZyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0pQR2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLm1wMyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL01QM2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLndhdihcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL01QM2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmF2aShcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0FWSWljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmZsdihcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0ZMVmljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnBkZihcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1BERmljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLmRvYyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL0RPQ2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnhscyhcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1hMU2ljb24uZ2lmIiAvPic7DQoJCWlmIChwcmVnX21hdGNoKCcvLipcLnBwdChcLyk/JC9pJywkb25lcmVkaXJlY3RbJ3VybCddKSkgJGljb24gPSAnPGltZyBzcmM9Ii9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL1BQVGljb24uZ2lmIiAvPic7DQoJCS8vIEJ1aWxkIHJlZGlyZWN0IHdpdGggZWRpdCBsaW5rDQoJCSRyb3ctPnVybCA9IHN0cmxlbigkb25lcmVkaXJlY3RbJ3VybCddKTw9MzAJPyAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRtaW5fZWRpdHJlZGlyZWN0JywgJHJldHVybmlkLCAkaWNvbi4nICcucHJlZ19yZXBsYWNlKCcvXmh0dHAocyk/OlwvXC8vJywnJywkb25lcmVkaXJlY3RbJ3VybCddKSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8sICdyZWRpcmVjdCc9PiRvbmVyZWRpcmVjdFsnaWQnXSApLCAnJywgZmFsc2UsIGZhbHNlLCAnIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdlZGl0JykuJyInKQ0KCQkJCQkJCQkJCQkJCTogJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkbWluX2VkaXRyZWRpcmVjdCcsICRyZXR1cm5pZCwgJGljb24uJyAnLnN1YnN0cihwcmVnX3JlcGxhY2UoJy9eaHR0cChzKT86XC9cLy8nLCcnLCRvbmVyZWRpcmVjdFsndXJsJ10pLDAsMTUpLicuLi4uJy5zdWJzdHIoJG9uZXJlZGlyZWN0Wyd1cmwnXSwtMTUpLCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0bywgJ3JlZGlyZWN0Jz0+JG9uZXJlZGlyZWN0WydpZCddICksICcnLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJG9uZXJlZGlyZWN0Wyd1cmwnXS4nIicpOw0KCQkkcm93LT52dXJsID0gJG9uZXJlZGlyZWN0Wyd1cmwnXTsNCgkJLy8gUGFnZSAob3IgVVJMKQ0KCQlpZiAodHJpbSgkb25lcmVkaXJlY3RbJ3RvdXJsJ10pKSB7DQoJCQkkcm93LT5wYWdlID0gc3RybGVuKCRvbmVyZWRpcmVjdFsndG91cmwnXSk8PTMwIAk/ICc8YSBocmVmPSInLiRvbmVyZWRpcmVjdFsndG91cmwnXS4nIiB0aXRsZT0iJy4kb25lcmVkaXJlY3RbJ3RvdXJsJ10uJyIgdGFyZ2V0PSJfYmxhbmsiPicuJG9uZXJlZGlyZWN0Wyd0b3VybCddLic8L2E+Jw0KCQkJCQkJCQkJCQkJCQkJOiAnPGEgaHJlZj0iJy4kb25lcmVkaXJlY3RbJ3RvdXJsJ10uJyIgdGl0bGU9IicuJG9uZXJlZGlyZWN0Wyd0b3VybCddLiciIHRhcmdldD0iX2JsYW5rIj4nLnN1YnN0cigkb25lcmVkaXJlY3RbJ3RvdXJsJ10sMCwzMCkuJy4uLi48L2E+JzsNCgkJfSBlbHNlIHsNCgkJCSRwYWdlaW5mbyA9ICR0YkRiLT5HZXRSb3coJ1NFTEVDVCBtZW51X3RleHQsaGllcmFyY2h5LGNvbnRlbnRfYWxpYXMgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBjb250ZW50X2lkID0gPycsIGFycmF5KCRvbmVyZWRpcmVjdFsncGFnZV9pZCddKSk7DQoJCQkkaGllcmFyY2hpZXMgPSBleHBsb2RlKCcuJywkcGFnZWluZm9bJ2hpZXJhcmNoeSddKTsNCgkJCWZvcmVhY2ggKCRoaWVyYXJjaGllcyBhcyAkaz0+JGgpICRoaWVyYXJjaGllc1ska109KGludCkkaDsNCgkJCSRyb3ctPnBhZ2UgPSAkcGFnZWluZm9bJ21lbnVfdGV4dCddLicgPGVtPignLmltcGxvZGUoJy4nLCRoaWVyYXJjaGllcykuJyAtLSZndDsgJy4kcGFnZWluZm9bJ2NvbnRlbnRfYWxpYXMnXS4nKTwvZW0+JzsNCgkJfQ0KCQkvLyBCdWlsZCBsaW5rIGZvciBkZS0vYWN0aXZhdGUgdGhlIHJlZGlyZWN0IHVybA0KCQkkYWN0aXZlID0gJG9uZXJlZGlyZWN0WydhY3RpdmUnXSA/IDEgOiAwOw0KCQlpZiAoICRhY3RpdmUgKSB7ICRyb3ctPmFjdGl2ZSA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdhZG1pbl9yZWRpcmVjdGFjdGl2ZScsICRyZXR1cm5pZCwgJGltYWdlYWN0aXZlLCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0bywgJ3JlZGlyZWN0Jz0+JG9uZXJlZGlyZWN0WydpZCddLCAnYWN0aXZlJz0+MCApLCAkdGhpcy0+TGFuZygncmVhbGx5bWFrZWluYWN0aXZlJyksIGZhbHNlLCBmYWxzZSwgJyB0aXRsZT0iJy4kdGhpcy0+TGFuZygnbWFrZWluYWN0aXZlJykuJyInKTsgfQ0KCQllbHNlIHsgJHJvdy0+YWN0aXZlID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkbWluX3JlZGlyZWN0YWN0aXZlJywgJHJldHVybmlkLCAkaW1hZ2VpbmFjdGl2ZSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8sICdyZWRpcmVjdCc9PiRvbmVyZWRpcmVjdFsnaWQnXSwgJ2FjdGl2ZSc9PjEgKSwgJHRoaXMtPkxhbmcoJ3JlYWxseW1ha2VhY3RpdmUnKSwgZmFsc2UsIGZhbHNlLCAnIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdtYWtlYWN0aXZlJykuJyInKTsgfQ0KCQkvLyBCdWlsZCBlZGl0IGljb24NCgkJJHJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRtaW5fZWRpdHJlZGlyZWN0JywgJHJldHVybmlkLCAkaW1hZ2VlZGl0LCBhcnJheSAoICd0YWJ0byc9PiR0YWJ0bywgJ3JlZGlyZWN0Jz0+JG9uZXJlZGlyZWN0WydpZCddICksICcnLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ2VkaXQnKS4nIicpOw0KCQkvLyBCdWlsZCBkZWxldGUgaWNvbg0KCQkkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkbWluX2RlbGV0ZXJlZGlyZWN0JywgJHJldHVybmlkLCAkaW1hZ2VkZWxldGUsIGFycmF5ICggJ3RhYnRvJz0+JHRhYnRvLCAncmVkaXJlY3QnPT4kb25lcmVkaXJlY3RbJ2lkJ10gKSwgJHRoaXMtPkxhbmcoJ3JlYWxseWRlbGV0ZScpLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLiciJyk7DQoJCS8vIE1lcmdlIG5ldyByZWRpcmVjdCB0byBhcnJheQ0KCQlhcnJheV9wdXNoICgkcm93YXJyYXksICRyb3cpOw0KCQkvLyBBbHRlcm5hdGUgcm93IGNvbG9yDQoJCSgkcm93Y2xhc3MgPT0gJ3JvdzEnID8gJHJvd2NsYXNzID0gJ3JvdzInIDogJHJvd2NsYXNzID0gJ3JvdzEnKTsNCgl9DQoNCgkvLyBBc3NpZ24gc21hcnR5IHZhcnMNCgkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5ICk7DQoJJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jZGF0ZScsICR0aGlzLT5MYW5nKCdkYXRlX2NyZWF0ZWQnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdjZGF0ZScsICRyZWRpcmVjdCA/ICRyZWRpcmVjdGluZm9bJ2NyZWF0ZWRfZGF0ZSddIDogJycpOw0KCSRzbWFydHktPmFzc2lnbignc2hvd19jZGF0ZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlX2NkYXRlJykgPyAnMScgOiAnMCcpOw0KCSRzbWFydHktPmFzc2lnbigncHJvbXB0X21kYXRlJywgJHRoaXMtPkxhbmcoJ2RhdGVfbW9kaWZpZWQnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdzaG93X21kYXRlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2VfbWRhdGUnKSA/ICcxJyA6ICcwJyk7DQoJJHNtYXJ0eS0+YXNzaWduKCd2aWV3aWNvbicsICRpbWFnZXZpZXcpOw0KCSRzbWFydHktPmFzc2lnbignaW5mb2ljb24nLCAkaW1hZ2VpbmZvKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3ZpZXcnLCAkdGhpcy0+TGFuZygndmlldycpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3VybCcsICR0aGlzLT5MYW5nKCd1cmwnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdwYWdlJywgJHRoaXMtPkxhbmcoJ3BhZ2UnKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdhY3RpdmUnLCAkdGhpcy0+TGFuZygnYWN0aXZlJykpOw0KCSRzbWFydHktPmFzc2lnbignbmV3cmVkaXJlY3RsaW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkbWluX2VkaXRyZWRpcmVjdCcsICRyZXR1cm5pZCwgJGltYWdlbmV3LicgJy4kdGhpcy0+TGFuZygnbmV3cmVkaXJlY3QnKSwgYXJyYXkgKCAndGFidG8nPT4kdGFidG8sICdyZWRpcmVjdCc9PicnICksICcnLCBmYWxzZSwgZmFsc2UsICcgdGl0bGU9IicuJHRoaXMtPkxhbmcoJ25ld3JlZGlyZWN0JykuJyInKSk7DQoJIyRzbWFydHktPmFzc2lnbigkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2xpc3RyZWRpcmVjdHMudHBsJyk7DQoNCn0NCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/function.admin_socialshareprivacy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3NvY2lhbHNoYXJlcHJpdmFjeSc7DQokdGVtcGxhdGUgPSAic29jaWFsc2hhcmVwcml2YWN5IjsNCg0KJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdhZG1pbl9zb2NpYWxzaGFyZXByaXZhY3knLCRyZXR1cm5pZCwncG9zdCcsJycsIHRydWUsIGFycmF5KCkpKTsNCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVuYW1lJywkdGVtcGxhdGUpOw0KJGNvbnRlbnRzID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZSk7DQokdGVtcGxhdGVwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJHRlbXBsYXRlKTsNCg0KJGNvbnRlbnRzY29kZSA9IGV4cGxvZGUoVE9PTEJPWF9TRVBBUkFUT1IsICRjb250ZW50cyk7DQoNCiRjb250ZW50ID0gaXNzZXQoJGNvbnRlbnRzY29kZVswXSkgPyAkY29udGVudHNjb2RlWzBdIDogJyc7DQokc3R5bGVzaGVldCA9IGlzc2V0KCRjb250ZW50c2NvZGVbMV0pID8gJGNvbnRlbnRzY29kZVsxXSA6ICcnOw0KJGphdmFzY3JpcHQgPSBpc3NldCgkY29udGVudHNjb2RlWzJdKSA/IHRyaW0oJGNvbnRlbnRzY29kZVsyXSwnKn0nKSA6ICcnOw0KDQokaW5mb2xpbmsgPSBpc3NldCgkdGVtcGxhdGVwcm9wc1snaW5mb2xpbmsnXSkgPyAkdGVtcGxhdGVwcm9wc1snaW5mb2xpbmsnXSA6ICcnOw0KJGFkdmFuY2VkID0gaXNzZXQoJHRlbXBsYXRlcHJvcHNbJ2FkdmFuY2VkJ10pID8gJHRlbXBsYXRlcHJvcHNbJ2FkdmFuY2VkJ10gOiAwOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd2ZXJzaW9uJywgJHRlbXBsYXRlcHJvcHNbJ3ZlcnNpb24nXSkgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnc2VjdGlvbicsICR0ZW1wbGF0ZXByb3BzWydzZWN0aW9uJ10pIC4NCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3RhYnRvJywgJHRhYnRvKSANCgkpOw0KDQoNCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCR0aGlzLT5MYW5nKCdzb2NpYWxzaGFyZXByaXZhY3lfdGl0bGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uJywkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X2Rlc2NyaXB0aW9uJykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2luZm9saW5rJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnaW5mb2xpbmsnLCAkaW5mb2xpbmssIDgwKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pbmZvbGluaycsJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfaW5mb2xpbmsnKSk7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfanF1ZXJ5JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2pxdWVyeScsJzEnLCR0ZW1wbGF0ZXByb3BzWydqcXVlcnknXSwnMScpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2pxdWVyeScsJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfanF1ZXJ5JykpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2FkdmFuY2VkX3VzZScsJGFkdmFuY2VkKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfYWR2YW5jZWQnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnYWR2YW5jZWQnLCcxJywkYWR2YW5jZWQsJzEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hZHZhbmNlZCcsJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfYWR2YW5jZWQnKSk7DQoNCiRzbWFydHktPmFzc2lnbigicHJvbXB0X3RlbXBsYXRlX2luZm8iLCR0aGlzLT5MYW5nKCdzb2NpYWxzaGFyZXByaXZhY3lfcHJvbXB0X3RlbXBsYXRlX2luZm8nKSk7DQoNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlJywkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF90ZW1wbGF0ZScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSAoJGlkLCAkY29udGVudHNjb2RlWzBdLCAndGVtcGxhdGVjb250ZW50JywndGJfdGV4dGFyZWEnLCcnLCcnLCcnLCc4MCcsJzUnKSk7DQoJCQkJICAgIA0KJHNtYXJ0eS0+YXNzaWduKCdzbWFydHl0YWdzJywkdGhpcy0+TGFuZygnc21hcnR5dGFncycpKTsNCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlY3NzJywkdGhpcy0+TGFuZygnc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF90ZW1wbGF0ZWNzcycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGVjc3MnLCAkdGhpcy0+Q3JlYXRlU3ludGF4QXJlYSAoJGlkLCAkc3R5bGVzaGVldCwgJ3RlbXBsYXRlY3NzJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVqcycsJHRoaXMtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfdGVtcGxhdGVqcycpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGVqcycsICR0aGlzLT5DcmVhdGVTeW50YXhBcmVhICgkaWQsICRqYXZhc2NyaXB0LCAndGVtcGxhdGVqcycpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsNCiRzbWFydHktPmFzc2lnbigncmVzZXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3Jlc2V0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3Jlc2V0b3JpZ2luYWwnKSwgJycsICcnLCAkdGhpcy0+TGFuZygncmVzZXRvcmlnaW5hbHdhcm5pbmcnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdpbXBvcnR0ZW1wbGF0ZWxpbmsnLA0KCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkZ0Ntcy0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X2ltcG9ydHRlbXBsYXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdpbXBvcnQnLCAndGFidG8nID0+ICdzb2NpYWxzaGFyZXByaXZhY3knKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpLicgJy4NCg0KCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJICAgICAkdGhpcy0+TGFuZygncHJvbXB0X2ltcG9ydHRlbXBsYXRlJyksDQoJCQkgICAgIGFycmF5KCdtb2RlJyA9PiAnaW1wb3J0JywgJ3RhYnRvJyA9PiAnc29jaWFsc2hhcmVwcml2YWN5JykpKTsNCg0KCQkJICAgICANCiRzbWFydHktPmFzc2lnbignZXhwb3J0dGVtcGxhdGVsaW5rJywNCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RvX2V4cG9ydHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCSAgICAnPGltZyBzcmM9Ii4uL21vZHVsZXMvVG9vbEJveC9pbWFnZXMveG1sX3Jzcy5naWYiIGFsdD0iWE1MIiAvPicsDQoJCQkJICAgIGFycmF5KCdzZWN0aW9uJyA9PiAnc29jaWFsc2hhcmVwcml2YWN5JywndGVtcGxhdGUnID0+ICdzb2NpYWxzaGFyZXByaXZhY3knKSkgLiAiICIgLg0KDQoJICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19leHBvcnR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCSAgICAgJHRoaXMtPkxhbmcoJ2V4cG9ydF90ZW1wbGF0ZScpLA0KCQkJICAgICBhcnJheSgnc2VjdGlvbicgPT4gJ3NvY2lhbHNoYXJlcHJpdmFjeScsJ3RlbXBsYXRlJyA9PiAnc29jaWFsc2hhcmVwcml2YWN5JykpKTsNCgkJCSAgICAgDQoJCQkgICAgIA0KDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3NvY2lhbHNoYXJlcHJpdmFjeS50cGwnKTsNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.admin_stats.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3N0YXRzJzsNCg0KLy8gRGF0dW0gZXJtaXR0ZWxuDQokbGRheSA9IChpbnQpZGF0ZSgnZCcsIHRpbWUoKSAtIDg2NDAwKTsNCiRsbW9udGggPSAoaW50KWRhdGUoJ20nLHN0cnRvdGltZSgnLTEgbW9udGgnKSk7DQokbHllYXIgPSAoaW50KWRhdGUoJ1knLHN0cnRvdGltZSgnLTEgeWVhcicpKTsNCg0KLy8gQXNzaWduIFNtYXJ0eSB2YXJzDQokc21hcnR5LT5hc3NpZ24oJ3RhYnRvJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd0YWJ0bycsJHRhYnRvKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RheXNfcmVkaXJlY3QnLCBnZXRMb2dTdW0oJGxkYXksJ2RheScpICk7DQokc21hcnR5LT5hc3NpZ24oJ21vbnRoc19yZWRpcmVjdCcsIGdldExvZ1N1bSgkbG1vbnRoLCdtb250aCcpICk7DQokc21hcnR5LT5hc3NpZ24oJ3llYXJzX3JlZGlyZWN0JywgZ2V0TG9nU3VtKCRseWVhciwneWVhcicpICk7DQokc21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0JywkdGhpcy0+TGFuZygncmVkaXJlY3QnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cycsJHRoaXMtPkxhbmcoJ3JlZGlyZWN0cycpKTsNCiRzbWFydHktPmFzc2lnbigncGFnZScsJHRoaXMtPkxhbmcoJ3BhZ2UnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Zpc2l0cycsJHRoaXMtPkxhbmcoJ3Zpc2l0cycpKTsNCiRzbWFydHktPmFzc2lnbignc2VhcmNoZW5naW5lJywkdGhpcy0+TGFuZygnc2VhcmNoZW5naW5lJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdrZXl3b3JkJywkdGhpcy0+TGFuZygna2V5d29yZCcpKTsNCiRzbWFydHktPmFzc2lnbigncmVmZXJlcicsJHRoaXMtPkxhbmcoJ3JlZmVyZXInKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RheScsJHRoaXMtPkxhbmcoJ2RheScpKTsNCiRzbWFydHktPmFzc2lnbignZGF5cycsJHRoaXMtPkxhbmcoJ2RheXMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21vbnRoJywkdGhpcy0+TGFuZygnbW9udGgnKSk7DQokc21hcnR5LT5hc3NpZ24oJ21vbnRocycsJHRoaXMtPkxhbmcoJ21vbnRocycpKTsNCiRzbWFydHktPmFzc2lnbigneWVhcicsJHRoaXMtPkxhbmcoJ3llYXInKSk7DQokc21hcnR5LT5hc3NpZ24oJ3llYXJzJywkdGhpcy0+TGFuZygneWVhcnMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXRzX2RhaWx5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfZGFpbHknKSA/IDEgOiAwKTsNCiRzbWFydHktPmFzc2lnbignb2xkdXJsX3VzZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2UnKSA/IDEgOiAwKTsNCg0KLy8gRGlzcGxheSBUZW1wbGF0ZQ0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9zdGF0cy50cGwnKTsNCg0KZnVuY3Rpb24gZ2V0TG9nU3VtICgkdiwkcGVyaW9kKSB7DQoJLy8gU2V0IGRiDQoJJHRiRGIgPSBjbXNtcygpLT5HZXREYigpOw0KCS8vIEdldCBkYXRhDQoJJGRhdGEgPSAkdGJEYi0+R2V0QWxsKCdTRUxFQ1QgdXJsLHBhZ2VfaWQsdmlzaXRzLHNlYXJjaGVuZ2luZSxrZXl3b3JkLHJlZmVyZXIgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nc3VtIFdIRVJFIHBlcmlvZD0/IEFORCB2YWx1ZT0/IE9SREVSIEJZIHVybCcsYXJyYXkoJHBlcmlvZCwoaW50KSR2KSk7DQoJaWYgKCFpc19hcnJheSgkZGF0YSkpICRkYXRhID0gYXJyYXkoKTsNCgkvLyBMaXN0IGRhdGENCgkkcmVzdWx0ID0gYXJyYXkoKTsNCgkkcm93Y2xhc3MgPSAncm93MSc7DQoJZm9yZWFjaCAoICRkYXRhIGFzICRkICkgew0KCQkvLyBCdWlsZCBhIG5ldyByb3cNCgkJJHJvdyA9IG5ldyBTdGRDbGFzcygpOw0KCQkkcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsNCgkJLy8gVVJMDQoJCSRyb3ctPnVybCA9ICRkWyd1cmwnXTsNCgkJLy8gUGFnZQ0KCQkkcm93LT5wYWdlX2lkID0gJGRbJ3BhZ2VfaWQnXTsNCgkJaWYgKCRyb3ctPnBhZ2VfaWQpICRwYWdlaW5mbyA9ICR0YkRiLT5HZXRSb3coJ1NFTEVDVCBtZW51X3RleHQsaGllcmFyY2h5LGNvbnRlbnRfYWxpYXMgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBjb250ZW50X2lkID0gPycsIGFycmF5KCRkWydwYWdlX2lkJ10pKTsNCgkJaWYgKCRwYWdlaW5mbykgew0KCQkJJGhpZXJhcmNoaWVzID0gZXhwbG9kZSgnLicsJHBhZ2VpbmZvWydoaWVyYXJjaHknXSk7DQoJCQlmb3JlYWNoICgkaGllcmFyY2hpZXMgYXMgJGs9PiRoKSAkaGllcmFyY2hpZXNbJGtdPShpbnQpJGg7DQoJCQkkcm93LT5wYWdlID0gJHBhZ2VpbmZvWydtZW51X3RleHQnXS4nIDxlbT4oJy5pbXBsb2RlKCcuJywkaGllcmFyY2hpZXMpLic6Jy4kcGFnZWluZm9bJ2NvbnRlbnRfYWxpYXMnXS4nKTwvZW0+JzsNCgkJfQ0KCQkvLyBWaXNpdHMNCgkJJHJvdy0+dmlzaXRzID0gJGRbJ3Zpc2l0cyddOw0KCQkvLyBTZWFyY2ggRW5naW5lDQoJCSRyb3ctPnNlYXJjaGVuZ2luZSA9ICRkWydzZWFyY2hlbmdpbmUnXTsNCgkJLy8gS2V5d29yZA0KCQkkcm93LT5rZXl3b3JkID0gJGRbJ2tleXdvcmQnXTsNCgkJLy8gUmVmZXJlcg0KCQkkcm93LT5yZWZlcmVyID0gJGRbJ3JlZmVyZXInXTsNCgkJLy8gTWVyZ2UgbmV3IHJlZGlyZWN0IHRvIGFycmF5DQoJCWFycmF5X3B1c2ggKCRyZXN1bHQsICRyb3cpOw0KCQkvLyBBbHRlcm5hdGUgcm93IGNvbG9yDQoJCSgkcm93Y2xhc3MgPT0gJ3JvdzEnID8gJHJvd2NsYXNzID0gJ3JvdzInIDogJHJvd2NsYXNzID0gJ3JvdzEnKTsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_tail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KQXV0aG9yOiBMdWthcyBCbGF0dGVyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCi8vIENoZWNrIGF1dGhvcmlzYXRpb24JDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3RhaWwnOw0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2xvZ1VwZGF0ZXInLCRyZXR1cm5pZCwncG9zdCcsJycsIHRydWUsIGFycmF5KCkpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCR0aGlzKTsNCg0KDQokbG9nZmlsZXMgPSBzY2FuZGlyKCR0aGlzLT50YkxvZ1BhdGgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRsb2dmaWxlcyBhcyAkZmlsZSkgew0KCWlmICgkZmlsZSAhPSAnLi4nIGFuZCAkZmlsZSAhPSAnLicgYW5kICRmaWxlICE9ICcuaHRhY2Nlc3MnKSB7DQoJCWlmIChmaWxlX2V4aXN0cygkdGhpcy0+dGJMb2dQYXRoLiRmaWxlKSkgew0KCQkJJGZpbGVzWyRmaWxlXSA9ICRmaWxlOw0KCQl9DQoJfQ0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdsb2dGaWxlJywgJGZpbGVzLCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfZmlsZScpLCdpZD0idGFpbGxvZ2ZpbGUiJykpOw0KDQoNCiRsaW5lcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0YWlsX2xvZ2xpbmVzJyk7DQppZiAoISRsaW5lcykgJGxpbmVzID0gMjA7DQoNCiRzbWFydHktPmFzc2lnbignaW5wdXRfbGluZXMnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdsb2dMaW5lcycsJGxpbmVzLDEwLDEwMCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3RhYnRvJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0YlRhYlRvJywgJHRhYnRvKTsNCg0KaWYgKGlzc2V0KCRfU0VTU0lPTlsndGJMb2dSdW4nXSkgYW5kICRfU0VTU0lPTlsndGJMb2dSdW4nXSkgew0KCSRsb2dMaW5lcyA9IHRiTG9nVXBkYXRlcjo6Z2V0TG9nTGluZXMoJHRoaXMtPnRiTG9nUGF0aC4kdGhpcy0+R2V0UHJlZmVyZW5jZSgndGFpbF9maWxlJyksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0YWlsX2xvZ2xpbmVzJykpOyANCgkNCgkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X2xvZycsJHRoaXMtPkNyZWF0ZVN5bnRheEFyZWEoJGlkLCRsb2dMaW5lcywnbG9nJywnJywndGFpbGxvZ2FyZWEnLCcnLCcnLDEyMCwzMCwncmVhZG9ubHk9InJlYWRvbmx5IicpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdG9wYnV0dG9uJywgJHRoaXMtPkxhbmcoJ3RhaWxfc3RvcCcpKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdzaG93Zm9ybScsZmFsc2UpOw0KfQ0KZWxzZSB7DQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3RhcnRidXR0b24nLCAkdGhpcy0+TGFuZygndGFpbF9zdGFydCcpKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdzaG93Zm9ybScsdHJ1ZSk7DQp9CQ0KDQoNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fdGFpbC50cGwnKTsNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.admin_tbimage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3RiaW1hZ2UnOw0KJHNtYXJ0eS0+YXNzaWduKCd0dGFidG8nLCBpc3NldCgkcGFyYW1zWyd0dGFidG8nXSkgPyAkcGFyYW1zWyd0dGFidG8nXSA6ICdtYW51YWwnKTsNCg0KJHBvc2l0aW9uID0gYXJyYXkoCSAkdGhpcy0+TGFuZygidGJpbWFnZV9sdCIpID0+ICdMVCcgDQoJCQkJCSwkdGhpcy0+TGFuZygidGJpbWFnZV9tdCIpID0+ICdNVCcNCgkJCQkJLCR0aGlzLT5MYW5nKCJ0YmltYWdlX3J0IikgPT4gJ1JUJw0KCQkJCQksJHRoaXMtPkxhbmcoInRiaW1hZ2VfbG0iKSA9PiAnTE0nDQoJCQkJCSwkdGhpcy0+TGFuZygidGJpbWFnZV9tbSIpID0+ICdNTScNCgkJCQkJLCR0aGlzLT5MYW5nKCJ0YmltYWdlX3JtIikgPT4gJ1JNJw0KCQkJCQksJHRoaXMtPkxhbmcoInRiaW1hZ2VfbGIiKSA9PiAnTEInDQoJCQkJCSwkdGhpcy0+TGFuZygidGJpbWFnZV9tYiIpID0+ICdNQicNCgkJCQkJLCR0aGlzLT5MYW5nKCJ0YmltYWdlX3JiIikgPT4gJ1JCJw0KCQkJCQkpOw0KDQokc21hcnR5LT5hc3NpZ24oInRiaW1hZ2Vwb3NoZWxwIiwnPGltZyBzcmM9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvUEhQSW1hZ2VXb3Jrc2hvcC1CaWxkYmVyZWljaGUuanBnIiB3aWR0aD0iNTk1IiBoZWlnaHQ9IjM5NSIgYWx0PSJ0YmltYWdlIHBvc2l0aW9uIGhlbHAiIC8+Jyk7DQoJCQkJCQ0KDQovLyBBc3NpZ24gU21hcnR5IHZhcnMNCiRzbWFydHktPmFzc2lnbignbW9kJywkdGhpcyk7DQokc21hcnR5LT5hc3NpZ24oJ3dtdGZvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3RiaW1hZ2UnLCRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnLHRydWUsYXJyYXkoKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCd3bWlmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl90YmltYWdlJywkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJyx0cnVlLGFycmF5KCkpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCd3bXRoaWRkZW4nLA0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndGFidG8nLCAkdGFidG8pIC4gDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdmb3Jtc2VjdGlvbicsICd3bXQnKSAuIA0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndHRhYnRvJywgIndtdCIpIA0KCSk7DQokc21hcnR5LT5hc3NpZ24oJ3dtaWhpZGRlbicsDQoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0YWJ0bycsICR0YWJ0bykgLg0KCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZm9ybXNlY3Rpb24nLCAnd21pJykgLiANCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3R0YWJ0bycsICJ3bWkiKSANCgkpOw0KCQ0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOw0KDQoNCi8vIFdhdGVybWFyayBUZXh0DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0d210X3RleHQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd3bXRfdGV4dCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bXRfdGV4dCcpLCA4MCkpOw0KLy8kc21hcnR5LT5hc3NpZ24oJ2lucHV0d210X2ZvbnQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd3bXRfZm9udCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bXRfZm9udCcpLCA1MCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHdtdF9mb250JywgJHRoaXMtPkNyZWF0ZUlucHV0RmlsZSggJGlkLCAnd210X2ZvbnQnLCAnZm9udC9vcGVudHlwZScsIDUwKSk7DQokc21hcnR5LT5hc3NpZ24oJ3dtdF9mb250JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dtdF9mb250JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHdtdF9zaXplJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnd210X3NpemUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd210X3NpemUnKSwgNSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHdtdF9jb2xvcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3dtdF9jb2xvcicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bXRfY29sb3InKSwgMTApKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR3bXRfb3BhY2l0eScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3dtdF9vcGFjaXR5JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dtdF9vcGFjaXR5JyksIDUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR3bXRfcG9zeCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3dtdF9wb3N4JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dtdF9wb3N4JyksIDUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR3bXRfcG9zeScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3dtdF9wb3N5JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dtdF9wb3N5JyksIDUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR3bXRfcG9zJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd3bXRfcG9zJywgJHBvc2l0aW9uLCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dtdF9wb3MnKSkpOw0KDQovLyBXYXRlcm1hcmsgSW1hZ2UNCiRzbWFydHktPmFzc2lnbignaW5wdXR3bWlfaW1hZ2UnLCAkdGhpcy0+Q3JlYXRlSW5wdXRGaWxlKCAkaWQsICd3bWlfaW1hZ2UnLCAnaW1hZ2UvKicsIDUwKSk7DQokc21hcnR5LT5hc3NpZ24oJ3dtaV9pbWFnZScsIHN0cl9yZXBsYWNlKCJcXCIsIi8iLHN0cl9yZXBsYWNlKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCAkY29uZmlnWyd1cGxvYWRzX3VybCddLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd21pX2ltYWdlJykpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0d21pX3JlbHNpemUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd3bWlfcmVsc2l6ZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bWlfcmVsc2l6ZScpLCA1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0d21pX3Bvc3gnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd3bWlfcG9zeCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bWlfcG9zeCcpLCA1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0d21pX3Bvc3knLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICd3bWlfcG9zeScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bWlfcG9zeScpLCA1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0d21pX3BvcycsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnd21pX3BvcycsICRwb3NpdGlvbiwgLTEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3bWlfcG9zJykpKTsNCg0KDQovLyBEaXNwbGF5IFRlbXBsYXRlDQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX3RiaW1hZ2UudHBsJyk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_twitterfeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KaWYgKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKSApIGV4aXQ7DQoNCi8vIFNldCBUYWIgbmFtZQ0KJHRhYnRvID0gJ3R3aXR0ZXJmZWVkJzsNCiRzZWN0aW9uID0gJ3R3aXR0ZXJmZWVkJzsNCg0KJHRoZW1lT2JqZWN0ID0gY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyk7IC8vICAmICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXTsNCiRmYWxzZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywkdGhpcy0+TGFuZyAoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KJHRydWVpbWFnZTEgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywkdGhpcy0+TGFuZyAoJ2RlZmF1bHQnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KJGZhbHNlaW1hZ2UyID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCR0aGlzLT5MYW5nICgnbWFrZXZpc2libGUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KJHRydWVpbWFnZTIgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywkdGhpcy0+TGFuZyAoJ21ha2VpbnZpc2libGUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KDQokc21hcnR5LT5hc3NpZ24oJ21vZCcsJHRoaXMpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2FkbWluX3R3aXR0ZXJmZWVkJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLCB0cnVlLCBhcnJheSgpKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RhYnRvJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykpOw0KDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3R3aXR0ZXJmZWVkX29rJykpIHsNCgkkc21hcnR5LT5hc3NpZ24oJ2NvbnN1bWVya2V5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfY29uc3VtZXJLZXknKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCdjb25zdW1lcnNlY3JldCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0d2l0dGVyZmVlZF9jb25zdW1lclNlY3JldCcpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3R3YnV0dG9uJywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAncmVzZXRidXR0b24nLCAkdGhpcy0+TGFuZygncmVzZXR0d2l0dGVyZmVlZCcpLCAnJywgJycsICR0aGlzLT5MYW5nKCdyZXNldHR3aXR0ZXJmZWVkd2FybmluZycpKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCd0d2l0dGVyZmVlZF9vaycsdHJ1ZSk7DQp9DQplbHNlIHsNCgkkc21hcnR5LT5hc3NpZ24oJ2NvbnN1bWVya2V5JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnY29uc3VtZXJrZXknLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfY29uc3VtZXJLZXknKSwgODApKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2NvbnN1bWVyc2VjcmV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnY29uc3VtZXJzZWNyZXQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndHdpdHRlcmZlZWRfY29uc3VtZXJTZWNyZXQnKSwgODApKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3R3YnV0dG9uJywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdGJ1dHRvbicsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQoNCg0KJGFsbHRlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCk7DQokY3VycmVudF90ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50XycuJHNlY3Rpb24uJ190ZW1wbGF0ZScpOw0KJHJvd2FycmF5ID0gYXJyYXkoKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCg0KZm9yZWFjaCggJGFsbHRlbXBsYXRlcyBhcyAkdHBsICkNCnsNCglpZiAoc3Vic3RyKCR0cGwsMCw0KSAhPSAidHdmXyIpIGNvbnRpbnVlOw0KCQ0KCSR0cGxwcm9wcyA9IHRiVXRpbHM6OmdldFRlbXBsYXRlUHJvcHMoJHRwbCk7DQoJJHJvdyA9IG5ldyBTdGRDbGFzcygpOw0KCSRyb3ctPm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsIHN0cl9yZXBsYWNlKCJ0d2ZfIiwgIiIsICR0cGwpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2VkaXQnLCAndGFidG8nID0+ICR0YWJ0bykpOw0KCSRyb3ctPnZlcnNpb24gPSAkdHBscHJvcHNbJ3ZlcnNpb24nXTsNCgkkcm93LT5hYm91dCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0cGxhYm91dCcsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ3Byb21wdF9hYm91dCcpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J3Nob3cnLCAndGFidG8nID0+ICR0YWJ0bykpOw0KCSRyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOw0KCQ0KCWlmKCAkdHBsID09ICRjdXJyZW50X3RlbXBsYXRlICkNCgl7DQoJCSRyb3ctPmRlZmF1bHQgPSAkdHJ1ZWltYWdlMTsNCgl9DQoJZWxzZQ0KCXsNCgkJJHJvdy0+ZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3N3aXRjaGRlZmF1bHR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGZhbHNlaW1hZ2UxLA0KCQkJCSAgICAgICBhcnJheSgndGVtcGxhdGUnPT4kdHBsLCAndGFidG8nID0+ICR0YWJ0bywnc2VjdGlvbic9PiRzZWN0aW9uKSk7DQoJfQ0KDQoJJHJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkJICAgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UgKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLA0KCQkJCSAgICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdHBsLCAnbW9kZSc9PidlZGl0JywgJ3RhYnRvJyA9PiAkdGFidG8pKTsNCgkNCgkkcm93LT5jb3B5bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkgICAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSAoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICR0aGlzLT5MYW5nICgnY29weScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJICAgIGFycmF5ICgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2FkZCcsICd0YWJ0bycgPT4gJHRhYnRvLCAnc2VjdGlvbicgPT4gJHNlY3Rpb24sKSk7DQoJDQoJaWYoICR0cGwgPT0gJGN1cnJlbnRfdGVtcGxhdGUgKQ0KCXsNCgkJJHJvdy0+ZGVsZXRlbGluayA9ICcmbmJzcDsnOw0KCX0NCgllbHNlDQoJew0KCQkkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fZGVsZXRldGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkJCSAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJCSAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ3RhYnRvJz0+JHRhYnRvKSwgJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKSk7DQoJfQ0KDQoJJHJvdy0+ZXhwb3J0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fZXhwb3J0dGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkJICAgICc8aW1nIHNyYz0iLi4vbW9kdWxlcy9Ub29sQm94L2ltYWdlcy94bWxfcnNzLmdpZiIgYWx0PSJYTUwiIC8+JywNCgkJCQkgICAgYXJyYXkoJ3RlbXBsYXRlJyA9PiAkdHBsKSk7DQoNCglhcnJheV9wdXNoICgkcm93YXJyYXksICRyb3cpOw0KCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsNCn0NCg0KaWYgKCFjb3VudCgkcm93YXJyYXkpKSB7DQoJJHJvdyA9IG5ldyBTdGRDbGFzcygpOw0KCSRyb3ctPm5hbWUgPSAiRXMgaXN0IGtlaW4gVGVtcGxhdGUgaW4gZGVyIERhdGVuYmFuayBnZXNwZWljaGVydCI7DQoJJHJvdy0+ZGVmYXVsdCA9ICIiOw0KCSRyb3ctPmVkaXRsaW5rID0gIiI7DQoJJHJvdy0+Y29weWxpbmsgPSAiIjsNCgkkcm93LT5kZWxldGVsaW5rID0gIiI7DQoJJHJvdy0+ZXhwb3J0ID0gIiI7DQoJYXJyYXlfcHVzaCAoJHJvd2FycmF5LCAkcm93KTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSApOw0KDQokc21hcnR5LT5hc3NpZ24oJ25ld3RlbXBsYXRlbGluaycsDQoJICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkgICAgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9uZXd0ZW1wbGF0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksDQoJCQkgICAgIGFycmF5KCdtb2RlJyA9PiAnYWRkJywgJ3RhYnRvJyA9PiAkdGFidG8sICdzZWN0aW9uJyA9PiAkc2VjdGlvbiwgJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnID0+ICdkZWZhdWx0XycuJHNlY3Rpb24uJ19jb250ZW50cycpLCAnJywgZmFsc2UsIGZhbHNlLCAnJykuJyAnLg0KDQoJICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkgICAgICR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3dGVtcGxhdGUnKSwNCgkJCSAgICAgYXJyYXkoJ21vZGUnID0+ICdhZGQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3NlY3Rpb24nID0+ICRzZWN0aW9uLCAnZGVmYXVsdHRlbXBsYXRlcHJlZicgPT4gJ2RlZmF1bHRfJy4kc2VjdGlvbi4nX2NvbnRlbnRzJykpKTsNCg0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydGltcG9ydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2ltcG9ydHRlbXBsYXRlJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgZmFsc2UpKTsNCiRzbWFydHktPmFzc2lnbignZm9ybWVuZGltcG9ydCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RhYnRvJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndGFidG8nLCR0YWJ0bykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbXBvcnR4bWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRGaWxlKCAkaWQsICdpbXBvcnR4bWwnLCAndGV4dC94bWwnLCAzMCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdvdmVyd3JpdGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdvdmVyd3JpdGUnLCAnMScsICcxJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2ltcG9ydHN1Ym1pdGJ1dHRvbicsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOw0KDQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fdHdpdHRlcmZlZWQudHBsJyk7DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/functions/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/functions/tbfunctions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZToJCVRvb2xCb3gNClRpdGxlOgkJRXh0ZW5kZWQgZnVuY3Rpb25zDQpEZXNjcmlwdC46CVNtYXJ0eS1mdW5jdGlvbnMgZm9yIHNvbWUgdXNlZnVsIGZ1bmN0aW9ucw0KTGFzdCBNb2QuOgkyMC4wMS4yMDEyDQpBdXRob3I6CQlMdWthcyBCbGF0dGVyDQpFbWFpbDoJCWx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2gNCk5vdGVzOg0KTGljZW5jZToJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCgkJCWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQoJCQl0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KCQkJKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCgkJCUhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KCQkJYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQoJCQlpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQoJCQlNYWRlIFNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4NCgkJCXNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBTaW1wbGUuDQoJCQlGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ01TIE1hZGUgU2ltcGxlIG9uIGl0cyB3ZWJzaXRlOg0KCQkJaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy8NCgkJCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KCQkJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCgkJCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCgkJCUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQoJCQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KCQkJYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCgkJCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQoJCQlPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCg0KZnVuY3Rpb24gc21hcnR5X2Z1bmN0aW9uX3RiSW1hZ2UoJHBhcmFtcywgJiRzbWFydHkpDQp7DQoJLy8gRG9rdW1lbnRhdGlvbiB2b24gUEhQSW1hZ2VXb3Jrc2hvcA0KCS8vIGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2N1bWVudGF0aW9uLmh0bWwNCgkNCgkNCgl0cnkgew0KCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoJCQ0KCQkvLyBUb29sQm94IE9iamVrdCBsYWRlbg0KCQkkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUb29sQm94Jyk7DQoJCQ0KCQkvLyBCaWxkIERhdGVuDQoJCSRpbWFnZT1pc3NldCgkcGFyYW1zWydpbWFnZSddKSA/ICRwYXJhbXNbJ2ltYWdlJ106ZmFsc2U7DQoJCWlmICghaW1hZ2UpIHRocm93IG5ldyBFeGNlcHRpb24oInRoZXJlJ3Mgbm8gaW1hZ2UgZGVmaW5pZWQiLCAwKTsNCgkJDQoJCSRpbWFnZSA9IHN0cl9yZXBsYWNlKCRjb25maWdbJ3Jvb3RfdXJsJ10sICRjb25maWdbJ3Jvb3RfcGF0aCddLCAkaW1hZ2UpOw0KCQkkaW1hZ2UgPSByZWFscGF0aCgkaW1hZ2UpOw0KCQkNCgkJaWYgKCFmaWxlX2V4aXN0cygkaW1hZ2UpKSB7DQoJCQkkaW1hZ2UgPSAkY29uZmlnWydyb290X3BhdGgnXS4nLycuJHBhcmFtc1snaW1hZ2UnXTsNCgkJCSRpbWFnZSA9IHJlYWxwYXRoKCRpbWFnZSk7DQoJCQlpZiAoIWZpbGVfZXhpc3RzKCRpbWFnZSkpIAkJCQ0KCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkltYWdlIGRvZXMgbm90IGV4aXN0IC0gIiAuICRwYXJhbXNbJ2ltYWdlJ10sIDApOw0KCQl9DQoJCQkNCgkJJGltYWdlcGkgPSBwYXRoaW5mbygkaW1hZ2UpOw0KCQkNCgkJLy8gSWRlbnQgRGVmaW5pdGlvbiBoaW50ZXJsZWdlbg0KCQkkaWRlbnQgPSBhcnJheSgpOw0KCQkkYWxiaWRlbnQgPSBhcnJheSgpOw0KCQkJCQ0KCQkkaWRlbnRbJ2Z0J10gPSBmaWxlbXRpbWUoJGltYWdlKTsNCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3F1YWxpdHknXSkpICRpZGVudFsncSddID0gaW50dmFsKCRwYXJhbXNbJ3F1YWxpdHknXSk7DQoJCWlmIChpc3NldCgkcGFyYW1zWydwcm9wb3J0aW9uJ10pKSAkaWRlbnRbJ3BwJ10gPSAkcGFyYW1zWydwcm9wb3J0aW9uJ107DQoJCWlmIChpc3NldCgkcGFyYW1zWyd3aWR0aCddKSkgJGlkZW50Wyd3J10gPSAkcGFyYW1zWyd3aWR0aCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1snaGVpZ2h0J10pKSAkaWRlbnRbJ2gnXSA9ICRwYXJhbXNbJ2hlaWdodCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zeCddKSkgJGlkZW50WydwWCddID0gJHBhcmFtc1sncG9zeCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zeSddKSkgJGlkZW50WydwWSddID0gJHBhcmFtc1sncG9zeSddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncG9zJ10pKSAkaWRlbnRbJ3AnXSA9ICRwYXJhbXNbJ3BvcyddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCddKSkgJGlkZW50WydyYm5zaXBpJ10gPSAkcGFyYW1zWydyZXNpemVCeU5hcnJvd1NpZGVJblBpeGVsJ107DQoJCWlmIChpc3NldCgkcGFyYW1zWydyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSkpICRpZGVudFsncmJuc2lwciddID0gJHBhcmFtc1sncmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50J107DQoJCWlmIChpc3NldCgkcGFyYW1zWydyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddKSkgJGlkZW50WydyYmxzaXBpJ10gPSAkcGFyYW1zWydyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCddKSkgJGlkZW50WydyYmxzaXByJ10gPSAkcGFyYW1zWydyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50J107DQoJCWlmIChpc3NldCgkcGFyYW1zWydmaWx0ZXInXSkpICRpZGVudFsnZiddID0gJHBhcmFtc1snZmlsdGVyJ107DQoJCWlmIChpc3NldCgkcGFyYW1zWydvcGFjaXR5J10pKSAkaWRlbnRbJ28nXSA9ICRwYXJhbXNbJ29wYWNpdHknXTsNCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2ZsaXAnXSkpICRpZGVudFsnZmwnXSA9ICRwYXJhbXNbJ2ZsaXAnXTsNCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3dhdGVybWFyayddKSkgew0KCQkJJGlkZW50Wyd3bSddID0gJHBhcmFtc1snd2F0ZXJtYXJrJ10gLiItIiAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9yZWxzaXplJykgLiItIiAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3MnKSAuIi0iIC4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnd21pX3Bvc3gnKSAuIi0iIC4gbWQ1KCRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9pbWFnZScpLHRydWUpOw0KCQkJJGFsYmlkZW50Wyd3bSddID0gJGlkZW50Wyd3bSddOw0KCQl9IA0KCQkNCgkJJGFsYmlkZW50WydmdCddID0gJGlkZW50WydmdCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCddKSkgJGFsYmlkZW50WydyYm5zaXBpJ10gPSAkcGFyYW1zWydhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBpeGVsJ107DQoJCWlmIChpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSkpICRhbGJpZGVudFsncmJuc2lwciddID0gJHBhcmFtc1snYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50J107DQoJCWlmIChpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddKSkgJGFsYmlkZW50WydyYmxzaXBpJ10gPSAkcGFyYW1zWydhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddOw0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCddKSkgJGFsYmlkZW50WydyYmxzaXByJ10gPSAkcGFyYW1zWydhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50J107DQoJCQ0KCQkvLyBBbGxmw6RsbGlnZSBUYWdzIGF1cyBkZW0gUGZhZCBlbnRmZXJuZW4NCgkJaWYgKHByZWdfbWF0Y2goJyM8KC4qPylzcmM9IiguKj8pIiguKj8pLz4jJywgJGltYWdlLCAkbWF0Y2hlcykpIHsNCgkJCSRpbWFnZSA9ICAkbWF0Y2hlc1syXTsNCgkJfQ0KCQlpZiAoKHN1YnN0cigkcGF0aCwgMCw1KSk9PSJodHRwcyIpeyRMPXN0cmxlbigkY29uZmlnWydzc2xfdXJsJ10pOyRpbWFnZSA9IHN1YnN0cl9yZXBsYWNlKCRpbWFnZSwgJycsIDAsICRMKTt9DQoJCWlmICgoc3Vic3RyKCRwYXRoLCAwLDQpKT09Imh0dHAiKXskTD1zdHJsZW4oJGNvbmZpZ1sncm9vdF91cmwnXSk7JGltYWdlID0gc3Vic3RyX3JlcGxhY2UoJGltYWdlLCAnJywgMCwgJEwpO30NCgkJJG1hdGNoZXMgPSBhcnJheSgpOw0KCQlpZiAocHJlZ19tYXRjaCgnI1todHRwfGh0dHBzXTovLyguKj8pLyguKj8pIycsICRpbWFnZSwgJG1hdGNoZXMpKSB7DQoJCQkkaW1hZ2UgPSAgJG1hdGNoZXNbMF07DQoJCX0NCgkJDQoJCS8vIGdldCBQdXJlIENsYXNzDQoJCSRuYWtlZENsYXNzID0gaXNzZXQoJHBhcmFtc1snYXNzaWduUEhQSW1hZ2VXb3Jrc2hvcENsYXNzJ10pID8gdHJ1ZSA6IGZhbHNlOw0KCQkNCgkJLy8gU3RldWVydW5nDQoJCSRub2NhY2hlID0gaXNzZXQoJHBhcmFtc1snbm9fY2FjaGUnXSkgPyB0cnVlIDogZmFsc2U7DQoJCSRhc3NpZ24gPSBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgPyB0cmltKCRwYXJhbXNbJ2Fzc2lnbiddKTonJzsNCgkJDQoJCS8vIHdlaXRlcmUgRGF0ZW4NCgkJJGltYWdlZGVzdD1pc3NldCgkcGFyYW1zWyckaW1hZ2VkZXN0J10pID8gJHBhcmFtc1snJGltYWdlZGVzdCddIDogdGJVdGlsczo6dHJ1ZXBhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uIi9BdXRvTGlnaHRCb3gvIi5zdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3BhdGgnXSwgIiIsIGRpcm5hbWUoJGltYWdlKSkpOw0KCQkkcXVhbGl0eSA9IGlzc2V0KCRwYXJhbXNbJ3F1YWxpdHknXSkgPyBpbnR2YWwoJHBhcmFtc1sncXVhbGl0eSddKSAgOiA4NTsNCgkJJHByb3BvcnRpb24gPSBpc3NldCgkcGFyYW1zWydwcm9wb3J0aW9uJ10pID8gJHBhcmFtc1sncHJvcG9ydGlvbiddIDogdHJ1ZTsNCgkJDQoJCS8vIEdyw7Zzc2UNCgkJJHdpZHRoID0gaXNzZXQoJHBhcmFtc1snd2lkdGgnXSkgPyAkcGFyYW1zWyd3aWR0aCddIDogbnVsbDsNCgkJJGhlaWdodCA9IGlzc2V0KCRwYXJhbXNbJ2hlaWdodCddKSA/ICRwYXJhbXNbJ2hlaWdodCddIDogbnVsbDsNCgkJJHBvc1ggPSBpc3NldCgkcGFyYW1zWydwb3N4J10pID8gJHBhcmFtc1sncG9zeCddIDogMDsNCgkJJHBvc1kgPSBpc3NldCgkcGFyYW1zWydwb3N5J10pID8gJHBhcmFtc1sncG9zeSddIDogMDsNCgkJJHBvcyA9IGlzc2V0KCRwYXJhbXNbJ3BvcyddKSA/IHN0cnRvdXBwZXIoJHBhcmFtc1sncG9zJ10pIDogJ01NJzsNCgkJJHJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwgPSBpc3NldCgkcGFyYW1zWydyZXNpemVCeU5hcnJvd1NpZGVJblBpeGVsJ10pID8gJHBhcmFtc1sncmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCddIDogZmFsc2U7DQoJCSRyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQgPSBpc3NldCgkcGFyYW1zWydyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSkgPyAkcGFyYW1zWydyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSA6IGZhbHNlOw0KCQkkcmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWwgPSBpc3NldCgkcGFyYW1zWydyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddKSA/ICRwYXJhbXNbJ3Jlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsJ10gOiBmYWxzZTsNCgkJJHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQgPSBpc3NldCgkcGFyYW1zWydyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50J10pID8gJHBhcmFtc1sncmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCddIDogZmFsc2U7DQoJCSRmaWx0ZXIgPSBpc3NldCgkcGFyYW1zWydmaWx0ZXInXSkgPyBleHBsb2RlKCJ8IiwgJHBhcmFtc1snZmlsdGVyJ10pIDogZmFsc2U7DQoJCSRvcGFjaXR5ID0gaXNzZXQoJHBhcmFtc1snb3BhY2l0eSddKSA/IGludHZhbCgkcGFyYW1zWydvcGFjaXR5J10pIDogZmFsc2U7DQoJCSRmbGlwID0gaXNzZXQoJHBhcmFtc1snZmxpcCddKSA/ICRwYXJhbXNbJ2ZsaXAnXSA6IGZhbHNlOw0KCQkkd2F0ZXJtYXJrID0gaXNzZXQoJHBhcmFtc1snd2F0ZXJtYXJrJ10pID8gJHBhcmFtc1snd2F0ZXJtYXJrJ10gOiBmYWxzZTsNCgkJJGFsYnJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwgPSBpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBpeGVsJ10pID8gJHBhcmFtc1snYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCddIDogZmFsc2U7DQoJCSRhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQgPSBpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSkgPyAkcGFyYW1zWydhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQnXSA6IGZhbHNlOw0KCQkkYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWwgPSBpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCddKSA/ICRwYXJhbXNbJ2FsYnJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsJ10gOiBmYWxzZTsNCgkJJGFsYnJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQgPSBpc3NldCgkcGFyYW1zWydhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50J10pID8gJHBhcmFtc1snYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCddIDogZmFsc2U7DQoJCQ0KCQkvLyBLb250cm9sbGUgV2VydGUgJHBvcw0KCQkkdmFsaWRQYXJhbXMgPSAnIExUIE1UIFJUIExNIE1NIFJNIExCIE1CIFJNICc7DQoJCWlmIChzdHJwb3MoJHZhbGlkUGFyYW1zLCAnICcuJHBvcy4nICcpICE9PSBmYWxzZSkgJHBvcyA9ICdNTSc7DQoJCQ0KCQkvLyBBbGxnZW1laW4NCgkJJG5vVGFnID0gaXNzZXQoJHBhcmFtc1snbm9fdGFnJ10pID8gJHBhcmFtc1snbm9fdGFnJ10gOiBmYWxzZTsNCgkJJG5vT3V0cHV0ID0gaXNzZXQoJHBhcmFtc1snbm9fb3V0cHV0J10pID8gJHBhcmFtc1snbm9fb3V0cHV0J106ZmFsc2U7DQoJCSRkZWJ1ZyA9IGlzc2V0KCRwYXJhbXNbJ2RlYnVnJ10pID8gdHJ1ZSA6IGZhbHNlOw0KCQkkYWxiID0gaXNzZXQoJHBhcmFtc1snYXV0b2xpZ2h0Ym94J10pID8gJHBhcmFtc1snYXV0b2xpZ2h0Ym94J106ZmFsc2U7DQoNCgkJLy8gU3R5bGVzDQoJCSRjbGFzcyA9IGlzc2V0KCRwYXJhbXNbJ2NsYXNzJ10pID8gJyBjbGFzcz0iJy4kcGFyYW1zWydjbGFzcyddLiciICc6Jyc7DQoJCSRhbHQgPSBpc3NldCgkcGFyYW1zWydhbHQnXSkgPyAnIGFsdD0iJy4kcGFyYW1zWydhbHQnXS4nIiAnOidhbHQ9IiInOw0KCQkkaWQgPSBpc3NldCgkcGFyYW1zWydpZCddKSA/ICcgaWQ9IicuJHBhcmFtc1snaWQnXS4nIiAnOicnOw0KCQkkdGl0bGUgPSBpc3NldCgkcGFyYW1zWyd0aXRsZSddKSA/ICcgdGl0bGU9IicuJHBhcmFtc1sndGl0bGUnXS4nIiAnOicnOw0KCQkkc3R5bGUgPSBpc3NldCgkcGFyYW1zWydzdHlsZSddKSA/ICcgc3R5bGU9IicuJHBhcmFtc1snc3R5bGUnXS4nIiAnOicnOw0KCQkNCgkJaWYgKCRuYWtlZENsYXNzIGFuZCAkYXNzaWduKSB7DQoJCQkkbGF5ZXIgPSBuZXcgSW1hZ2VXb3Jrc2hvcChhcnJheSgnaW1hZ2VGcm9tUGF0aCcgPT4gJGltYWdlKSk7DQoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkbGF5ZXIpOw0KCQkJcmV0dXJuOw0KCQl9CQ0KCQkNCgkJJG5ld2ZpbGVuYW1lID0gJGltYWdlcGlbJ2ZpbGVuYW1lJ10uIl8iLnRiVXRpbHM6Ol9iYXNlNjR1cmxfZW5jb2RlKCRpZGVudCkuIi4iLiRpbWFnZXBpWydleHRlbnNpb24nXTsJDQoJCSRuZXdhbGJmaWxlbmFtZSA9ICRpbWFnZXBpWydmaWxlbmFtZSddLiJfIi50YlV0aWxzOjpfYmFzZTY0dXJsX2VuY29kZSgkYWxiaWRlbnQpLiIuIi4kaW1hZ2VwaVsnZXh0ZW5zaW9uJ107CQ0KCQkvLyBEYXRlaSBudXIgdmVya2xlaW5lcm4sIHdlbm4gZGllIERhdGVpIG5vY2ggbmljaHQgaW0gQ2FjaGUgZXhpc3RpZXJ0DQoJCWlmICghaXNfZmlsZShyZWFscGF0aCgkaW1hZ2VkZXN0LicvJy4kbmV3ZmlsZW5hbWUpKSBvciAkbm9jYWNoZSkgew0KCQkNCgkJCSRsYXllciA9IG5ldyBJbWFnZVdvcmtzaG9wKGFycmF5KCdpbWFnZUZyb21QYXRoJyA9PiAkaW1hZ2UpKTsNCg0KCQkJLy8gRmlsdGVyDQoJCQlpZiAoaXNfYXJyYXkoJGZpbHRlcikpIHsNCgkJCQkkcmVjdXJzaXZlID0gZmFsc2U7DQoJCQkJJGxheWVyLT5hcHBseUZpbHRlcihjb25zdGFudCgkZmlsdGVyWzBdKSwgaXNzZXQoJGZpbHRlclsxXSkgPyBjb25zdGFudCgkZmlsdGVyWzFdKSA6IG51bGwsIGlzc2V0KCRmaWx0ZXJbMl0pID8gY29uc3RhbnQoJGZpbHRlclsyXSkgOiBudWxsLCBpc3NldCgkZmlsdGVyWzNdKSA/IGNvbnN0YW50KCRmaWx0ZXJbM10pIDogbnVsbCwgaXNzZXQoJGZpbHRlcls0XSkgPyBjb25zdGFudCgkZmlsdGVyWzRdKSA6IG51bGwsICRyZWN1cnNpdmUpOw0KCQkJfQkNCgkJCQkNCgkJCWlmICgkb3BhY2l0eSkJJGxheWVyLT5vcGFjaXR5KG9wYWNpdHkpOw0KCQkJaWYgKCRmbGlwKSAJCSRsYXllci0+ZmxpcCgkZmxpcCk7DQoJCQkJDQoJCQkvLyBXYXRlcm1hcmsNCgkJCWlmICgkd2F0ZXJtYXJrID09ICJ0ZXh0Iikgew0KCQkJCS8vZWNobyAkbW9kLT5HZXRQcmVmZXJlbmNlKCd3bXRfZm9udCcpLiI8YnIgLz4iOw0KCQkJCSR0ZXh0TGF5ZXIgPSBuZXcgSW1hZ2VXb3Jrc2hvcCgNCgkJCQkJYXJyYXkoDQoJCQkJCQkidGV4dCIgPT4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnd210X3RleHQnKSwNCgkJCQkJCSJmb250UGF0aCIgPT4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnd210X2ZvbnQnKSwNCgkJCQkJCSJmb250U2l6ZSIgPT4gJG1vZC0+R2V0UHJlZmVyZW5jZSgnd210X3NpemUnKSwNCgkJCQkJCSJmb250Q29sb3IiID0+ICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtdF9jb2xvcicpLA0KCQkJCQkJImJhY2tncm91bmRDb2xvciIgPT4gbnVsbCwNCgkJCQkJCSJ0ZXh0Um90YXRpb24iID0+IDANCgkJCQkJKQ0KCQkJCSk7DQoJCQkJDQoJCQkJJGxheWVyLT5hZGRMYXllck9uVG9wKCR0ZXh0TGF5ZXIsJG1vZC0+R2V0UHJlZmVyZW5jZSgnd210X3Bvc3gnKSwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnd210X3Bvc3knKSwgIkxCIik7DQovLwkJCQkkbGF5ZXItPmFkZExheWVyKDEsICR0ZXh0TGF5ZXIsIDE0LCAxNCwgIlJCIik7DQovLwkJCQkkbGF5ZXItPmFkZExheWVyT25Ub3AoJHRleHRMYXllciwxNCwgMTQsICJMQiIpOw0KCQkJCQ0KCQkJfQkNCgkJCWVsc2UgaWYgKCR3YXRlcm1hcmsgPT0gImltYWdlIikgew0KCQkJCWlmICghaXNfZmlsZSgkbW9kLT5HZXRQcmVmZXJlbmNlKCd3bWlfaW1hZ2UnKSkpIA0KCQkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJXYXRlcm1hcmsgRmlsZSAnIiAuICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9pbWFnZScpIC4gIicgZG9lcyBub3QgZXhpc3QiLCAwKTsNCgkJCQkkbG9nbyA9IG5ldyBJbWFnZVdvcmtzaG9wKGFycmF5KCdpbWFnZUZyb21QYXRoJyA9PiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd3bWlfaW1hZ2UnKSkpOw0KCQkJCQ0KCQkJCWlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCd3bWlfcmVsc2l6ZScpKSB7DQoJCQkJCSRuZXdzaXpld21pID0gJGxheWVyLT5nZXRXaWR0aCgpIC8gMTAwICogJG1vZC0+R2V0UHJlZmVyZW5jZSgnd21pX3JlbHNpemUnKTsNCgkJCQkJaWYgKCRsb2dvLT5nZXRXaWR0aCgpIDwgJG5ld3NpemV3bWkpICRuZXdzaXpld21pID0gJGxvZ28tPmdldFdpZHRoKCk7DQoJCQkJCSRsb2dvLT4gcmVzaXplSW5QaXhlbCgkbmV3c2l6ZXdtaSxudWxsLHRydWUpOw0KCQkJCX0NCgkJCQkkbGF5ZXItPmFkZExheWVyT25Ub3AoJGxvZ28sICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3N4JyksICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3N5JyksICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3MnKSk7CQ0KCQkJfQ0KCQkJDQoJCQkvLyBHcsO2c3NlIMOkbmRlcm4NCgkJCWlmICgkcmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCkNCgkJCQkkbGF5ZXItPnJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoJHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQsJHByb3BvcnRpb24pOw0KCQkJZWxzZSBpZiAoJHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsKQ0KCQkJCSRsYXllci0+cmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWwoJHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsLCRwcm9wb3J0aW9uKTsNCgkJCWVsc2UgaWYgKCRyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQpDQoJCQkJJGxheWVyLT5yZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQoJHJlc2l6ZUJ5TmFycm93U2lkZUluUGVyY2VudCwkcHJvcG9ydGlvbik7DQoJCQllbHNlIGlmICgkcmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCkNCgkJCQkkbGF5ZXItPnJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwoJHJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwsJHByb3BvcnRpb24pOw0KCQkJZWxzZSBpZiAoJHdpZHRoIG9yICRoZWlnaHQpDQoJCQkJJGxheWVyLT5yZXNpemVJblBpeGVsKCR3aWR0aCwgJGhlaWdodCwgJHByb3BvcnRpb24sICRwb3NYLCAkcG9zWSwgJHBvcyk7IC8vICRwb3NpdGlvblgsICRwb3NpdGlvblkgJiAkcG9zaXRpb24gd2lsbCBoYXZlIGFuIGltcGFjdCBvbiB0aGUgbGF5ZXIgcG9zaXRpb24gaW4gdGhlIG5ldyBib3ggb2YgMzAwcHgvMzAwcHggKHRyeSBhbm90aGVyIG9uZSAhKQ0KCQkJCQ0KCQkJCQ0KCQkJCQ0KCQkJaWYgKGlzc2V0KCRwYXJhbXNbJ2ltYWdlZGVzdCddKSkgew0KCQkJCSRsYXllci0+c2F2ZShkaXJuYW1lKCRpbWFnZWRlc3QpLCAkbmV3ZmlsZW5hbWUsIHRydWUsICIiLCAkcXVhbGl0eSk7DQoJCQl9DQoJCQllbHNlIHsNCgkJCQkkbGF5ZXItPnNhdmUoJGltYWdlZGVzdCwgJG5ld2ZpbGVuYW1lLCB0cnVlLCAiIiwgJHF1YWxpdHkpOw0KCQkJfQ0KCQl9CQ0KDQoJCSRvdXRwdXRmaWxlID0gc3RyX3JlcGxhY2UoIi8vIiwiLyIsc3RyX3JlcGxhY2UoIlxcIiwiLyIsc3RyX3JlcGxhY2UoJGNvbmZpZ1sncm9vdF9wYXRoJ10sICIiLCAkaW1hZ2VkZXN0LiIvIi4kbmV3ZmlsZW5hbWUpKSk7DQoJCQ0KCQlpZiAoIWZpbGVfZXhpc3RzKHJlYWxwYXRoKCRpbWFnZWRlc3QuJy8nLiRuZXdmaWxlbmFtZSkpKQ0KCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiT3V0cHV0ZmlsZSAiIC4gcmVhbHBhdGgoJGltYWdlZGVzdC4nLycuJG5ld2ZpbGVuYW1lKSAuICIgZG9lcyBub3QgZXhpc3QiLCAwKTsNCgkJDQoJCWlmICgkbm9PdXRwdXQpIHsNCgkJCWlmICgkYXNzaWduKSAkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkb3V0cHV0ZmlsZSk7DQoJCQlyZXR1cm47DQoJCX0JDQoJCWVsc2UgaWYgKCRub1RhZykgew0KCQkJaWYgKCRhc3NpZ24pICRzbWFydHktPmFzc2lnbigkYXNzaWduLCRvdXRwdXRmaWxlKTsNCgkJCXJldHVybiBzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3BhdGgnXSwgIiIsICRpbWFnZWRlc3QuIi8iLiRuZXdmaWxlbmFtZSk7DQoJCX0gDQoJCWVsc2UgaWYgKCRhc3NpZ24pIHsNCgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRvdXRwdXRmaWxlKTsNCgkJCXJldHVybjsNCgkJfQ0KCQkNCgkJJGltYWdldGFnID0gJzxpbWcgc3JjPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJG91dHB1dGZpbGUuJyIgJzsNCgkJDQoJCWlmICgkY2xhc3MpICRpbWFnZXRhZyAuPSAkY2xhc3M7IA0KCQlpZiAoJGlkKSAkaW1hZ2V0YWcgLj0gJGlkOyANCgkJaWYgKCRzdHlsZSkgJGltYWdldGFnIC49ICRzdHlsZTsgDQoJCWlmICgkdGl0bGUpICRpbWFnZXRhZyAuPSAkdGl0bGU7IA0KCQlpZiAoJGFsdCkgJGltYWdldGFnIC49ICRhbHQ7IA0KCQkkaW1hZ2V0YWcgLj0gIi8+IjsNCgkJDQoJCQ0KCQlpZiAoJGFsYikgew0KCQkJDQoJCQlpZiAoJHdhdGVybWFyayBvciAkYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCBvciAkYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWwgb3IgJGFsYnJlc2l6ZUJ5TmFycm93U2lkZUluUGVyY2VudCBvciAkYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCkgew0KCQkJCQ0KCQkJCWlmICghaXNfZmlsZShyZWFscGF0aCgkaW1hZ2VkZXN0LicvJy4kbmV3YWxiZmlsZW5hbWUpKSBvciAkbm9jYWNoZSkgew0KCQkJCQ0KCQkJCQkkYWxibGF5ZXIgPSBuZXcgSW1hZ2VXb3Jrc2hvcChhcnJheSgnaW1hZ2VGcm9tUGF0aCcgPT4gJGltYWdlKSk7DQoJCQkJDQoJCQkJCWlmICgkd2F0ZXJtYXJrID09ICJpbWFnZSIpIHsNCgkJCQkJCSRsb2dvMiA9IG5ldyBJbWFnZVdvcmtzaG9wKGFycmF5KCdpbWFnZUZyb21QYXRoJyA9PiAkbW9kLT5HZXRQcmVmZXJlbmNlKCd3bWlfaW1hZ2UnKSkpOw0KCQkJCQkJDQoJCQkJCQlpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnd21pX3JlbHNpemUnKSkgew0KCQkJCQkJCSRuZXdzaXpld21pID0gJGFsYmxheWVyLT5nZXRXaWR0aCgpIC8gMTAwICogJG1vZC0+R2V0UHJlZmVyZW5jZSgnd21pX3JlbHNpemUnKTsNCgkJCQkJCQlpZiAoJGxvZ28yLT5nZXRXaWR0aCgpIDwgJG5ld3NpemV3bWkpICRuZXdzaXpld21pID0gJGxvZ28yLT5nZXRXaWR0aCgpOw0KCQkJCQkJCSRsb2dvMi0+IHJlc2l6ZUluUGl4ZWwoJG5ld3NpemV3bWksbnVsbCx0cnVlKTsNCgkJCQkJCX0NCgkJCQkJCSRhbGJsYXllci0+YWRkTGF5ZXJPblRvcCgkbG9nbzIsICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3N4JyksICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3N5JyksICRtb2QtPkdldFByZWZlcmVuY2UoJ3dtaV9wb3MnKSk7CQ0KCQkJCQl9DQoJCQkJCWlmICgkYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCkNCgkJCQkJCSRhbGJsYXllci0+cmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCgkYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCwkcHJvcG9ydGlvbik7DQoJCQkJCWVsc2UgaWYgKCRhbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCkNCgkJCQkJCSRhbGJsYXllci0+cmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWwoJGFsYnJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsLCRwcm9wb3J0aW9uKTsNCgkJCQkJZWxzZSBpZiAoJGFsYnJlc2l6ZUJ5TmFycm93U2lkZUluUGVyY2VudCkNCgkJCQkJCSRhbGJsYXllci0+cmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50KCRhbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQsJHByb3BvcnRpb24pOw0KCQkJCQllbHNlIGlmICgkYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCkNCgkJCQkJCSRhbGJsYXllci0+cmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCgkYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbCwkcHJvcG9ydGlvbik7DQoJCQkJCQ0KCQkJCQlpZiAoaXNzZXQoJHBhcmFtc1snaW1hZ2VkZXN0J10pKSB7DQoJCQkJCQkkYWxibGF5ZXItPnNhdmUoZGlybmFtZSh0YlV0aWxzOjp0cnVlcGF0aCgkaW1hZ2VkZXN0KSksICRuZXdhbGJmaWxlbmFtZSwgdHJ1ZSwgIiIsICRxdWFsaXR5KTsNCgkJCQkJfQ0KCQkJCQllbHNlIHsNCgkJCQkJCSRhbGJsYXllci0+c2F2ZSgkaW1hZ2VkZXN0LCAkbmV3YWxiZmlsZW5hbWUsIHRydWUsICIiLCAkcXVhbGl0eSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJGFsYm91dHB1dGZpbGUgPSBzdHJfcmVwbGFjZSgiLy8iLCIvIixzdHJfcmVwbGFjZSgiXFwiLCIvIixzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3BhdGgnXSwgIiIsICRpbWFnZWRlc3QuIi8iLiRuZXdhbGJmaWxlbmFtZSkpKTsNCgkNCgkJCQlpZiAoIWZpbGVfZXhpc3RzKHJlYWxwYXRoKCRpbWFnZWRlc3QuJy8nLiRuZXdhbGJmaWxlbmFtZSkpKQ0KCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkF1dG9MaWdodEJveCBPdXRwdXRmaWxlICIgLiByZWFscGF0aCgkaW1hZ2VkZXN0LicvJy4kbmV3YWxiZmlsZW5hbWUpIC4gIiBkb2VzIG5vdCBleGlzdCIsIDApOw0KCQkJCQ0KCQkJfQ0KCQkJZWxzZQkJDQoJCQkJJGFsYm91dHB1dGZpbGUgPSAkcGFyYW1zWydpbWFnZSddOw0KCQkJDQoJCQkkaW1hZ2V0YWcgPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLiRhbGJvdXRwdXRmaWxlLiciIGNsYXNzPSJhdXRvbGlnaHRib3giPicuJGltYWdldGFnLic8L2E+JzsNCgkJfSANCgkJDQoJCXJldHVybiAkaW1hZ2V0YWc7CQkNCgkJDQoJfQ0KCWNhdGNoIChFeGNlcHRpb24gJGUpIHsNCgkJaWYgKCRkZWJ1ZykJZWNobyAiXG4iLic8cCBzdHlsZT0iY29sb3I6IHJlZDsiPnRiSW1hZ2UgRXJyb3I6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpIC4gJzwvcD4nLiJcbiI7DQoJCXJldHVybjsNCgl9DQoJDQoJDQoJDQp9DQoNCg0KDQoNCi8qKg0KICogDQogKiBTZXR6dCBlaW5lIFNlc3Npb252YXJpYWJsZQ0KICogQHBhcmFtICRwYXJhbXNbJ25hbWUnXSANCiAqIEBwYXJhbSAkcGFyYW1zWyd2YWx1ZSddIA0KICovDQpmdW5jdGlvbiBzbWFydHlfZnVuY3Rpb25fdGJTZXNzaW9uU2V0KCRwYXJhbXMsJiRzbWFydHkpDQp7DQoJaWYoIGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkgJiYgaXNzZXQoJHBhcmFtc1sndmFsdWUnXSkgKSB7DQoJCSRuYW1lID0gdHJpbSgkcGFyYW1zWyduYW1lJ10pOw0KCQlpZiggaXNfc3RyaW5nKCRuYW1lKSApIHsgJF9TRVNTSU9OWyRuYW1lXSA9ICRwYXJhbXNbJ3ZhbHVlJ107IH0NCgl9DQp9DQoNCi8qKg0KICogDQogKiBMw7ZzY2h0IGVpbmUgU2Vzc2lvbnZhcmlhYmxlDQogKiBAcGFyYW0gJHBhcmFtc1snbmFtZSddIA0KICovDQpmdW5jdGlvbiBzbWFydHlfZnVuY3Rpb25fdGJTZXNzaW9uVW5zZXQoJHBhcmFtcywmJHNtYXJ0eSkNCnsNCglpZiggaXNzZXQoJHBhcmFtc1snbmFtZSddKSkgew0KCQkkbmFtZSA9IHRyaW0oJHBhcmFtc1snbmFtZSddKTsNCgkJaWYoIGlzX3N0cmluZygkbmFtZSkgJiYgaXNzZXQoJF9TRVNTSU9OWyRuYW1lXSkgKSB7IHVuc2V0KCRfU0VTU0lPTlskbmFtZV0pOyB9DQoJfQ0KfQ0KDQoNCi8qKg0KICogDQogKiBHaWJ0IGRpZSBTZWl0ZW4gSGllcmFyY2hpZSB6dXLDvGNrDQogKiBAcGFyYW0gJGFzc2lnbg0KICogQHBhcmFtICRkZWxpbWl0ZXINCiAqIEBwYXJhbSAkb3V0cHV0DQogKi8NCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl90YkdldFBhZ2VIaWVyYXJjaHkoJHBhcmFtcywmJHNtYXJ0eSkNCnsNCgkkYXNzaWduCQk9IGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSAJCT8gJHBhcmFtc1snYXNzaWduJ10JCTogIiI7DQoJJGRlbGltaXRlcgk9IGlzc2V0KCRwYXJhbXNbJ2RlbGltaXRlciddKQk/ICRwYXJhbXNbJ2RlbGltaXRlciddCTogInwiOw0KCSRvdXRwdXQJCT0gaXNzZXQoJHBhcmFtc1snb3V0cHV0J10pCQk/ICRwYXJhbXNbJ291dHB1dCddCTogIiI7DQoJDQoJJGdDbXMgPSBjbXNtcygpOw0KCSR0cmVlID0gJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCgkkbGlzdCA9ICR0cmVlLT5nZXRGbGF0TGlzdCgpOw0KCQ0KCSRhbGxjb250ZW50PSBhcnJheSgpOw0KCWZvcmVhY2goICRsaXN0IGFzICYkb25lICkNCgl7DQoJCSR0bXAgPSAkb25lLT5HZXRDb250ZW50KGZhbHNlLHRydWUsdHJ1ZSk7DQoJCWlmKCBpc19vYmplY3QoJHRtcCkgKSAkYWxsY29udGVudFtdID0gJHRtcDsNCgl9DQoJDQoJDQoJaWYgKCRhbGxjb250ZW50ICE9PSBGQUxTRSAmJiBjb3VudCgkYWxsY29udGVudCkgPiAwKSANCgl7DQoJCSRwYWdlcyA9IGFycmF5KCk7DQoJDQoJCWZvcmVhY2ggKCRhbGxjb250ZW50IGFzICRjb250ZW50KSANCgkJew0KCQkJJHBhZ2VzWyRjb250ZW50LT5JZCgpXSA9ICRjb250ZW50LT5IaWVyYXJjaHkoKSAuJy4gLSAnLiRjb250ZW50LT5NZW51VGV4dCgpOw0KCQl9DQoJfQ0KCQ0KCWlmIChpc3NldCgkb3V0cHV0KSBhbmQgJG91dHB1dCA9PSAiaWQiKSB7DQoJCWlmKCFlbXB0eSgkYXNzaWduKSkNCgkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLCRkZWxpbWl0ZXIuaW1wbG9kZSgkZGVsaW1pdGVyLCBhcnJheV9rZXlzKCRwYWdlcykpKTsNCgkJZWxzZQkNCgkJCXJldHVybiAkZGVsaW1pdGVyLmltcGxvZGUoJGRlbGltaXRlciwgYXJyYXlfa2V5cygkcGFnZXMpKTsNCgl9DQoJZWxzZSB7DQoJCWlmKCFlbXB0eSgkYXNzaWduKSkNCgkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLCJrZWluZSAvIE9obmUgVm9yZ2FiZXwiLmltcGxvZGUoJGRlbGltaXRlciwgJHBhZ2VzKSk7DQoJCWVsc2UNCgkJCXJldHVybiAia2VpbmUgLyBPaG5lIFZvcmdhYmV8Ii5pbXBsb2RlKCJ8IiwgJHBhZ2VzKTsNCgl9DQp9DQoJDQovKioNCiAqIA0KICogR2lidCBkaWUgTmV3cyBLYXRlZ29yaWVuIHp1csO8Y2sNCiAqIEBwYXJhbSAkYXNzaWduDQogKiBAcGFyYW0gJGRlbGltaXRlcg0KICogQHBhcmFtICRvdXRwdXQNCiAqLw0KZnVuY3Rpb24gc21hcnR5X2Z1bmN0aW9uX3RiR2V0TmV3c0NhdGVnb3JpZXMoJHBhcmFtcywmJHNtYXJ0eSkNCnsNCgkkYXNzaWduCQk9IGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSAJCT8gJHBhcmFtc1snYXNzaWduJ10JCTogIiI7DQoJJGRlbGltaXRlcgk9IGlzc2V0KCRwYXJhbXNbJ2RlbGltaXRlciddKQk/ICRwYXJhbXNbJ2RlbGltaXRlciddCTogInwiOw0KCSRvdXRwdXQgCT0gaXNzZXQoJHBhcmFtc1snb3V0cHV0J10pIAkJPyAkcGFyYW1zWydvdXRwdXQnXQkJOiAiIjsNCgkNCgkkZ0NtcyA9IGNtc21zKCk7DQoJJGRiID0gJGdDbXMtPkdldERiKCk7DQoNCgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25ld3NfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHkiOw0KCSRkYnJlc3VsdCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsNCglpZiggJGRicmVzdWx0ICkgJGNhdGVnb3JpZXMgPSAkZGJyZXN1bHQ7DQoJICANCgkkY2F0ZWdvcnlsaXN0ID0gYXJyYXkoKTsNCglmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkY2F0ZWdvcmllcyk7ICRpKysgKSAgew0KCSAgICRyb3cgPSAkY2F0ZWdvcmllc1skaV07DQoJICAgJGNhdGVnb3J5bGlzdFtzdHJfcmVwbGFjZSgifCIsIi0iLCRyb3dbJ2xvbmdfbmFtZSddKV0gPSAkcm93WyduZXdzX2NhdGVnb3J5X25hbWUnXTsNCgl9DQoJDQoJaWYgKGlzc2V0KCRvdXRwdXQpIGFuZCAkb3V0cHV0ID09ICJpZCIpIHsNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSANCgkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLGltcGxvZGUoJGRlbGltaXRlciwgJGNhdGVnb3J5bGlzdCkpOw0KCQllbHNlIA0KCQkJcmV0dXJuIGltcGxvZGUoJGRlbGltaXRlciwgJGNhdGVnb3J5bGlzdCk7DQoJfQ0KCWVsc2Ugew0KCQlpZighZW1wdHkoJGFzc2lnbikpIA0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksaW1wbG9kZSgkZGVsaW1pdGVyLCBhcnJheV9rZXlzKCRjYXRlZ29yeWxpc3QpKSk7DQoJCWVsc2UNCgkJCXJldHVybiBpbXBsb2RlKCJ8IiwgYXJyYXlfa2V5cygkY2F0ZWdvcnlsaXN0KSk7DQoJfQ0KfQ0KDQoNCi8qKg0KICogDQogKiBHaWJ0IGVpbmUgTGlzdGUgZGVyIENNUyBCZW51dHplcmdydXBwZW4gdW5kIEJlbnV0emVyIHp1csO8Y2sNCiAqIEBwYXJhbSAkYXNzaWduDQogKiBAcGFyYW0gJGRlbGltaXRlcg0KICogQHBhcmFtICRncm91cHNfb25seQ0KICovDQpmdW5jdGlvbiBzbWFydHlfZnVuY3Rpb25fdGJHZXRVc2VyR3JvdXBzKCRwYXJhbXMsJiRzbWFydHkpDQp7DQoJJGdDbXMgPSBjbXNtcygpOw0KCQ0KCSRhc3NpZ24JCT0gaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pIAkJPyAkcGFyYW1zWydhc3NpZ24nXQkJOiAiIjsNCgkkZGVsaW1pdGVyCT0gaXNzZXQoJHBhcmFtc1snZGVsaW1pdGVyJ10pCT8gJHBhcmFtc1snZGVsaW1pdGVyJ10JOiAifCI7DQoJJG91dHB1dCAJPSBpc3NldCgkcGFyYW1zWydvdXRwdXQnXSkgCQk/ICRwYXJhbXNbJ291dHB1dCddCQk6ICIiOw0KCSRncm91cHNfb25seT0gaXNzZXQoJHBhcmFtc1snZ3JvdXBzX29ubHknXSkJPyAkcGFyYW1zWydncm91cHNfb25seSddOiBmYWxzZTsNCgkNCgkkdXNlcm9wcyA9ICRnQ21zLT5HZXRVc2VyT3BlcmF0aW9ucygpOw0KCSRncm91cG9wcyA9ICRnQ21zLT5HZXRHcm91cE9wZXJhdGlvbnMoKTsNCgkkYWxsdXNlcnMgPSAkdXNlcm9wcy0+TG9hZFVzZXJzKCk7DQoJJGFsbGdyb3VwcyA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOw0KCQ0KCSRlZGl0b3JzID0gYXJyYXkoKTsNCglmb3JlYWNoICgkYWxsZ3JvdXBzIGFzICRvbmVncm91cCkgew0KCSAgaWYoICRvbmVncm91cC0+aWQgPT0gMSApIGNvbnRpbnVlOw0KCSAgJHZhbCA9ICRvbmVncm91cC0+aWQqLTE7DQoJICAkZWRpdG9yc1skdmFsXSA9ICJHcnVwcGU6ICIuICRvbmVncm91cC0+bmFtZTsNCgl9DQoJDQoJaWYgKGlzc2V0KCRncm91cHNfb25seSkgYW5kICRncm91cHNfb25seSkge30NCgllbHNlIHsNCgkJZm9yZWFjaCAoJGFsbHVzZXJzIGFzICRvbmV1c2VyKQ0KCQl7DQoJCQkkZWRpdG9yc1skb25ldXNlci0+aWRdID0gICRvbmV1c2VyLT51c2VybmFtZTsNCgkJfQ0KCX0NCgkNCglpZiAoaXNzZXQoJG91dHB1dCkgYW5kICRvdXRwdXQgPT0gImlkIikgew0KCQlpZighZW1wdHkoJGFzc2lnbikpIA0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksaW1wbG9kZSgkZGVsaW1pdGVyLCBhcnJheV9rZXlzKCRlZGl0b3JzKSkpOw0KCQllbHNlCQ0KCQkJcmV0dXJuIGltcGxvZGUoJGRlbGltaXRlciwgYXJyYXlfa2V5cygkZWRpdG9ycykpOw0KCX0NCgllbHNlIHsNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKQ0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksaW1wbG9kZSgkZGVsaW1pdGVyLCAkZWRpdG9ycykpOw0KCQllbHNlDQoJCQlyZXR1cm4gaW1wbG9kZSgkZGVsaW1pdGVyLCAkZWRpdG9ycyk7DQoJfQ0KfQ0KDQovKioNCiAqIA0KICogU2NocmVpYnQgZWluZW4gV2VydCBpbiBlaW4gZGVmaW5pZXJ0ZXMgTG9nZmlsZQ0KICogQHBhcmFtCW1peGVkIAlsb2cgCS0gTWVsZHVuZyB3ZWxjaGUgaW4gZGFzIExvZ2ZpbGUgZ2VzY2hyaWViZW4gd2VyZGVuIHNvbGwgDQogKiBAcGFyYW0gCXN0cmluZyAJbG9nZmlsZSAtIChvcHRpb25hbCkgTmFtZSBkZXMgTG9nZmlsZXMgaW4gd2VsY2hlIGRpZSBNZWxkdW5nIGdlc2NocmllYmVuIHdlcmRlbiBzb2xsDQogKiBAcmV0dXJuCXZvaWQgLyBlcnJvciANCiAqLwkNCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl90YldyaXRlTG9nKCRwYXJhbXMsJiRzbWFydHkpDQp7DQoJJGdDbXMgPSBjbXNtcygpOw0KCQ0KCSRsb2dmaWxlCT0gaXNzZXQoJHBhcmFtc1snbG9nZmlsZSddKSAJPyAkcGFyYW1zWydsb2dmaWxlJ10JOiAiIjsNCgkkbWVzc2FnZQk9IGlzc2V0KCRwYXJhbXNbJ2xvZyddKQkJCT8gJHBhcmFtc1snbG9nJ10JCTogIiI7DQoNCglpZiAoIWlzc2V0KCRwYXJhbXNbJ2xvZyddKSkgew0KCQllY2hvICJ7dGJXcml0ZUxvZyAtPiBQYXJhbXRlciAnbG9nJyBpcyBlbXB0eX0iOw0KCQlyZXR1cm47DQoJfQ0KCQkJDQoJJGxvZz0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUb29sQm94Jyk7DQoJaWYgKCRsb2dmaWxlICE9ICcnKQ0KCQkkbG9nLT5zZXRMb2dGaWxlKCd0YlRlc3RpbmcnKTsNCgkNCgkkbG9nLT5sd3JpdGUoJG1lc3NhZ2UpOw0KDQp9DQoJDQovKioNCiAqIA0KICogRXhwb3J0aWVydCBlaW5lIGRlZmluaWVydGUgVmFyaWFibGUgaW4gZWluZW0gbGVzYmFyZW4gQ29kZSBkZXIgenUgZGVidWdnaW5nendlY2tlbiBhbiBhbmRlcmVyIFBvc2l0aW9uIGdldGVzdGV0IHdlcmRlbiBrYW5uDQogKiBAY29weXJpZ2h0CTIwMTIgYnkgSmFuIEN6YXJub3dza2kgIChjemFybm93c2tpQHNlaXRlbnJlcG9ydC5pbmZvKQ0KICogQHBhcmFtIAkJJG5hbWUgLSBOYW1lIGRlciBWYXJpYWJsZSB3ZWxjaGUgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbA0KICogQHJldHVybgkJc3RyaW5nDQogKi8NCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl90YlZhckV4cG9ydCgkcGFyYW1zLCAmJHNtYXJ0eSkgew0KICAgICRuYW1lID0gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/ICRwYXJhbXNbJ25hbWUnXSA6IGZhbHNlOw0KICAgIGlmIChlbXB0eSgkbmFtZSkpDQogICAgICAgIHJldHVybiAnS2VpbiBOYW1lIHZvcmdlZ2ViZW4nOw0KICAgIGlmIChtZXRob2RfZXhpc3RzKCRzbWFydHksICdnZXRUZW1wbGF0ZVZhcnMnKSkgIC8vIFNtYXJ0eSAzDQogICAgICAgICR2YXIgPSAkc21hcnR5LT5nZXRUZW1wbGF0ZVZhcnMoJG5hbWUpOw0KICAgIGVsc2UNCiAgICAgICAgJHZhciA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCRuYW1lKTsNCiAgICBpZiAoZW1wdHkoJHZhcikpDQogICAgICAgIHJldHVybiAkbmFtZSAuJyB1bmJla2FubnQnOw0KICAgIGVjaG8gJ3skJyAuICRuYW1lIC4gJz1cJycgLiBzZXJpYWxpemUoJHZhcikgLiAnXCd8dW5zZXJpYWxpemV9JzsNCn0NCg0KDQovKioNCiAqIA0KICogTGVpdGV0IHZpYSByZWRpcmVjdCBhdWYgDQogKiBAY29weXJpZ2h0CTIwMTIgYmxhdHRlcnRlY2ggaW5mb3JtYXRpaw0KICogQHBhcmFtIAkJJHRvIC0gQWxpYXMgZGVyIFNlaXRlIGF1ZiB3ZWxjaGUgd2VpdGVyZ2VsZWl0ZXQgd2VyZGVuIHNvbGwNCiAqIEByZXR1cm4JCXN0cmluZw0KICovDQpmdW5jdGlvbiBzbWFydHlfZnVuY3Rpb25fdGJSZWRpcmVjdCgkcGFyYW1zLCAmJHNtYXJ0eSkgew0KCWlmKCBpc3NldCggJHBhcmFtc1sndG8nXSApICkgew0KCQkkZ0NtcyA9IGNtc21zKCk7DQoJCSRtYW5hZ2VyID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7DQoJCSRub2RlID0mICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJHBhcmFtc1sndG8nXSk7DQoJCSRjb250ZW50ID0mICRub2RlLT5HZXRDb250ZW50KCk7DQoJCWlmIChpc3NldCgkY29udGVudCkgJiYgaXNfb2JqZWN0KCRjb250ZW50KSkgew0KCQkJaWYgKCRjb250ZW50LT5HZXRVUkwoKSAhPSAnJykgew0KCQkJCXJlZGlyZWN0KCRjb250ZW50LT5HZXRVUkwoKSk7DQoJCQl9DQoJCX0NCgkJZWxzZSByZXR1cm4gJzwhLS0gdGJSZWRpcmVjdCAtIHBhZ2Ugbm90IGZvdW5kOiAnLiRwYXJhbXNbJ3RvJ10uJyAtLT4nOw0KCX0NCn0NCg0KLyoqDQogKiANCiAqIExpc3RldCBhbGxlIE9yZG5lciAoZGVyIEdhbGxlcnkpIGF1Ziwgd2VsY2hlIEJpbGRlciBlbnRoYWx0ZW4uIGlua2wuIGRlciBBbnphaGwgZGVyIEJpbGRlciBkZXIgZWluemVsbmVuIE9yZG5lciANCiAqIEBjb3B5cmlnaHQJMjAxMiBibGF0dGVydGVjaCBpbmZvcm1hdGlrDQogKiBAcGFyYW0gCQkkc3ViZGlyIC0gVW50ZXJvcmRuZXIgYWIgd2VsY2hlbSBnZXN1Y2h0IHdlcmRlbiBzb2xsDQogKiBAcGFyYW0gCQkkYWN0aW9uIC0gdXJsID0gUGZhZCB6dW0gT3JkbmVyIC8gbGVlciA9IFBmYWQgZGVzIE9yZG5lcnMgaW5rbC4gQmlsZGFuemFobA0KICogQHJldHVybgkJc3RyaW5nDQogKi8NCg0KZnVuY3Rpb24gc21hcnR5X2Z1bmN0aW9uX3RiR2V0R2FsbGVyeVRyZWUoJHBhcmFtcywgJiRzbWFydHkpDQp7DQoNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgJGRlbGltaXRlciA9ICJ8IjsNCiAgICANCiAgICAvKiBvdGhlciB3YXkgb3ZlciBHYWxsZXJ5IGZ1bmN0aW9ucyAoR2FsbGVyeSA+PSAxLjUsIENNU01TIDEuMTApDQogICAgICANCiAgICAgCSRnYWxsZXJpZXMgPSBHYWxsZXJ5X3V0aWxzOjpHZXRHYWxsZXJpZXMoKTsNCgkJJHZhbHVlcGFpcnMgPSBhcnJheSgpOw0KCQlmb3JlYWNoICgkZ2FsbGVyaWVzIGFzICRnYWxsZXJ5KSB7DQoJCSAgJGdhbGxlcnlfZGlyID0gJGdhbGxlcnlbJ2ZpbGVwYXRoJ10ucnRyaW0oJGdhbGxlcnlbJ2ZpbGVuYW1lJ10sICcvJyk7DQoJCSAgJHZhbHVlcGFpcnNbXSA9ICRnYWxsZXJ5X2Rpci4nPScuJGdhbGxlcnlfZGlyOw0KCQl9DQoJCWVjaG8gaW1wbG9kZSgiLCIsJHZhbHVlcGFpcnMpOw0KICAgICAqLw0KICAgIA0KICAgIA0KDQogICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInRiR2V0R2FsbGVyeVRyZWVBc0FycmF5IikpDQogICAgew0KICAgICAgICBmdW5jdGlvbiB0YkdldEdhbGxlcnlUcmVlQXNBcnJheSgkcGF0aCA9ICcuJywgJGlnbm9yZSA9IGFycmF5KCkpIHsNCiAgICAgICAgICAgICRkaXJUcmVlID0gYXJyYXkgKCk7DQogICAgICAgICAgICAkZGlyVHJlZVRlbXAgPSBhcnJheSAoKTsNCiAgICAgICAgICAgICRpZ25vcmVbXSA9ICcuJzsNCiAgICAgICAgICAgICRpZ25vcmVbXSA9ICcuLic7DQogICAgICAgICAgICAkaWdub3JlW10gPSAnLmh0YWNjZXNzJzsNCiAgICAgICAgICAgICRpZ25vcmVbXSA9ICdlcnJvcl9sb2cnOw0KICAgICAgICAgICAgJGlnbm9yZVtdID0gJ2NnaS1iaW4nOw0KICAgICAgICAgICAgJGlnbm9yZVtdID0gJy5EU19TdG9yZSc7DQogICAgICAgICAgICAkaWdub3JlW10gPSAndGh1bWInOw0KDQogICAgICAgICAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCiAgICAgICAgICAgIGlmIChzdHJwb3MoJHBhdGgsJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10pID09PSBGQUxTRSkNCiAgICAgICAgICAgICAgICAkcGF0aCA9ICRjb25maWdbJ3VwbG9hZHNfcGF0aCddLiIvIi50cmltKCRwYXRoLCIvIik7DQoNCiAgICAgICAgICAgICRkaCA9IEBvcGVuZGlyKCRwYXRoKTsNCg0KICAgICAgICAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRkaCkpKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCRmaWxlLCAkaWdub3JlKSkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigiJHBhdGgvJGZpbGUiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVpbmZvPXBhdGhpbmZvKCRwYXRoLiIvIi4kZmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKHN0cnRvbG93ZXIoJGZpbGVpbmZvWydleHRlbnNpb24nXSkgPT0gImpwZyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgIHN0cnRvbG93ZXIoJGZpbGVpbmZvWydleHRlbnNpb24nXSkgPT0gImpwZWciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHN0cnRvbG93ZXIoJGZpbGVpbmZvWydleHRlbnNpb24nXSkgPT0gImdpZiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igc3RydG9sb3dlcigkZmlsZWluZm9bJ2V4dGVuc2lvbiddKSA9PSAicG5nIikgYW5kIHN0cnBvcygkZmlsZSwidGh1bWIiKSA9PT0gRkFMU0UpDQogICAgICAgICAgICAgICAgICAgICAgICAkZGlyVHJlZVsiJHBhdGgiXVtdID0gJGZpbGU7DQoNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGRpclRyZWVUZW1wID0gdGJHZXRHYWxsZXJ5VHJlZUFzQXJyYXkoIiRwYXRoLyRmaWxlIiwgJGlnbm9yZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGRpclRyZWVUZW1wKSkkZGlyVHJlZSA9IGFycmF5X21lcmdlKCRkaXJUcmVlLCAkZGlyVHJlZVRlbXApOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2xvc2VkaXIoJGRoKTsNCg0KICAgICAgICAgICAgcmV0dXJuICRkaXJUcmVlOw0KICAgICAgICB9DQogICAgfQ0KIA0KCSAkc3ViZGlyID0gIiI7DQoJCSBpZiAoaXNzZXQoJHBhcmFtc1snc3ViZGlyJ10pKSB7DQoJCSAkc3ViZGlyID0gIi8iLnRyaW0oJHBhcmFtc1snc3ViZGlyJ10sIi8iKTsNCgkgfQ0KDQoNCg0KICAgICRkaXJUcmVlID0gdGJHZXRHYWxsZXJ5VHJlZUFzQXJyYXkoJy9pbWFnZXMvR2FsbGVyeScuJHN1YmRpcik7DQogICAgJGdhbGxlcnlzID0gYXJyYXkoKTsNCg0KICAgIGZvcmVhY2ggKCRkaXJUcmVlIGFzICRrID0+ICR2KSB7DQogICAgICAgICRwZmFkID0gc3RyX3JlcGxhY2UoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uIi9pbWFnZXMvR2FsbGVyeS8iLCIiLCRrKTsNCiAgICAgICAgJGdhbGxlcnlzWyRwZmFkXSA9ICRwZmFkLiIgKCIuY291bnQoJHYpLiIgRm90b3MpIjsNCiAgICB9DQoNCiAgICBrc29ydCgkZ2FsbGVyeXMpOw0KDQogICAgJGdrZXlzID0gYXJyYXlfa2V5cygkZ2FsbGVyeXMpOw0KDQogICAgJHNtYXJ0eS0+YXNzaWduKCJ0YkdhbGxlcnlUcmVlQXJyYXkiLCRnYWxsZXJ5cyk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCJ0YkdhbGxlcnlUcmVlVGl0ZWwiLGltcGxvZGUoJGRlbGltaXRlciwgJGdhbGxlcnlzKSk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCJ0YkdhbGxlcnlUcmVlUGF0aCIsaW1wbG9kZSgkZGVsaW1pdGVyLCAkZ2tleXMpKTsNCg0KICAgIGlmIChpc3NldCgkcGFyYW1zWydhY3Rpb24nXSkgYW5kICRwYXJhbXNbJ2FjdGlvbiddID09ICJ1cmwiKQ0KICAgICAgICByZXR1cm4gaW1wbG9kZSgkZGVsaW1pdGVyLCBhcnJheV9rZXlzKCRnYWxsZXJ5cykpOw0KICAgIGVsc2UNCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJGRlbGltaXRlciwgJGdhbGxlcnlzKTsNCg0KfQ0KDQoNCi8qKg0KICogDQogKiBTY2hyZWlidCBkaWUgY29uZmlnLnBocCBXZXJ0ZSBpbiBlaW5lIFNtYXJ0eXZhcmlhYmxlIA0KICogQGNvcHlyaWdodAkyMDEzIGJsYXR0ZXJ0ZWNoIGluZm9ybWF0aWsNCiAqIEBwYXJhbSAJCSRhc3NpZ24gLSBOYW1lIGRlciBTbWFydHl2YXJpYWJsZQ0KICovDQoNCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl90YkdldENvbmZpZygkcGFyYW1zLCAmJHNtYXJ0eSkNCnsNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSkgDQogICAgCSRzbWFydHktPmFzc2lnbih0cmltKCRwYXJhbXNbJ2Fzc2lnbiddKSwkY29uZmlnKTsNCiAgICANCn0NCg0KDQovKioNCiAqIA0KICogU29ydGllcnQgZWluIEFycmF5IG5hY2ggS3JpdGVyaWVuIA0KICogQGNvcHlyaWdodAkyMDEzIGJsYXR0ZXJ0ZWNoIGluZm9ybWF0aWsNCiAqIEBwYXJhbSAJCSRkYXRhIC0gQXJyYXkgZGFzIHp1IHNvcnRpZXJlbiBpc3QNCiAqIEBwYXJhbSAJCSRzb3J0IC0gRmVsZGVyIG5hY2ggZGVuZW4gc29ydGllcnQgd2lyZCBzLWZlbGRuYW1lIG9kZXIgcytmZWxkbmFtZSAtLT4gcz1zdHJpbmcsIG49bnVtZXJpYywgKyA9IGFzYywgLSA9IGRlc2M7IG1laHJlcmUgRmVsZGVyIG1pdCBLb21tYSBnZXRyZW5udA0KICogQHBhcmFtIAkJJGFzc2lnbiAtIE5hbWUgZGVyIFNtYXJ0eXZhcmlhYmxlDQogKiBAc291cmNlCQlodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2RlL2Z1bmN0aW9uLmFycmF5LW11bHRpc29ydC5waHAjOTA1NDENCiAqLw0KDQoNCmZ1bmN0aW9uIGFycmF5X3NvcnRfZnVuYygkYSwkYj1OVUxMKSB7DQoJc3RhdGljICRrZXlzOw0KCWlmKCRiPT09TlVMTCkgcmV0dXJuICRrZXlzPSRhOw0KCWZvcmVhY2goJGtleXMgYXMgJGspIHsNCgkJaWYoQCRrWzBdPT0nIScpIHsNCgkJCSRrPXN1YnN0cigkaywxKTsNCgkJCWlmKEAkYVska10hPT1AJGJbJGtdKSB7DQoJCQkJcmV0dXJuIHN0cmNtcChAJGJbJGtdLEAkYVska10pOw0KCQkJfQ0KCQl9DQoJCWVsc2UgaWYoQCRhWyRrXSE9PUAkYlska10pIHsNCgkJCXJldHVybiBzdHJjbXAoQCRhWyRrXSxAJGJbJGtdKTsNCgkJfQ0KCX0NCglyZXR1cm4gMDsNCn0NCg0KZnVuY3Rpb24gQXJyYXlTb3J0KCRhcnJheSkgew0KCWlmKCEkYXJyYXkpIHJldHVybiAka2V5czsNCgkka2V5cz1mdW5jX2dldF9hcmdzKCk7DQoJYXJyYXlfc2hpZnQoJGtleXMpOw0KCWFycmF5X3NvcnRfZnVuYygka2V5cyk7DQoJdXNvcnQoJGFycmF5LCJhcnJheV9zb3J0X2Z1bmMiKTsNCgkgDQoJcmV0dXJuICRhcnJheTsNCn0NCg0KDQoNCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl90YkFycmF5U29ydCgkcGFyYW1zLCAmJHNtYXJ0eSkNCnsNCgkkZGF0YSA9IGlzc2V0KCRwYXJhbXNbJ2RhdGEnXSkgPyAkcGFyYW1zWydkYXRhJ10gOiBhcnJheSgpOw0KCSRzb3J0ID0gZXhwbG9kZSgiLCIsIGlzc2V0KCRwYXJhbXNbJ3NvcnQnXSkgPyAkcGFyYW1zWydzb3J0J10gOiBhcnJheSgpKTsNCgkNCgkkcGFyYW1ldGVyID0gYXJyYXkoKTsNCgkkcGFyYW1ldGVyW10gPSAkZGF0YTsNCgkNCglmb3JlYWNoKCRzb3J0IGFzICRzKSB7DQoJCSRwYXJhbWV0ZXJbXSA9ICRzOw0KCX0NCgkJDQoJJGRhdGEgPSBjYWxsX3VzZXJfZnVuY19hcnJheSgnQXJyYXlTb3J0JywgJHBhcmFtZXRlcik7DQoJDQoJaWYgKGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSkgJHNtYXJ0eS0+YXNzaWduKHRyaW0oJHBhcmFtc1snYXNzaWduJ10pLCRkYXRhKTsNCiAgICANCn0NCg0KDQovKioNCiAqIA0KICoge2dldF90ZW1wbGF0ZV92YXJzfSByZWt1cnNpdiBlaW5zZXR6ZW4NCiAqIGh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLmRlL3ZpZXd0b3BpYy5waHA/aWQ9MzM3DQogKi8NCg0KZnVuY3Rpb24gX19fbXlfcHJpbnRfcigkdmFsdWUsICRsZXZlbCA9IDApDQp7DQoJaWYgKCRsZXZlbCA+IDkpDQoJewkvLyBCZWluZyBwYXJhbm9pZA0KCQlyZXR1cm4gJ1RvbyBiaWcgbGV2ZWwgb2YgbmVzdGluZyc7DQoJfQ0KDQoJIyBhZGRlZCBieSBOYU4gKGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KToNCglpZih2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjExJykgPCAwKQ0KCSRjbXNfb2JqX25hbWUgPSAnQ21zT2JqZWN0JzsNCgllbHNlDQoJJGNtc19vYmpfbmFtZSA9ICdDbXNBcHAnOw0KCSMtLS0NCg0KCWlmICghaXNfYXJyYXkoJHZhbHVlKSAmJiAhaXNfb2JqZWN0KCR2YWx1ZSkpDQoJew0KCQlpZiAoJHZhbHVlID09PSB0cnVlKQ0KCQl7DQoJCQlyZXR1cm4gJ3RydWUnOw0KCQl9DQoJCWVsc2UgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybiAnZmFsc2UnOw0KCQl9DQoJCXJldHVybiAkdmFsdWU7DQoJfQ0KDQoJJGJyID0gIlxuIjsgLy8gbGluZSBicmVhayB3aXRoIHRhYnMNCglmb3IoJGkgPSAwOyAkaSA8ICRsZXZlbDsgJGkrKykNCgl7DQoJCSRiciAuPSAiXHQiOw0KCX0NCg0KCWlmIChpc19vYmplY3QoJHZhbHVlKSkNCgl7DQoJCS8vIFNraXAgaHVnZSBDTVNNUyBjb3JlIG9iamVjdHMNCgkJJGNsYXNzID0gZ2V0X2NsYXNzKCR2YWx1ZSk7DQoJCWRvDQoJCXsNCgkJCWlmKGluX2FycmF5KCRjbGFzcywgYXJyYXkoJGNtc19vYmpfbmFtZSwgJ1NtYXJ0eScsICdDTVNNb2R1bGUnKSkpDQoJCQl7DQoJCQkJcmV0dXJuIGdldF9jbGFzcygkdmFsdWUpLiIgT2JqZWN0IChza2lwcGVkIGFzIGEgZGVzY2VuZGFudCBvZiAkY2xhc3MpIjsNCgkJCX0NCgkJfQ0KCQl3aGlsZSAoJGNsYXNzID0gZ2V0X3BhcmVudF9jbGFzcygkY2xhc3MpKTsNCgkJJHN0ciA9IGdldF9jbGFzcygkdmFsdWUpLicgT2JqZWN0Jy4kYnIuJ3snOw0KCX0NCgllbHNlDQoJew0KCQkkc3RyID0gJ0FycmF5Jy4kYnIuJygnOw0KCX0NCg0KCWZvcmVhY2goJHZhbHVlIGFzICRrZXkgPT4gJHZhbCkNCgl7DQoJCSRzdHIgLj0gJGJyLiJcdCIuJGtleS4nID0+ICcuX19fbXlfcHJpbnRfcigkdmFsLCAkbGV2ZWwgKyAxKTsNCgl9DQoJJHN0ciAuPSBpc19hcnJheSgkdmFsdWUpID8gJGJyLicpJyA6ICRici4nfSc7DQoJcmV0dXJuICRzdHI7DQp9DQoNCmZ1bmN0aW9uIHRiR2V0VGVtcGxhdGVWYXJzKCRwYXJhbXMsICYkb2JqKQ0Kew0KDQoJIyBhZGRlZCBieSBOYU4gKGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KToNCglpZih2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcxLjExJykgPCAwKQ0KCSRzbWFydHkgPSAmJG9iajsgIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5DQoJZWxzZQ0KCSRzbWFydHkgPSAmJG9iai0+c21hcnR5Ow0KCSMtLS0NCg0KCSR0cGxfdmFycyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCk7DQoNCgkkc3RyID0gJzxkaXYgc3R5bGU9Im92ZXJmbG93OiBhdXRvOyB3aWR0aDogNTAwcHg7IGhlaWdodDogNDAwcHg7Ij48cHJlPicuIlxuXG4iOw0KCSRzdHIgLj0gX19fbXlfcHJpbnRfcigkdHBsX3ZhcnMpOw0KCSRzdHIgLj0gIlxuXG48L3ByZT48L2Rpdj4iOw0KCXJldHVybiAkc3RyOw0KfQ0KDQoNCg0KDQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/functions/tbmodifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KDQovKioNCiogU21hcnR5IHBsdWdpbg0KKiBodHRwOi8vd3d3LnNtYXJ0eS5uZXQvZm9ydW1zL3ZpZXd0b3BpYy5waHA/dD01MzMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqIEZpbGU6IG1vZGlmaWVyLnRiVHJ1bmNhdGVCZXR0ZXIucGhwDQoqIFR5cGU6IG1vZGlmaWVyDQoqIE5hbWU6IHRiVHJ1bmNhdGVCZXR0ZXINCiogVmVyc2lvbjogMS4zDQoqIERhdGU6IEphbnVhcnkgMTN0aCwgMjAxMA0KKiBNb2RpZmllZDogTm92ZW1iZXIgMTB0aCwgMjAxMg0KKiBQdXJwb3NlOiBDdXQgYSBzdHJpbmcgcHJlc2VydmluZyBhbnkgdGFnIG5lc3RpbmcgYW5kIG1hdGNoaW5nLg0KKiBJbnN0YWxsOiBEcm9wIGludG8gdGhlIHBsdWdpbiBkaXJlY3RvcnkuDQoqIEF1dGhvcjogT3JpZ2luYWwgSmF2YXNjcmlwdCBDb2RlOiBCZW5qYW1pbiBMdXB1IDxsdXB1ZnJAYW9sLmNvbT4NCiogVHJhbnNsYXRpb24gdG8gUEhQICYgU21hcnR5OiBFZHdhcmQgRGFsZSA8c2NvbXB0QHNjb21wdC5jb20+DQoqIE1vZGlmaWNhdGlvbiB0byBhZGQgYSBzdHJpbmc6IFNlYmFzdGlhbiBLdWhsbWFubiA8c2ViYXN0aWFua3VobG1hbm5Ad2ViLmRlPg0KKiBNb2RpZmljYXRpb24gdG8gYWRkIHVzZXIgZGVmaW5lZCBjbG9zaW5nIHRleHQgYmVmb3JlIGNsb3NpbmcgdGFnIGlmIHRhZyBtYXRjaGVzIHNwZWNpZmllZCBlbGVtZW50cyBhbmQgYWRkZWQgcmVhZCBtb3JlIGxpbmsgd2l0aCB2YXJpYWJsZSB0ZXh0Og0KKiBBdmkgSiBMaWVib3dpdHogYXZpai5jb20NCiogQ2xlYW4gdXAgYnkgQnJpY2UgRmF2cmUgPGJyaWNlLmZhdnJlQGJsb2dzcGlyaXQuY29tPg0KKiBBZGQgQ2hlY2sgZm9yIG5ha2VkIFVSTCBieSBMdWthcyBCbGF0dGVyIDxsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoPg0KKiBBZGQgJGFkZHN0cmluZyBhbmQgJGxpbmsgaWYgdGhlcmUncyBubyB0YWdzIGluIHN0cmluZyBieSBMdWthcyBCbGF0dGVyIDxsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoPg0KKiBBZGQgdG8gVG9vbEJveCBieSBMdWthcyBCbGF0dGVyIDxsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoPg0KKiBFeGFtcGxlIFVzYWdlIHskaHRtbFN0cmluZ3xodG1sX3N1YnN0cjo8bGVuZ2g+OjxzdHJpbmdfdG9fYWRkPjo8bGluaz46PGxpbmtfdGV4dD59DQoqIA0KKiBAcGFyYW0gc3RyaW5nDQoqIEBwYXJhbSBpbnRlZ2VyDQoqIEBwYXJhbSBzdHJpbmcNCiogQHBhcmFtIHN0cmluZw0KKiBAcGFyYW0gc3RyaW5nDQoqIEByZXR1cm4gc3RyaW5nDQoqDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoqLw0KDQpmdW5jdGlvbiBzbWFydHlfbW9kaWZpZXJfdGJUcnVuY2F0ZUJldHRlcigkc3RyaW5nLCAkbGVuZ3RoID0gODAsICRhZGRzdHJpbmcgPSAnLi4uJywgJGxpbmsgPSAnJywgJGxpbmtfdGV4dCA9ICcnKSB7DQogICAgLy8gb25seSBleGVjdXRlIGlmIHRleHQgaXMgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgNCiAgICBpZiAoc3RybGVuKCRzdHJpbmcpID4gJGxlbmd0aCkgew0KICAgICAgICBpZiggIWVtcHR5KCAkc3RyaW5nICkgJiYgJGxlbmd0aCA+IDAgKSB7DQogICAgICAgIAkNCiAgICAgICAgCWlmICgkbGluayAhPSAnJykgew0KCQkJCS8vIGNoZWNrIGZvciBuYWtlZCB1cmwNCgkJCQkkcmVnZXhwID0gIjxhXHNbXj5dKmhyZWY9KFwiPz8pKFteXCIgPl0qPylcXDFbXj5dKj4oLiopPFwvYT4iOyANCgkJCQlpZihwcmVnX21hdGNoX2FsbCgiLyRyZWdleHAvc2lVIiwgJGxpbmssICRtYXRjaGVzKSkgDQoJCQkJCSRsaW5rID0gJG1hdGNoZXNbMl1bMF07DQoJCQl9IA0KICAgICAgICAJDQogICAgICAgICAgICAkaXNUZXh0ID0gdHJ1ZTsNCiAgICAgICAgICAgICRyZXQgPSAiIjsNCiAgICAgICAgICAgICRpID0gMDsNCg0KICAgICAgICAgICAgJGxhc3RTcGFjZVBvc2l0aW9uID0gLTE7DQoNCiAgICAgICAgICAgICR0YWdzQXJyYXkgPSBhcnJheSgpOw0KICAgICAgICAgICAgJGN1cnJlbnRUYWcgPSAiIjsNCg0KICAgICAgICAgICAgJG5vVGFnTGVuZ3RoID0gc3RybGVuKHN0cmlwX3RhZ3MoJHN0cmluZykpOw0KDQogICAgICAgICAgICAvLyBQYXJzZXIgbG9vcA0KICAgICAgICAgICAgJHN0cmluZ19sZW5ndGggPSBzdHJsZW4oJHN0cmluZyk7DQogICAgICAgICAgICBmb3IoJGogPSAwIDsgJGogPCAkc3RyaW5nX2xlbmd0aCA7ICRqKyspIHsNCg0KICAgICAgICAgICAgICAgICRjdXJyZW50Q2hhciA9IHN1YnN0ciggJHN0cmluZywgJGosIDEgKTsNCiAgICAgICAgICAgICAgICAkcmV0IC49ICRjdXJyZW50Q2hhcjsNCg0KICAgICAgICAgICAgICAgIC8vIExlc3NlciB0aGFuIGV2ZW50DQogICAgICAgICAgICAgICAgaWYoICRjdXJyZW50Q2hhciA9PSAiPCIpICRpc1RleHQgPSBmYWxzZTsNCg0KICAgICAgICAgICAgICAgIC8vIENoYXJhY3RlciBoYW5kbGVyDQogICAgICAgICAgICAgICAgaWYoICRpc1RleHQgKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gTWVtb3JpemUgbGFzdCBzcGFjZSBwb3NpdGlvbg0KICAgICAgICAgICAgICAgICAgICBpZiggJGN1cnJlbnRDaGFyID09ICIgIiApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0U3BhY2VQb3NpdGlvbiA9ICRqOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RDaGFyID0gJGN1cnJlbnRDaGFyOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgJGkrKzsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkY3VycmVudFRhZyAuPSAkY3VycmVudENoYXI7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gR3JlYXRlciB0aGFuIGV2ZW50DQogICAgICAgICAgICAgICAgaWYoICRjdXJyZW50Q2hhciA9PSAiPiIgKSB7DQogICAgICAgICAgICAgICAgICAgICRpc1RleHQgPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIE9wZW5pbmcgdGFnIGhhbmRsZXINCiAgICAgICAgICAgICAgICAgICAgaWYoICggc3RycG9zKCAkY3VycmVudFRhZywgIjwiICkgIT09IGZhbHNlKSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RycG9zKCAkY3VycmVudFRhZywgIi8+IiApID09PSBmYWxzZSkgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0cnBvcyggJGN1cnJlbnRUYWcsICI8LyIpID09PSBmYWxzZSkgKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhZyBoYXMgYXR0cmlidXRlKHMpDQogICAgICAgICAgICAgICAgICAgICAgICBpZiggc3RycG9zKCAkY3VycmVudFRhZywgIiAiICkgIT09IGZhbHNlICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50VGFnID0gc3Vic3RyKCAkY3VycmVudFRhZywgMSwgc3RycG9zKCAkY3VycmVudFRhZywgIiAiICkgLSAxICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhZyBkb2Vzbid0IGhhdmUgYXR0cmlidXRlKHMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRUYWcgPSBzdWJzdHIoICRjdXJyZW50VGFnLCAxLCAtMSApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCAkdGFnc0FycmF5LCAkY3VycmVudFRhZyApOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiggc3RycG9zKCAkY3VycmVudFRhZywgIjwvIiApICE9PSBmYWxzZSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCggJHRhZ3NBcnJheSApOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRUYWcgPSAiIjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiggJGkgPj0gJGxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEN1dCBIVE1MIHN0cmluZyBhdCBsYXN0IHNwYWNlIHBvc2l0aW9uDQogICAgICAgICAgICBpZiggJGxlbmd0aCA8ICRub1RhZ0xlbmd0aCApIHsNCiAgICAgICAgICAgICAgICBpZiggJGxhc3RTcGFjZVBvc2l0aW9uICE9IC0xICkgew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3Vic3RyKCAkc3RyaW5nLCAwLCAkbGFzdFNwYWNlUG9zaXRpb24gKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkcmV0ID0gc3Vic3RyKCAkc3RyaW5nLCAkaiApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KCQkJLy8gd2hlbiB0aGVyZSdzIG5vIHRhZ3MgICAgICAgICANCgkJCWlmIChjb3VudCggJHRhZ3NBcnJheSApID09IDApIHsNCgkJCQkkcmV0IC49ICRhZGRzdHJpbmc7DQoJCQkJaWYgKHN0cmxlbigkbGluaykpDQoJCQkJCSRyZXQgLj0gIiA8YSBocmVmPVwiIi4gJGxpbmsgLiAiXCIgdGl0bGU9XCIiLiAoJGxpbmtfdGV4dCAhPSAnJyA/ICRsaW5rX3RleHQgOiAkbGluaykgLiAiXCI+IiAuICgkbGlua190ZXh0ICE9ICcnID8gJGxpbmtfdGV4dCA6ICRsaW5rKSAuICI8L2E+IjsNCgkJCX0NCgkJCS8vIHRoZXJlIGFyZSB0YWdzDQoJCQllbHNlIHsNCgkgICAgICAgICAgICAvLyBDbG9zZSBicm9rZW4gWEhUTUwgZWxlbWVudHMgICANCgkgICAgICAgICAgICB3aGlsZSggY291bnQoICR0YWdzQXJyYXkgKSAhPSAwICkgew0KCSAgICAgICAgICAgICAgICBpZiAoIGNvdW50KCAkdGFnc0FycmF5ICkgPiAxICkgew0KCSAgICAgICAgICAgICAgICAgICAgJGFUYWcgPSBhcnJheV9wb3AoICR0YWdzQXJyYXkgKTsNCgkgICAgICAgICAgICAgICAgICAgICRyZXQgLj0gIjwvIiAuICRhVGFnIC4gIj5cbiI7DQoJICAgICAgICAgICAgICAgIH0NCgkgICAgICAgICAgICAgICAgLy8gWW91IG1heSBhZGQgbW9yZSB0YWdzIGhlcmUgdG8gcHV0IHRoZSBsaW5rIGFuZCBhZGRlZCB0ZXh0IGJlZm9yZSB0aGUgY2xvc2luZyB0YWcNCgkgICAgICAgICAgICAgICAgZWxzZWlmICgkYVRhZyA9ICdwJyB8fCAnZGl2Jykgew0KCSAgICAgICAgICAgICAgICAgICAgJGFUYWcgPSBhcnJheV9wb3AoICR0YWdzQXJyYXkgKTsNCgkgICAgICAgICAgICAgICAgICAgICRyZXQgLj0gJGFkZHN0cmluZzsNCgkgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oJGxpbmspKQ0KCSAgICAgICAgICAgICAgICAgICAgCSRyZXQgLj0gIiA8YSBocmVmPVwiIi4gJGxpbmsgLiAiXCIgdGl0bGU9XCIiLiAoJGxpbmtfdGV4dCAhPSAnJyA/ICRsaW5rX3RleHQgOiAkbGluaykgLiAiXCI+IiAuICgkbGlua190ZXh0ICE9ICcnID8gJGxpbmtfdGV4dCA6ICRsaW5rKSAuICI8L2E+PC8iIC4gJGFUYWcgLiAiPlxuIjsNCgkgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgICAgICBlbHNlIHsNCgkgICAgICAgICAgICAgICAgICAgICRhVGFnID0gYXJyYXlfcG9wKCAkdGFnc0FycmF5ICk7DQoJICAgICAgICAgICAgICAgICAgICAkcmV0IC49ICI8LyIgLiAkYVRhZyAuICI+IiAuICRhZGRzdHJpbmc7DQoJICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRsaW5rKSkNCgkgICAgICAgICAgICAgICAgICAgIAkkcmV0IC49ICIgPGEgaHJlZj1cIiIuICRsaW5rIC4gIlwiIHRpdGxlPVwiIi4gKCRsaW5rX3RleHQgIT0gJycgPyAkbGlua190ZXh0IDogJGxpbmspIC4gIlwiPiIgLiAoJGxpbmtfdGV4dCAhPSAnJyA/ICRsaW5rX3RleHQgOiAkbGluaykgLiAiPC9hPlxuIjsNCgkgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgIH0NCgkJCX0NCiAgICAgICAgfSANCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkcmV0ID0gIiI7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJHJldDsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAgIHJldHVybiAkc3RyaW5nOw0KICAgIH0NCn0gDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/getIcon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KQXV0aG9yOiBMdWthcyBCbGF0dGVyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCmluY2x1ZGUgJ2xpYi9jbGFzcy50YlV0aWxzLnBocCc7DQoNCiRleHQgPSBpc3NldCgkX0dFVFsnZXh0J10pID8gJF9HRVRbJ2V4dCddIDogJ3Vua25vd24nIDsNCg0KdGJVdGlsczo6Z2V0RmlsZUljb25CYXNlNjQoJGV4dCk7DQpleGl0OyA=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUbyBkZW55IFBIUHMNCjxGaWxlcyB+ICJcLihwaHB8cGhwM3xwaHA0fHBocDV8cGh0bWx8cGx8Y2dpKSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGRlbnkgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjwvRmlsZXM+ICANCg==]]></data>
	</file>
	<file>
	  <filename>/images/AVIicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8BcfJxwiKh0kMSgwOi42PAENZAEQaxwncCg0Qy42TC89QDZEVzVHXT1KXTRJaz9KZ1U0RHVpKnl3LEFWZUtXalReb11lb1dgcVhhcl1ldl9zf3tGSWJremNseyk6hDNGkDdevjFg5jVn5jdt9jpt81FsilhmjVB3j0BjplZjpWZvgGFyimV7gG12hm18rk15xlx+xTCkMzy3PkKcR02feF2IbmSCeFfPVFbQWGHFYW/ddXmBjHqDk3mMo32Hsn+HtHWQu0GS31mV2lCM/16e/0Sm93mdx2eR/32b8naz6YtjZoNrdIZocIF5c/MzF/Y+J+tQPv54ZPh6a4B2gJukHrmYHLiWOKSkL8yuFtu7G9C6ceyLf+zACujUHunHNIaCiYWFj4qQnImPtYuOuJOappSgq6Wrtq6yuq+zu7GztbK1urG1vbS3v4CbzpCY6oSj1oep3Iir3pyp4Jur/5G345e75JW86Jaz/6Wz2qe42bm9wru/yKmt/6W97qi/76C29aqz9ZfHuoHrgZX6krzAx7jH2afI66vB56HF8qvB8K/D8LLA6bzH4bHF8bHG8LHG9rXI8rfJ8rrJ9LrM873N87zQ6LfR8rjU9bvY982ouP2aiv2kl/i0qdzFg8XIzdDS2NPV2Nvb3M3Z6sLU98Xd+szV/83b8Nnc4Nfe9Mvh/M3i+Nbh9tDk/NPm/NTm/Njm/9jo/Nrq/dP6//nUz+Tm6enp6eTq8uLv/ebx/efx/ef5/+ny/uvz/ezz/ez0/u31/u72/u3///Dx8vXy9vb29vb39/f39/D2/vH3/vH4/vP4/vT5/vX6/vb7//f6//f7//b///j7//v9//v+////+v///f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj/AKFB00Ow4J48eoAJXDgQXLdt1qYpO6ZnSg04sZgJ1MMtWzVpyYwNe/JkiZFCvjZioxYNWTFhwV69UoTETSpozpSoqXLlB5A3rHbpwsXphqNndKyUKWWqEaMhNh7dsuVpRB1VVLaQ6tVM1iIiQUh8mtUpRJw0WrjwAkWLWC48QnoccbXJbIkso0TpyHEnkiEfPDqE0mRWA5ZKmFI8gDCjT4wdFCBdMouhRSZYKCLgEBSoixcHfyiZpbFCirdBlq4tSwTmSwU/k8zOUdGk1Tdw2mqRGbPhBSBEZn8VYeIkCp9TaM6EsQBF0iERcqCtyiCDhQszYjhMgJGETZsTdgQSEQLRYIECBhIuePggwsQaVAEBADs=]]></data>
	</file>
	<file>
	  <filename>/images/CSSicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8FY9KkU4QFpAO0pNWFpGSUZQY09ZalJcbV5dZl1mdl1md19oeGJYRWdeR2lnYGNsfHFudXNyd3J3f296h3N7iX9/gHl+iXRto3+FkZVOFppYGZpuK6FgD6ptFaZuIaB3KYt5aqdtQKqBMKiJNLWXKraWRbicTK6Va7asV76wVLimfsaLDsSOCcqRDtGeCsucLtmmG9mlHdunKNSsP+SwPui1OOm2Os6kRM+rVMGzXcS4Y8yza8W8fOGoQe67RfK+T/K+UPXCUvDFY/HHZfvQdYCEiYKAloOKloiOmY6TnpSFh5KNkZSPlZGWoZGWopCYo5acpZedp5yiraGWpaCkraqqqq+tqaSpsqWttaqvt7Otr4q96bi0zrm7wLi4z7Gy0LKz0bW107G/0JjI7bzEybLV8bPb87XY8rbZ8rfb87nd9L/e9Lnh9b3h9ci4lde9odHIitHKl9jJrd3Qut7Zs+HNoPnjsMHBwcPCxsXCxcXJzs7P08bQ1dTU2Nra2trb397d3N/d3s/Q6s/W7NDQ4Nvc4Nzd4MTt+cft+czn983n983s+MXw+sfw+srw983w98/w+s/y+t/n6dbt+drt+d3t+d7t+dDw99Lw99Tw99Py+tX//9jw99rw993w99/w99jw+tnz+93w+t7w+tn//938/t3//+De3+XizfLs2+Dg5OPk5uHo7O7o4Ovs7Ors7+zt7u7t7e/u7e7u7+Dt+eHt+eLw9+Tw9+L//+X//+b//+v19Orz++v1++r9/ur//+v//+z//+7//+////Hx8vPz8/T09fb19vf29vf39/f3+PD///L///P///T///X///b///z69/j4+Pj9+vn8/vn///r8/vv9/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj/AKftkWXEzww9Q4jImMawoSMVLai4CBGjCw0YUM7UgsZwTaMijPiYmdVn2y0vUxI5ozZNTbBWn3z9AidOXC4OIgrhijYtDTBr2o4ZCwfozxMMQfAg4tUzlapOnkB5O8LkywUdL8Ao6olqWTNs3ZwsafLFwg0cPQL1PHVnTh1WJ5IgEcKiho0UH3qaalNGzps8Snz84LEjB4MNPUfZgUNnkiETK4CgIFGiQZWeojZpqhSHEptPIxQscKBhUM9QlySRWoWsWrZvVyRYIbOoZyZLkV4NS8YMqBYQgmLt6omplCtYwogpa3YNi5RDvaRNQ2OrGCc3YrJ0mPCgQhhaz7hNEnvEhQKECBk8RNkyhhAkXQ0DAgA7]]></data>
	</file>
	<file>
	  <filename>/images/DIRicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8ElJSWlpaWpqan9/f5lnAZpoApxqBJ5sBqBuCKNxC6VzDah2EKt5E658FrB+GLOBG7SBHLWCHbeEH7iFILqHIryJJL2KJb+MJ8CNKMKPKsWSLceUL8mWMcuYM8yZNNOgO9ypROazTu+8V/jFYP/MZ//Ub//ge4iIiP/mgf/rhf/0jv/3kf//mcHBwc/Pz9fX19jY2O7u7u/v7/f39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAi6AHsIHEiwoMGDBlGcMFFCxw6EPVD4mOhjxI2HCX3Y2GjDBwgPHDZkwKCDR48TNWioVElx4oUYOXqYmCGDhM2bIj500JAhg44SMEi0HCrDx4QYJF6g4Mh0YwsbEhiMcHHCRo2rWK+ysBFhgQgXJGzMGEt27AobEBaAcBHCBoy3cN+qsPFggQcXHWy82Mt3bwobDhjoEInhgoUKFCZIiADhgQMFDXbcaLCgsuXLCxrc6LFDB47PoEPjcBgQADs=]]></data>
	</file>
	<file>
	  <filename>/images/DOCicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AEyeCg+bTZKZDdLZQgviwU2ggg8iAZCmwlLsiFMmjpamDJbtipitzhhrjppuE1qp0BmtERquVVtpF11q2d+s0JuxEl0zFJ3ylV7zl99w1h+0XeKnGCBzWeK1XeR1XyX2Hij63ul6Hyk6ZOit5WkuZamu5movoOc2oCe5ouk3ZyrwJCu1p243p6434Cn54Gn54Sr5oWs5oml6Yit5Yqu5Iyv5I+x45Or5pGx4pWz4pW04pm24KW0yqa2y6i2zaq5z6G63aS73aW83Ku60a260K290q6+1K+836q+8bDA1rHB17LC2LrF1LfI9MnS4sfa+Mnb+crb+Mzd+M7e+M7e+dbc6tDg+dLh+tLi+tPi+tPi+9bk+tbk+9fl+tfl+9zi9Njl+tnm+9rm+9rn+9zo+93p+9/q++Hq++Hr++Ls++Hs/OLs/OTt/OXt/Obu/Ofv/Ojv/Ojw/enw/Onw/enx/e30/e/0/e/1/fb29vb29/f39/Dy+vL2/vP3/vT3/vP4/vT4/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj1AAkJrEJlCpQnTZIgOWJkkMAgQXjISHGCRIgPFg79odFAEKEgi0KKDCkBESAXVjrykBLDxBcTaTjMkKAoUIsGOGWkiTEizYY0GUpIqFHDD5MlDVAsQrEhyoQZFLBESFSDDx0lDE4s8rChw4MKCxZFMFQDDxwbDEQs4kDhyoMHThZBAFTDzpsiDEAscnCh0AMNIR8QjcNmCAMMI0cq0FPHTRkgDCxImByhMoQHCoiiCeODgUBCMPb02ZPnjhw3Z8Z42eFZ4Is5dYjKrtFlS47WhFywabNGjRkyYLhoycICdwsxN4oQEfKjhw4cK1TgZkC9uvXqAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/images/GIFicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8FdgcVhhcl1ldmJremNsez1tvSRw1UdHrGBElGFyim12hm98rmz5NljwUAyL8QOb+QGZ/wmU8g+n4nqDk3OCtXaIu32HskOW5USm91Or9nqPwn2VyH278u81D/k0Bf80AcZ7e9zJJOXUCfrNAufGJ+fGKOnIKfDMKu7XZIqQnIuOuIuRtpOapqWrtq6yuq+zu7G1vbS3v4Gcz5OWwZWZxJacxpeeyYOi1YSj1oep3Iir3pmhzJek0pim05qo1p2t2bu/yKW97qi/76qz9b/DgYbG/ofP+YrO/5zG9ZnL/LzAx6vB8K/D8KjP/6fT/6nU/67S/6zV/q3W/6/V/a7W/7HF8bXI8rfJ8rrJ9LrM873N87LU/7PX/LbW/7PY/bLY/7fZ/Ljb/7vZ/7nc/r3d/b3e/8XIzdPH1NbM2dDS2MDb/8Td/8zV/9Hb5tXf6Nnc4N3jxsLh/8Pm/8ng/8jk/83h/87n/9vi6t/m7NPp/9br/9ns/9zu/97v/9/v/+Tm6eTp7uTq8uns8OLx/+Ty/+7w8ur1//Dx8vPz9Pb29vf39/D4//b7//j4+Pr6+vr9//7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjoAIcIHEhEyJBFlBIqHLKp4SZNmSwNMTHhRp5ICRk2hGipkggRITooSZQR08OIlSDZsdMEhI05GS+lmKmCz6FGhgiJoUAl46SZKB5o0BBl0B8yDHRklDRTAoShGtr0GaMAR8ZHKU5EeDr0SZ0wVRMGYRRHDoYNHIZOoQMmLCUeihwhgnLBQoYRaNh8cVtCEKJCMlqwWCFlzRkrbkkEKqQnhosXMJx4KVPF7Qc8gwC5UWOmy5YsWpi49XAHkJ89b9ak4YLlypIFORJWSILkiJEiQH746FGDhoMdCeHMaLBAgfHjCxrMgJMwIAA7]]></data>
	</file>
	<file>
	  <filename>/images/help/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/help/Socialshareprivacy.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEAeAB4AAD/4RCKRXhpZgAATU0AKgAAAAgABAE7AAIAAAAIAAAISodpAAQAAAABAAAIUpydAAEAAAAQAAAQcuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBoaWxpcHAAAAHqHAAHAAAIDAAACGQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAaABpAGwAaQBwAHAAAAD/4QpgaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIvPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj48ZGM6Y3JlYXRvcj48cmRmOlNlcSB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6bGk+UGhpbGlwcDwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAcFBQYFBAcGBQYIBwcIChELCgkJChUPEAwRGBUaGRgVGBcbHichGx0lHRcYIi4iJSgpKywrGiAvMy8qMicqKyr/2wBDAQcICAoJChQLCxQqHBgcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKir/wAARCAA2AiIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk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mP8AWR//ABVLjUMAfYZ8D/ppH/8AFVt0UAYmNRzn7FPn18yP/wCKqWzt7p7yKSa3aFYiWy7Kc5UjAwT61rUUAFFFFABRRRQAUUUUAFQ3VnbXsPlXlvFcR5zslQMM+uDU1FAGT/wi2hf9Am0/79CrNno+m6fIZLKwt4HPG+OMA/nV2igArH1O1u21Dz7eAzI8SodrKCpBY85I/vfpWxRQBzb2d7Ku2TTndc5wzRkZ/wC+qhvdIn1BIkvNMlkWKVZUHmoMMOh4fn6HiuqooA537PqH/PhL/wB9x/8AxVaWkW88FvMblPLeWXeE3AkDaq844/hzWhRQAUUUUAFFFFABRRRQBDcozRqygsUcNgdTik+2246vg+hU1PRQBw9h4I0/T/GU3iePxFq8up3KLHcPIsG2aMbPkKiEAAiNRlcHjrXYfbrf/np/46asUVc6kqlnJ7Exio7FOK5tvsiRSsD8gVlKkjpgiuN1z4eaBr2t3uo3lwyvcQLHEkcZUQuBgPxjd24Nd9RUFGRoltY6Jo9pYQyK/wBnhWHzPK2lwvc4HuT+JrQtwWlllIKhyMAjnAHWp6KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==]]></data>
	</file>
	<file>
	  <filename>/images/help/socialshareprivacy1.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v7+/v7+/v7+/fz8+/v7+vr78/T27O/z3ury2ejw1+jx6Ozv7e7x7e7w7e7x7e7w7u3t7u7u7u7u7u7u7u7u7u7u7u7u7u7u7e7v7e7w7e7u6ezt5uvs5Orr4+nq4+jp4+fo4uXm4ePk4OHi3t/f3d7e3t3c39zY4NzW3NvY09jdydPgyNPjydPizdLa0dHS0M/QzMvMxcXFwcHBvb2/urm7s7S3sbCxrqyrqKaloaCelpWVjo6OhYeJf4KIeIagbYq9Z362YHCrVGejQl+cP1yUS2CLX2d2Y2RmW1tcU1RVSUpMOz1BKSosGxscGBgZExMTCgoKIbgbkQAAAAlwSFlzAAAASAAAAEgARslrPgAAAAl2cEFnAAAAyAAAAMgA60p8lgAACsNJREFUeNrtnW93mkgbxvdb8jE9RtJm+4JX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]]></data>
	</file>
	<file>
	  <filename>/images/help/twitterfeed.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAWEAAAHGCAMAAAHlP/olAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMAUExURf////Dw8PLy8gAAAO3Oq2pUS9HV1PPLuPjXxoI6gOCjXf/houf//7WZtML//5urs+MADjo6XV86gO1dZl46Nrimmuy/qWew3l9fk+rGs8/Bvf7g0v/v3suqmSgoJ///6jo6NoppWv/evLSIchcXF1tbW7ewvOfRyM///52evFdDOmeevPrU1lVUU3R0dEZISGfA6f/CgKPh/7XDyML/wfvn5yQaFrOYirewyJm73oLC/2tra3hpYjpfohUFAZR1aA4ODoKe04l0a///9P//wZmZmc2sqVZLRv/uzq7ByOm9p9i1op3g/3hiWKNfNuUWJJmEeqiUh7uamKqal///4ejr653G1+QKGAsAALfv/968mWee0668waPColpSTAUAADqCj+YkMYI6NodtYjEhGzsqIot8dwEBATo6gKOoqsS2pp+2u0o1K4I6XQEAANKrmKmtuYKevPB9hO7//+S9qrze//n5+Z6Lgkg7NgMDA4LQ9AUFBWeeyICAf5R7cl86XTExMfH6/eS6pgABAHmChZmbqfjEx1+j4f//3rfg3qurzjqCwYKw3fX19c7u/8r648GciqmMfwMAAFhWVOD//77L0QAAAt7n6tPBscKCNqvO7n5bTJ2eyP309OfNwBwRC/SjqE1PUO/Er//07C01OOX/5qN8av7//4KeyIyXm/j+/0A/P+pBTPz8/FNcXmx6f/3m2O3z9Z2e0+O1njpBRP7+/va0uP/y51tlZ4LA6Pz//wEBAM68tP74+KOjXcWhkPH2+WBYUwoIBunv8vXe0DwwK/77/JmrzoJfNl+jovjj2////QMCAAoTF2Kow7XRx3tvaeQQHaNfZOfv3lZWVgACAeK2oc//9MLCgPPz8/OZn7fQ07usz8Lhorfv6Yugovvb3fnO0bKwsAICBPTw7+7/3gQCA4CMkNGlkObx9V9fX+f/9Ov0+ZFwYldXV1lYWdLa3YKwwNCvoDY7Pjo2NPWrsO7evF+CwaPh4YLQ5e7uzuH/wcCso/3u7//+/ve6vvlsEQkAAE09SURBVHjazFYxaBNhFP7qDSn+6d96yAXSa+865HL1sCTnYq9mSJPSGM5MWWJAJYMNFQNaMzQWI4hEIopILLbgIjiLk2AXcRNnFyelguLi6Oq7XMVrkuq1NtQXfi5cvvvy8r73vRcM7CYwAP+xN7Qwv/Dw+DKgAEHduXEXyIvOmzXWjV64Jj09JxA6rJ3QCytoqITOmVx9CyaqFsvHveixl9LiqYrLkKNToiMDSaAWGo0WFdjbMpEC0swq6Lst5I6qebUBpIyCJl/BZDFUMAwYXvTm4LFNwe+v3Dg9fOnFFKYzrenM/aH9reChv8a9vavzfWN8fMajjupIs4J2KbrVkaTsvICUYhi2rkMHF3m4gKIetNtPceZF3/j89eL53xUkJRNb117cFWlCCgukMgerHzG5aOVR5vQB3WElqwN9azm7KAjtZmqHSbzsD+o8//L6OhpgjChFmMyhfbVWtpDPmzuok3JLYLs95UZiRy1jULRwLRmCbGh2UIbKG9xt839Q/lcMYwxz6/vbVf1Ej1A410kgLcYdV3J2uIx4okXWS5c5e+ZFf7w68uGTf+4ndIiw1UpTU4wmJ2O6jZRs2Eot1isTuKn4zLuNzixlqs0MhjJLZOhmc18r2JcJsTv0zci3yBvf6IXBgBRZhaLACJLnCyB/iuY7BsduP9J1vn2eTARmK76n5qyUlc4IaBBZ3XGk4/V4iXM4rDLCyZDu5X78QHq/6pd7+dH8FAREYejRMFIH753129Wzd+aqB6l81y7mW4DLPZXv2sU0m1VuQbQYcrkOtHcXOyOTlnDUHYxJOlpnJu4upnVjshxXZU2roYaTK5RVgV6daM8u5n53MTOtC/THgZX6UO//wMW+0buJnwIwWz6vTYNhHH/wFVqaLNg4W0kDffVQU16QLiBiLqMkslpKxfmCVoaHDqoHGcwi0ioMnNqxHY0HLx56cNddhqAHQfAoXgSPCt4EEf8B8XmbNOuPjcbaooFAAl+evHl+fT8wLXgcR7zygzSekH1Hl++1gS8mtXYisgJ2Tv8gA7vPZEEa3FG4AAOKjx2f74pfPj8RrQXNxCG+FXg8S2dXoSn3iK8W25EOmFAab6GYVsG2tYpWsnGQdDxeskf89XqUrIf8QbL0+dGFBpzc3ky7M4VJpm40Mh4aMzKh98jHvqIgRbMuLeqg9BelmIiiWNdYEydblgFBjhnZCiQrv4bExy6d3alBQHFxj57wXR0+xvqtxHz7BkhlZIC5mybEBCSiM7mO4Eeq9DcS2XnQIPBMVBq8D8wGHKoOFeX9QywKxICLgKqFN66ouTVTAa4exIrQJWYjP6qCekZPZSFjlPSskTfsfNVqiW/8Tbn9qwCHcTVNdAanKEZGvHgb9BxCoiuqgqXks4pTNmHL3ai2wIrtic98uXIEDuI4PhD5sRDibbkbqolGlEH/MSCdTYLGdBgSH/UJ0QuTCQGIhWt8E+qX03egwN3zvD4zsdRNbBXsjnmMt8iGp8OuggVvuu0cgxLmTQb0WoEIOFPScVhTzV7xu+/zL16HjbxcLCYWQDSAU3WRN8BRwAHTdERBbdAEJQRiEnlzNyxykqfb35ZQ3BSjatj2qDzvTnlSFs/VF1/9sxnc32Fb3b07ymGpgjuUWnEKXBrAQd9hJbMbJg+nBHFqIu8/jQGx77C4uGmZWrghm8BWGaRTjDHjU6pf7DmsBGZ4h5U67dOzZP+/gZ22+A+u3wKwaz2hcZRR/OFYd7vfdGzG7QQ3Y2cS2JnZDpadEdGNBtnOLLsbxlTDgE4TRFZog2FLQy2SEPBPiSkpFrGpNSF42IPpwYsHLbRIoVJyCOhJPAr2FijSoyDF92b/tAluYtpJmqLfZb8Zlsfve/ve936/93ZzlHGTlmEr1hrLH15Pp1dW0unrByO2zB0rxvtjkhRPc6hdHMVRssR9eM/QKKQDZI12SD18WxSruJ1jGP8VhtyRGljM9/1KG8vcje5bsVcOfX38Khcx5kPvSP14nUqvFtEy+0Ak1mVjSgzMCTYQKxYANyATk02l8shmjQDJDJ7lz8wQb3bBpN4OM/dl7LNr0vu/cF9EjHn8woXF4srBYeAi9saaW30epgZP5Y6cPDNYuHIqCstbEs+PoGWOOx+Pv/50rStNvyBlylgmY3pBYFBg8TyWb8EXe2dB0ReMrswQpg6SCAP02xOoC7JwVrhbgNbm4Gu3dtW6b+zav0FsOOZmMesv1GqSFOs/sI8yxRroEyiZXUusdOBOVZMI2E+AKE4LyyE8lyVHphGpVVHxKOt542b82l+DH8vcpuM5Ya+L+TS3+BEUfz9xETjqvSSm6ZZxCSFukiPQi5luQVJlDE9juVa1TyCkvkt99vVjY/9wuXzxiXL5x7W3qBpt1OlKVla6tMwE6Fqn1+kByiPzV8h7PO/oY0CutRK9KL4SeJ77iOdVjF4P1nHtDsjBnscXz+TOncjN90ydK+15MMuPRbE+3W5vfH84XI2noTDg1Fk3qYJaj7xk85utAFbvCWXWzvIPe+sL7pDaU/RURrvbALAFSt+zGGXMZyK1EKwBkUp5HwWeWxkR6JXP/tHyneYm1JHJVX2Fht6UG59498m8B2MG9UzMDb3xCeJ9qi6VwwMjGEQjUrlGk5cuaRliHeAFoDuOs5Dt9LxJrdMAg9/I8vP1EU1zUBPpL/gGCnv4pm65dCW3tDTfAwUssPugsAylQqG0NHrkZKkwMzq4VJjZiXXwP84KjnN/FLlj45+ff5YbD1tbSiN2jdZXBGuulQykxNi/5c9H38MKW4u9RTMiB7KKnPpZ458DwwwmJ5FzToM6QoPcxG4BtSWj3q2o2vgCk+8nURQrbS0/c/nyV1L3u/GXjzZnEBY0h8aM9a5q9a2qfI3UzLev3W9K/TGUvi8Ry10Ox8wqdIiWjRcRS+xWwye6gt62bFVIAgENcWJKmqkg0FKyN9aGFaCWjR/gbp5usQIaeN2+x9H3yb6uDpd/e3JqtPztOBbvF8N3GXPCMALDdNo1PXZWHcwtlmZmldxsac8D18Fo1nfb642HqWEFCGufBR025rZLf5jAHAI20Br6PVwNqzZaOQyqIUOX5Xxe08HzQnEBspJfwG2Y0Uaq/t+U9pi3R8MyJlYFsFyxSrcPNQTsqDTso6g0/9fd0VreovW3AOycX2xTdRTHj1bZ3K/ctDfQht0beoHRP1xH2osYuKaB2k7pbCpC0dQuLAHjqmSLzVYMZaT+SRjZgiZQ1BmjcZoACUsWkyVESUyIEnEEfdBnHogvPoGJPk3xnN9tR7uNdnWXP5u7LLS3D5/dnNt7vud8z+83WIDgh+9OlBc2eNnF1etRTNavbjEXvMxiOdl66JvDrb9wYyNlzMLBR023PDVro1ytlyMMd0esArZYnpSw7Gof2WmAnSknoD75JDeomYzqwcaHkTBB9zVe4AEUSAqGNIE+Frs1XdfvAH6rsaEd0d9t52A15fSrSdWnupt/am52paijSiM4HteHdAXBih1rOwXpCbDHmSYgWJkd3LJq/5q+Ndu+OGwxNcaWiz+/6fnD8ffmyWdPzOhxS4EdRrnzkn7ncjBVzyb5+1zGFZZnBV/fiZHAY2zDFaMqRnAkSG4wQ6G6RjNwjOaZkNcbKy6tk13NGVUCXyYGEvRbVciFPpktFJ1jjpGRdsckXwrGwYmrTN9HpTLT9CFq5NMQCqnqi1glQwxU6E+GaIRu/AurbpCTs4EtXX3PfdvQ2GMxOcZ4bGxs9PRYTAZvtxzpOL/pqfFTHRe7TAWPW/ZEN3Wc3RSNHqEr3g3Lswn8AZTUwvyT0OnTpXdt8Ej2wAS+tE283vZAZrdRk5CjM674oCkO2uiiUJC7BR63WFrXX+n69WTr9RkKUmrfjXyrxmR1ytg32nXvtFxY+eS1XHCs2tXQsPe2goDV43O7fb5MxucjBQE90QTuWEym9SFSyOV3yRm8ArLQyNS3C7Pnii8bKW22FxUklXImwSsjWFUR6+ZgSDA4AxLlXVk64wYXtig3b7pDBGZpu3YHBZGefqX9sw1jXT3VA6g664rxB5a9K194Z+THT7et7IGZKyiN+A4Xz7rJgplr2uzc30B+zoj0aGdR1pkYD4JW4JrMlAlINNGUh0cThOE4+akswOcT0/38CnDXq2OOdetGHJ4WriACRJrycZFPVwkMBQywqPMzAyzSpINxo5Yc3CqJ/nvHtsn9fZ31J3qlhoJc6exzrDpxyAArUFb08DGSwdDwZOKHuqSp5cbnoxdGb3xoIQUZON2EQQzqfOhE4AieYzSVAYpsXKMw8MgGgxqrUbvtiZ46cP5sNLrxXX7/B+KiQGA2BRappqIpGE2PNMMbByyAWI1qc080+vZrHShNtYZZ80pCnqSRD5ppkXFpEYtMGzYqF3EN1wv2YwnipQ0uHiyg5LArFMp5J2Q/hD1uX4wchkTT0EAksELUC/WBrWB1JmNeK+Q8BJZ9KfwlmCPCsjsTo+otwQJNEXw8dGH++Vit9tVdTM1N5VHAgqXt461YsMBHJhcsy7Nrj9HrPEuspYJlgYPP8QnlpbLHjCkKDCgaS4O9vK+dypMryh9A4Q7gS6UJJR9++l3cixXhd+yV8PvGwaUBPgodamwkgB8lmrqD6QGUg+7g+2wqIVWAbSUwHyb6c17a/CHy61QCAerEE5FAPq2RgiCYFJrALJ/mcpBPCwNTCakCfHTzLWPOZ3u+zojqc7h5NFflYMVe/nFxOGK1FvM93oIwvw1YHvbXunk22zn++hIHo1LG9+XTmMupavF7DbiM1Zov5XdiWRd2OVFPONhfC8znnedsRTCZ5UE9MExVCzXmVvB4DDDEYrRhTeK/SZL7YS7gx222shjrZnyPDfDRCrApD8ifNoryeBH8Xu+OZwZ7YTC74+UC7M66AM//GiwkMD8PFnYMZv+p48m7VRpaE7i37Ri4oG0t9GKyfwO2QtvXk727spT4d2V/W7vYk1D5YXL3f/swrfs/uKQgi9vmZShrQ0KxgxQCVfbp1WvzgsbBjAWxNbXTGC1I/62L0wpwFsmL/9HmpV1hBWycGGM0lGOaEFciKH66plB+tYvifbZ5MYaRkoEuPFHZspe9n2b81rJ5QezWgLdzEIC8SAvj94GgocyLBVJ7Fonz5cH5acZvTZv3McbXPu+jbkMRRUEBe0DDs8uiuEJTEgzstLaftnVVGr/3z+b1YOxCVEHIcNWXMtHmjSE2o8rgl3Mo+KT3Jtm88BW/YtUlS7KcnA94ms27lI+XxHRJTB8cMS22jREotZPi7Ipat5jylShQUBhERBHTMeonpm2hBngOYqqjcmiQUFjialxU+Co4QakJvjdiWlGPiLd7yOLyXE9RRwGkMErB9FavipiW1SMYVwxs0lsCS0CrkLCFpL+E4HQCSoHkqhaKaTPTUj2iwOU401DjYzEVtmyhVldOQoa2S4DqVvFMwnNvNc27J2JKjrE4ozgxQUzJjxCpNqHNS918wG+OmAqCwuJUm9AOb00QwL4kpv8/MV3SvAUIPn43uMcfWnjr3f4VgL0rjGnjPMPf5rCY2LWC6xnCObkLaY2vtzTYNIE6JRTstoYZL1lIWwcWGqLUzlScMgIDRhu0dB0LKckyRJeGJQvSQtoIqaNiP9IuWdyqycT+pIrUtdO2Sv2xalJHVPVnZu19v+/ubEgwhtiLCfcB8d13d+Sx7+Hz83zv+37OXO6fhjgRcWaYnJk/Dw3xXUS8AdRQdOr6dXgMHXoANqZ+otNFOrIX8RoA3DV1+e3Va1/YsmVv3Vcf/HD9VJeSBudp4PPxp9Bvk3qIXTKKpRJ4CtjxSD1SAy/lE7HV8XNC+lyKtHYK/fVu558Fl1cwGS4KKJIFwWAymNgSnYa/CsTcnAfK2Su4DPB99eg/cYEmp+BKFTEq2t7H9CNWpemL10dnIG7ANELRSLgS0cj57Q7caaWqmWA3bWBXKOKDpKXe3cICYgyo0yRvhAE0bplZL57SYjDVu/GLHk0d8ZocDl7gHKv1QOeWZ395cyqqi+iylxVDuqbtTZuKT1U/tH/dqmM3q3P0e5s6L7+bxYjBQOkf+jW3/9glzEj66tjqVfrOl987zhDDHcTVXvEuAh3RrZLmMAlAnyUP9lzAWLrqSTOeg7yokvxij9jj+ZtECglv5H8nBTHA6CetPbALjq7KBpbrnM3BB+0k30bDhtSDFR6B04KpIT6ki1a/wAGBv1y3/+xP4ZHLeV5xaQaTzEf4cXldFWwzQE4gPjNjLCEraGaRCw9VISSbw+NH+1pCl92jMwsIEXe4IBxiHVVk2NNN5H8wFwU6UkMcwsFim3Xk5LaysrLKs1b9Ghw+7owVHn8mWRGBVxkG4LpV1ne+sNZyp3FoS0eSb+YQA97IvtHRf09uWrvndOGOjgvkYXjZI9mL+GFAt6Oxpqa09M19r7y44Tps/mlzl1zTyA9goRLfnlWISUcXRVxT863X//XW67jx/ktdm5Wjy7BAqV3sGyiCre3tpGjwPl/bziKyM/uVUNwK982+YPAS1G4TcyKeGMsqwB2aotcQL3h0g3e49WA9zj8Q7T1zHVroUGRzFiPejHPID+56fu+zTdi2fHvXfx6EnuOyoqfvI/GUd9TvtFaZoKKPN1BBTmWWnwdp4+kGSaaqC6pxqpSJ/unNYEp8SNmD7PpgOdYB0HiA/r3L8KoPJXoQqYGI3aLDDlLSyHXbHbhDPYiEPfJ/CGLOIKD3abATzniOish8YieixHCeKzZSbccHP/7Y0Sr1wAn5hPkUg5A3X8RPccsrv4uglx+4pP/xrx5PjAlMTjt9cu7byaHMFefFgNj8FH2kKfr11rJtJ89Wnj158/uWyseixyPZrN1CuuilnOKyrdV1X45YL728J6dSX3ds6/HITHYllCeYCVFcJ2XDrWfQ1kIPq7/CnD7XFNqV85QeHNMXyzH6ZK19O6czqnoQg8mCJEMzYqFZmM10cU/WxxC7wacgg2Ua4x4cq2CIDW68bsWg2q8eDtBrZn8iyXg89G7oFFB4BBouzFG3AzTz0PyJN7822bLw1xjbX05ztSO174zUHjjVFEFPMpS9PEa8oc97e/dVd9at3bPpG1+fOaMLHVJZ4X3EJBO1frZMVK8rkeEt6jgbmDnm3joKL3gW60ZjTeObF3r3nX9lx4bSmsax85/r5JrLglySm0solQFxf5yEqs9eMeh1WRRam3HNRoX7gRWYvu3yCm4ccWXOshkg850gntigi7yPHqS0sfHFt26gB/n9S12hsTsjYRoIv2S027jNOCxP5NBmc/BHHXzwNpMSOIfC3o7tSX6fOdOIRYkW/oFI4IweP+qFI+NkfJxQWYATP/IcEOgHm98GiG2SFLSTYnxA9PKo2/JRbq5zsF4duFMCng5W2Gfn6OTw7ambOuE1D7J4ED8hZuGcUNJxt20ZGX2DtPueGFjta9uOa+xv/xnOCY1m95zQhVEySvgBtjMKbzpPajMs2gyLhngpIt74zMrERmKfqvKmRJlQUXRMmBzEhwDq+wpFzZvjHxOlCt9bFbB5fu50dsSx3dPwrgS411b+N46Y6xaNMmpz/P9FQC0KYgs8DVQ6ieKd6X7wsWho4QEvs2ABJ0p8eL4VFSzkS68p+Ii52tQQf2c64FdpSefuzN7xendaePzhp9eeoZ/Bd386ygEzyONXV+7+7YeJHX9IKGCcwUZzgipHlV+lTv2Vk3JbQspsuTpF6GGrBxQbiRLQ5YN3jJi2Hym0xorZBMRIsAAwEv7WRitwmsUlz7WgkkfEqPMJ7+AdiAeBgbznQe7jF6GIQfcjTCmOOD8diGm1MPnjNbbzvVm5F5tL56fLm86NeHfiTlbzWC3K/gy2P7sNYl9bwg5bJnm1siEfjJ/ia+sbwEOHp12VZsSx+2WYG2F7OmJfWxH92MxlRU/iB1DB9+EijKPuJDGRvIFhVADma7vPt2xC7BvAmKqvbbL9MGwD4kfVp5WJd+mJjdhgyPjNRtZSMiiarkgD4uyM/SdvWux/jjY2N+KOjuxh7thrmgfREC8U8RLN5sVIOsvWNbHI3UVM0GUxyHo3Zu2azE5BcGOKL+1xOwcFYbIgjFmWzWFCky1TRJyebF4aO2XZujNjkMy5YpwnTJSUyhMF6/oxrdLMzlVWw0kdsZbNm1nESbN5zRjHcBmu4oK/5AQQDpiH+eMWAZjnZhE9cFDYhWSkcWdM9X3ODV3NeXChJQ/oLQiE8RUuT57xmxLiZNm8sR8MUg4iU/+uxBhJ2KkExin9MHklTI/JkXIn/Yj7MM31MHldAZmxyuXJMn5TQpz+bF6Dy5lowWcJ3syV8btksnmvgLuvoneShiHhXj591MgfddhJvudpySbdDcRJs3k5Qn5hZIi5IM42FB6xOYaPsJRyeUbi//8unTybV1NCGmLNmWrOVHOm2lihOdPF70wJ86NewSTvgp4XBC/GTYQ8g+AWmAu4ijEUgylg6bf0L9SDpMmZqooeWj08CTACivnEolJV1rOUWhoMWjhizZneRWd6u/kRp9APt/YRWu0M5uyGxEv/kILlUgnpJldij4poL1slWjV6Bc0mSGlc0Rw9ASdJfqx+sFFXECspXKgHSVZneuv8yEHKUFbtnBiHLEYDwNEoI0erEoY5ajaHYXO8HOsr8nE5KxG+FVdAzi0IcXqcafI4ZHFaWXFvOVOs0gfyWmjKhOU5tzzYFoSR2xexBqA5nF3OVB5g1XkTua5CrtiXK/iz1pnOmDfRlJDmTDVneu84U+0vT0N8byL+ZNEAnlDWHvtkbHEAfu2bi3K1tP8JwN75QDd1nQf8WwTY8R8FC1nGlkEPYyybB0EWCQQFpwhZwThCIdiHIsxgMxC7S+zOAZsiHEzLcsxsoAk1SQg0Cd4Ss5S0jITTDXYOI/OSFG89ZDUn67qdpoezdKPjT5u2Z2cL3u733fueJGM/S5Zsy+m7Mjrv3SfZP31cfe+97y/owDrwFwB48qjie3RgHVgHThrg+wv3GOaxcZ1+5l1/8b1905IYuAXtVCf7b84rNBjqri7pv9l/0mBoXJS0wAN1jQZDYf/Nkyv27DZc2/3pr1fdvMnQDVzGPCNIKfHI68bwCjLw1+wRGqWq9ROAFwIYgqGTHQllkYxgQhpWwiTgzS+n7pq/fcO2+btyL19Ct41hnwDGNKaSDBma5IBHzrHlyD4GzHaK5F/KxSVyhu2HNdjC8p9UBEnC6KXaLDXUDm3NvC4BujrQ+/GA5KRYJzBn9c2s504QKSsG4KvzdqVaKisrUyw7KytTL69apFasEMBPYSPeGrsDJSwzYLaT78h3WIPQKmr1tPXdq8is3OlvAx7F1MZlWaaE3JVLmGuGlrpaUF9CPpByVywS3v+t3lTVU5OSumahan4VwLeDVh+SyRwYdwRwqLhQQ6jioh/LKoZCA+vFRila+EXMlojNQu+NcNoMtuJpAi88k5KCtXiYmLsre6/cMjSqwFYZoZtArmkNLQm2A3JADpTIxQwYl0Sa4gOrln7owhQiCdh/OXH6JcmZJrH/ADgmlfEgMz+Gv7GXmPElHDimJWG4nv3YIxtey7V0r9m2YXvvcibhiXctaQDXXVhxee3WlTfm7uw+fmPvjdwn9yWDRX5Y4Bc/ldZ8uv37VXvnvJky17527wu/urSl6kgSAxuOXJq//In8b+/6/hxL5at/9kTvl85cWboksnd1ZFRtWLIieTjLXaVO7M/bOTg/zw728Pw83MnLsPqgFUrAYfPZi/N9bIueiuBg1MB1VUu39+ZevPgYuu4uPv8rq9386mt1IqiUFysWJYwxlrRcMlY/i8VincDjRTmySITVduRRNB/7NPkBioyzZoRVHlufMSimVAN4m3ntGaYguivpnyV3afZyZUmY0p1KJChTXDyUtIGXt2mgcNE2OlIPCnAgzI8HPvCF+fHYjiwHMXjUxraKbEF7cQ7kyQF6osTCiJDS4YH3N17Z+nKuxfLmHMvxG+gyn7p8SZ0KrEa+tinAuCTaFWBK2q3netg0suORrQaRqunmdXhBPNn7HFEDMx22YjNVRLOkoJStWzZdU6pJhQH7JT9fEs6IJeFH9Sq5jvFoBAQu8rEHE2XwIXgIO9UHxZJ4CIFtDmDKG6wyXwFFsoOePEH2KaJdEjgaz1gubl3KxnFLbi/KN04tUTSmepiNC9t7K1OeZ1+8lJ1n3ruWFNWvhgcmV+6RLfZKy3+8Y9mZvaUxOVy5mhKue9Fw5Io9NTXV+uQqWg/7kxmYwRW2nF8M3u1bp84+d/P8uUNsiUx8iePhgHuuMnnCpk3TvAPzqm69dP5PNm26fZvJeEWyAp9jC2LFX65evfrku0cLf/7zrxxdvXoxm9t/Px19lEq1zEqqJXG/AL7v6OI/3/TH9y1mwD3Kd67nPi9ARVcV5g93zSqATICO6q7MA82ZBw5P3G3+w3Urvo4O/cXTvvvWDtxY/bZhtxp/9womPxd0ZcKyV6DCC5j13AHNy6B54oBDyxnOD57ayCR83pt9wLsOnbneDwDWPdVcUNI8xQtJAKw5Cpapm+u8E7qGJ5ep6txkA042t93bIy6JlqTibYliDb996J6kGS26QVsH1oF14IRcrRnQZ9C/sH/2iiWFN/v7+wv3G/a0JC8w8hrm3by1yHDtQt21F69/q/966B5Uw8cROczY60gxSefJMtqnwpsTkQFCKXTFh3sou110d82GX/dvfnILH6vWLlyIIdsPjwCMFvhIc6EaV1xChgl3yDpBNp2wVkswhKHRFMMtksFwa7M1NyXl1ansqTL1jxZ+R72nEy6DHwVtDluO3SfbWj2tnhrcQWBbDnu0Kn/PjykbZZjVXAKyDQvt1th81uIT1BaqRMYP4s53WIsd1qDd47OjJRDj+M1Qj+ZPU/QSxhXxMvk4qONASu/mk4a6SKeMXGyTbTUeWfg4cAeB7TLNCOAGqmwNYP3YxxipMjDWE7bJPi7cQA43ZZ3417NneelgKoeGbgWqThYDcOPm3lTeHwGhU1f2hzllioqbGHSr1WGvyfM12RiupwZ3mJQdPBtIAJe3o4TRIBhgMmylJYoSPgU1+QFPDqMrwZrI+cVngvagh30IN3UmQOBS4zFnW0wSvpSdu3RpLlouc2flWuf3G8IaDsTcIQFaCTUmlTAQm+Xn6ncuP7Z3jXmpJeWRbV97+tUri+J0yhTJcsZYmqoat7y3a+naF+Yef/PGuqVb53zpa7O3NCazU6ZxefaSK/kPrrS/2X3R/jcr85+o+vsnX1MM2iP9WjMVj+QaWIpsf4y2bnZ4+Dqao5XwkZWPzk/du3zN1q9aum9cWbNylnXq59uEUyYEHPb3+KZJKaLZMAyR6JZoSjjw7itTzWcsKSmUZ4ctHR678egGIWGmJKtdaV3kvsQNxCtLN5Li9Ji4hNvTXaSBhRqmwv2oW9M4cCe+r5b9gs5SnA8dduF72ofNu9BYw1vmr7nMWOemWlKeR0W8dfmlRnVJmNQ6o7x0KNUR5YpTSDjUW8DMcxQpTQU7EIRqkZap8+rhapfaoCBmc+sG+y6m096Z89XjCJy6Pe+IIQRczQBrmWScuIG+mXpMR0HF2caBy/Cv+smFjLtMdkikSriM/4I2QRo67PIrLpTYDdoXXku1VKZ0p7D1YOk+8+yta+PQ4qPcGYcF3nCh9xvdc7I/z977giWl6mrdOLgMpCyIB9hQx0503e+8022xrtpimAROmbprezbnfsNSufPMI3vC8+s6obSd4iEA7sqcVVVeqBYN+35lKUeOlQ1fPzcaFaftlCncV9izYc6arU8vv3/hySXXVKeMCduRNAwNDEMAhzcGOuC6+7NpzMSiJQzTXvq7o7d7rlx+Gvoefun2W3+1W8kHPAbtaVyTms/7u2rDlCh6SUmJ1vZl0XG8gGcSlvrMqFmY7j7gyoJayCp3lnZh2InQuey3dLWJnOjRAbP18A89q1cf/e60r+w7+tlbT7HNASb02Vxk/4tdargq9kNamBJV3bpl7EJYaX8R0ciouqwTWxzxXkeqzqWAmbiAdwsfx/ee+95nf/HTf0SnDFsm+0Vs4HWAZzF5mP0Ff5c5TImqwEyI1a5QX1g6LdJEtau0qx6yUGtj6JQpArht9MAtDPhveYead//rP4/i1rk6w6L4lGgC9LVm7CU5ZX7y1rsvLSanzLnZ0+JUorohJeoRfEgxKfDhAGsQRNJ6ZIwBu4drortNzYpRg66ZEw5sKz5IJgV3COvsWaUX8mDgEzAicAwXxaMDtoKPTApuKAF2u2wL5mH7ZgeaFZqgKKME74Kb0P5g97mL8C4eK4nl2HzYo9pHV2541ZvGlE07XvGJC+f2UuMYAdtkup1EI0MOFHnQ3vBGse3jYm5WwNZEPMbHnuHxNfWdYsBNcisWtOOdDkFc9Zb/9wMPGEVdfu2L4LglfNAKZFI4RRJmooNfwsB6ILMCk3ATBp9hO0aUMHgcKGG3hwm3iDeSEle9Pdc916GW321oXwQnVksMXpzhOrY6MPR81Ap7PIDDhtyacIWtW+B14N9N4I1ePJXOmjTAPZn47M0G77KNUGDD3PwpXkjmiJQ70AxTejZC1XOe5o4KpKzwUsxPX3NyAmMwUkXXugJ4DjK7sFUDLCs4PJFRVdFFpJzHPmZKG7MeULubTQCwHpES39AjUvQznQ6sA+vAkwT4zow/fFwdz0QcsstqTIZZkqQydHORnd0sGakSPzePpN9lbr/LoMreNkxtOVOMwAPPRPTjewYevKMcaoqImMF+F0ZKp6pmd+/A/Yw0H7o5Ng0PbIzJG6oBPCOygeDP4JPp74eAS8CmpNaSObiMc5dRUpqZS/ibnWgnro8wtpvKXaXGBnTTpXU1cBcpHMOD+Cq/sRYPm8V7/DCTvKjRAd+J5J2OvddOh4Ax1VZImZc2VapNks2BS9iV7gTRkFE1tpuUno28KSO5Ql1Kv0Y/lG7kzavpPelvOM2DLQLDAg/MuKul5OtITaMEZKgZErjUBVlQDzPFvJ8sO+HGdpJwG/qq0d5ezyXchQfZq/xdJGET3zP1SUpOeTTAH0XwPs7XyOWxVQH+eNbw/y345JOf/WYG7935Ea5e9hEWJDGwOhacnn4ab0HOTR9z4Li0xMDgrddVYPS7OSM1U2i4I+2ckWmzYqcph8ze+TL/EjTJss8qB+IDHvjyRzM+iZj5KEzCpsGqNETt5mFowlAY8ATCPoGHQ4m8T7Qi5oQ+44k4JYyNcr/8m9D+v0yPAGYKsrqsvCzdyXQnBj5kKbEpTVBDDVlqbEGesOomteLGYDUrmuczTqHdmG1gFmsJOPJQwux9AYC8eIGZdlDObg9OjwRmCrLahQ+mO39rTCclSwsl1EGGSe8se4gOMhgOeJatBHxQUi1lY58Aq0+VsD0jfuDp0/ktv2h/GS5hkwBGXzO5NnlsCgIHMOgPg+p87HGKJHwKJezjwLZAHtrpmTK3BjxBCreEGjhoDUCigNWzyILhVNFdrs2R+qIMJFxLKMCogQceHwkYYgWGMQN+MHwnmfWw0p769ckC/Hp4k9yhlkR4F1beSNbWrDaZ7Rj0kg7IxEMVOzrGDHhAkSoqttMRwD2ZAx3Q3GE7/PmOjoodG+mHTWRWMODmWRVdvFVuh+dwxysVOzIpZ7TKu6zif3YwaHrD4bEAVi+IT4eJe4EiL+xz29PR/MrhAgBql7uM6uZCRdcUTBMl4AMMGNNG0YDcARsrfouldDsKBrUDTuA93fun1Wbl3x4MXOCFdTum7JgF573L2M+BD9jElOcYcPYyTBNFiW6873BHwb9711HOaJW3uYJtH/hg3Q4m6zECZv/3d0Qf3wHe0Pfy+1H8yrA0Uf02XwdOVuBkzM3XGsmZm689kjk3f4iRdLn50bu9kiU3P8ly3VtGBj6URL7FlpYEfOn0E4cOrAPrwHp13LEFTlB1XErE7hzkqRApgFniBQmScGKq41KmXyeIDma84bf0BxzYTyVP042SJFHJXJqBMmzM9uG/8VaCvPhj1MAJqI5rwkw7rH4rgNuobxXPCnVSUVlyIvHyspD+i9/H1JWGdCe6KU20YYwBOAHVcTE3VFS/hVCDci5hEMCl3GOGM02/eAJEIznRmSs24Pir41J6La9+CyD9gBJnzD8QwHxJfBNd1FQyl030ZWGZR9FtXXLGCKxXxx1T4C9kdVygche14fui4nTtoCmI1M1DDc0KutEAa1THRQ8XVRLHVEBoR4X5oZF9ddIlF7YKJCc4BnmwKep5aeLldNM/wxLT7LtEjQOrXahxhb790KhdQTcqYI3quJ1pvJI4VpjFWAimMLF0L0Y/OKkbIHrulGq+HJjNl0Etn2oTxXS5oqW3j1BBNxpgreq4c2cKVc/+vJLix6M7RPtC3K+nhrGisSFOleHqoeACDqy27qS3a1XQjVKtDV8dt9zIK4kDBUiQwgSxJIiAaVx1SbBjadK9pFqlBpzys7MILQmhcfnbNSvoRquHE1wdt62vftAl0FCjKI6LH7067tie6bSq4wa53qT64lx1nvKBFdO7iicMWKs6ru1HxZ71HJjSFtl3230QzrqxxHhRk6PJMf7A2tVx88BBJyKqL+7G81LQbQefG0uMiwCD8QbWro7rgLyDYknwUkN/muG2sX881GRCgDWr43oCYCsWwDYHxpNgGAeiN7XCRAGPUB03mQ0pQ1TH1S0/OrAOPM7Auid07JeE7gmND1j3hMY5dE+ofuLQgXXg30lg3RM6psCJ84SGj3SXYq8XZnmyCCo1VOM3VSXEEwrc/1lbL3b7ZtaXSp21WWSkN0tohv9nqW8m5YCYqn8qpUujBk6MJxTI/8nTLcvgmESG+wZhpEfhkhmetw4VqSGjBU6MJ1SxwOOuHxeBSXF2UlNQ1QyfCOCEeEIlTlNLznu/1IlZNpK/WqIlkW4UZng26YobWPeEjinwF8sTOnw8yZBpgBCEYHgiYxCfHJQ8RyZx3KiBIm7FB8/60QFr9gkdIp5Ekshni92WEVj2lbSWtHp+IkMe2DJsb6DvKl/2oUHWlpEvB9CU7CD/bH6xLMtWpCYrPtjfD44OWMMTOmQ8SbkoUU0a95SaBuhAg32ekgaInLhzgtu+3VzCeRnoQQSy4rNXlYwKWLNPKNwVT4INmcOA3eHADvYIA8adEzaU8ccBWwCsGUy8Nh/7EVZ8yA+MTq1p9AklMUfEk2BD5jTpXt5tmYA9MnusZ0sCM1mhyJcnlgTbQedmCbv2kLFJR9Ajy61glR3cin+CFvTo9HD8ntAR0gAdCdXDuid0rM90Gp5QoX8bIoJNTBMMrOUJNUnsSrwea4wwrfCZX1zspn9oxC+i1I4hBcZxBtb2hIoLXCVsg2syijrBOBVqKN8wzsDanlBxgRsCpkml470pmlrYCV8SWp5QEBe4JryqxTgTutjFz0BxKiaKMhn32/xoPaGRcSbJYEjRPaE6sA488cC6J3Tsl4TuCR2vL53er1kH1oF1YB1YB54UwOcmDfCPOfChSQN8iAPfM0mI3/7x73HgSTV04LEe/y9Ae+cCEMV17vFpVtgNSWpswMguIii4yhZYpUICRMwiRQn4NtFI2RqUjYklQRFdNIqvaIumiqBBqwaasvGV0BijUVMjwT7EtCYhzW3T3qShN7G2CrX23t57Dfee7zxmzuwDYdkVkHOS2cecM7Py22/PfDPz/b+vz/2DvyYIiyYIC8K3JeE7JNH84QwLwoKwICyaICwIC8J8K0mxk+CfqNjY5ubm2NbmQ+FRExoSy6JqrjaTFgXRNoVfpBwRgL0gnKKhLeJy7NXW1uj4lRpby6lTNpumZb0tPPrqDgQ9OtzWgsekcBumj5wnJ3IYNvp+16IFbCU/sON2V3BExEOV7BVqLFB61pTkLmGYNQVtXI528w0cWUOfeoZwiqaQWPD11h15OwoKFlrnWOU2Z3xmyLSavKsIMf0aUrpJOKzIjBf3rXqTzFrNhBLuLKmJ3xtLRisbcJt2j3eXCU+g6KIQ4NMGXWitVqvdt296wJkXQ9Gr2iytzvBUXmz0IRsZNuGIijBApM8fFpUipmbM1WjKRv8PG71qbvpIWGAA6WGE4TVZVs3lwAREDBorKTZcLk18IlkaM2gsIoweMRuAHfRQ5V3Bm6QxT8qoqstxJ4M38Qlswmg35TCKsgbwY9Cm8BL2izqCk5tmTXmocuITaPWasXSAbwkTcDZNWXSe3qDTUolHVlaWovYwnM7bUbMSBml27pQ8EDaZkKGip9Jho+eNSh9pMgFhZMMGUykdgHsYYaMJt2y18Tc1UfNT7AxQA+GHfkZ/9Jj9oLE8TyAuqQiTTdewUcyaAXwyHgQc0XfFvjK2kAH+IXw9tqBRp+PRMtI6XaOlppnZupowLGFFhLR+1VwIcTYi1HpTdlgRImrKZoNYD7FlYsPsK5L3CDZ515BKnjCsqsY2jK1vzVgMghKjg8YQuwezDCJWDWaJuXOE0aawgOGiJ2bDasJ0gJ9s+GxmiCFUm3Rl27VQasloligeegbZ8PKYq7ET6HztugdkeB5bR32dbu3tfdqXYISjDi0/b3jkympLakDwgqRaxDdyfOKChStiFgdo6y+GxwPewsKeD+fum4QLC63WhobFy6clJU1L2r5ne92eurq6yD1nbiTNyA+OTEtLXdEQXmH1ZMOCcMdt505NoTV19cy8xJCLIcf/PG66ZbpxXd2l2toz23XnTxdY9o2rn24JsZ4LKSiYYFURVjs9Tg6ss3ua3PFK2DpZdmXpTBj2sGc3OmzL3Xjx1PthERxIsZcYVqS8gEkfPWH/BY7OplKJe2WEbr3Zx4SRg1A43jLj2p4YY2PS6mmplpwcy5VLWA52ZXV+fk5AWtpQnSEnYMbQ5Qs0tsJCjycLHTmZNyNMj+zMlaX7ooThyRl2+gNzYfHwHcg96DF9JFb2IHiwatiP5tKn9JGlEhvBXkkGdLzO9sMsYbdeNAbkByfVawfXatF/tdSdyKqFN8glNjwSYwm4FmJ1sWHOKXVyYOEJDaDOK3E5k+kBnD5RH5e1oIdkJ4J6bMirazIgX4USJq4HEeYZzLC0M8LDRmfDEHhCG0Av6UH2aCC+CuqCXuSlo/2AKRtkH8bAeTNhr8wlezN4PA31ah4+Zc2LCUjNrKeS5xHP6GoRa+22ddSnqLcEpK442+A0D6tdJicHNog7+SXOlhRUTk2VPlEfl/JlrHnCBK1COJvhGPb6KLwwwkYCCTrRKNYTVpQt/xCQ1dInzpSVFXTEsNc/fn0U243vCK9fb9MUNliMK5bXD8BEfzsiMvKZEXvqttXit7U640K9Pspq03SGMHVgsQ2vGUudV7BhdPrkYsPsBAr8UO7srLpc4gkju4IlfSScApLffDZZsMkxG35lLjU+owxWj0954ItBMy8gREYNk4JxHvAvBZ8edcivKHw/2DA6V9PYThXu34dsd3CWFqYGbSg8aIGxNiznudk7ClvWr1ef091qBxaZVXtf9CU0cmupONeoW4eOcJFpITfQfzNW529fN7hYGzbT+tF6m0bT0/JGzz/cvkJYo7lQsT/JEJqFjnBZR48eRY9Zgw37MudYKzRgv9jWd0r9vXlBGM4kMEFbywX7SmtmfWgxXI7IWlccWv/UeOtKu93OfQuCsLc2bLPtjCoLvx61sSluTkxqTk5kfv7ixNQ74l6OrampSfyoxUbtWBD2xpfA14cDj+1qe3dtVXyb1F5yMfP86XOfS0ccn59o27WrbdcRx4kKO1y98HzGIQh7auEf4Qs/LYEnEyZPnpxbdeDVk4FlixaVvRG44R+zD8Y/nYBlukekQxp8Hymc2/TxjIzRlSQQfNjQZYKwhxZox4QnzP5pLlY6V7323sanX9vw8okDr3164L0vP8FrE95xxNnsyNrtXLazSfdUOsirARkDbyxzDMjIeFB6fDfIxYYNzcjYTbvQSml4xugX8YDd/ZCwVBKPCb/7DiE8OSFhcm5u7huL/nbwL21Vk+m6nx57TmPX2OL5m82Or5ZKA8B0B+w+KT2+TJo0M2PjC8iYJ/1gKXpJRXl4JVqDBgx/EA/rf4TBjuPCo2avpYSRGa89uOuNjbMDE+Q1k9+VnguPc8rWB8pGTBgZ8+YZCOCx4RtfkDbf82ylNAB1gTVLZOXme15AA2DYPS/0T8Ldb46TkJ3AgWaNYd92gujAUwla7ein87BognAfJixipCQvAHXJhkuOCYqe27ESX8wSJVtLhCW7s14ERszD4kgnCIsmCAvCgrAg3FsIB8aVRTWsbLCFt0bjdvkyLs1wOZq28IqGlVFlcYECr+Tt1UvcGmpam5uvNkfHR5F7nraWqMRXYU1zK8RnQ4svEYS7fgW+UEOVSFebd+yoyauZoFlpt9s0tha7feUXFdfzanZcbb4aG0UQ81fgvVPKhL1FFneNxqlvcukgyo+wIrQ/EmpiWOWUkxuvhqC+9JFm1bqbNaf4xptLPLp+F4lasL2mNe/si/W6G9tzYhYvHD9n/IKFMTnbr4U2nn/qbF5zazy931ymJsyHsutN2TjOcRWE55hMWKeRYMKBYjjEBnqgY9XfTSaiS0DAho3+ddG8UVQhQ/6+id8bS5QWLAZTMoIywWTWl9IoNhI7QWMoDbBftDfYuVn+RuBzwx5uM0EUfjaOrzLAPwiCMNEeDETiQD7z33DY5xiIukOfOWisrwmzCO3Ey5nL63U6LCwoxuHvxcWgOKjV6c5Pq4mOL3SJl3AiPNBMVgI+o8lMbbjJQJQGrIfpOAw4mhTQcMZPCBN5hTp+DTHGoX8/mhuGw1YhFkoJgeLsFUGUowFxONbDo8K23K3//lsItCpiTU8/F6sPiOXSr9ZfhMt2pDbqdLWDnVuWVqfT5cTWNLjVcSiE57UhZhAjRpkZTGaqlMkmOo5slRbJQCJ3JTeEFe2Q/Gv/GMJ9EGWjWfnpU17wkpo2iTVDKBlhGlKofxQx/sTMR8sqYWlM6QHaDv8Svh5bUK/TZoHCazCLbgUTRqt0jRdrWl11HNg00e/NTEkDOD2y09+QycBplqA96HnVXD35XRP1EtBgs0QwDfKmswT9xaaPBNGNWY/jrJXJlZ8l4BeSDUUJTCwIG88SSgwmnrjxXIK/MPo7UAiDxPHXEA96MymS94TDL58NMTyyeDyagfcHYFMuzgleMH7OnIXbDTdSW2MbelLHQWYdEkbZ53wJClgTtf/c+dBpkfn5lrQrkSN064pD0/ZE5ltWp12pCz1eYC1bqTkloqq8Irxzp+aLihUzz86xJi40/njfTMvqmMhrdSNqtXXbdDemWVYHbG+8tvCs1YqGfHFKEPbOhgsbzt6IseQcn7487PiPjcuNx69FwiQRue/4j5+afr5Rl3ajPvViZlJBYqFKx+H2qOD+UOEkKmZv5SObejR1ITw2lWy02lkk60uVuK8In7LO1CXFnHvRYAgdegaqt4Tiebi29hn0bui1UIPOGLNitVa/32ZTx8ATT5I4roTct/DhiXNlx4DIgBy0ZI/zX+wYRgmXS3cN+eWTf2Q+MNYlKbuQZZ0/i4jYhHf4XZ4w5zoTQRP9Z9HxTlujId8l4lr8TyYr/U/YVrHAEjNtWn49aEGhxhP2IrKyICAeUIfWJ+WExKRmai6oVQbEk6SOq6Jv5aUYICjg7IqMa1LbMMiPnXfF7YJzp9ATyBJYB/Y8NsnSD06xoIx3s/UTyexzFFfYv4TXr0fzxEVL/uLQRmK7dehQl/XMnrorR4l7rDMEBKQWJFbYXHQcXIIBJ8Jco/JhzuNUE1Z/PZJT1gKnHfOEYQxT7EuSrAlRjXezNSEsuZGa+9GXQHNxxQRrXj0pZgg6JFhqsYo8S2u4cSFl5IULGicdh2yu5EcfFBHxqzu/jh1K7uQTzxKgQkzmPE7mdRIrlKcYtiu1N0x3zIagbX7FzxITnyhng9ksofqqXbaGOUb5nFtCmEk07Nbp9aFZtZf2RE5PIi1tT11tVqiuMTwRx8D2fW+tM9p7f9kwkdUtfLGxuFirfWTbNnTAO/MIMuNiXf3yBmvLR0LH0Q3Cso4DpDLWHGMomhuOXrp0FDw2Q8h+6xeFGqHj8IUN21p2ajQtmriLeVANDprBWBBTU4gnEYh/d9ZxYNln9XPlcDWM93m6mvXIgwPs2Vne7O4DOjOh+sRV9lrHoYlaVOI4eDLhcrsjI3Fh6pX8vP3hesfs5rUnTx6TtsbBbH1Ko9JxYNnnkJ98QFLjUBcTObY/nPKcZ0+UuQqKJ0odXBcX1bOz/BaISdGoMSQfFedyu+xk1pRPgyPK0UblsrN+ywlPwMcwu+Y5R1Vubm5V4IkMyZFwNnNmSuvl2UcccRuqICK+zdEGqmYbq75H2ZRL1Vg4W50scS4mtuHqcreeKCO8RuVjsWvuKhfVs7OMsDGVLlrBudyuO+EzzKh8wFtIOE6j1nEk1CS8caBqUdSGLz//Mn5RDdEZJLwjpWhAx6GJ46eDD74zpJI+clgI4U1uPVHO3XUlrHZRPTvL6AMmfi+bOdi8y+2yk95AGCPmCQ/8tAo9vHwg99NnEwY+zXQcDtBxaFSAWQqjMdi5VVzMWWSWcO+JuhBmDq6Li+rZWUa4HLOmlFMHm3O5XXeiJtyJq7/+IAxZGYHwO7JqIyGwbderGw4eXLuL13Fo7PZuZGX0hSfaR30Jt82B2rFjIrrYf4RF6x2E0x+YC+lIWJSCa3gCyUz0qLldorl02IYd5DHAe6F3iTsxvMtudh8ijBM8mUz3/5VGKdDbjPj2ZPoDn5hMZpK6ZMtfH5iL76/TaIUtA+d9PPJRyA0lZ5n5Dc4UBSER+JY7uUGP7yXjTdLJcG4Ho+ihUL7Wi3OxBJO8gsH4aDfkl/iuaneuBPe8DRtLIWUUpWuWb+3iRFDk7rvBLOmzaQYoFq2A88nAfWEzn2Xm4VHkS8gOe+XvZmzwNMMP2xsZTncgu3nKtd4hlSO+8180k6XiE3frSnCPE0YzBGQ8k6MU3BBOf+D7aAR55KIVCLJSdaYkRhiGGefJPWyWIMMl5Xa++lqvVP0pYpxU3uR6Q8DrK8E9ThgZqBFPkDRKAYcs0FmC/q5pfBm5C8+iFZSfvdFk+u/XRylhDSbzaJYorchMZwlub8oOmCOtXOslcwS9Ssz5xN25EtybfQlvjk3w6zd0Ntl2D3rYwlsThAVh0QRhQVgQ9pU//O0XJHZ1SGRS8kcbPpBm85l0T+WkmZDeZzN6cU8loj38QQm9hi68UmSh8b4N2E0fHl82fDQGOPxBvG7SzAywarKSZVKS+m0mJS/b4zS7l2NAxsaQZZtnZDw9AwGELErQ9Yul6JmuHJ4x+imcDWxZU78i7I/MEsNZGjC+Ic59MtOayJHi3yZypPjVekWOFHHGIQiLJggLwoKwICwI9z/Cx/aO+8xNG7dXnJj4gPDb/zz82L0e2n1vI/o/d90m7C05x4FL49Kd0GKSJFQTB2piiZb6RiYewRfv4VbfZI37z3YVi/Yo4XH33dtBe6ldkj6bet9e9TYkI4fEqn7iPAdKOWAKorocKxD41By4l6AEnYKSHoWFF+O78R4j22mkrDyEaVLZO8mNWJTGv34wndRwprf7ZY0pfvdHEvnMyVl9SfilxzoCfBjQfnPqve+/6WTCtOyynmQ6Ude9lgtR4b+axAIPkkv1Upi8Da85+12sBqERJR4j25VAHm6I8k6SXMWitIsWGFPvTtlJULkUtInTovqS8Esd8b13/nmo9/Qm+hIee7PdHWEDqQnsnrBiT5L8V8q16Li/BcS4uFIt9ze6jWxXS3LpENpYqTwnsSjtciLMheGTnYz4zpBKf+RIQVPE/A4teByegZfI1qw0ku4E4nBkws6zhDNhUjIZgwgiz6okSlDAWjUFuEa2u50luHeSG7Eo2xeOzW9SBwWxWQJhv/PrknTzXEpeEH7+/cemTp0/f+rU910ni/dfImO+Ogzvpn6zLzsBXVeh+dhbIzOAY+9n/7fk8FQ6Qbx0TDWR9G3CveyM4+0/LfmnMiecny8Id4PwZ0t+//y4Dk8q9h6+1y3hDo8LSqfTsA5K2EpGiMgs9ZTsz8gH0kNRVgigpUGIcrFK9ad0OeDQH4SfJ9Pv1Pve3NveIWD3hIkHyYkvqd9JDyMsEZ/iaJJUfhCq+u840x+Jl5f0EL/6i7vR8tfRNFMXzerF8n6h3vSRjxaZzBAHq4Qqy/H0hKeRVP7kvyXj/XdzWQJ7jDC0xw4/73ru9ifZ13BHmDo/nHCN84okXnIopwCkqfz4ErZG6lpn44XR4TLT4TKq2XgwWxDn/x6ZTQPklaLBEG4s58ckjdiw/v67pR4njM+RP/N4uueJsKSSBiqE3aRFkdwXCSaESRVmyQNhg1lSEZaUitf6UqXwNRr6facJCL4en80U3Sd8732KGe/953y+09MsMWismjBTjvOJ+BRHk6KFkHmykAh3fSktJC6RaHp9qXqWoD0KYQONvKfh9jQJITZVdCYvEzbC6nQuS2BvIux8LtI5X6KLfmcvKWF7Kwkf/kqegd/3hrDw1pzbN6c6ncf9yRN7Qdg7wj93vnR537Eu2vDmPyy9eQcJgIUgQa7xb526yLqZGRkZy+QutD+Pn9Wbz+nGHXZC/HvqF3/V4Tw86dmQ0ZXDMzKgKugv/gfCKx/EMcXDaWlQ0rGUvCWlRPFGcjVRmSp6RBuixwEPksKicp1R6EdMoYvsb+ANtkv88Y6+QVh6e4mba+7yFTWPhH+w1IH+VsQCOAzYPXx38QsDdktkldxBXtBSoqR864DdpJqoM+GZUDmXFBZldUYxYRweywqOyruEj+9D1yX2LlFPCEvcTtEuhBEwWnsVWe+zlZNy/yCvYh3sLZQSxT/7ZTBd4GqiCmGI7Eb4/uOeF0hhUbnOKCFcOekH/4nXE8LKh/atKz9vP7/k8Hy5LSGXfX4/n2+Hu3OkI6VE2aSsriYK+SwcyhsPO+gdhUZ9c22tvb1dfiW8B/9cvRRNEO4PhB/PyICjv+LsCsK+beB4kVfE2cWeLPF0ZX+WuLeglHkRD9gtCHfFOfhqKanqTp1d7LFSF435sxJzY7Ha66RQe3WpwUnZAHoWgZxd4skST1f2Z8nKfqtY9GHAH3F2wWN18nSZG4tWO/oczGPdJXxEyJC84NO1WaJEVPTzzNeD2rCr8/CRkq13iObSOpAZijMOcU4nCIsmCAvCgrBot5hwSYqdVmyOjW1ubo5tbT4UHjWhIbEsquZqM2lRUJSj8IsUcYriDeEUVvIk4nLs1dbW6PiVGlvLqVM2m6ZlvS08+uoOBD063NaCx6RwG3pXEbujJgtqQF1AdEOe4mdVFdQG8XIQl018XBKwy4RTaA1bzfXWHXk7CgoWWudY5TZnfGbItJq8qwgx/RpSukmYVRN2T5gViCD8OqrvoKqzqMRx+bvAojeEJ1B0UQjwaYMutFar1e7bNz3gzIuhUFk4S6szPJUXG32IVgCbcERFmKuI/WFRKdPW3W00ZRshRBjqCsMCA8yqes3wmixcuB6xSNBpgZ6mXCHGVDLBm0A4BAqtIFWVRrJOVei5uhyDl+WSUlC5NObyJiloEx46aOxdwclNdIdsIHnna8JyRezoPL1Bp2V1sLOyWElshPh03o6albikjOea47T6sql02Gga6phNK2KX0gG4hxE2mkjItJuK2LIyDurJuCsvGORUBRAaCPW4siZYToa/sEFj5UDmf33wrTu/dSeWMtHV8jcXwa/xE+HrsQWNOh2PlpHW6RotNc0T3NYchyWsiJDWr5prMAG7eaP0puywIihjnc0GsR5iy2aJM35nwojOrClASLE/bLWyus7FhukI2YaJTBLbMDfTYAu+vKkJzLRaRZgb6EfCZWczQwyh2qQr266FUktGs0Tx0DPIhpfHXI11rTnOWlMHOdSaeiK/WicCK7oRpOA14ahDy88bHrmy2pIaELwgqRbxjRyfuGDhipjFAdr6i+HxhT1Zc7xPe2u4SGih1drQsHj5tKSkaUnb92yv21NXVxe558yNpBn5wZFpaakrGsIrrJ5sWBDuuO3cqSm0pq6emZcYcjHk+J/HTbdMN66ru1Rbe2a77vzpAsu+cfXTLSHWcyEFBROsNyM8a0q5RA/kUkcO2c2mu645XTcLuvckHsN9UGVhy93+JIwchMLxlhnX9sQYG5NWT0u15ORYrlxCs0TtmSur8/NzAtLShuoMOQEzhi5foFHVHHfrpmI/oAOXxyeEu+j1diDgo9KRjr4DX8wSdutFY0B+cFI91BBG/9VSdyKrFt4gl9jwSIwl4FqIVWXD+AA85H/pMRw5l+SA/aQs/sIeZnIT+FXIl8IVGcExKuf8VnAMaDd5UlxYNy5wRDIdRdTjaNfkw3FaCOrjqv1b8o9C3mGTYR4nfgIXhogfifqpnRHGRXBIURuP2iWv5uFT1ryYgNTMeh0hO+IZXS3Ua962jvoU9ZaA1BVnG5zmYVzBUvFD6Vrk2FdvUrmicPaQzBIeqHMY0CwbtDY8FFuWt3N1gWeREj1KSWbmBJOSPZxHq3aE3crLiJAMyjrBwggbietowBqnbJ8RXr/epilssBhXLK8fgIn+dkRk5DMj9tRtIyXHa3XGhXp9lNXmXOsWanUqfqhs2pfLVa4oTTeDbXgNV+uF+bikmz4p27lxgSOSucHky2E2rPZxnRxhvjoQrhkEp5JEfpdNFlYJCNvwK3N9b8PoXE1jO1W4fx+y3cFZWpgatKHwoAXG2rCc52bvKGxZv75n6zV7zF1Cj3Sd9XGRdbbfSl9CqcTcUnGuUbcOHeEi00JuoP9mrM7fvm5wsTZspvWj9bYertccFOExs0ZQRNdyJnVTwNedmuOaCxX7kwyhWegIl3X06FH0mDXYsC9zjrWCVRwWNce7V3Pc1nLBvtKaWR9aDJcjstYVh9Y/Nd660m63e6g5Th1J0MbCVRzyPE/tE8FVCzzDzRvFNPb98JwOnzfbdkaVhV+P2tgUNycmNScnMj9/cWLqHXEvx9bU1CR+1GJzqTkusep0cioHUpZLrnpGV/4GHCP9o3K5uf5HmJCLCjy2q+3dtVXxbVJ7ycXM86fPfS4dcXx+om3XrrZdRxwnKuxw9UJ1xmEwN0ESgi0fYttlZSz17EU66Xz4Y6ixaCZ+EtF6k0vD7AB+uxMO/whf+GkJPJkwefLk3KoDr54MLFu0qOyNwA3/mH0w/ukEXF/4iHRIg+8jhXO3MMCRhBqVvA2HFWUrJ1G0M2zLT3AVOq48IJfB4LYnHGhXV8Sueu29jU+/tuHlEwde+/TAe19+kktqjjvibFBz3B6obInL/xmU/CTMhpF1svwQtFNPnqEcq3HeqP5GWCqJx4TfZRWxExIm5+bmvrHobwf/0lbFamT/9BjUHLfFi5vN3sVLBMaFR81eK9ccr1p7cNcbG2cHJuTyNcfD4wIFXklEpAjCgrBognB/Iiw0oUIT2scJC02o0IT2OGGhCZW8ACQ0ob5rQhPqZ75CEyo0ocIfFk0QFoQFYUFYEO4fhIUm1M+Ee50mNOJJT0JFiG2N2OS6mTK6msWwudmDj9SMt4Em1FPDtQSdB3l6x63vadVtL9SElnPB7zScHXrHyCGWcvy7HDGsBMfL0fDlLDafK+QGOr2JT6Bxa8beOsK9TxMqSRKvMpCV4eoiNU7KTi44XhUNz4kQaeg2W2454d6jCVURpuHs1HQ3wVxB8LGod1rbkgbHf+Pr6mh4FoTfGwj3RU2op6h3v6alFprQXuetCU2ovwl7rwn1RX4S7+WaSg86rHLeIIsSVwYW4fJ3fCy+qlSg3wl7rwn1Kj9J5+stdizXZPH3pDSaMsiZMJF1hb0yl4vFh/4fPjyq/dbNEt5pQjubn0TtuHIyOHoC4p1c02CW6Esa9021iCrCejMrcQerlFh8XK/O23qAt1IT2sn8JC4OKh3PGW+X5ZrQQ18yZEYz1BHlCOMtZOEhF4tPitWZyIllEEl341fC3mpCO5mfhDqonASUt2Ev5ZrQw8wZWarejCcAmJpJAcBSeaaFsqGwWy4WX09LZpbeSm/NZ5pQ9/lJbolcs7MC+2766H1bE9oNaQf1FXqpPyw0of4l7K0m1MnxIpdm3bpsnV95u57TeacJdbk065FZX4XpO1/CO00ovQTrktaE5oLgruziq5ByShN65Zde6grqmrC+DxL2XhPqkpBEnc9EfWWX84O5NCnBEZ6TGtw2hL3XhLokJKHXajkbVvImcedyCmH+4u/tS9g/mlCP+Uz64TyM7di3mtCgvvfT9zdh0QRhQVgQFq1PEhaaUKEJ7eOEhSZUaEJvpyPd7akJFb6EICwIiyYIC8KCsGiCsCAsmiAsCN/OhLcKlazP25GtPOGv/U7k8fFxKyGAZcLIjLf+TmTt8VX73datjKtCWDT/NEFYEO7r7f8BfhP/H6DG2+MAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/HTMLicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8D5VZ0pBQlNPVlZbdllbd0tkcFdgcVhhcl1ldn5dT2ldc314WWJremNse3h9YhtdlTRsiQFzx0RsoGB0gmFyim12hmJ4oW98rg6J0ieY33qDk3SHpHOCtXaIu32HskGS30Sm93qPwn2VyHaz6Xe96JQbE59gOp14P6tZI75mI71uKpdeVpl3QLd2ScI7D9A7EeVUEoibf7uYRryXcv2AFPmCHOCFK+mLOvqPJ+qjL+WqOf2pPdOsT/KWSvGzSPC/TOeucvzDdIqQnJGRk4uOuIaRqoaXsYuRtpOWqZOapoSwvpyjtaihqqWrtq6yuq+zu7epp7G1vbS3v4Gcz5OWwZWZxJacxpeeyYOi1YSj1oep3Iir3pmhzJek0pim05qo1p2t2bu/yKW97qi/76qz9bzAx63G4avB8K/D8K7Q+rHF8bXI8rfJ8rrJ9LrM873N87TR9LHS+bHT+rTU+rXV+rbV+7jX+7vY+r7a+r/b+sXIzc3KztDS2MLc+8Te+8zV/9nc4M3g98zi98jg+Mjg+8ng+8vh/Mzi/M/k/NXm9tDk/NTm/NTn/Njo/Nrq/d3r/OTm6eTq8uDu/eXw/ufx/erz/evz/ev0/ezz/ez1/e31/e31/u72/e72/u72/+/2/u/2//Dx8vf39/D2//H3/vH4/vH4//L4/vT5/vX6/vf6//f7//j7//v9//v+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj4AFmRGUiwzBgym1gpXEgmFy5bs16dEkWmhYcrilYpJHOrlixXpUB5UqEiBYk1mjbSgoVKFSpTphIlcoNiiqGNsVq1SmVqVChMlyrd+fBmI6lCVp6A4FDBRhVKeSRs2fhJyxIlTVxQSRJjEh4IWDZ26lHkSAcRI3YMYWQHrEIxnG4IgfFAwwYMRBrVccuqS6YaP4LIUJDBCI9BdPiyuCQFhw8aE4AgYRBIDt8VlhZReJFDx4wFcP7E4XtCUqRHUBw0KKHHD582fE1AcoTokKBAgPrsmcMmQhaFIdSkQXPGTBgwX7xEcXKBi0JCTCxEgEC9egQLTAixCggAOw==]]></data>
	</file>
	<file>
	  <filename>/images/ICOicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8FdgcVhhcl1ldmJremNsez1tvSRw1UdHrGBElGFyim12hm98rmz5NljwUAyL8QOb+QGZ/wmU8g+n4nqDk3OCtXaIu32HskOW5USm91Or9nqPwn2VyH278u81D/k0Bf80AcZ7e9zJJOXUCfrNAufGJ+fGKOnIKfDMKu7XZIqQnIuOuIuRtpOapqWrtq6yuq+zu7G1vbS3v4Gcz5OWwZWZxJacxpeeyYOi1YSj1oep3Iir3pmhzJek0pim05qo1p2t2bu/yKW97qi/76qz9b/DgYbG/ofP+YrO/5zG9ZnL/LzAx6vB8K/D8KjP/6fT/6nU/67S/6zV/q3W/6/V/a7W/7HF8bXI8rfJ8rrJ9LrM873N87LU/7PX/LbW/7PY/bLY/7fZ/Ljb/7vZ/7nc/r3d/b3e/8XIzdPH1NbM2dDS2MDb/8Td/8zV/9Hb5tXf6Nnc4N3jxsLh/8Pm/8ng/8jk/83h/87n/9vi6t/m7NPp/9br/9ns/9zu/97v/9/v/+Tm6eTp7uTq8uns8OLx/+Ty/+7w8ur1//Dx8vPz9Pb29vf39/D4//b7//j4+Pr6+vr9//7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjoAIcIHEhEyJBFlBIqHLKp4SZNmSwNMTHhRp5ICRk2hGipkggRITooSZQR08OIlSDZsdMEhI05GS+lmKmCz6FGhgiJoUAl46SZKB5o0BBl0B8yDHRklDRTAoShGtr0GaMAR8ZHKU5EeDr0SZ0wVRMGYRRHDoYNHIZOoQMmLCUeihwhgnLBQoYRaNh8cVtCEKJCMlqwWCFlzRkrbkkEKqQnhosXMJx4KVPF7Qc8gwC5UWOmy5YsWpi49XAHkJ89b9ak4YLlypIFORJWSILkiJEiQH746FGDhoMdCeHMaLBAgfHjCxrMgJMwIAA7]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAJEAAH8Af/+IAP///wAAACH5BAEAAAAALAAAAAAgACAAwX8Af/+IAP///wAAAANsCLrc/tCFGeKaltEaN86b5XHXaIYaCVIZ8LUoNMJs5z3n2bxK7qsuoI0nExaJOGMSmYoNlb3billyHqEl0a+WXW6JyO8s1YpSyWVrshw8d2nuKFu942rd4zs2/9TH23tSen5YZoF0dXGIbGUJADs=]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPg0K]]></data>
	</file>
	<file>
	  <filename>/images/JPGicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8G80KGNDLlhBRFdgcVhhcl1ldmJremNse2Fyim12hmxpuG98rnqDk3OCtXaIu32HskGS30Sm93qPwn2VyHWl3nyn2nSo5naz6bI1E7c6MppbMqBiLLlgMbd9U8g7HNVCH9tJIupZKu5dLPdtNf91N/93OY99pbeDcLqIeuyDNeqHP/OMN/WLN9uQV8GQfdmTYNOfdNehf+CRXuaZVP+PRv+HVv+WSf+feP2qVP+sVf+1Wve+ZeTAfu3KfP/BYf/PdvbUevfbf4qQnIqBtouOuIuRtpCBr5OCrJ2MqJOapqaGlKqQm7WXk6yXrKWrtq6yuq+zu7G1vbS3v4edx4Gcz5OWwZWZxJacxpeeyZiSwoipzoOi1YSj1oOp1Iep3Iir3pGtzpmhzJek0pim05qo1p2t2bu/yKW97qi/76qz9ZPE9pfH9pzJ9rzAx6DL9qTN9qvB8K/D8KXR/aXS/6nQ9q7S9qrU/7HF8bXI8rfJ8rrJ9LrM873N87HY/7ba/7vd/8Kcldm6huPEguXGgv/dmfrnhv/mgMXIzdDS2MzV/9Hb5tXf6Nnc4MHg/8Xi/8zm/9vi6t/m7NHo/dHo/9br/9zu/+Tm6eTp7uTq8uns8OLx/+7w8u32//Dx8vPz9Pb29vf39/T6//j4+Pr6+vn8//7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjuANEIHJjGDBpRqhIqRAOrYcNXrtCEkIDF0qmEDB1CXLVhgwYLcEBhbPXQ1SpTkybNyTBFEkZWQVq48DEECalPnghNuIMx1Q8TL4AQcZREiBpDD7ZgRDVCgQgUKVawUNGlUIMsGEvxIFFiRo0iNmiQGXQ1YZlRO04suNFDyZIcZwSVVeUllCIZDGLoaHQEx4dAcztsugKDAhVGjyBZ8bBnLgdNY5pAiVJlkREpIPTMxVCJ0x8/efDYqUOHj5y5Fyh1yoTpUiJEhwD1ieNAS8IKb9y0YbNGTBgwX544icAlYSQmEBw0WM7cAQQmkRIGBAA7]]></data>
	</file>
	<file>
	  <filename>/images/MP3icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AEBAWxsbC99zzVxwUGU4GiY1Ge/+3Gw6Hmx5oSEhI+Pj76+vou654286JC+6YHG947S/pLA6pXC65fE7JnF7ZnG7pvH7pzH757J757J8KDL8aLO8qTQ86fS9KnU9avV9q7X967Y97DZ+LLb+bPb+bXd+rff+7rh/Lzj/bzl/7/m/8nJydXV1cLo/8bp/8nq/8zr/8/s/9Lu/9Xv/9jw/9nw/9vx/9zx/97y/9/z/+zs7OL0/+X1/+j2/+v3/+75//f39/L6//X7//j8/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAi7AJUo0SAjBowXLlisgGCDiMCHMpowWZIEyREjGSJUcPgwxsSKF4s4YNBg40MYFC0aKTIkyA8SE2w8fAFyZcsfPUYsqPGwhcoiCoL24BFi50MWIYco8KGAx44PRgWqWCkkiIIeCnbo6BBVSQqgQZsGzcGhK4qqPoZqzYFjQ9cTQNI61cH2BoauJuSuxXGDxoWuJdTS5UtjhoWuEkSA8NCBwwYMFyw86GqDwoLLmDFTkCmQiI0aoEOHbqgkIAA7]]></data>
	</file>
	<file>
	  <filename>/images/PDFicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8B0dHSQkJD4+PnJydHNzdXV1eH9/gYEFB4sBA6sCBdsBBNcaHdsaHt08O+kBBe4BBPUBBPoBBP8BBf8FCf8HC/8MEP8NEv8TGP8WGv8bH/8iJf8oK/svM/8yNf83Ov84O/8+QN9PTtNSU9NlaedISOdJSulMTeNbW+1TU/9CRf9JTf9UV+JeYOFwceVxcep9fP9iZP9rbf91d/59gIGBhYiIjYqKjYyMjqmpqaqqqqiorKysrK2tra+vr7Gxsba2tre3t7KyuLu7u7y8vL29vb6+vr+/v7q6wLy8wr6+xtuEhti2ueWNj+aPkOianemqquqqq+q8vsDAwMHBwcXFxcbGxsfHx8PDy8jIyMvLy8zMzM3Nzc7OztDQ0NHR0dLS0tPT09TU1NXV1djY2NnZ2dra2tvb29zb29zc3N3d3d7e3t/f3+vT1ujb2+/a3ODg4OHh4eLi4uPi4+Tk5OXl5ebm5ufn5+/i5ejo6Onp6erq6uvr6+zs7O3t7e7u7uTt8Ont8e/w8vHx8fLy8vPz8/T09PX19fb29vf39/D///v7+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjxACUJXIPESBGDRYocySOwoaQnYaZIibKEyI86RuAI7LGjBo0ZKlKcMGHBB6U6QjTyQEFCBAgPHDRgmNCA0skifXSUGBHiQ4cNGShIAPLAAYQgaSpIWMp0aYQ/Y7wwEdOkYZc1ZM7QYREnT5s0YNwksZqHzZxHK/gY8gPHjB4kVvu8MXTnApZHiPysAVTEKiA9kHIouqIlkqA3g/oK7GKIkB0YWbK8cCGDCiPFkro0chRjC55FkxJVaUEIc5dANqw4KgTIT543ZeaYvoGDUR89ctqgOXNADWYolSQdIvRnT+40X9QMaeiEwYLn0J8rYKAkIAA7]]></data>
	</file>
	<file>
	  <filename>/images/PHPicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AAAgDAwkD8/n2BgoG9vr39/v5CQsL+/3/39/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAhwACcIHEiwoMGDCBMmfMDwAcIIDxosaEBRYoMHEQZGgNCAgMePHhtAyBiBogQJHSUQmEDgJMUIDha0XDmTpcoJCxx0bCmBAU+bPQlcTPnx5kyhDnWqJMBAZU+VDRwM1CkR5MSoBhlWvOhQodevYAsGBAA7]]></data>
	</file>
	<file>
	  <filename>/images/PHPImageWorkshop-Bildbereiche.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/PNGicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8FdgcVhhcl1ldmJremNsez1tvSRw1UdHrGBElGFyim12hm98rmz5NljwUAyL8QOb+QGZ/wmU8g+n4nqDk3OCtXaIu32HskOW5USm91Or9nqPwn2VyH278u81D/k0Bf80AcZ7e9zJJOXUCfrNAufGJ+fGKOnIKfDMKu7XZIqQnIuOuIuRtpOapqWrtq6yuq+zu7G1vbS3v4Gcz5OWwZWZxJacxpeeyYOi1YSj1oep3Iir3pmhzJek0pim05qo1p2t2bu/yKW97qi/76qz9b/DgYbG/ofP+YrO/5zG9ZnL/LzAx6vB8K/D8KjP/6fT/6nU/67S/6zV/q3W/6/V/a7W/7HF8bXI8rfJ8rrJ9LrM873N87LU/7PX/LbW/7PY/bLY/7fZ/Ljb/7vZ/7nc/r3d/b3e/8XIzdPH1NbM2dDS2MDb/8Td/8zV/9Hb5tXf6Nnc4N3jxsLh/8Pm/8ng/8jk/83h/87n/9vi6t/m7NPp/9br/9ns/9zu/97v/9/v/+Tm6eTp7uTq8uns8OLx/+Ty/+7w8ur1//Dx8vPz9Pb29vf39/D4//b7//j4+Pr6+vr9//7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjoAIcIHEhEyJBFlBIqHLKp4SZNmSwNMTHhRp5ICRk2hGipkggRITooSZQR08OIlSDZsdMEhI05GS+lmKmCz6FGhgiJoUAl46SZKB5o0BBl0B8yDHRklDRTAoShGtr0GaMAR8ZHKU5EeDr0SZ0wVRMGYRRHDoYNHIZOoQMmLCUeihwhgnLBQoYRaNh8cVtCEKJCMlqwWCFlzRkrbkkEKqQnhosXMJx4KVPF7Qc8gwC5UWOmy5YsWpi49XAHkJ89b9ak4YLlypIFORJWSILkiJEiQH746FGDhoMdCeHMaLBAgfHjCxrMgJMwIAA7]]></data>
	</file>
	<file>
	  <filename>/images/PPTicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8DZKZDdLZVYMD3YaFHwgGHij63ul6Hyk6YAkHIMoHoYrLYgsIY0xJZA0J5I1LZI2Lpk8LJE3MJE6M5E7NLA5L6JEM6RHNK9HOapMOK9QO7xPL7JTPZ1dSLBfRLdYQbhaQr1eRb9hSNlZK8BhSMNlS8NmS8drT8hrT8F0W8xxU8xxVNB3WNF3WNV8XNV9XPV7QtmAX9mBYNuDYu6CVPCSW/CRXPCdXfCcXuiPavCRZ/CWaPCWa/CXavCbZ/CZcfCgb/ClavCmdJOit5WkuZamu5movpyrwJCu1p243p6434Cn54Gn54Sr5oWs5oit5Yqu5Iyv5I+x45Gx4pWz4pW04pm24KW0yqa2y6i2zaq5z6G63aS73aW83Ku60a290q6+1LDA1rHB17LC2LrF1PC2gfC9i/DFkvDJl/DNocfa+Mnb+crb+Mzd+M7e+dDg+dLh+tLi+tPi+tPi+9bk+tbk+9fl+tjl+tnm+9rm+9rn+9zo+93p+9/q+/bWxv7n2+Hr++Ls++Hs/OLs/OTt/OXt/Ofv/Ojv/Ojw/enw/Onw/erx/e30/e/0/e/1/fzz7fz07/b29vb29/f39/P3/vT3/vP4/vT4/f/79//8+v/9+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAj7ADkJZLNGTRo0Z8aICQNmk0AePHbcqEEDhosVKjpVgrJAEycepBCd4MDBxCFSKjxZatKmow5EITKFYsCBwiEUoC4xWcATxwlMokYxYHHkxIgoSM2UWWADQ44eQkgYWYIBxCdLkhaRUTCjQxw5b4YMSYJBA9IohqQoiHEiCBw3SIr8OGHBEqVGhb4oeAETiBIiPjwgmnBWUBcFLULK2JBBBiJSDiAxItRniwIVKUqI+KDhQgUJDc7myaJAIKcnkSZFeuQoEaE/e+5cKS3QiSJGaM8irVOFNqcmggYFAuSHDx47dOZE8M1Ez5QvXrhowWKFCoQHvhVo3859e0AAOw==]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/facebook.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/facebook_en.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAF4AAAAUCAIAAACLcx0zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABDJJREFUeNrkmLsvZVEUxu+9roREYdB4NR6V6ISCRENHI1FJlHSUlP4FpVaiIdHQUdIIBYnKUIhXInFzq6vB/Nw1WbOyX3OYxsys4mSfvdfZ+1vfeuyzd/719fXh4aFUKr28vOTz+be3t1wuJw37mquK9OiQKqjwWigUHAXpsTrSiPX701pIVt8ilCF5dWA7mv7kjjQ2NnZ0dOSvr6+fn5+bmppqamp0XmdSB02QCx3KsnaCAocpNdhSwxOPBkFK21GwOgI4Dezx8bGhoaFQLpebm5vRZi5FbNE7xvjQFY2IdX7MZutbJ2TsWjZILZVits5j6dOvgvHluzYoEEIaFezCuY+IdZQaFrTWdmrkJyIlqK/P2AwSKQ4eCxX3Z7QRTcpL0RrgfFmpVDY2NoIfT01NkYO+tTHQfjgEddJOclaJTRKbIWOaKxVFTTx/uu9VCX6svFi5urrS9req5L624HsSp62tLThaTGTg09OTNHp6enp7e7W/vr4+ONfa2lpXV5e07+/vR0ZGxsbGvjI1gNzb25ufnw8GTjGR/BcXF9IYGhrq7+/PspgugzdWV1eVmru7O57WP/SwMyqVOBCgra2tlvdSVUSHkLSRmBjy1xIdtmT7OSumK2kxsdvbbNI20Nvb27PEqra3trYEbl1dnXBHfAFOZltcXDw/P0cHXmBndnYWg/f39y8vL0Wnu7tb4hfz+JxnbIgP/bWWlpaEQSZfWFiAHSY/ODgQmlCLlZuilnQndiwvthiPjo4mqMFmjdWJiQkamA1N2E97fX2dV1FYXl4W1jASrMIIFu7s7Iiy6PDtysqKmM2QlrPgUKUqdq2+vj7a4+PjonNycjI8PAwv8IVXxAExW4r2D8IO3N7exvb8RLAAgicgSKWBgQHhCIhAEQWJc7wtr9PT05IC4lie4nPVkfySUc212JC/llAjOhIgNm3pj1HznlD2/9rKzc2N7tODg4MZC5uAIAQIH2ARtACiHk9OTkqG04PTJB20TAAUb+vz02XVXyuoQ43zs95PqOgvsyYU29NHIYIJiJubm7QhiDA+Pj7GnxRmuKCHtvQQ9thAD5nFEE/x8+fEX8vXkbAlldDhmfjzDG/eZJMwig+DvzCJkBGBGkKX7AAKQUSkMCHpo2EFLO0hwg8PD9lHyRRqgRzw/GltZ3AIl/hrqQ6jYuzc3Nzu7i7YWAuQwWx6l7OzM06Zzt/w0dHR9vY2DfbsmZmZ7IeGryx6Cvnt8RIdgqMQNE8LjbD2z0gWXn6dFU5PTzs7O/9wyb8oarKg/Rk1tbW12c9d/4+8//JRnPihpNY6V3n+SdTeDzm3R8FTmL09StyN6YoS6s4VVHC2mPMT1zFBMDGBEOr6u7VUlnK5HDsxxC5Dg8sofcEryFhgC7lCjU+Br2wvq/yZLWAdkisYXqWRpqalpYVN84cAAwBnN6BbOzumRQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/gplus.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAYAAADskT9PAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqlJREFUeNq8Vk1LKmEYPWOW0QdYG60Wha2Ctl0oJAgRN64S3IjWJrA/0eXeP9GmxQ1B3LTTduEmgjQCURA3kYKhYFn0ZfZ15zw0g4GTt+h64JnR952Z88x5zvu8o0BFOp1eVU/ravxAd5BSY3Nubu6PkkqlNoaGhn5NTExgYGCgK+x3d3col8u4ubn5aX55eVmfnJyEyWTC4+NjVxLo6+sDObPZ7Lr59fXVrigK1ETQLaicICe5qUBXyVuTIC8VwMPDA+XA9fU1isWi1EiD1WqFx+PB6Ojof0lCFIhEInC73VhYWIDZbEYikUA+n8fs7KyQ39/ff0ml3d1dlEolhMPhtvO6AoODg5iamtLffGlpSZTI5XJwOByw2+2fIm40Gjg4OBByjchIARMnuQKazaYMMJ6enjA9PS0X1Wo1fdwootHou/+xWAyVSgW9vb06UbsQbh4uLy/FB60TVIVgSTol8OZoPWZmZhAIBNDf398xAfHA8/MzCoWC1FzD7e0tLBaLlIAXtwO9Q+WIra0tWd/BYBDz8/PveorR/boHiKOjI/T09GB8fBzVahUnJydYXl4WBYxquLa2Jm+/vb2NlZUVIaJhtaQ6JaCvAt6cyWTENIeHh6KI3+/H8PDwh91RMy0fRMXaEXRSQDxAszidTni9XiEneG415kcRCoXajrcmYugB/iARg3LabDYpQTwex+LiIsbGxjouO3VTaTtOP/CZRvN6CU5PT3FxcSFy07mUnl1xb29PlOHG8RUYEb8zIQ9nZ2dCxO2YpiOSyaS05/39fYyMjEhS3w3xgCpD2eVySc2vrq5wfn4ualB+LictwX/xwmfire+UmcDm8fGxtM9Wc9TrdWkohPrB8q3k9BvLTm6FBDs7Oxtvn2T2Lu3GFX6S+Xy+338FGAAJF8SL8w1B7gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/info.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpi/P//PwO5gAWXBKPJLLip/8+kMWJTw8RAAaBIMyMlfqbIZhZ8AUVygIEU4lI8eEJ7iGrGSCTYogpXlFGUwgACDAAscBx3xB6/8gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/on_off.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABcAAAAYCAYAAAARfGZ1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABLdJREFUeNqMVV1MW3UUP/f29va2vW1pOzZqR7sVyhLKwOBkLzyYmAwIMTEGXhbfTRb1QX1ftviyJ2OMM4EHEh/MCA8mJiaauMosH9u0ylikHUI2KtgPaGlL6W3px/Wc/yi0DCcnOem9//+55/zO73yU++r2bSCpVCr6+fv3P1FV9T2r1XpGQMlkMhAOhyEUCsFxgrbA83zJYDAso+2Pe3t7n4uiGNFqtexe2LfrfLS4+MBkMslDQ0PgcrkAP4CdnR1YXV2FQCAAy8vLEIvFGhyTlstlLTr1YRBfoVC4pijKVbz+tubc9ufS0pzX65VHR0fB7XY3oOvt7QWfzwfj4+OAwUGv1zOn+9lCqVQCdMqApNNpCfWbbDbbh9ePBYz4MV5Y+vv7DxxzHNeAsLOzEwYHB2FychK6u7tZVnROzhE15HI5SKVSEI1GYWNjQ8LfG3j3jhCLx0c8Hg/04EdqtQq8RtOAnAJV0cmrPT2MHqSBBSDnVbQn5Pl8njlfX18HWZapDoORSEQUMIKjqakJqAjVY5yT0Dl9JEkSQ0oZ1nEOxWIRqPj7juldj9k0C3gQxxcT8UYBhP1K1wuhI07p1+l0Mu5rlFFgCkBUUZaURTKZJIpSvN1uv6NBtCsrK1BCVEUMUkc4KGhcRqfULZubm3C5r4+dk1JlNIhUREAGLLTFbAa7zUYaxCsFs+BvIZKdmdlZwCpDfncXMtvbkMPnTDoNBUWBra0t+C0YZHScbW2FIoGo0z0MXsa6UA9xGAypvT4wMMBaMYdc9mCKjyenpoyvYeu50AFxRzQ8W1uDPxYWgLIbHh5mHXHcMBE92wgqHo9fx6PvWTNMTEwwg/n5eQ0im0Te3sJXUafTsUJRB+GwNrTnUcekCCSIdbnp6+r6DgM0TCibCdQRegiHQjbsoMtonICXSN0wLXV0dChH7wXilKT74kX97NzcR0uhJ6Pb6bQnntiS8WPuOMR09vqlXvC2t2HnyGpBKezcC8wE/H7/NeQ6Qt1iNsmHu+Wufzrww0/TNkGUQKPVgWxtweJQz3MNlHg9LujxeWHwypu1HcRhhmbcQcPtbW3P1iKRL9Hsg4PdElxYnPHP/Go12Z2gM1hAlIwYQGIDxXE8C0Bi1Ivw9pVueMkO4sbGxt5H5ET6p2y33P3lodXc7Ea0DjA2nQbJiBOrMwAvaJnzGnKPvQz/t4Noq+K03sQd87Xw9z+xkaoWm7+lDSzN50C2ORh6oofX1LrkuZOz4qOT7iAO98xVQSmUW8ynXGB1tIP1jAcMiFyUTKAh1HyNFgBe3QNjSTjxDqqq0CUYZTmBXJvN9laQkXODyX7INyE+SF2FYrwIJ91BPMet805H8x2TxQ6SbEU6zCDo9DiNwnPEDW3IgaJznXgH4adTvCjwt7rclhTRwPMCRtQccXooecMFOMkOim6m76F5kO2WjleES/l49kGpmG2u8Op+f78oBZAhWmkF3EHwXzvo6UYqjKZv1I//079+9zvazrk+y1Y071ZV3lrfJfWSRk0i3YmfH4JZN4/F00G+gH8Wu5VkNl++gbC+OBj/I7vlQ9JsdMmGiM5zcDw9OdQEK7EKp5rk04lkZvqC9/wLu+VfAQYAUOGVdlqrCcAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/settings.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjRJREFUeNpskrFvEnEUx7+/o6PHZAfpH8AlKkLLdZLTA7caqYlJbS1RF3WzFY1Ll5oOpUZNm1gTW6c62JSYghHTJgVjFRIw3uJAsQsDdPaOsfZ8vx8HPaIv+fC43733e9/3Bdi2rRAlYo5QQRE4E1QajcZPehYUvxUXz54OyPSdM0qkeb1EtY8JmRgllrTzF9OU09nMB3RidvZJjFJp/d36EuU5QuH1ffSRIVSnTtYuaEo2k8Xa2ltUymWYloVmoyleRrSIiuOw+OQdoto9MU3Y9pHIlcp37FX36NmGfWTDNC1XL5ZZe8dzi+FwOCbLJ5DPF9qvbIgmd3i9XsSvxlHIf8bBQfMaSz54qGxvbae7FU6TOqxCVcNCdnYzC6tlgTGJYAR43mTczQztuDC/APO3KfoVxY+N9xvd+wqkZnoq2WmCrutIPkqC74x4/Ar8fn+3OHop2iNXj+qQJEZIgonJcfh8p9DnLmLtq2FZrZ5mi6TzprZkAsIqeBKJhDpx/cZArVYTO3k8Eur1OgKBAN3uE43Pn73A/q99MH4Bkct9IufNhuN2sESyZDFZKHAbIzmK4Ex1FIKlhOxbt2+WQ6FgjE+6e+ceWq3Wf5tGLo9gavo+ch9zONnfX+FuD9D5Vme/lderWF158+8kolj66rZih7s96T4xDIP2YggPDWH51UuknqbEnhIp2f2y6y6NSeiNivHDmJEYq46Nj2FwMARNi2BYVS3+pzg8/DPDze/8CH8FGABkVOJHgxsWhgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/socialshareprivacy/twitter.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAADcAAAAUCAIAAACmgTKJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABNtJREFUeNrMl0lInEsQx2dGTdy3GBfc0bhjiEbiirhcFBRF9BQIqAiCR4+eghePevCiKJqb4MGT0SDuC6ioCK6ICDGuuO/be7+x3ut8zKee7cM33dXV1f/+V1VXj/Hm5mZjY2NnZ8doNP7z2AwGA32DpskUHb4yxffh4cH42EQoClod6eutKX2Ra20qfWXNy8srKCjIuLKy8ubNm8DAQMOrbDAIj6bd3d1XC5EGNhCaDK++4X1rfu7u7ggyfRSqZjKZRMEiClVgWdjVyp/T0ce9PsRlit1N+vVKooJ6ZGSkq6uLDNPmkDbbsPMkROlo80nZ1GaV1qz2bPKFIDOXt7e3sivjsbGxuLg4Ozs7Zbq+vn5/f9/JySkzM/P+/l4MjY6ODgwMCDgRxsfH5+TkKGJoQoEFPYoXPW2/f/+2tbV9//69BfeoWZWVlZHt6tDT09Pt7e1//vxhgbu7e19fHxRaWVkdHx+vr68DRVZaW1tzJHt7+9nZ2cjIyJCQkPDwcBcXFzm6mJKOSLS8KgXlCvk2NjYC9OPHj0ouU9vb22aUPj4+irno6Oi5ubmtrS22Pzw83NvbQw4mCEOYlJR0dHTk6OgItVFRUQEBAb29vd++fUM+MTEhiK+vr2tra8lNNze3+fn5jo6OL1++/Pr1q6WlZWho6O3bt97e3hx7cXGxqanp58+fpHBERASazLIdu2OE86uzgdIkHgcEOcSXy6mkpAR2XV1dNzc32VLiF2SEwffv37lf0Uf54uKCWZZfXV1dXl46OzsTBliYmZmB/sHBQfp8AUQUdXd3FxUV5eXl/fjxY2FhgY0bGhoSEhJKS0vR7+zs5MBY8PDwyM7OZi9JaCywlzl4pIQo5mng8/f3Zw1OB5+ghM53796FhoYKMgk7bZgTzWBdXV2dmpqCSLgBPcOUlJSenh5CQjyA5eHhYdADCCF2YmNj8QNTDg4OePXTp08cTOt0czSzwf1jg/mHxwag/Px8gkxlrizAxRUVFenp6eqgNDGHRBTGx8ehqqqqCiG+Zj+EbIFbcDpRjrs/f/7MwrOzM9yNkLWpqanqpsOZ4lVl3xxyCgRHaW1t9fX19fPzwyMnJyeqXqONfxMTE4VIuT75SnarvE5OTm5ubgYHJReGJicnAYSmxDrhC539/f3kGe6C0dzc3A8fPpCvNjY2goFQOT8/B4m6IsS+ucdm2MK/X79+JWNwEOmsOGeWqeLiYmxJeoo+ze6x4SyRxMTEMCSTGKalpSHJysqiX1BQgCurq6srKyvxNZGArwsLC+vq6srLy9va2oSpjIwMqnZNTc3BwcHD/43lZha4scPCwhiIfwFELi8vL5PLDGEFaiEGRwhEoU3opO/p6cnBxEcMIYkOfOBr8hQPSDCInFQg3Ll9WQuvHPv09JT7DljMkv5IUGa5wsNeBLcZZXBwsKKX9SCTdBGJBIoWmf4Z9kIJ1tYYbIqpv0Xl8d7V1kmLhx/9tbU1a1Xf/osAk0lODzj9409Z15bEFxBrqwurtBBlFolcIxZJ/cRrQ9W95968ehASLhaABL3+4aIquwVVypQF5Srf/9qRW5oMeIEV/SvphUeQnglVu597TL0QNlRmUsXIVUz1XFpa0v9h0F7a2nfQkzGnDVkLZe2T7Mn/GC8cnmuLfxT/CjAA3XNRysZKvs8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/TXTicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8GhoaGpsbHFxcX5/f3h4wHh4wX2BgZBrMYZpQoRubY15b5N9YqOEPJ2CXbyaTamQb9S/S4CAgI2NjY+QkJSUlJ+fn5uhobyqkaOjo6Gko6enp7GxsbS0tL60uru9vby/yrm207bKzrzAwLvN0LzM1L7N1L/N1b/O1b/K2L7Q0dvPtcHBwcPJyMvLy8HP1sHO2dTU1NbW1tfX19nZ2dra2tvb28TG4sjI4ufh1Onj1uvl2ODg4OHh4evn4ejo6Onp6evr6+n08uv18+z19Oz29PDw8PT09Pf39/H49/f7+vj4+Pz9/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAivAKMIHEhkiBAaR6AMFEgFg4YIFjRU0DDhwo4nC4M8eBAhBAUVGU5cEFFkoQMgEpZIcCJhigQrDHiYbLGkphMpU6rA3GESR80lN3PuNBljSYOjKIQy4DnQAYyfQXUuNTnD6NEGKKwMbfoCKk6pTAU6kGEVqdapTXN4VRo2igMXRlFE3Sp2RU0mTWywGNHBw4+FSVKAgLBAAYMNHD7UQLIQSo8SJEzUuKHDhxElCgUGBAA7]]></data>
	</file>
	<file>
	  <filename>/images/XLSicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8DVJGjRNGTVNGDRSFzRTFzRYFTReEzReFDVeGjNpDzNtDjRtDjRjETRkEjZjGztoHjpvHjNwDTlwHjp3GTx3Hz57HjJoKDtxIjp9Jz99ITZKZDdLZWB+XEKAJUaELEeFLUKJNUeIO02MNk+OOUiSP1OTQFKXSFiYR1qaSVieUl6YVV+hU1uiWHCbbWGiVGGgWGWnW2eqX2SoYGmtYmqsZW2wZ3SlcHij63ul6Hyk6YephZC9i5ywm5Oit5WkuZamu5movqGzn5yrwJCu1p243p6434Cn54Gn54Sr5oWs5oit5Yqu5Iyv5I+x45Gx4pWz4pW04pm24KW0yqa2y6i2zaq5z6G63aS73aW83Ku60a290q6+1JPCjpPEjZbEkZrGlrDA1rHB17LC2LrF1MDRwMzay8/dz8fa+Mnb+crb+Mzd+M7e+dbi1t/p39Dg+dLh+tLi+tPi+9bk+tbk+9fl+tjl+tnm+9rm+9rn+trn+9zo+93o+93p+9/q++Xs5eHr++Ls++Hs/OLs/OXt/Ofv/Ojv/Ojw/enw/erx/e30/e/0/e/1/fb29vb29/f39/P3/vT3/vP4/vT4/f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjxADEJZLNGTRkyY7546cLlksAfPXTUkPGCRYoTHzJNYlLCEqYfnUKKDLlBEyUkbTr+MMMDRqc3NGgYocCp0pESOHcgOuNDBZAcK+xMaEJUTJgSODrBSWNDBAg3nSxsotRkERgSMToVmYHGRogbdyIQbXLICYkWRTxowFDERYYlDyhJamJoCwkUI4lwkGCiwdhAWUiMGDmSwSNGhPhcIdFhQ4UJFyA8cLBAAaNCTfJUISEQkxJIkSA5apSoiZ8mdaZwFphE0dgmgsbOibIaE5JAgwD96bMHDx05cYbUPqLnyRYtWKxQkQJFSJDaJKJLny49IAA7]]></data>
	</file>
	<file>
	  <filename>/images/XMLicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8AAAAAAAgAAAmQAA/zNmmTNm/zOZAACAgDOZ/zPM/zP//4aGhqbK8MDAwPHx8ff39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAiDACsIHEhQYIaDGSpoWMiw4YEKCBU2XIhBA4YDGiAmpGixY0UAIAFsxJCgogEDDyyW1CBSYQIGGgxooCCBgAYGJVu+tGiAwgQIBCribKlh5wMJEBrYxImBKMmKBKKq/LjRo9WKTUc62MqVK1WJWK9adNq17FeOYdM6FRtWZMi3cENmCAgAOw==]]></data>
	</file>
	<file>
	  <filename>/images/xml_rss.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhJAAOAOYAAP/////9+f/9+v/68f/58P/45P/24//z3v7x2/7v2v7pvP7os/7muf7nqP7ktf7lr/7jo/7iq/7jmf7frv7gnv7cq/7fiv7cmf7YlP3be/3eZP3bYP3Vm/3aX/7Uj/3VfP3WWv3Qiv3Rgv3VWf3UWP3SXPzQY/3Mhf3PUPzLU/zKW/3FafzHRvzDU/zESv3DXfzAYvzAPPy8S/68N/64Mvy2Qvy4M/6xKfywOvywKfypMfuoJvypH/yjKfukHPuhFfucE/uaE/uZC/+WBf+VBPuVCf2TAvuRAPuSAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAAkAA4AAAf/gDdEREOFhoeIiYqHgjMbGpCRkpOUlZAdNIMkIJydnp+goZ+DKKWlDQWlGQUlpQUSphasKLKmtqWDLLq6KQALLAIGuwAAuwICJiwQxbvNLIMx0dIPAAoALtLEHzEqxCoxFADS49GDNufoNsQR6QABAzYMxC02FwDp+IM5+/w5BwAi+gHAAOAFAAcAZOQg2K/hIB4QI64AQABARB4AalQMUCMjDw8WL14c9KOkSQAIfACYcBIHDAAhcADA8SPETBw4dpgsOUiIT58VAAARwgGADp9GhQAQoiPpCWLEEvz0OQiJVas9glztUQSr1a5IenztQTbrVauDiBxZy7at27dwDd0SMZK2rt27ePPODQQAOw==]]></data>
	</file>
	<file>
	  <filename>/images/ZIPicon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAIcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8ARLsBJPqRZQpyFbrSNfsChltixquydpxzt6xDqA0DmF1ziZ80OK10mH0U6P2FqU2FuZ11Oa4lOa5F2l61am9Fyr9nGc02Go62as7W2h4G6x7mGz/2i3/3Sk4HCv7nKx5nWx5HW38Ha38He09HK7/3u88Xi+/6lsDKpsDKtzHLN7DrJ9DrF6IvEZAbeDJ86gDc6gD8+hDtKgB9SjCNWlC9GlE9WmENWmFtSnG9OpHtSpHt61AdSpINSqIdiuKNm3Kdq0Ktm/Ktm8L9m/LNm3Mdu5M9q6Nd6+O/bNLPzUMf7TOP3VOf3ZR/3aUfzZWPvdZPzebfvedPPkbfzifYKx35Cz3pC235S335a535i534HA8oTD84jD84nJ94vK+ZjC9ZvP9a3b+bTP9rzl++PMgvfvgvzkhfrjj/vnl//4hvr1kPr1kfr2k//6kP/7mv79mfroofrprfrrs//9pP//r/vwvf//ucjY9sfs/fjuyvvzzv//xPn25ff39/T//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAP8ALAAAAAAQABAAAAjRAA8JHFiGzIsVJESEGOhmh0M3IRAJarNGjRkWFwTmuMFxR4SPICd80KDgkA4lSZY0YeLkCZQoNA55UVHySJ5CgPz0wXNnDpcah8CUKUnEjqFBe+JswUKlCFAxaEoOqUOIj5wuWaxMcXoIqlSqVrFq5Rom6iEjdP7ogaPlShUpXMecKfnjDRIhQYD46MGD65cUJXHYkBFjBkiQIFB0KDlQYEQTJVzAgNFBQuPGISA8cOCgAePLoEMsBN14w4kRGTBYoLCA9CEOgdikaeGhAoNDAQEAOw==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUbyBkZW55IFBIUHMNCjxGaWxlcyB+ICJcLihwaHB8cGhwM3xwaHA0fHBocDV8cGh0bWx8cGx8Y2dpKSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGRlbnkgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjwvRmlsZXM+ICANCg==]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIyAwLTkNCiRsYW5nWyc0MDQnXSA9ICc0MDQgRXJyb3JzJzsNCg0KIyBBDQokbGFuZ1snYWRkZmlsZXMnXSA9ICdBZGQgRmlsZXMnOw0KJGxhbmdbJ2FwcGx5J10gPSAnQXBwbHknOw0KJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPyc7DQokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydhbHRlcm5hdGl2ZV91cmwnXSA9ICdJZiB5b3Ugd2FudCB0byByZWRpcmVjdCB0byBhbiBleHRlcm5hbCBVUkwgb3IgYW4gaW1hZ2UsIHVzZSB0aGUgZm9sbG93aW5nIGlucHV0IGZpZWxkIHRvIHNwZWNpZnkgYSBmcmVlIFVSTC4gVGhlIFRhcmdldCBQYWdlIGZyb20gdGhlIHVwcGVyIGZpZWxkIHdpbGwgYmUgaWdub3JlZCBpbiB0aGlzIGNhc2UuJzsNCiRsYW5nWydhbHdheXMnXSA9ICdBbHdheXMnOw0KJGxhbmdbJ2F1dG9saWdodGJveCddID0gJ0F1dG9MaWdodEJveCc7DQokbGFuZ1snYXV0b2xpZ2h0Ym94X3VzZSddID0gJ1VzZSBBdXRvTGlnaHRCb3gnOw0KJGxhbmdbJ2F1dG9saWdodGJveF9kZXNjcmlwdGlvbiddID0gJzxwPk1pdCBkZXIgQXV0b0xpZ2h0Qm94IHdlcmRlbiBkaWUgQmlsZGVyIGlocmVyIFdlYnNlaXRlIGltbWVyIGluIGRlciBrb3JyZWt0ZW4gR3LDtnNzZSBnZXNwZWljaGVydC4gSXN0IGRhcyBlaW5nZWbDvGd0ZSBCaWxkIGdyw7Zzc2VyIGFscyBkYXMgT3JpZ2luYWxiaWxkLCBzbyBlcnN0ZWxsdCBBdXRvTGlnaHRCb3ggYXV0b21hdGlzY2ggZWluZSBLb3BpZSB1bmQgZXJzdGVsbHQgZWluZSBWZXJrbsO8cGZ1bmcgenVtIE9yaWdpbmFsYmlsZC4gTWl0IGFrdGl2aWVydGVyIExpZ2h0Ym94IEZ1bmt0aW9uIHdpcmQgZGFzIE9yaWdpbmFsYmlsZCBiZWltIEtsaWNrIGF1ZiBkYXMgdmVya2xlaW5lcnRlIEJpbGQgaW4gZWluZXIgTGlnaHRib3ggZ2XDtmZmbmV0LjwvcD4nOw0KJGxhbmdbJ2F1dG9saWdodGJveF90aXRsZSddID0gJ0F1dG9MaWdodEJveCc7DQokbGFuZ1snYXV0b2xpZ2h0Ym94X3Byb21wdF9yZWwnXSA9ICdJbmhhbHQgZGVyICJyZWwiLUF0dHJpYnV0cyBkZXMgQmlsZC1MaW5rcyAoa2FubiBsZWVyIHNlaW4pJzsNCiRsYW5nWydhdXRvbGlnaHRib3hfcHJvbXB0X2NsYXNzJ10gPSAnSW5oYWx0IGRlciAiY2xhc3MiLUF0dHJpYnV0cyBkZXMgQmlsZC1MaW5rcyAoa2FubiBsZWVyIHNlaW4pJzsNCiRsYW5nWydhdXRvbGlnaHRib3hfcHJvbXB0X3VybHR5cGUnXSA9ICdVUkwgdHlwZSc7DQokbGFuZ1snYXV0b2xpZ2h0Ym94X3Byb21wdF9saWdodGJveCddID0gJ0xpZ2h0Ym94ZWluYmluZHVuZyBkZXIgQmlsZGVyIGR1cmNoIEF1dG9MaWdodEJveCBzdGV1ZXJuIChkYXMgbm90d2VuZGlnZSBTdHlsZXNoZWV0IHVuZCBKYXZhU2NyaXB0IHdpcmQgYXV0b21hdGlzY2ggZWluZ2VidW5kZW4pJzsNCiRsYW5nWydhdXRvbGlnaHRib3hfcHJvbXB0X2pxdWVyeSddID0gJ0VtYmVkIGpRdWVyeSc7DQokbGFuZ1snYXV0b2xpZ2h0Ym94X3Byb21wdF90ZW1wbGF0ZWNzcyddID0gJ1N0eWxlc2hlZXQnOw0KJGxhbmdbJ2F1dG9saWdodGJveF9wcm9tcHRfdGVtcGxhdGVqcyddID0gJ0phdmFTY3JpcHQnOw0KDQojIEINCiRsYW5nWydiYWNrdXByZWNvdmVyeSddID0gJ0JhY2t1cCAvIFJlY292ZXJ5JzsNCg0KDQojIEMNCiRsYW5nWydjYWNoZSddID0gJ0NhY2hlJzsNCiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOw0KJGxhbmdbJ2NzdiddID0gJ0NTViBMaXN0SXQnOw0KJGxhbmdbJ2NzdmZpbGVzJ10gPSAnRmlsZXMnOw0KJGxhbmdbJ2Nzdl9kZXNjcmlwdGlvbiddID0gJ01pdCBDU1YgTGlzdEl0IGvDtm5uZW4gSW5oYWx0ZSB2b24gQ1NWIERhdGVpZW4gZWluZmFjaCBkYXJnZXN0ZWxsdCB1bmQgZHVyY2hzdWNodCB3ZXJkZW4nOw0KJGxhbmdbJ2Nzdl91c2UnXSA9ICdVc2UgQ1NWIExpc3RJdCc7DQokbGFuZ1snY2hhbmdlbG9nJ10gPSA8PDxFT1QNCjx1bD4NCjxsaT4xLjIuNSAtIDEwLjA4LjIwMTI8YnIgLz4NClR3aXR0ZXJmZWVkIGhpbnp1Z2Vmw7xndDxiciAvPg0KU21hcnR5IGthbm4gbnVuIGluIFN0eWxlc2hlZXRzIHVuZCBKYXZhc2NyaXB0cyBnZW51dHp0IHdlcmRlbjogei5CLiBbW3Jvb3RfdXJsXV08YnIgLz4gDQpGZWhsZXJiZWhlYnVuZyBBdXRvTGlnaHRCb3g8YnIgLz4NCklua29tcGF0aWJpbGl0w6R0IHp3aXNjaGVuIEF1dG9MaWdodEJveCB1bmQgU29jaWFsU2hhcmVQcml2YWN5IGJlaG9iZW48YnIgLz4NCkphdmFzY3JpcHQga2FubiBudW4gYXVjaCBpbSBGb290ZXIgZWluZ2VsZXNlbiB3ZXJkZW48YnIgLz4NCkRhcnN0ZWxsdW5nIHVuZCBHcnVwcGllcnVuZyBkZXIgRWluc3RlbGx1bmdlbiDDvGJlcmFyYmVpdGV0IA0KPC9saT4NCjxsaT4xLjIuNCAtIDIwLjA3LjIwMTI8YnIgLz4NCkFkZCBBdXRvTGlnaHRCb3ggdGVtcGxhdGUgbWFuYWdlbWVudCANCjwvbGk+DQo8bGk+MS4yLjMgLSAyNi4wNi4yMDEyPGJyIC8+DQpCdWdmaXhlcyBpbiBBdXRvTGlnaHRCb3gNCjwvbGk+DQo8bGk+MS4yLjI8YnIgLz4NCk1pbm9yIEJ1Z2ZpeGVzDQo8L2xpPg0KPGxpPjEuMi4xPGJyIC8+DQpNaW5vciBCdWdmaXhlczwvbGk+DQoNCjxsaT4xLjIuMDxiciAvPg0KQWRkZWQgQXV0b0xpZ2h0Qm94PGJyIC8+DQpBZGRlZCB0ZW1wbGF0ZSBpbXBvcnQNCjwvbGk+DQoNCjxsaT4xLjEuMTxiciAvPg0KbWlub3IgYnVnZml4ZXM8YnIgLz4NCnVwZGF0ZSBTb2NpYWxTaGFyZVByaXZhY3kgMS40DQo8L2xpPg0KDQo8bGk+MS4xLjA8YnIgLz4NCkFkZGVkIFNtYXJ0eSBwbHVnaW4gXCR0YnRvb2xzLiBUaGlzIGVuYWJsZXMgeW91IHRvIHVzZSBkaWZmZXJlbnQgZnVuY3Rpb25zIHRvIG1vZGlmeSBjb250ZW50LjxiciAvPg0KQWRkZWQgZGlmZmVyZW50IHBsdWdpbnMuPGJyIC8+DQpBZGRlZCBwbHVnaW4gdG8gZXh0ZW5kIEFkdmFuY2VkQ29udGVudDxiciAvPg0KQWRkZWQgcGx1Z2luIHRvIHNob3cgU29jaWFsU2hhcmVQcml2YWN5IEJ1dHRvbnM8YnIgLz4NCkFkZGVkIGEgVGFpbC1Mb2cgVGFiPGJyIC8+DQpNb2R1bGUgaGVscCBpcyBub3cgbXVjaCBiaWdnZXIgOik8YnIgLz4NClRvb2xCb3ggY2FsbCBpcyBub3cgcG9zc2libGUgd2l0aCB7VG9vbEJveH0NCjwvbGk+DQoNCjxsaT4xLjAuMSAtIGRlY2VtYmVyIDIwMTE8L2xpPg0KPHA+QnVnZml4ZXM8L3A+PC9saT4NCjxsaT4xLjAgLSBkZWNlbWJlciAyMDExDQo8cD5Jbml0aWFsIFJlbGVhc2Ugb2YgbW9kdWwgVG9vbEJveDwvcD48L2xpPg0KPC91bD4NCkVPVDsNCg0KJGxhbmdbJ2NyZWF0ZWQnXSA9ICdGaXJzdCB0aW1lJzsNCiRsYW5nWydjb3B5J10gPSAnQ29weSc7DQokbGFuZ1snY29uc3VtZXJrZXknXSA9ICdDb25zdW1lciBLZXknOw0KJGxhbmdbJ2NvbnN1bWVyc2VjcmV0J10gPSAnQ29uc3VtZXIgU2VjcmV0JzsNCg0KIyBEDQokbGFuZ1snZGF0ZV9jcmVhdGVkJ10gPSAnQ3JlYXRlZCc7DQokbGFuZ1snZGF0ZV9tb2RpZmllZCddID0gJ01vZGlmaWVkJzsNCiRsYW5nWydkYXknXSA9ICdEYXknOw0KJGxhbmdbJ2RheXMnXSA9ICdEYXlzJzsNCiRsYW5nWydkZWJ1ZyddID0gJ0RlYnVnJzsNCiRsYW5nWydkZWJ1Z19sb2cnXSA9ICdEZWJ1ZyBMb2cnOw0KJGxhbmdbJ2RlYnVnX3VzZSddID0gJ1VzZSBEZWJ1ZyBUYWInOw0KJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7DQokbGFuZ1snZGVsZXRlYWxsJ10gPSAnRGVsZXRlIGFsbCc7DQokbGFuZ1snZG8nXSA9ICdBY3Rpb24nOw0KJGxhbmdbJ2RvbnRfdXNlX2V2ZW50X2hhbmRsZXInXSA9ICdEb25cJ3QgdXNlIEV2ZW50IEhhbmRsZXInOw0KJGxhbmdbJ2RvbnRfdXNlX2V2ZW50X2hhbmRsZXJfaGVscCddID0gJ1dpdGhvdXQgdXNpbmcgdGhlIGV2ZW50IGhhbmRsZXIsIHlvdSBuZWVkIHRvIGluc2VydCB7Y21zX21vZHVsZSBtb2R1bGU9XCdUb29sQm94XCd9IGF0IHRoZSBib3R0b20gb2YgeW91ciBwYWdlIHRlbXBsYXRlcy4uLic7DQokbGFuZ1snZG9uYXRlJ10gPSAnPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWQiIHZhbHVlPSJfcy14Y2xpY2siPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSI5QlFBTDlYVDQ1RkdOIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vV0VCU0NSLTY0MC0yMDExMDMwNi0xL2VuX1VTL2kvYnRuL2J0bl9kb25hdGVfU00uZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJQYXlQYWwgLSBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZSEiPjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWxvYmplY3RzLmNvbS9XRUJTQ1ItNjQwLTIwMTEwMzA2LTEvZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj48L2Zvcm0+PC9kaXY+JzsNCiRsYW5nWydkZWZhdWx0J10gPSAnRGVmYXVsdCc7DQokbGFuZ1snZGVza3RvcHRwbCddID0gJ0Rlc2t0b3AgdGVtcGxhdGUnOw0KDQojIEUNCiRsYW5nWydlZGl0J10gPSAnRWRpdCc7DQokbGFuZ1snZXJyb3JfcGVybWlzc2lvbmRlbmllZCddID0gJ1Blcm1pc3Npb24gRGVuaWVkJzsNCiRsYW5nWydlcnJvcmluc2VydGluZ2RvbWFpbiddID0gJ0Vycm9yIHdpdGggZG9tYWluIHByb2Nlc3NpbmcnOw0KJGxhbmdbJ2Vycm9ybGlzdCddID0gJ0Vycm9yIGxpc3RpbmcnOw0KJGxhbmdbJ2Vycm9yX3RlbXBsYXRlZXhpc3RzJ10gPSAnVGhlIG1vZHVsZSB0ZW1wbGF0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IG92ZXJ3cml0dGVuLic7DQokbGFuZ1snZXJyb3JfdGVtcGxhdGV1bmtub3duJ10gPSAnVW5rbm93biBtb2R1bGUgdGVtcGxhdGUgW3RlbXBsYXRlXSc7DQokbGFuZ1snZXJyb3JfZGlyZWN0b3J5bm90d3JpdGFibGUnXSA9ICdEaXJlY3Rvcnkgbm90IHdyaXRhYmxlLic7DQokbGFuZ1snZXJyb3JfaW5jb21wbGV0ZXhtbCddID0gJ0luY29tcGxldGUgeG1sLic7DQokbGFuZ1snZXJyb3JfY2FudGNyZWF0ZWRpciddID0gJ0Nhbm5vdCBjcmVhdGUgZGlyZWN0b3J5JzsNCiRsYW5nWydlcnJvcl9jYW50Y3JlYXRlZmlsZSddID0gJ0Nhbm5vdCBjcmVhdGUgZmlsZSc7DQokbGFuZ1snZXJyb3JfZmlsZW5vdGV4aXN0J10gPSAnRmlsZSAiW2ZpbGVdIiBub3QgZXhpc3QnOw0KJGxhbmdbJ2Vycm9yX25vZmlsZXMnXSA9ICdUaGVyZSBhcmUgbm8gZmlsZXMnOw0KJGxhbmdbJ2Vycm9yX2NvdWxkbm90ZGVsZXRldGVtcGxhdGUnXSA9ICdUaGUgbW9kdWxlIHRlbXBsYXRlIFt0ZW1wbGF0ZV0gY2FuIG5vdCBkZWxldGUnOw0KJGxhbmdbJ2Vycm9yX2NvdWxkbm90cGFyc2V4bWwnXSA9ICdFcnJvciBwYXJzaW5nIFhNTCBmaWxlLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBhcmUgdXBsb2FkaW5nIGEgLnhtbCBmaWxlIGFuZCBub3QgYSAudGFyLmd6IG9yIHppcCBmaWxlLic7DQokbGFuZ1snZXJyb3JfY291bGRub3RyZWFkdHBscHJvcHMnXSA9ICdDb3VsZCBub3QgbG9hZCB0ZW1wbGF0ZSBwcm9wcy4nOw0KJGxhbmdbJ2Vycm9yX2NvdWxkbm90d3JpdGV0cGxwcm9wcyddID0gJ0NvdWxkIG5vdCBzYXZlIHRlbXBsYXRlIHByb3BzJzsNCiRsYW5nWydlcnJvcl90ZW1wbGF0ZWZpbGVub3Rmb3VuZCddID0gJ3RlbXBsYXRlIGZpbGUgbm90IGZvdW5kJzsNCiRsYW5nWydlcnJvcl91bmtub3ducGFyYW0nXSA9ICdVbmtub3duIHBhcmFtZXRlcic7DQokbGFuZ1snZXJyb3JfY3VybCddID0gJ0N1cmwgbXVzdCBiZSBlbmFibGVkJzsNCiRsYW5nWydlcnJvcl9ub3RlbXBsYXRlcyddID0gJ1RoZXJlIGFyZSBubyB0ZW1wbGF0ZXMnOw0KJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsNCiRsYW5nWydleHBvcnRfdGVtcGxhdGUnXSA9ICdFeHBvcnQgdGVtcGxhdGUnOw0KDQoNCiMgRg0KJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1Rvb2xCb3gnOw0KJGxhbmdbJ2Zyb211cmwnXSA9ICdSZWZlcmVyIFVSTCc7DQoNCiMgRw0KJGxhbmdbJ2dlbmVyYWwnXSA9ICdHZW5lcmFsJzsNCg0KIyBIDQokbGFuZ1snaGVscCddID0gPDw8RU9UDQoNCjxkaXYgaWQ9InBhZ2VfdGFicyI+ICAgICANCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgR2VuZXJhbCBJbmZvDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9InJlZGlyZWN0Ij4NCiAgICBSZWRpcmVjdHMgLyBFcnJvciBUcmFja2luZw0KICA8L2Rpdj4gDQogIDxkaXYgaWQ9ImF1dG9saWdodGJveCI+DQogICAgQXV0b0xpZ2h0Qm94ICANCiAgPC9kaXY+ICAgDQogIDxkaXYgaWQ9InNvY2lhbHNoYXJlcHJpdmFjeSI+DQogICAgU29jaWFsU2hhcmVQcml2YWN5ICAgDQogIDwvZGl2PiAgIA0KICA8ZGl2IGlkPSJ0d2l0dGVyZmVlZCI+DQogICAgVHdpdHRlcmZlZWQgICANCiAgPC9kaXY+ICAgDQogIDxkaXYgaWQ9InRhaWwiPg0KICAgIHRhaWwgIA0KICA8L2Rpdj4gICAgICAgDQogIDxkaXYgaWQ9InNtYXJ0eXRvb2xzIj4NCiAgICBTbWFydHkgVG9vbHMgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0ibW9iaWxlZGV0ZWN0Ij4NCiAgTW9iaWxlIERldGVjdA0KICA8L2Rpdj4NCiAgPGRpdiBpZD0icGx1Z2lucyI+DQogICAgUGx1Z2lucyAgIA0KICA8L2Rpdj4gICAgIA0KPC9kaXY+ICAgDQo8ZGl2IGNsYXNzPSJjbGVhcmIiPiAgDQoNCjxkaXYgaWQ9InBhZ2VfY29udGVudCI+ICANCiAgPGRpdiBpZD0iZ2VuZXJhbF9jIj4NCg0KDQo8aDM+V2hhdCBEb2VzIEl0IERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgd2hpY2ggbWF5IGJlIHVzZWZ1bCBmb3Igd2VibWFzdGVycy4gQ3VycmVudCBmdW5jdGlvbnM6PC9wPg0KPHVsPg0KCTxsaT4zMDEtUmVkaXJlY3RzIChlLmcuIG9mIGRlbGV0ZWQgcGFnZXMpIGluY2x1c2luZyB0aGUgcG9zc2liaWxpdHkgdG8gc2V0IHJ1bGVzIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMuPC9saT4NCgk8bGk+NDA0LUVycm9yLVRyYWNraW5nIChhbHNvIGZvciBpbWFnZXMsIFBERi1maWxlcywgZXRjLikgLSBpbmNsdXNpdmUgaWdub3JlLWZpbHRlciBhbmQgbGlua2luZyB0byB0aGUgMzAxLWZ1bmN0aW9uYWxpdHkuPC9saT4NCgk8bGk+U29jaWFsU2hhcmVQcml2YWN5IC0gRnVuY3Rpb25hbGl0eSB0byBpbnNlcnQgMi1DbGljayBTb2NpYWwtTWVkaWEgQnV0dG9ucywgdG8gaGF2ZSBhIGJldHRlciBwcml2YWN5IGZvciB0aGUgd2Vic2l0ZSB2aXNpdG9ycy48L2xpPg0KCTxsaT5TbWFydHkgLSBTb21lIGNvbnRlbnQgZnVuY3Rpb25zPC9saT4NCgk8bGk+U21hcnR5IC0gU29tZSBwbHVnaW5zPC9saT4NCjwvdWw+DQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIENNUyBNYWRlIHNpbXBsZSB3ZWJzaXRlOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUuZGU8L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgQ01TIE1hZGUgU2ltcGxlIEZvcnVtOiA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZS92aWV3Zm9ydW0ucGhwP2lkPTkiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZS92aWV3Zm9ydW0ucGhwP2lkPTk8L2E+PC9saT4NCjxsaT5UaGUgYXV0aG9yLCBMdWthcyBCbGF0dGVyLCBjYW4gYmUgcmVhY2hlZCB1c2luZyBoaXMgd2Vic2l0ZTogPGEgaHJlZj0iaHR0cDovL3d3dy5ibGF0dGVydGVjaC5jaCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYmxhdHRlcnRlY2guY2g8L2E+PC9saT4NCjxsaT5UaGUgYXV0aG9yLCBBbmRpIFBldHpvbGR0LCBjYW4gYmUgcmVhY2hlZCB1c2luZyBoaXMgd2Vic2l0ZTogPGEgaHJlZj0iaHR0cDovL2FuZGltaW5pc3RyYXRvci5kZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9hbmRpbWluaXN0cmF0b3IuZGU8L2E+PC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPg0KPC91bD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPHA+Q29weXJpZ2h0IMKpIDIwMTEsIEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoIGFuZCBBbmRpIFBldHpvbGR0IDxhbmRpQHBldHpvbGR0Lm5ldD4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQoNCiAgPC9kaXY+DQogIDxkaXYgaWQ9InJlZGlyZWN0X2MiPg0KDQo8aDM+SG93IGNhbiBJIHVzZSAzMDEtRm9yd2FyZGluZyBvZiBwYWdlcyBvciA0MDQtRXJyb3ItVHJhY2tpbmc/PC9oMz4NCjxwPjxzdHJvbmc+MS4gQ29uZmlndXJlIHRoZSBtb2R1bGU8L3N0cm9uZz48L3A+DQo8cD5UaGUgbW9kdWxlIGlzIGFscmVhZHkgYWN0aXZlIHRocm91Z2ggdGhlIENNU21zLWludGVncmF0ZWQgZXZlbnQgbWFuYWdlbWVudC48L3A+DQo8cD5CdXQgeW91IGNhbiBkZWFjdGl2YXRlIHRoZSBtb2R1bGUgY2FsbGluZyB0aHJvdWdoIGV2ZW50IG1hbmFnZW1lbnQgaW4gdGhlIHNldHRpbmdzIG9mIHRoZSBtb2R1bGUuIElmIHlvdSB1c2UgdGhpcyBvcHRpb24sIHlvdSBuZWVkIHRvIGluY2x1ZGUgdGhlIG1vZHVsZSBjYWxsaW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwYWdlLXRlbXBsYXRlKHMpOjxiciAvPjxjb2RlPntjbXNfbW9kdWxlIG1vZHVsZT0nVG9vbEJveCd9PC9jb2RlPjxiciAvPg0KVGhlIGJlc3QgcGxhY2UgdG8gaW5jbHVkZSBpdCBpcyByaWdodCBhZnRlciB7cHJvY2Vzc19wYWdlZGF0YX0uPC9wPg0KPHA+Tm93IHlvdSBjYW4gYWN0aXZhdGUgdGhlIGZ1bmN0aW9ucyB5b3Ugd2FudCB0byB1c2Ugd2l0aGluIHRoZSBtb2R1bGUgc2V0dGluZ3MuPC9wPg0KPHA+PHN0cm9uZz4yLiBDb25maWd1cmUgdGhlIGRpZmZlcmVudCBUb29sQm94IGZ1bmN0aW9uczwvc3Ryb25nPjwvcD4NCjxwPlVwIHRvIG5vdywgdGhlIG1vZHVsZSBpc24ndCBkb2luZyBhbnl0aGluZy4gWW91IG5lZWQgdG8gY29uZmlndXJlIHRoZSBzZXR0aW5ncy9ydWxlcyBvZiB0aGUgZGlmZmVyZW50IFRvb2xCb3ggZnVuY3Rpb25zLjwvcD4NCg0KDQo8L2Rpdj4NCjxkaXYgaWQ9ImF1dG9saWdodGJveF9jIj4NCgk8aDM+V2llIGJlbnV0emUgaWNoIEF1dG9MaWdodEJveD88L2gzPg0KCTxwPkF1dG9saWdodGJveCBpc3QgZGllIGVpbmZhY2hzdGUgTcO2Z2xpY2hrZWl0IGVpbmUgTGlnaHRib3ggZWluZXMgQmlsZGVyIHp1IGVyemV1Z2VuLiBEYXMgR3J1bmRwcmluemlwIGZ1bmt0aW9uaWVydCBzbzo8L3A+DQoJPHA+QmVpbSBTcGVpY2hlcm4gZWluZXIgU2VpdGUsIGVpbmVzIEJsb2ctIG9kZXIgZWluZXMgTmV3c2VpbnRyYWdzIHdpcmQgZGVyIEluaGFsdCBuYWNoIEJpbGRlcm4gZHVyY2hzdWNodC4gRGFiZWkgdmVyZ2xlaWNodCBkYXMgU2NyaXB0IG9iIGRhcyBCaWxkIG1pdCBkZXIga29ycmVrdGVuIEdyw7Zzc2Ugb2RlciB2ZXJrbGVpbmVydCBlaW5nZWJ1bmRlbiBpc3QuIElzdCBkYXMgQmlsZCB2ZXJrbGVpbmVydCBlaW5nZWJ1bmRlbiwgd2lyZCBlaW4gVGh1bWJuYWlsIGdlbmVyaWVydCB1bmQgZGllIEJpbGQtVVJMIGF1ZiBkYXMgVGh1bWJuYWlsIGFuZ2VwYXNzdC4gWnVzw6R0emxpY2ggd2lyZCB1bSBkYXMgQmlsZCBlaW5lbiBMaW5rIGF1ZiBkYXMgT3JpZ2luYWxiaWxkIGVyc3RlbGx0LjwvcD4NCgkNCgk8cD48Yj5XaWUgbXVzcyBpY2ggZWluIEJpbGQgaW4gZGVuIFRleHQgZWluZsO8Z2VuIGRhbWl0IEF1dG9MaWdodEJveCBha3RpdiB3aXJkPzwvYj48L3A+DQoJPHA+SWRlYWwgd2lyZCBlaW4gQmlsZCB3ZWxjaGVzIGF1ZiBkZXIgV2Vic2VpdGUgZWluZ2Vmw7xndCB3aXJkIGF1ZiBlaW5lIHNpbm52b2xsZSBHcsO2c3NlIHZlcmtsZWluZXJ0LiBPcHRpbWFsIGlzdCBlaW4gV2VydCB6d2lzY2hlbiA2MDAgLSAxMDAwIFBpeGVsIGF1ZiBkZXIgbMOkbmdlcmVuIEthbnRlLiBEYW5hY2gga2FubiBkaWVzZXMgQmlsZCBtaXR0ZWxzIE1pY3JvVGlueSAvIFRpbnlNQ0UgaW4gZGVuIFRleHQgZWluZ2Vmw7xndCB3ZXJkZW4uIE1pdHRlbHMgVmVyw6RuZGVydW5nIGRlciBHcsO2c3NlIGRhcyBCaWxkIGF1ZiBkaWUgb3B0aW1hbGUgR3LDtnNzZSB2ZXJrbGVpbmVybi48L3A+DQoJPHA+QmVpbSBzcGVpY2hlcm4gZXJrZW5udCBudW4gQXV0b0xpZ2h0Qm94LCBkYXNzIGVpbiBCaWxkIHZlcmtsZWluZXJ0IGVpbmdlZsO8Z3Qgd3VyZGUgdW5kIGVyc2V0enQgZGllc2VzIEJpbGQgbWl0IGVpbmVtIFRodW1ibmFpbCB1bmQgZXJzdGVsbHQgZWluZW4gTGluayBhdWYgZGFzIE9yaWdpbmFsYmlsZC48L3A+IA0KCQ0KCTxwPjxiPkZ1bmt0aW9uYWxpdMOkdDwvYj48L3A+DQoJPHVsPg0KCQk8bGk+QXV0b0xpZ2h0Qm94IG1vZGlmaXppZXJ0IEluaGFsdGUgKGluIGplZGVtIEluaGFsdHNibG9jayksIE5ld3NlaW50csOkZ2UgdW5kIENHQmxvZyBJbmhhbHRlPC9saT4NCgkJPGxpPkVudGRlY2t0IEF1dG9MaWdodEJveCBkaWUgR3LDtnNzZW7DpG5kZXJ1bmcgZWluZXMgYmVzdGVoZW5kZW4gQmlsZGVzLCBzbyB3aXJkIGRhcyBUaHVtYm5haWwgYXV0b21hdGlzY2ggaW4gZGVyIG5ldWVuIHJpY2h0aWdlbiBHcsO2c3NlIGVpbmdlYnVuZGVuLjwvbGk+DQoJCTxsaT5FcyBrYW5uIGVpbiByZWw9IG9kZXIgZWluIGNsYXNzPSBBdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbjwvbGk+DQoJCTxsaT5PcHRpb25hbCBrYW5uIGRhcyBKYXZhU2NyaXB0IGRlciBMaWdodGJveCBkaXJla3QgaW0gTW9kdWwgZ2VudXR6dCB3ZXJkZW48L2xpPg0KCQk8bGk+QXV0b21hdGlzY2hlIEVpbmJpbmR1bmcgZGVzIFN0eWxlc2hlZXRzIHVuZCBkZXMgSmF2YVNjcmlwdHMgZGVyIExpZ2h0Ym94IGlucyBUZW1wbGF0ZTwvbGk+DQoJPC91bD4JDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzb2NpYWxzaGFyZXByaXZhY3lfYyI+DQogIDxoMz5Ib3cgY2FuIEkgdXNlIHRoZSBTb2NpYWxTaGFyZVByaXZhY3kgQnV0dG9uczwvaDM+DQogIDxwPlNvY2lhbFNoYXJlUHJpdmFjeSBpcyBhIGZyb20gaGVpc2UuZGUgcG9zdGVkIFBsdWdpbiB3aGljaCBnaXZlcyBtb3JlIHByaXZhY3kgZm9yIFNvY2lhbG1lZGlhIEJ1dHRvbnMuIFRoZSBQbHVnaW4gbWVyZ2VzIHRoZSBTb2NpYWxtZWRpYSBidXR0b25zIG9mIEZhY2Vib29rLCBUd2l0dGVyIGFuZCBHb29nbGUrIG9ubHkgb24gdGhlIGV4cHJlc3MgZGVzaXJlIG9mIHRoZSB1c2Vycy48YnIgLz4NCgkgQSBmdXJ0aGVyIGFkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCBpcyB0aGF0IHRoZSBsb2FkIHNwZWVkIG9mIGEgc2lkZSBkb2VzIG5vdCBzdWZmZXIgZnJvbSB0aGUgU29jaWFsbWVkaWEgYnV0dG9uLCBiZWNhdXNlIGR1cmluZyB0aGUgZmlyc3QgbG9hZGluZyBwcm9jZWR1cmUgYWxsIGRhdGEgYXJlIGxvYWRlZCBkaXJlY3RseSBmcm9tIHRoZSBvd24gc2VydmVyLjwvcD4NCgkgDQoJIDxwPkluIG9yZGVyIHRvIHVzZSBTb2NpYWxTaGFyZVByaXZheSwgdGhlIGV4dGVuc2lvbiB1bmRlciDigJxzZXR0aW5nc+KAnSBtdXN0IGJlIGFjdGl2YXRlZC4gc3Vic2VxdWVudGx5IOKAnFNvY2lhbFNoYXJlUHJpdmF54oCdIGluZGl2aWR1YWwgYWRqdXN0bWVudHMgY2FuIGJlIG1hZGUgaW4gdGhlIHJlZ2lzdGVyLiBUaG9zZSBvZiBidXR0b24gYXJlIGluc2VydGVkIGFzIGZvbGxvd3M6PC9wPg0KCSA8Y29kZT57VG9vbEJveCBtb2Q9InNvY2lhbHNoYXJlcHJpdmFjeSJ9PC9jb2RlPg0KCSANCgkgPHA+SW4gdGhlIHNldHRpbmdzIGl0IGNhbiBiZSBkZWZpbmVkIGlmIGpRdWVyeSBzaG91bGQgYmUgbG9hZGVkIG9yIG5vdC4gVGhhdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXQgZGVwZW5kcyBpbiB3aGljaCBob21lcGFnZSBqUXVlcnkgYWxyZWFkeSBpcyBtZXJnZWQuICAgSW4gdGhpcyBjYXNlLCBqUXVlcnkgaGFzIG5vdCB0byBiZSBsb2FkZWQgYWdhaW4uIDwvcD4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InR3aXR0ZXJmZWVkX2MiPg0KCSAgPGltZyBzcmM9Ii4uL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvaGVscC90d2l0dGVyZmVlZC5wbmciIHdpZHRoPSIzNTMiIGhlaWdodD0iNDU0IiBhbHQ9IlR3aXR0ZXJmZWVkIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0IiAvPg0KCSAgPGgzPldpZSBiZW51dHplIGljaCBUd2l0dGVyZmVlZDwvaDM+DQoJICA8cD5Ud2l0dGVyZmVlZCB3aXIgd2llIGZvbGd0IGVpbmdlYnVuZGVuOjwvcD4NCgkgIDxjb2RlPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdmcmllbmRseScgY2FjaGV0aW1lPTEwICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdkLm0uWSBIOmknICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGxpc3Q9J3dlYmRlc2lnbicgY291bnQ9NSAmIzEyNTs8YnIgLz4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyBzZWFyY2g9JyNjbXNtcycgY291bnQ9MTAgJiMxMjU7DQoJICA8L2NvZGU+DQoJICANCgkgIDxwPkZvbGdlbmRlIFBhcmFtZXRlciBrw7ZubmVuIGdld8OkaGx0IHdlcmRlbjo8L3A+DQoJICA8dWw+DQoJICAJPGxpPnVzZXJuYW1lIC0gVHdpdHRlci1Vc2VybmFtZSAod2lyZCBkZXIgUGFyYW1ldGVyIHNlYXJjaCB2ZXJ3ZW5kZXQsIHNvIG11c3Mga2VpbiB1c2VybmFtZSBhbmdlZ2ViZW4gd2VyZGVuKTwvbGk+DQoJICAJPGxpPnRlbXBsYXRlIChvcHRpb25hbCkgLSBOYW1lIGRlcyBUZW1wbGF0ZSBkYXMgZ2VudXR6dCB3ZXJkZW4gc29sbC4gT2huZSBkaWVzZSBEZWZpbml0aW9uIHdpcmQgZGFzIFN0YW5kYXJkdGVtcGxhdGUgZ2VsYWRlbjwvbGk+DQoJICAJPGxpPmxpc3QgKG9wdGlvbmFsKSAtIE5hbWUgZWluZXIgTGlzdGUgZGVzIEJlbnV0emVycy4gSXN0IGRpZXNlciBQYXJhbWV0ZXIgYW5nZWdlYmVuLCB3aXJkIGRpZSBUaW1lbGluZSBkZXIgZ2V3w6RobHRlbiBMaXN0ZSBhbmd6ZWlndDwvbGk+DQoJICAJPGxpPnNlYXJjaCAob3B0aW9uYWwpIC0gU3VjaGJlZ3JpZmYgbmFjaCBkZW0gZGllIFR3aXR0ZXJhcGkgYWJnZWZyYWd0IHdpcmQgKG9obmUgQmVudXR6ZXJuYW1lKTwvbGk+DQoJICAJPGxpPmRhdGVmb3JtYXQgKG9wdGlvbmFsKSANCgkgIAkJPHVsPg0KCSAgCQkJPGxpPmZyaWVuZGx5ID0gU3RhbmRhcmQtVHdpdHRlcmZvcm1hdCBpbiBkZXIgQXJ0IDxlbT4zIGRheXMgYWdvPC9lbT48L2xpPg0KCSAgCQkJPGxpPmQubS5ZIEg6bTpzIC0gRGF0ZXRpbWUgRm9ybWF0aWVydW5nIG5hY2ggPGEgaHJlZj0iaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9kYXRldGltZS5jcmVhdGVmcm9tZm9ybWF0LnBocCI+RGVmaW5pdGlvbiBwaHAubmV0PC9hPjwvbGk+DQoJICAJCTwvdWw+DQoJICAJPC9saT4NCgkgIAk8bGk+Y2FjaGV0aW1lIChvcHRpb25hbCkgLSBaZWl0IGluIE1pbnV0ZW4gaW4gd2VsY2hlciBkZXIgVHdpdHRlcmZlZWQgaW0gQ2FjaGUgYWJnZWxlZ3QgYmxlaWJ0LiBTdGFuZGFyZCAxMCBNaW51dGVuLCBtaW5pbWFsIDEgTWludXRlPC9saT4NCgkgIDwvdWw+DQoJICAJDQoJICA8cD5JbSBUZW1wbGF0ZSBzdGVoZW4gZm9sZ2VuZGUgVmFyaWFibGVuIHp1ciBWZXJmw7xndW5nOjwvcD4NCgkgIDxjb2RlPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3RleHQ8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2RhdGU8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2ltZ191cmw8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2ltZ191cmxfaHR0cHM8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3NjcmVlbm5hbWU8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3NjcmVlbm5hbWVfdXJsPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDthdXRob3I8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3NvdXJjZTxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7bG9jYXRpb248YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfY291bnQ8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfc2NyZWVubmFtZTxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmV0d2VldF9hdXRob3I8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2Zhdm9yaXRlZA0KCSAgPC9jb2RlPg0KICA8L2Rpdj4NCiAgPGRpdiBpZD0idGFpbF9jIj4NCiAgCTxoMz50YWlsIC0gYSBwaHAvanF1ZXJ5IGJhc2VkIGxvZ2dpbmcgc3lzdGVtPC9oMz4NCiAgCTxwPnRhaWwgaXMgdW5kZXIgTGludXgvVW5peCBhIGNvbnNvbGUgcHJvZ3JhbSB3aGljaCBtb25pdG9ycyBsb2dmaWxlcyBsaXZlLiBJbiBvdGhlciB3b3JkcywgaWYgYSBsaW5lIHdhcyBhZGRlZCB0byB0aGUgbG9nZmlsZSwgdGhhdCB3b3VsZCBiZSBkaXNwbGF5ZWQgaW1tZWRpYXRlbHkgd2l0aCB0YWlsLCBJZiB0aGUgbG9nZmlsZQ0KICAJaXMgbW9uaXRvcmVkLiBUaGUgdGFpbCBvZiBmdW5jdGlvbmFsaXR5IFRvb2xCb3ggcHJvdmlkZXMgYSBzaW1pbGFyIGZ1bmN0aW9uLiA8L3A+DQogIAk8aDM+SG93IGRvZXMgaXQgd29yaz88L2gzPg0KICAJPHA+Rmlyc3QsIHRoZSBsb2dmaWxlIGhhcyB0byBiZSBmZWQgd2l0aCBkYXRhLiBGb3IgdGhpcyB0aGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXM6PC9wPg0KICAJPHA+PGI+SW5zdGFsbGF0aW9uIGluIGEgbW9kdWxlLCBhIFBsdWdpbiBvciBhbiBVRFQ8L2I+PC9wPg0KICAJPHA+Rm9yIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIG11c3QgYmUgY3JlYXRlZCA6PC9wPg0KICAJPGNvZGU+CSYjMDM2O2xvZz0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUb29sQm94Jyk7PGJyIC8+DQoJCQkmIzAzNjtsb2ctPnNldExvZ0ZpbGUoJ3RiTG9nJyk7IC8vIE9wdGlvbmFsLiBIZXJlIHRoZSBuYW1lIG9mIHRoZSBsb2cgZmlsZSBjb3VsZCBiZSBzZXQ8YnIgLz4NCgkJCSYjMDM2O2xvZy0+bHdyaXRlKCJIZXJlIHdlIGNhbiB3cml0ZSBzb21ldGhpbmcgaW4gdGhlIGxvZyIpOzxiciAvPg0KCTwvY29kZT4NCiAgCQ0KCTxwPjxiciAvPkFzIHBhcmFtZXRlciB3ZSBjb3VsZCB1c2Ugbm9ybWFsIHZhcmlhYmxlcywgb2JqZWN0cyBvciBBcnJheXM8L3A+DQoJPHA+PGI+SW5zdGFsbGF0aW9uIGluIGEgdGVtcGxhdGU8L2I+PC9wPg0KICAJPHA+VGhlIGZvbGxvd2luZyBkYXkgY2FuIGJlIGluc3RhbGxlZCBpbnRvIGEgdGVtcGxhdGU6PC9wPg0KICAJPGNvZGU+e3RiV3JpdGVMb2cgbG9nPSJ3YXMgZsO8cidzIGxvZyIgbG9nRmlsZT0idGJMb2cifTwvY29kZT4NCiAgCTxwPjxiciAvPlBhcmFtZXRlcjo8L3A+DQogIAk8dWw+DQogIAk8bGk+bG9nIC0gVGV4dCB3aGljaCBoYXMgdG8gYmUgd3JpdHRlbiB0byB0aGUgbG9nIGZpbGU8L2xpPg0KICAJPGxpPltsb2dGaWxlXSAtIChvcHRpb25hbCkgSGVyZSwgeW91IGNvdWxkIGRlZmluZSB0aGUgbmFtZSBvZiB0aGUgbG9nZmlsZTwvbGk+DQogIAk8L3VsPg0KICANCiAgCTxoMz5Nb25pdG9yaW5nIHRoZSBsb2cgZmlsZTwvaDM+DQogIAk8cD5JbiB0aGUgdGFiICJ0YWlsIHNpZ24iIHRoZSBsb2cgZmlsZSBjYW4gbm93IGJlIG1vbml0b3JlZC4gVG8gc2VsZWN0IGZyb20gdGhlIGRyb3AgZG93biBib3ggdGhlIGRlc2lyZWQgbG9nLCBhcyB3ZWxsIGFzIHRoZSBudW1iZXIgb2Ygcm93cywgd2hpY2ggc2hvdWxkIGJlIGRpc3BsYXllZCBhZnRlciBsb2FkaW5nLiBQYXJhbGVsbCwgDQogIAlsb2cgZmlsZXMgY2FuIGJlIG1vbml0b3JlZC48L3A+DQogIAkNCiAgPC9kaXY+DQogIDxkaXYgaWQ9InNtYXJ0eXRvb2xzX2MiPg0KICAJPGgzPldoYXQgZmVhdHVyZXMgaGFzIHRoZSBTbWFydHktT2JqZWN0PzwvaDM+DQoJPHA+VG9vbEJveCBjb250YWlucyBpdHMgb3duIFNtYXJ0eSBDbGFzcyB0byBkaXNwbGF5IGRpZmZlcmVudCBjb250ZW50IGZlYXR1cmUsIGFzIHdlbGwgYXMgc29tZSBwbHVnLWlucyB3aGljaCBpcyBmb3IgZXhhbXBsZSBjYW4gYmUgdXNlZCB3aXRoIEFkdmFuY2VkIENvbnRlbnQuIDwvcD4NCgk8aDM+SG93IERvIEkgVXNlIEl0OjwvaDM+DQoJPHA+V2hlbiB0aGlzIG1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgbmV3IHNtYXJ0eSBvYmplY3QgbmFtZWQgY2dzaW1wbGUgaXMgYXV0b21hdGljYWxseSBhdmFpbGFibGUgdG8geW91ciBwYWdlIHRlbXBsYXRlcywgZ2xvYmFsIGNvbnRlbnQgYmxvY2tzLCBhbmQgdmFyaW91cyBtb2R1bGUgdGVtcGxhdGVzLiAgVGhpcyBzbWFydHkgb2JqZWN0IGhhcyBudW1lcm91cyBmdW5jdGlvbnMgdGhhdCB5b3UgY2FuIGNhbGwgYXQgYW55IHRpbWUuPC9wPg0KCTxoND5BdmFpbGFibGUgRnVuY3Rpb25zOjwvaDQ+DQoJPHA+Jm5ic3A7PC9wPg0KCTx1bD4NCgk8bGk+PHN0cm9uZz5zZWxmVXJsPC9zdHJvbmc+KFsmIzAzNjthc3NpZ25dKQ0KCSAgICA8cD5SZXR1cm4gdGhlIGN1cnJlbnQgVVJMPC9wPg0KCSAgICA8cD5Bcmd1bWVudHM6DQoJICAgICAgIDx1bD4NCgkgICAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gICAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCgkgICAgICA8L3VsPiAgDQoJICAgIDxici8+PC9wPg0KCSAgICA8cD5FeGFtcGxlOjxici8+DQoJICAgIDxwcmU+VGhlIHBhZ2UgVVJMIGlzICYjMTIzO3RidG9vbHM6OnNlbGZVcmwoKSYjMTI1OzwvcHJlPjxici8+DQogICAgCTwvcD4NCgk8L2xpPg0KCQ0KPGxpPjxzdHJvbmc+Z2V0UGFnZVVybDwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KCSAgICA8cD5SZXR1cm4gVVJMIG9mIGEgc3BlY2lmaWVkIHBhZ2U8L3A+DQoJCSAgIDxwPkFyZ3VtZW50cw0KCSAgICAgICA8dWw+DQoJICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byBmaW5kIHRoZSBwYXJlbnQgb2YuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgaXMgdXNlZC48L2xpPg0KCSAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQoJICAgICAgIDwvdWw+ICANCgkgICAgPGJyLz48L3A+DQoJICAgIDxwPkV4YW1wbGU6PGJyLz4NCgkgICAgPHByZT5UaGUgcGFyZW50IHBhZ2UgVVJMIGlzICYjMTIzO3RidG9vbHM6OmdldFBhZ2VVcmwoJ2hvbWUnKSYjMTI1OzwvcHJlPjxici8+DQogICAgCTwvcD4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPmlzRGVmYXVsdFBhZ2U8L3N0cm9uZz4oJiMwMzY7YWxpYXMsWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+Q2hlY2sgaWYgcGFnZSBpcyBkZWZhdWx0IHBhZ2U8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgPHVsPg0KCSAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gIFRoZSBwYWdlIGFsaWFzIG9yIHRoZSBwYWdlIGlkIHRvIGZpbmQgdGhlIHBhcmVudCBvZi4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgPC91bD4gICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT4mIzEyMztpZiB0YnRvb2xzOjppc0RlZmF1bHRQYWdlKCYjMDM2O3BhZ2VfYWxpYXMpJiMxMjU7SGVsbG8gYW5kIHdlbGNvbWUgdG8gbXkgc2l0ZSYjMTIzO2Vsc2UmIzEyNTthbm90aGVyIHBhZ2UmIzEyMzsvaWYmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KCQ0KDQo8bGk+PHN0cm9uZz5nZXRQYXJlbnRBbGlhczwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPlJldHVybnMgdGhlIGFsaWFzIG9mIHRoZSBzcGVjaWZpZWQgcGFnZXMgcGFyZW50LiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiB0aGVyZSBpcyBubyBwYXJlbnQuPC9wPg0KICAgIDxwPkFyZ3VtZW50cw0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gZmluZCB0aGUgcGFyZW50IG9mLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPlRoZSBwYXJlbnQgcGFnZSBhbGlhcyBpcyAmIzEyMzt0YnRvb2xzOjpnZXRQYXJlbnRBbGlhcygpJiMxMjU7PC9wcmU+PGJyLz4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRMZXZlbEFsaWFzPC9zdHJvbmc+KCYjMDM2O2xldmVsLFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+U3BlY2lmaWVzIHRoZSBhbGlhcyBvZiB0aGUgcGFyZW50IHNpZGUgb2YgYSBjZXJ0YWluIGJhY2suIElmIHRoZSBzcGVjaWZpZWQgbGV2ZWwgaXMgaGlnaGVyIHRoYW4gdGhhdCBvZiB0aGUgY3VycmVudCBwYWdlLCBhbiBlbXB0eSBzdHJpbmcgd291bGQgYmUgcmV0dXJuZWQuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2xldmVsICAgLSBOdW1iZXIgb2YgbGV2ZWxzIGZyb20gd2hpY2ggdGhlIGFsaWFzIGhhcyB0byBiZSByZXR1cm5lZCAoMSA9IDEuIExldmVsLCAyID0gMi4gTGV2ZWwsIGV0Yy4pPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgdGhlIHBhZ2UgYWxpYXMgb3IgSUQgb2YgdGhlIHBhZ2UsIHRoZSBwYXJlbnQgb2YgdGhlIHNwZWNpZmllZCBsZXZlbCB3aGljaCBoYXMgdG8gYmUgZm91bmQuIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSB3b3VsZCBiZSB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSwgdGhhdCB0aGUgcmVzdWx0IGhhcyB0byBiZSBhc3NpZ25lZC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT5UaGUgYWxpYXMgb2YgdGhlIHBhcmVudCBzaWRlIG9mIHRoZSBwYWdlIG9uIGxldmVsIDEgaXMgJiMxMjM7dGJ0b29sczo6Z2V0TGV2ZWxBbGlhcygxKSYjMTI1OzwvcHJlPg0KICAgIDwvcD4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPmdldFJvb3RBbGlhczwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KCTxwPlJldHVybnMgdGhlIGFsaWFzIG9mIHRoZSBzcGVjaWZpZWQgcGFnZXMgcm9vdCBwYXJlbnQuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlIGlzIG5vIHJvb3QgcGFyZW50LjwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byBmaW5kIHRoZSByb290IHBhcmVudCBvZi4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+VGhlIHJvb3QgcGFyZW50IHBhZ2UgYWxpYXMgaXMgJiMxMjM7dGJ0b29sczo6Z2V0Um9vdEFsaWFzKCkmIzEyNTs8L3ByZT48YnIvPg0KICAgIDwvcD4gICAgDQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlVGl0bGU8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCgk8cD5SZXR1cm5zIHRoZSB0aXRsZSBvZiB0aGUgc3BlY2lmaWVkIHBhZ2UuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIFRoZSBwYWdlIGFsaWFzIG9yIHRoZSBwYWdlIGlkIHRvIGZpbmQgdGhlIHRpdGxlIG9mLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gICAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+VGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IHBhZ2UgaXMgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZVRpdGxlKCkmIzEyNTs8L3ByZT48YnIvPg0KICAgIDwvcD4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPmdldFBhZ2VNZW51dGV4dDwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KCTxwPlJldHVybnMgdGhlIG1lbnV0ZXh0IG9mIHRoZSBzcGVjaWZpZWQgcGFnZS48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gZmluZCB0aGUgdGl0bGUgb2YuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgaXMgdXNlZC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAgIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT5UaGUgbWVudXRleHQgb2YgdGhlIGN1cnJlbnQgcGFnZSBpcyAmIzEyMzt0YnRvb2xzOjpnZXRQYWdlTWVudXRleHQoKSYjMTI1OzwvcHJlPjxici8+DQogICAgPC9wPiAgICANCjwvbGk+DQoNCjxsaT48c3Ryb25nPmhhc0NoaWxkcmVuPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQoJPHA+VGVzdCBpZiB0aGUgc3BlY2lmaWVkIHBhZ2UgaGFzIGNoaWxkcmVuLjwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byB0ZXN0LiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPiYjMTIzO3RidG9vbHM6Omhhc0NoaWxkcmVuKCIiLCJoYXNDaGlsZHJlbiIpJiMxMjU7DQogICAgJiMxMjM7aWYgJiMwMzY7aGFzQ2hpbGRyZW4mIzEyNTtUaGUgY3VycmVudCBwYWdlIGhhcyBjaGlsZHJlbiYjMTIzO2Vsc2UmIzEyNTtUaGUgY3VycmVudCBwYWdlIGhhcyBubyBjaGlsZHJlbiYjMTIzOy9pZiYjMTI1OzwvcHJlPjxici8+DQogICAgPC9wPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0Rmlyc3RDaGlsZEFsaWFzPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0sWyYjMDM2O29ubHlJbk1lbnVdID0gdHJ1ZSkNCiAgICA8cD5SZXR1cm4gdGhlIGFsaWFzIG9mIHRoZSBmaXJzdCBjaGlsZCBwYWdlLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byB0ZXN0LiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBwYWdlIGlzIHVzZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjtvbmx5SW5NZW51XSAtIChvcHRpb25hbCkgb25seSBhY3RpdmUgcGFnZXMgaW4gbWVudS48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT4mIzEyMzt0YnRvb2xzOjpnZXRGaXJzdENoaWxkQWxpYXMoIiIsImZpcnN0Q2hpbGRBbGlhcyIpJiMxMjU7DQogICAgCVRoZSBhbGlhcyBvZiB0aGUgZmlyc3QgY2hpbGQgcGFnZSBpcyB7JiMwMzY7Zmlyc3RDaGlsZEFsaWFzfTwvcHJlPg0KICAgIDwvcD4NCjwvbGk+DQoNCg0KPGxpPjxzdHJvbmc+Z2V0Q2hpbGRyZW48L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7c2hvd2luYWN0aXZlXSxbJiMwMzY7YXNzaWduXSkNCgk8cD5SZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBhIHBhZ2VzIGNoaWxkcmVuIChpZiBhbnkpPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIFRoZSBwYWdlIGFsaWFzIG9yIHRoZSBwYWdlIGlkIHRvIHRlc3QuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgaXMgdXNlZC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7c2hvd2luYWN0aXZlXSAtIChvcHRpb25hbCkgV2V0aGVyIGluYWN0aXZlIHBhZ2VzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IChkZWZhdWx0cyB0byBmYWxzZSkuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkZpZWxkczoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPmFsaWFzIC0gdGhlIHBhZ2UgYWxpYXMgb2YgdGhlIGNoaWxkPC9saT4NCiAgICAgICA8bGk+aWQgLSB0aGUgcGFnZSBpZCBvZiB0aGUgY2hpbGQ8L2xpPg0KICAgICAgIDxsaT50aXRsZSAtIHRoZSB0aXRsZSBwYWdlIG9mIHRoZSBjaGlsZCBwYWdlLjwvbGk+DQogICAgICAgPGxpPm1lbnV0ZXh0IC0gdGhlIG1lbnUgdGV4dCBvZiB0aGUgY2hpbGQ8L2xpPg0KICAgICAgIDxsaT5zaG93X2luX21lbnUgLSB3ZXRoZXIgdGhpcyBjaGlsZCBwYWdlIGlzIHZpc2libGUgaW4gbWVudXMuPC9saT4NCiAgICAgICA8bGk+YWN0aXZlIC0gd2V0aGVyIHRoaXMgY2hpbGQgcGFnZSBpcyBhY3RpdmUuPC9saT4NCiAgICAgICA8bGk+dHlwZSAtIFRoZSB0eXBlIG9mIGNoaWxkIGNvbnRlbnQgb2JqZWN0LjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxici8+DQogICAgPHByZT4NCiYjMTIzO3RidG9vbHM6OmdldENoaWxkcmVuKCIiLCIiLCJjaGlsZHJlbiIpJiMxMjU7DQp7aWYgY291bnQoJiMwMzY7Y2hpbGRyZW4pJiMxMjU7DQogICB7Zm9yZWFjaCBmcm9tPSYjMDM2O2NoaWxkcmVuIGl0ZW09ImNoaWxkIn0NCiAgICAgIHtpZiAmIzAzNjtjaGlsZC5zaG93X2luX21lbnV9DQogICAgICAgIENoaWxkOiAgaWQgPSAmIzEyMzsmIzAzNjtjaGlsZC5pZCYjMTI1OyBBbGlhcyA9ICYjMTIzOyYjMDM2O2NoaWxkLmFsaWFzJiMxMjU7PGJyIC8+DQogICAgICB7L2lmfQ0KICAgey9mb3JlYWNofQ0Key9pZn19DQogICAgPC9wcmU+PGJyLz4NCiAgICA8L3A+ICAgDQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlQ29udGVudDwvc3Ryb25nPigmIzAzNjthbGlhcyxbJiMwMzY7YmxvY2tdLFsmIzAzNjthc3NpZ25dKQ0KCTxwPlJldHVybnMgdGhlIHRleHQgb2YgYSBzcGVjaWZpYyBjb250ZW50IGJsb2NrIG9mIGFub3RoZXIgcGFnZS48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7YWxpYXMgLSBUaGUgcGFnZSBhbGlhcyBvciB0aGUgcGFnZSBpZCB0byBleHRyYWN0IGNvbnRlbnQgZnJvbS48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YmxvY2tdIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayBpbiB0aGUgc3BlY2lmaWVkIHBhZ2UuICBJZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHZhbHVlIG9mIHRoZSBkZWZhdWx0IGNvbnRlbnQgYmxvY2sgPGVtPihjb250ZW50X2VuKTwvZW0+IGlzIGFzc3VtZWQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbiAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+VGhlICdzZWNvbmQnIGJsb2NrIG9mIHRoZSAnYWJvdXQnIHBhZ2UgaXMgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZUNvbnRlbnQoJ2Fib3V0Jywnc2Vjb25kJywnZm9vJykmIzEyNTsmIzEyMztldmFsIHZhcj1cJGZvbyYjMTI1OzwvcHJlPjxici8+DQogICAgPC9wPiAgICANCjwvbGk+DQoNCjxsaT48c3Ryb25nPmhhc0ZldUdyb3VwQWNjZXNzPC9zdHJvbmc+KCYjMDM2O2ZldWdyb3VwcyxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5HaXZlcyBhIHRydWUvZmFsc2UgYmFjaywgaWYgdGhlIGxvZ2dlZCBGcm9udEVuZFVzZXIgaXMgYXNzaWduZWQgdG8gb25lIG9mIHRoZSBzcGVjaWZpZWQgdXNlciBncm91cHM8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7ZmV1Z3JvdXBzIC0gSURzIG9mIHRoZSB1c2VyIGdyb3Vwcy4gU2VydmFsIHVzZXIgZ3JvdXBzIHNob3VsZCBiZSBzZXBhcmF0ZWQgd2l0aCBhIGNvbW1hLiBGb3IgZXhhbXBsZTogMSwyLDQ8L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgIDxwcmU+JiMxMjM7aWYgdGJ0b29sczo6aGFzRmV1R3JvdXBBY2Nlc3MoIjEsMiwzKSYjMTI1O1VzZXIgaGFzIHBlcm1pc3Npb24mIzEyMztlbHNlJiMxMjU7VGhlIHVzZXIgaGFzIG5vIHBlcm1pc3Npb24mIzEyMzsvaWYmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KPGxpPjxzdHJvbmc+aXNMb2dnZWRJbjwvc3Ryb25nPihbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5SZXR1cm5zIHRoZSB1c2VyIElEIG9mIHRoZSBsb2dnZWQgaW4gZnJvbnQtZW5kIHVzZXI8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPiYjMTIzO2lmIHRidG9vbHM6OmlzTG9nZ2VkSW4oKSYjMTI1O1VzZXIgaXMgbG9nZ2VkIGluJiMxMjM7ZWxzZSYjMTI1O1RoZXJlIGlzIG5vIHVzZXIgbG9nZ2VkIGluJiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCjxsaT48c3Ryb25nPmdldFNpYmxpbmc8L3N0cm9uZz4oJiMwMzY7ZGlyZWN0aW9uLFsmIzAzNjthc3NpZ25dLFsmIzAzNjthbGlhc10pDQoJPHA+UmV0dXJucyB0aGUgYWxpYXMgb2YgdGhlIG5leHQgb3IgcHJldmlvdXMgc2libGluZyB0byB0aGUgc3BlY2lmaWVkDQogICAgICAgcGFnZS4gb3IgZmFsc2UuPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2RpcmVjdGlvbiAtIHRoZSBkaXJlY3Rpb24gdG8gbG9vayBpbi4gIHBvc3NpYmxlIHZhbHVlcyBhcmUgcHJldixwcmV2aW91cywtMSxuZXh0LDE8L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGFzc2lnbiB0aGUgcmVzdWx0cyB0by48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBUaGUgcGFnZSBhbGlhcyB0byBmaW5kIHRoZSBzaWJsaW5nIGZvci4gIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgPGJyLz48L3A+DQogICAgICAgPHA+RXhhbXBsZTo8YnIvPg0KICAgICAgIDxwcmU+TGluayB0byBwcmV2aW91cyBzaWJsaW5nOiAmIzEyMzt0YnRvb2xzOjpnZXRfc2libGluZygmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O3ByZXZfc2libGluZyZxdW90OykmIzEyNTsmIzEyMztpZiAhZW1wdHkoJiMwMzY7cHJldl9zaWJsaW5nKSYjMTI1OyYjMTIzO2Ntc19zZWxmbGluayBwYWdlPSZxdW90OyYjMDM2O3ByZXZfc2libGluZyZxdW90OyB0ZXh0PSZxdW90O1ByZXZpb3VzJnF1b3Q7JiMxMjU7JiMxMjM7L2lmJiMxMjU7PC9wcmU+PGJyLz4NCiAgICA8L2xpPiAgICANCjxsaT48c3Ryb25nPmdldExhc3RNb2RpZmllZDwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkxhc3QgbW9kaWZpZWQgZGF0ZSBhcyB0aW1lc3RhbXA8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgIAk8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgVGhlIHBhZ2UgYWxpYXMgb3IgdGhlIHBhZ2UgaWQgdG8gdGVzdC4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBpcyB1c2VkLjwvbGk+DQogICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgICAgPHByZT5MYXN0IE1vZGlmaWVkOiAmIzEyMzt0YnRvb2xzOjpnZXRMYXN0TW9kaWZpZWQoKXxkYXRlX2Zvcm1hdDoiJUEsICVlLiAlQiwgJVkiJiMxMjU7PC9wcmU+PGJyLz4NCjwvbGk+DQo8bGk+PHN0cm9uZz5nZXRBcnJheUFzVGFibGU8L3N0cm9uZz4oJiMwMzY7YXJyYXkpDQogICAgPHA+UmV0dXJucyBhIG11bHRpZGltZW5zaW9uYWwgYXJyYXkgYXMgYSB0YWJsZTwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT4mIzAzNjthcnJheSAtIHRoZSBhcnJheSB3aGljaCBzaG91bGQgYmUgbGF1Y2hlZCBhcyBhIHRhYmxlLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyLz4NCiAgICA8cHJlPiYjMTIzO3RidG9vbHM6OmdldEFycmF5QXNUYWJsZSgmIzAzNjthcnJheSkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCg0KDQo8L3VsPg0KPC9kaXY+DQoNCg0KPGRpdiBpZD0ibW9kaWZpZXJfYyI+DQoNCjxoMz5TbWFydHkgTW9kaWZpZXJ0PC9oMz4NCjx1bD4NCjxsaT48c3Ryb25nPnRiVHJ1bmNhdGVCZXR0ZXI8L3N0cm9uZz4oJiMwMzY7c3RyaW5nLCAmIzAzNjtsZW5ndGggPSA4MCwgJiMwMzY7ZXRjID0gJy4uLicsICYjMDM2O2xpbmsgPSAnJywgJiMwMzY7bGlua190ZXh0ID0gJycpKQ0KICAgIDxwQ3V0IGEgc3RyaW5nIHByZXNlcnZpbmcgYW55IHRhZyBuZXN0aW5nIGFuZCBtYXRjaGluZy48L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7c3RyaW5nIC0gdGV4dC48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtsZW5naHQgLSAob3B0aW9uYWwsIDgwIHN0YW5kYXJkKSBudW1iZXIgb2Ygc2lnbi48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtldGMgLSAob3B0aW9uYWwsIC4uLiBzdGFuZGFyZCkgbW9yZSB0ZXh0LjwvbGk+DQogICAgICAgPGxpPiYjMDM2O2xpbmsgLSAob3B0aW9uYWwpIExpbmsgVVJMPC9saT4NCiAgICAgICA8bGk+JiMwMzY7bGlua190ZXh0IC0gKG9wdGlvbmFsKSBsaW5rIHRleHQ8L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIEJvdGggcGFyYW1ldGVyICYjMDM2O2VudHJ5LT5jb250ZW50IHVuZCAmIzAzNjtlbnRyeS0+bW9yZWxpbmsgYXJlIGV4YW1wbGVzDQogICAgPGJyIC8+DQogICAgPHByZT4mIzEyMzsmIzAzNjtlbnRyeS0+Y29udGVudHx0YlRydW5jYXRlQmV0dGVyOjEwMDonIC4uLic6JiMwMzY7ZW50cnktPm1vcmVsaW5rOidbcmVhZCBtb3JlXScmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCjwvdWw+DQoNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJtb2JpbGVkZXRlY3RfYyI+DQoNCjxoMz5Nb2JpbGUgRGV0ZWN0PC9oMz4NCg0KPHA+PGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BocC1tb2JpbGUtZGV0ZWN0L3dpa2kvTW9iaWxlX0RldGVjdCIgdGFyZ2V0PSJfYmxhbmsiPk1vYmlsZV9EZXRlY3Q8L2E+DQogaXMgYSBsaWdodHdlaWdodCBQSFAgY2xhc3MgZm9yIGRldGVjdGluZyBtb2JpbGUgZGV2aWNlcy4gSXQgdXNlcyB0aGUgVXNlci1BZ2VudCBzdHJpbmcgY29tYmluZWQgd2l0aCANCiBzcGVjaWZpYyBIVFRQIGhlYWRlcnMgdG8gZGV0ZWN0IHRoZSBtb2JpbGUgZW52aXJvbm1lbnQuIDwvcD4NCiANCiA8aDQ+VXNhZ2U8L2g0Pg0KIDxwPjxpPkNoZWNrIGZvciBhIHNwZWNpZmljIHBsYXRmb3JtOjwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzaU9TKCkgfSANCiAgLy8gY29kZSB0byBydW4gZm9yIHRoZSBBcHBsZSBpT1MgcGxhdGZvcm0uIA0Key9pZn0gDQogPC9wcmU+IDwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzQW5kcm9pZE9TKCkgfSANCiAgLy8gY29kZSB0byBydW4gZm9yIHRoZSBHb29nbGUgQW5kcm9pZCBwbGF0Zm9ybS4gDQp7L2lmfQ0KPC9wcmU+PC9wPg0KDQogPHA+T3RoZXIgY2FzZSBpbnNlbnNpdGl2ZSBhdmFpbGFibGUgbWV0aG9kcyBhcmUgaXNJcGhvbmUoKSwgaXNJcGFkKCksIGlzQmxhY2tCZXJyeSgpLCBpc0tpbmRsZSgpLCBpc09wZXJhKCksIGV0Yy4gRm9yIHRoZSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG1ldGhvZHMgPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BocC1tb2JpbGUtZGV0ZWN0L3dpa2kvTW9iaWxlX0RldGVjdCIgdGFyZ2V0PV9ibGFuayI+Y2hlY2sgdGhlIHdpa2kuPC9hPjwvcD4NCg0KPHA+QWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgdG8gc2VlIGlmIHRoZSB1c2VyIGlzIHVzaW5nIGEgbW9iaWxlIGRldmljZSwgd2l0aG91dCBjYXJpbmcgZm9yIHNwZWNpZmljIHBsYXRmb3JtOjwvcD4NCjxwPjxwcmU+DQp7aWYgKCYjMDM2O3RibW9iaWxlLT5pc01vYmlsZSgpKX0NCiAgLy8gYW55IG1vYmlsZSBwbGF0Zm9ybQ0Key9pZn0NCjwvcHJlPjwvcD4NCjxwPjxwcmU+DQp7aWYoJiMwMzY7dGJtb2JpbGUtPmlzVGFibGV0KCkpfQ0KICAvLyBhbnkgdGFibGV0DQp7L2lmfQ0KPC9wcmU+PC9wPg0KDQoNCgkNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJwbHVnaW5zX2MiPg0KDQo8aDM+UGx1Z2luczwvaDM+DQo8cD48Yj5HZW5lcmFsIFBsdWdpbnM8L2I+PC9wPg0KPHA+Jm5ic3A7PC9wPg0KPHVsPg0KDQogPGxpPjxzdHJvbmc+e3RiU2Vzc2lvblNldH08L3N0cm9uZz4NCiAgICA8cD5BIHNtYXJ0eSBwbHVnaW4gdGhhdCBjYW4gc3RvcmUgZGF0YSBpbiB0aGUgdXNlciBzZXNzaW9uLiBUaGlzIGRhdGEgaXMgdGhlbiBhY2Nlc3NpYmxlIHZpYSB0aGUgJiMwMzY7c21hcnR5LnNlc3Npb24gYXJyYXkgaW4gc3Vic2VxdWVudCBwYWdlcy48L3A+DQogICAgPHA+QXJndW1lbnRzOjwvcD4NCiAgICAgICA8dWw+DQogICAgICAgPGxpPm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gY3JlYXRlIGluIHRoZSBzZXNzaW9uLjwvbGk+DQogICAgICAgPGxpPnZhbHVlIC0gVGhlIGRlc2lyZWQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxiciAvPg0KICAgIDxwcmU+e3RiU2Vzc2lvblNldCBuYW1lPSZxdW90O3Rlc3QmcXVvdDsgdmFsdWU9JnF1b3Q7YmxhaCZxdW90O308L3ByZT48L3A+DQogPC9saT4NCg0KIDxsaT48c3Ryb25nPiYjMTIzO3RiU2Vzc2lvblVuc2V0JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+QSBzbWFydHkgcGx1Z2luIHRoYXQgY2FuIGVyYXNlIGRhdGEgZnJvbSB0aGUgdXNlciBzZXNzaW9uLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGVyYXNlIGluIHRoZSBzZXNzaW9uLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5FeGFtcGxlOjxiciAvPg0KICAgIDxwcmU+JiMxMjM7dGJTZXNzaW9uVW5zZXQgbmFtZT0mcXVvdDt0ZXN0JnF1b3Q7JiMxMjU7PC9wcmU+PC9wPg0KIDwvbGk+DQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJWYXJFeHBvcnQmIzEyNTs8L3N0cm9uZz4NCiAgICA8cD5XaXRoIHRoaXMgcGx1Z2luIGFuIGFycmF5IGNhbiBiZSBwcmVwYXJlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIGZvciBleHBvcnRzLiBUaGUgZ2VyZXJhdGVkIHRleHQgaXMgc2VyaWFsaXplZCBhbmQgY2FuIGJlIGluc2VydGVkIGluIGEgZGlmZmVyZW50IHBsYWNlIG9mIHRoZSBlbnZpcm9ubWVudCBpbmRlcGVuZGVudGx5LjxiciAvPg0KICAgIEFkdmFudGFnZSBvZiB0aGlzIG1ldGhvZCBpcywgdGhhdCBhIHByb2JsZW0gaW5jbHVkaW5nIHRoZSB1c2VkIGRhdGEgLCBjYW4gYmUgcmVjb25zdHJ1Y3RlZCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiwgd2l0aG91dCB0aGUgZW50aXJlIGVudmlyb25tZW50IG11c3QgYmUgcmVjcmVhdGVkLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gTmFtZSBvZiB0aGUgdmFyaWFibGUgdGhhdCBzaG91bGQgYmUgZXhwb3J0ZWQuPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YlZhckV4cG9ydCBuYW1lPSZxdW90O2l0ZW1zJnF1b3Q7JiMxMjU7PC9wcmU+PC9wPg0KIDwvbGk+DQogPC91bD4NCiANCiA8cD48Yj5Ub29sQm94IGZ1bmN0aW9uYWxpdGllczwvYj48L3A+DQogPHA+Jm5ic3A7PC9wPg0KIDx1bD4NCiA8bGk+PHN0cm9uZz4mIzEyMzt0YldyaXRlTG9nJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIFBsdWdpbiBhIHN0cmluZywgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGNhbiBiZSB3cml0dGVuIGluIHRoZSB0YWlsIGxvZyBvZiB0aGUgdG9vbCBib3ggaW4gYSBUZW1wbGF0ZSBvciBvbiBhIHNpZGUuIFRoaXMgUGx1Z2luIGlzIGludGVyZXN0aW5nIGZvciBkZWJ1Z2dpbmcgb2YgcHVycG9zZXMgb3IgdG8gbW9uaXRvciBkaWZmZXJlbnQgYWN0aW9ucy4gPC9wPg0KICAgIDxwPkFyZ3VtZW50czoNCiAgICAgICA8dWw+DQogICAgICAgPGxpPmxvZyAtIFRoZSB0ZXh0IHdoaWNoIHNob3VsZCBiZSB3cml0dGVuIGluIHRoZSBsb2cgZmlsZSAoY291bGQgYmUgYSBzdHJpbmcsIGFuIGFycmF5IG9yIGFuIG9iamVjdCkuPC9saT4NCiAgICAgICA8bGk+W2xvZ0ZpbGVdIC0gKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiB0aGUgbG9nIGZpbGUgd2hpY2ggdGhlIHRleHQgc2hvdWxkIGJlIHdyaXR0ZW4uPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkV4YW1wbGU6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YldyaXRlTG9nIGxvZz0id2hpY2ggZm9yIHRoZSBsb2ciIGxvZ0ZpbGU9InRiTG9nIjsmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQogPC9saT4gDQogPC91bD4NCiANCiANCiA8cD48Yj5QbHVnaW5zIGZvciBBZHZhbmNlZENvbnRlbnQ8L2I+PC9wPg0KIDxwPiZuYnNwOzwvcD4NCiA8dWw+DQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRQYWdlSGllcmFyY2h5JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIFBsdWdpbiB0aGUgZW50aXJlIHNpZGUgaGllcmFyY2h5IGNhbiBiZSByZXByZXNlbnRlZC4gVGhlIGVtcGxveW1lbnQgb2YgdGhpcyBQbHVnaW4gaXMgcHJhY3RpY2FsIGluIGNvbm5lY3Rpb24gd2l0aCBBZHZhbmNlZENvbnRlbnQuIFNvIHRoYXQgYSBkcm9wIGRvd24gZmllbGQgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGggYWxsIFBhZ2VzIGluIHRoZSBBZGNhbmNlZCBDb250ZW50IDwvcD4NCiAgICA8cD5Bcmd1bWVudHM6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bYXNzaWduXSAtIChvcHRpb25hbCkgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0byBhc3NpZ24gdGhlIHJlc3VsdHMgdG8uPC9saT4NCiAgICAgICA8bGk+W2RlbGltaXRlcl0gLSAob3B0aW9uYWwpIFNlcGFyYXRvciBiZXR3ZWVuIHRoZSBlbnRyaWVzLiBTdGFuZGFyZDogfC48L2xpPg0KICAgICAgIDxsaT5bb3V0cHV0XSAtIChvcHRpb25hbCkgd2l0aCBvdXRwdXQ9ImlkIiBhbGwgY29udGVudCBJRHMgaXNzdWVkLiBPdGhlcndpc2UsIHRoZSBtZW51IHRleHQgaXMgZGlzcGxheWVkLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiR2V0UGFnZUhpZXJhcmNoeSBvdXRwdXQ9ImlkIjsmIzEyNTs8L3ByZT48YnIgLz4NCiAgICA8cHJlPiYjMTIzO0FkdmFuY2VkQ29udGVudCBsYWJlbD0iU2VpdGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldFBhZ2VIaWVyYXJjaHk6OjoiIHZhbHVlcz0iOjo6dGJHZXRQYWdlSGllcmFyY2h5IG91dHB1dD0naWQnOjo6IiBzbWFydHk9dHJ1ZSAmIzEyNTs8L3A+DQogPC9saT4gDQogDQogIDxsaT48c3Ryb25nPiYjMTIzO3RiR2V0TmV3c0NhdGVnb3JpZXMmIzEyNTs8L3N0cm9uZz4NCiAgICA8cD5XaXRoIHRoaXMgcGx1Z2luLCBhbGwgbmV3cyBjYXRlZ29yaWVzIGFyZSBpc3N1ZWQuIFByYWN0aWNhbGx5LCB0aGUgdXNlIG9mIHRoaXMgcGx1Z2luIGluIGNvbmp1bmN0aW9uIHdpdGggQWR2YW5jZWQgY29udGVudC4gVGh1cywgaW4gYSBNdWx0aXBsZSBTZWxlY3QgZmllbGQgdGhlIGRlc2lyZWQgbmV3IGNhdGVnb3JpZXMgY291bGQgYmUgc2VsZWN0ZWQ8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPGxpPltkZWxpbWl0ZXJdIC0gKG9wdGlvbmFsKSBTZXBhcmF0b3IgYmV0d2VlbiB0aGUgZW50cmllcy4gU3RhbmRhcmQ6IHwuPC9saT4NCiAgICAgICA8bGk+W291dHB1dF0gLSAob3B0aW9uYWwpIHdpdGggb3V0cHV0PSJpZCIgYWxsIGNvbnRlbnQgSURzIGlzc3VlZC4gT3RoZXJ3aXNlLCB0aGUgbWVudSB0ZXh0IGlzIGRpc3BsYXllZC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldE5ld3NDYXRlZ29yaWVzOyYjMTI1OzwvcHJlPjxiciAvPg0KICAgIDxwcmU+JiMxMjM7QWR2YW5jZWRDb250ZW50IGJsb2NrPSJuZXdzIiBsYWJlbD0iTmV3cyBLYXRlZ29yaWVuLiIgYmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldE5ld3NDYXRlZ29yaWVzOjo6IiBzbWFydHk9dHJ1ZSAmIzEyNTs8L3A+DQogPC9saT4gDQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRVc2VyR3JvdXBzJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+V2l0aCB0aGlzIHBsdWdpbiwgYWxsIG5ld3MgY2F0ZWdvcmllcyBjb3VsZCBiZSBpc3N1ZWQuIFByYWN0aWNhbGx5LCB0aGUgdXNlIG9mIHRoaXMgcGx1Z2luIGluIGNvbmp1bmN0aW9uIHdpdGggQWR2YW5jZWQgY29udGVudC4gVGh1cywgaW4gYSBNdWx0aXBsZSBTZWxlY3QgZmllbGQgdGhlIGRlc2lyZWQgbmV3IGNhdGVnb3JpZXMgY291bGQgYmUgc2VsZWN0ZWQ8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdG8gYXNzaWduIHRoZSByZXN1bHRzIHRvLjwvbGk+DQogICAgICAgPGxpPltncm91cHNfb25seV0gLSAob3B0aW9uYWwpIERpc3BsYXlzIG9ubHkgdGhlIHVzZXIgZ3JvdXBzIChpbmRpdmlkdWFsIHVzZXJzIHdpbGwgbm90IGJlIHNob3duKTwvbGk+DQogICAgICAgPGxpPltkZWxpbWl0ZXJdIC0gKG9wdGlvbmFsKSBTZXBhcmF0b3IgYmV0d2VlbiB0aGUgZW50cmllcy4gU3RhbmRhcmQ6IHwuPC9saT4NCiAgICAgICA8bGk+W291dHB1dF0gLSAob3B0aW9uYWwpIHdpdGggb3V0cHV0PSJpZCIgYWxsIGNvbnRlbnQgSURzIGlzc3VlZC4gT3RoZXJ3aXNlLCB0aGUgbWVudSB0ZXh0IGlzIGRpc3BsYXllZC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldFVzZXJHcm91cHM7JiMxMjU7PC9wcmU+PGJyIC8+DQogICAgPHByZT4mIzEyMztBZHZhbmNlZENvbnRlbnQgYmxvY2s9ImVkaXRvcnMiIGxhYmVsPSJVc2VycyB3aG8gYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGVzZSBwYWdlcyIgYmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldFVzZXJHcm91cHMgZ3JvdXBzX29ubHk9dHJ1ZTo6OiIgdmFsdWVzPSI6Ojp0YkdldFVzZXJHcm91cHMgZ3JvdXBzX29ubHk9dHJ1ZSBvdXRwdXQ9J2lkJzo6OiIgc21hcnR5PXRydWUgJiMxMjU7PC9wPg0KIDwvbGk+IA0KDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRHYWxsZXJ5VHJlZSYjMTI1Ozwvc3Ryb25nPg0KICAgIDxwPk1pdCBkaWVzZW0gUGx1Z2luIGvDtm5uZW4gYWxsZSBHYWxsZXJ5IE9yZG5lciAoTW9kdWwgR2FsbGVyeSkgYXVzZ2VnZWJlbiB3ZXJkZW4uIFByYWt0aXNjaCBpc3QgZGVyIEVpbnNhdHogZGllc2VzIFBsdWdpbiBpbiBWZXJiaW5kdW5nIG1pdCBBZHZhbmNlZENvbnRlbnQuIFNvIGvDtm5uZW4gZGllIEdhbGxlcnlzIGluIGVpbmVtIERyb3Bkb3duIEZlbGQgYXVzZ2VnZWJlbiB3ZXJkZW4uPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPltzdWJkaXJdIC0gKG9wdGlvbmFsKSBVbnRlcm9yZG5lciBkZXIgR2FsbGVyeSBhYiB3ZWxjaGVtIGFsbGVyIGVudGhhbHRlbmVuIE9yZG5lciBhdWZnZWxpc3RldCB3ZXJkZW4gc29sbGVuIC48L2xpPg0KICAgICAgIDxsaT5bYWN0aW9uXSAtIChvcHRpb25hbCkgPHVsPg0KICAgICAgIAkJCQkJCQkJPGxpPmFjdGlvbj0idXJsIiAtPiBQZmFkIHp1bSBPcmRuZXI8L2xpPg0KICAgICAgIAkJCQkJCQkJPGxpPiBhY3Rpb24gPSAiIiAtPiBQZmFkIGRlcyBPcmRuZXJzIGlua2wuIEJpbGRhbnphaGw8L2xpPg0KICAgICAgIAkJCQkJCQk8L3VsPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldEdhbGxlcnlUcmVlJiMxMjU7PC9wcmU+PGJyIC8+DQogICAgPHByZT4mIzEyMztBZHZhbmNlZENvbnRlbnQgYmxvY2s9ImdhbGxlcnkiIGxhYmVsPSJHYWxsZXJ5IiBibG9ja190eXBlPSJkcm9wZG93biIgYWxsb3dfbm9uZT10cnVlIGl0ZW1zPSJLZWluZSBHYWxsZXJ5fDo6OnRiR2V0R2FsbGVyeVRyZWUgOjo6IiB2YWx1ZXM9Inw6Ojp0YkdldEdhbGxlcnlUcmVlIGFjdGlvbj0ndXJsJzo6OiIgc21hcnR5PWJhY2tlbmQgYXNzaWduPSJidEdhbGxlcnlQYXRoIiBub19jb2xsYXBzZT10cnVlICYjMTI1OzwvcHJlPjwvcD4NCiAgICANCiA8L2xpPiAgDQogDQo8L3VsPg0KICANCjwvZGl2Pg0KPC9kaXY+DQpFT1Q7DQoNCiRsYW5nWydoZWxwX3RiaW1hZ2UnXSA9IDw8PEVPVA0KDQo8cHJlPiYjMTIzO3RiSW1hZ2UgaW1hZ2U9Ii9wYXRoL3RvL2ltYWdlLmpwZyIgcmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWw9IjIwMCImIzEyNTs8L3ByZT4NCg0KPGgzPlBhcmFtZXRlcjwvaDM+DQoNCjxoND5CaWxkZWluc3RlbGx1bmdlbjwvaDQ+DQoNCjx1bD4NCjxsaT5baW1hZ2VdIC0gUGZhZCB6dW0gQmlsZC4gRGllc2VyIGthbm4gcmVsYXRpdiB6dW0gUm9vdCwgYWxzIGFic29sdXRlciBQZmFkIG9kZXIgYWxzIFVSTCDDvGJlcmdlYmVuIHdlcmRlbiA8L2xpPg0KPGxpPlZlcsOkbmRlcnVuZyBkZXIgR3LDtnNzZSB3w6RobGVuLiBFcyBrYW5uIGpld2VpbHMgbnVyIGVpbiBQYXJhbWV0ZXIgZ2xlaWNoemVpdGlnIGVpbmdlc2V0enQgd2VyZGVuOg0KPHVsPg0KCTxsaT5bcmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbF0gLSBEYXMgQmlsZCBuYWNoIGRlciBrw7xyemVyZW4gU2VpdGUgaW4gUGl4ZWwgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPltyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnRdIC0gRGFzIEJpbGQgbmFjaCBkZXIga8O8cnplcmVuIFNlaXRlIGluIFByb3plbnQgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPltyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbF0gLSBEYXMgQmlsZCBuYWNoIGRlciBsw6RuZ2VyZW4gU2VpdGUgaW4gUGl4ZWwgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPltyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50XSAtIERhcyBCaWxkIG5hY2ggZGVyIGzDpG5nZXJlbiBTZWl0ZSBpbiBQcm96ZW50IHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KPC91bD4NCjwvbGk+DQo8bGk+QXVzc2Nobml0dCBkZXMgQmlsZGVzIGluIFBpeGVsIG1pdCBQb3NpdGlvbg0KPHVsPg0KCTxsaT5bd2lkdGhdIC0gKG9wdGlvbmFsKSBCcmVpdGUgZGVzIEJpbGRhdXNzY2huaXR0czwvbGk+DQoJPGxpPltoZWlnaHRdIC0gKG9wdGlvbmFsKSBIw7ZoZSBkZXMgQmlsZGF1c3NjaG5pdHRzIDwvbGk+DQoJPGxpPltwb3NdIC0gKG9wdGlvbmFsKSBQb3NpdGlvbiBkZXMgQXVzc2Nobml0dHMuIE3DtmdsaWNoZSBQYXJhbWV0ZXIgKERldGFpbHMgc2llaGUgUmVpdGVyICJXYXNzZXJ6ZWljaGVuIG1pdCBCaWxkIik6DQoJCTx1bD4NCgkJCTxsaT5MVCA9IGxpbmtzIG9iZW48L2xpPg0KCQkJPGxpPk1UID0gbWl0dGUgb2JlbjwvbGk+DQoJCQk8bGk+UlQgPSByZWNodHMgb2JlbjwvbGk+DQoJCQk8bGk+TE0gPSBsaW5rcyBtaXR0ZTwvbGk+DQoJCQk8bGk+TU0gPSBtaXR0ZSBtaXR0ZTwvbGk+DQoJCQk8bGk+Uk0gPSByZWNodHMgbWl0dGU8L2xpPg0KCQkJPGxpPkxCID0gbGlua3MgdW50ZW48L2xpPg0KCQkJPGxpPk1CID0gbWl0dGUgdW50ZW48L2xpPg0KCQkJPGxpPlJCID0gcmVjaHRzIHVudGVuPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT5bcG9zeF0gLSAob3B0aW9uYWwpIFBvc2l0aW9uIGRlcyBBdXNzY2huaXR0cyBpbiBYIDwvbGk+DQoJPGxpPltwb3N5XSAtIChvcHRpb25hbCkgUG9zaXRpb24gZGVzIEF1c3NjaG5pdHRzIGluIFkgPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPltwcm9wb3J0aW9uXSAtIChvcHRpb25hbCkgUHJvcG9ydGlvbmVuIGRlcyBCaWxkZXMgZXJoYWx0ZW48L2xpPg0KPGxpPltxdWFsaXR5XSAtIChvcHRpb25hbCkgUXVhbGl0w6R0IGRlciBKUEcgS29tcHJpbWllcnVuZy4gU3RhbmRhcmQgODU8L2xpPg0KPGxpPltmaWx0ZXJdIC0gKG9wdGlvbmFsKSBGaWx0ZXJlaW5zdGVsbHVuZ2VuLCBEZXRhaWxzIHNpZWhlIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5pbWFnZWZpbHRlci5waHAiPlBIUCBXZWJzZWl0ZTwvYT48L2xpPg0KPGxpPltvcGFjaXR5XSAtIChvcHRpb25hbCkgRGVja2tyYWZ0IGRlcyBCaWxkZXMgPC9saT4NCjxsaT5bZmxpcF0gLSAob3B0aW9uYWwpIERyZWhlbiBkZXMgQmlsZGVzIGluIEdyYWQ8L2xpPg0KPC91bD4NCg0KPGg0PkFsbGdlbWVpbmUgRWluc3RlbGx1bmdlbjwvaDQ+DQoNCjx1bD4NCjxsaT5bYXNzaWduXSAtIChvcHRpb25hbCkgQWxzIFLDvGNrZ2FiZXdlcnQgZWluZXIgVmFyaWFibGVuIHp1d2Vpc2VuPC9saT4NCjxsaT5bbm9fdGFnXSAtIChvcHRpb25hbCkgQWxzIFLDvGNrZ2FiZXdlcnQgd2lyZCBudXIgZGllIHJlaW5lIEJpbGQtVVJMIG9obmUgaW1nIFRhZyB6dXLDvGNrZ2VnZWJlbjwvbGk+DQo8bGk+W25vX291dHB1dF0gLSAob3B0aW9uYWwpIE51ciBkaWUgR3LDtnNzZW7DpG5kZXJ1bmcgd2lyZCBhdXNnZWbDvGhydC4gS2VpbiBSw7xja2dhYmV3ZXJ0PC9saT4NCjxsaT5bZGVidWddIC0gKG9wdGlvbmFsKSBBdXNnYWJlIGRlciBEZXRhaWxzIGRlciBCaWxkdmVyYXJiZWl0dW5nPC9saT4NCjxsaT5bY2xhc3NdIC0gKG9wdGlvbmFsKSBDU1MgS2xhc3NlIGRpZSBkZW0gaW1nIFRhZyB6dWdlb3JkbmV0IHdpcmQ8L2xpPg0KPGxpPlthbHRdIC0gKG9wdGlvbmFsKSBBbHQgVGV4dCBkZXIgZGVtIGltZyBUYWcgenVnZW9yZG5ldCB3aXJkPC9saT4NCjxsaT5baWRdIC0gKG9wdGlvbmFsKSBDU1MgSUQgZGllIGRlbSBpbWcgVGFnIHp1Z2VvcmRuZXQgd2lyZDwvbGk+DQo8bGk+W3RpdGxlXSAtIChvcHRpb25hbCkgVGl0bGUgVGV4dCBkZXIgZGVtIGltZyBUYWcgenVnZW9yZG5ldCB3aXJkPC9saT4NCjxsaT5bc3R5bGVdIC0gKG9wdGlvbmFsKSBTdHlsZS1UYWcgZGVyIGRlbSBpbWcgVGFnIHp1Z2VvcmRuZXQgd2lyZDwvbGk+DQo8L3VsPg0KDQo8aDQ+QXV0b0xpZ2h0Ym94PC9oND4NCjx1bD4NCjxsaT5bYXV0b2xpZ2h0Ym94XSAtIChvcHRpb25hbCkgT3JpZ2luYWwgZGVzIEJpbGRlcyBhbHMgQXV0b0xpZ2h0Ym94IFZlcmtuw7xwZnVuZyBlaW5iaW5kZW4gKG51ciB3ZW5uIGRpZSBBdXRvTGlnaHRCb3ggYWt0aXYgaXN0KSA8L2xpPg0KPGxpPkdyw7Zzc2UgZGVzIE9yaWdpbmFsYmlsZGVzLiBXZXJkZW4gZGllc2UgUGFyYW1ldGVyIGxlZXIgZ2VsYXNzZW4sIHNvIHdpcmQgZGFzIE9yaWdpbmFsYmlsZCB2ZXJsaW5rdA0KPHVsPg0KCTxsaT5bYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QaXhlbF0gLSBEYXMgQmlsZCBuYWNoIGRlciBrw7xyemVyZW4gU2VpdGUgaW4gUGl4ZWwgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPlthbGJyZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnRdIC0gRGFzIEJpbGQgbmFjaCBkZXIga8O8cnplcmVuIFNlaXRlIGluIFByb3plbnQgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPlthbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbF0gLSBEYXMgQmlsZCBuYWNoIGRlciBsw6RuZ2VyZW4gU2VpdGUgaW4gUGl4ZWwgdmVya2xlaW5lcm4vdmVyZ3LDtnNzZXJuIDwvbGk+DQoJPGxpPlthbGJyZXNpemVCeUxhcmdlc3RTaWRlSW5QZXJjZW50XSAtIERhcyBCaWxkIG5hY2ggZGVyIGzDpG5nZXJlbiBTZWl0ZSBpbiBQcm96ZW50IHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KPC91bD4NCjwvdWw+DQoNCjxoND5XYXNzZXJ6ZWljaGVuPC9oND4NCg0KPHVsPg0KPGxpPlt3YXRlcm1hcmtdIC0gKG9wdGlvbmFsKSBtw7ZnbGljaGUgUGFyYW1ldGVyOiB3YXRlcm1hcms9ImltYWdlIiAtIGRpZSBFaW5zdGVsbHVuZ2VuIHNpbmQgaW0gUmVpdGVyICJXYXNzZXJ6ZWljaGVuIG1pdCBCaWxkIiB6dSBmaW5kZW48L2xpPg0KPC91bD4NCg0KRU9UOw0KDQoNCiMgSQ0KJGxhbmdbJ2lkJ10gPSAnSUQnOw0KJGxhbmdbJ2lnbm9yZSddID0gJ0lnbm9yZSc7DQokbGFuZ1snaWdub3JlbGlzdCddID0gJ0lnbm9yZSBsaXN0aW5nJzsNCiRsYW5nWydpbmFjdGl2ZSddID0gJ0luYWN0aXZlJzsNCiRsYW5nWydpbnN0YWxsZWQnXSA9ICdpbnN0YWxsZWQnOw0KJGxhbmdbJ2lwJ10gPSAnSVAgTnVtYmVyJzsNCiRsYW5nWydpdXJsJ10gPSAnVVJMIHRvIGlnbm9yZSc7DQokbGFuZ1snaW1wb3J0eG1sX3RpdGxlJ10gPSAnSW1wb3J0IHRlbXBsYXRlIHZpYSBYTUwgZmlsZSc7DQokbGFuZ1snaW1wb3J0eG1sbm90ZSddID0gJ09ubHkgVG9vbEJveCBYTUwgZmlsZXMgYXJlIGFsbG93ZWQnOw0KJGxhbmdbJ2ltcG9ydHhtbCddID0gJ0ltcG9ydCB0ZW1wbGF0ZSBYTUwnOw0KJGxhbmdbJ2ltcG9ydHhtbG5vdGUnXSA9ICdYTUwgZmlsZXMgY29udGFpbmluZyB2YXJpb3VzIFRvb2xCb3ggdGVtcGxhdGVzIGNhbiBiZSBmb3VuZCBhdCB0aGUgTW9kdWxlIEZvcmdlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdC9maWxlcy8xMDc1IiB0YXJnZXQ9Il9ibGFuayI+VG9vbEJveCBwYWdlPC9hPi4gUmVhZCB0aGUgcmVsZWFzZS1ub3RlcyBiZWZvcmUgdXBsb2FkaW5nISc7DQoNCg0KIyBKDQoNCiMgSw0KJGxhbmdbJ2tleXdvcmQnXSA9ICdLZXl3b3JkJzsNCg0KIyBMDQokbGFuZ1snbGlua3ZhbHVlJ10gPSAnVHlwZSBvZiByZXR1cm4gdmFsdWUgb2YgdGhlIGxpbmsnOw0KDQojIE0NCiRsYW5nWydtYWluJ10gPSAnTWFpbic7DQokbGFuZ1snbWFrZWFjdGl2ZSddID0gJ0FjdGl2YXRlJzsNCiRsYW5nWydtYWtlaW5hY3RpdmUnXSA9ICdEZWFjdGl2YXRlJzsNCiRsYW5nWydtYW51YWwnXSA9ICdNYW51YWwnOw0KJGxhbmdbJ21heF80MDQnXSA9ICdNYXguIEVycm9ycyc7DQokbGFuZ1snbWF4XzQwNF9oZWxwJ10gPSAnU2V0IGhvdyBtYW55IGVycm9ycyBzaG91bGQgYmUgbG9nZ2VkIChtYXguKSc7DQokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdUaGlzIG1vZHVsZSBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgd2hpY2ggbWF5IGJlIHVzZWZ1bCBmb3Igd2VibWFzdGVyczogQXV0b0xpZ2h0Qm94LCBTb2NpYWxTaGFyZVByaXZhY3ksIFR3aXR0ZXJmZWVkLCAzMDEtUmVkaXJlY3RzLCA0MDQtRXJyb3ItVHJhY2tpbmcnOw0KJGxhbmdbJ21vZGlmaWVkJ10gPSAnTGFzdCB0aW1lJzsNCiRsYW5nWydtb250aCddID0gJ01vbnRoJzsNCiRsYW5nWydtb250aHMnXSA9ICdNb250aHMnOw0KJGxhbmdbJ2ltcG9ydF9tdWx0aWRvbWFpbnMnXSA9ICdJbXBvcnQgZGF0YSBmcm9tIHRoZSBtb2R1bGUgTXVsdGlEb21haW5zJzsNCiRsYW5nWydpbXBvcnRfbXVsdGlkb21haW5zX2hlbHAnXSA9ICdBdHRlbnRpb246IFRoZSBkYXRhIGltcG9ydCBmcm9tIE11bHRpRG9tYWlucyB3YXMgYWxyZWFkeSBkb25lICglcyB0aW1lcykhISEnOw0KJGxhbmdbJ2Ryb3BfbXVsdGlkb21haW5zJ10gPSAnRHJvcCB0YWJsZXMgZnJvbSBvbGQgTXVsdGlEb21haW5zIG1vZHVsZT8nOw0KJGxhbmdbJ21haW5fZXZlbnRfaGFuZGxlcl9hY3RpdmUnXSA9ICdUb29sQm94IGlzIGFjdGl2ZSBpbiB0aGUgZXZlbnQgaGFuZGxlcic7DQokbGFuZ1snbWFpbl9ldmVudF9oYW5kbGVyX2luYWN0aXZlJ10gPSAnVGhlIHRvb2wgYm94IG11c3QgYmUgYWN0aXZhdGVkIGluIHRoZSBUZW1wbGF0ZSB3aXRoIHtUb29sQm94fSc7DQokbGFuZ1snbWFpbl9zdGF0c19hY3RpdmUnXSA9ICdTdGF0aXN0aWNzJzsNCiRsYW5nWydtYWluX3N0YXRzX2luYWN0aXZlJ10gPSAnU3RhdGlzdGljcyc7DQokbGFuZ1snbWFpbl9zdGF0c180MDRfYWN0aXZlJ10gPSAnNDA0IEVycm9yIFRyYWNraW5nJzsJCQ0KJGxhbmdbJ21haW5fc3RhdHNfNDA0X2luYWN0aXZlJ10gPSAnNDA0IEVycm9yIFRyYWNraW5nJzsNCiRsYW5nWydtYWluX29sZHVybF9hY3RpdmUnXSA9ICdVUkwgcmVkaXJlY3RzJzsNCiRsYW5nWydtYWluX29sZHVybF9pbmFjdGl2ZSddID0gJ1VSTCByZWRpcmVjdHMnOw0KJGxhbmdbJ21haW5fYXV0b2xpZ2h0Ym94X2FjdGl2ZSddID0gJ0F1dG9MaWdodEJveCc7DQokbGFuZ1snbWFpbl9hdXRvbGlnaHRib3hfaW5hY3RpdmUnXSA9ICdBdXRvTGlnaHRCb3gnOw0KJGxhbmdbJ21haW5fc29jaWFsc2hhcmVwcml2YWN5X2FjdGl2ZSddID0gJ1NvY2lhbFNoYXJlUHJpdmFjeSc7DQokbGFuZ1snbWFpbl9zb2NpYWxzaGFyZXByaXZhY3lfaW5hY3RpdmUnXSA9ICdTb2NpYWxTaGFyZVByaXZhY3knOw0KJGxhbmdbJ21haW5fdGFpbF9hY3RpdmUnXSA9ICd0YWlsIExvZyBmdW5jdGlvbmFsaXR5JzsNCiRsYW5nWydtYWluX3RhaWxfaW5hY3RpdmUnXSA9ICd0YWlsIExvZyBmdW5jdGlvbmFsaXR5JzsNCiRsYW5nWydtYWluX2RlYnVnX2FjdGl2ZSddID0gJ0RlYnVnZ2luZyc7DQokbGFuZ1snbWFpbl9kZWJ1Z19pbmFjdGl2ZSddID0gJ0RlYnVnZ2luZyc7DQokbGFuZ1snbWFpbl9zbWFydHlwbHVnaW5zX2FjdGl2ZSddID0gJ1NtYXJ0eSBQbHVnaW4gJHRidG9vbHMgaXMgYWN0aXZlJzsNCiRsYW5nWydtYWluX21vYmlsZWRldGVjdF9hY3RpdmUnXSA9ICdTbWFydHkgUGx1Z2luICR0Ym1vYmlsZSBpcyBhY3RpdmUgLSBkZXRlY3QgbW9iaWxlIGRldmljZXMnOw0KJGxhbmdbJ21haW5fZnVuY3Rpb25zX2FjdGl2ZSddID0gJ1RoZSBUb29sYm94IHBsdWdpbnMgYXJlIGF2YWlsYWJsZSc7DQokbGFuZ1snbWFpbl9mdW5jdGlvbnNfYWN0aXZlJ10gPSAnVGhlIFRvb2xib3ggbW9kaWZpZXIgYXJlIGF2YWlsYWJsZSc7DQokbGFuZ1snbW9kdWxlb3BzJ10gPSAnTW9kdWxlIE9wZXJhdGlvbnMnOw0KJGxhbmdbJ21vZHVsZW9wc191c2UnXSA9ICd1c2UgTW9kdWxlIE9wZXJhdGlvbnMgLT4gYmFja3VwIGFuZCByZWNvdmVyeSBvZiBtb2R1bGUgcHJlZmVyZW5jZXMnOw0KJGxhbmdbJ21zZ19zYXZldGVtcGxhdGVwcmVmJ10gPSAnRGllIFRlbXBsYXRlZWluc3RlbGx1bmdlbiB3dXJkZW4gZXJmb2xncmVpY2ggZ2VzcGVpY2hlcnQnOw0KJGxhbmdbJ21zZ19zYXZlcHJlZiddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIHd1cmRlbiBlcmZvbGdyZWljaCBnZXNwZWljaGVydCc7DQokbGFuZ1snbXNnX3Jlc2V0cHJlZiddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIHd1cmRlbiBlcmZvbGdyZWljaCB6dXLDvGNrZ2VzZXR6dCc7DQokbGFuZ1snZGVza3RvcHRwbCddID0gJ01vYmlsZSB0ZW1wbGF0ZSc7DQoNCiMgTg0KJGxhbmdbJ25ldmVyJ10gPSAnTmV2ZXInOw0KJGxhbmdbJ25ldyddID0gJyhuZXcpJzsNCiRsYW5nWyduZXdyZWRpcmVjdCddID0gJ05ldyBVUkwgUmVkaXJlY3QnOw0KJGxhbmdbJ25vdGVzJ10gPSAnTm90ZXMnOw0KJGxhbmdbJ25vX2ZpbGVzJ10gPSAiRm9yIHRoaXMgdGVtcGxhdGUsIHRoZXJlIGFyZSBubyBmaWxlcy4iOw0KDQoNCiMgTw0KJGxhbmdbJ29sZHVybF91c2UnXSA9ICdBY3RpdmF0ZSB0YWIgZm9yIFVSTCByZWRpcmVjdHMnOw0KJGxhbmdbJ29sZHVybF91c2VfY2RhdGUnXSA9ICdTaG93IGNyZWF0ZWQgZGF0ZSc7DQokbGFuZ1snb2xkdXJsX3VzZV9tZGF0ZSddID0gJ1Nob3cgbW9kaWZpZWQgZGF0ZSc7DQokbGFuZ1snb3ZlcndyaXRlJ10gPSAnT3ZlcndyaXRlIGV4aXN0aW5nIG1vZHVsZSB0ZW1wbGF0ZXMnOw0KDQojIFANCiRsYW5nWydwYWdlJ10gPSAnUGFnZSc7DQokbGFuZ1sncGFnZWlkJ10gPSAnUGFnZSBJRCc7DQokbGFuZ1sncGFnZWFsaWFzJ10gPSAnUGFnZSBBbGlhcyc7DQokbGFuZ1sncGFyYW1faW52YWxpZCddID0gJ3tUb29sQm94fSB0aGUgcGFyYW1ldGVyIG1vZD0iW21vZF0iIGlzIGludmFsaWQnOw0KJGxhbmdbJ3BhcmFtX2VtcHR5J10gPSAne1Rvb2xCb3h9IHRoZSBwYXJhbWV0ZXIgIltwYXJhbV0iIGlzIGVtcHR5JzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBUb29sQm94IG1vZHVsZSBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaW5zdGFsbGVkLiBZb3UgY2FuIGFjY2VzcyB0aGUgbW9kdWxlIGJhY2tlbmQgaW4gRXh0ZW5zaW9ucyAvIFRvb2xCb3guIFRoZSBtb2R1bGUgaXMgdXNpbmcgdGhlIHBlcm1pc3Npb25zICJNYW5hZ2UgVG9vbEJveCIuJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIFRvb2xCb3ggbW9kdWxlIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiByZW1vdmVkJzsNCiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsNCiRsYW5nWydwcmV1bmluc3RhbGwnXSA9ICdBcmUgeW91IHJlYWxseSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGUgbW9kdWxlIFRvb2xCb3g/JzsNCiRsYW5nWydwYXJhbW1vZCddID0gJ1Rvb2xib3ggbW9kdWwgcGFydCwgZXhhbXBsZTogbW9kPSJzb2NpYWxzaGFyZXByaXZhY3kiJzsNCiRsYW5nWydwYXJhbXVzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOw0KJGxhbmdbJ3BhcmFtbGlzdCddID0gJ2xpc3QgbmFtZSc7DQokbGFuZ1sncGFyYW1zZWFyY2gnXSA9ICdzZWFyY2gga2V5JzsNCiRsYW5nWydwYXJhbXRlbXBsYXRlJ10gPSAnTmFtZSBkZXMgVGVtcGxhdGVzIHdlbGNoZXMgdmVyd2VuZGV0IHdpcmQuIERpZXNlcyBUZW1wbGF0ZSBtdXNzIGV4aXN0aWVyZW4gaW0gUmVpdGVyIGRlcyB2ZXJ3ZW5kZXRlbiBUb29sYm94IE1vZHVscyBzaWNodGJhciBzZWluLiBPaG5lIGRpZXNlbiBQYXJhbWV0ZXIgd2lyZCBkYXMgYWxzIFN0YW5kYXJkLVRlbXBsYXRlIGRlZmluaWVydGUgVGVtcGxhdGUgdmVyd2VuZGV0Lic7DQokbGFuZ1sncGFyYW1jb3VudCddID0gJ0FuemFobCBEYXRlbnPDpHR6ZSBkaWUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4nOw0KJGxhbmdbJ3BhcmFtZGF0ZWZvcm1hdCddID0gJ0RhdHVtc2Zvcm1hdCBpbiBkZXIgRm9ybSBkLW0tWSBIOmk6cyc7DQokbGFuZ1sncGFyYW1ub2NhY2hlJ10gPSAnRGF0ZW4gd2VyZGVuIG5pY2h0IGdlc3BlaWNoZXJ0JzsNCiRsYW5nWydwYXJhbWNhY2hldGltZSddID0gJ1plaXQgaW4gTWludXRlbiBpbiBkZW5lbiBkYXMgUmVzdWx0YXQgaW0gQ2FjaGUgZ2VzcGVpY2hlcnQgYmxlaWJ0LiBTdGFuZGFyZCBpc3QgMTAgTWludXRlbiAoMTApJzsNCiRsYW5nWydwYXJhbWltYWdlJ10gPSAnUGF0aCB0byBwaWN0dXJlJzsNCiRsYW5nWydwYXJhbWhlaWdodCddID0gJ0hlaWdodCBpbiBwaXhlbCc7DQokbGFuZ1sncGFyYW13aWR0aCddID0gJ1dpZHRoIGluIHBpeGVsJzsNCiRsYW5nWydwYXJhbWFsdCddID0gJ2FsdCBBdHRyaWJ1dGUnOw0KJGxhbmdbJ3BhcmFtdGl0bGUnXSA9ICd0aXRsZSBBdHRyaWJ1dGUnOw0KJGxhbmdbJ3BhcmFtY2xhc3MnXSA9ICdjbGFzcyBBdHRyaWJ1dGUnOw0KJGxhbmdbJ3BhcmFtaWQnXSA9ICdpZCBBdHRyaWJ1dGUnOw0KJGxhbmdbJ3BhcmFtc3R5bGUnXSA9ICdzdHlsZSBBdHRyaWJ1dGUnOw0KJGxhbmdbJ3BhcmFtbm90YWcnXSA9ICdyYXcgcmVzdWx0IHdpdGhvdXQgdGFnJzsNCiRsYW5nWydwYXJhbWRldGFpbHRlbXBsYXRlJ10gPSAnRGV0YWlsIHRlbXBsYXRlJzsNCiRsYW5nWydwYXJhbWZpbGUnXSA9ICdGaWxlJzsNCiRsYW5nWydwYXJhbWZpbGVjaGFyc2V0J10gPSAnRmlsZSBjaGFyc2V0JzsNCiRsYW5nWydwcm9tcHRfaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnQgdGVtcGxhdGUnOw0KJGxhbmdbJ3BhcmFtYWN0aW9uJ10gPSAnQWN0aW9uJzsNCiRsYW5nWydwYXJhbXNvcnRieSddID0gJ1NvcnQgYnknOw0KJGxhbmdbJ3BhcmFtc29ydG9yZGVyJ10gPSAnU29ydCBvcmRlcic7DQokbGFuZ1sncGFyYW1kZWxpbWl0ZXInXSA9ICdEZWxpbWl0ZXInOw0KJGxhbmdbJ3Byb21wdF9hYm91dCddID0gJ0Fib3V0JzsNCiRsYW5nWydwcm9tcHRfYWN0aXZlJ10gPSAnQWN0aXZlJzsNCiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ0RlZmF1bHQnOw0KJGxhbmdbJ3Byb21wdF9kZWxldGUnXSA9ICdEZWxldGUnOw0KJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdFZGl0IFRlbXBsYXRlJzsNCiRsYW5nWydwcm9tcHRfZmlsZSddID0gJ0ZpbGUnOw0KJGxhbmdbJ3Byb21wdF9qcXVlcnknXSA9ICd1c2UgalF1ZXJ5JzsNCiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hbWUnOw0KJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyZWF0ZSBhIG5ldyB0ZW1wbGF0ZSc7DQokbGFuZ1sncHJvbXB0X3NpemUnXSA9ICdTaXplJzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnVGVtcGxhdGUtTmFtZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbWFuYWdlbWVudCddID0gJ1RlbXBsYXRlIE1hbmFnZW1lbnQnOw0KJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZWNzcyddID0gJ1RlbXBsYXRlIENTUy1zdHlsZXNoZWV0JzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGVqcyddID0gJ1RlbXBsYXRlIEphdmFTY3JpcHQnOw0KJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIFNvdXJjZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlZmlsZXMnXSA9ICdUZW1wbGF0ZSBGaWxlcyc7DQokbGFuZ1sncHJvbXB0X3VwbG9hZGZpbGUnXSA9ICdTZWxlY3QgRmlsZSc7DQokbGFuZ1sncHJvbXB0X3ZlcnNpb24nXSA9ICdWZXJzaW9uJzsNCiRsYW5nWydwcm9tcHRfdmlzaWJsZSddID0gJ1Zpc2libGUgaW4gdGVtcGxhdGUgZHJvcGRvd24nOw0KJGxhbmdbJ3Byb21wdF9vbGR1cmxfdGl0bGUnXSA9ICdVUkwgcmVkaXJlY3RzJzsNCiRsYW5nWydwcm9tcHRfc3RhdHNfNDA0X3RpdGxlJ10gPSAnNDA0IExvZ2dpbmcnOw0KJGxhbmdbJ3Byb21wdF9hdXRvbGlnaHRib3hfdGl0bGUnXSA9ICdBdXRvTGlnaHRCb3g/JzsNCiRsYW5nWydwcm9tcHRfc29jaWFsc2hhcmVwcml2YWN5X3RpdGxlJ10gPSAnU29jaWFsU2hhcmVQcml2YWN5JzsNCiRsYW5nWydwcm9tcHRfc3RhdHNfdGl0bGUnXSA9ICdTdGF0aXN0aWNzJzsNCiRsYW5nWydwcm9tcHRfZGVidWdfdGl0bGUnXSA9ICdEZWJ1Zyc7DQokbGFuZ1sncHJvbXB0X3RhaWxfdGl0bGUnXSA9ICdMb2dnaW5nJzsNCiRsYW5nWydwcm9tcHRfcHJlZnNfdGl0bGUnXSA9ICdQcmVmZXJlbmNlcyc7DQokbGFuZ1sncHJvbXB0X211bHRpZG9tYWluX3RpdGxlJ10gPSAnTXVsdGlkb21haW5zJzsNCiRsYW5nWydwcm9tcHRfaW1hZ2VtYW5pcHVsYXRpb25fc29jaWFscGx1Z2luJ10gPSAnSW1hZ2UgbWFuaXB1bGF0aW9uIC8gc29jaWFsIHBsdWdpbnMnOw0KJGxhbmdbJ3Byb21wdF90cmFja2luZ19sb2dnaW5nJ10gPSAnTG9nZ2luZyAgLyB0cmFja2luZyc7DQokbGFuZ1sncHJvbXB0X2dlbmVyYWxfcHJlZnMnXSA9ICdHZW5lcmFsIHByZWZlcmVuY2VzJzsNCiRsYW5nWydwcm9tcHRfamF2YXNjcmlwdF9mb290ZXInXSA9ICdJbmNsdWRlIGphdmFzY3JpcHQgYmVmb3IgJmx0Oy9ib2R5Jmd0Oyc7DQokbGFuZ1sncHJvbXB0X3R3aXR0ZXJmZWVkX3RpdGxlJ10gPSAnVHdpdHRlcmZlZWQnOw0KJGxhbmdbJ3Byb21wdF90d2l0dGVyZmVlZGFwaWtleSddID0gJ1R3aXR0ZXIgQVBJIEtleSc7DQokbGFuZ1sncHJvbXB0X3BhcmFtZXRlciddID0gJ1BhcmFtZXRlcic7DQokbGFuZ1sncHJvbXB0X2Nzdl90aXRsZSddID0gJ0NTViBMaXN0SXQnOw0KJGxhbmdbJ3Byb21wdF9taW5pZnknXSA9ICdNaW5pZnkgSmF2YVNjcmlwdCBhbmQgQ1NTLXN0eWxlc2hlZXQnOw0KJGxhbmdbJ3Byb21wdF9zdW1tYXJ5dGVtcGxhdGUnXSA9ICdTdW1tYXJ5IFRlbXBsYXRlJzsNCiRsYW5nWydwcm9tcHRfZGV0YWlsdGVtcGxhdGUnXSA9ICdEZXRhaWwgVGVtcGxhdGUnOw0KJGxhbmdbJ3Byb21wdF9kZWxpbWl0ZXInXSA9ICdEZWxpbWl0ZXIgZGVyIENTViBEYXRlaSc7DQokbGFuZ1sncHJvbXB0X2NoYXJzZXRmaWxlJ10gPSAnQ2hhcnNldCBDU1YgRGF0ZWknOw0KJGxhbmdbJ3Byb21wdF9jaGFyc2V0Y21zJ10gPSAnQ2hhcnNldCBDTVMgU3lzdGVtJzsNCiRsYW5nWydwcm9tcHRfdXJsdHlwZSddID0gJ1VSTCB0eXBlJzsNCiRsYW5nWydwcm9tcHRfdXNlX21vYmlsZXRlbXBsYXRlJ10gPSAnVXNlIG1vYmlsZSB0ZW1wbGF0ZSc7DQoNCiMgUQ0KDQojIFINCiRsYW5nWydyZWFsbHltYWtlYWN0aXZlJ10gPSAnRG8geW91IHdhbnQgdG8gYWN0aXZhdGUgdGhpcyByZWFsbHk/JzsNCiRsYW5nWydyZWFsbHlpZ25vcmUnXSA9ICdEbyB5b3Ugd2FudCB0byBpZ25vcmUgdGhpcyB1cmwgaW4gZXJyb3IgbGlzdD8nOw0KJGxhbmdbJ3JlYWxseW1ha2VpbmFjdGl2ZSddID0gJ0RvIHlvdSB3YW50IHRvIGRlYWN0aXZhdGUgdGhpcyByZWFsbHk/JzsNCiRsYW5nWydyZWFsbHlkZWxldGUnXSA9ICdEbyB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByZWFsbHk/JzsNCiRsYW5nWydyZWRpcmVjdCddID0gJ1VSTCBSZWRpcmVjdCc7DQokbGFuZ1sncmVkaXJlY3RlZGl0J10gPSAnRWRpdCBSZWRpcmVjdCBVUkwnOw0KJGxhbmdbJ3JlZGlyZWN0cyddID0gJ1JlZGlyZWN0IFVSTHMnOw0KJGxhbmdbJ3JlZmVyZXInXSA9ICdSZWZlcmVyJzsNCiRsYW5nWydyZWdleHAnXSA9ICdSZWdFeHAnOw0KJGxhbmdbJ3Jlc2V0J10gPSAnUmVzZXQnOw0KJGxhbmdbJ3Jlc2V0b3JpZ2luYWwnXSA9ICdSZXNldCB0byBvcmlnaW5hbCc7DQokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHRlbXBsYXRlIGNvZGUgdG8gaXRzIG9yaWdpbmFsIGNvZGU/JzsNCiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZzInXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlIHByZWZlcmVuY2VzIHRvIGl0cyBvcmlnaW5hbD8nOw0KJGxhbmdbJ3Jlc2V0dHdpdHRlcmZlZWQnXSA9ICdSZXNldCBzZXR0aW5ncyc7DQokbGFuZ1sncmVzZXR0d2l0dGVyZmVlZHdhcm5pbmcnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgKGRlbGV0ZSkgdGhlIHByZWZlcmVuY2VzPyc7DQoNCiMgUw0KJGxhbmdbJ3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOw0KJGxhbmdbJ3NlYXJjaHRlbXBsYXRlJ10gPSAnU2VhcmNoIFRlbXBsYXRlJzsNCiRsYW5nWydzZWFyY2hlbmdpbmUnXSA9ICdTZWFyY2ggRW5naW5lJzsNCiRsYW5nWydzZW5kJ10gPSAnU3VibWl0JzsNCiRsYW5nWydzZXNzaW9uX2lkJ10gPSAnU2Vzc2lvbiBJRCc7DQokbGFuZ1snc2V0ZmFsc2UnXSA9ICdTZXQgRmFsc2UnOw0KJGxhbmdbJ3NldHRydWUnXSA9ICdTZXQgVHJ1ZSc7DQokbGFuZ1snc21hcnR5dGFncyddID0gJ1lvdSBjYW4gdXNlIFNtYXJ0eS10YWdzIGxpa2UgW1tyb290X3VybF1dJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3knXSA9ICdTb2NpYWxTaGFyZVByaXZhY3knOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfYWR2YW5jZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBlbmFibGUgKEhUTUwsIFN0eWxlc2hlZXQgYW5kIEphdmFTY3JpcHQgVGVtcGxhdGUgZWRpdCBkaXJlY3RseSknOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9kZXNjcmlwdGlvbiddID0gJzxwPlNvY2lhbFNoYXJlUHJpdmFjeSBpcyBhIHBsdWdpbiB0byB0d28tc3RlcCBpbnRlZ3JhdGlvbiBvZiBGYWNlYm9vaywgVHdpdHRlciBhbmQgR29vZ2xlUGx1cy4gT25seSBhZnRlciBjbGlja2luZyBvbiB0aGUgYnV0dG9uLCBkYXRhIGlzIHRyYW5zbWl0dGVkIG9uIHRoZSBzZXJ2aWNlLjxiciAvPjxiciAvPlNvY2lhbFNoYXJlUHJpdmFjeSBpcyBoZXJlYnkgaW5jb3Jwb3JhdGVkIGFzIGZvbGxvd3M6IHtUb29sQm94IG1vZD0ic29jaWFsc2hhcmVwcml2YWN5In08L3A+JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfaW5hY3RpdmUnXSA9ICdTb2NpYWxTaGFyZVByaXZhY3kgaXMgbm90IGFjdGl2ZSEnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfaW5mb2xpbmsnXSA9ICdMaW5rIHRvIGFuIGluZm9ybWF0aW9uIHBhZ2Ugd2hpY2ggaXMgZXhwbGFpbmluZyBmdW5jdGlvbmFsaXR5cyc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF9qcXVlcnknXSA9ICdFbWJlZCBqUXVlcnknOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfdGVtcGxhdGVfaW5mbyddID0gJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB1c2Ugb2YgU29jaWFsU2hhcmVQcml2YWN5IGFuZCB0aGUgdmFyaW91cyBvcHRpb25zIGNhbiBiZSBmb3VuZCBoZXJlOiA8YSBocmVmPSJodHRwOi8vd3d3LmhlaXNlLmRlL2V4dHJhcy9zb2NpYWxzaGFyZXByaXZhY3kvIj5odHRwOi8vd3d3LmhlaXNlLmRlL2V4dHJhcy9zb2NpYWxzaGFyZXByaXZhY3kvPC9hPiAoZ2VybWFuKSc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF90ZW1wbGF0ZSddID0gJ0hUTUwnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdTdHlsZXNoZWV0JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfcHJvbXB0X3RlbXBsYXRlanMnXSA9ICdKYXZhU2NyaXB0JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfc2V0dGluZ3NwZXJtYSddID0gJ0FncmVlIGFjdGl2YXRlIHBlcm1hbmVudGx5IGFuZCBkYXRhIHRyYW5zZmVyOic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGZiaW5mbyddID0gJzIgY2xpY2tzIGZvciBiZXR0ZXIgZGF0YSBwcm90ZWN0aW9uOiBPbmx5IHdoZW4geW91IGNsaWNrIGhlcmUsIHRoZSBidXR0b24gd2lsbCBiZWNvbWUgYWN0aXZlIGFuZCB5b3UgY2FuIHNlbmQgeW91ciByZWNvbW1lbmRhdGlvbiB0byBGYWNlYm9vay4gRXZlbiB3aGVuIGVuYWJsaW5nIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhpcmQgcGFydGllcyAmbmRhc2g7IHNlZSBJLic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGZib2ZmJ10gPSAnbm90IGxpbmtlZCB0byBGYWNlYm9vayc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGZib24nXSA9ICdjb25uZWN0ZWQgdG8gRmFjZWJvb2snOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHR0d2l0dGVyaW5mbyddID0gJzIgY2xpY2tzIGZvciBiZXR0ZXIgZGF0YSBwcm90ZWN0aW9uOiBPbmx5IHdoZW4geW91IGNsaWNrIGhlcmUsIHRoZSBidXR0b24gd2lsbCBiZWNvbWUgYWN0aXZlIGFuZCB5b3UgY2FuIHNlbmQgeW91ciByZWNvbW1lbmRhdGlvbiB0byBUd2l0dGVyLiBFdmVuIHdoZW4gZW5hYmxpbmcgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCB0byB0aGlyZCBwYXJ0aWVzICZuZGFzaDsgc2VlIEkuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0dHdpdHRlcm9mZiddID0gJ25vdCBsaW5rZWQgdG8gVHdpdHRlcic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dHR3aXR0ZXJvbiddID0gJ2Nvbm5lY3RlZCB0byBUd2l0dGVyJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0Z3BsdXNpbmZvJ10gPSAnMiBjbGlja3MgZm9yIGJldHRlciBkYXRhIHByb3RlY3Rpb246IE9ubHkgd2hlbiB5b3UgY2xpY2sgaGVyZSwgdGhlIGJ1dHRvbiB3aWxsIGJlY29tZSBhY3RpdmUgYW5kIHlvdSBjYW4gc2VuZCB5b3VyIHJlY29tbWVuZGF0aW9uIHRvIEdvb2dsZSsuIEV2ZW4gd2hlbiBlbmFibGluZyBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIHRvIHRoaXJkIHBhcnRpZXMgJm5kYXNoOyBzZWUgSS4nOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHRncGx1c29mZiddID0gJ25vdCBsaW5rZWQgdG8gR29vZ2xlKyc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGdwbHVzb24nXSA9ICdjb25uZWN0ZWQgdG8gR29vZ2xlKyc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGhlbHAnXSA9ICdJZiB5b3Ugc2VsZWN0IHRoaXMgZmllbGQgd2l0aCBhIGNsaWNrLCBpbmZvcm1hdGlvbiBvbiBGYWNlYm9vaywgVHdpdHRlciBhbmQgR29vZ2xlIGFyZSB0cmFuc2ZlcnJlZCB0byB0aGUgVW5pdGVkIFN0YXRlcyBhbmQgbWF5IGFsc28gYmUgc3RvcmVkIHRoZXJlLiBEZXRhaWxzIHlvdSBrbm93IGJ5IGNsaWNraW5nIG9uIHRoZSBJLic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3RpdGxlJ10gPSAnU29jaWFsU2hhcmVQcml2YWN5IC0gU29jaWFsLU1lZGlhIEJ1dHRvbnMgd2l0aCAyLUNsaWNrIFJ1bGUnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnXSA9ICdVc2UgU29jaWFsU2hhcmVQcml2YWN5JzsNCiRsYW5nWydzdGFuZGFyZCddID0gJ1N0YW5kYXJkJzsNCiRsYW5nWydzdGF0cyddID0gJ1N0YXRpc3RpY3MnOw0KJGxhbmdbJ3N0YXRzXzQwNCddID0gJ1Nob3cgNDA0IGVycm9yIHJlcG9ydCc7DQokbGFuZ1snc3RhdHNfZGFpbHknXSA9ICdVc2UgZGFpbHkgc3RhdGlzdGljcyc7DQokbGFuZ1snc3RhdHNfZW1haWwnXSA9ICdFTWFpbCBmb3IgbW9udGhseSBzdGF0aXN0aWNzJzsNCiRsYW5nWydzdGF0c19lbWFpbF9oZWxwJ10gPSAnTGVhdmUgZW1wdHksIGlmIHlvdSB3b25cJ3QgdXNlIGl0JzsNCiRsYW5nWydzdGF0c19lbWFpbF9zdWJqZWN0J10gPSAnVG9vbEJveCBTdGF0aXN0aWNzICV1IG9mICVtJzsNCiRsYW5nWydzdGF0c191c2UnXSA9ICdVc2Ugc3RhdGlzdGljcyc7DQokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdHVzJzsNCiRsYW5nWydzdWJtaXQnXSA9ICdTYXZlJzsNCg0KIyBUDQokbGFuZ1sndGJpbWFnZSddID0gJ3RiaW1hZ2UnOw0KJGxhbmdbJ3RiaW1hZ2VfZGVzY3JpcHRpb24nXSA9ICdNaXQgdGJpbWFnZSBsYXNzZW4gc2ljaCBCaWxkZXIgZWluZmFjaCB2ZXJrbGVpbmVybiwgYXVmIEdyw7Zzc2Ugc2NobmVpZGVuIHVuZCBhdXNnZWJlbi4nOw0KJGxhbmdbJ3RiaW1hZ2Vub2ZpbGUnXSA9ICdub3Qgd2F0ZXJtYXJrIGltYWdlJzsNCiRsYW5nWyd0YmltYWdlX2x0J10gPSAnbGVmdCB0b3AnOw0KJGxhbmdbJ3RiaW1hZ2VfbXQnXSA9ICdtaWRkbGUgdG9wJzsNCiRsYW5nWyd0YmltYWdlX3J0J10gPSAncmlnaHQgdG9wJzsNCiRsYW5nWyd0YmltYWdlX2xtJ10gPSAnbGVmdCBtaWRkbGUnOw0KJGxhbmdbJ3RiaW1hZ2VfbW0nXSA9ICdtaWRkbGUgbWlkZGxlJzsNCiRsYW5nWyd0YmltYWdlX3JtJ10gPSAncmlnaHQgbWlkZGxlJzsNCiRsYW5nWyd0YmltYWdlX2xiJ10gPSAnbGVmdCBib3R0b20nOw0KJGxhbmdbJ3RiaW1hZ2VfbWInXSA9ICdtaWRkbGUgYm90dG9tJzsNCiRsYW5nWyd0YmltYWdlX3JiJ10gPSAncmlnaHQgYm90dG9tJzsNCiRsYW5nWyd0YmltYWdlJ10gPSAndGJpbWFnZSc7DQokbGFuZ1sndGFpbF9wcm9tcHRfZmlsZW5hbWUnXSA9ICdTZWxlY3QgdGhlIGxvZyBmaWxlIHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQnOw0KJGxhbmdbJ3RhaWxfcHJvbXB0X2xpbmVzJ10gPSAnTnVtYmVyIG9mIHJvd3Mgd2hpY2ggc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgZmlyc3QgcmVhZGluZyBwcm9jZXNzIGZyb20gdGhlIGxvZyBmaWxlJzsNCiRsYW5nWyd0YWlsX3Byb21wdF9sb2cnXSA9ICdMb2dmaWxlIGlzc3VlJzsNCiRsYW5nWyd0YWlsX3N0YXJ0J10gPSAnU3RhcnQgbG9nZ2luZyc7DQokbGFuZ1sndGFpbF9zdG9wJ10gPSAnU3RvcCBsb2dnaW5nJzsNCiRsYW5nWyd0YWlsX3RpdGxlJ10gPSAnTG9nIGZpbGUgaXNzdWUgdGhyb3VnaCBqUXVlcnkgVGFpbCc7DQokbGFuZ1sndGFpbF91c2UnXSA9ICdMb2cgZmlsZSBpc3N1ZSB0aHJvdWdoIGpxdWVyeS90YWlsIGFjdGl2YXRlLiBUaGlzIGlzIG9uZSBvZiB0aGUgVW5peCBmdW5jdGlvbiBkaXNwbGF5cyAidGFpbCIgc2ltaWxhciBmdW5jdGlvbnMgaW4gbG9nIGZpbGUgaW4gcmVhbCB0aW1lLic7DQokbGFuZ1sndGFyZ2V0cGFnZSddID0gJ1RhcmdldCBQYWdlJzsNCiRsYW5nWyd0YXJnZXR1cmwnXSA9ICdUYXJnZXQgVVJMJzsNCiRsYW5nWyd0aW1lJ10gPSAnVGltZSc7DQokbGFuZ1sndG91cmwnXSA9ICdNaXNzaW5nIFBhZ2UnOw0KJGxhbmdbJ3Rva2VuJ10gPSAnVG9rZW4nOw0KJGxhbmdbJ3Rva2Vub2snXSA9ICdUd2l0dGVyLXRva2VuIGlzIG9rJzsNCiRsYW5nWyd0ZW1wbGF0ZWltcG9ydCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkLic7DQokbGFuZ1sndGVtcGxhdGVhZGRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkLic7DQokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnVGVtcGxhdGUgZGVsZXRlZCc7DQokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZC4nOw0KJGxhbmdbJ3RpdGxlX2ltcG9ydHhtbCddID0gJ0ltcG9ydCB0ZW1wbGF0ZSB2aWEgWE1MIGZpbGUnOw0KJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUtRWRpdG9yJzsNCiRsYW5nWyd0d2l0dGVyZmVlZCddID0gJ1R3aXR0ZXJmZWVkJzsNCiRsYW5nWyd0d2l0dGVyZmVlZF91c2UnXSA9ICdVc2UgVHdpdHRlcmZlZWQnOw0KJGxhbmdbJ3R3aXR0ZXJmZWVkX2Rlc2NyaXB0aW9uJ10gPSA8PDxFT1QNCgk8cD5NaXQgVHdpdHRlcmZlZWQga8O2bm5lbiBrYW5uIGRlciBGZWVkIGVpbmVzIFR3aXR0ZXItQWNjb3VudHMgaW4gZGllIFdlYnNlaXRlIGVpbmdlYnVuZGVuIHdlcmRlbi4gRGllIERhcnN0ZWxsdW5nIGRlcyBGZWVkcyBrYW5uIGluIGVpbmVtIFRlbXBsYXRlIGRlZmluaWVydCB3ZXJkZW4uPC9wPg0KCTxjb2RlPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdmcmllbmRseScgY2FjaGV0aW1lPTEwICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdkLm0uWSBIOmknICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGxpc3Q9J3dlYmRlc2lnbicgY291bnQ9NSAmIzEyNTs8YnIgLz4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyBzZWFyY2g9JyNjbXNtcycgY291bnQ9MTAgJiMxMjU7DQoJPC9jb2RlPiANCkVPVDsNCiRsYW5nWyd0d2l0dGVyZmVlZF9hcGlkZXNjcmlwdGlvbiddID0gPDw8RU9UDQoJPHA+UmVnaXN0ZXIgeW91ciBzaXRlIHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vYXBwcy9uZXciIHRhcmdldD0iX2JsYW5rIj5Ud2l0dGVyPC9hPiBhbmQgZmlsbCBLZXlzOjwvcD4gDQpFT1Q7DQokbGFuZ1sndHdpdHRlcmZlZWRfbm9hdXRoJ10gPSAnTm8gYXV0aCBmb3IgdHdpdHRlcmZlZWQuIENoZWNrIHRoZSBzZXR0aW5ncy4nOw0KDQoNCg0KIyBVDQokbGFuZ1sndXJsJ10gPSAnVVJMJzsNCiRsYW5nWyd1cmxzJ10gPSAnVVJMcyc7DQokbGFuZ1sndXBkYXRlZCddID0gJ3VwZGF0ZWQnOw0KJGxhbmdbJ3VzZXJ0b2tlbiddID0gJ1VzZXIgVG9rZW4nOw0KJGxhbmdbJ3VzZXJzZWNyZXQnXSA9ICdVc2VyIFNlY3JldCc7DQoNCg0KIyBWDQokbGFuZ1sndmlzaXRzJ10gPSAnVmlzaXRzJzsNCiRsYW5nWyd2aWV3J10gPSAnVmlldyc7DQoNCiMgVw0KJGxhbmdbJ3dhdGVybWFya3RleHQnXSA9ICdXYXNzZXJ6ZWljaGVuIG1pdCBUZXh0JzsNCiRsYW5nWyd3YXRlcm1hcmtpbWFnZSddID0gJ1dhdGVybWFyayB3aXRoIGltYWdlJzsNCiRsYW5nWyd3bXRfdGV4dCddID0gJ1dhc3NlcnplaWNoZW4gVGV4dCwgei5CLiAmY29weTsgQ29weXJpZ2h0IGJ5IFRvb2xib3gnOw0KJGxhbmdbJ3dtdF9mb250J10gPSAnU2NocmlmdGFydCB1bmQgR3LDtnNzZSc7DQokbGFuZ1snd210X3NpemUnXSA9ICdTY2hyaWZ0Z3LDtnNzZSc7DQokbGFuZ1snd210X2NvbG9yJ10gPSAnRmFyYmUgZGVyIFNjaHJpZnQnOw0KJGxhbmdbJ3dtdF9vcGFjaXR5J10gPSAnT3BhY2l0eSc7DQokbGFuZ1snd210X3Bvc2l0aW9uJ10gPSAnUG9zaXRpb24nOw0KJGxhbmdbJ3dtdF9wb3N4J10gPSAnUG9zaXRpb24gaW4gWCc7DQokbGFuZ1snd210X3Bvc3knXSA9ICdQb3NpdGlvbiBpbiBZJzsNCiRsYW5nWyd3bWlfaW1hZ2UnXSA9ICdXYXNzZXJ6ZWljaGVuIEJpbGQnOw0KJGxhbmdbJ3dtaV9yZWxzaXplJ10gPSAnUmVsYXRpdmUgR3LDtnNzZSBkZXMgV2Fzc2VyemVpY2hlbiBCaWxkZXMgenVtIGJlYXJiZWl0ZXRlbiBCaWxkIGluICUnOw0KDQoNCiMgWA0KDQojIFkNCiRsYW5nWyd5ZWFyJ10gPSAnWWVhcic7DQokbGFuZ1sneWVhcnMnXSA9ICdZZWFycyc7DQoNCiMgWg0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUbyBkZW55IFBIUHMNCjxGaWxlcyB+ICJcLihwaHB8cGhwM3xwaHA0fHBocDV8cGh0bWx8cGx8Y2dpKSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGRlbnkgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjwvRmlsZXM+ICANCg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KDQojIDAtOQ0KJGxhbmdbJzQwNCddID0gJzQwNCBGZWhsZXInOw0KDQojIEENCiRsYW5nWydhY3RpdmUnXSA9ICdBa3Rpdic7DQokbGFuZ1snYWx0ZXJuYXRpdmVfdXJsJ10gPSAnRmFsbHMgZXMgc2ljaCB1bSBlaW5lIGV4dGVybmUgVVJMIG9kZXIgZWluIEJpbGQgaGFuZGVsdCwga2FubiBpbSBmb2xnZW5kZW4gRmVsZCBlaW5lIFVSTCBmcmVpIGVpbmdlZ2ViZW4gd2VyZGVuLiBEaWUgWmllbC1TZWl0ZSBhdXMgZGVtIG9iZXJlbiBGZWxkIHdpcmQgZGFubiBpZ25vcmllcnQuJzsNCiRsYW5nWydhbHdheXMnXSA9ICdJbW1lcic7DQokbGFuZ1snYXV0b2xpZ2h0Ym94J10gPSAnQXV0b0xpZ2h0Qm94JzsNCiRsYW5nWydhdXRvbGlnaHRib3hfdXNlJ10gPSAnQXV0b0xpZ2h0Qm94IGFrdGl2aWVyZW4nOw0KJGxhbmdbJ2F1dG9saWdodGJveF9kZXNjcmlwdGlvbiddID0gJzxwPk1pdCBkZXIgQXV0b0xpZ2h0Qm94IHdlcmRlbiBkaWUgQmlsZGVyIGlocmVyIFdlYnNlaXRlIGltbWVyIGluIGRlciBrb3JyZWt0ZW4gR3LDtnNzZSBnZXNwZWljaGVydC4gSXN0IGRhcyBlaW5nZWbDvGd0ZSBCaWxkIGdyw7Zzc2VyIGFscyBkYXMgT3JpZ2luYWxiaWxkLCBzbyBlcnN0ZWxsdCBBdXRvTGlnaHRCb3ggYXV0b21hdGlzY2ggZWluZSBLb3BpZSB1bmQgZXJzdGVsbHQgZWluZSBWZXJrbsO8cGZ1bmcgenVtIE9yaWdpbmFsYmlsZC4gTWl0IGFrdGl2aWVydGVyIExpZ2h0Ym94IEZ1bmt0aW9uIHdpcmQgZGFzIE9yaWdpbmFsYmlsZCBiZWltIEtsaWNrIGF1ZiBkYXMgdmVya2xlaW5lcnRlIEJpbGQgaW4gZWluZXIgTGlnaHRib3ggZ2XDtmZmbmV0LjwvcD4nOw0KJGxhbmdbJ2F1dG9saWdodGJveF90aXRsZSddID0gJ0F1dG9MaWdodEJveCc7DQokbGFuZ1snYXV0b2xpZ2h0Ym94X3Byb21wdF9yZWwnXSA9ICdJbmhhbHQgZGVyICJyZWwiLUF0dHJpYnV0cyBkZXMgQmlsZC1MaW5rcyAoa2FubiBsZWVyIHNlaW4pJzsNCiRsYW5nWydhdXRvbGlnaHRib3hfcHJvbXB0X2NsYXNzJ10gPSAnSW5oYWx0IGRlciAiY2xhc3MiLUF0dHJpYnV0cyBkZXMgQmlsZC1MaW5rcyAoa2FubiBsZWVyIHNlaW4pJzsNCiRsYW5nWydhdXRvbGlnaHRib3hfcHJvbXB0X2xpZ2h0Ym94J10gPSAnTGlnaHRib3hlaW5iaW5kdW5nIGRlciBCaWxkZXIgZHVyY2ggQXV0b0xpZ2h0Qm94IHN0ZXVlcm4gKGRhcyBub3R3ZW5kaWdlIFN0eWxlc2hlZXQgdW5kIEphdmFTY3JpcHQgd2lyZCBhdXRvbWF0aXNjaCBlaW5nZWJ1bmRlbiknOw0KJGxhbmdbJ2FwcGx5J10gPSAnQW53ZW5kZW4nOw0KJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdXb2xsZW4gU2llIGRpZXMgd2lya2xpY2ggbCZvdW1sO3NjaGVuPyc7DQokbGFuZ1snYWRkZmlsZXMnXSA9ICdEYXRlaWVuIGhpbnp1ZsO8Z2VuJzsNCg0KDQojIEINCiRsYW5nWydiYWNrdXByZWNvdmVyeSddID0gJ0JhY2t1cCAvIFdpZWRlcmhlcnN0ZWxsdW5nJzsNCg0KIyBDDQokbGFuZ1snY2FjaGUnXSA9ICdad2lzY2hlbnNwZWljaGVybic7DQokbGFuZ1snY2FuY2VsJ10gPSAnQWJicmVjaGVuJzsNCiRsYW5nWydjc3YnXSA9ICdDU1YgTGlzdEl0JzsNCiRsYW5nWydjc3ZmaWxlcyddID0gJ0RhdGVpZW4nOw0KJGxhbmdbJ2Nzdl9kZXNjcmlwdGlvbiddID0gJ01pdCBDU1YgTGlzdEl0IGvDtm5uZW4gSW5oYWx0ZSB2b24gQ1NWIERhdGVpZW4gZWluZmFjaCBkYXJnZXN0ZWxsdCB1bmQgZHVyY2hzdWNodCB3ZXJkZW4nOw0KJGxhbmdbJ2Nzdl91c2UnXSA9ICdDU1YgTGlzdEl0IGFrdGl2aWVyZW4nOw0KJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9UDQo8dWw+DQo8bGk+MS4yLjUgLSAxMC4wOC4yMDEyPGJyIC8+DQpUd2l0dGVyZmVlZCBoaW56dWdlZsO8Z3Q8YnIgLz4NClNtYXJ0eSBrYW5uIG51biBpbiBTdHlsZXNoZWV0cyB1bmQgSmF2YXNjcmlwdHMgZ2VudXR6dCB3ZXJkZW46IHouQi4gW1tyb290X3VybF1dPGJyIC8+IA0KRmVobGVyYmVoZWJ1bmcgQXV0b0xpZ2h0Qm94PGJyIC8+DQpJbmtvbXBhdGliaWxpdMOkdCB6d2lzY2hlbiBBdXRvTGlnaHRCb3ggdW5kIFNvY2lhbFNoYXJlUHJpdmFjeSBiZWhvYmVuPGJyIC8+DQpKYXZhc2NyaXB0IGthbm4gbnVuIGF1Y2ggaW0gRm9vdGVyIGVpbmdlbGVzZW4gd2VyZGVuPGJyIC8+DQpEYXJzdGVsbHVuZyB1bmQgR3J1cHBpZXJ1bmcgZGVyIEVpbnN0ZWxsdW5nZW4gw7xiZXJhcmJlaXRldCANCjwvbGk+DQo8bGk+MS4yLjQgLSAyMC4wNy4yMDEyPGJyIC8+DQpBZGQgQXV0b0xpZ2h0Qm94IHRlbXBsYXRlIG1hbmFnZW1lbnQgDQo8L2xpPg0KPGxpPjEuMi4zIC0gMjYuMDYuMjAxMjxiciAvPg0KQnVnZml4ZXMgaW4gQXV0b0xpZ2h0Qm94DQo8L2xpPg0KPGxpPjEuMi4yPGJyIC8+DQpNaW5vciBCdWdmaXhlcw0KPC9saT4NCjxsaT4xLjIuMTxiciAvPg0KTWlub3IgQnVnZml4ZXM8L2xpPg0KDQo8bGk+MS4yLjA8YnIgLz4NCkFkZGVkIEF1dG9MaWdodEJveDxiciAvPg0KQWRkZWQgdGVtcGxhdGUgaW1wb3J0DQo8L2xpPg0KDQo8bGk+MS4xLjE8YnIgLz4NCm1pbm9yIGJ1Z2ZpeGVzPGJyIC8+DQp1cGRhdGUgU29jaWFsU2hhcmVQcml2YWN5IDEuNA0KPC9saT4NCg0KPGxpPjEuMS4wPGJyIC8+DQpBZGRlZCBTbWFydHkgcGx1Z2luIFwkdGJ0b29scy4gVGhpcyBlbmFibGVzIHlvdSB0byB1c2UgZGlmZmVyZW50IGZ1bmN0aW9ucyB0byBtb2RpZnkgY29udGVudC48YnIgLz4NCkFkZGVkIGRpZmZlcmVudCBwbHVnaW5zLjxiciAvPg0KQWRkZWQgcGx1Z2luIHRvIGV4dGVuZCBBZHZhbmNlZENvbnRlbnQ8YnIgLz4NCkFkZGVkIHBsdWdpbiB0byBzaG93IFNvY2lhbFNoYXJlUHJpdmFjeSBCdXR0b25zPGJyIC8+DQpBZGRlZCBhIFRhaWwtTG9nIFRhYjxiciAvPg0KTW9kdWxlIGhlbHAgaXMgbm93IG11Y2ggYmlnZ2VyIDopPGJyIC8+DQpUb29sQm94IGNhbGwgaXMgbm93IHBvc3NpYmxlIHdpdGgge1Rvb2xCb3h9DQo8L2xpPg0KDQo8bGk+MS4wLjEgLSBEZXplbWJlciAyMDExPC9saT4NCjxwPktsZWluZXJlIEZlaGxlci1CZXNlaXRpZ3VuZ2VuLjwvcD48L2xpPg0KPGxpPjEuMCAtIERlemVtYmVyIDIwMTENCjxwPkVyc3RlcyBSZWxlYXNlIGRlcyBNb2R1bHMgVG9vbEJveC48L3A+PC9saT4NCjwvdWw+DQpFT1Q7DQokbGFuZ1snY3JlYXRlZCddID0gJ0Vyc3RlcyBBdWZ0cmV0ZW4nOw0KJGxhbmdbJ2NvcHknXSA9ICdLb3BpZXJlbic7DQokbGFuZ1snY29uc3VtZXJrZXknXSA9ICdDb25zdW1lciBLZXknOw0KJGxhbmdbJ2NvbnN1bWVyc2VjcmV0J10gPSAnQ29uc3VtZXIgU2VjcmV0JzsNCg0KIyBEDQokbGFuZ1snZGF0ZV9jcmVhdGVkJ10gPSAnRXJzdGVsbHVuZyc7DQokbGFuZ1snZGF0ZV9tb2RpZmllZCddID0gJ0dlw6RuZGVydCc7DQokbGFuZ1snZGF5J10gPSAnVGFnJzsNCiRsYW5nWydkYXlzJ10gPSAnVGFnZSc7DQokbGFuZ1snZGVidWcnXSA9ICdEZWJ1Zyc7DQokbGFuZ1snZGVidWdfbG9nJ10gPSAnRGVidWcgTG9nJzsNCiRsYW5nWydkZWJ1Z191c2UnXSA9ICdEZWJ1ZyBSZWl0ZXIgdmVyd2VuZGVuJzsNCiRsYW5nWydkZWxldGUnXSA9ICdMJm91bWw7c2NoZW4nOw0KJGxhbmdbJ2RlbGV0ZWFsbCddID0gJ0FsbGUgbMO2c2NoZW4nOw0KJGxhbmdbJ2RvJ10gPSAnQWt0aW9uJzsNCiRsYW5nWydkb250X3VzZV9ldmVudF9oYW5kbGVyJ10gPSAnTW9kdWwgaW4gZGVyIEVyZWlnbmlzdmVyd2FsdHVuZyBkZWFrdGl2aWVyZW4nOw0KJGxhbmdbJ2RvbnRfdXNlX2V2ZW50X2hhbmRsZXJfaGVscCddID0gJ1dlbm4gZGFzIE1vZHVsIGF1cyBkZXIgRXJlaWduaXN2ZXJ3YWx0dW5nIGRlYWt0aXZpZXJ0IHdpcmQsIG11c3MgZGllIFNtYXJ0eS1BbndlaXN1bmcge2Ntc19tb2R1bGUgbW9kdWxlPVwnVG9vbEJveFwnfSBhbiBkZW4gQW5mYW5nIGRlciBTZWl0ZW4tVGVtcGxhdGVzIGVpbmdlc2V0enQgd2VyZGVuLic7DQokbGFuZ1snZG9uYXRlJ10gPSAnPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWQiIHZhbHVlPSJfcy14Y2xpY2siPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSJFRDhQWENZODlVNFRHIj48aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vV0VCU0NSLTY0MC0yMDExMDMwNi0xL2RlX0RFL0RFL2kvYnRuL2J0bl9kb25hdGVfU00uZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJKZXR6dCBlaW5mYWNoLCBzY2huZWxsIHVuZCBzaWNoZXIgb25saW5lIGJlemFobGVuIOKAkyBtaXQgUGF5UGFsLiI+PGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL1dFQlNDUi02NDAtMjAxMTAzMDYtMS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPjwvZm9ybT48L2Rpdj4nOw0KJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFyZCc7DQokbGFuZ1snZGVza3RvcHRwbCddID0gJ0Rlc2t0b3AgVGVtcGxhdGUnOw0KDQojIEUNCiRsYW5nWydlZGl0J10gPSAnQmVhcmJlaXRlbic7DQokbGFuZ1snZXJyb3JfcGVybWlzc2lvbmRlbmllZCddID0gJ1p1Z3JpZmYgdmVyd2VpZ2VydCc7DQokbGFuZ1snZXJyb3JsaXN0J10gPSAnRmVobGVybGlzdGUnOw0KJGxhbmdbJ2V4dHJhZG9tYWlucyddID0gJ0V4dHJhIERvbWFpbnMnOw0KJGxhbmdbJ2Vycm9yX3RlbXBsYXRlZXhpc3RzJ10gPSAnRGFzIE1vZHVsLVRlbXBsYXRlIGV4aXN0aWVydCBiZXJlaXRzIHVuZCBrYW5uIG5pY2h0ICZ1dW1sO2JlcnNjaHJpZWJlbiB3ZXJkZW4uJzsNCiRsYW5nWydlcnJvcl90ZW1wbGF0ZXVua25vd24nXSA9ICdEYXMgTW9kdWwtVGVtcGxhdGUgW3RlbXBsYXRlXSBpc3QgdW5iZWthbm50JzsNCiRsYW5nWydlcnJvcl9kaXJlY3Rvcnlub3R3cml0YWJsZSddID0gJ0RhcyBWZXJ6ZWljaG5pcyBpc3QgbmljaHQgYmVzY2hyZWliYmFyLic7DQokbGFuZ1snZXJyb3JfaW5jb21wbGV0ZXhtbCddID0gJ1hNTCB1bnZvbGxzdCZhdW1sO25kaWcuJzsNCiRsYW5nWydlcnJvcl90ZW1wbGF0ZWZpbGVub3Rmb3VuZCddID0gJ1RlbXBsYXRlZGF0ZWkgd3VyZGUgbmljaHQgZ2VmdW5kZW4nOw0KJGxhbmdbJ2Vycm9yX2NhbnRjcmVhdGVkaXInXSA9ICdLb25udGUgZGFzIFZlcnplaWNobmlzIG5pY2h0IGVyc3RlbGxlbic7DQokbGFuZ1snZXJyb3JfY2FudGNyZWF0ZWZpbGUnXSA9ICdLb25udGUgZGllIERhdGVpIG5pY2h0IGVyc3RlbGxlbic7DQokbGFuZ1snZXJyb3JfZmlsZW5vdGV4aXN0J10gPSAnRGllIERhdGVpICJbZmlsZV0iIGV4aXN0aWVydCBuaWNodCc7DQokbGFuZ1snZXJyb3Jfbm9maWxlcyddID0gJ0VzIGV4aXN0aWVyZW4ga2VpbmUgRGF0ZWllbic7DQokbGFuZ1snZXJyb3JfY291bGRub3RkZWxldGV0ZW1wbGF0ZSddID0gJ0RhcyBNb2R1bC1UZW1wbGF0ZSBbdGVtcGxhdGVdIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuJzsNCiRsYW5nWydlcnJvcl9jb3VsZG5vdHBhcnNleG1sJ10gPSAnRmVobGVyIGJlaSBkZXIgU3ludGF4YW5hbHlzZSBkZXIgWE1MLURhdGVpLiBCaXR0ZSBzdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgU2llIGVpbmUgWE1MLURhdGVpIHVuZCBuaWNodCBlaW5lIC50YXIuZ3otIG9kZXIgLnppcC1EYXRlaSBob2NobGFkZW4uJzsNCiRsYW5nWydlcnJvcl9jb3VsZG5vdHJlYWR0cGxwcm9wcyddID0gJ0RpZSBUZW1wbGF0ZSBFaW5zdGVsbHVuZ2VuIGvDtm5uZW4gbmljaHQgZ2VsYWRlbiB3ZXJkZW4uJzsNCiRsYW5nWydlcnJvcl9jb3VsZG5vdHdyaXRldHBscHJvcHMnXSA9ICdEaWUgVGVtcGxhdGUgRWluc3RlbGx1bmdlbiBrw7ZubmVuIG5pY2h0IGdlc3BlaWNoZXJ0IHdlcmRlbi4nOw0KJGxhbmdbJ2Vycm9yX3Vua25vd25wYXJhbSddID0gJ1VuYmVrYW5udGVyIFBhcmFtZXRlcic7DQokbGFuZ1snZXJyb3JfY3VybCddID0gJ0N1cmwgbXVzcyBpbiBQSFAgYWt0aXYgc2Vpbic7DQokbGFuZ1snZXJyb3Jfbm90ZW1wbGF0ZXMnXSA9ICdFcyBpc3Qga2VpbiBUZW1wbGF0ZSBpbiBkZXIgRGF0ZW5iYW5rIGdlc3BlaWNoZXJ0JzsNCiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOw0KJGxhbmdbJ2V4cG9ydF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGV4cG9ydGllcmVuJzsNCg0KIyBGDQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVG9vbEJveCc7DQokbGFuZ1snZnJvbXVybCddID0gJ1ZlcndlaXMtVVJMJzsNCg0KIyBHDQokbGFuZ1snZ2VuZXJhbCddID0gJ0FsbGdlbWVpbic7DQoNCiMgSA0KJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVA0KDQoNCjxkaXYgaWQ9InBhZ2VfdGFicyI+ICAgICANCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgQWxsZ2VtZWluZSBJbmZvcyAgDQogIDwvZGl2PiAgICAgDQogIDxkaXYgaWQ9InJlZGlyZWN0Ij4NCiAgICBXZWl0ZXJsZWl0dW5nZW4gLyBGZWhsZXIgVHJhY2tpbmcgICANCiAgPC9kaXY+IA0KICA8ZGl2IGlkPSJhdXRvbGlnaHRib3giPg0KICAgIEF1dG9MaWdodEJveCAgIA0KICA8L2Rpdj4NCiAgPGRpdiBpZD0ic29jaWFsc2hhcmVwcml2YWN5Ij4NCiAgICBTb2NpYWxTaGFyZVByaXZhY3kgICANCiAgPC9kaXY+DQogIDxkaXYgaWQ9InR3aXR0ZXJmZWVkIj4NCiAgICBUd2l0dGVyZmVlZCAgIA0KICA8L2Rpdj4gICAgDQogIDxkaXYgaWQ9InRhaWwiPg0KICAgIFRhaWwgICANCiAgPC9kaXY+ICAgICANCiAgPGRpdiBpZD0ic21hcnR5dG9vbHMiPg0KICAgIFNtYXJ0eSBUb29scyAgIA0KICA8L2Rpdj4gICANCiAgPGRpdiBpZD0ibW9kaWZpZXIiPg0KICAgIE1vZGlmaWVyIA0KICA8L2Rpdj4gICAgDQogIDxkaXYgaWQ9Im1vYmlsZWRldGVjdCI+DQogICAgTW9iaWxlIERldGVjdCAgDQogIDwvZGl2PiANCiAgPGRpdiBpZD0icGx1Z2lucyI+DQogICAgUGx1Z2lucyAgIA0KICA8L2Rpdj4gICAgIA0KPC9kaXY+ICAgDQo8ZGl2IGNsYXNzPSJjbGVhcmIiPiAgDQoNCjxkaXYgaWQ9InBhZ2VfY29udGVudCI+ICANCiAgPGRpdiBpZD0iZ2VuZXJhbF9jIj4NCgk8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KCTxwPkRpZXNlcyBNb2R1bCBpc3QgZWluZSBTYW1tbHVuZyB2b24gVG9vbHMsIGRpZSBmw7xyIFNlaXRlbmJldHJlaWJlciBuw7x0emxpY2ggc2luZC4gRGVyemVpdGlnZSBGdW5rdGlvbmVuOjwvcD4NCgk8dWw+DQoJPGxpPjMwMS1XZWl0ZXJsZWl0dW5nZW4gKHouQi4gdm9uIGdlbMO2c2NodGVuIFNlaXRlbikgaW5rbHVzaXZlIGRlciBNw7ZnbGljaGtlaXQsIGRpZSBSZWdlbG4gaW4gcmVndWzDpHJlbiBBdXNkcsO8Y2tlbiBhbnp1Z2ViZW4uPC9saT4NCgk8bGk+NDA0LUZlaGxlciBUcmFja2luZyAoYXVjaCB2b24gQmlsZGVybiwgUERGLCBldGMuKSAtIGlua2x1c2l2ZSBJZ25vcmllci1GaWx0ZXIgdW5kIEFua27DvHBmdW5nIGFuIGRpZSAzMDEtRnVua3Rpb24uPC9saT4NCgk8bGk+QXV0b0xpZ2h0Qm94IC0gRXJzdGVsbHQgYXV0b21hdGlzY2ggZWluZSBMaWdodEJveCBWZXJrbsO8cGZ1bmcsIHdlbm4gc2llIGVpbiBCaWxkIGluIGRlbiBJbmhhbHQgZWluZsO8Z2VuIHVuZCB2ZXJrbGVpbmVybi48L2xpPg0KCTxsaT5Tb2NpYWxTaGFyZVByaXZhY3kgLSBQcml2YXRzcGjDpHJlIGltIFNvY2lhbCBNZWRpYSBCZXJlaWNoIGR1cmNoIGRpZSAyLUtsaWNrIFJlZ2VsIHNpY2hlcnN0ZWxsZW4uPC9saT4NCgk8bGk+VHdpdHRlcmZlZWQgLSBaZWlndCBkZW4gVHdpdHRlcmZlZWQgZWluZXMgQmVudXR6ZXJzIGFuLiBEYXp1IGvDtm5uZW4gdmVyc2NoaWVkZW5lIFRlbXBsYXRlcyBhbmdlbGVndCB3ZXJkZW4uPC9saT4NCgk8bGk+dGFpbCBGdW5rdGlvbmFsaXTDpHQgZsO8ciBMaXZlLUxvZ2dpbmc8L2xpPg0KCTxsaT5TbWFydHkgLSBDb250ZW50IEZ1bmt0aW9uZW48L2xpPg0KCTxsaT5TbWFydHkgLSBQbHVnaW5zPC9saT4NCgk8L3VsPg0KCQ0KCTxoMz5TdXBwb3J0PC9oMz4NCgk8cD5EaWVzZXMgTW9kdWwgYmVzaXR6dCBrZWluZW4ga29tbWVyemllbGxlbiBTdXBwb3J0LiBKZWRvY2ggZ2lidCBlcyBlaW5pZ2UgQW5sYXVmc3RlbGxlbiBmw7xyIEhpbGZlc3RlbGx1bmdlbjo8L3A+DQoJPHVsPg0KCTxsaT5Gw7xyIGRpZSBuZXVlc3RlIFZlcnNpb24gZGllc2VzIE1vZHVsZXMsIEZBUXMsIG9kZXIgdW0gZWluZW4gRmVobGVyIHp1IGJlcmljaHRlbiwgYmVzdWNoZW4gU2llIGJpdHRlIGRpZSBXZWJzZWl0ZW4gdm9uIENNUyBtYWRlIHNpbXBsZTogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLmRlPC9saT4NCgk8bGk+WnVzw6R0emxpY2hlIERpc2t1c3Npb25lbiDDvGJlciBkaWVzZXMgTW9kdWwga8O2bm5lbiBhdWNoIGltIEZvcnVtIGdlZnVuZGVuIHdlcmRlbjogPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUvdmlld2ZvcnVtLnBocD9pZD05IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUvdmlld2ZvcnVtLnBocD9pZD05PC9hPjwvbGk+DQoJPGxpPkRlciBBdXRvciwgTHVrYXMgQmxhdHRlciwga2FubiDDvGJlciBzZWluZSBXZWJzZWl0ZSBlcnJlaWNodCB3ZXJkZW46IDxhIGhyZWY9Imh0dHA6Ly93d3cuYmxhdHRlcnRlY2guY2giIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmJsYXR0ZXJ0ZWNoLmNoPC9hPjwvbGk+DQoJPGxpPkRlciBBdXRvciwgQW5kaSBQZXR6b2xkdCwga2FubiDDvGJlciBzZWluZSBXZWJzZWl0ZSBlcnJlaWNodCB3ZXJkZW46IDxhIGhyZWY9Imh0dHA6Ly9hbmRpbWluaXN0cmF0b3IuZGUvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2FuZGltaW5pc3RyYXRvci5kZTwvYT48L2xpPg0KCTxsaT5BdcOfZXJkZW0ga2FubiBkZXIgQXV0b3Igw7xiZXIgc2VpbmUgRU1haWwtQWRyZXNzZSBlcnJlaWNodCB3ZXJkZW4uPC9saT4NCgk8L3VsPg0KCQ0KCTxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KCTxwPkNvcHlyaWdodCDCqSAyMDExLCBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4gdW5kIEFuZGkgUGV0em9sZHQgPGFuZGlAcGV0em9sZHQubmV0Pi4gQWxsZSBSZWNodGUgdm9yYmVoYWx0ZW4uPC9wPg0KCTxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgR1BMIChHTlUgUHVibGljIExpY2Vuc2UpIHZlcsO2ZmZlbnRsaWNodC4gU2llIG3DvHNzZW4gZGllc2VyIExpemVueiB6dXN0aW1tZW4sIGJldm9yIFNpZSBkaWVzZXMgTW9kdWwgYmVudXR6ZW4uPC9wPg0KCQ0KICA8L2Rpdj4NCiAgPGRpdiBpZD0icmVkaXJlY3RfYyI+DQoJPGgzPldpZSBiZW51dHplIGljaCBkaWUgMzAxLVdlaXRlcmxlaXR1bmdlbiB1bmQgZGFzIDQwNC1GZWhsZXJ0cmFja2luZz88L2gzPg0KCTxwPjxzdHJvbmc+MS4gS29uZmlndXJpZXJlIGRhcyBNb2R1bDwvc3Ryb25nPjwvcD4NCgk8cD5EYXMgTW9kdWwgaXN0IHBlciBkZWZhdWx0IMO8YmVyIGRpZSBFcmVpZ25pc3ZlcndhbHR1bmcgYmVyZWl0cyBha3Rpdi4gRGFzIGhlaXNzdCwgZGllIEZ1bmt0aW9uZW4gc2luZCBhdXRvbWF0aXNjaCBpbiBqZWRlbSBUZW1wbGF0ZSBha3Rpdi4gRGFkdXJjaCB3ZXJkZW4gYXVjaCBGZWhsZXIgaW0gQmFja2VuZCBtaXRnZWxvZ2d0LjwvcD4NCgk8cD5EdSBrYW5uc3QgYWJlciBpbiBkZW4gRWluc3RlbGx1bmdlbiBkaWUgVmVyd2VuZHVuZyBkZXIgRXJlaWduaXN2ZXJ3YWx0dW5nIGFic3RlbGxlbi4gU3RhdHRkZXNzZW4gbXVzcyBkZXIgTW9kdWxhdWZydWYgYW4gZGVuIEFuZmFuZyBkZXMvZGVyIFNlaXRlbi1UZW1wbGF0ZXMgZWluZ2VidW5kZW4gd2VyZGVuOjxiciAvPjxjb2RlPntUb29sQm94fTwvY29kZT48YnIgLz4NCglBbSBiZXN0ZW4gaXN0IGRpZXNlciBBdWZydWYgZ2xlaWNoIGhpbnRlciB7cHJvY2Vzc19wYWdlZGF0YX0gcGxhdHppZXJ0LjxiciAvPkFuZ2VibGljaCBzb2xsIGRhZHVyY2ggYXVjaCBkYXMgZWluZ2ViYXV0ZSBDYWNoaW5nIHZvbiBDTVNtcyBuaWNodCBtZWhyIGJlaGluZGVydCB3ZXJkZW4uPC9wPg0KCTxwPk51biBtdXNzdCBEdSBub2NoIGluIGRlbiBFaW5zdGVsbHVuZ2VuIGRlcyBNb2R1bHMgZGllIEZ1bmt0aW9uZW4gYWt0aXZpZXJlbiwgZGllIER1IGJlbnV0emVuIHdpbGxzdC48L3A+DQoJPHA+PHN0cm9uZz4yLiBGw7xnZSBSZWdlbG4gaW4gZGVuIE1vZHVsLUZ1bmt0aW9uZW4gaGluenU8L3N0cm9uZz48L3A+DQoJPHA+Tm9jaCBpbW1lciBtYWNodCBkYXMgTW9kdWwgZ2FyIG5pY2h0cy4gRHUgbXVzc3QgaW4gZGVuIGVpbnplbG5lbiBSZWl0ZXJuIGRlcyBNb2R1bHMgbm9jaCBEZWluZSBnZXfDvG5zY2h0ZW4gUmVnZWxuL0VpbnN0ZWxsdW5nZW4gbWFjaGVuLjwvcD4NCgkNCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImF1dG9saWdodGJveF9jIj4NCgk8aDM+V2llIGJlbnV0emUgaWNoIEF1dG9MaWdodEJveD88L2gzPg0KCTxwPkF1dG9saWdodGJveCBpc3QgZGllIGVpbmZhY2hzdGUgTcO2Z2xpY2hrZWl0IGVpbmUgTGlnaHRib3ggZWluZXMgQmlsZGVyIHp1IGVyemV1Z2VuLiBEYXMgR3J1bmRwcmluemlwIGZ1bmt0aW9uaWVydCBzbzo8L3A+DQoJPHA+QmVpbSBTcGVpY2hlcm4gZWluZXIgU2VpdGUsIGVpbmVzIEJsb2ctIG9kZXIgZWluZXMgTmV3c2VpbnRyYWdzIHdpcmQgZGVyIEluaGFsdCBuYWNoIEJpbGRlcm4gZHVyY2hzdWNodC4gRGFiZWkgdmVyZ2xlaWNodCBkYXMgU2NyaXB0IG9iIGRhcyBCaWxkIG1pdCBkZXIga29ycmVrdGVuIEdyw7Zzc2Ugb2RlciB2ZXJrbGVpbmVydCBlaW5nZWJ1bmRlbiBpc3QuIElzdCBkYXMgQmlsZCB2ZXJrbGVpbmVydCBlaW5nZWJ1bmRlbiwgd2lyZCBlaW4gVGh1bWJuYWlsIGdlbmVyaWVydCB1bmQgZGllIEJpbGQtVVJMIGF1ZiBkYXMgVGh1bWJuYWlsIGFuZ2VwYXNzdC4gWnVzw6R0emxpY2ggd2lyZCB1bSBkYXMgQmlsZCBlaW5lbiBMaW5rIGF1ZiBkYXMgT3JpZ2luYWxiaWxkIGVyc3RlbGx0LjwvcD4NCgkNCgk8cD48Yj5XaWUgbXVzcyBpY2ggZWluIEJpbGQgaW4gZGVuIFRleHQgZWluZsO8Z2VuIGRhbWl0IEF1dG9MaWdodEJveCBha3RpdiB3aXJkPzwvYj48L3A+DQoJPHA+SWRlYWwgd2lyZCBlaW4gQmlsZCB3ZWxjaGVzIGF1ZiBkZXIgV2Vic2VpdGUgZWluZ2Vmw7xndCB3aXJkIGF1ZiBlaW5lIHNpbm52b2xsZSBHcsO2c3NlIHZlcmtsZWluZXJ0LiBPcHRpbWFsIGlzdCBlaW4gV2VydCB6d2lzY2hlbiA2MDAgLSAxMDAwIFBpeGVsIGF1ZiBkZXIgbMOkbmdlcmVuIEthbnRlLiBEYW5hY2gga2FubiBkaWVzZXMgQmlsZCBtaXR0ZWxzIE1pY3JvVGlueSAvIFRpbnlNQ0UgaW4gZGVuIFRleHQgZWluZ2Vmw7xndCB3ZXJkZW4uIE1pdHRlbHMgVmVyw6RuZGVydW5nIGRlciBHcsO2c3NlIGRhcyBCaWxkIGF1ZiBkaWUgb3B0aW1hbGUgR3LDtnNzZSB2ZXJrbGVpbmVybi48L3A+DQoJPHA+QmVpbSBzcGVpY2hlcm4gZXJrZW5udCBudW4gQXV0b0xpZ2h0Qm94LCBkYXNzIGVpbiBCaWxkIHZlcmtsZWluZXJ0IGVpbmdlZsO8Z3Qgd3VyZGUgdW5kIGVyc2V0enQgZGllc2VzIEJpbGQgbWl0IGVpbmVtIFRodW1ibmFpbCB1bmQgZXJzdGVsbHQgZWluZW4gTGluayBhdWYgZGFzIE9yaWdpbmFsYmlsZC48L3A+IA0KCQ0KCTxwPjxiPkZ1bmt0aW9uYWxpdMOkdDwvYj48L3A+DQoJPHVsPg0KCQk8bGk+QXV0b0xpZ2h0Qm94IG1vZGlmaXppZXJ0IEluaGFsdGUgKGluIGplZGVtIEluaGFsdHNibG9jayksIE5ld3NlaW50csOkZ2UgdW5kIENHQmxvZyBJbmhhbHRlPC9saT4NCgkJPGxpPkVudGRlY2t0IEF1dG9MaWdodEJveCBkaWUgR3LDtnNzZW7DpG5kZXJ1bmcgZWluZXMgYmVzdGVoZW5kZW4gQmlsZGVzLCBzbyB3aXJkIGRhcyBUaHVtYm5haWwgYXV0b21hdGlzY2ggaW4gZGVyIG5ldWVuIHJpY2h0aWdlbiBHcsO2c3NlIGVpbmdlYnVuZGVuLjwvbGk+DQoJCTxsaT5FcyBrYW5uIGVpbiByZWw9IG9kZXIgZWluIGNsYXNzPSBBdHRyaWJ1dGUgZGVmaW5pZXJ0IHdlcmRlbjwvbGk+DQoJCTxsaT5PcHRpb25hbCBrYW5uIGRhcyBKYXZhU2NyaXB0IGRlciBMaWdodGJveCBkaXJla3QgaW0gTW9kdWwgZ2VudXR6dCB3ZXJkZW48L2xpPg0KCQk8bGk+SW4gSmF2YXNjcmlwdCB1bmQgU3R5bGVzaGVldCBrw7ZubmVuIFNtYXJ0eS1WYXJpYWJsZW4gaW4gZGVyIEZvcm0gW1tyb290X3VybF1dIGdlbnV0enQgd2VyZGVuPC9saT4NCgkJPGxpPkF1dG9tYXRpc2NoZSBFaW5iaW5kdW5nIGRlcyBTdHlsZXNoZWV0cyB1bmQgZGVzIEphdmFTY3JpcHRzIGRlciBMaWdodGJveCBpbnMgVGVtcGxhdGU8L2xpPg0KCTwvdWw+CQ0KICA8L2Rpdj4NCiAgPGRpdiBpZD0ic29jaWFsc2hhcmVwcml2YWN5X2MiPg0KICA8aW1nIHNyYz0iLi4vbW9kdWxlcy9Ub29sQm94L2ltYWdlcy9oZWxwL3NvY2lhbHNoYXJlcHJpdmFjeTEucG5nIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgYWx0PSIyLUtsaWNrIFN5c3RlbSIgc3R5bGU9ImZsb2F0OiByaWdodCIgLz4NCiAgPGgzPldpZSBiZW51dHplIGljaCBTb2NpYWxTaGFyZVByaXZhY3k8L2gzPg0KICA8cD5Tb2NpYWxTaGFyZVByaXZhY3kgaXN0IGVpbiB2b24gaGVpc2UuZGUgdmVyw7ZmZmVudGxpY2hlcyBQbHVnaW4gd2VsY2hlcyBmw7xyIG1laHIgRGF0ZW5zY2h1dHogYmVpIFNvY2lhbG1lZGlhIEJ1dHRvbnMgc29yZ3QuIERhcyBQbHVnaW4gYmluZGV0IGRpZSBTb2NpYWxtZWRpYSBCdXR0b25zIHZvbiBGYWNlYm9vaywgVHdpdHRlciB1bmQgR29vZ2xlKyBlcnN0IGF1ZiBkZW4gYXVzZHLDvGNrbGljaGVuIFd1bnNjaCBkZXMgTnV0emVycyBlaW4uPGJyIC8+DQoJIEVpbiB3ZWl0ZXJlciBWb3J0ZWlsIGRpZXNlciBNZXRob2RlIGlzdCwgZGFzcyBkaWUgTGFkZWdlc2Nod2luZGlna2VpdCBlaW5lciBTZWl0ZSBuaWNodCB1bnRlciBkZW4gU29jaWFsbWVkaWEgQnV0dG9ucyBsZWlkZXQsIGRhIGJlaW0gZXJzdGVuIExhZGV2b3JnYW5nIGFsbGUgRGF0ZW4gZGlyZWt0IHZvbSBlaWdlbmVuIFNlcnZlciBnZWxhZGVuIHdlcmRlbi48L3A+DQoJIA0KCSA8cD5VbSBTb2NpYWxTaGFyZVByaXZheSB6dSBudXR6ZW4sIG11c3MgZGllIEVyd2VpdGVydW5nIHVudGVyICJFaW5zdGVsbHVuZ2VuIiBha3RpdmllcnQgd2VyZGVuLiBBbnNjaGxpZXNzZW4ga8O2bm5lbiBpbSBSZWl0ZXIgIlNvY2lhbFNoYXJlUHJpdmF5IiBpbmRpdmlkdWVsbGUgQW5wYXNzdW5nZW4gdm9yZ2Vub21tZW4gd2VyZGVuLiBFaW5nZWbDvGd0IHdlcmRlbiBkaWUgQnV0dG9ucyB3aWUgZm9sZ3Q6PC9wPg0KCSA8Y29kZT57VG9vbEJveCBtb2Q9InNvY2lhbHNoYXJlcHJpdmFjeSJ9PC9jb2RlPg0KCSANCgkgPHA+PGltZyBzcmM9Ii4uL21vZHVsZXMvVG9vbEJveC9pbWFnZXMvaGVscC9Tb2NpYWxzaGFyZXByaXZhY3kuanBnIiB3aWR0aD0iNTQ2IiBoZWlnaHQ9IjU0IiBhbHQ9IlNjcmVlbnNob3QgU29jaWFsU2hhcmVQcml2YWN5IiAvPjwvcD4NCgkgDQoJIDxwPkluIGRlbiBFaW5zdGVsbHVuZ2VuIGthbm4gZGVmaW5pZXJ0IHdlcmRlbiwgb2IgalF1ZXJ5IGdlbGFkZW4gd2VyZGVuIHNvbGwgb2RlciBuaWNodC4gRGllcyBpc3Qgd2ljaHRpZywgZGEgamUgbmFjaCBTZWl0ZSBqUXVlcnkgYmVyZWl0cyBpbiBkaWUgU2VpdGUgZWluZ2VidW5kZW4gd3VyZGUuIEluIGRpZXNlbSBGYWxsLCBtdXNzIGpRdWVyeSBuaWNodCBub2NobWFscyBnZWxhZGVuIHdlcmRlbi48L3A+DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJ0d2l0dGVyZmVlZF9jIj4NCgkgIDxpbWcgc3JjPSIuLi9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL2hlbHAvdHdpdHRlcmZlZWQucG5nIiB3aWR0aD0iMzUzIiBoZWlnaHQ9IjQ1NCIgYWx0PSJUd2l0dGVyZmVlZCIgc3R5bGU9ImZsb2F0OiByaWdodCIgLz4NCgkgIDxwPk1pdCBUd2l0dGVyZmVlZCBrw7ZubmVuIGthbm4gZGVyIEZlZWQgZWluZXMgVHdpdHRlci1BY2NvdW50cyBpbiBkaWUgV2Vic2VpdGUgZWluZ2VidW5kZW4gd2VyZGVuLiBEaWUgRGFyc3RlbGx1bmcgZGVzIEZlZWRzIGthbm4gaW4gZWluZW0gVGVtcGxhdGUgZGVmaW5pZXJ0IHdlcmRlbi48L3A+DQoJICA8aDM+V2llIGJlbnV0emUgaWNoIFR3aXR0ZXJmZWVkPC9oMz4NCgkgIDxwPlR3aXR0ZXJmZWVkIHdpcmQgd2llIGZvbGd0IGVpbmdlYnVuZGVuOjwvcD4NCgkgIDxjb2RlPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdmcmllbmRseScgY2FjaGV0aW1lPTEwICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGNvdW50PTUgdGVtcGxhdGU9J3R3aXR0ZXJmZWVkJyBkYXRlZm9ybWF0PSdkLm0uWSBIOmknICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHVzZXJuYW1lPSdsdWthc2JsYXR0ZXInIGxpc3Q9J3dlYmRlc2lnbicgY291bnQ9NSAmIzEyNTs8YnIgLz4NCgkJJiMxMjM7VG9vbEJveCBtb2Q9J3R3aXR0ZXJmZWVkJyBzZWFyY2g9JyNjbXNtcycgY291bnQ9MTAgJiMxMjU7DQoJICA8L2NvZGU+DQoJICANCgkgIDxwPkZvbGdlbmRlIFBhcmFtZXRlciBrw7ZubmVuIGdld8OkaGx0IHdlcmRlbjo8L3A+DQoJICA8dWw+DQoJICAJPGxpPnVzZXJuYW1lIC0gVHdpdHRlci1Vc2VybmFtZSAod2lyZCBkZXIgUGFyYW1ldGVyIHNlYXJjaCB2ZXJ3ZW5kZXQsIHNvIG11c3Mga2VpbiB1c2VybmFtZSBhbmdlZ2ViZW4gd2VyZGVuKTwvbGk+DQoJICAJPGxpPnRlbXBsYXRlIChvcHRpb25hbCkgLSBOYW1lIGRlcyBUZW1wbGF0ZSBkYXMgZ2VudXR6dCB3ZXJkZW4gc29sbC4gT2huZSBkaWVzZSBEZWZpbml0aW9uIHdpcmQgZGFzIFN0YW5kYXJkdGVtcGxhdGUgZ2VsYWRlbjwvbGk+DQoJICAJPGxpPmxpc3QgKG9wdGlvbmFsKSAtIE5hbWUgZWluZXIgTGlzdGUgZGVzIEJlbnV0emVycy4gSXN0IGRpZXNlciBQYXJhbWV0ZXIgYW5nZWdlYmVuLCB3aXJkIGRpZSBUaW1lbGluZSBkZXIgZ2V3w6RobHRlbiBMaXN0ZSBhbmd6ZWlndDwvbGk+DQoJICAJPGxpPnNlYXJjaCAob3B0aW9uYWwpIC0gU3VjaGJlZ3JpZmYgbmFjaCBkZW0gZGllIFR3aXR0ZXJhcGkgYWJnZWZyYWd0IHdpcmQgKG9obmUgQmVudXR6ZXJuYW1lKTwvbGk+DQoJICAJPGxpPmRhdGVmb3JtYXQgKG9wdGlvbmFsKSANCgkgIAkJPHVsPg0KCSAgCQkJPGxpPmZyaWVuZGx5ID0gU3RhbmRhcmQtVHdpdHRlcmZvcm1hdCBpbiBkZXIgQXJ0IDxlbT4zIGRheXMgYWdvPC9lbT48L2xpPg0KCSAgCQkJPGxpPmQubS5ZIEg6bTpzIC0gRGF0ZXRpbWUgRm9ybWF0aWVydW5nIG5hY2ggPGEgaHJlZj0iaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9kYXRldGltZS5jcmVhdGVmcm9tZm9ybWF0LnBocCI+RGVmaW5pdGlvbiBwaHAubmV0PC9hPjwvbGk+DQoJICAJCTwvdWw+DQoJICAJPC9saT4NCgkgIAk8bGk+Y2FjaGV0aW1lIChvcHRpb25hbCkgLSBaZWl0IGluIE1pbnV0ZW4gaW4gd2VsY2hlciBkZXIgVHdpdHRlcmZlZWQgaW0gQ2FjaGUgYWJnZWxlZ3QgYmxlaWJ0LiBTdGFuZGFyZDogMTAgTWludXRlbjsgTWluaW1hbCAxIE1pbnV0ZTwvbGk+DQoJICA8L3VsPg0KCSAgCQ0KCSAgPHA+SW0gVGVtcGxhdGUgc3RlaGVuIGZvbGdlbmRlIFZhcmlhYmxlbiB6dXIgVmVyZsO8Z3VuZzo8L3A+DQoJICA8Y29kZT4NCgkJICAmIzAzNjtpdGVtLSZndDt0ZXh0PGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtkYXRlPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyYXdkYXRlPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtpbWdfdXJsPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtpbWdfdXJsX2h0dHBzPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzY3JlZW5uYW1lPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzY3JlZW5uYW1lX3VybDxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7YXV0aG9yPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtzb3VyY2U8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2xvY2F0aW9uPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X2NvdW50PGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X3NjcmVlbm5hbWU8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfYXV0aG9yPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtmYXZvcml0ZWQ8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2RhdGVfbGluazxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmVwbHlfbGluazxici8+DQoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmV0d2VldF9saW5rPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtmYXZvcml0ZV9saW5rPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXBseV9yYXdsaW5rPGJyLz4NCgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X3Jhd2xpbms8YnIvPg0KCQkgICYjMDM2O2l0ZW0tJmd0O2Zhdm9yaXRlX3Jhd2xpbmsNCgkgIDwvY29kZT4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InRhaWxfYyI+DQogIAk8aDM+dGFpbCAtIGVpbiBwaHAvanF1ZXJ5IGJhc2llcmVuZGVzIExvZ2dpbmdzeXN0ZW08L2gzPg0KICAJPHA+dGFpbCBpc3QgdW50ZXIgTGludXgvVW5peCBlaW4gS29uc29sZW5wcm9ncmFtbSBtaXQgd2VsY2hlbSBMb2dmaWxlcyBsaXZlIMO8YmVyd2FjaHQgd2VyZGVuIGvDtm5uZW4uIERhcyBoZWlzc3QsIHNvYmFsZCBkZW0gTG9nZmlsZSBlaW5lIFplaWxlIGhpbnp1Z2Vmw7xndCB3dXJkZSwgd2lyZCBkaWVzZSBzb2ZvcnQgbWl0IHRhaWwgYW5nZXplaWd0LCB3ZW5uIGRhcyBMb2dmaWxlDQogIAnDvGJlcndhY2h0IHdpcmQuIERpZSB0YWlsIEZ1bmt0aW9uYWxpdMOkdCB2b24gVG9vbEJveCBzdGVsbHQgZWluZSBnYW56IMOkaG5saWNoZSBGdW5rdGlvbiB6dXIgVmVyZsO8Z3VuZy4gPC9wPg0KICAJPGgzPldpZSBmdW5rdGlvbmllcnQncz88L2gzPg0KICAJPHA+WnVlcnN0IG11c3MgZWlubWFsIGRhcyBMb2dmaWxlIG1pdCBEYXRlbiBnZXNwaWVzZW4gd2VyZGVuLiBEYXp1IGdpYnQgZXMgendlaSBNw7ZnbGljaGtlaXRlbjo8L3A+DQogIAk8cD48Yj5FaW5iYXUgaW4gZWluIE1vZHVsLCBlaW4gUGx1Z2luIG9kZXIgZWluZW4gVURUPC9iPjwvcD4NCiAgCTxwPkZvbGdlbmRlciBDb2RlIG11c3MgZGF6dSBlaW5nZWJhdXQgd2VyZGVuOjwvcD4NCiAgCTxjb2RlPgkmIzAzNjtsb2c9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVG9vbEJveCcpOzxiciAvPg0KCQkJJiMwMzY7bG9nLT5zZXRMb2dGaWxlKCd0YkxvZycpOyAvLyBPcHRpb25hbC4gSGllciBrYW5uIGRlciBOYW1lIGRlcyBMb2dmaWxlcyBmZXN0Z2VsZWd0IHdlcmRlbjxiciAvPg0KCQkJJiMwMzY7bG9nLT5sd3JpdGUoIlNjaHJlaWJlbiB3aXIgd2FzIGlucyBMb2ciKTs8YnIgLz4NCgk8L2NvZGU+DQogIAkNCgk8cD48YnIgLz5BbHMgUGFyYW1ldGVyIGvDtm5uZW4gbm9ybWFsZSBWYXJpYWJsZW4sIE9iamVrdGUgb2RlciBhdWNoIEFycmF5J3Mgw7xiZXJnZWJlbiB3ZXJkZW4uPC9wPg0KCTxwPjxiPkVpbmJhdSBpbiBlaW4gVGVtcGxhdGU8L2I+PC9wPg0KICAJPHA+Rm9sZ2VuZGVyIFRhZyBrYW5uIGluIGVpbiBUZW1wbGF0ZSBlaW5nZWJhdXQgd2VyZGVuOjwvcD4NCiAgCTxjb2RlPnt0YldyaXRlTG9nIGxvZz0id2FzIGbDvHIncyBsb2ciIGxvZ0ZpbGU9InRiTG9nIn08L2NvZGU+DQogIAk8cD48YnIgLz5QYXJhbWV0ZXI6PC9wPg0KICAJPHVsPg0KICAJPGxpPmxvZyAtIFRleHQgZGVyIGlucyBMb2dmaWxlIGdlc2NocmllYmVuIHdlcmRlbiBzb2xsPC9saT4NCiAgCTxsaT5bbG9nRmlsZV0gLSAob3B0aW9uYWwpIGhpZXIga2FubiBkZXIgTmFtZSBkZXMgTG9nZmlsZXMgZGVmaW5pZXJ0IHdlcmRlbjwvbGk+DQogIAk8L3VsPg0KICANCiAgCTxoMz5Mb2dmaWxlIMOcYmVyd2FjaHVuZzwvaDM+DQogIAk8cD5JbSBSZWl0ZXIgInRhaWwgTG9nIiBrYW5uIG51biBkYXMgTG9nZmlsZSDDvGJlcndhY2h0IHdlcmRlbi4gRGF6dSBpbSBEcm9wZG93bmZlbGQgZGFzIGdld8O8bnNjaHRlIExvZ2ZpbGUgd8OkaGxlbiwgc293aWUgZGllIEFuemFobCBkZXIgWmVpbGVuLCB3ZWxjaGUgYmVpbSBlcnN0ZW4gbGFkZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsLCBkZWZpbmllcmVuLiBFcyBrw7ZubmVuIA0KICAJcGFyYWxsZWwgYXVjaCBtZWhyZXJlIExvZ2ZpbGVzIMO8YmVyd2FjaHQgd2VyZGVuPC9wPg0KICAJDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzbWFydHl0b29sc19jIj4NCiAgCTxoMz5XZWxjaGUgRnVua3Rpb25lbiBoYXQgZGFzIFNtYXJ0eS1PYmpla3Q/PC9oMz4NCgk8cD5Ub29sQm94IGVudGjDpGx0IGVpbmUgZWlnZW5lIFNtYXJ0eS1LbGFzc2UgdW0gdmVyc2NoaWVkZW5lIENvbnRlbnQgRnVua3Rpb25lbiBhdWZ6dXJ1ZmVuLCBzb3dpZSBlaW5pZ2UgUGx1Z2lucyB3ZWxjaGUgei5CLiB6dXNhbW1lbiBtaXQgQWR2YW5jZWRDb250ZW50IGVpbmdlc2V0enQgd2VyZGVuIGvDtm5uZW4uPC9wPg0KCTxoMz5XaWUgd2VyZGVuIGRpZSBTbWFydHktRnVua3Rpb25lbiB1bmQgZGllIFBsdWdpbnMgZWluZ2VzZXR6dD88L2gzPg0KCTxwPk5hY2ggZGVyIE1vZHVsaW5zdGFsbGF0aW9uIGlzdCBkYXMgU21hcnR5LU9iamVrdCAidGJ0b29scyIgaW4gZGVuIFRlbXBsYXRlcywgR2xvYmFsZW4gSW5oYWx0c2JsJm91bWw7Y2tlbiB1bmQgdmVyc2NoaWVkZW5lbiB1bmQgZGVuIE1vZHVsLVRlbXBsYXRlcyB2ZXJmw7xnYmFyLiBEaWVzZXMgU21hcnR5LU9iamVrdCBoYXQgdmVyc2NoaWVkZW5lIEZ1bmt0aW9uZW4sIGRpZSBTaWUgamVkZXJ6ZWl0IGF1ZnJ1ZmVuIGsmb3VtbDtubmVuLjwvcD4NCgk8aDQ+VmVyZiZ1dW1sO2diYXJlIEZ1bmt0aW9uZW46PC9oND4NCgk8cD4mbmJzcDs8L3A+DQoJPHVsPg0KCTxsaT48c3Ryb25nPnNlbGZVcmw8L3N0cm9uZz4oWyYjMDM2O2Fzc2lnbl0pDQoJICAgIDxwPkdpYnQgZGllIGFrdHVlbGxlIFVSTCB6dXImdXVtbDtjazwvcD4NCgkgICAgPHA+QXJndW1lbnRlOg0KCSAgICAgICA8dWw+DQoJICAgICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQoJICAgICAgPC91bD4gIA0KCSAgICA8YnIvPjwvcD4NCgkgICAgIDxwPkJlaXNwaWVsOjxici8+DQoJICAgIDxwcmU+RGllIFVSTCBpc3QgJiMxMjM7dGJ0b29sczo6c2VsZlVybCgpJiMxMjU7PC9wcmU+DQoJPC9saT4NCgkNCgkNCgk8bGk+PHN0cm9uZz5nZXRQYWdlVXJsPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQoJICAgIDxwPkdpYnQgZGllIFVSTCBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSAob2RlciBkZXIgYWt0dWVsbGVuIFNlaXRlKSB6dXLDvGNrPC9wPg0KCSAgICA8cD5Bcmd1bWVudGU6DQoJICAgICAgIDx1bD4NCgkgICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBkZXIgU2VpdGVuLUFsaWFzIG9kZXIgZGllIElEIGRlciBTZWl0ZSwgZGVyZW4gJnV1bWw7YmVyZ2VvcmRuZXRlIFNlaXRlIGdlZnVuZGVuIHdlcmRlbiBzb2xsLiBXZW5uIGtlaW4gV2VydCBmZXN0Z2VsZWd0IHd1cmRlLCB3aXJkIGRpZSBha3R1ZWxsZSBTZWl0ZSB2ZXJ3ZW5kZXQuPC9saT4NCiAgICAgICAJCTxsaT5bJiMwMzY7YXNzaWduXSAgLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4gICAgDQoJICAgIDxici8+PC9wPg0KCSAgICA8cD5CZWlzcGllbDo8YnIvPg0KCSAgICA8cHJlPkRpZSBVUkwgZGVyIFNlaXRlICdob21lJyBpc3QgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZVVybCgnaG9tZScpJiMxMjU7PC9wcmU+DQoJICAgIDwvcD4NCgk8L2xpPg0KPGxpPjxzdHJvbmc+aXNEZWZhdWx0UGFnZTwvc3Ryb25nPigmIzAzNjthbGlhcyxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5QcsO8ZnQgb2IgZGllIFNlaXRlIGFscyBTdGFydHNlaXRlIGRlZmluaWVydCBpc3Q8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7YWxpYXMgLSBEZXIgQWxpYXMgb2RlciBkaWUgSUQgZGVyIFNlaXRlLCBkZXJlbiBTdGF0dXMgenVyJnV1bWw7Y2sgZ2VnZWJlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyLz4NCiAgICA8cHJlPiYjMTIzO2lmIHRidG9vbHM6OmlzRGVmYXVsdFBhZ2UoJiMwMzY7cGFnZV9hbGlhcykmIzEyNTtTaWUgc2luZCBhdWYgZGVyIFN0YXJ0c2VpdGUmIzEyMztlbHNlJiMxMjU7U2llIHNpbmQgbmljaHQgYXVmIGRlciBTdGFydHNlaXRlJiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCjxsaT48c3Ryb25nPmdldFBhcmVudEFsaWFzPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+R2lidCBkZW4gQWxpYXMgZGVyICZ1dW1sO2Jlcmdlb3JkbmV0ZW4gU2VpdGUgZWluZXIgZmVzdGdlbGVndGVuIFNlaXRlIHp1ciZ1dW1sO2NrLiBGYWxscyBrZWluZSAmdXVtbDtiZXJnZW9yZG5ldGUgU2VpdGUgdm9yaGFuZGVuIGlzdCwgd2lyZCBlaW4gbGVlcmVyIFN0cmluZyB6dXImdXVtbDtjayBnZWdlYmVuLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBkZXIgU2VpdGVuLUFsaWFzIG9kZXIgZGllIElEIGRlciBTZWl0ZSwgZGVyZW4gJnV1bWw7YmVyZ2VvcmRuZXRlIFNlaXRlIGdlZnVuZGVuIHdlcmRlbiBzb2xsLiBXZW5uIGtlaW4gV2VydCBmZXN0Z2VsZWd0IHd1cmRlLCB3aXJkIGRpZSBha3R1ZWxsZSBTZWl0ZSB2ZXJ3ZW5kZXQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+RGVyIEFsaWFzIGRlciAmdXVtbDtiZXJnZW9yZG5ldGVuIFNlaXRlIGlzdCAmIzEyMzt0YnRvb2xzOjpnZXRQYXJlbnRBbGlhcygpJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0TGV2ZWxBbGlhczwvc3Ryb25nPigmIzAzNjtsZXZlbCxbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkdpYnQgZGVuIEFsaWFzIGRlciAmdXVtbDtiZXJnZW9yZG5ldGVuIFNlaXRlIGVpbmVyIGJlc3RpbW10ZW4gRWJlbmUgKExldmVsKSB6dXImdXVtbDtjay4gRmFsbHMgZGllIGFuZ2VnZWJlbmUgRWJlbmUgaMO2aGVyIGlzdCBhbHMgZGllIGRlciBha3R1ZWxsZW4gU2VpdGUsIHdpcmQgZWluIGxlZXJlciBTdHJpbmcgenVyJnV1bWw7Y2sgZ2VnZWJlbi48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7bGV2ZWwgICAtIE51bW1lciBkZXIgRWJlbmUgdm9uIHdlbGNoZXIgZGVyIEFsaWFzIHp1csO8Y2tnZWdlYmVuIHdlcmRlbiBzb2xsICgxID0gMS4gRWJlbmUsIDIgPSAyLiBFYmVuZSwgZXRjLik8L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBkZXIgU2VpdGVuLUFsaWFzIG9kZXIgZGllIElEIGRlciBTZWl0ZSwgZGVyZW4gJnV1bWw7YmVyZ2VvcmRuZXRlIFNlaXRlIGRlciBkZWZpbmllcnRlbiBFYmVuZSBnZWZ1bmRlbiB3ZXJkZW4gc29sbC4gIFdlbm4ga2VpbiBXZXJ0IGZlc3RnZWxlZ3Qgd3VyZGUsIHdpcmQgZGllIGFrdHVlbGxlIFNlaXRlIHZlcndlbmRldC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAgIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+RGVyIFNlaXRlbi1BbGlhcyBkZXIgJnV1bWw7YmVyZ2VvcmRuZXRlbiBkZXIgU2VpdGUgYXVmIGRlciBFYmVuZSAxIGlzdCAmIzEyMzt0YnRvb2xzOjpnZXRMZXZlbEFsaWFzKDEpJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0Um9vdEFsaWFzPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+R2lidCBkZW4gQWxpYXMgZGVyICZ1dW1sO2Jlcmdlb3JkbmV0ZW4gU2VpdGUgZGVyIDEuIEViZW5lIHp1ciZ1dW1sO2NrLiBGYWxscyBrZWluZSAmdXVtbDtiZXJnZW9yZG5ldGVuIFNlaXRlbiBleGlzdGllcmVuLCB3aXJkIGVpbiBsZWVyZXIgU3RyaW5nIHp1ciZ1dW1sO2NrIGdlZ2ViZW4uPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIGRlciBTZWl0ZW4tQWxpYXMgb2RlciBkaWUgSUQgZGVyIFNlaXRlLCBkZXJlbiAmdXVtbDtiZXJnZW9yZG5ldGUgU2VpdGUgZGVyIDEuIEViZW5lIGdlZnVuZGVuIHdlcmRlbiBzb2xsLiAgV2VubiBrZWluIFdlcnQgZmVzdGdlbGVndCB3dXJkZSwgd2lyZCBkaWUgYWt0dWVsbGUgU2VpdGUgdmVyd2VuZGV0LjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxici8+DQogICAgPHByZT5EZXIgU2VpdGVuLUFsaWFzIGRlciBvYmVyc3RlbiwgJnV1bWw7YmVyZ2VvcmRuZXRlbiBTZWl0ZSBpc3QgJiMxMjM7dGJ0b29sczo6Z2V0Um9vdEFsaWFzKCkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlVGl0bGU8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5HaWJ0IGRlbiBUaXRlbCBlaW5lciBmZXN0Z2VsZWd0ZW4gU2VpdGUgenVyJnV1bWw7Y2suPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIERlciBTZWl0ZW4tQWxpYXMgb2RlciBkaWUgSUQgZGVyIFNlaXRlLCBkZXJlbiBUaXRlbCBnZWZ1bmRlbiB3ZXJkZW4gc29sbC4gV2VubiBrZWluIFdlcnQgZmVzdGdlbGVndCB3dXJkZSwgd2lyZCBkaWUgYWt0dWVsbGUgU2VpdGUgdmVyd2VuZGV0LjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dICAgLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxici8+DQogICAgPHByZT5EZXIgVGl0ZWwgZGVyIGFrdHVlbGxlbiBTZWl0ZSBpc3QgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZVRpdGxlKCkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlTWVudXRleHQ8L3N0cm9uZz4oWyYjMDM2O2FsaWFzXSxbJiMwMzY7YXNzaWduXSkNCiAgICA8cD5HaWJ0IGRlbiBNZW4mdXVtbDt0ZXh0IGVpbmVyIGZlc3RnZWxlZ3RlbiBTZWl0ZSB6dXImdXVtbDtjay48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgRGVyIFNlaXRlbi1BbGlhcyBvZGVyIGRpZSBJRCBkZXIgU2VpdGUsIGRlc3NlbiBNZW4mdXVtbDt0ZXh0IGdlZnVuZGVuIHdlcmRlbiBzb2xsLiBXZW5uIGtlaW4gV2VydCBmZXN0Z2VsZWd0IHd1cmRlLCB3aXJkIGRpZSBha3R1ZWxsZSBTZWl0ZSB2ZXJ3ZW5kZXQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gICAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyLz4NCiAgICA8cHJlPkRlciBNZW4mdXVtbDt0ZXh0IGRlciBha3R1ZWxsZSBTZWl0ZSBpc3QgJiMxMjM7dGJ0b29sczo6Z2V0UGFnZU1lbnV0ZXh0KCkmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5oYXNDaGlsZHJlbjwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPlByJnV1bWw7ZnQsIG9iIGVpbmUgZmVzdGdlbGVndGUgU2VpdGUgdW50ZXJnZW9yZG5ldGUgU2VpdGVuIGhhdC48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgZGVyIFNlaXRlbi1BbGlhcyBvZGVyIGRpZSBJRCBkZXIgenUgcHImdXVtbDtmZW5kZW4gU2VpdGUuIFdlbm4ga2VpbiBXZXJ0IGZlc3RnZWxlZ3Qgd3VyZGUsIHdpcmQgZGllIGFrdHVlbGxlIFNlaXRlIHZlcndlbmRldC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyLz4NCiAgICA8cHJlPiYjMTIzO3RidG9vbHM6Omhhc0NoaWxkcmVuKCIiLCJoYXNDaGlsZHJlbiIpJiMxMjU7DQogICAgCXtpZiAmIzAzNjtoYXNDaGlsZHJlbn1EaWUgYWt0dWVsbGUgU2VpdGUgaGF0IHVudGVyZ2VvcmRuZXRlIFNlaXRlbntlbHNlfURpZSBha3R1ZWxsZSBTZWl0ZSBoYXQga2VpbmUgdW50ZXJnZW9yZG5ldGVuIFNlaXRlbnsvaWZ9PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+Z2V0Rmlyc3RDaGlsZEFsaWFzPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O2Fzc2lnbl0sWyYjMDM2O29ubHlJbk1lbnVdID0gdHJ1ZSkNCiAgICA8cD5HaWJ0IGRlbiBBbGlhcyBkZXIgZXJzdGVuIHVudGVyZ2VvcmRuZXRlbiBTZWl0ZSB6dXLDvGNrLiBJc3QgZGllIGVyc3RlIFNlaXRlIGVpbiBTZWN0aW9uaGVhZGVyLCBUcmVubmVyIG9kZXIgZXh0ZXJuZXIgTGluaywgd2lyZCBkaWUgZXJzdGUgVW50ZXJzZWl0ZSBkZXIgZXJzdGVuIFNlaXRlIG9kZXIgZGllIG7DpGNoc3RlIFNlaXRlIGdld8OkaGx0PC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlsmIzAzNjthbGlhc10gLSAob3B0aW9uYWwpIGRlciBTZWl0ZW4tQWxpYXMgb2RlciBkaWUgSUQgZGVyIHp1IHByJnV1bWw7ZmVuZGVuIFNlaXRlLiBXZW5uIGtlaW4gV2VydCBmZXN0Z2VsZWd0IHd1cmRlLCB3aXJkIGRpZSBha3R1ZWxsZSBTZWl0ZSB2ZXJ3ZW5kZXQuPC9saT4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjtvbmx5SW5NZW51XSAtIChvcHRpb25hbCkgTnVyIFNlaXRlbiB3ZWxjaGUgaW0gTWVuw7wgc2ljaHRiYXIgc2luZC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+JiMxMjM7dGJ0b29sczo6Z2V0Rmlyc3RDaGlsZEFsaWFzKCIiLCJmaXJzdENoaWxkQWxpYXMiKSYjMTI1Ow0KICAgIAlEZXIgQWxpYXMgZGVyIGVyc3RlbiBVbnRlcnNlaXRlIGlzdCB7JiMwMzY7Zmlyc3RDaGlsZEFsaWFzfTwvcHJlPg0KICAgIDwvcD4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPmdldENoaWxkcmVuPC9zdHJvbmc+KFsmIzAzNjthbGlhc10sWyYjMDM2O3Nob3dpbmFjdGl2ZV0sWyYjMDM2O2Fzc2lnbl0pDQogICA8cD5HaWJ0IGVpbiBBcnJheSB6dXImdXVtbDtjaywgd2VsY2hlcyBJbmZvcm1hdGlvbmVuICZ1dW1sO2JlciBkaWUgdW50ZXJnZW9yZG5ldGVuIFNlaXRlbiBlbnRoJmF1bWw7bHQgKGZhbGxzIHZvcmhhbmRlbik8L3A+DQogICAgPHA+QXJndW1lbnRzOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2FsaWFzXSAtIChvcHRpb25hbCkgZGVyIFNlaXRlbi1BbGlhcyBvZGVyIGRpZSBJRCBkZXIgenUgcHImdXVtbDtmZW5kZW4gU2VpdGUuIFdlbm4ga2VpbiBXZXJ0IGZlc3RnZWxlZ3Qgd3VyZGUsIHdpcmQgZGllIGFrdHVlbGxlIFNlaXRlIHZlcndlbmRldC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7c2hvd2luYWN0aXZlXSAtIChvcHRpb25hbCkgaGllciBrYW5uIGVpbmdlc3RlbGx0IHdlcmRlbiwgb2IgaW5ha3RpdmUgU2VpdGVuIGltIEVyZ2VibmlzIGVudGhhbHRlbiBzZWluIHNvbGxlbiAoU3RhbmRhcmQgaXN0IGZhbHNlKS48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8L3VsPiAgDQogICAgPGJyLz48L3A+DQogICAgPHA+RmVsZGVyOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+YWxpYXMgLSBkZXIgU2VpdGVuLUFsaWFzIGRlciB1bnRlcmdlb3JkbmV0ZW4gU2VpdGU8L2xpPg0KICAgICAgIDxsaT5pZCAtIGRpZSBTZWl0ZW4tSUQgZGVyIHVudGVyZ2VvcmRuZXRlbiBTZWl0ZTwvbGk+DQogICAgICAgPGxpPnRpdGxlIC0gZGVyIFNlaXRlbnRpdGVsIGRlciB1bnRlcmdlb3JkbmV0ZW4gU2VpdGU8L2xpPg0KICAgICAgIDxsaT5tZW51dGV4dCAtIGRlciBNZW4mdXVtbDt0ZXh0IGRlciB1bnRlcmdlb3JkbmV0ZW4gU2VpdGU8L2xpPg0KICAgICAgIDxsaT5zaG93X2luX21lbnUgLSBpc3QgZGllIFVudGVyc2VpdGUgaW0gTWVuw7wgc2ljaHRiYXIuPC9saT4NCiAgICAgICA8bGk+YWN0aXZlIC0gaXN0IGRpZSBVbnRlcnNlaXRlIGFrdGl2LjwvbGk+DQogICAgICAgPGxpPnR5cGUgLSBUeXAgZGVzIENvbnRlbnQgRWxlbWVudHMuPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxici8+DQogICAgPHByZT4NCiYjMTIzO3RidG9vbHM6OmdldENoaWxkcmVuKCIiLCIiLCJjaGlsZHJlbiIpJiMxMjU7DQp7aWYgY291bnQoJiMwMzY7Y2hpbGRyZW4pJiMxMjU7DQogICB7Zm9yZWFjaCBmcm9tPSYjMDM2O2NoaWxkcmVuIGl0ZW09ImNoaWxkIn0NCiAgICAgIHtpZiAmIzAzNjtjaGlsZC5zaG93X2luX21lbnV9DQogICAgICAgIFVudGVyZ2VvcmRuZXRlIFNlaXRlOiAgaWQgPSAmIzEyMzsmIzAzNjtjaGlsZC5pZCYjMTI1OyBBbGlhcyA9ICYjMTIzOyYjMDM2O2NoaWxkLmFsaWFzJiMxMjU7PGJyIC8+DQogICAgICB7L2lmfQ0KICAgey9mb3JlYWNofQ0Key9pZn0NCiAgICA8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5nZXRQYWdlQ29udGVudDwvc3Ryb25nPigmIzAzNjthbGlhcyxbJiMwMzY7YmxvY2tdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkdpYnQgZGVuIEluaGFsdCBlaW5lcyBmZXN0Z2VsZWd0ZW4gQ29udGVudC1CbG9ja3MgZWluZXIgYW5kZXJlbiBTZWl0ZSB6dXImdXVtbDtjay48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+JiMwMzY7YWxpYXMgLSBEZXIgQWxpYXMgb2RlciBkaWUgSUQgZGVyIFNlaXRlLCBkZXJlbiBJbmhhbHQgenVyJnV1bWw7Y2sgZ2VnZWJlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YmxvY2tdIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXMgQ29udGVudC1CbG9ja3MgZGVyIGZlc3RnZWxlZ3RlbiBTZWl0ZS4gT2huZSBWb3JnYWJlIHdpcmQgZGVyIFdlcnQgYXVzICYjMDM5O2NvbnRlbnRfZW4mIzAzOTsgdmVyd2VuZGV0LjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+RGVyIHp3ZWl0ZSBJbmhhbHQgZGVyICdhYm91dCcgU2VpdGUgaXN0ICYjMTIzO3RidG9vbHM6OmdldFBhZ2VDb250ZW50KCdhYm91dCcsJ3NlY29uZCcsJ2ZvbycpJiMxMjU7JiMxMjM7ZXZhbCB2YXI9XCRmb28mIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz5oYXNGZXVHcm91cEFjY2Vzczwvc3Ryb25nPigmIzAzNjtmZXVncm91cHMsWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+R2lidCBlaW4gdHJ1ZS9mYWxzZSB6dXLDvGNrLCBvYiBkZXIgZWluZ2Vsb2dndGUgRnJvbnRFbmRVc2VyIEJlbnV0emVyIGVpbmVyIGRlciBhbmdlZ2ViZW5lbiBHcnVwcGVuIHp1Z2VvcmRuZXQgaXN0PC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2ZldWdyb3VwcyAtIElEcyBkZXIgQmVudXR6ZXJncnVwcGVuLiBNZWhyZXJlIEJlbnV0emVyZ3J1cHBlbiBzaW5kIG1pdCBlaW5lbSBLb21tYSB6dSB0cmVubmVuLiBaLkIuOiAxLDIsNDwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+JiMxMjM7aWYgdGJ0b29sczo6aGFzRmV1R3JvdXBBY2Nlc3MoIjEsMiwzKSYjMTI1O0JlbnV0emVyIGhhdCBkaWUgQmVyZWNodGlndW5nJiMxMjM7ZWxzZSYjMTI1O0RlciBCZW51dHplciBoYXQga2VpbmUgQmVyZWNodGlndW5nJiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCjxsaT48c3Ryb25nPmlzTG9nZ2VkSW48L3N0cm9uZz4oWyYjMDM2O2Fzc2lnbl0pDQogICAgPHA+R2lidCBkaWUgQmVudXR6ZXItSUQgZGVzIGVpbmdlbG9nZ3RlbiBGcm9udEVuZFVzZXIgQmVudXR6ZXJzIHp1csO8Y2s8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+WyYjMDM2O2Fzc2lnbl0gLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxici8+DQogICAgPHByZT4mIzEyMztpZiB0YnRvb2xzOjppc0xvZ2dlZEluKCkmIzEyNTtCZW51dHplciBpc3QgZWluZ2Vsb2dndCYjMTIzO2Vsc2UmIzEyNTtFcyBpc3Qga2VpbiBCZW51dHplciBlaW5nZWxvZ2d0JiMxMjM7L2lmJiMxMjU7PC9wcmU+DQogICAgPC9wPg0KPC9saT4NCjxsaT48c3Ryb25nPmdldFNpYmxpbmc8L3N0cm9uZz4oJiMwMzY7ZGlyZWN0aW9uLFsmIzAzNjthc3NpZ25dLFsmIzAzNjthbGlhc10pDQogICAgPHA+R2lidCBkZW4gU2VpdGVuLUFsaWFzIGRlciBuJmF1bWw7Y2hzdGVuIG9kZXIgdm9yaGVyZ2VoZW5kZW4gU2VpdGUgZGVyIGdsZWljaGVuIEViZW5lIGRlciB2b3JnZWdlYmVuZW4NCiAgICAgICBTZWl0ZSBhbi4gT2RlciBhdWNoIGZhbHNlLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT4mIzAzNjtkaXJlY3Rpb24gLSBkaWUgUmljaHR1bmcsIGluIGRpZSBnZXNjaGF1dCB3ZXJkZW4gc29sbC4gTSZvdW1sO2dsaWNoZSBXZXJ0ZSBzaW5kIHByZXYscHJldmlvdXMsLTEsbmV4dCwxLjwvbGk+DQogICAgICAgPGxpPlsmIzAzNjthc3NpZ25dIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBEZXIgQWxpYXMgZGVyIFNlaXRlLCBkZXNzZW4gU2VpdGVuIGRlciBnbGVpY2hlbiBFYmVuZSBnZWZ1bmRlbiB3ZXJkZW4gc29sbGVuLiBPaG5lIFZvcmdhYmUgd2lyZCBkaWUgYWt0dWVsbGUgU2VpdGUgdmVyd2VuZGV0LjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICAgICA8cHJlPkxpbmsgYXVmIGRpZSB2b3JoZXJpZ2UgU2VpdGU6ICYjMTIzO3RidG9vbHM6OmdldF9zaWJsaW5nKCZxdW90O3ByZXYmcXVvdDssJnF1b3Q7cHJldl9zaWJsaW5nJnF1b3Q7KSYjMTI1OyYjMTIzO2lmICFlbXB0eSgmIzAzNjtwcmV2X3NpYmxpbmcpJiMxMjU7JiMxMjM7Y21zX3NlbGZsaW5rIHBhZ2U9JnF1b3Q7JiMwMzY7cHJldl9zaWJsaW5nJnF1b3Q7IHRleHQ9JnF1b3Q7UHJldmlvdXMmcXVvdDsmIzEyNTsmIzEyMzsvaWYmIzEyNTs8L3ByZT48YnIvPg0KPC9saT4NCjxsaT48c3Ryb25nPmdldExhc3RNb2RpZmllZDwvc3Ryb25nPihbJiMwMzY7YWxpYXNdLFsmIzAzNjthc3NpZ25dKQ0KICAgIDxwPkdpYnQgZGVuIGRhcyBsZXR6dGUgw4RuZGVydW5nc2RhdHVtIGFscyBUaW1lc3RhbXAgenVyw7xjazwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bJiMwMzY7YWxpYXNdIC0gKG9wdGlvbmFsKSBEZXIgU2VpdGVuLUFsaWFzIG9kZXIgZGllIElEIGRlciBTZWl0ZSwgZGVyZW4gbGV0enRlcyDDhG5kZXJ1bmdzZGF0dW0gZ2VzdWNodCBpc3QuIFdlbm4ga2VpbiBXZXJ0IGZlc3RnZWxlZ3Qgd3VyZGUsIHdpcmQgZGllIGFrdHVlbGxlIFNlaXRlIHZlcndlbmRldC48L2xpPg0KICAgICAgIDxsaT5bJiMwMzY7YXNzaWduXSAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgICAgIDxwPkJlaXNwaWVsOjxiciAvPg0KICAgICAgIDxwcmU+RGllc2UgU2VpdGUgd3VyZGUgenVsZXR6dCAmIzEyMzt0YnRvb2xzOjpnZXRMYXN0TW9kaWZpZWQoKXxkYXRlX2Zvcm1hdDoiJUEsICVlLiAlQiwgJVkiJiMxMjU7IGFrdHVhbGlzaWVydDwvcHJlPjxici8+DQo8L2xpPg0KPGxpPjxzdHJvbmc+Z2V0QXJyYXlBc1RhYmxlPC9zdHJvbmc+KCYjMDM2O2FycmF5KQ0KICAgIDxwPkdpYnQgZWluIE11bHRpZGltZW5zaW9uYWxlcyBBcnJheSBhbHMgVGFiZWxsZSB6dXLDvGNrPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPiYjMDM2O2FycmF5IC0gZGFzIEFycmF5IHdlbGNoZXMgYWxzIFRhYmVsbGUgYXVzZ2VnZWJlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+ICANCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIvPg0KICAgIDxwcmU+JiMxMjM7dGJ0b29sczo6Z2V0QXJyYXlBc1RhYmxlKCYjMDM2O2FycmF5KSYjMTI1OzwvcHJlPg0KICAgIDwvcD4NCjwvbGk+DQoNCg0KDQoNCjwvdWw+DQo8L2Rpdj4NCg0KPGRpdiBpZD0ibW9kaWZpZXJfYyI+DQoNCjxoMz5TbWFydHkgTW9kaWZpZXI8L2gzPg0KPHVsPg0KPGxpPjxzdHJvbmc+dGJUcnVuY2F0ZUJldHRlcjwvc3Ryb25nPigmIzAzNjtzdHJpbmcsICYjMDM2O2xlbmd0aCA9IDgwLCAmIzAzNjtldGMgPSAnLi4uJywgJiMwMzY7bGluayA9ICcnLCAmIzAzNjtsaW5rX3RleHQgPSAnJykpDQogICAgPHA+S8O8cnp0IGVpbmVuIFRleHQgdW5kIHNjaGxpZXNzdCBkaWUgYWJnZXNjaG5pdHRlbmVuIFRhZ3Mga29ycmVrdDwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT4mIzAzNjtzdHJpbmcgLSBUZXh0IGRlciBnZWvDvHJ6dCB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtsZW5naHQgLSAob3B0aW9uYWwsIDgwIFN0YW5kYXJkKSBBbnphaGwgWmVpY2hlbiBuYWNoIHdlbGNoZXIgZGVyIFRleHQgZ2Vrw7xyenQgd2lyZC48L2xpPg0KICAgICAgIDxsaT4mIzAzNjtldGMgLSAob3B0aW9uYWwsIC4uLiBTdGFuZGFyZCkgWmVpY2hlbiBkYXMgYW4gZGVuIFNjaGx1c3MgZGVzIGdla8O8cnp0ZW4gVGV4dHMgZ2VzZXR6dCB3aXJkLjwvbGk+DQogICAgICAgPGxpPiYjMDM2O2xpbmsgLSAob3B0aW9uYWwpIExpbmsgVVJMPC9saT4NCiAgICAgICA8bGk+JiMwMzY7bGlua190ZXh0IC0gKG9wdGlvbmFsKSBUZXh0IGRlciB6dW0gTGluayBhbmdlemVpZ3Qgd2lyZC4gRGVyIExpbmsgd2lyZCBhbiBkZW4gU2NobHVzcyBkZXMgZ2Vrw7xyenRlbiBUZXh0ZXMgZ2VzZXR6dDwvbGk+DQogICAgICAgPC91bD4gIA0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxici8+DQogICAgRGllIGJlaWRlbiB2ZXJ3ZW5kZXRlbiBQYXJhbWV0ZXIgJiMwMzY7ZW50cnktPmNvbnRlbnQgdW5kICYjMDM2O2VudHJ5LT5tb3JlbGluayBtw7xzc2VuIG5hdMO8cmxpY2ggbWl0IGRlbiByZWFsIGV4aXN0aWVyZW5kZW4gUGFyYW1ldGVybiBlcnNldHp0IHdlcmRlbg0KICAgIDxiciAvPg0KICAgIDxwcmU+JiMxMjM7JiMwMzY7ZW50cnktPmNvbnRlbnR8dGJUcnVuY2F0ZUJldHRlcjoxMDA6JyAuLi4nOiYjMDM2O2VudHJ5LT5tb3JlbGluazonW3dlaXRlcmxlc2VuXScmIzEyNTs8L3ByZT4NCiAgICA8L3A+DQo8L2xpPg0KDQoNCjwvdWw+DQoNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJtb2JpbGVkZXRlY3RfYyI+DQoNCjxoMz5Nb2JpbGUgRGV0ZWN0PC9oMz4NCg0KPHA+PGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BocC1tb2JpbGUtZGV0ZWN0L3dpa2kvTW9iaWxlX0RldGVjdCIgdGFyZ2V0PSJfYmxhbmsiPk1vYmlsZV9EZXRlY3Q8L2E+DQogaXN0IGVpbmUga2xlaW5lIFBIUCBLbGFzc2UgdW0gbW9iaWxlIEdlcsOkdGUgenUgaWRlbnRpZml6aWVyZW4uIEVzIG51dHp0IGRlbiBVc2VyLUFnZW50IFRleHQga29tYmluaWVydCBtaXQgDQogc3BlemlmaXNjaGVuIEhUVFAgSGVhZGVycyB1bSBkaWUgbW9iaWxlbiBHZXLDpHRlIHp1IGlkZW50aWZpemllcmVuLjwvcD4NCiANCiA8aDQ+TnV0enVuZzwvaDQ+DQogPHA+PGk+QXVmIGVpbmUgZGVmaW5pZXJ0ZSBQbGF0Zm9ybSBwcsO8ZmVuOjwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzaU9TKCkgfSANCiAgLy8gRGF0ZW4gZsO8ciBBcHBsZSBpT1MgUGxhdGZvcm0gYW56ZWlnZW4uIA0Key9pZn0gDQogPC9wcmU+IDwvcD4NCjxwPjxwcmU+DQp7aWYgJiMwMzY7dGJtb2JpbGUtPmlzQW5kcm9pZE9TKCkgfSANCiAgLy8gRGF0ZW4gZsO8ciBHb29nbGUgQW5kcm9pZCBQbGF0Zm9ybSBhbnplaWdlbi4gDQp7L2lmfQ0KPC9wcmU+PC9wPg0KDQogPHA+V2VpdGVyZSBNZXRob2RlbiBzaW5kICBpc0lwaG9uZSgpLCBpc0lwYWQoKSwgaXNCbGFja0JlcnJ5KCksIGlzS2luZGxlKCksIGlzT3BlcmEoKSwgZXRjLiBFaW5lIHZvbGxzdMOkbmRpZ2UgTGlzdGUgYWxsZXIgdmVyZsO8Z2JhcmVuIE1ldGhvZGVuIDxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9waHAtbW9iaWxlLWRldGVjdC93aWtpL01vYmlsZV9EZXRlY3QiIHRhcmdldD1fYmxhbmsiPmlzdCBpbSBXaWtpIHZlcmbDvGdiYXIuPC9hPjwvcD4NCg0KPHA+QWx0ZXJuYXRpdiBrYW5uIG5hdMO8cmxpY2ggYXVjaCBlaW5mYWNoIGdlcHLDvGZ0IHdlcmRlbiBvYiBlaW4gQmVzdWNoZXIgbWl0IGVpbmVtIG1vYmlsZW4gR2Vyw6R0IGF1ZiBkaWUgV2Vic2VpdGUgenVncmVpZnQgb2huZSBlaW5lIGJlc3RpbW10ZSBQbGF0Zm9ybSB6dSBpZGVudGlmaXppZXJlbjo8L3A+DQo8cD48cHJlPg0Ke2lmICgmIzAzNjt0Ym1vYmlsZS0+aXNNb2JpbGUoKSl9DQogIC8vIGFsbGUgbW9iaWxlbiBQbGF0dGZvcm1lbg0Key9pZn0NCjwvcHJlPjwvcD4NCjxwPjxwcmU+DQp7aWYoJiMwMzY7dGJtb2JpbGUtPmlzVGFibGV0KCkpfQ0KICAvLyBhbGxlIFRhYmxldHMNCnsvaWZ9DQo8L3ByZT48L3A+DQoNCg0KCQ0KPC9kaXY+DQoNCjxkaXYgaWQ9InBsdWdpbnNfYyI+DQoNCjxoMz5QbHVnaW5zPC9oMz4NCjxwPjxiPkFsbGdlbWVpbmUgUGx1Z2luczwvYj48L3A+DQo8cD4mbmJzcDs8L3A+DQo8dWw+DQoNCiA8bGk+PHN0cm9uZz57dGJBcnJheVNvcnR9PC9zdHJvbmc+DQogICAgPHA+TWl0IGRpZXNlbSBQbHVnaW4ga8O2bm5lbiBNdWx0aWRpbWVuc2lvbmFsZSBBcnJheXMgc29ydGllcnQgd2VyZGVuLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6PC9wPg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2RhdGFdIC0gQXJyYXkgd2VsY2hlcyBzb3J0aWVydCB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT5bc29ydF0gLSBBcnJheS1LZXlzIG5hY2ggZGVuZW4gc29ydGllcnQgd2VyZGVuIHNvbGwuIE1laHJlcmUgS2V5cyBzaW5kIEtvbW1hLWdldHJlbm50IHp1IGVyZmFzc2VuLiBGw7xyIERFU0MgU29ydGllcnVuZyBpc3Qgdm9yIGRlbSBLZXkgZWluIEF1c3J1ZmV6ZWljaGVuICchJyB6dSBlcmZhc3Nlbg0KICAgICAgIDxsaT5bYXNzaWduXSAtIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+IA0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT57dGJBcnJheVNvcnQgZGF0YT1cJGFycmF5IHNvcnQ9JnF1b3Q7bmFtZSwhdm9ybmFtZSZxdW90OyBhc3NpZ249JnF1b3Q7bmV1ZXNBcnJheSZxdW90O308L3ByZT48L3A+DQogICAgPHA+RGFzIEFycmF5IHdpcmQgc28gbmFjaCBkZW0gS2V5ICJuYW1lIiBzb3J0aWVydCBzb3dpZSBhbiB6d2VpdGVyIFN0ZWxsZSBuYWNoIGRlbSBLZXkgInZvcm5hbWUiIGRlc2M8L3A+DQogPC9saT4NCg0KDQoNCiA8bGk+PHN0cm9uZz57dGJTZXNzaW9uU2V0fTwvc3Ryb25nPg0KICAgIDxwPkVpbiBTbWFydHktUGx1Z2luLCBtaXQgZGVtIERhdGVuIGluIGRlciBVc2VyLVNlc3Npb24gZ2VzcGVpY2hlcnQgd2VyZGVuIGsmb3VtbDtubmVuLiBBdWYgZGllc2UgRGF0ZW4ga2FubiBhdWYgZGVuIGVudHNwcmVjaGVuZGVuIFNlaXRlbiBkYW5uICZ1dW1sO2JlciBkYXMgQXJyYXkgJiMwMzY7c21hcnR5LnNlc3Npb24ubmFtZV9kZXJfdmFyaWFibGVuIHp1Z2VncmlmZmVuIHdlcmRlbi48L3A+DQogICAgPHA+QXJndW1lbnRlOjwvcD4NCiAgICAgICA8dWw+DQogICAgICAgPGxpPm5hbWUgLSBOYW1lIGRlciBWYXJpYWJsZW4sIGRpZSBpbiBkZXIgU2Vzc2lvbiBlcnpldWd0IHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPGxpPnZhbHVlIC0gRGVyIGVudHNwcmVjaGVuZGUgV2VydCBkaWVzZXIgVmFyaWFibGVuLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPnt0YlNlc3Npb25TZXQgbmFtZT0mcXVvdDt0ZXN0JnF1b3Q7IHZhbHVlPSZxdW90O2JsYWgmcXVvdDt9PC9wcmU+PC9wPg0KIDwvbGk+DQoNCiANCiANCiAgPGxpPjxzdHJvbmc+JiMxMjM7dGJTZXNzaW9uVW5zZXQmIzEyNTs8L3N0cm9uZz4NCiAgICA8cD5FaW4gU21hcnR5LVBsdWdpbiwgbWl0IGRlbSBEYXRlbiBhdXMgZWluZXIgVXNlci1TZXNzaW9uIGdlbCZvdW1sO3NjaHQgd2VyZGVuIGsmb3VtbDtubmVuLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gTmFtZSBkZXIgVmFyaWFibGUsIGRpZSBpbiBkZXIgU2Vzc2lvbiBnZWwmb3VtbDtzY2h0IHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiU2Vzc2lvblVuc2V0IG5hbWU9JnF1b3Q7dGVzdCZxdW90OyYjMTI1OzwvcHJlPjwvcD4NCiA8L2xpPg0KIA0KIDxsaT48c3Ryb25nPiYjMTIzO3RiVmFyRXhwb3J0JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+TWl0IGRpZXNlbSBQbHVnaW4ga2FubiBlaW4gQXJyYXkgenUgRGVidWdnaW5nendlY2tlbiB6dW0gRXhwb3J0IHZvcmJlcmVpdGV0IHdlcmRlbi4gRGVyIGdlbmVyaWVydGUgVGV4dCBpc3Qgc2VyaWFsaXplZCB1bmQga2FubiB1bmFiaMOkbmdpZyB2b24gZGVyIFVtZ2VidW5nIGFuIGVpbmVtIGFuZGVyZW4gT3J0IHdpZWRlciBlaW5nZWbDvGd0IHVuZCB2ZXJhcmJlaXRldCB3ZXJkZW4uPGJyIC8+DQogICAgVm9ydGVpbCBkaWVzZXIgTWV0aG9kZSBpc3QsIGRhc3MgZWluIFByb2JsZW0gaW5rbC4gZGVyIHZlcndlbmRldGVuIERhdGVuIGFuIGVpbmVtIGFuZGVyZW4gT3J0IG5hY2h2b2xsem9nZW4gd2VyZGVuIGthbm4sIG9obmUgZGFzcyBkaWUgZ2VzYW10ZSBVbWdlYnVuZyBuYWNoZ2ViYXV0IHdlcmRlbiBtdXNzLjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5uYW1lIC0gTmFtZSBkZXIgVmFyaWFibGUsIHdlbGNoZSBleHBvcnRpZXJ0IHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiVmFyRXhwb3J0IG5hbWU9JnF1b3Q7aXRlbXMmcXVvdDsmIzEyNTs8L3ByZT48L3A+DQogPC9saT4NCiA8L3VsPg0KIA0KIDxwPjxiPlRvb2xCb3ggRnVua3Rpb25hbGl0w6R0ZW48L2I+PC9wPg0KIDxwPiZuYnNwOzwvcD4NCiA8dWw+DQogPGxpPjxzdHJvbmc+JiMxMjM7dGJXcml0ZUxvZyYjMTI1Ozwvc3Ryb25nPg0KICAgIDxwPk1pdCBkaWVzZW0gUGx1Z2luIGthbm4gaW4gZWluZW0gVGVtcGxhdGUgb2RlciBhdWYgZWluZXIgU2VpdGUgZWluIFN0cmluZywgZWluIEFycmF5IG9kZXIgZWluIE9iamVrdCBpbnMgdGFpbC1Mb2cgZGVyIFRvb2xCb3ggZ2VzY2hyaWViZW4gd2VyZGVuLiBEaWVzZXMgUGx1Z2luIGlzdCBmw7xyIERlYnVnZ2luZyBad2Vja2Ugb2RlciB6dW0gTWl0bG9nZ2VuIHZlcnNjaGllZGVuZXIgQWt0aW9uZW4gaW50ZXJlc3NhbnQuIDwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5sb2cgLSBUZXh0IGRlciBpbnMgTG9nZmlsZSBnZXNjaHJpZWJlbiB3ZXJkZW4gc29sbCAoa2FubiBlaW4gU3RyaW5nLCBlaW4gQXJyYXkgb2RlciBlaW4gT2JqZWt0IHNlaW4pLjwvbGk+DQogICAgICAgPGxpPltsb2dGaWxlXSAtIChvcHRpb25hbCkgTmFtZSBkZXMgTG9nZmlsZXMgaW4gd2VsY2hlcyBkZXIgVGV4dCBnZXNjaHJpZWJlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YldyaXRlTG9nIGxvZz0id2FzIGbDvHIncyBsb2ciIGxvZ0ZpbGU9InRiTG9nIiYjMTI1OzwvcHJlPg0KICAgIDwvcD4NCiA8L2xpPiANCiA8L3VsPg0KIA0KIA0KIDxwPjxiPlBsdWdpbnMgZsO8ciBBZHZhbmNlZENvbnRlbnQ8L2I+PC9wPg0KIDxwPiZuYnNwOzwvcD4NCiA8dWw+DQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRQYWdlSGllcmFyY2h5JiMxMjU7PC9zdHJvbmc+DQogICAgPHA+TWl0IGRpZXNlbSBQbHVnaW4ga2FubiBkaWUgZ2VzYW10ZSBTZWl0ZW4tSGllcmFyY2hpZSBhdXNnZWdlYmVuIHdlcmRlbi4gUHJha3Rpc2NoIGlzdCBkZXIgRWluc2F0eiBkaWVzZXMgUGx1Z2luIGluIFZlcmJpbmR1bmcgbWl0IEFkdmFuY2VkQ29udGVudC4gU28ga2FubiBpbiBBQyBlaW4gRHJvcGRvd24gRmVsZCBtaXQgYWxsZW4gU2VpdGVuIGF1c2dlZ2ViZW4gd2VyZGVuLiA8L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIGRlciBOYW1lIGRlciBWYXJpYWJsZSwgZGVyIGRhcyBFcmdlYm5pcyB6dWdld2llc2VuIHdlcmRlbiBzb2xsLjwvbGk+DQogICAgICAgPGxpPltkZWxpbWl0ZXJdIC0gKG9wdGlvbmFsKSBUcmVubnplaWNoZW4gendpc2NoZW4gZGVuIEVpbnRyw6RnZW4uIFN0YW5kYXJkOiB8LjwvbGk+DQogICAgICAgPGxpPltvdXRwdXRdIC0gKG9wdGlvbmFsKSBtaXQgb3V0cHV0PSJpZCIgd2VyZGVuIGFsbGUgQ29udGVudC1JRHMgYXVzZ2VnZWJlbi4gQW5zb25zdGVuIHdpcmQgZGVyIE1lbsO8dGV4dCBhdXNnZWdlYmVuLjwvbGk+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiR2V0UGFnZUhpZXJhcmNoeSBvdXRwdXQ9ImlkIiYjMTI1OzwvcHJlPjxiciAvPg0KICAgIDxwcmU+JiMxMjM7QWR2YW5jZWRDb250ZW50IGxhYmVsPSJTZWl0ZSIgYmxvY2tfdHlwZT0iZHJvcGRvd24iIG5vX2NvbGxhcHNlPXRydWUgaXRlbXM9Ijo6OnRiR2V0UGFnZUhpZXJhcmNoeTo6OiIgdmFsdWVzPSI6Ojp0YkdldFBhZ2VIaWVyYXJjaHkgb3V0cHV0PSdpZCc6OjoiIHNtYXJ0eT1iYWNrZW5kICYjMTI1OzwvcHJlPjwvcD4NCiA8L2xpPiANCiANCiAgPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXROZXdzQ2F0ZWdvcmllcyYjMTI1Ozwvc3Ryb25nPg0KICAgIDxwPk1pdCBkaWVzZW0gUGx1Z2luIGvDtm5uZW4gYWxsZSBOZXdza2F0ZWdvcmllbiBhdXNnZWdlYmVuIHdlcmRlbi4gUHJha3Rpc2NoIGlzdCBkZXIgRWluc2F0eiBkaWVzZXMgUGx1Z2luIGluIFZlcmJpbmR1bmcgbWl0IEFkdmFuY2VkQ29udGVudC4gU28ga8O2bm5lbiBpbiBlaW5lbSBNdWx0aXBsZSBTZWxlY3QgRmVsZCBkaWUgZ2V3w7xuc2NodGVuIE5ld3NrYXRlZ29yaWVuIGdld8OkaGx0IHdlcmRlbjwvcD4NCiAgICA8cD5Bcmd1bWVudGU6DQogICAgICAgPHVsPg0KICAgICAgIDxsaT5bYXNzaWduXSAtIChvcHRpb25hbCkgZGVyIE5hbWUgZGVyIFZhcmlhYmxlLCBkZXIgZGFzIEVyZ2VibmlzIHp1Z2V3aWVzZW4gd2VyZGVuIHNvbGwuPC9saT4NCiAgICAgICA8bGk+W2RlbGltaXRlcl0gLSAob3B0aW9uYWwpIFRyZW5uemVpY2hlbiB6d2lzY2hlbiBkZW4gRWludHLDpGdlbi4gU3RhbmRhcmQ6IHwuPC9saT4NCiAgICAgICA8bGk+W291dHB1dF0gLSAob3B0aW9uYWwpIG1pdCBvdXRwdXQ9ImlkIiB3ZXJkZW4gYWxsZSBDb250ZW50LUlEcyBhdXNnZWdlYmVuLiBBbnNvbnN0ZW4gd2lyZCBkZXIgTWVuw7x0ZXh0IGF1c2dlZ2ViZW4uPC9saT4NCiAgICAgICA8L3VsPg0KICAgIDxici8+PC9wPg0KICAgIDxwPkJlaXNwaWVsOjxiciAvPg0KICAgIDxwcmU+JiMxMjM7dGJHZXROZXdzQ2F0ZWdvcmllcyYjMTI1OzwvcHJlPjxiciAvPg0KICAgIDxwcmU+JiMxMjM7QWR2YW5jZWRDb250ZW50IGJsb2NrPSJuZXdzIiBsYWJlbD0iTmV3cyBLYXRlZ29yaWVuLiIgYmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIiBub19jb2xsYXBzZT10cnVlIGl0ZW1zPSI6Ojp0YkdldE5ld3NDYXRlZ29yaWVzOjo6IiBzbWFydHk9YmFja2VuZCAmIzEyNTs8L3ByZT48L3A+DQogPC9saT4gDQogDQogPGxpPjxzdHJvbmc+JiMxMjM7dGJHZXRVc2VyR3JvdXBzJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+TWl0IGRpZXNlbSBQbHVnaW4ga8O2bm5lbiBhbGxlIE5ld3NrYXRlZ29yaWVuIGF1c2dlZ2ViZW4gd2VyZGVuLiBQcmFrdGlzY2ggaXN0IGRlciBFaW5zYXR6IGRpZXNlcyBQbHVnaW4gaW4gVmVyYmluZHVuZyBtaXQgQWR2YW5jZWRDb250ZW50LiBTbyBrw7ZubmVuIGluIGVpbmVtIE11bHRpcGxlIFNlbGVjdCBGZWxkIGRpZSBnZXfDvG5zY2h0ZW4gTmV3c2thdGVnb3JpZW4gZ2V3w6RobHQgd2VyZGVuPC9wPg0KICAgIDxwPkFyZ3VtZW50ZToNCiAgICAgICA8dWw+DQogICAgICAgPGxpPlthc3NpZ25dIC0gKG9wdGlvbmFsKSBkZXIgTmFtZSBkZXIgVmFyaWFibGUsIGRlciBkYXMgRXJnZWJuaXMgenVnZXdpZXNlbiB3ZXJkZW4gc29sbC48L2xpPg0KICAgICAgIDxsaT5bZ3JvdXBzX29ubHldIC0gKG9wdGlvbmFsKSBaZWlndCBudXIgZGllIEJlbnV0emVyZ3J1cHBlbiAoZWluemVsbmUgQmVudXR6ZXIgd2VyZGVuIG5pY2h0IGFuZ2V6ZWlndCk8L2xpPg0KICAgICAgIDxsaT5bZGVsaW1pdGVyXSAtIChvcHRpb25hbCkgVHJlbm56ZWljaGVuIHp3aXNjaGVuIGRlbiBFaW50csOkZ2VuLiBTdGFuZGFyZDogfC48L2xpPg0KICAgICAgIDxsaT5bb3V0cHV0XSAtIChvcHRpb25hbCkgbWl0IG91dHB1dD0iaWQiIHdlcmRlbiBhbGxlIENvbnRlbnQtSURzIGF1c2dlZ2ViZW4uIEFuc29uc3RlbiB3aXJkIGRlciBNZW7DvHRleHQgYXVzZ2VnZWJlbi48L2xpPg0KICAgICAgIDwvdWw+DQogICAgPGJyLz48L3A+DQogICAgPHA+QmVpc3BpZWw6PGJyIC8+DQogICAgPHByZT4mIzEyMzt0YkdldFVzZXJHcm91cHMmIzEyNTs8L3ByZT48YnIgLz4NCiAgICA8cHJlPiYjMTIzO0FkdmFuY2VkQ29udGVudCBibG9jaz0iZWRpdG9ycyIgbGFiZWw9IkJlbnV0emVyIHdlbGNoZSBkaWVzZSBTZWl0ZW4gYmVhcmJlaXRlbiBkw7xyZmVuIiBibG9ja190eXBlPSJzZWxlY3RfbXVsdGlwbGUiIG5vX2NvbGxhcHNlPXRydWUgaXRlbXM9Ijo6OnRiR2V0VXNlckdyb3VwcyBncm91cHNfb25seT10cnVlOjo6IiB2YWx1ZXM9Ijo6OnRiR2V0VXNlckdyb3VwcyBncm91cHNfb25seT10cnVlIG91dHB1dD0naWQnOjo6IiBzbWFydHk9YmFja2VuZCAmIzEyNTs8L3ByZT48L3A+DQogPC9saT4gIA0KIA0KICA8bGk+PHN0cm9uZz4mIzEyMzt0YkdldEdhbGxlcnlUcmVlJiMxMjU7PC9zdHJvbmc+DQogICAgPHA+TWl0IGRpZXNlbSBQbHVnaW4ga8O2bm5lbiBhbGxlIEdhbGxlcnkgT3JkbmVyIChNb2R1bCBHYWxsZXJ5KSBhdXNnZWdlYmVuIHdlcmRlbi4gUHJha3Rpc2NoIGlzdCBkZXIgRWluc2F0eiBkaWVzZXMgUGx1Z2luIGluIFZlcmJpbmR1bmcgbWl0IEFkdmFuY2VkQ29udGVudC4gU28ga8O2bm5lbiBkaWUgR2FsbGVyeXMgaW4gZWluZW0gRHJvcGRvd24gRmVsZCBhdXNnZWdlYmVuIHdlcmRlbi48L3A+DQogICAgPHA+QXJndW1lbnRlOg0KICAgICAgIDx1bD4NCiAgICAgICA8bGk+W3N1YmRpcl0gLSAob3B0aW9uYWwpIFVudGVyb3JkbmVyIGRlciBHYWxsZXJ5IGFiIHdlbGNoZW0gYWxsZXIgZW50aGFsdGVuZW4gT3JkbmVyIGF1ZmdlbGlzdGV0IHdlcmRlbiBzb2xsZW4gLjwvbGk+DQogICAgICAgPGxpPlthY3Rpb25dIC0gKG9wdGlvbmFsKSA8dWw+DQogICAgICAgCQkJCQkJCQk8bGk+YWN0aW9uPSJ1cmwiIC0+IFBmYWQgenVtIE9yZG5lcjwvbGk+DQogICAgICAgCQkJCQkJCQk8bGk+IGFjdGlvbiA9ICIiIC0+IFBmYWQgZGVzIE9yZG5lcnMgaW5rbC4gQmlsZGFuemFobDwvbGk+DQogICAgICAgCQkJCQkJCTwvdWw+DQogICAgICAgPC91bD4NCiAgICA8YnIvPjwvcD4NCiAgICA8cD5CZWlzcGllbDo8YnIgLz4NCiAgICA8cHJlPiYjMTIzO3RiR2V0R2FsbGVyeVRyZWUmIzEyNTs8L3ByZT48YnIgLz4NCiAgICA8cHJlPiYjMTIzO0FkdmFuY2VkQ29udGVudCBibG9jaz0iZ2FsbGVyeSIgbGFiZWw9IkdhbGxlcnkiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBhbGxvd19ub25lPXRydWUgaXRlbXM9IktlaW5lIEdhbGxlcnl8Ojo6dGJHZXRHYWxsZXJ5VHJlZSA6OjoiIHZhbHVlcz0ifDo6OnRiR2V0R2FsbGVyeVRyZWUgYWN0aW9uPSd1cmwnOjo6IiBzbWFydHk9YmFja2VuZCBhc3NpZ249ImJ0R2FsbGVyeVBhdGgiIG5vX2NvbGxhcHNlPXRydWUgJiMxMjU7PC9wcmU+PC9wPg0KICAgIA0KIDwvbGk+ICANCiANCjwvdWw+DQogIA0KDQoNCiAgDQogIDwvZGl2Pg0KPC9kaXY+DQoNCkVPVDsNCg0KDQokbGFuZ1snaGVscF90YmltYWdlJ10gPSA8PDxFT1QNCg0KPHByZT4mIzEyMzt0YkltYWdlIGltYWdlPSIvcGF0aC90by9pbWFnZS5qcGciIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsPSIyMDAiJiMxMjU7PC9wcmU+DQoNCjxoMz5QYXJhbWV0ZXI8L2gzPg0KDQo8aDQ+QmlsZGVpbnN0ZWxsdW5nZW48L2g0Pg0KDQo8dWw+DQo8bGk+W2ltYWdlXSAtIFBmYWQgenVtIEJpbGQuIERpZXNlciBrYW5uIHJlbGF0aXYgenVtIFJvb3QsIGFscyBhYnNvbHV0ZXIgUGZhZCBvZGVyIGFscyBVUkwgw7xiZXJnZWJlbiB3ZXJkZW4gPC9saT4NCjxsaT5WZXLDpG5kZXJ1bmcgZGVyIEdyw7Zzc2Ugd8OkaGxlbi4gRXMga2FubiBqZXdlaWxzIG51ciBlaW4gUGFyYW1ldGVyIGdsZWljaHplaXRpZyBlaW5nZXNldHp0IHdlcmRlbjoNCjx1bD4NCgk8bGk+W3Jlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWxdIC0gRGFzIEJpbGQgbmFjaCBkZXIga8O8cnplcmVuIFNlaXRlIGluIFBpeGVsIHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bcmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50XSAtIERhcyBCaWxkIG5hY2ggZGVyIGvDvHJ6ZXJlbiBTZWl0ZSBpbiBQcm96ZW50IHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bcmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWxdIC0gRGFzIEJpbGQgbmFjaCBkZXIgbMOkbmdlcmVuIFNlaXRlIGluIFBpeGVsIHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bcmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudF0gLSBEYXMgQmlsZCBuYWNoIGRlciBsw6RuZ2VyZW4gU2VpdGUgaW4gUHJvemVudCB2ZXJrbGVpbmVybi92ZXJncsO2c3Nlcm4gPC9saT4NCjwvdWw+DQo8L2xpPg0KPGxpPkF1c3NjaG5pdHQgZGVzIEJpbGRlcyBpbiBQaXhlbCBtaXQgUG9zaXRpb24NCjx1bD4NCgk8bGk+W3dpZHRoXSAtIChvcHRpb25hbCkgQnJlaXRlIGRlcyBCaWxkYXVzc2Nobml0dHM8L2xpPg0KCTxsaT5baGVpZ2h0XSAtIChvcHRpb25hbCkgSMO2aGUgZGVzIEJpbGRhdXNzY2huaXR0cyA8L2xpPg0KCTxsaT5bcG9zXSAtIChvcHRpb25hbCkgUG9zaXRpb24gZGVzIEF1c3NjaG5pdHRzLiBNw7ZnbGljaGUgUGFyYW1ldGVyIChEZXRhaWxzIHNpZWhlIFJlaXRlciAiV2Fzc2VyemVpY2hlbiBtaXQgQmlsZCIpOg0KCQk8dWw+DQoJCQk8bGk+TFQgPSBsaW5rcyBvYmVuPC9saT4NCgkJCTxsaT5NVCA9IG1pdHRlIG9iZW48L2xpPg0KCQkJPGxpPlJUID0gcmVjaHRzIG9iZW48L2xpPg0KCQkJPGxpPkxNID0gbGlua3MgbWl0dGU8L2xpPg0KCQkJPGxpPk1NID0gbWl0dGUgbWl0dGU8L2xpPg0KCQkJPGxpPlJNID0gcmVjaHRzIG1pdHRlPC9saT4NCgkJCTxsaT5MQiA9IGxpbmtzIHVudGVuPC9saT4NCgkJCTxsaT5NQiA9IG1pdHRlIHVudGVuPC9saT4NCgkJCTxsaT5SQiA9IHJlY2h0cyB1bnRlbjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+W3Bvc3hdIC0gKG9wdGlvbmFsKSBQb3NpdGlvbiBkZXMgQXVzc2Nobml0dHMgaW4gWCA8L2xpPg0KCTxsaT5bcG9zeV0gLSAob3B0aW9uYWwpIFBvc2l0aW9uIGRlcyBBdXNzY2huaXR0cyBpbiBZIDwvbGk+DQo8L3VsPg0KPC9saT4NCjxsaT5bcHJvcG9ydGlvbl0gLSAob3B0aW9uYWwpIFByb3BvcnRpb25lbiBkZXMgQmlsZGVzIGVyaGFsdGVuPC9saT4NCjxsaT5bcXVhbGl0eV0gLSAob3B0aW9uYWwpIFF1YWxpdMOkdCBkZXIgSlBHIEtvbXByaW1pZXJ1bmcuIFN0YW5kYXJkIDg1PC9saT4NCjxsaT5bZmlsdGVyXSAtIChvcHRpb25hbCkgRmlsdGVyZWluc3RlbGx1bmdlbiwgRGV0YWlscyBzaWVoZSA8YSBocmVmPSJodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uaW1hZ2VmaWx0ZXIucGhwIj5QSFAgV2Vic2VpdGU8L2E+PC9saT4NCjxsaT5bb3BhY2l0eV0gLSAob3B0aW9uYWwpIERlY2trcmFmdCBkZXMgQmlsZGVzIDwvbGk+DQo8bGk+W2ZsaXBdIC0gKG9wdGlvbmFsKSBEcmVoZW4gZGVzIEJpbGRlcyBpbiBHcmFkPC9saT4NCjwvdWw+DQoNCjxoND5BbGxnZW1laW5lIEVpbnN0ZWxsdW5nZW48L2g0Pg0KDQo8dWw+DQo8bGk+W2Fzc2lnbl0gLSAob3B0aW9uYWwpIEFscyBSw7xja2dhYmV3ZXJ0IGVpbmVyIFZhcmlhYmxlbiB6dXdlaXNlbjwvbGk+DQo8bGk+W25vX3RhZ10gLSAob3B0aW9uYWwpIEFscyBSw7xja2dhYmV3ZXJ0IHdpcmQgbnVyIGRpZSByZWluZSBCaWxkLVVSTCBvaG5lIGltZyBUYWcgenVyw7xja2dlZ2ViZW48L2xpPg0KPGxpPltub19vdXRwdXRdIC0gKG9wdGlvbmFsKSBOdXIgZGllIEdyw7Zzc2Vuw6RuZGVydW5nIHdpcmQgYXVzZ2Vmw7xocnQuIEtlaW4gUsO8Y2tnYWJld2VydDwvbGk+DQo8bGk+W2RlYnVnXSAtIChvcHRpb25hbCkgQXVzZ2FiZSBkZXIgRGV0YWlscyBkZXIgQmlsZHZlcmFyYmVpdHVuZzwvbGk+DQo8bGk+W2NsYXNzXSAtIChvcHRpb25hbCkgQ1NTIEtsYXNzZSBkaWUgZGVtIGltZyBUYWcgenVnZW9yZG5ldCB3aXJkPC9saT4NCjxsaT5bYWx0XSAtIChvcHRpb25hbCkgQWx0IFRleHQgZGVyIGRlbSBpbWcgVGFnIHp1Z2VvcmRuZXQgd2lyZDwvbGk+DQo8bGk+W2lkXSAtIChvcHRpb25hbCkgQ1NTIElEIGRpZSBkZW0gaW1nIFRhZyB6dWdlb3JkbmV0IHdpcmQ8L2xpPg0KPGxpPlt0aXRsZV0gLSAob3B0aW9uYWwpIFRpdGxlIFRleHQgZGVyIGRlbSBpbWcgVGFnIHp1Z2VvcmRuZXQgd2lyZDwvbGk+DQo8bGk+W3N0eWxlXSAtIChvcHRpb25hbCkgU3R5bGUtVGFnIGRlciBkZW0gaW1nIFRhZyB6dWdlb3JkbmV0IHdpcmQ8L2xpPg0KPC91bD4NCg0KPGg0PkF1dG9MaWdodGJveDwvaDQ+DQo8dWw+DQo8bGk+W2F1dG9saWdodGJveF0gLSAob3B0aW9uYWwpIE9yaWdpbmFsIGRlcyBCaWxkZXMgYWxzIEF1dG9MaWdodGJveCBWZXJrbsO8cGZ1bmcgZWluYmluZGVuIChudXIgd2VubiBkaWUgQXV0b0xpZ2h0Qm94IGFrdGl2IGlzdCkgPC9saT4NCjxsaT5HcsO2c3NlIGRlcyBPcmlnaW5hbGJpbGRlcy4gV2VyZGVuIGRpZXNlIFBhcmFtZXRlciBsZWVyIGdlbGFzc2VuLCBzbyB3aXJkIGRhcyBPcmlnaW5hbGJpbGQgdmVybGlua3QNCjx1bD4NCgk8bGk+W2FsYnJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWxdIC0gRGFzIEJpbGQgbmFjaCBkZXIga8O8cnplcmVuIFNlaXRlIGluIFBpeGVsIHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bYWxicmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50XSAtIERhcyBCaWxkIG5hY2ggZGVyIGvDvHJ6ZXJlbiBTZWl0ZSBpbiBQcm96ZW50IHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGl4ZWxdIC0gRGFzIEJpbGQgbmFjaCBkZXIgbMOkbmdlcmVuIFNlaXRlIGluIFBpeGVsIHZlcmtsZWluZXJuL3Zlcmdyw7Zzc2VybiA8L2xpPg0KCTxsaT5bYWxicmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudF0gLSBEYXMgQmlsZCBuYWNoIGRlciBsw6RuZ2VyZW4gU2VpdGUgaW4gUHJvemVudCB2ZXJrbGVpbmVybi92ZXJncsO2c3Nlcm4gPC9saT4NCjwvdWw+DQo8L3VsPg0KDQo8aDQ+V2Fzc2VyemVpY2hlbjwvaDQ+DQoNCjx1bD4NCjxsaT5bd2F0ZXJtYXJrXSAtIChvcHRpb25hbCkgbcO2Z2xpY2hlIFBhcmFtZXRlcjogd2F0ZXJtYXJrPSJpbWFnZSIgLSBkaWUgRWluc3RlbGx1bmdlbiBzaW5kIGltIFJlaXRlciAiV2Fzc2VyemVpY2hlbiBtaXQgQmlsZCIgenUgZmluZGVuPC9saT4NCjwvdWw+DQoNCkVPVDsNCg0KIyBJDQokbGFuZ1snaWQnXSA9ICdJRCc7DQokbGFuZ1snaWdub3JlJ10gPSAnSWdub3JpZXJlbic7DQokbGFuZ1snaWdub3JlbGlzdCddID0gJ0lnbm9yaWVyLUxpc3RlJzsNCiRsYW5nWydpbmFjdGl2ZSddID0gJ0luYWt0aXYnOw0KJGxhbmdbJ2luc3RhbGxlZCddID0gJ2luc3RhbGxpZXJ0JzsNCiRsYW5nWydpcCddID0gJ0lQIE51bW1lcic7DQokbGFuZ1snaXVybCddID0gJ1p1IGlnbm9yaWVyZW5kZSBVUkwnOw0KJGxhbmdbJ2ltcG9ydHhtbF90aXRsZSddID0gJ1RlbXBsYXRlIHZpYSBYTUwtRGF0ZWkgaW1wb3J0aWVyZW4nOw0KJGxhbmdbJ2ltcG9ydHhtbCddID0gJ1RlbXBsYXRlLVhNTCBpbXBvcnRpZXJlbic7DQokbGFuZ1snaW1wb3J0eG1sbm90ZSddID0gJ1hNTC1EYXRlaWVuIG1pdCB2ZXJzY2hpZWRlbmVuIFRvb2xCb3gtVm9ybGFnZW4gayZvdW1sO25uZW4gaW0gUHJvamVrdHZlcnplaWNobmlzIGRlcyA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3QvZmlsZXMvMTA3NSIgdGFyZ2V0PSJfYmxhbmsiPlRvb2xCb3gtTW9kdWxzPC9hPiBoZXJ1bnRlcmdlbGFkZW4gd2VyZGVuLiBCaXR0ZSBsZXNlbiBTaWUgZGllIFZlcnNpb25zLUhpbndlaXNlIHZvciBkZW0gSG9jaGxhZGVuISc7DQoNCiMgSg0KDQojIEsNCiRsYW5nWydrZXl3b3JkJ10gPSAnU3VjaGJlZ3JpZmYnOw0KDQojIEwNCiRsYW5nWydsaW5rdmFsdWUnXSA9ICdSw7xja2dhYmV3ZXJ0IGRlcyBMaW5rcyc7DQoNCiMgTQ0KJGxhbmdbJ21haW4nXSA9ICfDnGJlcnNpY2h0JzsNCiRsYW5nWydtYWtlYWN0aXZlJ10gPSAnQWt0aXZpZXJlbic7DQokbGFuZ1snbWFrZWluYWN0aXZlJ10gPSAnRGVha3RpdmllcmVuJzsNCiRsYW5nWydtYW51YWwnXSA9ICdBbmxlaXR1bmcnOw0KJGxhbmdbJ21heF80MDQnXSA9ICdBbnphaGwgNDA0IEZlaGxlcic7DQokbGFuZ1snbWF4XzQwNF9oZWxwJ10gPSAnV2llIHZpZWxlIEZlaGxlciBzb2xsZW4gbWF4aW1hbCBtaXRnZWxvZ2d0IHdlcmRlbj8nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGllc2VzIE1vZHVsIGlzdCBlaW5lIFNhbW1sdW5nIHZvbiBuw7x0emxpY2hlbiBUb29sczogQXV0b0xpZ2h0Qm94LCBTb2NpYWxTaGFyZVByaXZhY3ksIFR3aXR0ZXJmZWVkICwgU21hcnR5LVRvb2xzLCAzMDEtV2VpdGVybGVpdHVuZ2VuLCA0MDQtRmVobGVydHJhY2tpbmcnOw0KJGxhbmdbJ21vZGlmaWVkJ10gPSAnTGV0enRlcyBBdWZ0cmV0ZW4nOw0KJGxhbmdbJ21vbnRoJ10gPSAnTW9uYXQnOw0KJGxhbmdbJ21vbnRocyddID0gJ01vbmF0ZSc7DQokbGFuZ1snaW1wb3J0X211bHRpZG9tYWlucyddID0gJ0RhdGVuIGF1cyBNdWx0aURvbWFpbnMtTW9kdWwgaW1wb3J0aWVyZW4nOw0KJGxhbmdbJ2ltcG9ydF9tdWx0aWRvbWFpbnNfaGVscCddID0gJ0hpbndlaXM6IEVzIHd1cmRlbiBiZXJlaXRzICVzIE1hbCBEYXRlbiBpbXBvcnRpZXJ0ISEhJzsNCiRsYW5nWydkcm9wX211bHRpZG9tYWlucyddID0gJ1RhYmVsbGVuIGRlcyBhbHRlbiBNb2R1bHMgTXVsdGlEb21haW5zIGzDtnNjaGVuPyc7DQokbGFuZ1snbWFpbl9ldmVudF9oYW5kbGVyX2FjdGl2ZSddID0gJ1Rvb2xCb3ggaXN0IGltIEV2ZW50SGFuZGxlciBha3Rpdic7DQokbGFuZ1snbWFpbl9ldmVudF9oYW5kbGVyX2luYWN0aXZlJ10gPSAnRGllIFRvb2xCb3ggbXVzcyBpbSBUZW1wbGF0ZSBtaXQge1Rvb2xCb3h9IGFrdGl2aWVydCB3ZXJkZW4nOw0KJGxhbmdbJ21haW5fc3RhdHNfYWN0aXZlJ10gPSAnU3RhdGlzdGlrZW4nOw0KJGxhbmdbJ21haW5fc3RhdHNfaW5hY3RpdmUnXSA9ICdTdGF0aXN0aWtlbic7DQokbGFuZ1snbWFpbl9zdGF0c180MDRfYWN0aXZlJ10gPSAnNDA0IEZlaGxlci1UcmFja2luZyc7CQkNCiRsYW5nWydtYWluX3N0YXRzXzQwNF9pbmFjdGl2ZSddID0gJzQwNCBGZWhsZXItVHJhY2tpbmcnOw0KJGxhbmdbJ21haW5fb2xkdXJsX2FjdGl2ZSddID0gJ1VSTC1VbWxlaXR1bmdlbic7DQokbGFuZ1snbWFpbl9vbGR1cmxfaW5hY3RpdmUnXSA9ICdVUkwgVW1sZWl0dW5nZW4nOw0KJGxhbmdbJ21haW5fYXV0b2xpZ2h0Ym94X2FjdGl2ZSddID0gJ0F1dG9MaWdodEJveCc7DQokbGFuZ1snbWFpbl9hdXRvbGlnaHRib3hfaW5hY3RpdmUnXSA9ICdBdXRvTGlnaHRCb3gnOw0KJGxhbmdbJ21haW5fc29jaWFsc2hhcmVwcml2YWN5X2FjdGl2ZSddID0gJ1NvY2lhbFNoYXJlUHJpdmFjeSc7DQokbGFuZ1snbWFpbl9zb2NpYWxzaGFyZXByaXZhY3lfaW5hY3RpdmUnXSA9ICdTb2NpYWxTaGFyZVByaXZhY3knOw0KJGxhbmdbJ21haW5fdGFpbF9hY3RpdmUnXSA9ICd0YWlsIExvZyBGdW5rdGlvbmFsaXTDpHQnOw0KJGxhbmdbJ21haW5fdGFpbF9pbmFjdGl2ZSddID0gJ3RhaWwgTG9nIEZ1bmt0aW9uYWxpdMOkdCc7DQokbGFuZ1snbWFpbl9kZWJ1Z19hY3RpdmUnXSA9ICdEZWJ1Z2dpbmcnOw0KJGxhbmdbJ21haW5fZGVidWdfaW5hY3RpdmUnXSA9ICdEZWJ1Z2dpbmcnOw0KJGxhbmdbJ21haW5fc21hcnR5cGx1Z2luc19hY3RpdmUnXSA9ICdTbWFydHkgUGx1Z2luICR0YnRvb2xzIGlzdCBha3Rpdic7DQokbGFuZ1snbWFpbl9tb2JpbGVkZXRlY3RfYWN0aXZlJ10gPSAnU21hcnR5IFBsdWdpbiAkdGJtb2JpbGUgaXN0IGFrdGl2IC0gbW9iaWxlIEdlcsOkdGUgZXJrZW5uZW4nOw0KJGxhbmdbJ21haW5fZnVuY3Rpb25zX2FjdGl2ZSddID0gJ0RpZSBUb29sQm94IFBsdWdpbnMgc3RlaGVuIHp1ciBWZXJmw7xndW5nJzsNCiRsYW5nWydtYWluX21vZGlmaWVyX2FjdGl2ZSddID0gJ0RpZSBUb29sQm94IE1vZGlmaWVyIHN0ZWhlbiB6dXIgVmVyZsO8Z3VuZyc7DQokbGFuZ1snbW9kdWxlb3BzJ10gPSAnTW9kdWxlIE9wZXJhdGlvbnMnOw0KJGxhbmdbJ21vZHVsZW9wc191c2UnXSA9ICdNb2R1bGUgT3BlcmF0aW9ucyBudXR6ZW4gLT4gQmFja3VwIHVuZCBXaWVkZXJoZXJzdGVsbHVuZyB2b24gTW9kdWxlaW5zdGVsbHVuZ2VuJzsNCiRsYW5nWydtc2dfc2F2ZXRlbXBsYXRlcHJlZiddID0gJ0RpZSBUZW1wbGF0ZWVpbnN0ZWxsdW5nZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGdlc3BlaWNoZXJ0JzsNCiRsYW5nWydtc2dfc2F2ZXByZWYnXSA9ICdEaWUgRWluc3RlbGx1bmdlbiB3dXJkZW4gZXJmb2xncmVpY2ggZ2VzcGVpY2hlcnQnOw0KJGxhbmdbJ21zZ19yZXNldHByZWYnXSA9ICdEaWUgRWluc3RlbGx1bmdlbiB3dXJkZW4gZXJmb2xncmVpY2ggenVyw7xja2dlc2V0enQnOw0KJGxhbmdbJ21vYmlsZXRwbCddID0gJ01vYmlsZSBUZW1wbGF0ZSc7DQoNCiMgTg0KJGxhbmdbJ25ldmVyJ10gPSAnTmllbWFscyc7DQokbGFuZ1snbmV3J10gPSAnKG5ldSknOw0KJGxhbmdbJ25ld3JlZGlyZWN0J10gPSAnTmV1ZSBVUkwgVW1sZWl0dW5nJzsNCiRsYW5nWydub3RlcyddID0gJ05vdGl6ZW4nOw0KJGxhbmdbJ25vX2ZpbGVzJ10gPSAiWnUgZGllc2VtIFRlbXBsYXRlIGV4aXN0aWVyZW4ga2VpbmUgRGF0ZWllbi4iOw0KDQojIE8NCiRsYW5nWydvbGR1cmxfdXNlJ10gPSAnUmVpdGVyIGbDvHIgVVJMLVVtbGVpdHVuZ2VuIGFrdGl2aWVyZW4nOw0KJGxhbmdbJ29sZHVybF91c2VfY2RhdGUnXSA9ICdFcnN0ZWxsdW5ncy1EYXR1bSBhbnplaWdlbic7DQokbGFuZ1snb2xkdXJsX3VzZV9tZGF0ZSddID0gJ0FrdHVhbGlzaWVydW5nc2RhdHVtIGFuemVpZ2VuJzsNCiRsYW5nWydvdmVyd3JpdGUnXSA9ICdEaWUgYmVyZWl0cyBiZXN0ZWhlbmRlbiBUZW1wbGF0ZWRhdGVuICZ1dW1sO2JlcnNjaHJlaWJlbic7DQokbGFuZ1snb3ZlcndyaXRlJ10gPSAnRGllIGJlcmVpdHMgZXhpc3RpZXJlbmRlbiBNb2R1bC1UZW1wbGF0ZXMgJnV1bWw7YmVyc2NocmVpYmVuJzsNCg0KDQojIFANCiRsYW5nWydzZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4nOw0KJGxhbmdbJ3BhZ2UnXSA9ICdTZWl0ZSc7DQokbGFuZ1sncGFnZWlkJ10gPSAnU2VpdGVuLUlEJzsNCiRsYW5nWydwYWdlYWxpYXMnXSA9ICdTZWl0ZW4tQWxpYXMnOw0KJGxhbmdbJ3BhcmFtX2ludmFsaWQnXSA9ICd7VG9vbEJveH0gRGVyIFBhcmFtZXRlciBtb2Q9Ilttb2RdIiBpc3QgbmljaHQgZ8O8bHRpZyc7DQokbGFuZ1sncGFyYW1fZW1wdHknXSA9ICd7VG9vbEJveH0gRGVyIFBhcmFtZXRlciAiW3BhcmFtXSIgaXN0IG5pY2h0IGRlZmluaWVydCc7DQokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEYXMgTW9kdWwgVG9vbEJveCB3dXJkZSBlcmZvbGdyZWljaCBpbnN0YWxsaWVydC4gU2llIGVycmVpY2hlbiBkYXMgTW9kdWwtQmFja2VuZCDDvGJlciBFcndlaXRlcnVuZ2VuIC8gVG9vbEJveC4gRGFzIE1vZHVsIG51dHp0IGRpZSBCZXJlY2h0aWd1bmcgIk1hbmFnZSBUb29sQm94Ii4nOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdEYXMgTW9kdWwgVG9vbEJveCB3dXJkZSBlcmZvbGdyZWljaCBkZWluc3RhbGxpZXJ0Lic7DQokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdFaW5zdGVsbHVuZ2VuJzsNCiRsYW5nWydwcmV1bmluc3RhbGwnXSA9ICdTaW5kIFNpZSBzaWNoZXIsIGRhc3MgU2llIGRhcyBNb2R1bCBUb29sQm94IHdpcmtsaWNoIGRlaW5zdGFsbGllcmVuIGvDtm5uZW4/JzsNCiRsYW5nWydwYXJhbW1vZCddID0gJ1Rvb2xib3ggTW9kdWwgRWxlbWVudCwgQmVpc3BpZWw6IG1vZD0ic29jaWFsc2hhcmVwcml2YWN5IiBmw7xyIGRhcyBTb2NpYWxTaGFyZVByaXZheSBFbGVtZW50JzsNCiRsYW5nWydwYXJhbXVzZXJuYW1lJ10gPSAnQmVudXR6ZXJuYW1lJzsNCiRsYW5nWydwYXJhbWxpc3QnXSA9ICdOYW1lIGRlciBMaXN0ZSc7DQokbGFuZ1sncGFyYW1zZWFyY2gnXSA9ICdTdWNoYmVncmlmZic7DQokbGFuZ1sncGFyYW10ZW1wbGF0ZSddID0gJ05hbWUgZGVzIFRlbXBsYXRlcyB3ZWxjaGVzIHZlcndlbmRldCB3aXJkLiBEaWVzZXMgVGVtcGxhdGUgbXVzcyBleGlzdGllcmVuIGltIFJlaXRlciBkZXMgdmVyd2VuZGV0ZW4gVG9vbGJveCBNb2R1bHMgc2ljaHRiYXIgc2Vpbi4gT2huZSBkaWVzZW4gUGFyYW1ldGVyIHdpcmQgZGFzIGFscyBTdGFuZGFyZC1UZW1wbGF0ZSBkZWZpbmllcnRlIFRlbXBsYXRlIHZlcndlbmRldC4nOw0KJGxhbmdbJ3BhcmFtY291bnQnXSA9ICdBbnphaGwgRGF0ZW5zw6R0emUgZGllIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuJzsNCiRsYW5nWydwYXJhbWRhdGVmb3JtYXQnXSA9ICdEYXR1bXNmb3JtYXQgaW4gZGVyIEZvcm0gZC1tLVkgSDppOnMnOw0KJGxhbmdbJ3BhcmFtY2FjaGV0aW1lJ10gPSAnWmVpdCBpbiBNaW51dGVuIGluIGRlbmVuIGRhcyBSZXN1bHRhdCBpbSBDYWNoZSBnZXNwZWljaGVydCBibGVpYnQuIFN0YW5kYXJkIGlzdCAxMCBNaW51dGVuICgxMCkuJzsNCiRsYW5nWydwYXJhbWltYWdlJ10gPSAnUGZhZCB6dW0gQmlsZCc7DQokbGFuZ1sncGFyYW1oZWlnaHQnXSA9ICdIw7ZoZSBpbiBQaXhlbCc7DQokbGFuZ1sncGFyYW13aWR0aCddID0gJ0JyZWl0ZSBpbiBQaXhlbCc7DQokbGFuZ1sncGFyYW1hbHQnXSA9ICdhbHQgQXR0cmlidXQnOw0KJGxhbmdbJ3BhcmFtdGl0bGUnXSA9ICd0aXRsZSBBdHRyaWJ1dCc7DQokbGFuZ1sncGFyYW1jbGFzcyddID0gJ2NsYXNzIEF0dHJpYnV0JzsNCiRsYW5nWydwYXJhbWlkJ10gPSAnaWQgQXR0cmlidXQnOw0KJGxhbmdbJ3BhcmFtc3R5bGUnXSA9ICdzdHlsZSBBdHRyaWJ1dCc7DQokbGFuZ1sncGFyYW1ub3RhZyddID0gJ1Jlc3VsdGF0IG9obmUgVGFncyAoei5CLiBVUkwgZGVzIEJpbGRlcyknOw0KJGxhbmdbJ3BhcmFtZGV0YWlsdGVtcGxhdGUnXSA9ICdEZXRhaWx0ZW1wbGF0ZSc7DQokbGFuZ1sncGFyYW1maWxlJ10gPSAnRGF0ZWknOw0KJGxhbmdbJ3BhcmFtZmlsZWNoYXJzZXQnXSA9ICdaZWljaGVuc2F0eiAoY2hhcnNldCkgZGVyIERhdGVpJzsNCiRsYW5nWydwYXJhbWFjdGlvbiddID0gJ0FjdGlvbic7DQokbGFuZ1sncGFyYW1zb3J0YnknXSA9ICdTb3J0aWVyZW4gbmFjaCc7DQokbGFuZ1sncGFyYW1zb3J0b3JkZXInXSA9ICdTb3J0aWVycmVpaGVuZm9sZ2UnOw0KJGxhbmdbJ3BhcmFtZGVsaW1pdGVyJ10gPSAnRGVsaW1pdGVyIChUcmVubnplaWNoZW4pJzsNCiRsYW5nWydwcm9tcHRfaW1wb3J0dGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpbXBvcnRpZXJlbic7DQokbGFuZ1sncHJvbXB0X2Fib3V0J10gPSAnJlV1bWw7YmVyJzsNCiRsYW5nWydwcm9tcHRfYWN0aXZlJ10gPSAnQWt0aXYnOw0KJGxhbmdbJ3Byb21wdF9kZWxldGUnXSA9ICdMJm91bWw7c2NoZW4nOw0KJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOw0KJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBiZWFyYmVpdGVuJzsNCiRsYW5nWydwcm9tcHRfZmlsZSddID0gJ0RhdGVpJzsNCiRsYW5nWydwcm9tcHRfanF1ZXJ5J10gPSAnalF1ZXJ5IGVpbmJpbmRlbic7DQokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOYW1lJzsNCiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdOZXVlcyBUZW1wbGF0ZSBlcnN0ZWxsZW4nOw0KJGxhbmdbJ3Byb21wdF9zaXplJ10gPSAnR3LDtnNzZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlY3NzJ10gPSAnU3R5bGVzaGVldCc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlanMnXSA9ICdKYXZhU2NyaXB0JzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdIVE1MJzsNCiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnVGVtcGxhdGUtTmFtZSc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbWFuYWdlbWVudCddID0gJ1RlbXBsYXRldmVyd2FsdHVuZyc7DQokbGFuZ1sncHJvbXB0X3RlbXBsYXRlZmlsZXMnXSA9ICdUZW1wbGF0ZSBEYXRlaWVuJzsNCiRsYW5nWydwcm9tcHRfdXBsb2FkZmlsZSddID0gJ0RhdGVpIGF1c3cmYXVtbDtobGVuJzsNCiRsYW5nWydwcm9tcHRfdmVyc2lvbiddID0gJ1ZlcnNpb24nOw0KJGxhbmdbJ3Byb21wdF92aXNpYmxlJ10gPSAnSW0gVGVtcGxhdGUtTGlzdGVuZmVsZG1lbiZ1dW1sOyBzaWNodGJhcic7DQokbGFuZ1sncHJvbXB0X29sZHVybF90aXRsZSddID0gJ1VSTCBXZWl0ZXJsZWl0dW5nJzsNCiRsYW5nWydwcm9tcHRfc3RhdHNfNDA0X3RpdGxlJ10gPSAnNDA0IExvZ2dpbmcnOw0KJGxhbmdbJ3Byb21wdF9hdXRvbGlnaHRib3hfdGl0bGUnXSA9ICdBdXRvTGlnaHRCb3gnOw0KJGxhbmdbJ3Byb21wdF9zb2NpYWxzaGFyZXByaXZhY3lfdGl0bGUnXSA9ICdTb2NpYWxTaGFyZVByaXZhY3knOw0KJGxhbmdbJ3Byb21wdF9zdGF0c190aXRsZSddID0gJ1N0YXRpc2lrJzsNCiRsYW5nWydwcm9tcHRfZGVidWdfdGl0bGUnXSA9ICdEZWJ1Zyc7Ow0KJGxhbmdbJ3Byb21wdF90YWlsX3RpdGxlJ10gPSAnTG9nZ2luZyc7DQokbGFuZ1sncHJvbXB0X3ByZWZzX3RpdGxlJ10gPSAnRWluc3RlbGx1bmdlbic7DQokbGFuZ1sncHJvbXB0X211bHRpZG9tYWluX3RpdGxlJ10gPSAnTXVsdGlkb21haW5zJzsNCiRsYW5nWydwcm9tcHRfaW1hZ2VtYW5pcHVsYXRpb25fc29jaWFscGx1Z2luJ10gPSAnQmlsZGJlYXJiZWl0dW5nIC8gU29jaWFsIFBsdWdpbnMnOw0KJGxhbmdbJ3Byb21wdF90cmFja2luZ19sb2dnaW5nJ10gPSAnTG9nZ2luZyAgLyBUcmFja2luZyc7DQokbGFuZ1sncHJvbXB0X2dlbmVyYWxfcHJlZnMnXSA9ICdBbGxnZW1laW5lIEVpbnN0ZWxsdW5nZW4nOw0KJGxhbmdbJ3Byb21wdF9qYXZhc2NyaXB0X2Zvb3RlciddID0gJ0RhcyBhdXRvbWF0aXNjaCBlaW5nZWJ1bmRlbmUgSmF2YXNjcmlwdCB2b3IgZGVtICZsdDsvYm9keSZndDsgZWluYmluZGVuJzsNCiRsYW5nWydwcm9tcHRfdHdpdHRlcmZlZWRfdGl0bGUnXSA9ICdUd2l0dGVyZmVlZCc7DQokbGFuZ1sncHJvbXB0X3R3aXR0ZXJmZWVkYXBpa2V5J10gPSAnVHdpdHRlciBBUEkgS2V5JzsNCiRsYW5nWydwcm9tcHRfcGFyYW1ldGVyJ10gPSAnRm9sZ2VuZGUgUGFyYW1ldGVyIGvDtm5uZW4gaW0gVGVtcGxhdGUgdmVyd2VuZGV0IHdlcmRlbic7DQokbGFuZ1sncHJvbXB0X2Nzdl90aXRsZSddID0gJ0NTViBMaXN0SXQnOw0KJGxhbmdbJ3Byb21wdF9taW5pZnknXSA9ICdKYXZhc2NyaXB0IHVuZCBTdHlsZXNoZWV0cyBtaXQgTWluaWZ5IGtvbXByaW1pZXJ0IGVpbmJpbmRlbic7DQokbGFuZ1sncHJvbXB0X3N1bW1hcnl0ZW1wbGF0ZSddID0gJ1p1c2FtbWVuZmFzc3VuZ3MgVGVtcGxhdGUnOw0KJGxhbmdbJ3Byb21wdF9kZXRhaWx0ZW1wbGF0ZSddID0gJ0RldGFpbCBUZW1wbGF0ZSc7DQokbGFuZ1sncHJvbXB0X2RlbGltaXRlciddID0gJ0RlbGltaXRlciBkZXIgQ1NWIERhdGVpJzsNCiRsYW5nWydwcm9tcHRfY2hhcnNldGZpbGUnXSA9ICdDaGFyc2V0IENTViBEYXRlaSc7DQokbGFuZ1sncHJvbXB0X2NoYXJzZXRjbXMnXSA9ICdDaGFyc2V0IENNUyBTeXN0ZW0nOw0KJGxhbmdbJ3Byb21wdF91cmx0eXBlJ10gPSAnVVJMIFR5cCc7DQokbGFuZ1sncHJvbXB0X3VzZV9tb2JpbGV0ZW1wbGF0ZSddID0gJ01vYmlsZXMgVGVtcGxhdGUgYWt0aXZpZXJlbic7DQoNCg0KIyBRDQoNCiMgUg0KJGxhbmdbJ3JlYWxseW1ha2VhY3RpdmUnXSA9ICdXaXJrbGljaCBha3RpdmllcmVuPyc7DQokbGFuZ1sncmVhbGx5aWdub3JlJ10gPSAnRGllc2UgVVJMIGluIGRlciBGZWhsZXJsaXN0ZSBpZ25vcmllcmVuPyc7DQokbGFuZ1sncmVhbGx5bWFrZWluYWN0aXZlJ10gPSAnV2lya2xpY2ggZGVha3RpdmllcmVuPyc7DQokbGFuZ1sncmVhbGx5ZGVsZXRlJ10gPSAnV2lya2xpY2ggbMO2c2NoZW4/JzsNCiRsYW5nWydyZWRpcmVjdCddID0gJ1VSTCBVbWxlaXR1bmcnOw0KJGxhbmdbJ3JlZGlyZWN0ZWRpdCddID0gJ1VSTCBVbWxlaXR1bmcgYmVhcmJlaXRlbic7DQokbGFuZ1sncmVkaXJlY3RzJ10gPSAnVVJMcyB1bWxlaXRlbic7DQokbGFuZ1sncmVmZXJlciddID0gJ0hlcmt1bmZ0JzsNCiRsYW5nWydyZWdleHAnXSA9ICdSZWdFeHAnOw0KJGxhbmdbJ3Jlc2V0J10gPSAnWnVyw7xja3NldHplbic7DQokbGFuZ1sncmVzZXRvcmlnaW5hbCddID0gJ0F1ZiBkaWUgcHJvZ3JhbW1zZWl0aWdlbiBWb3JlaW5zdGVsbHVuZ2VuIHp1ciZ1dW1sO2Nrc2V0emVuJzsNCiRsYW5nWydyZXNldG9yaWdpbmFsd2FybmluZyddID0gJ1dvbGxlbiBTaWUgZGFzIFRlbXBsYXRlIHdpcmtsaWNoIG1pdCBkZW4gT3JpZ2luYWxkYXRlbiB6dXLDvGNrc2V0emVuPyc7DQokbGFuZ1sncmVzZXRvcmlnaW5hbHdhcm5pbmcyJ10gPSAnV29sbGVuIFNpZSBkaWUgRWluc3RlbGx1bmdlbiB3aXJrbGljaCBtaXQgZGVuIE9yaWdpbmFsZGF0ZW4genVyw7xja3NldHplbj8nOw0KJGxhbmdbJ3Jlc2V0dHdpdHRlcmZlZWQnXSA9ICdFaW5zdGVsbHVuZ2VuIHp1csO8Y2tzZXR6ZW4nOw0KJGxhbmdbJ3Jlc2V0dHdpdHRlcmZlZWR3YXJuaW5nJ10gPSAnV29sbGVuIFNpZSBkaWUgRWluc3RlbGx1bmdlbiB3aXJrbGljaCBsw7ZzY2hlbj8nOw0KDQoNCiMgUw0KJGxhbmdbJ3NlYXJjaHRlbXBsYXRlJ10gPSAnU3VjaHRlbXBsYXRlJzsNCiRsYW5nWydzZWFyY2hlbmdpbmUnXSA9ICdTdWNobWFzY2hpbmUnOw0KJGxhbmdbJ3NlbmQnXSA9ICdBYnNlbmRlbic7DQokbGFuZ1snc2Vzc2lvbl9pZCddID0gJ1Nlc3Npb24gSUQnOw0KJGxhbmdbJ3NldGZhbHNlJ10gPSAnRGVha3RpdmllcmVuJzsNCiRsYW5nWydzZXR0cnVlJ10gPSAnQWt0aXZpZXJlbic7DQokbGFuZ1snc21hcnR5dGFncyddID0gJ0luIGRpZXNlbSBUZW1wbGF0ZSBrw7ZubmVuIFNtYXJ0eS1UYWdzIGVpbmdlc2V0enQgd2VyZGVuLiBGb3JtYXQ6IFtbcm9vdF91cmxdXSc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5J10gPSAnU29jaWFsU2hhcmVQcml2YWN5JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfcHJvbXB0X2FkdmFuY2VkJ10gPSAnRXJ3ZWl0ZXJ0ZSBFaW5zdGVsbHVuZ2VuIGFrdGl2aWVyZW4gKEhUTUwsIFN0eWxlc2hlZXQgdW5kIEphdmFTY3JpcHQgVGVtcGxhdGUgZGlyZWt0IGJlYXJiZWl0ZW4pJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfZGVzY3JpcHRpb24nXSA9ICc8cD5Tb2NpYWxTaGFyZVByaXZhY3kgaXN0IGVpbiBQbHVnaW4genVtIHp3ZWlzdHVmaWdlbiBFaW5iaW5kdW5nIHZvbiBGYWNlYm9vaywgVHdpdHRlciB1bmQgR29vZ2xlUGx1cy4gRXJzdCBuYWNoIGVpbmVtIEtsaWNrIGF1ZiBkZW4gU2NoYWx0ZXIsIHdlcmRlbiBEYXRlbiB2b20gamV3ZWlsaWdlbiBEaWVuc3Qgw7xiZXJ0cmFnZW4uPGJyIC8+PGJyIC8+U29jaWFsU2hhcmVQcml2YWN5IHdpcmQgd2llIGZvbGd0IGVpbmdlYnVuZGVuOiB7VG9vbEJveCBtb2Q9InNvY2lhbHNoYXJlcHJpdmFjeSJ9PC9wPic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X2luYWN0aXZlJ10gPSAnU29jaWFsU2hhcmVQcml2YWN5IGlzdCBuaWNodCBha3RpdiEnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfaW5mb2xpbmsnXSA9ICdMaW5rIHp1IGVpbmVyIEluZm8tU2VpdGUgYXVmIGRlciBkaWUgRnVua3Rpb25hbGl0w6R0IGVya2zDpHJ0IHdpcmQnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfanF1ZXJ5J10gPSAnalF1ZXJ5IGVpbmJpbmRlbic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF90ZW1wbGF0ZV9pbmZvJ10gPSAnV2VpdGVyZSBJbmZvcyB6dW0gRWluc2F0eiB2b24gU29jaWFsU2hhcmVQcml2YWN5IHVuZCBkaWUgdmVyc2NoaWVkZW5lbiBPcHRpb25lbiBmaW5kZXQgc2ljaCBoaWVyOiA8YSBocmVmPSJodHRwOi8vd3d3LmhlaXNlLmRlL2V4dHJhcy9zb2NpYWxzaGFyZXByaXZhY3kvIj5odHRwOi8vd3d3LmhlaXNlLmRlL2V4dHJhcy9zb2NpYWxzaGFyZXByaXZhY3kvPC9hPic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3Byb21wdF90ZW1wbGF0ZSddID0gJ0hUTUwnOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV9wcm9tcHRfdGVtcGxhdGVjc3MnXSA9ICdTdHlsZXNoZWV0JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfcHJvbXB0X3RlbXBsYXRlanMnXSA9ICdKYXZhU2NyaXB0JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfc2V0dGluZ3NwZXJtYSddID0gJ0RhdWVyaGFmdCBha3RpdmllcmVuIHVuZCBEYXRlbiZ1dW1sO2JlciZzaHk7dHJhZ3VuZyB6dXN0aW1tZW46JzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0ZmJpbmZvJ10gPSAnMiBLbGlja3MgZiZ1dW1sO3IgbWVociBEYXRlbnNjaHV0ejogRXJzdCB3ZW5uIFNpZSBoaWVyIGtsaWNrZW4sIHdpcmQgZGVyIEJ1dHRvbiBha3RpdiB1bmQgU2llIGsmb3VtbDtubmVuIElocmUgRW1wZmVobHVuZyBhbiBGYWNlYm9vayBzZW5kZW4uIFNjaG9uIGJlaW0gQWt0aXZpZXJlbiB3ZXJkZW4gRGF0ZW4gYW4gRHJpdHRlICZ1dW1sO2JlcnRyYWdlbiAmbmRhc2g7IHNpZWhlIEkuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0ZmJvZmYnXSA9ICduaWNodCBtaXQgRmFjZWJvb2sgdmVyYnVuZGVuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0ZmJvbiddID0gJ21pdCBGYWNlYm9vayB2ZXJidW5kZW4nOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHR0d2l0dGVyaW5mbyddID0gJzIgS2xpY2tzIGYmdXVtbDtyIG1laHIgRGF0ZW5zY2h1dHo6IEVyc3Qgd2VubiBTaWUgaGllciBrbGlja2VuLCB3aXJkIGRlciBCdXR0b24gYWt0aXYgdW5kIFNpZSBrJm91bWw7bm5lbiBJaHJlIEVtcGZlaGx1bmcgYW4gVHdpdHRlciBzZW5kZW4uIFNjaG9uIGJlaW0gQWt0aXZpZXJlbiB3ZXJkZW4gRGF0ZW4gYW4gRHJpdHRlICZ1dW1sO2JlcnRyYWdlbiAmbmRhc2g7IHNpZWhlIEkuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0dHdpdHRlcm9mZiddID0gJ25pY2h0IG1pdCBUd2l0dGVyIHZlcmJ1bmRlbic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dHR3aXR0ZXJvbiddID0gJ21pdCBUd2l0dGVyIHZlcmJ1bmRlbic7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3R4dGdwbHVzaW5mbyddID0gJzIgS2xpY2tzIGYmdXVtbDtyIG1laHIgRGF0ZW5zY2h1dHo6IEVyc3Qgd2VubiBTaWUgaGllciBrbGlja2VuLCB3aXJkIGRlciBCdXR0b24gYWt0aXYgdW5kIFNpZSBrJm91bWw7bm5lbiBJaHJlIEVtcGZlaGx1bmcgYW4gR29vZ2xlKyBzZW5kZW4uIFNjaG9uIGJlaW0gQWt0aXZpZXJlbiB3ZXJkZW4gRGF0ZW4gYW4gRHJpdHRlICZ1dW1sO2JlcnRyYWdlbiAmbmRhc2g7IHNpZWhlIEkuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0Z3BsdXNvZmYnXSA9ICduaWNodCBtaXQgR29vZ2xlKyB2ZXJidW5kZW4nOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV90eHRncGx1c29uJ10gPSAnbWl0IEdvb2dsZSsgdmVyYnVuZGVuJzsNCiRsYW5nWydzb2NpYWxzaGFyZXByaXZhY3lfdHh0aGVscCddID0gJ1dlbm4gU2llIGRpZXNlIEZlbGRlciBkdXJjaCBlaW5lbiBLbGljayBha3RpdmllcmVuLCB3ZXJkZW4gSW5mb3JtYXRpb25lbiBhbiBGYWNlYm9vaywgVHdpdHRlciBvZGVyIEdvb2dsZSBpbiBkaWUgVVNBICZ1dW1sO2JlcnRyYWdlbiB1bmQgdW50ZXIgVW1zdCZhdW1sO25kZW4gYXVjaCBkb3J0IGdlc3BlaWNoZXJ0LiBOJmF1bWw7aGVyZXMgZXJmYWhyZW4gU2llIGR1cmNoIGVpbmVuIEtsaWNrIGF1ZiBkYXMgSS4nOw0KJGxhbmdbJ3NvY2lhbHNoYXJlcHJpdmFjeV90aXRsZSddID0gJ1NvY2lhbFNoYXJlUHJpdmFjeSAtIFNvY2lhbC1NZWRpYSBCdXR0b25zIG1pdCBkZXIgMi1LbGljayBSZWdlbCc7DQokbGFuZ1snc29jaWFsc2hhcmVwcml2YWN5X3VzZSddID0gJ1NvY2lhbFNoYXJlUHJpdmFjeSB2ZXJ3ZW5kZW4nOw0KJGxhbmdbJ3N0YW5kYXJkJ10gPSAnU3RhbmRhcmQnOw0KJGxhbmdbJ3N0YXRzJ10gPSAnU3RhdGlzdGlrZW4nOw0KJGxhbmdbJ3N0YXRzXzQwNCddID0gJzQwNCBGZWhsZXItVHJhY2tpbmcgYmVudXR6ZW4nOw0KJGxhbmdbJ3N0YXRzX2RhaWx5J10gPSAnVMOkZ2xpY2hlIFN0YXRpc3RpayB2ZXJ3ZW5kZW4nOw0KJGxhbmdbJ3N0YXRzX2VtYWlsJ10gPSAnRS1NYWlsIGbDvHIgbW9uYXRsaWNoZSBTdGF0aXN0aWsnOw0KJGxhbmdbJ3N0YXRzX2VtYWlsX2hlbHAnXSA9ICdMZWVyIGxhc3Nlbiwgd2VubiBrZWluZSBFLU1haWxzIHZlcnNhbmR0IHdlcmRlbiBzb2xsZW4nOw0KJGxhbmdbJ3N0YXRzX2VtYWlsX3N1YmplY3QnXSA9ICdUb29sQm94IFN0YXRpc3RpayAldSB2b24gJW0nOw0KJGxhbmdbJ3N0YXRzX3VzZSddID0gJ1N0YXRpc3RpayB2ZXJ3ZW5kZW4nOw0KJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXR1cyc7DQokbGFuZ1snc3VibWl0J10gPSAnU3BlaWNoZXJuJzsNCg0KIyBUDQokbGFuZ1sndGJpbWFnZSddID0gJ3RiaW1hZ2UnOw0KJGxhbmdbJ3RiaW1hZ2VfZGVzY3JpcHRpb24nXSA9ICdNaXQgdGJpbWFnZSBsYXNzZW4gc2ljaCBCaWxkZXIgZWluZmFjaCB2ZXJrbGVpbmVybiwgYXVmIEdyw7Zzc2Ugc2NobmVpZGVuIHVuZCBhdXNnZWJlbi4nOw0KJGxhbmdbJ3RiaW1hZ2Vub2ZpbGUnXSA9ICdLZWluZSBXYXNzZXJ6ZWljaGVuLUdyYWZpayBkZWZpbmllcnQnOw0KJGxhbmdbJ3RiaW1hZ2VfbHQnXSA9ICdvYmVuIGxpbmtzJzsNCiRsYW5nWyd0YmltYWdlX210J10gPSAnb2JlbiBtaXR0ZSc7DQokbGFuZ1sndGJpbWFnZV9ydCddID0gJ29iZW4gcmVjaHRzJzsNCiRsYW5nWyd0YmltYWdlX2xtJ10gPSAnbWl0dGUgbGlua3MnOw0KJGxhbmdbJ3RiaW1hZ2VfbW0nXSA9ICdtaXR0ZSBtaXR0ZSc7DQokbGFuZ1sndGJpbWFnZV9ybSddID0gJ21pdHRlIHJlY2h0cyc7DQokbGFuZ1sndGJpbWFnZV9sYiddID0gJ3VudGVuIGxpbmtzJzsNCiRsYW5nWyd0YmltYWdlX21iJ10gPSAndW50ZW4gbWl0dGUnOw0KJGxhbmdbJ3RiaW1hZ2VfcmInXSA9ICd1bnRlbiByZWNodHMnOw0KJGxhbmdbJ3RhaWwnXSA9ICd0YWlsIExvZyc7DQokbGFuZ1sndGFpbF9kZXNjcmlwdGlvbiddID0gJ0hpZXIgZGllIEJlc2NocmVpYnVuZyByZWluLic7DQokbGFuZ1sndGFpbF9wcm9tcHRfZmlsZW5hbWUnXSA9ICdBdXN3YWhsIHdlbGNoZXMgTG9nZmlsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwnOw0KJGxhbmdbJ3RhaWxfcHJvbXB0X2xpbmVzJ10gPSAnQW56YWhsIGRlciBaZWlsZW4gd2VsY2hlIGJlaW0gZXJzdGVuIExlc2V2b3JnYW5nIGF1cyBkZW0gTG9nZmlsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbic7DQokbGFuZ1sndGFpbF9wcm9tcHRfbG9nJ10gPSAnTG9nZmlsZSBBdXNnYWJlJzsNCiRsYW5nWyd0YWlsX3N0YXJ0J10gPSAnTG9nZ2luZyBzdGFydGVuJzsNCiRsYW5nWyd0YWlsX3N0b3AnXSA9ICdMb2dnaW5nIHN0b3BwZW4nOw0KJGxhbmdbJ3RhaWxfdGl0bGUnXSA9ICdMb2dmaWxlIEF1c2dhYmUgbWl0dGVscyBqUXVlcnkgVGFpbCc7DQokbGFuZ1sndGFpbF91c2UnXSA9ICdMb2dmaWxlIEF1c3dlcnR1bmcgbWl0dGVscyBqcXVlcnkvdGFpbCBha3RpdmllcmVuLiBEYWJlaSB3aXJkIG1pdCBlaW5lciBkZXIgVW5peGZ1bmt0aW9uICJ0YWlsIiDDpGhubGljaGVuIEZ1bmt0aW9uIGluIExvZ2ZpbGUgaW4gUmVhbFRpbWUgYW5nZXplaWd0Lic7DQokbGFuZ1sndGFyZ2V0cGFnZSddID0gJ1ppZWwtU2VpdGUnOw0KJGxhbmdbJ3RhcmdldHVybCddID0gJ1ppZWwtVVJMJzsNCiRsYW5nWyd0ZW1wbGF0ZWltcG9ydCddID0gJ0RhcyBUZW1wbGF0ZSB3dXJkZSBlcmZvbGdyZWljaCBpbXBvcnRpZXJ0Lic7DQokbGFuZ1sndGVtcGxhdGV1cGRhdGVkJ10gPSAnRGFzIFRlbXBsYXRlIHd1cmRlIGFrdHVhbGlzaWVydC4nOw0KJGxhbmdbJ3RlbXBsYXRlYWRkZWQnXSA9ICdEYXMgVGVtcGxhdGUgd3VyZGUgaGluenVnZWYmdXVtbDtndC4nOw0KJGxhbmdbJ3RlbXBsYXRlZGVsZXRlZCddID0gJ1RlbXBsYXRlIGdlbCZvdW1sO3NjaHQnOw0KJGxhbmdbJ3RpdGxlX3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUtRWRpdG9yJzsNCiRsYW5nWyd0aXRsZV9pbXBvcnR4bWwnXSA9ICdUZW1wbGF0ZSB2aWEgWE1MLURhdGVpIGltcG9ydGllcmVuJzsNCiRsYW5nWyd0aW1lJ10gPSAnWmVpdCc7DQokbGFuZ1sndG91cmwnXSA9ICdGZWhsZW5kZSBTZWl0ZSc7DQokbGFuZ1sndG9rZW4nXSA9ICdUb2tlbic7DQokbGFuZ1sndG9rZW5vayddID0gJ0RlciBUd2l0dGVydG9rZW4gaXN0IGFrdGl2IHVuZCBmdW5rdGlvbmllcnQga29ycmVrdCc7DQokbGFuZ1sndHdpdHRlcmZlZWQnXSA9ICdUd2l0dGVyZmVlZCc7DQokbGFuZ1sndHdpdHRlcmZlZWRfdXNlJ10gPSAnVHdpdHRlcmZlZWQgYWt0aXZpZXJlbic7DQokbGFuZ1sndHdpdHRlcmZlZWRfZGVzY3JpcHRpb24nXSA9IDw8PEVPVA0KCTxwPk1pdCBUd2l0dGVyZmVlZCBrw7ZubmVuIGthbm4gZGVyIEZlZWQgZWluZXMgVHdpdHRlci1BY2NvdW50cyBpbiBkaWUgV2Vic2VpdGUgZWluZ2VidW5kZW4gd2VyZGVuLiBEaWUgRGFyc3RlbGx1bmcgZGVzIEZlZWRzIGthbm4gaW4gZWluZW0gVGVtcGxhdGUgZGVmaW5pZXJ0IHdlcmRlbi48L3A+DQoJPGNvZGU+DQoJCSYjMTIzO1Rvb2xCb3ggbW9kPSd0d2l0dGVyZmVlZCcgdXNlcm5hbWU9J2x1a2FzYmxhdHRlcicgY291bnQ9NSB0ZW1wbGF0ZT0ndHdpdHRlcmZlZWQnIGRhdGVmb3JtYXQ9J2ZyaWVuZGx5JyBjYWNoZXRpbWU9MTAgJiMxMjU7PGJyIC8+DQoJCSYjMTIzO1Rvb2xCb3ggbW9kPSd0d2l0dGVyZmVlZCcgdXNlcm5hbWU9J2x1a2FzYmxhdHRlcicgY291bnQ9NSB0ZW1wbGF0ZT0ndHdpdHRlcmZlZWQnIGRhdGVmb3JtYXQ9J2QubS5ZIEg6aScgJiMxMjU7PGJyIC8+DQoJCSYjMTIzO1Rvb2xCb3ggbW9kPSd0d2l0dGVyZmVlZCcgdXNlcm5hbWU9J2x1a2FzYmxhdHRlcicgbGlzdD0nd2ViZGVzaWduJyBjb3VudD01ICYjMTI1OzxiciAvPg0KCQkmIzEyMztUb29sQm94IG1vZD0ndHdpdHRlcmZlZWQnIHNlYXJjaD0nI2Ntc21zJyBjb3VudD0xMCAmIzEyNTsNCgk8L2NvZGU+DQpFT1Q7DQokbGFuZ1sndHdpdHRlcmZlZWRfYXBpZGVzY3JpcHRpb24nXSA9IDw8PEVPVA0KCTxwPlJlZ2lzdGVyZSBkZWluZSBTZWl0ZSBiZWkgPGEgaHJlZj0iaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vYXBwcy9uZXciIHRhcmdldD0iX2JsYW5rIj5Ud2l0dGVyPC9hPiB1bmQgZsO8bGxlIGRlbiBBUEkgS2V5IGluIGZvbGdlbmRlIEZlbGRlcjo8L3A+IA0KRU9UOw0KJGxhbmdbJ3R3aXR0ZXJmZWVkX25vYXV0aCddID0gJ1R3aXR0ZXIgQXV0aGVudGlmaWthdGlvbiBmZWhsZ2VzY2hsYWdlbi4gUHLDvGZlbiBTaWUgZGllIEVpbnN0ZWxsdW5nZW4nOw0KDQoNCiMgVQ0KJGxhbmdbJ3VybCddID0gJ1VSTCc7DQokbGFuZ1sndXJscyddID0gJ1VSTHMnOw0KJGxhbmdbJ3VwZGF0ZWQnXSA9ICdha3R1YWxpc2llcnQnOw0KJGxhbmdbJ3VzZXJ0b2tlbiddID0gJ1VzZXIgVG9rZW4nOw0KJGxhbmdbJ3VzZXJzZWNyZXQnXSA9ICdVc2VyIFNlY3JldCc7DQoNCiMgVg0KJGxhbmdbJ3Zpc2l0cyddID0gJ0Jlc3VjaGVyJzsNCiRsYW5nWyd2aWV3J10gPSAnQW5zY2hhdWVuJzsNCg0KIyBXDQokbGFuZ1snd2F0ZXJtYXJrdGV4dCddID0gJ1dhc3NlcnplaWNoZW4gbWl0IFRleHQnOw0KJGxhbmdbJ3dhdGVybWFya2ltYWdlJ10gPSAnV2Fzc2VyemVpY2hlbiBtaXQgQmlsZCc7DQokbGFuZ1snd210X3RleHQnXSA9ICdXYXNzZXJ6ZWljaGVuIFRleHQsIHouQi4gJmNvcHk7IENvcHlyaWdodCBieSBUb29sYm94JzsNCiRsYW5nWyd3bXRfZm9udCddID0gJ1NjaHJpZnRhcnQgdW5kIEdyw7Zzc2UnOw0KJGxhbmdbJ3dtdF9zaXplJ10gPSAnU2NocmlmdGdyw7Zzc2UnOw0KJGxhbmdbJ3dtdF9jb2xvciddID0gJ0ZhcmJlIGRlciBTY2hyaWZ0JzsNCiRsYW5nWyd3bXRfb3BhY2l0eSddID0gJ09wYWNpdHknOw0KJGxhbmdbJ3dtdF9wb3NpdGlvbiddID0gJ1Bvc2l0aW9uJzsNCiRsYW5nWyd3bXRfcG9zeCddID0gJ1Bvc2l0aW9uIGluIFgnOw0KJGxhbmdbJ3dtdF9wb3N5J10gPSAnUG9zaXRpb24gaW4gWSc7DQokbGFuZ1snd21pX2ltYWdlJ10gPSAnV2Fzc2VyemVpY2hlbiBCaWxkJzsNCiRsYW5nWyd3bWlfcmVsc2l6ZSddID0gJ1JlbGF0aXZlIEdyw7Zzc2UgZGVzIFdhc3NlcnplaWNoZW4gQmlsZGVzIHp1bSBiZWFyYmVpdGV0ZW4gQmlsZCBpbiAlJzsNCg0KIyBYDQoNCiMgWQ0KJGxhbmdbJ3llYXInXSA9ICdKYWhyJzsNCiRsYW5nWyd5ZWFyJ10gPSAnSmFocmUnOw0KDQojIFoNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPg0K]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPg0K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Autolightbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KZmluYWwgY2xhc3MgQXV0b2xpZ2h0Ym94DQp7DQoJIyBjaGFuZ2UgdGhpcyB0byAnYWJzb2x1dGUnIG9yICdyZWxhdGl2ZScgaWYgbmVlZGVkOg0KCXByaXZhdGUgc3RhdGljICRfdGh1bWJfdXJsX3R5cGUgPSAncmVsYXRpdmUnOw0KCXByaXZhdGUgc3RhdGljICRfaW1nX3VybF90eXBlICAgPSAnYWJzb2x1dGUnOw0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQ0KCXByaXZhdGUgZnVuY3Rpb24gX19jbG9uZSgpIHt9DQoJDQoJDQoJLyoqDQoJICogcmVwbGFjZSBpbWFnZXMgd2lkdGggdGh1bWJzDQoJICogQHBhcmFtIHN0cmluZyAkdHh0IC0gdGV4dCB3aXRoIGltYWdlIHRhZyhzKQ0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBJbWcyVGh1bWIoJHR4dCwgJGF0dHJpYnV0ZXMgPSBhcnJheSgpLCAkc2V0dGluZ3MgPSBhcnJheSgpKQ0KCXsNCgkJJGF0dHJpYnV0ZXNbJ2NsYXNzJ10gPSBpc3NldCgkYXR0cmlidXRlc1snY2xhc3MnXSkgPyB0cmltKCdhdXRvbGlnaHRib3ggJyAuICRhdHRyaWJ1dGVzWydjbGFzcyddKSA6ICdhdXRvbGlnaHRib3gnOw0KCQkNCgkJaWYgKGlzc2V0KCRzZXR0aW5nc1sndXJsdHlwZSddKSkgew0KCQkJc2VsZjo6JF90aHVtYl91cmxfdHlwZSA9ICRzZXR0aW5nc1sndXJsdHlwZSddOw0KCQkJc2VsZjo6JF9pbWdfdXJsX3R5cGUgPSAkc2V0dGluZ3NbJ3VybHR5cGUnXTsNCgkJfQ0KCQkNCgkJDQoJCSRhdHRyaWJzID0gJyc7DQoJCWZvcmVhY2goJGF0dHJpYnV0ZXMgYXMgJGsgPT4gJHYpDQoJCXsNCgkJCSRhdHRyaWJzIC49ICRrIC4gJz0iJyAuICR2IC4gJyIgJzsNCgkJfQ0KCQkNCgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCQkNCgkJJGRlYnVnID0gJGNvbmZpZ1snZGVidWcnXTsNCgkJLy8kZGVidWcgPSBmYWxzZTsNCgkJDQoJCWlmKCRkZWJ1ZykNCgkJew0KCQkJZWNobyAnPHByZT48aDE+Y29udGVudCBiZWZvcmU6IDwvaDE+PGJyLz4nOw0KCQkJZWNobyBodG1sZW50aXRpZXMoJHR4dCk7DQoJCQllY2hvICc8L3ByZT48YnIvPjxici8+JzsNCgkJfQ0KCQkNCgkJJGFsX3RodW1iX3BhdGggPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSAuICcvQXV0b0xpZ2h0Qm94JzsNCgkJJGFsX3RodW1iX3VybCAgPSAkY29uZmlnWyd1cGxvYWRzX3VybCddICAuICcvQXV0b0xpZ2h0Qm94JzsNCgkJJGFsX3ByZWZpeCAgICAgPSBiYXNlbmFtZSgkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSkgLiAnL0F1dG9MaWdodEJveCc7DQoJCQ0KCQlpZigkZGVidWcpDQoJCXsNCgkJCWVjaG8gJzxwcmU+PGgxPmF1dG8gbGlnaHRib3ggcHJlZml4OiA8L2gxPjxici8+JzsNCgkJCWVjaG8gJGFsX3ByZWZpeDsNCgkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQl9DQoJCQ0KCQlpZighaXNfZGlyKCRhbF90aHVtYl9wYXRoKSkNCgkJCUBta2RpcigkYWxfdGh1bWJfcGF0aCwgMDc3Nyk7DQoJCQ0KCQkkaW1ncyAgPSBzZWxmOjpfZmluZF9pbWdzKCR0eHQpOw0KCQlmb3JlYWNoKCRpbWdzIGFzICRpbWcpDQoJCXsNCgkJCWlmKHN0YXJ0c3dpdGgoJGltZ1snc3JjJ10sICRjb25maWdbJ2ltYWdlX3VwbG9hZHNfdXJsJ10pKQ0KCQkJew0KCQkJCSRyZWxhdGl2ZV9wcmVmaXggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycgLCB0cmltKHN0cl9yZXBsYWNlKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAnJywgJGNvbmZpZ1snaW1hZ2VfdXBsb2Fkc19wYXRoJ10pLCAnLycgLiBESVJFQ1RPUllfU0VQQVJBVE9SKSkgLiAnLyc7DQoJCQkJJHNyY19wcmVmaXggICAgICA9ICRjb25maWdbJ2ltYWdlX3VwbG9hZHNfdXJsJ107DQoJCQl9DQoJCQllbHNlIGlmKHN0YXJ0c3dpdGgoJGltZ1snc3JjJ10sICRjb25maWdbJ3VwbG9hZHNfdXJsJ10pKQ0KCQkJew0KCQkJCSRyZWxhdGl2ZV9wcmVmaXggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycgLCB0cmltKHN0cl9yZXBsYWNlKCRjb25maWdbJ3Jvb3RfcGF0aCddLCAnJywgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10pLCAnLycgLiBESVJFQ1RPUllfU0VQQVJBVE9SKSkgLiAnLyc7DQoJCQkJJHNyY19wcmVmaXggICAgICA9ICRjb25maWdbJ3VwbG9hZHNfdXJsJ107DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHJlbGF0aXZlX3ByZWZpeCA9ICcnOw0KCQkJCSRzcmNfcHJlZml4ICAgICAgPSAkY29uZmlnWydyb290X3VybCddOw0KCQkJfQ0KCQkJDQoJCQkkc3JjID0gJHJlbGF0aXZlX3ByZWZpeCAuIHRyaW0oc3RyX3JlcGxhY2UoJHNyY19wcmVmaXggLiAnLycsICcnLCAkaW1nWydzcmMnXSksICcvJyk7DQoJCQkNCgkJCWlmKCRkZWJ1ZykNCgkJCXsNCgkJCQllY2hvICc8cHJlPjxoMT5pbWcgYXJyYXkgMXN0OiA8L2gxPjxici8+JzsNCgkJCQlwcmludF9yKCRpbWcpOw0KCQkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQkJCWVjaG8gJzxwcmU+PGgxPnJlbGF0aXZlIHNyYzogPC9oMT48YnIvPic7DQoJCQkJZWNobygkc3JjKTsNCgkJCQllY2hvICc8L3ByZT48YnIvPjxici8+JzsNCgkJCX0NCgkJCQ0KCQkJIyBUb0RvOiB1c2UgX2Jhc2U2NHVybF9lbmNvZGUoKSB0byBrZWVwIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiBpbnN0ZWFkIG9mIHJlYnVpbGQgdGhlIHdob2xlIGxvY2F0aW9uIGluIHRoZSB0aHVtYnMgZGlyDQoJCQkjJGRpciAgICAgICAgICA9IHNlbGY6Ol9iYXNlNjR1cmxfZW5jb2RlKHRyaW0oZGlybmFtZSgkc3JjKSwgJy8nIC4gRElSRUNUT1JZX1NFUEFSQVRPUikpOw0KCQkJJGRpciAgICAgICAgICA9IHRyaW0oZGlybmFtZSgkc3JjKSwgJy8nIC4gRElSRUNUT1JZX1NFUEFSQVRPUik7DQoJCQkkZmlsZV9uYW1lICAgID0gYmFzZW5hbWUoJHNyYyk7DQoJCQkkdGh1bWJfcHJlZml4ID0gbWQ1KCRpbWdbJ3dpZHRoJ10gLiAkaW1nWydoZWlnaHQnXSkgLiAnXyc7DQoJCQkNCgkJCWlmKHN0YXJ0c3dpdGgoJHNyYywgJGFsX3ByZWZpeCkpDQoJCQl7DQoJCQkJI2FscmVhZHkgYSB0aHVtYj8gLT4gZ2V0IHRoZSBvcmlnaW5hbCBmaWxlbmFtZQ0KCQkJCSRmaWxlX25hbWUgID0gc3Vic3RyKCRmaWxlX25hbWUsIHN0cmxlbigkdGh1bWJfcHJlZml4KSk7DQoJCQkJJHNyYyAgICAgICAgPSBzdWJzdHIoJGRpciwgc3RybGVuKCRhbF9wcmVmaXggLiAnLycpKSAuICcvJyAuICRmaWxlX25hbWU7DQoJCQkJJGRpciAgICAgICAgPSB0cmltKGRpcm5hbWUoJHNyYyksICcvJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IpOw0KCQkJCSRpbWdbJ3NyYyddID0gJHNyYzsNCgkJCX0NCgkJCQ0KCQkJaWYoJGRlYnVnKQ0KCQkJew0KCQkJCWVjaG8gJzxwcmU+PGgxPmltZyBhcnJheSAybmQ6IDwvaDE+PGJyLz4nOw0KCQkJCXByaW50X3IoJGltZyk7DQoJCQkJZWNobyAnPC9wcmU+PGJyLz48YnIvPic7DQoJCQl9DQoJCQkNCgkJCSR0aHVtYl9uYW1lID0gJHRodW1iX3ByZWZpeCAuICRmaWxlX25hbWU7DQoJCQkkdGh1bWJfcGF0aCA9ICRhbF90aHVtYl9wYXRoIC4gJy8nIC4gJGRpciAuICcvJyAuICR0aHVtYl9uYW1lOw0KCQkJJHRodW1iX3VybCAgPSAoc2VsZjo6JF90aHVtYl91cmxfdHlwZSA9PSAnYWJzb2x1dGUnID8gJGFsX3RodW1iX3VybCA6ICRhbF9wcmVmaXgpIC4gJy8nIC4gJGRpciAuICcvJyAuICR0aHVtYl9uYW1lOw0KCQkJDQoJCQlpZigkZGVidWcpDQoJCQl7DQoJCQkJZWNobyAnPHByZT48aDE+dGh1bWIgbmFtZTogPC9oMT48YnIvPic7DQoJCQkJZWNobyAkdGh1bWJfbmFtZTsNCgkJCQllY2hvICc8L3ByZT48YnIvPjxici8+JzsNCgkJCQllY2hvICc8cHJlPjxoMT50aHVtYiBwYXRoOiA8L2gxPjxici8+JzsNCgkJCQllY2hvICR0aHVtYl9wYXRoOw0KCQkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQkJCWVjaG8gJzxwcmU+PGgxPnRodW1iIHVybDogPC9oMT48YnIvPic7DQoJCQkJZWNobyAkdGh1bWJfdXJsOw0KCQkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQkJfQ0KCQkJDQoJCQkkdGl0bGUgID0gJGltZ1sndGl0bGUnXSAhPSAnJyA/ICd0aXRsZT0iJyAuICRpbWdbJ3RpdGxlJ10gLiAnIiAnIDogKCRpbWdbJ2FsdCddICE9ICcnID8gJ3RpdGxlPSInLiRpbWdbJ2FsdCddIC4gJyIgJyA6ICcnKTsNCgkJCQ0KCQkJJHJlc3VsdCA9IHNlbGY6Ol9jcmVhdGVfdGh1bWIoDQoJCQkJJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnLycgLiAkc3JjLA0KCQkJCSR0aHVtYl9wYXRoLA0KCQkJCSRpbWdbJ3dpZHRoJ10sDQoJCQkJJGltZ1snaGVpZ2h0J10NCgkJCSk7DQoJCQkNCgkJCWlmICgkZGVidWcpIHsNCgkJCQllY2hvICc8cHJlPjxoMT5fY3JlYXRlX3RodW1iIFJlc3VsdDogPC9oMT48YnIvPic7DQoJCQkJZWNobyAkcmVzdWx0Ow0KCQkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQkJfQ0KCQkJDQoJCQkNCgkJCWlmKCRyZXN1bHQpDQoJCQl7DQoJCQkJIyByZXBsYWNlIHNyYyBvZiBpbWcgdGFnDQoJCQkJJHBhdHRlcm4gICAgID0gJ0AoPGltZ1tePl0qc3JjPVtcJyJdKVteXCdeIl0rKFtcJyJdW14+XSo+KUBpJzsNCgkJCQkkcmVwbGFjZW1lbnQgPSAnJDEnIC4gJHRodW1iX3VybCAuICckMic7DQoJCQkJJGltZ190YWcgICAgID0gcHJlZ19yZXBsYWNlKCRwYXR0ZXJuLCAkcmVwbGFjZW1lbnQsICRpbWdbJ3RhZyddKTsNCgkJCQkNCgkJCQkjIHJlcGxhY2UgaW1nIHRhZ3Mgb2YgbGlnaHRib3ggbGlua3MgKGlmIGFueSkNCgkJCQkkcGF0dGVybjEgICAgID0gJ0A8YVtePl0qY2xhc3M9ImF1dG9saWdodGJveCI/W14+XSo+W1xuXHNcdF0qJy4kaW1nWyd0YWcnXS4nW1xuXHNcdF0qPC9hPkBpJzsNCgkJCQkkcmVwbGFjZW1lbnQxID0gJzxhIHRhcmdldD0iX2JsYW5rIiAnIC4gJHRpdGxlIC4gJGF0dHJpYnMgLiAnIGhyZWY9IicgLiAkaW1nWydzcmMnXSAuICciPicgLiAkaW1nX3RhZyAuICc8L2E+JzsNCgkJCQkNCgkJCQkjIG90aGVyIGxpbmtzIHdpdGggc2NhbGVkIGltYWdlcw0KCQkJCSRwYXR0ZXJuMiAgICAgPSAnQCg8YVtePl0qPi4qKScuJGltZ1sndGFnJ10uJyguKjwvYT4pQGknOw0KCQkJCSRyZXBsYWNlbWVudDIgPSAnJDEnIC4gJGltZ190YWcgLiAnJDInOw0KCQkJCQ0KCQkJCWlmKHByZWdfbWF0Y2goJHBhdHRlcm4xLCAkdHh0KSkNCgkJCQl7DQoJCQkJCSR0eHQgPSBwcmVnX3JlcGxhY2UoJHBhdHRlcm4xLCAkcmVwbGFjZW1lbnQxLCAkdHh0KTsNCgkJCQkJDQoJCQkJCWlmKCRkZWJ1ZykNCgkJCQkJew0KCQkJCQkJZWNobyAnPHByZT48aDE+Y29udGVudCBhZnRlciBsaWdodGJveCBsaW5rIHJlcGxhY2VtZW50OiA8L2gxPjxici8+JzsNCgkJCQkJCWVjaG8gaHRtbGVudGl0aWVzKCR0eHQpOw0KCQkJCQkJZWNobyAnPC9wcmU+PGJyLz48YnIvPic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSBpZihwcmVnX21hdGNoKCRwYXR0ZXJuMiwgJHR4dCkpDQoJCQkJew0KCQkJCQkkdHh0ID0gcHJlZ19yZXBsYWNlKCRwYXR0ZXJuMiwgJHJlcGxhY2VtZW50MiwgJHR4dCk7DQoJCQkJCQ0KCQkJCQlpZigkZGVidWcpDQoJCQkJCXsNCgkJCQkJCWVjaG8gJzxwcmU+PGgxPmNvbnRlbnQgYWZ0ZXIgb3RoZXIgbGluayByZXBsYWNlbWVudDogPC9oMT48YnIvPic7DQoJCQkJCQllY2hvIGh0bWxlbnRpdGllcygkdHh0KTsNCgkJCQkJCWVjaG8gJzwvcHJlPjxici8+PGJyLz4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSMgcmVwbGFjZSBzaW5nbGUgaW1nIHRhZ3MNCgkJCQkJJHBhdHRlcm4xID0gJ0AnLiRpbWdbJ3RhZyddLidAaSc7DQoJCQkJCSR0eHQgICAgID0gcHJlZ19yZXBsYWNlKCRwYXR0ZXJuMSwgJHJlcGxhY2VtZW50MSwgJHR4dCk7DQoJCQkJCQ0KCQkJCQlpZigkZGVidWcpDQoJCQkJCXsNCgkJCQkJCWVjaG8gJzxwcmU+PGgxPmNvbnRlbnQgYWZ0ZXIgaW1nIHJlcGxhY2VtZW50OiA8L2gxPjxici8+JzsNCgkJCQkJCWVjaG8gaHRtbGVudGl0aWVzKCR0eHQpOw0KCQkJCQkJZWNobyAnPC9wcmU+PGJyLz48YnIvPic7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQllbHNlIGlmKCRyZWxhdGl2ZV9wcmVmaXggPT0gJycgJiYgc2VsZjo6JF9pbWdfdXJsX3R5cGUgPT0gJ2Fic29sdXRlJyAmJiAkY29uZmlnWyd1cGxvYWRzX3VybCddICE9ICRjb25maWdbJ3Jvb3RfdXJsJ10pDQoJCQl7DQoJCQkJJHVybCA9ICRjb25maWdbJ3VwbG9hZHNfdXJsJ107DQoJCQkJDQoJCQkJaWYgKHN0cnBvcygkY29uZmlnWyd1cGxvYWRzX3VybCddLCRjb25maWdbJ3Jvb3RfdXJsJ10pICE9PSBGQUxTRQkpDQoJCQkJCSR1cmwgPSAkY29uZmlnWydyb290X3VybCddOw0KCQkJCWVsc2Ugew0KCQkJCQl3aGlsZShkaXJuYW1lKCR1cmwpICE9ICdodHRwOicpCXsNCgkJCQkJCSR1cmwgPSBkaXJuYW1lKCR1cmwpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCQkNCgkJCQkjIHJlcGxhY2Ugc3JjIG9mIGltZyB0YWcgdG8gZm9yY2UgdXNhZ2Ugb2YgdXBsb2FkcyB1cmwNCgkJCQkkaW1nX3VybCAgICAgPSAkdXJsIC4gJy8nIC4gJGRpciAuICcvJyAuICRmaWxlX25hbWU7DQoJCQkJJHBhdHRlcm4gICAgID0gJ0AoPGltZ1tePl0qc3JjPVtcJyJdKVteXCdeIl0rKFtcJyJdW14+XSo+KUBpJzsNCgkJCQkkcmVwbGFjZW1lbnQgPSAnJDEnIC4gJGltZ191cmwgLiAnJDInOw0KCQkJCSRpbWdfdGFnICAgICA9IHByZWdfcmVwbGFjZSgkcGF0dGVybiwgJHJlcGxhY2VtZW50LCAkaW1nWyd0YWcnXSk7DQoJCQkJJHR4dCAgICAgICAgID0gcHJlZ19yZXBsYWNlKCdAJyAuICRpbWdbJ3RhZyddIC4gJ0BpJywgJGltZ190YWcsICR0eHQpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkdHh0Ow0KCX0NCgkNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZmluZF9pbWdzKCR0eHQpDQoJew0KCQlpZighcHJlZ19tYXRjaF9hbGwoIi88aW1nW14+XSo+L2kiLCAkdHh0LCAkaW1nX21hdGNoZXMsIFBSRUdfUEFUVEVSTl9PUkRFUikpDQoJCQlyZXR1cm4gYXJyYXkoKTsNCgkJDQoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsJDQoJCQ0KCQkkaW1ncyAgID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkaW1nX21hdGNoZXNbMF0gYXMgJGltZ190YWcpDQoJCXsNCgkJCSRpbWdfdGFnID0gdXRmOF9lbmNvZGUoJGltZ190YWcpOw0KCQkJDQoJCQkkZG9jID0gbmV3IERPTURvY3VtZW50KCk7DQoJCSAgICAkZG9jLT5sb2FkSFRNTCgkaW1nX3RhZyk7DQoJCSAgICAkaW1hZ2VUYWdzID0gJGRvYy0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpOw0KCQkgICANCgkJICAgICAgZm9yZWFjaCgkaW1hZ2VUYWdzIGFzICR0YWcpIHsNCgkJICAgICAgICAkaW1nX3NyYyA9ICR0YWctPmdldEF0dHJpYnV0ZSgnc3JjJyk7DQoJCSAgICAgICAgJGltZ193aWR0aCA9ICR0YWctPmdldEF0dHJpYnV0ZSgnd2lkdGgnKTsNCgkJICAgICAgICAkaW1nX2hlaWdodCA9ICR0YWctPmdldEF0dHJpYnV0ZSgnaGVpZ2h0Jyk7DQoJCSAgICAgICAgJGltZ190aXRsZSA9ICR0YWctPmdldEF0dHJpYnV0ZSgndGl0bGUnKTsNCgkJICAgICAgICAkaW1nX2FsdCA9ICR0YWctPmdldEF0dHJpYnV0ZSgnYWx0Jyk7DQoJCSAgICB9DQoJCQkNCgkJCWlmKGVtcHR5KCRpbWdfc3JjKSkJY29udGludWU7DQoJCQkJDQoJCQkNCgkJCSRzcmMgPSB0cmltKA0KCQkJCXN0cl9yZXBsYWNlKA0KCQkJCQlhcnJheSgNCgkJCQkJCSRjb25maWdbJ3Jvb3RfdXJsJ10sDQoJCQkJCQkkY29uZmlnWyd1cGxvYWRzX3VybCddLA0KCQkJCQkJJGNvbmZpZ1snaW1hZ2VfdXBsb2Fkc191cmwnXQ0KCQkJCQkpLA0KCQkJCQknJywNCgkJCQkJJGltZ19zcmMNCgkJCQkpLA0KCQkJCScvJw0KCQkJKTsNCgkJCQ0KCQkJaWYoc3RhcnRzd2l0aCgkc3JjLCAnaHR0cCcpCXx8IHN0YXJ0c3dpdGgoJHNyYywgJ3d3dy4nKSkgCWNvbnRpbnVlOyAjIHNraXAgZXh0ZXJuYWwgaW1hZ2VzDQoJCQlpZihlbXB0eSgkaW1nX3dpZHRoKSAmJiBlbXB0eSgkaW1nX2hlaWdodCkpCQkJCQljb250aW51ZTsgIyBza2lwIGltYWdlIHdpdGhvdXQgc2l6ZSBkYXRhDQoJCQkNCgkJCSRpbWdzW10gPSBhcnJheSgNCgkJCQknc3JjJyAgICAgID0+ICRpbWdfc3JjLA0KCQkJCSd3aWR0aCcgICAgPT4gIWVtcHR5KCRpbWdfd2lkdGgpICA/ICRpbWdfd2lkdGggIDogZmFsc2UsDQoJCQkJJ2hlaWdodCcgICA9PiAhZW1wdHkoJGltZ19oZWlnaHQpID8gJGltZ19oZWlnaHQgOiBmYWxzZSwNCgkJCQkndGl0bGUnICAgID0+ICFlbXB0eSgkaW1nX3RpdGxlKSAgPyAkaW1nX3RpdGxlICA6IGZhbHNlLA0KCQkJCSdhbHQnICAgICAgPT4gIWVtcHR5KCRpbWdfYWx0KSAgICA/ICRpbWdfYWx0ICAgIDogZmFsc2UsDQoJCQkJJ3RhZycgICAgICA9PiAkaW1nX3RhZw0KCQkJKTsNCgkJfQ0KCQkNCgkJcmV0dXJuICRpbWdzOw0KCX0NCgkNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfY3JlYXRlX3RodW1iKCRzcmMsICRvdXQsICRuZXdfd2lkdGgsICRuZXdfaGVpZ2h0LCAka2VlcF9hc3BlY3RyYXRpbyA9IGZhbHNlLCAkYWxsb3dfdXBzY2FsaW5nID0gZmFsc2UsICRxdWFsaXR5ID0gNzUpDQoJew0KCQkkY29uZmlnICAgICA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCQkkdGh1bWJfcGF0aCA9IGRpcm5hbWUoJG91dCk7DQoJCQ0KCQkkc3JjID0gdXJsZGVjb2RlKCRzcmMpOw0KCQkkb3V0ID0gdXJsZGVjb2RlKCRvdXQpOw0KCQkNCgkJaWYoJG5ld193aWR0aCA8PSAwIHx8ICRuZXdfaGVpZ2h0IDw9IDApDQoJCQkka2VlcF9hc3BlY3RyYXRpbyA9IHRydWU7DQoJCQ0KCQkjIHRodW1iIGFscmVhZHkgZXhpc3RzPw0KCQkjIC0+IGNoZWNrIGlmIGl0IG5lZWRzIHVwZGF0ZQ0KCQlpZihpc19maWxlKCRvdXQpKQ0KCQl7DQoJCQkkaW1nX2RhdGEgPSBnZXRpbWFnZXNpemUoJG91dCk7DQoJCQlpZihmaWxlY3RpbWUoJHNyYykgPiBmaWxlY3RpbWUoJG91dCkNCgkJCQl8fCAoJGltZ19kYXRhWzBdICE9ICRuZXdfd2lkdGggfHwgJGltZ19kYXRhWzFdICE9ICRuZXdfaGVpZ2h0KSkNCgkJCXsNCgkJCQkjIG9yZ2luYWwgaGFzIGNoYW5nZWQgb3Igd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkDQoJCQkJIyAtPiBkZWxldGUgdGh1bWJuYWlsDQoJCQkJQHVubGluaygkb3V0KTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCQkNCgkJJGltZ19kYXRhID0gQGdldGltYWdlc2l6ZSgkc3JjKTsNCgkJaWYgKCEkaW1nX2RhdGEgfHwgKCRpbWdfZGF0YVswXSA8PSAkbmV3X3dpZHRoICYmICRpbWdfZGF0YVsxXSA8PSAkbmV3X2hlaWdodCkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJIyBuZWVkcyB0byByZXNpemU/DQoJCWlmICghJGltZ19kYXRhIHx8ICgkaW1nX2RhdGFbMF0gPT0gJG5ld193aWR0aCAmJiAkaW1nX2RhdGFbMV0gPT0gJG5ld19oZWlnaHQpKQ0KCQl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJDQoJCWlmKCFpc19kaXIoJHRodW1iX3BhdGgpKQ0KCQl7DQoJCQlAbWtkaXIoJHRodW1iX3BhdGgsIDA3NzcsIHRydWUpOw0KCQl9DQoJCQ0KCQkkb3JpZ19pbWFnZSA9ICcnOw0KCQlzd2l0Y2goJGltZ19kYXRhWydtaW1lJ10pDQoJCXsNCgkJCWNhc2UgJ2ltYWdlL2pwZWcnOg0KCQkJCSRvcmlnX2ltYWdlID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJHNyYyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdpbWFnZS9naWYnIDoNCgkJCQkkb3JpZ19pbWFnZSA9IEBpbWFnZWNyZWF0ZWZyb21naWYoJHNyYyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdpbWFnZS9wbmcnIDoNCgkJCQkkb3JpZ19pbWFnZSA9IEBpbWFnZWNyZWF0ZWZyb21wbmcoJHNyYyk7DQoJCQkJYnJlYWs7DQoJCQlkZWZhdWx0Og0KCQkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJJG9yaWdfd2lkdGggID0gQGltYWdlc3goJG9yaWdfaW1hZ2UpOw0KCQkkb3JpZ19oZWlnaHQgPSBAaW1hZ2VzeSgkb3JpZ19pbWFnZSk7DQoJCSRhc3BlY3RyYXRpbyA9ICRvcmlnX3dpZHRoIC8gJG9yaWdfaGVpZ2h0Ow0KCQkNCgkJJG5ld193aWR0aCAgPSBmbG9vcigkbmV3X3dpZHRoKTsNCgkJJG5ld19oZWlnaHQgPSBmbG9vcigkbmV3X2hlaWdodCk7DQoJCQ0KCQlpZigkbmV3X3dpZHRoIDw9IDAgJiYgJG5ld19oZWlnaHQgPiAwKSANCgkJeyAvLyBmb3JjZSBoZWlnaHQNCgkJCSRuZXdfd2lkdGggPSAkb3JpZ193aWR0aDsNCgkJCWlmKCRuZXdfaGVpZ2h0ID4gJG9yaWdfaGVpZ2h0ICYmICEkYWxsb3dfdXBzY2FsaW5nKQ0KCQkJew0KCQkJCSRuZXdfaGVpZ2h0ID0gJG9yaWdfaGVpZ2h0Ow0KCQkJfQ0KCQkJaWYoJGtlZXBfYXNwZWN0cmF0aW8pDQoJCQl7DQoJCQkJJG5ld193aWR0aCA9IGZsb29yKCRuZXdfaGVpZ2h0ICogJGFzcGVjdHJhdGlvKTsNCgkJCX0NCgkJfQ0KCQllbHNlIGlmKCRuZXdfaGVpZ2h0IDw9IDAgJiYgJG5ld193aWR0aCA+IDApIA0KCQl7IC8vIGZvcmNlIHdpZHRoDQoJCQkkbmV3X2hlaWdodCA9ICRvcmlnX2hlaWdodDsNCgkJCWlmKCRuZXdfd2lkdGggPiAkb3JpZ193aWR0aCAmJiAhJGFsbG93X3Vwc2NhbGluZykNCgkJCXsNCgkJCQkkbmV3X3dpZHRoID0gJG9yaWdfd2lkdGg7DQoJCQl9DQoJCQlpZigka2VlcF9hc3BlY3RyYXRpbykNCgkJCXsNCgkJCQkkbmV3X2hlaWdodCA9IGZsb29yKCRuZXdfd2lkdGggLyAkYXNwZWN0cmF0aW8pOw0KCQkJfQ0KCQl9DQoJCWVsc2UgaWYoJG5ld19oZWlnaHQgPiAwICYmICRuZXdfd2lkdGggPiAwKSANCgkJeyAvLyBib3RoDQoJCQlpZigkbmV3X3dpZHRoID4gJG9yaWdfd2lkdGggJiYgISRhbGxvd191cHNjYWxpbmcpDQoJCQl7DQoJCQkJJG5ld193aWR0aCA9ICRvcmlnX3dpZHRoOw0KCQkJfQ0KCQkJaWYoJG5ld19oZWlnaHQgPiAkb3JpZ19oZWlnaHQgJiYgISRhbGxvd191cHNjYWxpbmcpDQoJCQl7DQoJCQkJJG5ld19oZWlnaHQgPSAkb3JpZ19oZWlnaHQ7DQoJCQl9DQoJCQkkbmV3X2FzcGVjdHJhdGlvID0gJG5ld193aWR0aCAvICRuZXdfaGVpZ2h0Ow0KCQkJaWYoJGtlZXBfYXNwZWN0cmF0aW8pDQoJCQl7DQoJCQkJaWYoJGFzcGVjdHJhdGlvID4gMSAmJiAkbmV3X2FzcGVjdHJhdGlvIDwgMSkNCgkJCQl7IC8vIGxhbmRzY2FwZSB0byBwb3J0cmFpdA0KCQkJCQkkX3RtcCA9IGZsb29yKCRuZXdfd2lkdGggLyAkYXNwZWN0cmF0aW8pOw0KCQkJCQlpZigkX3RtcCA+IDAgJiYgJF90bXAgPD0gJG5ld19oZWlnaHQpDQoJCQkJCXsNCgkJCQkJCSRuZXdfaGVpZ2h0ID0gJF90bXA7DQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSBpZigkYXNwZWN0cmF0aW8gPCAxICYmICRuZXdfYXNwZWN0cmF0aW8gPiAxKQ0KCQkJCXsgLy8gcG9ydHJhaXQgdG8gbGFuZHNjYXBlDQoJCQkJCSRfdG1wID0gZmxvb3IoJG5ld19oZWlnaHQgKiAkYXNwZWN0cmF0aW8pOw0KCQkJCQlpZigkX3RtcCA+IDAgJiYgJF90bXAgPD0gJG5ld193aWR0aCkNCgkJCQkJew0KCQkJCQkJJG5ld193aWR0aCA9ICRfdG1wOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCWlmKCRuZXdfYXNwZWN0cmF0aW8gPCAkYXNwZWN0cmF0aW8pDQoJCQkJCXsNCgkJCQkJCSRfdG1wID0gZmxvb3IoJG5ld193aWR0aCAvICRhc3BlY3RyYXRpbyk7DQoJCQkJCQlpZigkX3RtcCA+IDAgJiYgJF90bXAgPD0gJG5ld19oZWlnaHQpDQoJCQkJCQl7DQoJCQkJCQkJJG5ld19oZWlnaHQgPSAkX3RtcDsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQllbHNlIGlmKCRuZXdfYXNwZWN0cmF0aW8gPiAkYXNwZWN0cmF0aW8pDQoJCQkJCXsNCgkJCQkJCSRfdG1wID0gZmxvb3IoJG5ld19oZWlnaHQgKiAkYXNwZWN0cmF0aW8pOw0KCQkJCQkJaWYoJF90bXAgPiAwICYmICRfdG1wIDw9ICRuZXdfd2lkdGgpDQoJCQkJCQl7DQoJCQkJCQkJJG5ld193aWR0aCA9ICRfdG1wOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJG5ld19oZWlnaHQgPSAkb3JpZ19oZWlnaHQ7DQoJCQkkbmV3X3dpZHRoICA9ICRvcmlnX3dpZHRoOw0KCQl9DQoJCQ0KCQlpZigkbmV3X3dpZHRoIDwgMSkNCgkJew0KCQkJJG5ld193aWR0aCA9IDE7DQoJCX0NCgkJaWYoJG5ld19oZWlnaHQgPCAxKQ0KCQl7DQoJCQkkbmV3X2hlaWdodCA9IDE7DQoJCX0NCgkJDQoJCSRuZXdfaW1hZ2UgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoZmxvb3IoJG5ld193aWR0aCksIGZsb29yKCRuZXdfaGVpZ2h0KSk7DQoJCQ0KCQkvLyBoYW5kbGUgdHJhbnNwYXJlbmN5IChhZGFwdGVkIGZyb20gc3VwZXJzaXplciBwbHVnaW4pDQoJCWlmKCRpbWdfZGF0YVsnbWltZSddID09ICdpbWFnZS9naWYnKQ0KCQl7DQoJCQlpbWFnZXRydWVjb2xvcnRvcGFsZXR0ZSgkbmV3X2ltYWdlLCB0cnVlLCAyNTYpOw0KCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1hZ2UsIGZhbHNlKTsNCgkJCWltYWdlc2F2ZWFscGhhKCRuZXdfaW1hZ2UsdHJ1ZSk7DQoJCQkkdHJhbnNwYXJlbnQgPSBpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkbmV3X2ltYWdlLCAyNTUsIDI1NSwgMjU1LCAxMjcpOw0KCQkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJG5ld19pbWFnZSwgMCwgMCwgJG5ld193aWR0aCwgJG5ld19oZWlnaHQsICR0cmFuc3BhcmVudCk7DQoJCQlpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJG5ld19pbWFnZSwgJHRyYW5zcGFyZW50KTsNCgkJfQ0KCQllbHNlIGlmICgkaW1nX2RhdGFbJ21pbWUnXSA9PSAnaW1hZ2UvcG5nJykNCgkJew0KCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1hZ2UsIGltYWdlY29sb3JhbGxvY2F0ZSgkbmV3X2ltYWdlLCAwLCAwLCAwKSk7ICAgDQoJCQlpbWFnZWFscGhhYmxlbmRpbmcoJG5ld19pbWFnZSwgZmFsc2UpOw0KCQkJJGNvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJG5ld19pbWFnZSwgMCwgMCwgMCwgMTI3KTsNCgkJCWltYWdlZmlsbCgkbmV3X2ltYWdlLCAwLCAwLCAkY29sb3IpOw0KCQkJaW1hZ2VzYXZlYWxwaGEoJG5ld19pbWFnZSwgdHJ1ZSk7DQoJCX0NCgkJQGltYWdlY29weXJlc2FtcGxlZCgkbmV3X2ltYWdlLCAkb3JpZ19pbWFnZSwgMCwgMCwgMCwgMCwgJG5ld193aWR0aCwgJG5ld19oZWlnaHQsICRvcmlnX3dpZHRoLCAkb3JpZ19oZWlnaHQpOw0KCQlzd2l0Y2goJGltZ19kYXRhWydtaW1lJ10pDQoJCXsNCgkJCWNhc2UgJ2ltYWdlL2pwZWcnOiByZXR1cm4gQGltYWdlanBlZygkbmV3X2ltYWdlLCAkb3V0LCAkcXVhbGl0eSk7DQoJCQljYXNlICdpbWFnZS9naWYnIDogcmV0dXJuIEBpbWFnZWdpZigkbmV3X2ltYWdlLCAkb3V0KTsNCgkJCWNhc2UgJ2ltYWdlL3BuZycgOiByZXR1cm4gQGltYWdlcG5nKCRuZXdfaW1hZ2UsICRvdXQpOw0KCQkJZGVmYXVsdCAgICAgICAgICA6IHJldHVybiBmYWxzZTsNCgkJfQ0KCX0NCgkNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfYmFzZTY0dXJsX2VuY29kZSgkZGF0YSkgew0KCQlyZXR1cm4gcnRyaW0oc3RydHIoYmFzZTY0X2VuY29kZSgkZGF0YSksICcrLycsICctXycpLCAnPScpOw0KCX0NCgkNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfYmFzZTY0dXJsX2RlY29kZSgkZGF0YSkgew0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZShzdHJfcGFkKHN0cnRyKCRkYXRhLCAnLV8nLCAnKy8nKSwgc3RybGVuKCRkYXRhKSAlIDQsICc9JywgU1RSX1BBRF9SSUdIVCkpOw0KCX0gDQp9DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.btMinify.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiAJCVRvb2xCb3gNCiMgQ2xhc3M6ICAJCXRiVXRpbHMNCiMgQXV0aG9yOiAJCWJsYXR0ZXJ0ZWNoIGluZm9ybWF0aWsgLSBMdWthcyBCbGF0dGVyIC0gd3d3LmJsYXR0ZXJ0ZWNoLmNoDQojIEVtYWlsOgkJbHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaA0KIyBDb3B5cmlnaHQ6IAlibGF0dGVydGVjaCBpbmZvcm1hdGlrIC0gTHVrYXMgQmxhdHRlciAtIHd3dy5ibGF0dGVydGVjaC5jaA0KIyBMaWNlbmNlOgkJR1BMIDINCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwOCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBidE1pbmlmeQ0Kew0KCQkNCglwcml2YXRlIHN0YXRpYwkJDQoJCSRzZXR0aW5ncyA9IGFycmF5KA0KCQknZ3ppcCcgPT4gdHJ1ZSwNCgkJJ2NvbXByZXNzaW9uTGV2ZWwnID0+IDksDQoJCSdnemlwRXhjZXB0aW9ucycgPT4gYXJyYXkoJ2dpZicsJ2pwZWcnLCdqcGcnLCdwbmcnLCdzd2YnLCdpY28nKSwNCgkJJ2VtYmVkJyA9PiB0cnVlLA0KCQknZW1iZWRNYXhTaXplJyA9PiA1MTIwLA0KCQknZW1iZWRFeGNlcHRpb25zJyA9PiBhcnJheSgnaHRjJyksDQoJKTsNCgkNCgkvL21pbWUgdHlwZXMNCglwcm90ZWN0ZWQgc3RhdGljICRtaW1lVHlwZXMgPSBhcnJheSgNCgkJImpzIgk9PiAidGV4dC9qYXZhc2NyaXB0IiwNCgkJImNzcyIJPT4gInRleHQvY3NzIiwNCgkJImh0bSIJPT4gInRleHQvaHRtbCIsDQoJCSJodG1sIgk9PiAidGV4dC9odG1sIiwNCgkJInhtbCIJPT4gInRleHQveG1sIiwNCgkJInR4dCIJPT4gInRleHQvcGxhaW4iLA0KCQkianBnIgk9PiAiaW1hZ2UvanBlZyIsDQoJCSJqcGVnIgk9PiAiaW1hZ2UvanBlZyIsDQoJCSJwbmciCT0+ICJpbWFnZS9wbmciLA0KCQkiZ2lmIgk9PiAiaW1hZ2UvZ2lmIiwNCgkJInN3ZiIJPT4gImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiwNCgkJImljbyIJPT4gImltYWdlL3gtaWNvbiIsDQoJKTsJDQoJDQoJLyoqDQoJICogDQoJICogRXh0cmFoaWVydCBKUyB1bmQgQ1NTIGF1cyBlaW5lbSBIVE1MIFN0cmluZyB1bmQgbWluaW1pZXJ0IGRlbiBJbmhhbHQgdW5kIGdpYnQgaW4genVzYW1tZW5nZWZhc3N0IHp1csO8Y2sNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSBzdHJpbmcgJHNyYw0KCSAqIEByZXR1cm4gc3RkQ2xhc3MNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1pbmlmeUZyb21IdG1sKCRzcmMpDQoJew0KCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoJCSRjc3MgPSBhcnJheSgpOw0KCQkkanMgPSBhcnJheSgpOw0KCQkkanNzcmMgPSBhcnJheSgpOw0KCQkNCgkJaWYgKCEkc3JjKQlyZXR1cm4gYnRUb29sczo6YXJyYXlUb09iamVjdChhcnJheSgnY3NzJz0+JycsJ2pzJz0+JycsJ2pzc3JjJz0+JycpKTsNCgkJDQoJCSRkb2MgPSBuZXcgRE9NRG9jdW1lbnQoKTsNCgkgICAgJGRvYy0+bG9hZEhUTUwoJHNyYyk7DQoJICAgICRjc3NUYWdzID0gJGRvYy0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKTsNCgkgICAgJGpzVGFncyA9ICRkb2MtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsNCgkgICAgDQoJICAgIGZvcmVhY2goJGNzc1RhZ3MgYXMgJHRhZykgew0KCSAgICAJJGZpbGUgPSBzdHJfcmVwbGFjZSgiLyIsIERJUkVDVE9SWV9TRVBBUkFUT1Isc3RyX3JlcGxhY2UoJGNvbmZpZ1sncm9vdF91cmwnXSwgJGNvbmZpZ1sncm9vdF9wYXRoJ10sICR0YWctPmdldEF0dHJpYnV0ZSgnaHJlZicpKSk7DQoJICAgIAlpZiAoIWlzX2ZpbGUoJGZpbGUpKSBjb250aW51ZTsNCgkgICAgCSRsYXN0TW9kaWZpZWQgPSBAZmlsZW10aW1lKCRmaWxlKTsNCgkgICAgCWlmKCRsYXN0TW9kaWZpZWQgPT0gTlVMTCkgJGxhc3RNb2RpZmllZCA9IGZpbGVtdGltZSh1dGY4X2RlY29kZSgkZmlsZSkpOw0KCQkJJGNzc1skbGFzdE1vZGlmaWVkLm1kNSgkZmlsZSldID0gJGZpbGU7DQoJICAgIH0NCg0KCQlmb3JlYWNoKCRkb2MtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKSBhcyAkdGFnKSB7DQoJCQkkZmlsZSA9IHN0cl9yZXBsYWNlKCIvIiwgRElSRUNUT1JZX1NFUEFSQVRPUixzdHJfcmVwbGFjZSgkY29uZmlnWydyb290X3VybCddLCAkY29uZmlnWydyb290X3BhdGgnXSwgJHRhZy0+Z2V0QXR0cmlidXRlKCdzcmMnKSkpOw0KCQkJJHZhbHVlID0gJHRhZy0+bm9kZVZhbHVlOw0KCQkJaWYgKGlzX2ZpbGUoJGZpbGUpKSB7DQoJCQkJJGxhc3RNb2RpZmllZCA9IEBmaWxlbXRpbWUoJGZpbGUpOw0KCQkJCWlmKCRsYXN0TW9kaWZpZWQgPT0gTlVMTCkgJGxhc3RNb2RpZmllZCA9IGZpbGVtdGltZSh1dGY4X2RlY29kZSgkZmlsZSkpOw0KCQkJCSRqc1skbGFzdE1vZGlmaWVkLm1kNSgkZmlsZSldID0gJGZpbGU7DQoJCQl9IA0KCQkJaWYgKCR2YWx1ZSAhPSAnJykgJGpzc3JjW10gPSAkdmFsdWU7DQoJCX0NCgkJDQoJCSRoYXNoSlMgPSBtZDUoaW1wbG9kZSgifCIsIGFycmF5X2tleXMoJGpzKSkpOw0KCQkkaGFzaEpTU3JjID0gbWQ1KGltcGxvZGUoIiwiLCRqc3NyYykpOw0KCQkkaGFzaENTUyA9IG1kNShpbXBsb2RlKCJ8IiwgYXJyYXlfa2V5cygkY3NzKSkpOw0KCQkNCgkJJGNhY2hlcGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RtcCcuRElSRUNUT1JZX1NFUEFSQVRPUi4nY2FjaGUnLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQoJCQ0KCQkkY2FjaGVjc3MgPSdUb29sQm94X2NvbWJpbmVkXycuJGhhc2hDU1MuJy5jc3MnOyANCgkJJGNhY2hlanMgPSAnVG9vbEJveF9jb21iaW5lZF8nLiRoYXNoSlMuJy5qcyc7DQoNCgkJJGZpbGVzID0gYXJyYXkoKTsNCgkJDQoJCWlmICghaXNfZmlsZSgkY2FjaGVwYXRoLiRjYWNoZWNzcykpCWZpbGVfcHV0X2NvbnRlbnRzKCRjYWNoZXBhdGguJGNhY2hlY3NzLCBzZWxmOjptaW5pZnlDc3Moc2VsZjo6Z2V0RmlsZXNDb250ZW50KCRjc3MpKSk7DQoJCWlmICghaXNfZmlsZSgkY2FjaGVwYXRoLiRjYWNoZWpzKSkgew0KCQkJJGpzY29udGVudCA9IHNlbGY6OmdldEZpbGVzQ29udGVudCgkanMpOw0KCQkJZmlsZV9wdXRfY29udGVudHMoJGNhY2hlcGF0aC4kY2FjaGVqcywgc2VsZjo6bWluaWZ5SnMoJGpzY29udGVudCkpOw0KCQl9CQ0KCQkNCgkgICAgJGZpbGVzWydjc3MnXSA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy90bXAvY2FjaGUvJy4kY2FjaGVjc3MuJyIgbWVkaWE9InNjcmVlbiIgLz4nLiJcbiI7DQogCSAgICAkZmlsZXNbJ2pzJ10gID0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL3RtcC9jYWNoZS8nLiRjYWNoZWpzLiciPjwvc2NyaXB0PicuIlxuIjsNCiAJICAgIGlmICghZW1wdHkoJGpzc3JjKSkJJGZpbGVzWydqc3NyYyddID0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nLnNlbGY6Om1pbmlmeUpzKGltcGxvZGUoIlxuIiwkanNzcmMpKS4nPC9zY3JpcHQ+Jy4iXG4iOw0KIAkgICAgZWxzZSAkZmlsZXNbJ2pzc3JjJ10gPSAnJzsNCgkgICAgDQoJICAgIHJldHVybiBidFRvb2xzOjphcnJheVRvT2JqZWN0KCRmaWxlcyk7DQoJfQ0KDQoJDQoJLyoqDQoJICogDQoJICogUmV0dXJuIGNvbnRlbnQgb2Ygb25lIG9yIG1vcmUgZmlsZXMNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbCANCgkgKiBAcGFyYW0gbWl4ZWQgJGZpbGVzDQoJICogQHJldHVybiBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldEZpbGVzQ29udGVudCgkZmlsZXMpIHsNCgkJDQoJCSRmaWxlcyA9IGlzX2FycmF5KCRmaWxlcykgPyAkZmlsZXMgOiBleHBsb2RlKCcsJywkZmlsZXMpOw0KCQkkc3RyID0gJyc7DQoJCWZvcmVhY2goJGZpbGVzIGFzICRmaWxlKSB7DQoJCQlpZiAoaXNfZmlsZSgkZmlsZSkpICRzdHIgLj0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpLiJcbiI7DQoJCX0NCgkJDQoJCXJldHVybiAkc3RyOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBFbnRlciBkZXNjcmlwdGlvbiBoZXJlIC4uLg0KCSAqIEBhdXRob3I6IFNtYXJ0T3B0aW1pemVyDQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gJHVybA0KCSAqIEBwYXJhbSAkY291bnQNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGNvbnZlcnRVcmwoJHVybCwgJGNvdW50KQ0KCXsNCgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCQkkZmlsZURpciA9ICIuLi8uLi8iOw0KCQlzdGF0aWMgJGJhc2VVcmwgPSAnJzsNCgkJDQoJCSR1cmwgPSB0cmltKCR1cmwpOw0KCQkNCgkJaWYgKHByZWdfbWF0Y2goJ0BeW14vXSs6QCcsICR1cmwpKSByZXR1cm4gJHVybDsNCgkJDQoJCSRmaWxlVHlwZSA9IHN1YnN0cihzdHJyY2hyKCR1cmwsICcuJyksIDEpOw0KCQlpZiAoaXNzZXQoc2VsZjo6JG1pbWVUeXBlc1skZmlsZVR5cGVdKSkgJG1pbWVUeXBlID0gc2VsZjo6JG1pbWVUeXBlc1skZmlsZVR5cGVdOw0KCQllbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWltZV9jb250ZW50X3R5cGUnKSkgJG1pbWVUeXBlID0gbWltZV9jb250ZW50X3R5cGUoJHVybCk7DQoJCWVsc2UgJG1pbWVUeXBlID0gbnVsbDsNCgkJDQoJCWlmICghc2VsZjo6JHNldHRpbmdzWydlbWJlZCddIHx8DQoJCQkhZmlsZV9leGlzdHMoJGZpbGVEaXIuJHVybCkgfHwNCgkJCShzZWxmOjokc2V0dGluZ3NbJ2VtYmVkTWF4U2l6ZSddID4gMCAmJiBmaWxlc2l6ZSgkZmlsZURpci4kdXJsKSA+IHNlbGY6OiRzZXR0aW5nc1snZW1iZWRNYXhTaXplJ10pIHx8DQoJCQkhJGZpbGVUeXBlIHx8DQoJCQlpbl9hcnJheSgkZmlsZVR5cGUsIHNlbGY6OiRzZXR0aW5nc1snZW1iZWRFeGNlcHRpb25zJ10pIHx8DQoJCQkhJG1pbWVUeXBlIHx8DQoJCQkkY291bnQgPiAxKSB7DQoJCQlpZiAoc3RycG9zKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXS4nPycpID09PSAwIHx8DQoJCQkJc3RycG9zKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCBydHJpbShkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSwgJ1wvJykuJy8/JykgPT09IDApIHsNCgkJCQlpZiAoISRiYXNlVXJsKSByZXR1cm4gJGZpbGVEaXIgLiAkdXJsOw0KCQkJfQ0KCQkJcmV0dXJuICRiYXNlVXJsIC4gJHVybDsNCgkJfQ0KCQkNCgkJJGNvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVEaXIuJHVybCk7DQoJCSANCgkJaWYgKCRmaWxlVHlwZSA9PSAnY3NzJykgew0KCQkJJG9sZEZpbGVEaXIgPSAkZmlsZURpcjsNCgkJCSRmaWxlRGlyID0gcnRyaW0oZGlybmFtZSgkZmlsZURpci4kdXJsKSwgJ1wvJykuJy8nOw0KCQkJJG9sZEJhc2VVcmwgPSAkYmFzZVVybDsNCgkJCSRiYXNlVXJsID0gJ2h0dHAnLihAJF9TRVJWRVJbJ0hUVFBTJ10/J3MnOicnKS4nOi8vJy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10ucnRyaW0oZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSksICdcLycpLicvJy4kZmlsZURpcjsNCgkJCSRjb250ZW50cyA9IHNlbGY6Om1pbmlmeUNzcygkY29udGVudHMpOwkJDQoJCQkkZmlsZURpciA9ICRvbGRGaWxlRGlyOw0KCQkJJGJhc2VVcmwgPSAkb2xkQmFzZVVybDsNCgkJfQ0KCQkNCgkJJGJhc2U2NCAgID0gYmFzZTY0X2VuY29kZSgkY29udGVudHMpOyANCgkJcmV0dXJuICdkYXRhOicgLiAkbWltZVR5cGUgLiAnO2Jhc2U2NCwnIC4gJGJhc2U2NDsNCgl9DQoNCgkvKioNCgkgKiANCgkgKiBNaW5pZnkgQ1NTDQoJICogQGF1dGhvcjogU21hcnRPcHRpbWl6ZXINCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSAkdXJsDQoJICogQHBhcmFtICRjb3VudA0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gbWluaWZ5Q3NzKCRzdHIpIA0KCXsNCgkJJHJlcyA9ICcnOw0KCQkkaT0wOw0KCQkkaW5zaWRlX2Jsb2NrID0gZmFsc2U7DQoJCSRjdXJyZW50X2NoYXIgPSAnJzsNCgkJd2hpbGUgKCRpKzE8c3RybGVuKCRzdHIpKSB7DQoJCQlpZiAoJHN0clskaV09PSciJyB8fCAkc3RyWyRpXT09IiciKSB7Ly9xdW90ZWQgc3RyaW5nIGRldGVjdGVkDQoJCQkJJHJlcyAuPSAkcXVvdGUgPSAkc3RyWyRpKytdOw0KCQkJCSR1cmwgPSAnJzsNCgkJCQl3aGlsZSAoJGk8c3RybGVuKCRzdHIpICYmICRzdHJbJGldIT0kcXVvdGUpIHsNCgkJCQkJaWYgKCRzdHJbJGldID09ICdcXCcpIHsNCgkJCQkJCSR1cmwgLj0gJHN0clskaSsrXTsNCgkJCQkJfQ0KCQkJCQkkdXJsIC49ICRzdHJbJGkrK107DQoJCQkJfQ0KCQkJCWlmIChzdHJ0b2xvd2VyKHN1YnN0cigkcmVzLCAtNSwgNCkpPT0ndXJsKCcgfHwgc3RydG9sb3dlcihzdWJzdHIoJHJlcywgLTksIDgpKSA9PSAnQGltcG9ydCAnKSB7DQoJCQkJCSR1cmwgPSBzZWxmOjpjb252ZXJ0VXJsKCR1cmwsIHN1YnN0cl9jb3VudCgkc3RyLCAkdXJsKSk7DQoJCQkJfQ0KCQkJCSRyZXMgLj0gJHVybDsNCgkJCQkkcmVzIC49ICRzdHJbJGkrK107DQoJCQkJY29udGludWU7DQoJCQl9IGVsc2VpZiAoc3RydG9sb3dlcihzdWJzdHIoJHJlcywgLTQpKT09J3VybCgnKSB7Ly91cmwgZGV0ZWN0ZWQNCgkJCQkkdXJsID0gJyc7DQoJCQkJZG8gew0KCQkJCQlpZiAoJHN0clskaV0gPT0gJ1xcJykgew0KCQkJCQkJJHVybCAuPSAkc3RyWyRpKytdOw0KCQkJCQl9DQoJCQkJCSR1cmwgLj0gJHN0clskaSsrXTsNCgkJCQl9IHdoaWxlICgkaTxzdHJsZW4oJHN0cikgJiYgJHN0clskaV0hPScpJyk7DQoJCQkJJHVybCA9IHNlbGY6OmNvbnZlcnRVcmwoJHVybCwgc3Vic3RyX2NvdW50KCRzdHIsICR1cmwpKTsNCgkJCQkkcmVzIC49ICR1cmw7DQoJCQkJJHJlcyAuPSAkc3RyWyRpKytdOw0KCQkJCWNvbnRpbnVlOw0KCQkJfSBlbHNlaWYgKCRzdHJbJGldLiRzdHJbJGkrMV09PScvKicpIHsvL2NzcyBjb21tZW50IGRldGVjdGVkDQoJCQkJJGkrPTM7DQoJCQkJd2hpbGUgKCRpPHN0cmxlbigkc3RyKSAmJiAkc3RyWyRpLTFdLiRzdHJbJGldIT0nKi8nKSAkaSsrOw0KCQkJCWlmICgkY3VycmVudF9jaGFyID09ICJcbiIpICRzdHJbJGldID0gIlxuIjsNCgkJCQllbHNlICRzdHJbJGldID0gJyAnOw0KCQkJfQ0KCQkJDQoJCQlpZiAoc3RybGVuKCRzdHIpIDw9ICRpKzEpIGJyZWFrOw0KCQkJDQoJCQkkY3VycmVudF9jaGFyID0gJHN0clskaV07DQoJCQkNCgkJCWlmICgkaW5zaWRlX2Jsb2NrICYmICRjdXJyZW50X2NoYXIgPT0gJ30nKSB7DQoJCQkJJGluc2lkZV9ibG9jayA9IGZhbHNlOw0KCQkJfQ0KCQkJDQoJCQlpZiAoJGN1cnJlbnRfY2hhciA9PSAneycpIHsNCgkJCQkkaW5zaWRlX2Jsb2NrID0gdHJ1ZTsNCgkJCX0NCgkJCQ0KCQkJaWYgKHByZWdfbWF0Y2goJy9bXG5cclx0IF0vJywgJGN1cnJlbnRfY2hhcikpICRjdXJyZW50X2NoYXIgPSAiICI7DQoJCQkNCgkJCWlmICgkY3VycmVudF9jaGFyID09ICIgIikgew0KCQkJCSRwYXR0ZXJuID0gJGluc2lkZV9ibG9jaz8nL15bXnt9Oyw6XG5cclx0IF17Mn0kLyc6Jy9eW157fTssPitcblxyXHQgXXsyfSQvJzsNCgkJCQlpZiAoc3RybGVuKCRyZXMpICYmCXByZWdfbWF0Y2goJHBhdHRlcm4sICRyZXNbc3RybGVuKCRyZXMpLTFdLiRzdHJbJGkrMV0pKQ0KCQkJCQkkcmVzIC49ICRjdXJyZW50X2NoYXI7DQoJCQl9IGVsc2UgJHJlcyAuPSAkY3VycmVudF9jaGFyOw0KCQkJDQoJCQkkaSsrOw0KCQl9DQoJCWlmICgkaTxzdHJsZW4oJHN0cikgJiYgcHJlZ19tYXRjaCgnL1teXG5cclx0IF0vJywgJHN0clskaV0pKSAkcmVzIC49ICRzdHJbJGldOw0KCQlyZXR1cm4gJHJlczsNCgl9DQogICAgDQoJLyoqDQoJICogDQoJICogTWluaWZ5IEpTDQoJICogQGF1dGhvcjogU21hcnRPcHRpbWl6ZXINCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSAkdXJsDQoJICogQHBhcmFtICRjb3VudA0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gbWluaWZ5SnMoJHN0cikgew0KCQkNCgkJJHJlcyA9ICcnOw0KCQkkbWF5YmVfcmVnZXggPSB0cnVlOw0KCQkkaT0wOw0KCQkkY3VycmVudF9jaGFyID0gJyc7DQoJCXdoaWxlICgkaSsxPHN0cmxlbigkc3RyKSkgew0KCQkJaWYgKCRtYXliZV9yZWdleCAmJiAkc3RyWyRpXT09Jy8nICYmICRzdHJbJGkrMV0hPScvJyAmJiAkc3RyWyRpKzFdIT0nKicgJiYgQCRzdHJbJGktMV0hPScqJykgey8vcmVnZXggZGV0ZWN0ZWQNCgkJCQlpZiAoc3RybGVuKCRyZXMpICYmICRyZXNbc3RybGVuKCRyZXMpLTFdID09PSAnLycpICRyZXMgLj0gJyAnOw0KCQkJCWRvIHsNCgkJCQkJaWYgKCRzdHJbJGldID09ICdcXCcpIHsNCgkJCQkJCSRyZXMgLj0gJHN0clskaSsrXTsNCgkJCQkJfSBlbHNlaWYgKCRzdHJbJGldID09ICdbJykgew0KCQkJCQkJZG8gew0KCQkJCQkJCWlmICgkc3RyWyRpXSA9PSAnXFwnKSB7DQoJCQkJCQkJCSRyZXMgLj0gJHN0clskaSsrXTsNCgkJCQkJCQl9DQoJCQkJCQkJJHJlcyAuPSAkc3RyWyRpKytdOw0KCQkJCQkJfSB3aGlsZSAoJGk8c3RybGVuKCRzdHIpICYmICRzdHJbJGldIT0nXScpOw0KCQkJCQl9DQoJCQkJCSRyZXMgLj0gJHN0clskaSsrXTsNCgkJCQl9IHdoaWxlICgkaTxzdHJsZW4oJHN0cikgJiYgJHN0clskaV0hPScvJyk7DQoJCQkJJHJlcyAuPSAkc3RyWyRpKytdOw0KCQkJCSRtYXliZV9yZWdleCA9IGZhbHNlOw0KCQkJCWNvbnRpbnVlOw0KCQkJfSBlbHNlaWYgKCRzdHJbJGldPT0nIicgfHwgJHN0clskaV09PSInIikgey8vcXVvdGVkIHN0cmluZyBkZXRlY3RlZA0KCQkJCSRxdW90ZSA9ICRzdHJbJGldOw0KCQkJCWRvIHsNCgkJCQkJaWYgKCRzdHJbJGldID09ICdcXCcpIHsNCgkJCQkJCSRyZXMgLj0gJHN0clskaSsrXTsNCgkJCQkJfQ0KCQkJCQkkcmVzIC49ICRzdHJbJGkrK107DQoJCQkJfSB3aGlsZSAoJGk8c3RybGVuKCRzdHIpICYmICRzdHJbJGldIT0kcXVvdGUpOw0KCQkJCSRyZXMgLj0gJHN0clskaSsrXTsNCgkJCQljb250aW51ZTsNCgkJCX0gZWxzZWlmICgkc3RyWyRpXS4kc3RyWyRpKzFdPT0nLyonICYmIEAkc3RyWyRpKzJdIT0nQCcpIHsvL211bHRpLWxpbmUgY29tbWVudCBkZXRlY3RlZA0KCQkJCSRpKz0zOw0KCQkJCXdoaWxlICgkaTxzdHJsZW4oJHN0cikgJiYgJHN0clskaS0xXS4kc3RyWyRpXSE9JyovJykgJGkrKzsNCgkJCQlpZiAoJGN1cnJlbnRfY2hhciA9PSAiXG4iKSAkc3RyWyRpXSA9ICJcbiI7DQoJCQkJZWxzZSAkc3RyWyRpXSA9ICcgJzsNCgkJCX0gZWxzZWlmICgkc3RyWyRpXS4kc3RyWyRpKzFdPT0nLy8nKSB7Ly9zaW5nbGUtbGluZSBjb21tZW50IGRldGVjdGVkDQoJCQkJJGkrPTI7DQoJCQkJd2hpbGUgKCRpPHN0cmxlbigkc3RyKSAmJiAkc3RyWyRpXSE9IlxuIiAmJiAkc3RyWyRpXSE9IlxyIikgJGkrKzsNCgkJCX0NCgkJCQ0KCQ0KCQ0KCQkJJExGX25lZWRlZCA9IGZhbHNlOw0KCQkJaWYgKHByZWdfbWF0Y2goJy9bXG5cclx0IF0vJywgJHN0clskaV0pKSB7DQoJCQkJaWYgKHN0cmxlbigkcmVzKSAmJiBwcmVnX21hdGNoKCcvW1xuIF0vJywgJHJlc1tzdHJsZW4oJHJlcyktMV0pKSB7DQoJCQkJCWlmICgkcmVzW3N0cmxlbigkcmVzKS0xXSA9PSAiXG4iKSAkTEZfbmVlZGVkID0gdHJ1ZTsNCgkJCQkJJHJlcyA9IHN1YnN0cigkcmVzLCAwLCAtMSk7DQoJCQkJfQ0KCQkJCXdoaWxlICgkaSsxPHN0cmxlbigkc3RyKSAmJiBwcmVnX21hdGNoKCcvW1xuXHJcdCBdLycsICRzdHJbJGkrMV0pKSB7DQoJCQkJCWlmICghJExGX25lZWRlZCAmJiBwcmVnX21hdGNoKCcvW1xuXHJdLycsICRzdHJbJGldKSkgJExGX25lZWRlZCA9IHRydWU7DQoJCQkJCSRpKys7DQoJCQkJfQ0KCQkJfQ0KCQkJDQoJCQlpZiAoc3RybGVuKCRzdHIpIDw9ICRpKzEpIGJyZWFrOw0KCQkJDQoJCQkkY3VycmVudF9jaGFyID0gJHN0clskaV07DQoJCQkNCgkJCWlmICgkTEZfbmVlZGVkKSAkY3VycmVudF9jaGFyID0gIlxuIjsNCgkJCWVsc2VpZiAoJGN1cnJlbnRfY2hhciA9PSAiXHQiKSAkY3VycmVudF9jaGFyID0gIiAiOw0KCQkJZWxzZWlmICgkY3VycmVudF9jaGFyID09ICJcciIpICRjdXJyZW50X2NoYXIgPSAiXG4iOw0KCQkJDQoJCQkvLyBkZXRlY3QgdW5uZWNlc3Nhcnkgd2hpdGUgc3BhY2VzDQoJCQlpZiAoJGN1cnJlbnRfY2hhciA9PSAiICIpIHsNCgkJCQlpZiAoc3RybGVuKCRyZXMpICYmDQoJCQkJCSgNCgkJCQkJcHJlZ19tYXRjaCgnL15bXigpe31bXF09K1wtKlwvJSZ8IT48Pzp+Xiw7IlwnXXsyfSQvJywgJHJlc1tzdHJsZW4oJHJlcyktMV0uJHN0clskaSsxXSkgfHwNCgkJCQkJcHJlZ19tYXRjaCgnL14oXCtcKyl8KC0tKSQvJywgJHJlc1tzdHJsZW4oJHJlcyktMV0uJHN0clskaSsxXSkgLy8gZm9yIGV4YW1wbGUgaSsgKytqOw0KCQkJCQkpKSAkcmVzIC49ICRjdXJyZW50X2NoYXI7DQoJCQl9IGVsc2VpZiAoJGN1cnJlbnRfY2hhciA9PSAiXG4iKSB7DQoJCQkJaWYgKHN0cmxlbigkcmVzKSAmJg0KCQkJCQkoDQoJCQkJCXByZWdfbWF0Y2goJy9eW14oe1s9K1wtKiUmfCE+PD86fl4sO1wvXVteKX1cXT0rXC0qJSZ8Pjw/Oiw7XC9dJC8nLCAkcmVzW3N0cmxlbigkcmVzKS0xXS4kc3RyWyRpKzFdKSB8fA0KCQkJCQkoc3RybGVuKCRyZXMpPjEgJiYgcHJlZ19tYXRjaCgnL14oXCtcKyl8KC0tKSQvJywgJHJlc1tzdHJsZW4oJHJlcyktMl0uJHJlc1tzdHJsZW4oJHJlcyktMV0pKSB8fA0KCQkJCQkoc3RybGVuKCRzdHIpPiRpKzIgJiYgcHJlZ19tYXRjaCgnL14oXCtcKyl8KC0tKSQvJywgJHN0clskaSsxXS4kc3RyWyRpKzJdKSkgfHwNCgkJCQkJcHJlZ19tYXRjaCgnL14oXCtcKyl8KC0tKSQvJywgJHJlc1tzdHJsZW4oJHJlcyktMV0uJHN0clskaSsxXSkvLyB8fCAvLyBmb3IgZXhhbXBsZSBpKyArK2o7DQoJCQkJCSkpICRyZXMgLj0gJGN1cnJlbnRfY2hhcjsNCgkJCX0gZWxzZSAkcmVzIC49ICRjdXJyZW50X2NoYXI7DQoJCQkNCgkJCS8vIGlmIHRoZSBuZXh0IGNoYXJhY2h0ZXIgYmUgYSBzbGFzaCwgZGV0ZWN0cyBpZiBpdCBpcyBhIGRpdmlkZSBvcGVyYXRvciBvciBzdGFydCBvZiBhIHJlZ2V4DQoJCQlpZiAocHJlZ19tYXRjaCgnL1soe1s9K1wtKlwvJSZ8IT48Pzp+Xiw7XS8nLCAkY3VycmVudF9jaGFyKSkgJG1heWJlX3JlZ2V4ID0gdHJ1ZTsNCgkJCWVsc2VpZiAoIXByZWdfbWF0Y2goJy9bXG4gXS8nLCAkY3VycmVudF9jaGFyKSkgJG1heWJlX3JlZ2V4ID0gZmFsc2U7DQoJCQkJDQoJCQkkaSsrOw0KCQl9DQoJCWlmICgkaTxzdHJsZW4oJHN0cikgJiYgcHJlZ19tYXRjaCgnL1teXG5cclx0IF0vJywgJHN0clskaV0pKSAkcmVzIC49ICRzdHJbJGldOw0KCQlyZXR1cm4gJHJlczsNCgl9DQp9DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.btTools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KTW9kdWxlOgkJVG9vbEJveA0KVGl0bGU6CQlibGF0dGVydGVjaCB0b29scyBjbGFzcw0KVmVyc2lvbjoJMS4wDQpEZXNjcmlwdC46CXNvbWUgdXNlZnVsIGZ1bmN0aW9ucw0KTGFzdCBNb2QuOgkyNi4wMS4yMDEyDQpBdXRob3I6CQlMdWthcyBCbGF0dGVyDQpFbWFpbDoJCWx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2gNCk5vdGVzOg0KTGljZW5jZToJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCgkJCWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQoJCQl0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KCQkJKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCgkJCUhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KCQkJYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQoJCQlpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQoJCQlNYWRlIFNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4NCgkJCXNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBTaW1wbGUuDQoJCQlGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ01TIE1hZGUgU2ltcGxlIG9uIGl0cyB3ZWJzaXRlOg0KCQkJaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy8NCgkJCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KCQkJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCgkJCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCgkJCUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQoJCQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KCQkJYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCgkJCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQoJCQlPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCg0KY2xhc3MgYnRUb29scw0Kew0KDQoJLyoqDQoJICogQ2FsY3VsYXRlIGhhc2h2YWx1ZSBmb3IgcGFyYW1zDQoJICoNCgkgKiBAc291cmNlCWh0dHA6Ly9ibG9nLmViZW5lNy5jb20vMjAxMi8wMS8wNC9laW5mYWNoZS1hYnNpY2hlcnVuZy12b24tcGFyYW1ldGVybi8NCgkgKiBAcGFyYW0JYXJyYXkgJHBhcmFtcw0KCSAqIEBwYXJhbQlzdHJpbmcgJHNhbHQNCgkgKiBAcGFyYW0Jc3RyaW5nICRjYWxsYmFjayBPUFRJT05BTCAoZGVmYXVsdD0nc2hhMScpDQoJICogQHJldHVybglzdHJpbmcNCgkgKiANCgkgKiBEZW1vDQoJICogJHBhcmFtczEgPSBhcnJheSgNCgkgKgkgICAgJ2tleTEnID0+ICd2YWx1ZTEnLA0KCSAqCSAgICAna2V5MicgPT4gJ3ZhbHVlMicNCgkgKgkpOw0KCSAqCQ0KCSAqCSRwYXJhbXMyID0gYXJyYXkoDQoJICoJICAgICdrZXkyJyA9PiAndmFsdWUyJywNCgkgKgkgICAgJ2tleTEnID0+ICd2YWx1ZTEnDQoJICoJKTsNCgkgKgkNCgkgKgkkc2FsdCA9ICdibGFibHViYic7DQoJICoJDQoJICoJZWNobyAncDEtaGFzaDogJyAuIGdldFBhcmFtc0hhc2goJHBhcmFtczEsICRzYWx0LCAnbWQ1JykgLiAnPGJyLz4nOw0KCSAqCWVjaG8gJ3AyLWhhc2g6ICcgLiBnZXRQYXJhbXNIYXNoKCRwYXJhbXMyLCAkc2FsdCwgJ21kNScpIC4gJzxici8+JzsNCgkgKglEaWUgQXVzZ2FiZSBpc3QgdW5hYmjDpG5naWcgdm9uIGRlciBSZWloZW5mb2xnZSBkZXIgV2VydGUgaW0gQXJyYXkgaWRlbnRpc2NoLg0KCSAqCXAxLWhhc2g6IDNlNzFlZGE3Yjg1Mzk3OTFlYTJmZDhmMTU5YjVlNTdiDQoJICoJcDItaGFzaDogM2U3MWVkYTdiODUzOTc5MWVhMmZkOGYxNTliNWU1N2INCgkgKiANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFBhcmFtc0hhc2goYXJyYXkgJHBhcmFtcywgJHNhbHQsICRjYWxsYmFjayA9ICdzaGExJykgew0KCSAgICAkcGFyYW1zWydfX1NBTFRfXyddID0gJHNhbHQ7DQoJICAgIGtzb3J0KCRwYXJhbXMpOw0KCSAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJGNhbGxiYWNrLCBpbXBsb2RlKCcsJywgJHBhcmFtcykpOw0KCX0NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHByaW50TXNnQXJyYXkoJGFycmF5ID0gYXJyYXkoKSwgJGNsYXNzKSB7DQoJDQoJCSRyZXR2YWwgPSAiIjsNCgkJDQoJCWlmIChjb3VudCgkYXJyYXkpKSB7DQoJCQkkcmV0dmFsLj0gIlxuIi4nPGRpdiBjbGFzcz0iJy4kY2xhc3MuJyI+JzsNCgkJCWlmIChjb3VudCgkYXJyYXkpID4gMSkgew0KCQkJCSRyZXR2YWwuPSAiXG48dWw+XG4iOw0KCQkJCWZvcmVhY2goJGFycmF5IGFzICRpdGVtKSB7DQoJCQkJCSRyZXR2YWwuPSAiPGxpPiIuJGl0ZW0uIjwvbGk+XG4iOw0KCQkJCX0NCgkJCQkkcmV0dmFsLj0gIjwvdWw+XG4iOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJJHJldHZhbC49ICRhcnJheVswXTsNCgkJCX0NCgkJCSRyZXR2YWwuPSAiPC9kaXY+IjsNCgkJfQ0KCQllbHNlDQoJCQlyZXR1cm4gJyc7DQoJCQkNCgkJcmV0dXJuICRyZXR2YWw7CQ0KCX0NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGlzQ3VybEVuYWJsZWQoKSB7DQoJCWlmICghZXh0ZW5zaW9uX2xvYWRlZCgnY3VybCcpKQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpc1VybGZvcGVuRW5hYmxlZCgpIHsNCgkJaWYgKCFpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkNCgkJCXJldHVybiBmYWxzZTsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEdpYnQgYWxsZSBUYWdzIGRlciBnZWZ1bmRlbmVuIEJpbGRlciB6dXLDvGNrDQoJICogQHBhcmFtICR0ZXh0IC0gSFRNTA0KCSAqIEByZXR1cm4gYXJyYXkNCiAJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRJbWdUYWdzKCR0ZXh0KSB7DQoJCS8vIEFsbGUgSW1nLVRhZ3MgYXVzbGVzZW4NCgkJJG1hdGNoZXMgPSBhcnJheSgpOw0KCQlwcmVnX21hdGNoX2FsbCgnLzxpbWcoLio/KVwvPi8nLCAkdGV4dCwgJG1hdGNoZXMpOw0KDQoJCS8vIEZ1bmRlIGR1cmNobGF1ZmVuIHVuZCBBdHRyaWJ1dGUgZXJtaXR0ZWxuDQoJCSRpbWFnZXMgPSBhcnJheSgpOw0KCQlmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAkbWF0Y2gpIHsNCgkJCS8vIEF0dHJpYnV0ZSBhdXN0cmVubmVuDQoJCQkkYXR0cmlidXRlcyA9IGFycmF5KCk7DQoJCQlwcmVnX21hdGNoX2FsbCgnLyhbYS16XSo/KT0iKC4qPykiLycsICRtYXRjaCwgJGF0dHJpYnV0ZXMpOw0KDQoJCQkvLyBBdHRyaWJ1dGUgYWJzcGVpY2hlcm4NCgkJCSRpbWFnZSA9IGFycmF5KCk7DQoJCQlmb3JlYWNoICgkYXR0cmlidXRlc1sxXSBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQkJCSRpbWFnZVskdmFsdWVdID0gJGF0dHJpYnV0ZXNbMl1bJGtleV07DQoJCQl9DQoJCQkkaW1hZ2VzW10gPSAkaW1hZ2U7DQoJCX0NCg0KCQkvLyBEYXRlbiB6dXLDvGNrZ2ViZW4NCgkJcmV0dXJuICRpbWFnZXM7DQoJfQ0KCQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIENvbnZlcnQgYSBvYmplY3QgdG8gYW4gYXJyYXkNCgkgKiBAcGFyYW0gJGQgLSBvYmplY3QNCgkgKiBAY29weXJpZ2h0IGh0dHA6Ly93d3cuaWYtbm90LXRydWUtdGhlbi1mYWxzZS5jb20vMjAwOS9waHAtdGlwLWNvbnZlcnQtc3RkY2xhc3Mtb2JqZWN0LXRvLW11bHRpZGltZW5zaW9uYWwtYXJyYXktYW5kLWNvbnZlcnQtbXVsdGlkaW1lbnNpb25hbC1hcnJheS10by1zdGRjbGFzcy1vYmplY3QvDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBvYmplY3RUb0FycmF5KCRkYXRhKQ0KCXsNCgkgICAgaWYgKGlzX2FycmF5KCRkYXRhKSB8fCBpc19vYmplY3QoJGRhdGEpKQ0KCSAgICB7DQoJICAgICAgICAkcmVzdWx0ID0gYXJyYXkoKTsNCgkgICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRrZXkgPT4gJHZhbHVlKQ0KCSAgICAgICAgew0KCSAgICAgICAgICAgICRyZXN1bHRbJGtleV0gPSBzZWxmOjpvYmplY3RUb0FycmF5KCR2YWx1ZSk7DQoJICAgICAgICB9DQoJICAgICAgICByZXR1cm4gJHJlc3VsdDsNCgkgICAgfQ0KCSAgICByZXR1cm4gJGRhdGE7DQoJfQ0KCQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIENvbnZlcnQgYSBvYmplY3QgdG8gYW4gYXJyYXkNCgkgKiBAcGFyYW0gJGFycmF5DQoJICogQHJldHVybiBvYmplY3QNCgkgKiBAY29weXJpZ2h0IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTg2OTA5MS9jb252ZXJ0LWFycmF5LXRvLW9iamVjdC1waHANCgkgKi8NCglwcml2YXRlIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBhcnJheV90b19vYmooJGFycmF5LCAmJG9iaikNCgl7DQoJCWZvcmVhY2ggKCRhcnJheSBhcyAka2V5ID0+ICR2YWx1ZSkNCgkJew0KCQkJaWYgKGlzX2FycmF5KCR2YWx1ZSkpDQoJCQl7DQoJCQkJJG9iai0+JGtleSA9IG5ldyBzdGRDbGFzcygpOw0KCQkJCXNlbGY6OmFycmF5X3RvX29iaigkdmFsdWUsICRvYmotPiRrZXkpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRvYmotPiRrZXkgPSAkdmFsdWU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRvYmo7DQoJfQ0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBhcnJheVRvT2JqZWN0KCRhcnJheSkNCgl7DQoJCSRvYmplY3Q9IG5ldyBzdGRDbGFzcygpOw0KCQlyZXR1cm4gc2VsZjo6YXJyYXlfdG9fb2JqKCRhcnJheSwkb2JqZWN0KTsNCgl9DQoJDQoJDQoJDQoJLyoqDQoJICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDE5MDc2L2hvdy10by1zZWFyY2gtYnkta2V5LXZhbHVlLWluLWEtbXVsdGlkaW1lbnNpb25hbC1hcnJheS1pbi1waHANCgkgKiBTZWFyY2ggYSBNdWx0aWRpbWVuc2lvbmFsIEFycmF5CSANCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5DQoJICogQHBhcmFtIHN0cmluZyAka2V5DQoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUNCgkgKiBAcmV0dXJuIGFycmF5DQoJICovDQoJDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2hBcnJheSgkYXJyYXksICRrZXksICR2YWx1ZSkNCgkJew0KCQkJJHJlc3VsdHMgPSBhcnJheSgpOw0KDQoJCQlpZiAoaXNfYXJyYXkoJGFycmF5KSkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJGFycmF5WyRrZXldKSAmJiBzdHJ0b2xvd2VyKCRhcnJheVska2V5XSkgPT0gc3RydG9sb3dlcigkdmFsdWUpKQ0KCQkJCSRyZXN1bHRzW10gPSAkYXJyYXk7DQoNCgkJCQlmb3JlYWNoICgkYXJyYXkgYXMgJHN1YmFycmF5KQ0KCQkJCSRyZXN1bHRzID0gYXJyYXlfbWVyZ2UoJHJlc3VsdHMsIHNlbGY6OnNlYXJjaEFycmF5KCRzdWJhcnJheSwgJGtleSwgJHZhbHVlKSk7DQoJCQl9DQoNCgkJCXJldHVybiAkcmVzdWx0czsNCgkJfQ0KCQ0KCQ0KDQoJLyoqDQoJICogDQoJICogR2lidCBkaWUgw7xiZXJnZWJlbmUgTnVtbWVyIGFscyAxc3QsIDJuZCwgM3JkLCA0dGgsIGV0Yy4genVyw7xjaw0KCSAqIEBwYXJhbSAkbnVtDQoJICogQGNvcHlyaWdodCBodHRwOi8vd3d3LmlmLW5vdC10cnVlLXRoZW4tZmFsc2UuY29tLzIwMTAvcGhwLTFzdC0ybmQtM3JkLTR0aC01dGgtNnRoLXBocC1hZGQtb3JkaW5hbC1udW1iZXItc3VmZml4Lw0KCSAqLw0KCS8vIDFzdAkgMm5kCSAzcmQJIDR0aAkgNXRoCSA2dGgJIDd0aAkgOHRoCSA5dGgJIDEwdGgNCgkvLyAxMXRoCTEydGgJMTN0aAkxNHRoCTE1dGgJMTZ0aAkxN3RoCTE4dGgJMTl0aAkyMHRoCQ0KDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhZGRPcmRpbmFsTnVtYmVyU3VmZml4KCRudW0pIHsNCgkJaWYgKCFpbl9hcnJheSgoJG51bSAlIDEwMCksYXJyYXkoMTEsMTIsMTMpKSl7DQoJCQlzd2l0Y2ggKCRudW0gJSAxMCkgew0KCSAJCQkvLyBIYW5kbGUgMXN0LCAybmQsIDNyZA0KCQkJCWNhc2UgMTogIHJldHVybiAkbnVtLidzdCc7DQoJIAkJCWNhc2UgMjogIHJldHVybiAkbnVtLiduZCc7DQoJCQkJY2FzZSAzOiAgcmV0dXJuICRudW0uJ3JkJzsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJG51bS4ndGgnOw0KCSB9DQoNCgkgLyoqDQoJICAqIA0KCSAgKiBadWbDpGxsaWdlbiBTdHJpbmcgbWl0IFBIUCBlcnpldWdlbg0KCSAgKiBAcGFyYW0gaW50ICRpTGVuZ3RoDQoJICAqIEBwYXJhbSBzdHJpbmcgJHNDaGFyYWN0ZXJzDQoJICAqIEBzb3VyY2UgaHR0cDovL3NrbHVlaC5kZS8yMDEzLzA5L3p1ZmFlbGxpZ2VuLXN0cmluZy1taXQtcGhwLWVyemV1Z2VuLw0KCSAgKiB2YXJfZHVtcChnZXRSYW5kb21TdHJpbmcoKSk7IC8vWTZLN1VIZXk0bA0KCSAgKiB2YXJfZHVtcChnZXRSYW5kb21TdHJpbmcoMiwgJ2FiJykpOyAvL2JhDQoJICAqIHZhcl9kdW1wKGdldFJhbmRvbVN0cmluZyg4LCAnYWInKSk7IC8vYmFiYWJiYWENCgkgICogdmFyX2R1bXAoZ2V0UmFuZG9tU3RyaW5nKDUsICdBQkNERUZHSElKS0xNTzEyMzQlJiTCpyIkJScpKTsgLy9CTSRNJA0KCSAgKi8NCgkgDQoJIA0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UmFuZG9tU3RyaW5nKCRpTGVuZ3RoID0gMTAsICRzQ2hhcmFjdGVycyA9IG51bGwpDQoJew0KCQlpZigkc0NoYXJhY3RlcnMgPT0gbnVsbCkNCgkJJGFDaGFyYWN0ZXJzID0gYXJyYXlfbWVyZ2UocmFuZ2UoJ0EnLCAnWicpLCByYW5nZSgnYScsICd6JyksIHJhbmdlKDAsOSkpOw0KCQllbHNlDQoJCSRhQ2hhcmFjdGVycyA9IHN0cl9zcGxpdCgkc0NoYXJhY3RlcnMpOw0KCQkgDQoJCWZvciAoJHNSYW5kb21TdHJpbmcgPSAnJywgJGkgPSAwOyAkaSA8ICRpTGVuZ3RoOyAkaSsrKQ0KCQkkc1JhbmRvbVN0cmluZy49ICRhQ2hhcmFjdGVyc1thcnJheV9yYW5kKCRhQ2hhcmFjdGVycyldOw0KCQkgDQoJCXJldHVybiAkc1JhbmRvbVN0cmluZzsNCgl9DQoNCgkNCgkgDQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.ImageWorkshop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcDsNCg0KLy91c2UgUEhQSW1hZ2VXb3Jrc2hvcFxJbWFnZVdvcmtzaG9wRXhjZXB0aW9uOw0KDQovL3JlcXVpcmVfb25jZShfX0RJUl9fLicvSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbi5waHAnKTsgLy8gSWYgbm8gYXV0b2xvYWRlciwgdW5jb21tZW50IHRoaXMgbGluZQ0KDQpjbGFzcyBJbWFnZVdvcmtzaG9wRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbg0Kew0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yDQogICAgICogDQogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQ0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRjb2RlDQogICAgICogQHBhcmFtIEV4Y2VwdGlvbiAkcHJldmlvdXMNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRjb2RlID0gMCwgXEV4Y2VwdGlvbiAkcHJldmlvdXMgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcmV2aW91cyk7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIF9fdG9TdHJpbmcgbWV0aG9kDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkNCiAgICB7DQogICAgICAgIHJldHVybiBfX0NMQVNTX18uIjogW3skdGhpcy0+Y29kZX1dOiB7JHRoaXMtPm1lc3NhZ2V9XG4iOw0KICAgIH0NCn0NCg0KDQovKioNCiAqIEltYWdlV29ya3Nob3AgY2xhc3MNCiAqDQogKiBQb3dlcmZ1bCBQSFAgY2xhc3MgdXNpbmcgR0QgbGlicmFyeSB0byB3b3JrIGVhc2lseSB3aXRoIGltYWdlcyBpbmNsdWRpbmcgbGF5ZXIgbm90aW9uIChsaWtlIFBob3Rvc2hvcCBvciBHSU1QKS4NCiAqIEltYWdlV29ya3Nob3AgY2FuIGJlIHVzZWQgYXMgYSBsYXllciwgYSBncm91cCBvciBhIGRvY3VtZW50Lg0KICoNCiAqIEB2ZXJzaW9uIDEuMy4zDQogKiBAbGluayBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20NCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvZ3BsLWxpY2Vuc2UucGhwIEdOVSBQdWJsaWMgTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3ANCnsNCiAgICAvLyBQcm9wZXJ0aWVzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KICAgIC8qKg0KICAgICAqIEB2YXIgd2lkdGgNCiAgICAgKg0KICAgICAqIFdpZHRoIG9mIHRoZSBncm91cCBtb2RlbA0KICAgICAqIERlZmF1bHQ6IDgwMA0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkd2lkdGg7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGhlaWdodA0KICAgICAqDQogICAgICogSGVpZ2h0IG9mIHRoZSBncm91cCBtb2RlbA0KICAgICAqIERlZmF1bHQ6IDYwMA0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkaGVpZ2h0Ow0KDQogICAgLyoqDQogICAgICogQHZhciBsYXllcnMNCiAgICAgKg0KICAgICAqIExheWVycyAoYW5kIGdyb3VwcykNCiAgICAgKi8NCiAgICBwdWJsaWMgJGxheWVyczsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgbGF5ZXJMZXZlbHMNCiAgICAgKg0KICAgICAqIExldmVscyBvZiB0aGUgc3VibGF5ZXJzIGluIHRoZSBzdGFjaw0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkbGF5ZXJMZXZlbHM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGxheWVyUG9zaXRpb25zDQogICAgICoNCiAgICAgKiBQb3NpdGlvbnMgKHggYW5kIHkpIG9mIHRoZSBzdWJsYXllcnMgaW4gdGhlIHN0YWNrDQogICAgICovDQogICAgcHJvdGVjdGVkICRsYXllclBvc2l0aW9uczsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgbGFzdExheWVySWQNCiAgICAgKg0KICAgICAqIElkIG9mIHRoZSBsYXN0IGluZGV4ZWQgc3VibGF5ZXIgaW4gdGhlIHN0YWNrDQogICAgICovDQogICAgcHJvdGVjdGVkICRsYXN0TGF5ZXJJZDsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgaGlnaGVzdExheWVyTGV2ZWwNCiAgICAgKg0KICAgICAqIFRoZSBoaWdoZXN0IHN1YmxheWVyIGxldmVsDQogICAgICovDQogICAgcHJvdGVjdGVkICRoaWdoZXN0TGF5ZXJMZXZlbDsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgaW1hZ2UNCiAgICAgKg0KICAgICAqIEJhY2tncm91bmQgSW1hZ2UNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGltYWdlOw0KICAgIA0KICAgIC8qKg0KICAgICAqIEB2YXIgc3RyaW5nDQogICAgICovDQogICAgY29uc3QgVU5JVF9QSVhFTCA9ICdwaXhlbCc7DQogICAgDQogICAgLyoqDQogICAgICogQHZhciBzdHJpbmcNCiAgICAgKi8gICAgDQogICAgY29uc3QgVU5JVF9QRVJDRU5UID0gJ3BlcmNlbnQnOw0KDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyDQogICAgICovDQogICAgY29uc3QgRVJST1JfR0RfTk9UX0lOU1RBTExFRCA9IDE7DQogICAgDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyDQogICAgICovDQogICAgY29uc3QgRVJST1JfTk9UX0FOX0lNQUdFX0ZJTEUgPSAyOw0KICAgIA0KICAgIC8qKg0KICAgICAqIEB2YXIgaW50ZWdlcg0KICAgICAqLw0KICAgIGNvbnN0IEVSUk9SX1BIUF9JTUFHRV9WQVJfTk9UX1VTRUQgPSAzOw0KICAgIA0KICAgIC8qKg0KICAgICAqIEB2YXIgaW50ZWdlcg0KICAgICAqLw0KICAgIGNvbnN0IEVSUk9SX0lNQUdFX05PVF9GT1VORCA9IDQ7DQoNCiAgICAvLyBNZXRob2RzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yDQogICAgICoNCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcmFtcw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcGFyYW1zID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnZ2QnKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BFeGNlcHRpb24oJ1BIUEltYWdlV29ya3Nob3AgcmVxdWlyZXMgdGhlIEdEIGV4dGVuc2lvbiB0byBiZSBsb2FkZWQuJywgSW1hZ2VXb3Jrc2hvcDo6RVJST1JfR0RfTk9UX0lOU1RBTExFRCk7DQogICAgICAgIH0NCiAgICAJDQogICAgICAgICR0aGlzLT53aWR0aCA9IDgwMDsNCiAgICAgICAgJHRoaXMtPmhlaWdodCA9IDYwMDsNCiAgICAgICAgJHRoaXMtPmxheWVycyA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5sYXllckxldmVscyA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9ucyA9IGFycmF5KCk7DQogICAgICAgICRpbWFnZUZyb21QYXRoID0gbnVsbDsNCiAgICAgICAgJGltYWdlVmFyID0gbnVsbDsNCiAgICAgICAgJGltYWdlU3RyaW5nID0gbnVsbDsNCiAgICAgICAgJGJhY2tncm91bmRDb2xvciA9IG51bGw7DQogICAgICAgICR0ZXh0ID0gbnVsbDsNCiAgICAgICAgJGZvbnRQYXRoID0gbnVsbDsNCiAgICAgICAgJGZvbnRTaXplID0gMTM7DQogICAgICAgICRmb250Q29sb3IgPSAnZmZmZmZmJzsNCiAgICAgICAgJHRleHRSb3RhdGlvbiA9IDA7DQogICAgICAgICRmaWxlT2JqZWN0ID0gbnVsbDsNCiAgICAgICAgJHRtcE5hbWUgPSBudWxsOw0KICAgICAgICAkbWltZVR5cGUgPSBudWxsOw0KDQogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCd3aWR0aCcsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+d2lkdGggPSAkcGFyYW1zWyd3aWR0aCddOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hlaWdodCcsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJHBhcmFtc1snaGVpZ2h0J107DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnaW1hZ2VGcm9tUGF0aCcsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkaW1hZ2VGcm9tUGF0aCA9ICRwYXJhbXNbJ2ltYWdlRnJvbVBhdGgnXTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdpbWFnZVZhcicsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkaW1hZ2VWYXIgPSAkcGFyYW1zWydpbWFnZVZhciddOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnaW1hZ2VGcm9tU3RyaW5nJywgJHBhcmFtcykpIHsNCiAgICAgICAgICAgICRpbWFnZVN0cmluZyA9ICRwYXJhbXNbJ2ltYWdlRnJvbVN0cmluZyddOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2JhY2tncm91bmRDb2xvcicsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkYmFja2dyb3VuZENvbG9yID0gJHBhcmFtc1snYmFja2dyb3VuZENvbG9yJ107DQogICAgICAgIH0NCg0KICAgICAgICAvLyBUZXh0IGxheWVyDQoNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3RleHQnLCAkcGFyYW1zKSkgew0KICAgICAgICAgICAgJHRleHQgPSAkcGFyYW1zWyd0ZXh0J107DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZm9udFBhdGgnLCAkcGFyYW1zKSkgew0KICAgICAgICAgICAgJGZvbnRQYXRoID0gJHBhcmFtc1siZm9udFBhdGgiXTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdmb250U2l6ZScsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkZm9udFNpemUgPSAkcGFyYW1zWydmb250U2l6ZSddOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2ZvbnRDb2xvcicsICRwYXJhbXMpKSB7DQogICAgICAgICAgICAkZm9udENvbG9yID0gJHBhcmFtc1snZm9udENvbG9yJ107DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygndGV4dFJvdGF0aW9uJywgJHBhcmFtcykpIHsNCiAgICAgICAgICAgICR0ZXh0Um90YXRpb24gPSAkcGFyYW1zWyd0ZXh0Um90YXRpb24nXTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFVwbG9hZGVkIGZpbGUgb2JqZWN0IGxheWVyDQoNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2ZpbGVPYmplY3QnLCAkcGFyYW1zKSkgew0KDQogICAgICAgICAgICAkZmlsZU9iamVjdCA9ICRwYXJhbXNbJ2ZpbGVPYmplY3QnXTsNCg0KICAgICAgICB9IGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygndG1wTmFtZScsICRwYXJhbXMpKSB7DQoNCiAgICAgICAgICAgICR0bXBOYW1lID0gJHBhcmFtc1sndG1wTmFtZSddOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmNsZWFyU3RhY2soKTsNCg0KICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBvZiB0aGUgbGF5ZXIgZGltZW5zaW9ucyBhbmQgYmFja2dyb3VuZCBpbWFnZQ0KDQogICAgICAgIGlmICgkaW1hZ2VGcm9tUGF0aCB8fCAkZmlsZU9iamVjdCB8fCAkdG1wTmFtZSkgew0KDQogICAgICAgICAgICBpZiAoJGZpbGVPYmplY3QpIHsNCg0KICAgICAgICAgICAgICAgICRpbWFnZUZyb21QYXRoID0gJGZpbGVPYmplY3RbJ3RtcF9uYW1lJ107DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkdG1wTmFtZSkgew0KDQogICAgICAgICAgICAgICAgJGltYWdlRnJvbVBhdGggPSAkdG1wTmFtZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemVJbWFnZUZyb20oJGltYWdlRnJvbVBhdGgpOw0KDQogICAgICAgIH0gZWxzZWlmICgkaW1hZ2VWYXIpIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemVJbWFnZVdpdGgoJGltYWdlVmFyKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2VpZiAoJGltYWdlU3RyaW5nKSB7DQoNCiAgICAgICAgICAgICRpbWFnZVZhciA9IGltYWdlY3JlYXRlZnJvbXN0cmluZygkaW1hZ2VTdHJpbmcpOw0KICAgIA0KICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemVJbWFnZVdpdGgoJGltYWdlVmFyKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2VpZiAoJHRleHQgJiYgJGZvbnRQYXRoKSB7DQoNCiAgICAgICAgICAgICR0aGlzLT5pbml0aWFsaXplVGV4dEltYWdlKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSwgJGZvbnRDb2xvciwgJHRleHRSb3RhdGlvbiwgJGJhY2tncm91bmRDb2xvcik7DQoNCiAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmluaXRpYWxpemVJbWFnZSgkYmFja2dyb3VuZENvbG9yKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENsb25lIG1ldGhvZDogdXNlIGl0IGlmIHlvdSB3YW50IHRvIHJldXNlIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agb2JqZWN0IGluIGFub3RoZXIgdmFyaWFibGUNCiAgICAgKiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGltZyByZXNvdXJjZSB2YXIgcmVmZXJlbmNlcyBhbGwgdGhlIHNhbWUgaW1hZ2UgaW4gUEhQLg0KICAgICAqIEV4YW1wbGU6ICRiID0gY2xvbmUgJGE7IChuZXZlciBkbyAkYiA9ICRhOykNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JlYXRlTmV3VmFyRnJvbUJhY2tncm91bmRJbWFnZSgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFBhc3RlIGFuIGltYWdlIG9uIHRoZSBsYXllcg0KICAgICAqIFlvdSBjYW4gc3BlY2lmeSB0aGUgcG9zaXRpb24gbGVmdCAoaW4gcGl4ZWxzKSBhbmQgdGhlIHBvc2l0aW9uIHRvcCAoaW4gcGl4ZWxzKSBvZiB0aGUgYWRkZWQgaW1hZ2UgcmVsYXRpdmVzIHRvIHRoZSBsYXllcg0KICAgICAqIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBzZXQgYXQgMCBhbmQgMA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdCBVc2Ugb25lIG9mIGBVTklUXypgIGNvbnN0YW50cywgIlVOSVRfUElYRUwiIGJ5IGRlZmF1bHQNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGltYWdlDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFzdGVJbWFnZSgkdW5pdCA9IHNlbGY6OlVOSVRfUElYRUwsICRpbWFnZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwKQ0KICAgIHsNCiAgICAgICAgaWYgKCR1bml0ID09IHNlbGY6OlVOSVRfUEVSQ0VOVCkgew0KDQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGltYWdlY29weSgkdGhpcy0+aW1hZ2UsICRpbWFnZSwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgMCwgMCwgJGltYWdlLT5nZXRXaWR0aCgpLCAkaW1hZ2UtPmdldEhlaWdodCgpKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYW4gZXhpc3RpbmcgSW1hZ2VXb3Jrc2hvcCBzdWJsYXllciBhbmQgc2V0IGl0IGluIHRoZSBzdGFjayBhdCBhIGdpdmVuIGxldmVsDQogICAgICogUmV0dXJuIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBzdWJsYXllciBpZCBpbiB0aGUgc3RhY2sgYW5kIGl0cyBjb3JyZWN0ZWQgbGV2ZWw6DQogICAgICogYXJyYXkoImxheWVyTGV2ZWwiID0+IGludGVnZXIsICJpZCIgPT4gaW50ZWdlcikNCiAgICAgKg0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVyTGV2ZWwNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcCAkbGF5ZXINCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGFkZExheWVyKCRsYXllckxldmVsLCAkbGF5ZXIsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gIkxUIikNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW5kZXhMYXllcigkbGF5ZXJMZXZlbCwgJGxheWVyLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZCBhbiBleGlzdGluZyBJbWFnZVdvcmtzaG9wIHN1YmxheWVyIGFuZCBzZXQgaXQgaW4gdGhlIHN0YWNrIGF0IHRoZSBoaWdoZXN0IGxldmVsDQogICAgICogUmV0dXJuIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBzdWJsYXllciBpZCBpbiB0aGUgc3RhY2sgYW5kIHRoZSBoaWdoZXN0IGxldmVsOg0KICAgICAqIGFycmF5KCJsYXllckxldmVsIiA9PiBpbnRlZ2VyLCAiaWQiID0+IGludGVnZXIpDQogICAgICoNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBJbWFnZVdvcmtzaG9wICRsYXllcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkTGF5ZXJPblRvcCgkbGF5ZXIsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gIkxUIikNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW5kZXhMYXllcigkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgKyAxLCAkbGF5ZXIsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agc3VibGF5ZXIgYW5kIHNldCBpdCBpbiB0aGUgc3RhY2sgYXQgbGV2ZWwgMQ0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgaW4gdGhlIHN0YWNrIGFuZCBsZXZlbCAxOg0KICAgICAqIGFycmF5KCJsYXllckxldmVsIiA9PiBpbnRlZ2VyLCAiaWQiID0+IGludGVnZXIpDQogICAgICoNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBJbWFnZVdvcmtzaG9wICRsYXllcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkTGF5ZXJCZWxvdygkbGF5ZXIsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gIkxUIikNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW5kZXhMYXllcigxLCAkbGF5ZXIsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTWVyZ2UgYSBzdWJsYXllciB3aXRoIGFub3RoZXIgc3VibGF5ZXIgYmVsb3cgaXQgaW4gdGhlIHN0YWNrDQogICAgICogTm90ZTogdGhlIHJlc3VsdCBsYXllciB3aWxsIGNvbnNlcnZlIHRoZSBnaXZlbiBpZA0KICAgICAqIFJldHVybiB0cnVlIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQgb3IgZG9lc24ndCBoYXZlIGEgbGF5ZXIgdW5kZXIgaXQgaW4gdGhlIHN0YWNrDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sZWFuDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlRG93bigkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIC8vIGlmIHRoZSBsYXllciBleGlzdHMgaW4gZG9jdW1lbnQNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCg0KICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvbnMgPSAkdGhpcy0+Z2V0TGF5ZXJQb3NpdGlvbnMoJGxheWVySWQpOw0KDQogICAgICAgICAgICAkbGF5ZXIgPSAkdGhpcy0+Z2V0TGF5ZXIoJGxheWVySWQpOw0KICAgICAgICAgICAgJGxheWVyV2lkdGggPSAkbGF5ZXItPmdldFdpZHRoKCk7DQogICAgICAgICAgICAkbGF5ZXJIZWlnaHQgPSAkbGF5ZXItPmdldEhlaWdodCgpOw0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsieCJdOw0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25ZID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsieSJdOw0KDQogICAgICAgICAgICBpZiAoJGxheWVyTGV2ZWwgPiAxKSB7DQoNCiAgICAgICAgICAgICAgICAkdW5kZXJMYXllcklkID0gJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllckxldmVsIC0gMV07DQogICAgICAgICAgICAgICAgJHVuZGVyTGF5ZXIgPSAkdGhpcy0+Z2V0TGF5ZXIoJHVuZGVyTGF5ZXJJZCk7DQogICAgICAgICAgICAgICAgJHVuZGVyTGF5ZXJXaWR0aCA9ICR1bmRlckxheWVyLT5nZXRXaWR0aCgpOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVySGVpZ2h0ID0gJHVuZGVyTGF5ZXItPmdldEhlaWdodCgpOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyUG9zaXRpb25YID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyR1bmRlckxheWVySWRdWyJ4Il07DQogICAgICAgICAgICAgICAgJHVuZGVyTGF5ZXJQb3NpdGlvblkgPSAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJHVuZGVyTGF5ZXJJZF1bInkiXTsNCg0KICAgICAgICAgICAgICAgICR0b3RhbFdpZHRoTGF5ZXIgPSAkbGF5ZXJXaWR0aCArICRsYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICAkdG90YWxIZWlnaHRMYXllciA9ICRsYXllckhlaWdodCArICRsYXllclBvc2l0aW9uWTsNCg0KICAgICAgICAgICAgICAgICR0b3RhbFdpZHRoVW5kZXJMYXllciA9ICR1bmRlckxheWVyV2lkdGggKyAkdW5kZXJMYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICAkdG90YWxIZWlnaHRVbmRlckxheWVyID0gJHVuZGVyTGF5ZXJIZWlnaHQgKyAkdW5kZXJMYXllclBvc2l0aW9uWTsNCg0KICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWCA9ICRsYXllclBvc2l0aW9uWDsNCg0KICAgICAgICAgICAgICAgIGlmICgkbGF5ZXJQb3NpdGlvblggPiAkdW5kZXJMYXllclBvc2l0aW9uWCkgew0KDQogICAgICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWCA9ICR1bmRlckxheWVyUG9zaXRpb25YOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWSA9ICRsYXllclBvc2l0aW9uWTsNCg0KICAgICAgICAgICAgICAgIGlmICgkbGF5ZXJQb3NpdGlvblkgPiAkdW5kZXJMYXllclBvc2l0aW9uWSkgew0KDQogICAgICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWSA9ICR1bmRlckxheWVyUG9zaXRpb25ZOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICgkdG90YWxXaWR0aExheWVyID4gJHRvdGFsV2lkdGhVbmRlckxheWVyKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGxheWVyVG1wV2lkdGggPSAkdG90YWxXaWR0aExheWVyIC0gJG1pbkxheWVyUG9zaXRpb25YOw0KDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbGF5ZXJUbXBXaWR0aCA9ICR0b3RhbFdpZHRoVW5kZXJMYXllciAtICRtaW5MYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoJHRvdGFsSGVpZ2h0TGF5ZXIgPiAkdG90YWxIZWlnaHRVbmRlckxheWVyKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGxheWVyVG1wSGVpZ2h0ID0gJHRvdGFsSGVpZ2h0TGF5ZXIgLSAkbWluTGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcEhlaWdodCA9ICR0b3RhbEhlaWdodFVuZGVyTGF5ZXIgLSAkbWluTGF5ZXJQb3NpdGlvblk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wID0gbmV3IHN0YXRpYyhhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIndpZHRoIiA9PiAkbGF5ZXJUbXBXaWR0aCwNCiAgICAgICAgICAgICAgICAgICAgImhlaWdodCIgPT4gJGxheWVyVG1wSGVpZ2h0LA0KICAgICAgICAgICAgICAgICkpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkdW5kZXJMYXllciwgJHVuZGVyTGF5ZXJQb3NpdGlvblggLSAkbWluTGF5ZXJQb3NpdGlvblgsICR1bmRlckxheWVyUG9zaXRpb25ZIC0gJG1pbkxheWVyUG9zaXRpb25ZKTsNCiAgICAgICAgICAgICAgICAkbGF5ZXJUbXAtPmFkZExheWVyKDIsICRsYXllciwgJGxheWVyUG9zaXRpb25YIC0gJG1pbkxheWVyUG9zaXRpb25YLCAkbGF5ZXJQb3NpdGlvblkgLSAkbWluTGF5ZXJQb3NpdGlvblkpOw0KDQogICAgICAgICAgICAgICAgLy8gVXBkYXRlIGxheWVycw0KICAgICAgICAgICAgICAgICRsYXllclRtcC0+bWVyZ2VBbGwoKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJHVuZGVyTGF5ZXJJZF0gPSBjbG9uZSAkbGF5ZXJUbXA7DQogICAgICAgICAgICAgICAgJHRoaXMtPmNoYW5nZVBvc2l0aW9uKCR1bmRlckxheWVySWQsICRtaW5MYXllclBvc2l0aW9uWCwgJG1pbkxheWVyUG9zaXRpb25YKTsNCg0KICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICRsYXllclRtcCA9IG5ldyBzdGF0aWMoYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICJpbWFnZVZhciIgPT4gJHRoaXMtPmltYWdlLA0KICAgICAgICAgICAgICAgICkpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkbGF5ZXIsICRsYXllclBvc2l0aW9uWCwgJGxheWVyUG9zaXRpb25ZKTsNCg0KICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBiYWNrZ3JvdW5kIGltYWdlDQogICAgICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJGxheWVyVG1wLT5nZXRSZXN1bHQoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdW5zZXQoJGxheWVyVG1wKTsNCg0KICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBtZXJnZWQgbGF5ZXIgZnJvbSB0aGUgc3RhY2sNCiAgICAgICAgICAgICR0aGlzLT5yZW1vdmUoJGxheWVySWQpOw0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNZXJnZSBzdWJsYXllcnMgaW4gdGhlIHN0YWNrIG9uIHRoZSBsYXllciBiYWNrZ3JvdW5kDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlQWxsKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICR0aGlzLT5nZXRSZXN1bHQoKTsNCiAgICAgICAgJHRoaXMtPmNsZWFyU3RhY2soKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNb3ZlIGEgc3VibGF5ZXIgb24gdGhlIHRvcCBvZiBhIGdyb3VwIHN0YWNrDQogICAgICogUmV0dXJuIG5ldyBzdWJsYXllciBsZXZlbCBpZiBzdWNjZXNzIG9yIGZhbHNlIG90aGVyd2lzZQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiBAcmV0dXJuIG1peGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVUb3AoJGxheWVySWQpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsLCBmYWxzZSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZSBhIHN1YmxheWVyIHRvIHRoZSBsZXZlbCAxIG9mIGEgZ3JvdXAgc3RhY2sNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsZXZlbA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlQm90dG9tKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5tb3ZlVG8oJGxheWVySWQsIDEsIHRydWUpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1vdmUgYSBzdWJsYXllciB0byB0aGUgbGV2ZWwgJGxldmVsIG9mIGEgZ3JvdXAgc3RhY2sNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQNCiAgICAgKg0KICAgICAqIFNldCAkaW5zZXJ0VW5kZXJUYXJnZXRlZExheWVyIHRydWUgaWYgeW91IHdhbnQgdG8gbW92ZSB0aGUgc3VibGF5ZXIgdW5kZXIgdGhlIG90aGVyIHN1YmxheWVyIGF0IHRoZSB0YXJnZXRlZCBsZXZlbCwNCiAgICAgKiBvciBmYWxzZSB0byBpbnNlcnQgaXQgb24gdGhlIHRvcCBvZiB0aGUgb3RoZXIgc3VibGF5ZXIgYXQgdGhlIHRhcmdldGVkIGxldmVsDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsZXZlbA0KICAgICAqIEBwYXJhbSBib29sZWFuICRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXINCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZVRvKCRsYXllcklkLCAkbGV2ZWwsICRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgLy8gaWYgdGhlIHN1YmxheWVyIGV4aXN0cyBpbiBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KDQogICAgICAgICAgICAkbGF5ZXJPbGRMZXZlbCA9ICR0aGlzLT5nZXRMYXllckxldmVsKCRsYXllcklkKTsNCg0KICAgICAgICAgICAgaWYgKCRsZXZlbCA8IDEpIHsNCiAgICAgICAgICAgICAgICAkbGV2ZWwgPSAxOw0KICAgICAgICAgICAgICAgICRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGxldmVsID4gJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsKSB7DQoNCiAgICAgICAgICAgICAgICAkbGV2ZWwgPSAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWw7DQogICAgICAgICAgICAgICAgJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllciA9IGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBOb3QgdGhlIHNhbWUgbGV2ZWwgdGhhbiB0aGUgY3VycmVudCBsZXZlbA0KICAgICAgICAgICAgaWYgKCRsYXllck9sZExldmVsICE9ICRsZXZlbCkgew0KDQogICAgICAgICAgICAgICAgJGlzVW5kZXJBbmROZXdMZXZlbEhpZ2hlciA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICRpc1VuZGVyQW5kTmV3TGV2ZWxMb3dlciA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICRpc09uVG9wQW5kTmV3TGV2ZWxIaWdoZXIgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAkaXNPblRvcEFuZE5ld0xldmVsTG93ZXIgPSBmYWxzZTsNCg0KICAgICAgICAgICAgICAgIGlmICgkaW5zZXJ0VW5kZXJUYXJnZXRlZExheWVyKSB7IC8vIFVuZGVyIGxldmVsDQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRsZXZlbCA+ICRsYXllck9sZExldmVsKSB7IC8vIG5ldyBsZXZlbCBoaWdoZXINCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGluY3JlbWVudG9yU3RhcnRpbmdWYWx1ZSA9ICRsYXllck9sZExldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3BMb29wV2hlblNtYWxsZXJUaGFuID0gJGxldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGlzVW5kZXJBbmROZXdMZXZlbEhpZ2hlciA9IHRydWU7DQoNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gbmV3IGxldmVsIGxvd2VyDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbmNyZW1lbnRvclN0YXJ0aW5nVmFsdWUgPSAkbGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcExvb3BXaGVuU21hbGxlclRoYW4gPSAkbGF5ZXJPbGRMZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpc1VuZGVyQW5kTmV3TGV2ZWxMb3dlciA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG9uIHRoZSB0b3ANCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJGxldmVsID4gJGxheWVyT2xkTGV2ZWwpIHsgLy8gbmV3IGxldmVsIGhpZ2hlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlID0gJGxheWVyT2xkTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcExvb3BXaGVuU21hbGxlclRoYW4gPSAkbGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkaXNPblRvcEFuZE5ld0xldmVsSGlnaGVyID0gdHJ1ZTsNCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBuZXcgbGV2ZWwgbG93ZXINCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGluY3JlbWVudG9yU3RhcnRpbmdWYWx1ZSA9ICRsZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbiA9ICRsYXllck9sZExldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGlzT25Ub3BBbmROZXdMZXZlbExvd2VyID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGtzb3J0KCR0aGlzLT5sYXllckxldmVscyk7DQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWxzVG1wID0gJHRoaXMtPmxheWVyTGV2ZWxzOw0KDQogICAgICAgICAgICAgICAgaWYgKCRpc09uVG9wQW5kTmV3TGV2ZWxMb3dlcikgew0KICAgICAgICAgICAgICAgICAgICAkbGV2ZWwrKzsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gJGluY3JlbWVudG9yU3RhcnRpbmdWYWx1ZTsgJGkgPCAkc3RvcExvb3BXaGVuU21hbGxlclRoYW47ICRpKyspIHsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJGlzVW5kZXJBbmROZXdMZXZlbEhpZ2hlciB8fCAkaXNPblRvcEFuZE5ld0xldmVsSGlnaGVyKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skaV0gPSAkbGF5ZXJMZXZlbHNUbXBbJGkgKyAxXTsNCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJMZXZlbHNbJGkgKyAxXSA9ICRsYXllckxldmVsc1RtcFskaV07DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICB1bnNldCgkbGF5ZXJMZXZlbHNUbXApOw0KDQogICAgICAgICAgICAgICAgaWYgKCRpc1VuZGVyQW5kTmV3TGV2ZWxIaWdoZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgJGxldmVsLS07DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRsZXZlbF0gPSAkbGF5ZXJJZDsNCg0KICAgICAgICAgICAgICAgIHJldHVybiAkbGV2ZWw7DQoNCiAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gJGxldmVsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1vdmUgdXAgYSBzdWJsYXllciBpbiB0aGUgc3RhY2sgKGxldmVsICsxKQ0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVXAoJGxheWVySWQpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KDQogICAgICAgICAgICAkbGF5ZXJPbGRMZXZlbCA9ICR0aGlzLT5nZXRMYXllckxldmVsKCRsYXllcklkKTsNCg0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tb3ZlVG8oJGxheWVySWQsICRsYXllck9sZExldmVsICsgMSwgZmFsc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1vdmUgZG93biBhIHN1YmxheWVyIGluIHRoZSBzdGFjayAobGV2ZWwgLTEpDQogICAgICogUmV0dXJuIG5ldyBzdWJsYXllciBsZXZlbCBpZiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVEb3duKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgLy8gaWYgdGhlIHN1YmxheWVyIGV4aXN0cyBpbiB0aGUgc3RhY2sNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCg0KICAgICAgICAgICAgJGxheWVyT2xkTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQoNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bW92ZVRvKCRsYXllcklkLCAkbGF5ZXJPbGRMZXZlbCAtIDEsIHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlbGV0ZSBhIGxheWVyIChyZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzLCBmYWxzZSBpZiBubyBzdWJsYXllciBpcyBmb3VuZCkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgLy8gaWYgdGhlIGxheWVyIGV4aXN0cyBpbiBkb2N1bWVudA0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KDQogICAgICAgICAgICAkbGF5ZXJUb0RlbGV0ZUxldmVsID0gJHRoaXMtPmdldExheWVyTGV2ZWwoJGxheWVySWQpOw0KDQogICAgICAgICAgICAvLyBkZWxldGUNCiAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5kZWxldGUoKTsNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllcnNbJGxheWVySWRdKTsNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllckxldmVsc1skbGF5ZXJUb0RlbGV0ZUxldmVsXSk7DQogICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdKTsNCg0KICAgICAgICAgICAgLy8gT25lIG9yIHBsdXJhbCBsYXllcnMgYXJlIHN1YiBvZiB0aGUgZGVsZXRlZCBsYXllcg0KICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoKCRsYXllclRvRGVsZXRlTGV2ZWwgKyAxKSwgJHRoaXMtPmxheWVyTGV2ZWxzKSkgew0KDQogICAgICAgICAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCg0KICAgICAgICAgICAgICAgICRsYXllckxldmVsc1RtcCA9ICR0aGlzLT5sYXllckxldmVsczsNCg0KICAgICAgICAgICAgICAgICRtYXhPbGRlc3RMZXZlbCA9IDE7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxheWVyTGV2ZWxzVG1wIGFzICRsZXZlbFRtcCA9PiAkbGF5ZXJJZFRtcCkgew0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkbGV2ZWxUbXAgPiAkbGF5ZXJUb0RlbGV0ZUxldmVsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJMZXZlbHNbKCRsZXZlbFRtcCAtIDEpXSA9ICRsYXllcklkVG1wOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgJG1heE9sZGVzdExldmVsKys7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHVuc2V0KCRsYXllckxldmVsc1RtcCk7DQogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzWyRtYXhPbGRlc3RMZXZlbF0pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwtLTsNCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0IHRoZSBsZXZlbCBvZiBhIHN1YmxheWVyDQogICAgICogUmV0dXJuIHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyTGV2ZWwoJGxheWVySWQpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgbGF5ZXIgZXhpc3RzIGluIGRvY3VtZW50DQogICAgICAgIGlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7DQogICAgICAgICAgICByZXR1cm4gYXJyYXlfc2VhcmNoKCRsYXllcklkLCAkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENoZWNrIGlmIGEgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjayBmb3IgYSBnaXZlbiBpZA0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0xheWVySW5JbmRleCgkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIC8vIGlmIHRoZSBsYXllciBleGlzdHMgaW4gZG9jdW1lbnQNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGxheWVySWQsICR0aGlzLT5sYXllcnMpKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZW5lcmF0ZSBhIG5ldyBpbWFnZSByZXNvdXJjZSB2YXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb2xvcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRvcGFjaXR5DQogICAgICoNCiAgICAgKiBAcmV0dXJuIHJlc291cmNlDQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUltYWdlKCR3aWR0aCA9IDEwMCwgJGhlaWdodCA9IDEwMCwgJGNvbG9yID0gImZmZmZmZiIsICRvcGFjaXR5ID0gMTI3KQ0KICAgIHsNCiAgICAgICAgJFJHQkNvbG9ycyA9IHN0YXRpYzo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQoNCiAgICAgICAgJGltYWdlID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHdpZHRoLCAkaGVpZ2h0KTsNCiAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJGltYWdlLCB0cnVlKTsNCiAgICAgICAgJGNvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJGltYWdlLCAkUkdCQ29sb3JzWyJSIl0sICRSR0JDb2xvcnNbIkciXSwgJFJHQkNvbG9yc1siQiJdLCAkb3BhY2l0eSk7DQogICAgICAgIGltYWdlZmlsbCgkaW1hZ2UsIDAsIDAsICRjb2xvcik7DQoNCiAgICAgICAgcmV0dXJuICRpbWFnZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdIZWlnaHQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqIA0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqIA0KICAgICAqICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbiBjYW4gYmUgaWdub3JlZCB1bmxlc3MgeW91IGNob29zZSBhIG5ldyB3aWR0aCBBTkQgYSBuZXcgaGVpZ2h0IEFORCB0byBjb25zZXJ2ZSBwcm9wb3J0aW9uLg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVJblBpeGVsKCRuZXdXaWR0aCA9IG51bGwsICRuZXdIZWlnaHQgPSBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gJ01NJykNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemUoJ3BpeGVsJywgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgc3BlY2lmeWluZyBhIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplSW5QZXJjZW50KCRwZXJjZW50V2lkdGggPSBudWxsLCAkcGVyY2VudEhlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZShzZWxmOjpVTklUX1BFUkNFTlQsICRwZXJjZW50V2lkdGgsICRwZXJjZW50SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0IFVzZSBvbmUgb2YgYFVOSVRfKmAgY29uc3RhbnRzLCAiVU5JVF9QSVhFTCIgYnkgZGVmYXVsdA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJG5ld1dpZHRoID0gbnVsbCwgJG5ld0hlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgaWYgKCRuZXdXaWR0aCB8fCAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAkbmV3V2lkdGggPSByb3VuZCgoJG5ld1dpZHRoIC8gMTAwKSAqICR0aGlzLT53aWR0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICgkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAkbmV3SGVpZ2h0ID0gcm91bmQoKCRuZXdIZWlnaHQgLyAxMDApICogJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgICAgIGlmICgkY29udmVyc2VQcm9wb3J0aW9uKSB7IC8vIFByb3BvcnRpb24gYXJlIGNvbnNlcnZlZA0KDQogICAgICAgICAgICAgICAgaWYgKCRuZXdXaWR0aCAmJiAkbmV3SGVpZ2h0KSB7IC8vIFByb3BvcnRpb25zICsgJG5ld1dpZHRoICsgJG5ld0hlaWdodA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5nZXRXaWR0aCgpID4gJHRoaXMtPmdldEhlaWdodCgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdXaWR0aCwgbnVsbCwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0SGVpZ2h0KCkgPiAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc2l6ZUluUGl4ZWwobnVsbCwgJG5ld0hlaWdodCwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc2l6ZUluUGl4ZWwobnVsbCwgJG5ld0hlaWdodCwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0V2lkdGgoKSA+ICRuZXdXaWR0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdXaWR0aCwgbnVsbCwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0V2lkdGgoKSAhPSAkbmV3V2lkdGggfHwgJHRoaXMtPmdldEhlaWdodCgpICE9ICRuZXdIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgJGxheWVyVG1wID0gbmV3IHN0YXRpYyhhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnID0+ICRuZXdXaWR0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyA9PiAkbmV3SGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICAgICAgKSk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXllclRtcC0+YWRkTGF5ZXIoMSwgJHRoaXMsIHJvdW5kKCRwb3NpdGlvblggKiAoJG5ld1dpZHRoIC8gMTAwKSksIHJvdW5kKCRwb3NpdGlvblkgKiAoJG5ld0hlaWdodCAvIDEwMCkpLCAkcG9zaXRpb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+d2lkdGggPSAkbGF5ZXJUbXAtPmdldFdpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJGxheWVyVG1wLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5pbWFnZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyUG9zaXRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllcnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJGxheWVyVG1wLT5nZXRJbWFnZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzID0gJGxheWVyVG1wLT5nZXRMYXllckxldmVscygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zID0gJGxheWVyVG1wLT5nZXRMYXllclBvc2l0aW9ucygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxheWVycyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkbGF5ZXJUbXApOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkbmV3V2lkdGgpIHsNCg0KICAgICAgICAgICAgICAgICAgICAkd2lkdGhSZXNpemVQZXJjZW50ID0gJG5ld1dpZHRoIC8gKCR0aGlzLT53aWR0aCAvIDEwMCk7DQoNCiAgICAgICAgICAgICAgICAgICAgJG5ld0hlaWdodCA9IHJvdW5kKCgkd2lkdGhSZXNpemVQZXJjZW50IC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0UmVzaXplUGVyY2VudCA9ICR3aWR0aFJlc2l6ZVBlcmNlbnQ7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJG5ld0hlaWdodCkgew0KDQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3V2lkdGggPSByb3VuZCgoJGhlaWdodFJlc2l6ZVBlcmNlbnQgLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRoZWlnaHRSZXNpemVQZXJjZW50Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCgkbmV3V2lkdGggJiYgISRuZXdIZWlnaHQpIHx8ICghJG5ld1dpZHRoICYmICRuZXdIZWlnaHQpKSB7IC8vIE5ldyB3aWR0aCBPUiBuZXcgaGVpZ2h0IGlzIGdpdmVuDQoNCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KDQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gMTAwOw0KICAgICAgICAgICAgICAgICAgICAkbmV3SGVpZ2h0ID0gJHRoaXMtPmhlaWdodDsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGhlaWdodFJlc2l6ZVBlcmNlbnQgPSAkbmV3SGVpZ2h0IC8gKCR0aGlzLT5oZWlnaHQgLyAxMDApOw0KDQogICAgICAgICAgICAgICAgICAgICR3aWR0aFJlc2l6ZVBlcmNlbnQgPSAxMDA7DQogICAgICAgICAgICAgICAgICAgICRuZXdXaWR0aCA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIH0gZWxzZSB7IC8vIE5ldyB3aWR0aCBBTkQgbmV3IGhlaWdodCBhcmUgZ2l2ZW4NCg0KICAgICAgICAgICAgICAgICR3aWR0aFJlc2l6ZVBlcmNlbnQgPSAkbmV3V2lkdGggLyAoJHRoaXMtPndpZHRoIC8gMTAwKTsNCg0KICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXllciBwb3NpdGlvbnMgaW4gdGhlIHN0YWNrDQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbikgew0KDQogICAgICAgICAgICAgICAgJG5ld1Bvc1ggPSByb3VuZCgoJHdpZHRoUmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneCddKTsNCiAgICAgICAgICAgICAgICAkbmV3UG9zWSA9IHJvdW5kKCgkaGVpZ2h0UmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneSddKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld1Bvc1gsICRuZXdQb3NZKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gUmVzaXplIGxheWVycyBpbiB0aGUgc3RhY2sNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCg0KICAgICAgICAgICAgICAgICRsYXllci0+cmVzaXplSW5QZXJjZW50KCR3aWR0aFJlc2l6ZVBlcmNlbnQsICRoZWlnaHRSZXNpemVQZXJjZW50KTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJzWyRrZXldID0gJGxheWVyOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBSZXNpemUgdGhlIGxheWVyDQoNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVCYWNrZ3JvdW5kKCRuZXdXaWR0aCwgJG5ld0hlaWdodCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBsYXJnZXN0IHNpZGUgYnkgc3BlY2lmeWluZyBwaXhlbA0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld0xhcmdlc3RTaWRlV2lkdGgNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBpeGVsKCRuZXdMYXJnZXN0U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UpDQogICAgew0KICAgICAgICAkdGhpcy0+cmVzaXplQnlMYXJnZXN0U2lkZSgncGl4ZWwnLCAkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbGFyZ2VzdCBzaWRlIGJ5IHNwZWNpZnlpbmcgcGVyY2VudA0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld0xhcmdlc3RTaWRlV2lkdGggcGVyY2VudA0KICAgICAqIEBwYXJhbSBib29sZWFuICRjb252ZXJzZVByb3BvcnRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlMYXJnZXN0U2lkZUluUGVyY2VudCgkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZUJ5TGFyZ2VzdFNpZGUoc2VsZjo6VU5JVF9QRVJDRU5ULCAkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbGFyZ2VzdCBzaWRlDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0DQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld0xhcmdlc3RTaWRlV2lkdGggcGVyY2VudA0KICAgICAqIEBwYXJhbSBib29sZWFuICRjb252ZXJzZVByb3BvcnRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlMYXJnZXN0U2lkZSgkdW5pdCA9IHNlbGY6OlVOSVRfUElYRUwsICRuZXdMYXJnZXN0U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UpDQogICAgew0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQoNCiAgICAgICAgICAgICRuZXdMYXJnZXN0U2lkZVdpZHRoID0gcm91bmQoKCRuZXdMYXJnZXN0U2lkZVdpZHRoIC8gMTAwKSAqICR0aGlzLT5nZXRMYXJnZXN0U2lkZVdpZHRoKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRXaWR0aCgpID4gJHRoaXMtPmdldEhlaWdodCgpKSB7DQoNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdMYXJnZXN0U2lkZVdpZHRoLCBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCg0KICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbChudWxsLCAkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBuYXJyb3cgc2lkZSBieSBzcGVjaWZ5aW5nIHBpeGVsDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbmV3TmFycm93U2lkZVdpZHRoDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeU5hcnJvd1NpZGVJblBpeGVsKCRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemVCeU5hcnJvd1NpZGUoJ3BpeGVsJywgJG5ld05hcnJvd1NpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbmFycm93IHNpZGUgYnkgc3BlY2lmeWluZyBwZXJjZW50DQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbmV3TmFycm93U2lkZVdpZHRoIHBlcmNlbnQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TmFycm93U2lkZUluUGVyY2VudCgkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UpDQogICAgew0KICAgICAgICAkdGhpcy0+cmVzaXplQnlOYXJyb3dTaWRlKHNlbGY6OlVOSVRfUEVSQ0VOVCwgJG5ld05hcnJvd1NpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbmFycm93IHNpZGUNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVuaXQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbmV3TmFycm93U2lkZVdpZHRoDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeU5hcnJvd1NpZGUoJHVuaXQgPSAicGl4ZWwiLCAkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UpDQogICAgew0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQoNCiAgICAgICAgICAgICRuZXdOYXJyb3dTaWRlV2lkdGggPSByb3VuZCgoJG5ld05hcnJvd1NpZGVXaWR0aCAvIDEwMCkgKiAkdGhpcy0+Z2V0TmFycm93U2lkZVdpZHRoKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRXaWR0aCgpIDwgJHRoaXMtPmdldEhlaWdodCgpKSB7DQoNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdOYXJyb3dTaWRlV2lkdGgsIG51bGwsICRjb252ZXJzZVByb3BvcnRpb24pOw0KDQogICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgZG9jdW1lbnQgYnkgc3BlY2lmeWluZyBwaXhlbHMNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3I6IGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKFRoZSBzY3JpcHQgd2lsbCBiZSBsb25nZXIgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BJblBpeGVsKCR3aWR0aCA9IDAsICRoZWlnaHQgPSAwLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICJMVCIsICRiYWNrZ3JvdW5kQ29sb3IgPSAiZmZmZmZmIikNCiAgICB7DQogICAgICAgICR0aGlzLT5jcm9wKCJwaXhlbCIsICR3aWR0aCwgJGhlaWdodCwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHBvc2l0aW9uLCAkYmFja2dyb3VuZENvbG9yKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDcm9wIHRoZSBkb2N1bWVudCBieSBzcGVjaWZ5aW5nIHBlcmNlbnQNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB0cmFuc3BhcmVudCAoYnV0IHNjcmlwdCBjb3VsZCBiZSBsb25nIHRvIGV4ZWN1dGUpDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBlcmNlbnRXaWR0aA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudEhlaWdodA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcG9zaXRpb25YUGVyY2VudA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcG9zaXRpb25ZUGVyY2VudA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BJblBlcmNlbnQoJHBlcmNlbnRXaWR0aCA9IDAsICRwZXJjZW50SGVpZ2h0ID0gMCwgJHBvc2l0aW9uWFBlcmNlbnQgPSAwLCAkcG9zaXRpb25ZUGVyY2VudCA9IDAsICRwb3NpdGlvbiA9ICJMVCIsICRiYWNrZ3JvdW5kQ29sb3IgPSAiZmZmZmZmIikNCiAgICB7DQogICAgICAgICR0aGlzLT5jcm9wKHNlbGY6OlVOSVRfUEVSQ0VOVCwgJHBlcmNlbnRXaWR0aCwgJHBlcmNlbnRIZWlnaHQsICRwb3NpdGlvblhQZXJjZW50LCAkcG9zaXRpb25ZUGVyY2VudCwgJHBvc2l0aW9uLCAkYmFja2dyb3VuZENvbG9yKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDcm9wIHRoZSBkb2N1bWVudA0KICAgICAqDQogICAgICogJGJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHRyYW5zcGFyZW50IChidXQgc2NyaXB0IGNvdWxkIGJlIGxvbmcgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVuaXQgVXNlIG9uZSBvZiBgVU5JVF8qYCBjb25zdGFudHMsICJVTklUX1BJWEVMIiBieSBkZWZhdWx0DQogICAgICogQHBhcmFtIGZsb2F0ICR3aWR0aA0KICAgICAqIEBwYXJhbSBmbG9hdCAkaGVpZ2h0DQogICAgICogQHBhcmFtIGZsb2F0ICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3AoJHVuaXQgPSBzZWxmOjpVTklUX1BJWEVMLCAkd2lkdGggPSAwLCAkaGVpZ2h0ID0gMCwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAiTFQiLCAkYmFja2dyb3VuZENvbG9yID0gImZmZmZmZiIpDQogICAgew0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQoNCiAgICAgICAgICAgICR3aWR0aCA9IHJvdW5kKCgkd2lkdGggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRoZWlnaHQgPSByb3VuZCgoJGhlaWdodCAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCg0KICAgICAgICAgICAgJHBvc2l0aW9uWCA9IHJvdW5kKCgkcG9zaXRpb25YIC8gMTAwKSAqICR0aGlzLT53aWR0aCk7DQogICAgICAgICAgICAkcG9zaXRpb25ZID0gcm91bmQoKCRwb3NpdGlvblkgLyAxMDApICogJHRoaXMtPmhlaWdodCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmICgoJHdpZHRoICE9ICR0aGlzLT53aWR0aCB8fCAkcG9zaXRpb25YID09IDApIHx8ICgkaGVpZ2h0ICE9ICR0aGlzLT5oZWlnaHQgfHwgJHBvc2l0aW9uWSA9PSAwKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICAkbGF5ZXJUbXAgPSBuZXcgc3RhdGljKGFycmF5KA0KICAgICAgICAgICAgICAgICd3aWR0aCcgPT4gJHdpZHRoLA0KICAgICAgICAgICAgICAgICdoZWlnaHQnID0+ICRoZWlnaHQsDQogICAgICAgICAgICAgICAgJ2JhY2tncm91bmRDb2xvcicgPT4gJGJhY2tncm91bmRDb2xvciwNCiAgICAgICAgICAgICkpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkbGF5ZXJDbG9uZSA9IG5ldyBzdGF0aWMoYXJyYXkoDQogICAgICAgICAgICAgICAgJ3dpZHRoJyA9PiAkdGhpcy0+d2lkdGgsDQogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gJHRoaXMtPmhlaWdodCwNCiAgICAgICAgICAgICkpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbWFnZWRlc3Ryb3koJGxheWVyQ2xvbmUtPmltYWdlKTsNCiAgICAgICAgICAgICRsYXllckNsb25lLT5pbWFnZSA9ICR0aGlzLT5pbWFnZTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkbGF5ZXJDbG9uZSwgLSRwb3NpdGlvblgsIC0kcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkbmV3UG9zID0gJGxheWVyVG1wLT5nZXRMYXllclBvc2l0aW9ucygpOw0KICAgICAgICAgICAgJGxheWVyTmV3UG9zWCA9ICRuZXdQb3NbMV1bJ3gnXTsNCiAgICAgICAgICAgICRsYXllck5ld1Bvc1kgPSAkbmV3UG9zWzFdWyd5J107DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbGF5ZXINCiAgICAgICAgICAgICR0aGlzLT53aWR0aCA9ICRsYXllclRtcC0+Z2V0V2lkdGgoKTsNCiAgICAgICAgICAgICR0aGlzLT5oZWlnaHQgPSAkbGF5ZXJUbXAtPmdldEhlaWdodCgpOw0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJGxheWVyVG1wLT5nZXRSZXN1bHQoKTsNCiAgICAgICAgICAgIHVuc2V0KCRsYXllclRtcCk7DQogICAgICAgICAgICB1bnNldCgkbGF5ZXJDbG9uZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgICR0aGlzLT51cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyQ3JvcHBpbmcoJGxheWVyTmV3UG9zWCwgJGxheWVyTmV3UG9zWSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDcm9wIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGZyb20gbGVmdCB0b3AgKCJMVCIpLCAiUlQiLi4uIGJ5IHNwZWNpZnlpbmcgYSBzaGlmdCBpbiBwaXhlbA0KICAgICAqDQogICAgICogJGJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHRyYW5zcGFyZW50IChidXQgc2NyaXB0IGNvdWxkIGJlIGxvbmcgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BNYXhpbXVtSW5QaXhlbCgkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICJMVCIsICRiYWNrZ3JvdW5kQ29sb3IgPSAiZmZmZmZmIikNCiAgICB7DQogICAgICAgICR0aGlzLT5jcm9wTWF4aW11bShzZWxmOjpVTklUX1BJWEVMLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24sICRiYWNrZ3JvdW5kQ29sb3IpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3AgdGhlIG1heGltdW0gcG9zc2libGUgZnJvbSBsZWZ0IHRvcCAoIkxUIiksICJSVCIuLi4gYnkgc3BlY2lmeWluZyBhIHNoaWZ0IGluIHBlcmNlbnQNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB0cmFuc3BhcmVudCAoYnV0IHNjcmlwdCBjb3VsZCBiZSBsb25nIHRvIGV4ZWN1dGUpDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWFBlcmNlbnQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZUGVyY2VudA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BNYXhpbXVtSW5QZXJjZW50KCRwb3NpdGlvblhQZXJjZW50ID0gMCwgJHBvc2l0aW9uWVBlcmNlbnQgPSAwLCAkcG9zaXRpb24gPSAiTFQiLCAkYmFja2dyb3VuZENvbG9yID0gImZmZmZmZiIpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JvcE1heGltdW0oc2VsZjo6VU5JVF9QRVJDRU5ULCAkcG9zaXRpb25YUGVyY2VudCwgJHBvc2l0aW9uWVBlcmNlbnQsICRwb3NpdGlvbiwgJGJhY2tncm91bmRDb2xvcik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wDQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BNYXhpbXVtKCR1bml0ID0gInBpeGVsIiwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAiTFQiLCAkYmFja2dyb3VuZENvbG9yID0gImZmZmZmZiIpDQogICAgew0KICAgICAgICAkbmFycm93U2lkZSA9ICR0aGlzLT5nZXROYXJyb3dTaWRlV2lkdGgoKTsNCiAgICAgICAgaWYgKCR1bml0ID09IHNlbGY6OlVOSVRfUEVSQ0VOVCkgew0KDQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5jcm9wSW5QaXhlbCgkbmFycm93U2lkZSwgJG5hcnJvd1NpZGUsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbiwgJGJhY2tncm91bmRDb2xvcik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUm90YXRlIGxheWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZWdyZWUNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcm90YXRlTGF5ZXIoJGxheWVySWQsICRkZWdyZWUpDQogICAgew0KICAgICAgICAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+cm90YXRlKCRkZWdyZWUpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJvdGF0ZSB0aGUgbGF5ZXIgKGluIGRlZ3JlZSkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkZGVncmVlcw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByb3RhdGUoJGRlZ3JlZXMpDQogICAgew0KICAgICAgICBpZiAoJGRlZ3JlZXMgIT0gMCkgew0KDQogICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPCAtMzYwIHx8ICRkZWdyZWVzID4gMzYwKSB7DQoNCiAgICAgICAgICAgICAgICAkZGVncmVlcyA9ICRkZWdyZWVzICUgMzYwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPCAwICYmICRkZWdyZWVzID49IC0zNjApIHsNCg0KICAgICAgICAgICAgICAgICRkZWdyZWVzID0gMzYwICsgJGRlZ3JlZXM7DQogICAgICAgICAgICB9DQoNCgkJCS8vIFJvdGF0ZSB0aGUgbGF5ZXIgYmFja2dyb3VuZCBpbWFnZQ0KICAgICAgICAgICAgJGltYWdlUm90YXRlZCA9IGltYWdlcm90YXRlKCR0aGlzLT5pbWFnZSwgLSRkZWdyZWVzLCAtMSk7DQogICAgICAgICAgICBpbWFnZWFscGhhYmxlbmRpbmcoJGltYWdlUm90YXRlZCwgdHJ1ZSk7DQogICAgICAgICAgICBpbWFnZXNhdmVhbHBoYSgkaW1hZ2VSb3RhdGVkLCB0cnVlKTsNCg0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCg0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJGltYWdlUm90YXRlZDsNCg0KICAgICAgICAgICAgJG9sZFdpZHRoID0gJHRoaXMtPndpZHRoOw0KICAgICAgICAgICAgJG9sZEhlaWdodCA9ICR0aGlzLT5oZWlnaHQ7DQoNCiAgICAgICAgICAgICR0aGlzLT53aWR0aCA9IGltYWdlc3goJHRoaXMtPmltYWdlKTsNCiAgICAgICAgICAgICR0aGlzLT5oZWlnaHQgPSBpbWFnZXN5KCR0aGlzLT5pbWFnZSk7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllcnMgYXMgJGxheWVySWQgPT4gJGxheWVyKSB7DQoNCiAgICAgICAgICAgICAgICAkbGF5ZXJTZWxmT2xkQ2VudGVyUG9zaXRpb24gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIngiID0+ICRsYXllci0+d2lkdGggLyAyLA0KICAgICAgICAgICAgICAgICAgICAieSIgPT4gJGxheWVyLT5oZWlnaHQgLyAyLA0KICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICAgICAgICAgICAkc21hbGxJbWFnZUNlbnRlciA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAieCIgPT4gJGxheWVyU2VsZk9sZENlbnRlclBvc2l0aW9uWyJ4Il0gKyAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyJ4Il0sDQogICAgICAgICAgICAgICAgICAgICJ5IiA9PiAkbGF5ZXJTZWxmT2xkQ2VudGVyUG9zaXRpb25bInkiXSArICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bInkiXSwNCiAgICAgICAgICAgICAgICApOw0KDQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPnJvdGF0ZSgkZGVncmVlcyk7DQoNCiAgICAgICAgICAgICAgICAkcm8gPSBzcXJ0KHBvdygkc21hbGxJbWFnZUNlbnRlclsieCJdLCAyKSArIHBvdygkc21hbGxJbWFnZUNlbnRlclsieSJdLCAyKSk7DQoNCiAgICAgICAgICAgICAgICAkdGV0YSA9IChhY29zKCRzbWFsbEltYWdlQ2VudGVyWyJ4Il0gLyAkcm8pKSAqIDE4MCAvIHBpKCk7DQoNCiAgICAgICAgICAgICAgICAkYSA9ICRybyAqIGNvcygoJHRldGEgKyAkZGVncmVlcykgKiBwaSgpIC8gMTgwKTsNCiAgICAgICAgICAgICAgICAkYiA9ICRybyAqIHNpbigoJHRldGEgKyAkZGVncmVlcykgKiBwaSgpIC8gMTgwKTsNCg0KICAgICAgICAgICAgICAgIGlmICgkZGVncmVlcyA+IDAgJiYgJGRlZ3JlZXMgPD0gOTApIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMikgKyAkb2xkSGVpZ2h0ICogc2luKCgkZGVncmVlcyAqIHBpKCkpIC8gMTgwKTsNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWSA9ICRiIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5oZWlnaHQgLyAyKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGVncmVlcyA+IDkwICYmICRkZWdyZWVzIDw9IDE4MCkgew0KDQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblggPSAkYSAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+d2lkdGggLyAyKSArICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWSA9ICRiIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5oZWlnaHQgLyAyKSArICRvbGRIZWlnaHQgKiAoLWNvcygoJGRlZ3JlZXMpICogcGkoKSAvIDE4MCkpOw0KDQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRkZWdyZWVzID4gMTgwICYmICRkZWdyZWVzIDw9IDI3MCkgew0KDQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblggPSAkYSAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+d2lkdGggLyAyKSArICRvbGRXaWR0aCAqICgtY29zKCgkZGVncmVlcykgKiBwaSgpIC8gMTgwKSk7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMikgKyAkdGhpcy0+aGVpZ2h0Ow0KDQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMik7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMikgKyAkb2xkV2lkdGggKiAoLXNpbigoJGRlZ3JlZXMpICogcGkoKSAvIDE4MCkpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF0gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgIngiID0+ICRuZXdQb3NpdGlvblgsDQogICAgICAgICAgICAgICAgICAgICJ5IiA9PiAkbmV3UG9zaXRpb25ZLA0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDaGFuZ2UgdGhlIG9wYWNpdHkgb2YgYSBsYXllcg0KICAgICAqICRyZWN1cnNpdmU6IGFwcGx5IGl0IG9uIHN1YmxheWVycw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkb3BhY2l0eQ0KICAgICAqIEBwYXJhbSBib29sZWFuICRyZWN1cnNpdmUNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbGF5ZXJPcGFjaXR5KCRsYXllcklkLCAkb3BhY2l0eSwgJHJlY3Vyc2l2ZSA9IHRydWUpDQogICAgew0KICAgICAgICAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+b3BhY2l0eSgkb3BhY2l0eSwgJHJlY3Vyc2l2ZSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2hhbmdlIHRoZSBvcGFjaXR5IG9mIHRoZSBsYXllcg0KICAgICAqICRyZWN1cnNpdmU6IGFwcGx5IGl0IG9uIHN1YmxheWVycw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG9wYWNpdHkNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkcmVjdXJzaXZlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG9wYWNpdHkoJG9wYWNpdHksICRyZWN1cnNpdmUgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCRyZWN1cnNpdmUpIHsNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCg0KICAgICAgICAgICAgICAgICRsYXllci0+b3BhY2l0eSgkb3BhY2l0eSwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyc1ska2V5XSA9ICRsYXllcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICR0cmFuc3BhcmVudEltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT5nZXRXaWR0aCgpLCAkdGhpcy0+Z2V0SGVpZ2h0KCkpOw0KDQogICAgICAgIHN0YXRpYzo6aW1hZ2Vjb3B5bWVyZ2VhbHBoYSgkdHJhbnNwYXJlbnRJbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwLCAkdGhpcy0+Z2V0V2lkdGgoKSwgJHRoaXMtPmdldEhlaWdodCgpLCAkb3BhY2l0eSk7DQoNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJHRyYW5zcGFyZW50SW1hZ2U7DQogICAgICAgIHVuc2V0KCR0cmFuc3BhcmVudEltYWdlKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYSB0ZXh0IG9uIHRoZSBiYWNrZ3JvdW5kIGltYWdlIG9mIHRoZSBsYXllciB1c2luZyBhIGRlZmF1bHQgZm9udCByZWdpc3RlcmVkIGluIEdEDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0DQogICAgICogQHBhcmFtIGludGVnZXIgJGZvbnQNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb2xvcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkYWxpZ24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGVUZXh0KCR0ZXh0LCAkZm9udCA9IDEsICRjb2xvciA9ICJmZmZmZmYiLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRhbGlnbiA9ICJob3Jpem9udGFsIikNCiAgICB7DQogICAgICAgICRSR0JUZXh0Q29sb3IgPSBzdGF0aWM6OmNvbnZlcnRIZXhUb1JHQigkY29sb3IpOw0KICAgICAgICAkdGV4dENvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5pbWFnZSwgJFJHQlRleHRDb2xvclsiUiJdLCAkUkdCVGV4dENvbG9yWyJHIl0sICRSR0JUZXh0Q29sb3JbIkIiXSk7DQoNCiAgICAgICAgaWYgKCRhbGlnbiA9PSAiaG9yaXpvbnRhbCIpIHsNCg0KICAgICAgICAgICAgaW1hZ2VzdHJpbmcoJHRoaXMtPmltYWdlLCAkZm9udCwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHRleHQsICR0ZXh0Q29sb3IpOw0KDQogICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgIGltYWdlc3RyaW5ndXAoJHRoaXMtPmltYWdlLCAkZm9udCwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHRleHQsICR0ZXh0Q29sb3IpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIGEgdGV4dCBvbiB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiB0aGUgbGF5ZXIgdXNpbmcgYSBmb250IGxvY2FsaXplZCBhdCAkZm9udFBhdGgNCiAgICAgKiBSZXR1cm4gdGhlIHRleHQgY29vcmRvbmF0ZXMNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFBhdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFNpemUNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb2xvcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIGludGVnZXIgJGZvbnRSb3RhdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkdGV4dCwgJGZvbnRQYXRoLCAkZm9udFNpemUgPSAxMywgJGNvbG9yID0gImZmZmZmZiIsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJGZvbnRSb3RhdGlvbiA9IDApDQogICAgew0KICAgICAgICAkUkdCVGV4dENvbG9yID0gc3RhdGljOjpjb252ZXJ0SGV4VG9SR0IoJGNvbG9yKTsNCiAgICAgICAgJHRleHRDb2xvciA9IGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW1hZ2UsICRSR0JUZXh0Q29sb3JbIlIiXSwgJFJHQlRleHRDb2xvclsiRyJdLCAkUkdCVGV4dENvbG9yWyJCIl0pOw0KDQogICAgICAgIHJldHVybiBpbWFnZXR0ZnRleHQoJHRoaXMtPmltYWdlLCAkZm9udFNpemUsICRmb250Um90YXRpb24sICRwb3NpdGlvblgsICRwb3NpdGlvblksICR0ZXh0Q29sb3IsICRmb250UGF0aCwgJHRleHQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybiBhIG1lcmdlZCByZXNvdXJjZSBpbWFnZQ0KICAgICAqDQogICAgICogJGJhY2tncm91bmRDb2xvciBpcyByZWFsbHkgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBzYXZlIGEgSlBHIG9yIEdJRiwgYmVjYXVzZSB0aGUgdHJhbnNwYXJlbmN5IG9mIHRoZSBiYWNrZ3JvdW5kDQogICAgICogd291bGQgYmUgcmVtb3ZlIGZvciBhIGNvbG9yZWQgYmFja2dyb3VuZCwgc28geW91IHNob3VsZCBjaG9vc2UgYSBjb2xvciBsaWtlICJmZmZmZmYiICh3aGl0ZSkNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGJhY2tncm91bmRDb2xvcg0KICAgICAqDQogICAgICogQHJldHVybiByZXNvdXJjZQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXN1bHQoJGJhY2tncm91bmRDb2xvciA9IG51bGwpDQogICAgew0KICAgICAgICAkaW1hZ2VzVG9NZXJnZSA9IGFycmF5KCk7DQoNCiAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCg0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGF5ZXJMZXZlbHMgYXMgJGxheWVyTGV2ZWwgPT4gJGxheWVySWQpIHsNCg0KICAgICAgICAgICAgJGltYWdlc1RvTWVyZ2VbJGxheWVyTGV2ZWxdID0gJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmdldFJlc3VsdCgpOw0KDQogICAgICAgICAgICAvLyBMYXllciBwb3NpdGlvbnMNCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyJ4Il0gIT0gMCB8fCAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyJ5Il0gIT0gMCkgew0KDQogICAgICAgICAgICAgICAgJHZpcmdpbkxheW91dEltYWdlVG1wID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAgICAgc3RhdGljOjptZXJnZVR3b0ltYWdlcygkdmlyZ2luTGF5b3V0SW1hZ2VUbXAsICRpbWFnZXNUb01lcmdlWyRsYXllckxldmVsXSwgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsieCJdLCAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyJ5Il0sIDAsIDApOw0KICAgICAgICAgICAgICAgICRpbWFnZXNUb01lcmdlWyRsYXllckxldmVsXSA9ICR2aXJnaW5MYXlvdXRJbWFnZVRtcDsNCiAgICAgICAgICAgICAgICB1bnNldCgkdmlyZ2luTGF5b3V0SW1hZ2VUbXApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJGl0ZXJhdG9yID0gMTsNCiAgICAgICAgJG1lcmdlZEltYWdlID0gJHRoaXMtPmltYWdlOw0KICAgICAgICBrc29ydCgkaW1hZ2VzVG9NZXJnZSk7DQoNCiAgICAgICAgZm9yZWFjaCAoJGltYWdlc1RvTWVyZ2UgYXMgJGltYWdlTGV2ZWwgPT4gJGltYWdlKSB7DQoNCiAgICAgICAgICAgIHN0YXRpYzo6bWVyZ2VUd29JbWFnZXMoJG1lcmdlZEltYWdlLCAkaW1hZ2UpOw0KDQogICAgICAgICAgICAkaXRlcmF0b3IrKzsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJG9wYWNpdHkgPSAxMjc7DQogICAgICAgIA0KICAgICAgICBpZiAoJGJhY2tncm91bmRDb2xvciAmJiAkYmFja2dyb3VuZENvbG9yICE9ICd0cmFuc3BhcmVudCcpIHsNCiAgICAgICAgICAgICRvcGFjaXR5ID0gMDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJGJhY2tncm91bmRJbWFnZSA9IHN0YXRpYzo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRiYWNrZ3JvdW5kQ29sb3IsICRvcGFjaXR5KTsNCiAgICAgICAgc3RhdGljOjptZXJnZVR3b0ltYWdlcygkYmFja2dyb3VuZEltYWdlLCAkbWVyZ2VkSW1hZ2UpOw0KICAgICAgICAkbWVyZ2VkSW1hZ2UgPSAkYmFja2dyb3VuZEltYWdlOw0KICAgICAgICB1bnNldCgkYmFja2dyb3VuZEltYWdlKTsNCg0KICAgICAgICByZXR1cm4gJG1lcmdlZEltYWdlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNhdmUgdGhlIHJlc3VsdGluZyBpbWFnZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGgNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgaXMgcmVhbGx5IHVzZWZ1bGwgaWYgeW91IHdhbnQgdG8gc2F2ZSBhIEpQRyBvciBHSUYsIGJlY2F1c2UgdGhlIHRyYW5zcGFyZW5jeSBvZiB0aGUgYmFja2dyb3VuZA0KICAgICAqIHdvdWxkIGJlIHJlbW92ZSBmb3IgYSBjb2xvcmVkIGJhY2tncm91bmQsIHNvIHlvdSBzaG91bGQgY2hvb3NlIGEgY29sb3IgbGlrZSAiZmZmZmZmIiAod2hpdGUpDQogICAgICoNCiAgICAgKiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSBvdmVycmlkZSAhDQogICAgICoNCiAgICAgKiAkaW1hZ2VRdWFsaXR5IGlzIHVzZWxlc3MgZm9yIEdJRg0KICAgICAqDQogICAgICogRXg6ICRmb2xkZXIgPSBfX0RJUl9fLiIvLi4vd2ViL2ltYWdlcy8yMDEyIg0KICAgICAqICAgICAkaW1hZ2VOYW1lID0gImJ1dHRlcmZseS5qcGciDQogICAgICogICAgICRjcmVhdGVGb2xkZXJzID0gdHJ1ZQ0KICAgICAqICAgICAkaW1hZ2VRdWFsaXR5ID0gOTUNCiAgICAgKiAgICAgJGJhY2tncm91bmRDb2xvciA9ICJmZmZmZmYiDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb2xkZXINCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbWFnZU5hbWUNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY3JlYXRlRm9sZGVycw0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGJhY2tncm91bmRDb2xvcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRpbWFnZVF1YWxpdHkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkZm9sZGVyLCAkaW1hZ2VOYW1lLCAkY3JlYXRlRm9sZGVycyA9IHRydWUsICRiYWNrZ3JvdW5kQ29sb3IgPSBudWxsLCAkaW1hZ2VRdWFsaXR5ID0gNzUpDQogICAgew0KICAgICAgICBpZiAoIWlzX2ZpbGUoJGZvbGRlcikpIHsNCg0KICAgICAgICAgICAgaWYgKGlzX2RpcigkZm9sZGVyKSB8fCAkY3JlYXRlRm9sZGVycykgew0KDQogICAgICAgICAgICAgICAgLy8gQ3JlYXRpbmcgdGhlIGZvbGRlcnMgaWYgdGhleSBkb24ndCBleGlzdA0KICAgICAgICAgICAgICAgIGlmICghaXNfZGlyKCRmb2xkZXIpICYmICRjcmVhdGVGb2xkZXJzKSB7DQogICAgICAgICAgICAgICAgICAgICRvbGRVbWFzayA9IHVtYXNrKDApOw0KICAgICAgICAgICAgICAgICAgICBta2RpcigkZm9sZGVyLCAwNzc3LCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgdW1hc2soJG9sZFVtYXNrKTsNCiAgICAgICAgICAgICAgICAgICAgY2htb2QoJGZvbGRlciwgMDc3Nyk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9IGV4cGxvZGUoIi4iLCAkaW1hZ2VOYW1lKTsNCiAgICAgICAgICAgICAgICAkZXh0ZW5zaW9uID0gc3RydG9sb3dlcigkZXh0ZW5zaW9uW2NvdW50KCRleHRlbnNpb24pIC0gMV0pOw0KDQogICAgICAgICAgICAgICAgJGZpbGVuYW1lID0gJGZvbGRlci4iLyIuJGltYWdlTmFtZTsNCg0KICAgICAgICAgICAgICAgIGlmICgoJGV4dGVuc2lvbiA9PSAianBnIiB8fCAkZXh0ZW5zaW9uID09ICJqcGVnIiB8fCAkZXh0ZW5zaW9uID09ICJnaWYiKSAmJiAoISRiYWNrZ3JvdW5kQ29sb3IgfHwgJGJhY2tncm91bmRDb2xvciA9PSAidHJhbnNwYXJlbnQiKSkgew0KICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZENvbG9yID0gImZmZmZmZiI7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGltYWdlID0gJHRoaXMtPmdldFJlc3VsdCgkYmFja2dyb3VuZENvbG9yKTsNCg0KICAgICAgICAgICAgICAgIGlmICgkZXh0ZW5zaW9uID09ICJqcGciIHx8ICRleHRlbnNpb24gPT0gImpwZWciKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VqcGVnKCRpbWFnZSwgJGZpbGVuYW1lLCAkaW1hZ2VRdWFsaXR5KTsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGltYWdlKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZXh0ZW5zaW9uID09ICJnaWYiKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VnaWYoJGltYWdlLCAkZmlsZW5hbWUpOw0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkaW1hZ2UpOw0KDQogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRleHRlbnNpb24gPT0gInBuZyIpIHsNCg0KICAgICAgICAgICAgICAgICAgICAkaW1hZ2VRdWFsaXR5ID0gJGltYWdlUXVhbGl0eSAvIDEwOw0KICAgICAgICAgICAgICAgICAgICAkaW1hZ2VRdWFsaXR5IC09IDE7DQoNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VwbmcoJGltYWdlLCAkZmlsZW5hbWUsICRpbWFnZVF1YWxpdHkpOw0KICAgICAgICAgICAgICAgICAgICB1bnNldCgkaW1hZ2UpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFwcGx5IGEgZmlsdGVyIG9uIHRoZSBsYXllcg0KICAgICAqIEJlIGNhcmVmdWw6IHNvbWUgZmlsdGVycyBjYW4gZGFtYWdlIHRyYW5zcGFyZW50IGltYWdlcywgdXNlIGl0IHNwYXJpbmdseSAhIChBIGdvb2QgcHJhdGljZSBpcyB0byB1c2UgbWVyZ2VBbGwgb24geW91ciBsYXllciBiZWZvcmUgYXBwbHlpbmcgYSBmaWx0ZXIpDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ICRmaWx0ZXJUeXBlIChodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmltYWdlZmlsdGVyLnBocCkNCiAgICAgKiBAcGFyYW0gaW50ICRhcmcxDQogICAgICogQHBhcmFtIGludCAkYXJnMg0KICAgICAqIEBwYXJhbSBpbnQgJGFyZzMNCiAgICAgKiBAcGFyYW0gaW50ICRhcmc0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJHJlY3Vyc2l2ZQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBseUZpbHRlcigkZmlsdGVyVHlwZSwgJGFyZzEgPSBudWxsLCAkYXJnMiA9IG51bGwsICRhcmczID0gbnVsbCwgJGFyZzQgPSBudWxsLCAkcmVjdXJzaXZlID0gZmFsc2UpDQogICAgew0KICAgICAgICBpZiAoJGZpbHRlclR5cGUgPT0gSU1HX0ZJTFRFUl9DT0xPUklaRSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2UsICRmaWx0ZXJUeXBlLCAkYXJnMSwgJGFyZzIsICRhcmczLCAkYXJnNCk7DQogICAgICAgICAgICANCiAgICAgICAgfSBlbHNlaWYgKCRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfQlJJR0hUTkVTUyB8fCAkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX0NPTlRSQVNUIHx8ICRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfU01PT1RIKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZSwgJGZpbHRlclR5cGUsICRhcmcxKTsNCiAgICAgICAgDQogICAgICAgIH0gZWxzZWlmICgkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX1BJWEVMQVRFKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZSwgJGZpbHRlclR5cGUsICRhcmcxLCAkYXJnMik7DQogICAgICAgICAgICANCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlLCAkZmlsdGVyVHlwZSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHJlY3Vyc2l2ZSkgew0KDQogICAgICAgICAgICAkbGF5ZXJzID0gJHRoaXMtPmxheWVyczsNCg0KICAgICAgICAgICAgZm9yZWFjaCgkbGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmFwcGx5RmlsdGVyKCRmaWx0ZXJUeXBlLCAkYXJnMSwgJGFyZzIsICRhcmczLCAkYXJnNCwgdHJ1ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm4gdGhlIG5hcnJvdyBzaWRlIHdpZHRoIG9mIHRoZSBsYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hcnJvd1NpZGVXaWR0aCgpDQogICAgew0KICAgICAgICAkbmFycm93U2lkZVdpZHRoID0gJHRoaXMtPmdldFdpZHRoKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRIZWlnaHQoKSA8ICRuYXJyb3dTaWRlV2lkdGgpIHsNCg0KICAgICAgICAgICAgJG5hcnJvd1NpZGVXaWR0aCA9ICR0aGlzLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkbmFycm93U2lkZVdpZHRoOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJldHVybiB0aGUgbGFyZ2VzdCBzaWRlIHdpZHRoIG9mIHRoZSBsYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExhcmdlc3RTaWRlV2lkdGgoKQ0KICAgIHsNCiAgICAgICAgJGxhcmdlc3RTaWRlV2lkdGggPSAkdGhpcy0+Z2V0V2lkdGgoKTsNCg0KICAgICAgICBpZiAoJHRoaXMtPmdldEhlaWdodCgpID4gJGxhcmdlc3RTaWRlV2lkdGgpIHsNCg0KICAgICAgICAgICAgJGxhcmdlc3RTaWRlV2lkdGggPSAkdGhpcy0+Z2V0SGVpZ2h0KCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGxhcmdlc3RTaWRlV2lkdGg7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIENoYW5nZSB0aGUgcG9zaXRpb24gb2YgYSBzdWJsYXllciBmb3IgbmV3IHBvc2l0aW9ucw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbmV3UG9zWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdQb3NZDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hhbmdlUG9zaXRpb24oJGxheWVySWQsICRuZXdQb3NYID0gbnVsbCwgJG5ld1Bvc1kgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgLy8gaWYgdGhlIHN1YmxheWVyIGV4aXN0cyBpbiB0aGUgc3RhY2sNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKCRuZXdQb3NYICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneCddID0gJG5ld1Bvc1g7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkbmV3UG9zWSAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSA9ICRuZXdQb3NZOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogQXBwbHkgYSB0cmFuc2xhdGlvbiBvbiBhIHN1YmxheWVyIHRoYXQgY2hhbmdlIGl0cyBwb3NpdGlvbnMNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogQHBhcmFtIGludGVnZXIgJGFkZGVkUG9zWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRhZGRlZFBvc1kNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQgKGFycmF5IG9mIG5ldyBwb3NpdGlvbnMgb3IgZmFsc2UgaWYgZmFpbCkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbigkbGF5ZXJJZCwgJGFkZGVkUG9zWCA9IG51bGwsICRhZGRlZFBvc1kgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgLy8gaWYgdGhlIHN1YmxheWVyIGV4aXN0cyBpbiB0aGUgc3RhY2sNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKCRhZGRlZFBvc1ggIT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd4J10gKz0gJGFkZGVkUG9zWDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKCRhZGRlZFBvc1kgIT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd5J10gKz0gJGFkZGVkUG9zWTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF07DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIEFwcGx5IGhvcml6b250YWwgb3IgdmVydGljYWwgZmxpcC4gKFRyYW5zZm9ybWF0aW9uKQ0KICAgICAqIA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZmxpcCgkdHlwZSA9ICdob3Jpem9udGFsJykNCiAgICB7DQogICAgICAgICRsYXllcnMgPSAkdGhpcy0+bGF5ZXJzOw0KDQogICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCg0KICAgICAgICAgICAgJGxheWVyLT5mbGlwKCR0eXBlKTsNCiAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGtleV0gPSAkbGF5ZXI7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICR0ZW1wID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHR5cGUgPT0gJ2hvcml6b250YWwnKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGltYWdlY29weXJlc2FtcGxlZCgkdGVtcCwgJHRoaXMtPmltYWdlLCAwLCAwLCAkdGhpcy0+d2lkdGggLSAxLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsIC0kdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJHRlbXA7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbnMpIHsNCiAgICANCiAgICAgICAgICAgICAgICAkdGhpcy0+Y2hhbmdlUG9zaXRpb24oJGxheWVySWQsICR0aGlzLT53aWR0aCAtICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5nZXRXaWR0aCgpIC0gJGxheWVyUG9zaXRpb25zWyd4J10sICRsYXllclBvc2l0aW9uc1sneSddKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJ3ZlcnRpY2FsJykgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbWFnZWNvcHlyZXNhbXBsZWQoJHRlbXAsICR0aGlzLT5pbWFnZSwgMCwgMCwgMCwgJHRoaXMtPmhlaWdodCAtIDEsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJHRoaXMtPndpZHRoLCAtJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdGVtcDsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVyUG9zaXRpb25zIGFzICRsYXllcklkID0+ICRsYXllclBvc2l0aW9ucykgew0KICAgIA0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJGxheWVyUG9zaXRpb25zWyd4J10sICR0aGlzLT5oZWlnaHQgLSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+Z2V0SGVpZ2h0KCkgLSAkbGF5ZXJQb3NpdGlvbnNbJ3knXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHVuc2V0KCR0ZW1wKTsNCiAgICB9DQoNCiAgICAvLyBJbnRlcm5hbHMNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KICAgICAqIFVwZGF0ZSB0aGUgcG9zaXRpb25zIG9mIGxheWVycyBpbiB0aGUgc3RhY2sgYWZ0ZXIgY3JvcHBpbmcNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJDcm9wcGluZygkcG9zaXRpb25YLCAkcG9zaXRpb25ZKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVycyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXIpIHsNCg0KICAgICAgICAgICAgJG9sZExheWVyUG9zWCA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bIngiXTsNCiAgICAgICAgICAgICRvbGRMYXllclBvc1kgPSAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyJ5Il07DQoNCiAgICAgICAgICAgICRuZXdMYXllclBvc1ggPSAkb2xkTGF5ZXJQb3NYICsgJHBvc2l0aW9uWDsNCiAgICAgICAgICAgICRuZXdMYXllclBvc1kgPSAkb2xkTGF5ZXJQb3NZICsgJHBvc2l0aW9uWTsNCg0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld0xheWVyUG9zWCwgJG5ld0xheWVyUG9zWSk7DQogICAgICAgIH0NCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBiYWNrZ3JvdW5kIG9mIGEgbGF5ZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdIZWlnaHQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQmFja2dyb3VuZCgkbmV3V2lkdGgsICRuZXdIZWlnaHQpDQogICAgew0KICAgICAgICAkb2xkV2lkdGggPSAkdGhpcy0+d2lkdGg7DQogICAgICAgICRvbGRIZWlnaHQgPSAkdGhpcy0+aGVpZ2h0Ow0KDQogICAgICAgICR0aGlzLT53aWR0aCA9ICRuZXdXaWR0aDsNCiAgICAgICAgJHRoaXMtPmhlaWdodCA9ICRuZXdIZWlnaHQ7DQoNCiAgICAgICAgJHZpcmdpbkxheW91dEltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQoNCiAgICAgICAgaW1hZ2Vjb3B5cmVzYW1wbGVkKCR2aXJnaW5MYXlvdXRJbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRvbGRXaWR0aCwgJG9sZEhlaWdodCk7DQoNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJHZpcmdpbkxheW91dEltYWdlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENhbGxlZCB0byBpbml0aWFsaXplIGEgdmlyZ2luIGltYWdlIHZhcg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGluaXRpYWxpemVJbWFnZSgkYmFja2dyb3VuZENvbG9yID0gbnVsbCkNCiAgICB7DQogICAgICAgIHVuc2V0KCR0aGlzLT5pbWFnZSk7DQoNCiAgICAgICAgaWYgKCRiYWNrZ3JvdW5kQ29sb3IpIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJGJhY2tncm91bmRDb2xvciwgMCk7DQoNCiAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgaW1hZ2UgdmFyIGZyb20gYSBnaXZlbiBwYXRoDQogICAgICogKFVwZGF0ZSBsYXllciB3aWR0aCBhbmQgaGVpZ2h0KQ0KICAgICAqDQogICAgICogQHBhcmFtIFN0cmluZyAkcGF0aA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXplSW1hZ2VGcm9tKCRwYXRoKQ0KICAgIHsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCg0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGgpKSB7DQoNCiAgICAgICAgICAgICRpbWFnZVNpemVJbmZvcyA9IGdldGltYWdlc2l6ZSgkcGF0aCk7DQoNCiAgICAgICAgICAgICR0aGlzLT53aWR0aCA9ICRpbWFnZVNpemVJbmZvc1swXTsNCiAgICAgICAgICAgICR0aGlzLT5oZWlnaHQgPSAkaW1hZ2VTaXplSW5mb3NbMV07DQoNCiAgICAgICAgICAgICRtaW1lQ29udGVudFR5cGUgPSBleHBsb2RlKCIvIiwgJGltYWdlU2l6ZUluZm9zWyJtaW1lIl0pOw0KICAgICAgICAgICAgJG1pbWVDb250ZW50VHlwZSA9ICRtaW1lQ29udGVudFR5cGVbMV07DQoNCiAgICAgICAgICAgIHN3aXRjaCAoJG1pbWVDb250ZW50VHlwZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgImpwZWciOg0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW1hZ2UgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRwYXRoKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgIGNhc2UgImdpZiI6DQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9IGltYWdlY3JlYXRlZnJvbWdpZigkcGF0aCk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBjYXNlICJwbmciOg0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW1hZ2UgPSBpbWFnZWNyZWF0ZWZyb21wbmcoJHBhdGgpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BFeGNlcHRpb24oJ05vdCBhbiBpbWFnZSBmaWxlIChqcGVnL3BuZy9naWYpIGF0ICInLiRwYXRoLiciJywgSW1hZ2VXb3Jrc2hvcDo6RVJST1JfTk9UX0FOX0lNQUdFX0ZJTEUpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbignTm8gc3VjaCBmaWxlIGZvdW5kIGF0ICInLiRwYXRoLiciJywgSW1hZ2VXb3Jrc2hvcDo6RVJST1JfSU1BR0VfTk9UX0ZPVU5EKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENhbGxlZCB0byBpbml0aWFsaXplIHRoZSBpbWFnZSB2YXIgZnJvbSBhIHBocCBpbWFnZSB2YXINCiAgICAgKiAoVXBkYXRlIGxheWVyIHdpZHRoIGFuZCBoZWlnaHQpDQogICAgICoNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGltYWdlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGluaXRpYWxpemVJbWFnZVdpdGgoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCg0KICAgICAgICBpZiAoZ2V0dHlwZSgkaW1hZ2UpICE9ICJyZXNvdXJjZSIpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wRXhjZXB0aW9uKCJZb3UgbXVzdCBnaXZlIGEgcGhwIGltYWdlIHZhciBieSB1c2luZyBpbml0aWFsaXplSW1hZ2VXaXRoIiwgSW1hZ2VXb3Jrc2hvcDo6RVJST1JfUEhQX0lNQUdFX1ZBUl9OT1RfVVNFRCk7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+d2lkdGggPSBpbWFnZXN4KCRpbWFnZSk7DQogICAgICAgICR0aGlzLT5oZWlnaHQgPSBpbWFnZXN5KCRpbWFnZSk7DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDYWxsZWQgdG8gaW5pdGlhbGl6ZSBhIHRleHQgbGF5ZXINCiAgICAgKiAoVXBkYXRlIGxheWVyIHdpZHRoIGFuZCBoZWlnaHQpDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0DQogICAgICogQHBhcmFtIHN0cmluZyAkZm9udFBhdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFNpemUNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb250Q29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkdGV4dFJvdGF0aW9uDQogICAgICogQHBhcmFtIGludGVnZXIgJGJhY2tncm91bmRDb2xvcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXplVGV4dEltYWdlKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSA9IDEzLCAkZm9udENvbG9yID0gImZmZmZmZiIsICR0ZXh0Um90YXRpb24gPSAwLCAkYmFja2dyb3VuZENvbG9yID0gbnVsbCkNCiAgICB7DQogICAgICAgIHVuc2V0KCR0aGlzLT5pbWFnZSk7DQoNCiAgICAgICAgJHRleHREaW1lbnNpb25zID0gSW1hZ2VXb3Jrc2hvcDo6Z2V0VGV4dEJveERpbWVuc2lvbigkZm9udFNpemUsICR0ZXh0Um90YXRpb24sICRmb250UGF0aCwgJHRleHQpOw0KDQogICAgICAgICR0aGlzLT53aWR0aCA9ICR0ZXh0RGltZW5zaW9uc1sid2lkdGgiXTsNCiAgICAgICAgJHRoaXMtPmhlaWdodCA9ICR0ZXh0RGltZW5zaW9uc1siaGVpZ2h0Il07DQoNCiAgICAgICAgaWYgKCRiYWNrZ3JvdW5kQ29sb3IpIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJGJhY2tncm91bmRDb2xvciwgMCk7DQoNCiAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+d3JpdGUoJHRleHQsICRmb250UGF0aCwgJGZvbnRTaXplLCAkZm9udENvbG9yLCAkdGV4dERpbWVuc2lvbnNbImxlZnQiXSwgJHRleHREaW1lbnNpb25zWyJ0b3AiXSwgJHRleHRSb3RhdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogSW5kZXggYSBzdWJsYXllciBpbiB0aGUgbGF5ZXIgc3RhY2sNCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHN1YmxheWVyIGlkIGFuZCBpdHMgY29ycmVjdGVkIGxldmVsOg0KICAgICAqIGFycmF5KCJsYXllckxldmVsIiA9PiBpbnRlZ2VyLCAiaWQiID0+IGludGVnZXIpDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJMZXZlbA0KICAgICAqIEBwYXJhbSBJbWFnZVdvcmtzaG9wTGF5ZXIgJGxheWVyDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmRleExheWVyKCRsYXllckxldmVsLCAkbGF5ZXIsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uKQ0KICAgIHsNCiAgICAgICAgLy8gQ2hvb3NlIGFuIGlkIGZvciB0aGUgYWRkZWQgbGF5ZXINCiAgICAgICAgJGxheWVySWQgPSAkdGhpcy0+bGFzdExheWVySWQgKyAxOw0KDQogICAgICAgIC8vIENsb25lICRsYXllciB0byBkdXBsaWNhdGUgaW1hZ2UgcmVzb3VyY2UgdmFyDQogICAgICAgICRsYXllciA9IGNsb25lICRsYXllcjsNCg0KICAgICAgICAvLyBBZGQgdGhlIGxheWVyIGluIHRoZSBzdGFjaw0KICAgICAgICAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXSA9ICRsYXllcjsNCg0KICAgICAgICAvLyBBZGQgdGhlIGxheWVyIHBvc2l0aW9ucyBpbiB0aGUgbWFpbiBsYXllcg0KICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdID0gc3RhdGljOjpjYWxjdWxhdGVQb3NpdGlvbnMoJHRoaXMtPmdldFdpZHRoKCksICR0aGlzLT5nZXRIZWlnaHQoKSwgJGxheWVyLT5nZXRXaWR0aCgpLCAkbGF5ZXItPmdldEhlaWdodCgpLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KDQogICAgICAgIC8vIFVwZGF0ZSB0aGUgbGFzdExheWVySWQgb2YgdGhlIHdvcmtzaG9wDQogICAgICAgICR0aGlzLT5sYXN0TGF5ZXJJZCA9ICRsYXllcklkOw0KDQogICAgICAgIC8vIEFkZCB0aGUgbGF5ZXIgbGV2ZWwgaW4gdGhlIHN0YWNrDQogICAgICAgICRsYXllckxldmVsID0gJHRoaXMtPmluZGV4TGV2ZWxJbkRvY3VtZW50KCRsYXllckxldmVsLCAkbGF5ZXJJZCk7DQoNCiAgICAgICAgcmV0dXJuIGFycmF5KA0KICAgICAgICAgICAgImxheWVyTGV2ZWwiID0+ICRsYXllckxldmVsLA0KICAgICAgICAgICAgImlkIiA9PiAkbGF5ZXJJZCwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBJbmRleCBhIGxheWVyIGxldmVsIGFuZCB1cGRhdGUgdGhlIGxheWVycyBsZXZlbHMgaW4gdGhlIGRvY3VtZW50DQogICAgICogUmV0dXJuIHRoZSBjb3JyZWN0ZWQgbGV2ZWwgb2YgdGhlIGxheWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJMZXZlbA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGludGVnZXINCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZXhMZXZlbEluRG9jdW1lbnQoJGxheWVyTGV2ZWwsICRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgLy8gTGV2ZWwgYWxyZWFkeSBleGlzdHMNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGxheWVyTGV2ZWwsICR0aGlzLT5sYXllckxldmVscykpIHsNCg0KICAgICAgICAgICAgLy8gQWxsIGxheWVycyBhZnRlciB0aGlzIGxldmVsIGFuZCB0aGUgbGF5ZXIgd2hpY2ggaGF2ZSB0aGlzIGxldmVsIGFyZSB1cGRhdGVkDQogICAgICAgICAgICBrc29ydCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KICAgICAgICAgICAgJGxheWVyTGV2ZWxzVG1wID0gJHRoaXMtPmxheWVyTGV2ZWxzOw0KDQogICAgICAgICAgICBmb3JlYWNoICgkbGF5ZXJMZXZlbHNUbXAgYXMgJGxldmVsVG1wID0+ICRsYXllcklkVG1wKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGxldmVsVG1wID49ICRsYXllckxldmVsKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skbGV2ZWxUbXAgKyAxXSA9ICRsYXllcklkVG1wOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdW5zZXQoJGxheWVyTGV2ZWxzVG1wKTsNCg0KICAgICAgICB9IGVsc2UgeyAvLyBMZXZlbCBpc24ndCB0YWtlbg0KDQogICAgICAgICAgICAvLyBJZiBnaXZlbiBsZXZlbCBpcyB0b28gaGlnaCwgcHJvY2VlZCBhZGp1c3RlbWVudA0KICAgICAgICAgICAgaWYgKCR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbCA8ICRsYXllckxldmVsKSB7DQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgKyAxOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllckxldmVsXSA9ICRsYXllcklkOw0KDQogICAgICAgIC8vIFVwZGF0ZSAkaGlnaGVzdExheWVyTGV2ZWwNCiAgICAgICAgJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsID0gbWF4KGFycmF5X2ZsaXAoJHRoaXMtPmxheWVyTGV2ZWxzKSk7DQoNCiAgICAgICAgcmV0dXJuICRsYXllckxldmVsOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlbGV0ZSB0aGUgY3VycmVudCBvYmplY3QNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkNCiAgICB7DQogICAgICAgIGltYWdlZGVzdHJveSgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAkdGhpcy0+Y2xlYXJTdGFjaygpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1lcmdlIHR3byBpbWFnZSB2YXINCiAgICAgKg0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkZGVzdGluYXRpb25JbWFnZQ0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc291cmNlSW1hZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZGVzdGluYXRpb25Qb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJGRlc3RpbmF0aW9uUG9zWQ0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzb3VyY2VQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJHNvdXJjZVBvc1kNCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlVHdvSW1hZ2VzKCYkZGVzdGluYXRpb25JbWFnZSwgJHNvdXJjZUltYWdlLCAkZGVzdGluYXRpb25Qb3NYID0gMCwgJGRlc3RpbmF0aW9uUG9zWSA9IDAsICRzb3VyY2VQb3NYID0gMCwgJHNvdXJjZVBvc1kgPSAwKQ0KICAgIHsNCiAgICAgICAgaW1hZ2Vjb3B5KCRkZXN0aW5hdGlvbkltYWdlLCAkc291cmNlSW1hZ2UsICRkZXN0aW5hdGlvblBvc1gsICRkZXN0aW5hdGlvblBvc1ksICRzb3VyY2VQb3NYLCAkc291cmNlUG9zWSwgaW1hZ2VTWCgkc291cmNlSW1hZ2UpLCBpbWFnZVNZKCRzb3VyY2VJbWFnZSkpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbnZlcnQgSGV4IGNvbG9yIHRvIFJHQiBjb2xvciBmb3JtYXQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleA0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29udmVydEhleFRvUkdCKCRoZXgpDQogICAgew0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAiUiIgPT4gYmFzZV9jb252ZXJ0KHN1YnN0cigkaGV4LCAwLCAyKSwgMTYsIDEwKSwNCiAgICAgICAgICAgICJHIiA9PiBiYXNlX2NvbnZlcnQoc3Vic3RyKCRoZXgsIDIsIDIpLCAxNiwgMTApLA0KICAgICAgICAgICAgIkIiID0+IGJhc2VfY29udmVydChzdWJzdHIoJGhleCwgNCwgMiksIDE2LCAxMCksDQogICAgICAgICk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ29weSBhbiBpbWFnZSBvbiBhbm90aGVyIG9uZSBhbmQgY29udmVyc2UgdHJhbnNwYXJlbmN5DQogICAgICoNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGRlc3RJbWcNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHNyY0ltZw0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZXN0WA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZXN0WQ0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzcmNYDQogICAgICogQHBhcmFtIGludGVnZXIgJHNyY1kNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc3JjVw0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzcmNIDQogICAgICogQHBhcmFtIGludGVnZXIgJHBjdA0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW1hZ2Vjb3B5bWVyZ2VhbHBoYSgmJGRlc3RJbWcsICYkc3JjSW1nLCAkZGVzdFgsICRkZXN0WSwgJHNyY1gsICRzcmNZLCAkc3JjVywgJHNyY0gsICRwY3QgPSAwKQ0KICAgIHsNCiAgICAgICAgJGRlc3RYID0gKGludCkgJGRlc3RYOw0KICAgICAgICAkZGVzdFkgPSAoaW50KSAkZGVzdFk7DQogICAgICAgICRzcmNYID0gKGludCkgJHNyY1g7DQogICAgICAgICRzcmNZID0gKGludCkgJHNyY1k7DQogICAgICAgICRzcmNXID0gKGludCkgJHNyY1c7DQogICAgICAgICRzcmNIID0gKGludCkgJHNyY0g7DQogICAgICAgICRwY3QgPSAoaW50KSAkcGN0Ow0KICAgICAgICAkZGVzdFcgPSBpbWFnZXN4KCRkZXN0SW1nKTsNCiAgICAgICAgJGRlc3RIID0gaW1hZ2VzeSgkZGVzdEltZyk7DQoNCiAgICAgICAgZm9yICgkeSA9IDA7ICR5IDwgJHNyY0ggKyAkc3JjWTsgJHkrKykgew0KDQogICAgICAgICAgICBmb3IgKCR4ID0gMDsgJHggPCAkc3JjVyArICRzcmNYOyAkeCsrKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoJHggKyAkZGVzdFggPj0gMCAmJiAkeCArICRkZXN0WCA8ICRkZXN0VyAmJiAkeCArICRzcmNYID49IDAgJiYgJHggKyAkc3JjWCA8ICRzcmNXICYmICR5ICsgJGRlc3RZID49IDAgJiYgJHkgKyAkZGVzdFkgPCAkZGVzdEggJiYgJHkgKyAkc3JjWSA+PSAwICYmICR5ICsgJHNyY1kgPCAkc3JjSCkgew0KDQogICAgICAgICAgICAgICAgICAgICRkZXN0UGl4ZWwgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRkZXN0SW1nLCBpbWFnZWNvbG9yYXQoJGRlc3RJbWcsICR4ICsgJGRlc3RYLCAkeSArICRkZXN0WSkpOw0KICAgICAgICAgICAgICAgICAgICAkc3JjSW1nQ29sb3JhdCA9IGltYWdlY29sb3JhdCgkc3JjSW1nLCAkeCArICRzcmNYLCAkeSArICRzcmNZKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgkc3JjSW1nQ29sb3JhdCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkc3JjUGl4ZWwgPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCRzcmNJbWcsICRzcmNJbWdDb2xvcmF0KTsNCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICRzcmNBbHBoYSA9IDEgLSAoJHNyY1BpeGVsWydhbHBoYSddIC8gMTI3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0QWxwaGEgPSAxIC0gKCRkZXN0UGl4ZWxbJ2FscGhhJ10gLyAxMjcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJG9wYWNpdHkgPSAkc3JjQWxwaGEgKiAkcGN0IC8gMTAwOw0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZXN0QWxwaGEgPj0gJG9wYWNpdHkpIHsNCiAgICAJCQkJCQkkYWxwaGEgPSAkZGVzdEFscGhhOw0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZXN0QWxwaGEgPCAkb3BhY2l0eSkgew0KICAgIAkJCQkJCSRhbHBoYSA9ICRvcGFjaXR5Ow0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhbHBoYSA+IDEpIHsNCiAgICAJCQkJCQkkYWxwaGEgPSAxOw0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRvcGFjaXR5ID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0UmVkID0gcm91bmQoKCgkZGVzdFBpeGVsWydyZWQnXSAqICRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVzdEdyZWVuID0gcm91bmQoKCgkZGVzdFBpeGVsWydncmVlbiddICogJGRlc3RBbHBoYSAqICgxIC0gJG9wYWNpdHkpKSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0Qmx1ZSA9IHJvdW5kKCgoJGRlc3RQaXhlbFsnYmx1ZSddICogJGRlc3RBbHBoYSAqICgxIC0gJG9wYWNpdHkpKSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcmNSZWQgPSByb3VuZCgoKCRzcmNQaXhlbFsncmVkJ10gKiAkb3BhY2l0eSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3JjR3JlZW4gPSByb3VuZCgoKCRzcmNQaXhlbFsnZ3JlZW4nXSAqICRvcGFjaXR5KSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcmNCbHVlID0gcm91bmQoKCgkc3JjUGl4ZWxbJ2JsdWUnXSAqICRvcGFjaXR5KSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWQgPSByb3VuZCgoJGRlc3RSZWQgKyAkc3JjUmVkICApIC8gKCRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSArICRvcGFjaXR5KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyZWVuID0gcm91bmQoKCRkZXN0R3JlZW4gKyAkc3JjR3JlZW4pIC8gKCRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSArICRvcGFjaXR5KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsdWUgPSByb3VuZCgoJGRlc3RCbHVlICsgJHNyY0JsdWUgKSAvICgkZGVzdEFscGhhICogKDEgLSAkb3BhY2l0eSkgKyAkb3BhY2l0eSkpOw0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmVkICAgPiAyNTUpIHsNCiAgICAJCQkJCQkJJHJlZCAgID0gMjU1Ow0KICAgIAkJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGdyZWVuID4gMjU1KSB7DQogICAgCQkJCQkJCSRncmVlbiA9IDI1NTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgDQogICAgCQkJCQkJaWYgKCRibHVlICA+IDI1NSkgew0KICAgIAkJCQkJCQkkYmx1ZSAgPSAyNTU7DQogICAgCQkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHBoYSA9IHJvdW5kKCgxIC0gJGFscGhhKSAqIDEyNyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJGRlc3RJbWcsICRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzZXRwaXhlbCgkZGVzdEltZywgJHggKyAkZGVzdFgsICR5ICsgJGRlc3RZLCAkY29sb3IpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzZXQgdGhlIGxheWVyIHN0YWNrDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU3RhY2soKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVycyBhcyAkbGF5ZXIpIHsNCiAgICAgICAgICAgICRsYXllci0+ZGVsZXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyUG9zaXRpb25zKTsNCg0KICAgICAgICAkdGhpcy0+bGFzdExheWVySWQgPSAwOw0KICAgICAgICAkdGhpcy0+bGF5ZXJzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsID0gMDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm4gZGltZW5zaW9uIG9mIGEgdGV4dA0KICAgICAqDQogICAgICogQHBhcmFtICRmb250U2l6ZQ0KICAgICAqIEBwYXJhbSAkZm9udEFuZ2xlDQogICAgICogQHBhcmFtICRmb250RmlsZQ0KICAgICAqIEBwYXJhbSAkdGV4dA0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheSBvciBib29sZWFuDQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUZXh0Qm94RGltZW5zaW9uKCRmb250U2l6ZSwgJGZvbnRBbmdsZSwgJGZvbnRGaWxlLCAkdGV4dCkNCiAgICB7DQogICAgICAgICRib3ggPSBpbWFnZXR0ZmJib3goJGZvbnRTaXplLCAkZm9udEFuZ2xlLCAkZm9udEZpbGUsICR0ZXh0KTsNCg0KCQlpZiAoISRib3gpIHsNCg0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCiAgICAgICAgJG1pblggPSBtaW4oYXJyYXkoJGJveFswXSwgJGJveFsyXSwgJGJveFs0XSwgJGJveFs2XSkpOw0KICAgICAgICAkbWF4WCA9IG1heChhcnJheSgkYm94WzBdLCAkYm94WzJdLCAkYm94WzRdLCAkYm94WzZdKSk7DQogICAgICAgICRtaW5ZID0gbWluKGFycmF5KCRib3hbMV0sICRib3hbM10sICRib3hbNV0sICRib3hbN10pKTsNCiAgICAgICAgJG1heFkgPSBtYXgoYXJyYXkoJGJveFsxXSwgJGJveFszXSwgJGJveFs1XSwgJGJveFs3XSkpOw0KICAgICAgICAkd2lkdGggPSAoJG1heFggLSAkbWluWCk7DQogICAgICAgICRoZWlnaHQgPSAoJG1heFkgLSAkbWluWSk7DQogICAgICAgICRsZWZ0ID0gYWJzKCRtaW5YKSArICR3aWR0aDsNCiAgICAgICAgJHRvcCA9IGFicygkbWluWSkgKyAkaGVpZ2h0Ow0KDQogICAgICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgZXhhY3QgYm91bmRpbmcgYm94LCB3ZSB3cml0ZSB0aGUgdGV4dCBpbiBhIGxhcmdlIGltYWdlDQogICAgICAgICRpbWcgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHdpZHRoIDw8IDIsICRoZWlnaHQgPDwgMik7DQogICAgICAgICR3aGl0ZSA9IGltYWdlY29sb3JhbGxvY2F0ZSgkaW1nLCAyNTUsIDI1NSwgMjU1KTsNCiAgICAgICAgJGJsYWNrID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbWcsIDAsIDAsIDApOw0KICAgICAgICBpbWFnZWZpbGxlZHJlY3RhbmdsZSgkaW1nLCAwLCAwLCBpbWFnZXN4KCRpbWcpLCBpbWFnZXN5KCRpbWcpLCAkYmxhY2spOw0KDQogICAgICAgIC8vIGZvciBlbnN1cmUgdGhhdCB0aGUgdGV4dCBpcyBjb21wbGV0ZWx5IGluIHRoZSBpbWFnZQ0KICAgICAgICBpbWFnZXR0ZnRleHQoJGltZywgJGZvbnRTaXplLCAkZm9udEFuZ2xlLCAkbGVmdCwgJHRvcCwgJHdoaXRlLCAkZm9udEZpbGUsICR0ZXh0KTsNCg0KICAgICAgICAvLyBzdGFydCBzY2FubmluZyAoMD0+IGJsYWNrID0+IGVtcHR5KQ0KICAgICAgICAkcmxlZnQgPSAkdzQgPSAkd2lkdGg8PDI7DQogICAgICAgICRycmlnaHQgPSAwOw0KICAgICAgICAkcmJvdHRvbSA9IDA7DQogICAgICAgICRydG9wID0gJGg0ID0gJGhlaWdodDw8MjsNCg0KICAgICAgICBmb3IgKCR4ID0gMDsgJHggPCAkdzQ7ICR4KyspIHsNCg0KCQkJZm9yICgkeSA9IDA7ICR5IDwgJGg0OyAkeSsrKSB7DQoNCgkJCQlpZiAoaW1hZ2Vjb2xvcmF0KCRpbWcsICR4LCAkeSkpIHsNCg0KCQkJCQkkcmxlZnQgPSBtaW4oJHJsZWZ0LCAkeCk7DQoJCQkJCSRycmlnaHQgPSBtYXgoJHJyaWdodCwgJHgpOw0KCQkJCQkkcnRvcCA9IG1pbigkcnRvcCwgJHkpOw0KCQkJCQkkcmJvdHRvbSA9IG1heCgkcmJvdHRvbSwgJHkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQogICAgICAgIC8vIGRlc3Ryb3kgaW1nDQogICAgICAgIGltYWdlZGVzdHJveSgkaW1nKTsNCg0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAibGVmdCIgPT4gJGxlZnQgLSAkcmxlZnQsDQogICAgICAgICAgICAidG9wIiA9PiAkdG9wIC0gJHJ0b3AsDQogICAgICAgICAgICAid2lkdGgiID0+ICRycmlnaHQgLSAkcmxlZnQgKyAxLA0KICAgICAgICAgICAgImhlaWdodCIgPT4gJHJib3R0b20gLSAkcnRvcCArIDEsDQogICAgICAgICk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JlYXRlIGEgbmV3IGJhY2tncm91bmQgaW1hZ2UgdmFyIGZyb20gdGhlIG9sZCBiYWNrZ3JvdW5kIGltYWdlIHZhcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVOZXdWYXJGcm9tQmFja2dyb3VuZEltYWdlKCkNCiAgICB7DQogICAgICAgIC8vIENyZWF0aW9uIG9mIGEgbmV3IGJhY2tncm91bmQgaW1hZ2UNCiAgICAgICAgJHZpcmdpbkltYWdlID0gc3RhdGljOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT5nZXRXaWR0aCgpLCAkdGhpcy0+Z2V0SGVpZ2h0KCkpOw0KDQogICAgICAgIHN0YXRpYzo6bWVyZ2VUd29JbWFnZXMoJHZpcmdpbkltYWdlLCAkdGhpcy0+aW1hZ2UsIDAsIDAsIDAsIDApOw0KICAgICAgICB1bnNldCgkdGhpcy0+aW1hZ2UpOw0KDQogICAgICAgICR0aGlzLT5pbWFnZSA9ICR2aXJnaW5JbWFnZTsNCiAgICAgICAgdW5zZXQoJHZpcmdpbkltYWdlKTsNCg0KICAgICAgICAkbGF5ZXJzID0gJHRoaXMtPmxheWVyczsNCg0KICAgICAgICBmb3JlYWNoKCRsYXllcnMgYXMgJGxheWVySWQgPT4gJGxheWVyKSB7DQoNCiAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdID0gY2xvbmUgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF07DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXQgYSBsYXllciBpbiB0aGUgc3RhY2sNCiAgICAgKiBEb24ndCBmb3JnZXQgdG8gdXNlIGNsb25lIG1ldGhvZDogJGIgPSBjbG9uZSAkYS0+Z2V0TGF5ZXIoMyk7DQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllcnNbJGxheWVySWRdOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBDYWxjdWxhdGUgdGhlIHJpZ2h0IHBvc2l0aW9ucyBvZiBhIGxheWVyIGluIGEgcGFyZW50IGNvbnRhaW5lciAobGF5ZXIpDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29udGFpbmVyV2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29udGFpbmVySGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVyV2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJIZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJQb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJQb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlUG9zaXRpb25zKCRjb250YWluZXJXaWR0aCwgJGNvbnRhaW5lckhlaWdodCwgJGxheWVyV2lkdGgsICRsYXllckhlaWdodCwgJGxheWVyUG9zaXRpb25YLCAkbGF5ZXJQb3NpdGlvblksICRwb3NpdGlvbiA9ICJMVCIpDQogICAgew0KICAgICAgICAkcG9zaXRpb24gPSBzdHJ0b2xvd2VyKCRwb3NpdGlvbik7DQoNCiAgICAgICAgaWYgKCRwb3NpdGlvbiA9PSAicnQiKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICRjb250YWluZXJXaWR0aCAtICRsYXllcldpZHRoIC0gJGxheWVyUG9zaXRpb25YOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gImxiIikgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0IC0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gInJiIikgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblggPSAkY29udGFpbmVyV2lkdGggLSAkbGF5ZXJXaWR0aCAtICRsYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQgLSAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAibW0iKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAoKCRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAibXQiKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAibWIiKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0IC0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gImxtIikgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAoKCRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAicm0iKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICRjb250YWluZXJXaWR0aCAtICRsYXllcldpZHRoIC0gJGxheWVyUG9zaXRpb25YOw0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25ZID0gKCgkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0KSAvIDIpICsgJGxheWVyUG9zaXRpb25ZOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGFycmF5KA0KICAgICAgICAgICAgIngiID0+ICRsYXllclBvc2l0aW9uWCwNCiAgICAgICAgICAgICJ5IiA9PiAkbGF5ZXJQb3NpdGlvblksDQogICAgICAgICk7DQogICAgfQ0KDQogICAgLy8gR2V0dGVyIC8gU2V0dGVyDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KICAgIC8qKg0KICAgICAqIEdldHRlciB3aWR0aA0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFdpZHRoKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+d2lkdGg7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGhlaWdodA0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlaWdodCgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmhlaWdodDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgaW1hZ2UNCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW1hZ2UoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5pbWFnZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgbGF5ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVycygpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmxheWVyczsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgbGF5ZXJMZXZlbHMNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGF5ZXJMZXZlbHMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllckxldmVsczsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgbGF5ZXJQb3NpdGlvbnMNCiAgICAgKiANCiAgICAgKiBHZXQgYWxsIHRoZSBwb3NpdGlvbnMgb2YgdGhlIHN1YmxheWVycywNCiAgICAgKiBvciB3aGVuIHNwZWNpZnlpbmcgJGxheWVySWQsIGdldCB0aGUgcG9zaXRpb24gb2YgdGhpcyBzdWJsYXllcg0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiANCiAgICAgKiBAcmV0dXJuIG1peGVkIChhcnJheSBvciBib29sZWFuKQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXllclBvc2l0aW9ucygkbGF5ZXJJZCA9IG51bGwpDQogICAgew0KICAgICAgICBpZiAoISRsYXllcklkKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bGF5ZXJQb3NpdGlvbnM7DQogICAgICAgICAgICANCiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsgLy8gaWYgdGhlIHN1YmxheWVyIGV4aXN0cyBpbiB0aGUgc3RhY2sNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF07DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgaGlnaGVzdExheWVyTGV2ZWwNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGlnaGVzdExheWVyTGV2ZWwoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgbGFzdExheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdExheWVySWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXN0TGF5ZXJJZDsNCiAgICB9DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.ImageWorkshopException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KbmFtZXNwYWNlIFBIUEltYWdlV29ya3Nob3A7DQoNCi8qKg0KICogSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbg0KICogDQogKiBNYW5hZ2UgSW1hZ2VXb3Jrc2hvcCBleGNlcHRpb25zDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uDQp7DQogICAgLyoqDQogICAgICogQ29uc3RydWN0b3INCiAgICAgKiANCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlDQogICAgICogQHBhcmFtIGludGVnZXIgJGNvZGUNCiAgICAgKiBAcGFyYW0gRXhjZXB0aW9uICRwcmV2aW91cw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUgPSAwLCBcRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwpDQogICAgew0KICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAkY29kZSwgJHByZXZpb3VzKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogX190b1N0cmluZyBtZXRob2QNCiAgICAgKg0KICAgICAqIEByZXR1cm4gc3RyaW5nDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIF9fQ0xBU1NfXy4iOiBbeyR0aGlzLT5jb2RlfV06IHskdGhpcy0+bWVzc2FnZX1cbiI7DQogICAgfQ0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.Mobile_Detect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1JVCBMaWNlbnNlCiAqID09PT09PT09PT09CiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAogKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgogKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCiAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCiAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCiAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKgogKgogKiBAYXV0aG9yICAgICAgU2VyYmFuIEdoaXRhIDxzZXJiYW5naGl0YUBnbWFpbC5jb20+CiAqICAgICAgICAgICAgICBWaWN0b3IgU3RhbmNpdSA8dmljLnN0YW5jaXVAZ21haWwuY29tPiAodW50aWwgdi4gMS4wKQogKiBAbGljZW5zZSAgICAgTUlUIExpY2Vuc2UgaHR0cHM6Ly9naXRodWIuY29tL3NlcmJhbmdoaXRhL01vYmlsZS1EZXRlY3QvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQKICogQGxpbmsgICAgICAgIE9mZmljaWFsIHBhZ2U6IGh0dHA6Ly9tb2JpbGVkZXRlY3QubmV0CiAqICAgICAgICAgICAgICBHaXRIdWIgUmVwb3NpdG9yeTogaHR0cHM6Ly9naXRodWIuY29tL3NlcmJhbmdoaXRhL01vYmlsZS1EZXRlY3QKICogICAgICAgICAgICAgIEdvb2dsZSBDb2RlIE9sZCBQYWdlOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcGhwLW1vYmlsZS1kZXRlY3QvCiAqIEB2ZXJzaW9uICAgICAyLjYuOQogKi8KCmNsYXNzIE1vYmlsZV9EZXRlY3QKewogICAgLyoqCiAgICAgKiBNb2JpbGUgZGV0ZWN0aW9uIHR5cGUuCiAgICAgKi8KICAgIGNvbnN0IERFVEVDVElPTl9UWVBFX01PQklMRSAgICAgPSAnbW9iaWxlJzsKCiAgICAvKioKICAgICAqIEV4dGVuZGVkIGRldGVjdGlvbiB0eXBlLgogICAgICovCiAgICBjb25zdCBERVRFQ1RJT05fVFlQRV9FWFRFTkRFRCAgID0gJ2V4dGVuZGVkJzsKCiAgICAvKioKICAgICAqIEEgZnJlcXVlbnRseSB1c2VkIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBleHRyYWN0IHZlcnNpb24gI3MuCiAgICAgKi8KICAgIGNvbnN0IFZFUiAgICAgICAgICAgICAgICAgICAgICAgPSAnKFtcdy5fXCtdKyknOwoKICAgIC8qKgogICAgICogVG9wLWxldmVsIGRldmljZS4KICAgICAqLwogICAgY29uc3QgTU9CSUxFX0dSQURFX0EgICAgICAgICAgICA9ICdBJzsKCiAgICAvKioKICAgICAqIE1pZC1sZXZlbCBkZXZpY2UuCiAgICAgKi8KICAgIGNvbnN0IE1PQklMRV9HUkFERV9CICAgICAgICAgICAgPSAnQic7CgogICAgLyoqCiAgICAgKiBMb3ctbGV2ZWwgZGV2aWNlLgogICAgICovCiAgICBjb25zdCBNT0JJTEVfR1JBREVfQyAgICAgICAgICAgID0gJ0MnOwoKICAgIC8qKgogICAgICogU3RvcmVzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCByZWxlYXNlLgogICAgICovCiAgICBjb25zdCBWRVJTSU9OICAgICAgICAgICAgICAgICAgID0gJzIuNi45JzsKCiAgICAvKioKICAgICAqIEEgdHlwZSBmb3IgdGhlIHZlcnNpb24oKSBtZXRob2QgaW5kaWNhdGluZyBhIHN0cmluZyByZXR1cm4gdmFsdWUuCiAgICAgKi8KICAgIGNvbnN0IFZFUlNJT05fVFlQRV9TVFJJTkcgICAgICAgPSAndGV4dCc7CgogICAgLyoqCiAgICAgKiBBIHR5cGUgZm9yIHRoZSB2ZXJzaW9uKCkgbWV0aG9kIGluZGljYXRpbmcgYSBmbG9hdCByZXR1cm4gdmFsdWUuCiAgICAgKi8KICAgIGNvbnN0IFZFUlNJT05fVFlQRV9GTE9BVCAgICAgICAgPSAnZmxvYXQnOwoKICAgIC8qKgogICAgICogVGhlIFVzZXItQWdlbnQgSFRUUCBoZWFkZXIgaXMgc3RvcmVkIGluIGhlcmUuCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgJHVzZXJBZ2VudCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBIVFRQIGhlYWRlcnMgaW4gdGhlIFBIUC1mbGF2b3IuIFNvIEhUVFBfVVNFUl9BR0VOVCBhbmQgU0VSVkVSX1NPRlRXQVJFLgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJGh0dHBIZWFkZXJzID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBkZXRlY3Rpb24gdHlwZSwgdXNpbmcgc2VsZjo6REVURUNUSU9OX1RZUEVfTU9CSUxFIG9yIHNlbGY6OkRFVEVDVElPTl9UWVBFX0VYVEVOREVELgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCAkZGV0ZWN0aW9uVHlwZSA9IHNlbGY6OkRFVEVDVElPTl9UWVBFX01PQklMRTsKCiAgICAvKioKICAgICAqIExpc3Qgb2YgbW9iaWxlIGRldmljZXMgKHBob25lcykuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRwaG9uZURldmljZXMgPSBhcnJheSgKICAgICAgICAnaVBob25lJyAgICAgICAgPT4gJ1xiaVBob25lLipNb2JpbGV8XGJpUG9kJywgLy8gfFxiaVR1bmVzCiAgICAgICAgJ0JsYWNrQmVycnknICAgID0+ICdCbGFja0JlcnJ5fFxiQkIxMFxifHJpbVswLTldKycsCiAgICAgICAgJ0hUQycgICAgICAgICAgID0+ICdIVEN8SFRDLiooU2Vuc2F0aW9ufEV2b3xWaXNpb258RXhwbG9yZXJ8NjgwMHw4MTAwfDg5MDB8QTcyNzJ8UzUxMGV8QzExMGV8TGVnZW5kfERlc2lyZXxUODI4Mil8QVBYNTE1Q0tUfFF0ZWs5MDkwfEFQQTkyOTJLVHxIRF9taW5pfFNlbnNhdGlvbi4qWjcxMGV8UEc4NjEwMHxaNzE1ZXxEZXNpcmUuKihBODE4MXxIRCl8QURSNjIwMHxBRFI2NDAwTHxBRFI2NDI1fDAwMUhUfEluc3BpcmUgNEd8QW5kcm9pZC4qXGJFVk9cYicsCiAgICAgICAgJ05leHVzJyAgICAgICAgID0+ICdOZXh1cyBPbmV8TmV4dXMgU3xHYWxheHkuKk5leHVzfEFuZHJvaWQuKk5leHVzLipNb2JpbGUnLAogICAgICAgIC8vIEB0b2RvOiBJcyAnRGVsbCBTdHJlYWsnIGEgdGFibGV0IG9yIGEgcGhvbmU/IDspCiAgICAgICAgJ0RlbGwnICAgICAgICAgID0+ICdEZWxsLipTdHJlYWt8RGVsbC4qQWVyb3xEZWxsLipWZW51ZXxERUxMLipWZW51ZSBQcm98RGVsbCBGbGFzaHxEZWxsIFNtb2tlfERlbGwgTWluaSAzaVh8WENEMjh8WENEMzV8XGIwMDFETFxifFxiMTAxRExcYnxcYkdTMDFcYicsCiAgICAgICAgJ01vdG9yb2xhJyAgICAgID0+ICdNb3Rvcm9sYXxcYkRyb2lkXGIuKkJ1aWxkfERST0lEWHxBbmRyb2lkLipYb29tfEhSSTM5fE1PVC18QTEyNjB8QTE2ODB8QTU1NXxBODUzfEE4NTV8QTk1M3xBOTU1fEE5NTZ8TW90b3JvbGEuKkVMRUNUUklGWXxNb3Rvcm9sYS4qaTF8aTg2N3xpOTQwfE1CMjAwfE1CMzAwfE1CNTAxfE1CNTAyfE1CNTA4fE1CNTExfE1CNTIwfE1CNTI1fE1CNTI2fE1CNjExfE1CNjEyfE1CNjMyfE1CODEwfE1CODU1fE1CODYwfE1CODYxfE1CODY1fE1CODcwfE1FNTAxfE1FNTAyfE1FNTExfE1FNTI1fE1FNjAwfE1FNjMyfE1FNzIyfE1FODExfE1FODYwfE1FODYzfE1FODY1fE1UNjIwfE1UNzEwfE1UNzE2fE1UNzIwfE1UODEwfE1UODcwfE1UOTE3fE1vdG9yb2xhLipUSVRBTklVTXxXWDQzNXxXWDQ0NXxYVDMwMHxYVDMwMXxYVDMxMXxYVDMxNnxYVDMxN3xYVDMxOXxYVDMyMHxYVDM5MHxYVDUwMnxYVDUzMHxYVDUzMXxYVDUzMnxYVDUzNXxYVDYwM3xYVDYxMHxYVDYxMXxYVDYxNXxYVDY4MXxYVDcwMXxYVDcwMnxYVDcxMXxYVDcyMHxYVDgwMHxYVDgwNnxYVDg2MHxYVDg2MnxYVDg3NXxYVDg4MnxYVDg4M3xYVDg5NHxYVDkwMXxYVDkwN3xYVDkwOXxYVDkxMHxYVDkxMnxYVDkyOHxYVDkyNnxYVDkxNXxYVDkxOXxYVDkyNScsCiAgICAgICAgJ1NhbXN1bmcnICAgICAgID0+ICdTYW1zdW5nfFNHSC1JMzM3fEJHVC1TNTIzMHxHVC1CMjEwMHxHVC1CMjcwMHxHVC1CMjcxMHxHVC1CMzIxMHxHVC1CMzMxMHxHVC1CMzQxMHxHVC1CMzczMHxHVC1CMzc0MHxHVC1CNTUxMHxHVC1CNTUxMnxHVC1CNTcyMnxHVC1CNjUyMHxHVC1CNzMwMHxHVC1CNzMyMHxHVC1CNzMzMHxHVC1CNzM1MHxHVC1CNzUxMHxHVC1CNzcyMnxHVC1CNzgwMHxHVC1DMzAxMHxHVC1DMzAxMXxHVC1DMzA2MHxHVC1DMzIwMHxHVC1DMzIxMnxHVC1DMzIxMkl8R1QtQzMyNjJ8R1QtQzMyMjJ8R1QtQzMzMDB8R1QtQzMzMDBLfEdULUMzMzAzfEdULUMzMzAzS3xHVC1DMzMxMHxHVC1DMzMyMnxHVC1DMzMzMHxHVC1DMzM1MHxHVC1DMzUwMHxHVC1DMzUxMHxHVC1DMzUzMHxHVC1DMzYzMHxHVC1DMzc4MHxHVC1DNTAxMHxHVC1DNTIxMnxHVC1DNjYyMHxHVC1DNjYyNXxHVC1DNjcxMnxHVC1FMTA1MHxHVC1FMTA3MHxHVC1FMTA3NXxHVC1FMTA4MHxHVC1FMTA4MXxHVC1FMTA4NXxHVC1FMTA4N3xHVC1FMTEwMHxHVC1FMTEwN3xHVC1FMTExMHxHVC1FMTEyMHxHVC1FMTEyNXxHVC1FMTEzMHxHVC1FMTE2MHxHVC1FMTE3MHxHVC1FMTE3NXxHVC1FMTE4MHxHVC1FMTE4MnxHVC1FMTIwMHxHVC1FMTIxMHxHVC1FMTIyNXxHVC1FMTIzMHxHVC1FMTM5MHxHVC1FMjEwMHxHVC1FMjEyMHxHVC1FMjEyMXxHVC1FMjE1MnxHVC1FMjIyMHxHVC1FMjIyMnxHVC1FMjIzMHxHVC1FMjIzMnxHVC1FMjI1MHxHVC1FMjM3MHxHVC1FMjU1MHxHVC1FMjY1MnxHVC1FMzIxMHxHVC1FMzIxM3xHVC1JNTUwMHxHVC1JNTUwM3xHVC1JNTcwMHxHVC1JNTgwMHxHVC1JNTgwMXxHVC1JNjQxMHxHVC1JNjQyMHxHVC1JNzExMHxHVC1JNzQxMHxHVC1JNzUwMHxHVC1JODAwMHxHVC1JODE1MHxHVC1JODE2MHxHVC1JODE5MHxHVC1JODMyMHxHVC1JODMzMHxHVC1JODM1MHxHVC1JODUzMHxHVC1JODcwMHxHVC1JODcwM3xHVC1JODkxMHxHVC1JOTAwMHxHVC1JOTAwMXxHVC1JOTAwM3xHVC1JOTAxMHxHVC1JOTAyMHxHVC1JOTAyM3xHVC1JOTA3MHxHVC1JOTA4MnxHVC1JOTEwMHxHVC1JOTEwM3xHVC1JOTIyMHxHVC1JOTI1MHxHVC1JOTMwMHxHVC1JOTMwNXxHVC1JOTUwMHxHVC1JOTUwNXxHVC1NMzUxMHxHVC1NNTY1MHxHVC1NNzUwMHxHVC1NNzYwMHxHVC1NNzYwM3xHVC1NODgwMHxHVC1NODkxMHxHVC1ONzAwMHxHVC1TMzExMHxHVC1TMzMxMHxHVC1TMzM1MHxHVC1TMzM1M3xHVC1TMzM3MHxHVC1TMzY1MHxHVC1TMzY1M3xHVC1TMzc3MHxHVC1TMzg1MHxHVC1TNTIxMHxHVC1TNTIyMHxHVC1TNTIyOXxHVC1TNTIzMHxHVC1TNTIzM3xHVC1TNTI1MHxHVC1TNTI1M3xHVC1TNTI2MHxHVC1TNTI2M3xHVC1TNTI3MHxHVC1TNTMwMHxHVC1TNTMzMHxHVC1TNTM1MHxHVC1TNTM2MHxHVC1TNTM2M3xHVC1TNTM2OXxHVC1TNTM4MHxHVC1TNTM4MER8R1QtUzU1NjB8R1QtUzU1NzB8R1QtUzU2MDB8R1QtUzU2MDN8R1QtUzU2MTB8R1QtUzU2MjB8R1QtUzU2NjB8R1QtUzU2NzB8R1QtUzU2OTB8R1QtUzU3NTB8R1QtUzU3ODB8R1QtUzU4MzB8R1QtUzU4Mzl8R1QtUzYxMDJ8R1QtUzY1MDB8R1QtUzcwNzB8R1QtUzcyMDB8R1QtUzcyMjB8R1QtUzcyMzB8R1QtUzcyMzN8R1QtUzcyNTB8R1QtUzc1MDB8R1QtUzc1MzB8R1QtUzc1NTB8R1QtUzc1NjJ8R1QtUzc3MTB8R1QtUzgwMDB8R1QtUzgwMDN8R1QtUzg1MDB8R1QtUzg1MzB8R1QtUzg2MDB8U0NILUEzMTB8U0NILUE1MzB8U0NILUE1NzB8U0NILUE2MTB8U0NILUE2MzB8U0NILUE2NTB8U0NILUE3OTB8U0NILUE3OTV8U0NILUE4NTB8U0NILUE4NzB8U0NILUE4OTB8U0NILUE5MzB8U0NILUE5NTB8U0NILUE5NzB8U0NILUE5OTB8U0NILUkxMDB8U0NILUkxMTB8U0NILUk0MDB8U0NILUk0MDV8U0NILUk1MDB8U0NILUk1MTB8U0NILUk1MTV8U0NILUk2MDB8U0NILUk3MzB8U0NILUk3NjB8U0NILUk3NzB8U0NILUk4MzB8U0NILUk5MTB8U0NILUk5MjB8U0NILUk5NTl8U0NILUxDMTF8U0NILU4xNTB8U0NILU4zMDB8U0NILVIxMDB8U0NILVIzMDB8U0NILVIzNTF8U0NILVI0MDB8U0NILVI0MTB8U0NILVQzMDB8U0NILVUzMTB8U0NILVUzMjB8U0NILVUzNTB8U0NILVUzNjB8U0NILVUzNjV8U0NILVUzNzB8U0NILVUzODB8U0NILVU0MTB8U0NILVU0MzB8U0NILVU0NTB8U0NILVU0NjB8U0NILVU0NzB8U0NILVU0OTB8U0NILVU1NDB8U0NILVU1NTB8U0NILVU2MjB8U0NILVU2NDB8U0NILVU2NTB8U0NILVU2NjB8U0NILVU3MDB8U0NILVU3NDB8U0NILVU3NTB8U0NILVU4MTB8U0NILVU4MjB8U0NILVU5MDB8U0NILVU5NDB8U0NILVU5NjB8U0NTLTI2VUN8U0dILUExMDd8U0dILUExMTd8U0dILUExMjd8U0dILUExMzd8U0dILUExNTd8U0dILUExNjd8U0dILUExNzd8U0dILUExODd8U0dILUExOTd8U0dILUEyMjd8U0dILUEyMzd8U0dILUEyNTd8U0dILUE0Mzd8U0dILUE1MTd8U0dILUE1OTd8U0dILUE2Mzd8U0dILUE2NTd8U0dILUE2Njd8U0dILUE2ODd8U0dILUE2OTd8U0dILUE3MDd8U0dILUE3MTd8U0dILUE3Mjd8U0dILUE3Mzd8U0dILUE3NDd8U0dILUE3Njd8U0dILUE3Nzd8U0dILUE3OTd8U0dILUE4MTd8U0dILUE4Mjd8U0dILUE4Mzd8U0dILUE4NDd8U0dILUE4Njd8U0dILUE4Nzd8U0dILUE4ODd8U0dILUE4OTd8U0dILUE5Mjd8U0dILUIxMDB8U0dILUIxMzB8U0dILUIyMDB8U0dILUIyMjB8U0dILUMxMDB8U0dILUMxMTB8U0dILUMxMjB8U0dILUMxMzB8U0dILUMxNDB8U0dILUMxNjB8U0dILUMxNzB8U0dILUMxODB8U0dILUMyMDB8U0dILUMyMDd8U0dILUMyMTB8U0dILUMyMjV8U0dILUMyMzB8U0dILUM0MTd8U0dILUM0NTB8U0dILUQzMDd8U0dILUQzNDd8U0dILUQzNTd8U0dILUQ0MDd8U0dILUQ0MTV8U0dILUQ3ODB8U0dILUQ4MDd8U0dILUQ5ODB8U0dILUUxMDV8U0dILUUyMDB8U0dILUUzMTV8U0dILUUzMTZ8U0dILUUzMTd8U0dILUUzMzV8U0dILUU1OTB8U0dILUU2MzV8U0dILUU3MTV8U0dILUU4OTB8U0dILUYzMDB8U0dILUY0ODB8U0dILUkyMDB8U0dILUkzMDB8U0dILUkzMjB8U0dILUk1NTB8U0dILUk1Nzd8U0dILUk2MDB8U0dILUk2MDd8U0dILUk2MTd8U0dILUk2Mjd8U0dILUk2Mzd8U0dILUk2Nzd8U0dILUk3MDB8U0dILUk3MTd8U0dILUk3Mjd8U0dILWk3NDdNfFNHSC1JNzc3fFNHSC1JNzgwfFNHSC1JODI3fFNHSC1JODQ3fFNHSC1JODU3fFNHSC1JODk2fFNHSC1JODk3fFNHSC1JOTAwfFNHSC1JOTA3fFNHSC1JOTE3fFNHSC1JOTI3fFNHSC1JOTM3fFNHSC1JOTk3fFNHSC1KMTUwfFNHSC1KMjAwfFNHSC1MMTcwfFNHSC1MNzAwfFNHSC1NMTEwfFNHSC1NMTUwfFNHSC1NMjAwfFNHSC1OMTA1fFNHSC1ONTAwfFNHSC1ONjAwfFNHSC1ONjIwfFNHSC1ONjI1fFNHSC1ONzAwfFNHSC1ONzEwfFNHSC1QMTA3fFNHSC1QMjA3fFNHSC1QMzAwfFNHSC1QMzEwfFNHSC1QNTIwfFNHSC1QNzM1fFNHSC1QNzc3fFNHSC1RMTA1fFNHSC1SMjEwfFNHSC1SMjIwfFNHSC1SMjI1fFNHSC1TMTA1fFNHSC1TMzA3fFNHSC1UMTA5fFNHSC1UMTE5fFNHSC1UMTM5fFNHSC1UMjA5fFNHSC1UMjE5fFNHSC1UMjI5fFNHSC1UMjM5fFNHSC1UMjQ5fFNHSC1UMjU5fFNHSC1UMzA5fFNHSC1UMzE5fFNHSC1UMzI5fFNHSC1UMzM5fFNHSC1UMzQ5fFNHSC1UMzU5fFNHSC1UMzY5fFNHSC1UMzc5fFNHSC1UNDA5fFNHSC1UNDI5fFNHSC1UNDM5fFNHSC1UNDU5fFNHSC1UNDY5fFNHSC1UNDc5fFNHSC1UNDk5fFNHSC1UNTA5fFNHSC1UNTE5fFNHSC1UNTM5fFNHSC1UNTU5fFNHSC1UNTg5fFNHSC1UNjA5fFNHSC1UNjE5fFNHSC1UNjI5fFNHSC1UNjM5fFNHSC1UNjU5fFNHSC1UNjY5fFNHSC1UNjc5fFNHSC1UNzA5fFNHSC1UNzE5fFNHSC1UNzI5fFNHSC1UNzM5fFNHSC1UNzQ2fFNHSC1UNzQ5fFNHSC1UNzU5fFNHSC1UNzY5fFNHSC1UODA5fFNHSC1UODE5fFNHSC1UODM5fFNHSC1UOTE5fFNHSC1UOTI5fFNHSC1UOTM5fFNHSC1UOTU5fFNHSC1UOTg5fFNHSC1VMTAwfFNHSC1VMjAwfFNHSC1VODAwfFNHSC1WMjA1fFNHSC1WMjA2fFNHSC1YMTAwfFNHSC1YMTA1fFNHSC1YMTIwfFNHSC1YMTQwfFNHSC1YNDI2fFNHSC1YNDI3fFNHSC1YNDc1fFNHSC1YNDk1fFNHSC1YNDk3fFNHSC1YNTA3fFNHSC1YNjAwfFNHSC1YNjEwfFNHSC1YNjIwfFNHSC1YNjMwfFNHSC1YNzAwfFNHSC1YODIwfFNHSC1YODkwfFNHSC1aMTMwfFNHSC1aMTUwfFNHSC1aMTcwfFNHSC1aWDEwfFNHSC1aWDIwfFNIVy1NMTEwfFNQSC1BMTIwfFNQSC1BNDAwfFNQSC1BNDIwfFNQSC1BNDYwfFNQSC1BNTAwfFNQSC1BNTYwfFNQSC1BNjAwfFNQSC1BNjIwfFNQSC1BNjYwfFNQSC1BNzAwfFNQSC1BNzQwfFNQSC1BNzYwfFNQSC1BNzkwfFNQSC1BODAwfFNQSC1BODIwfFNQSC1BODQwfFNQSC1BODgwfFNQSC1BOTAwfFNQSC1BOTQwfFNQSC1BOTYwfFNQSC1ENjAwfFNQSC1ENzAwfFNQSC1ENzEwfFNQSC1ENzIwfFNQSC1JMzAwfFNQSC1JMzI1fFNQSC1JMzMwfFNQSC1JMzUwfFNQSC1JNTAwfFNQSC1JNjAwfFNQSC1JNzAwfFNQSC1MNzAwfFNQSC1NMTAwfFNQSC1NMjIwfFNQSC1NMjQwfFNQSC1NMzAwfFNQSC1NMzA1fFNQSC1NMzIwfFNQSC1NMzMwfFNQSC1NMzUwfFNQSC1NMzYwfFNQSC1NMzcwfFNQSC1NMzgwfFNQSC1NNTEwfFNQSC1NNTQwfFNQSC1NNTUwfFNQSC1NNTYwfFNQSC1NNTcwfFNQSC1NNTgwfFNQSC1NNjEwfFNQSC1NNjIwfFNQSC1NNjMwfFNQSC1NODAwfFNQSC1NODEwfFNQSC1NODUwfFNQSC1NOTAwfFNQSC1NOTEwfFNQSC1NOTIwfFNQSC1NOTMwfFNQSC1OMTAwfFNQSC1OMjAwfFNQSC1OMjQwfFNQSC1OMzAwfFNQSC1ONDAwfFNQSC1aNDAwfFNXQy1FMTAwfFNDSC1pOTA5fEdULU43MTAwfEdULU43MTA1fFNDSC1JNTM1JywKICAgICAgICAnTEcnICAgICAgICAgICAgPT4gJ1xiTEdcYjt8KExHfExHLSk/KEM4MDB8QzkwMHxFNDAwfEU2MTB8RTkwMHxFLTkwMHxGMTYwfEYxODBLfEYxODBMfEYxODBTfDczMHw4NTV8TDE2MHxMUzg0MHxMUzk3MHxMVTYyMDB8TVM2OTB8TVM2OTV8TVM3NzB8TVM4NDB8TVM4NzB8TVM5MTB8UDUwMHxQNzAwfFA3MDV8Vk02OTZ8QVM2ODB8QVM2OTV8QVg4NDB8QzcyOXxFOTcwfEdTNTA1fDI3MnxDMzk1fEU3MzlCS3xFOTYwfEw1NUN8TDc1Q3xMUzY5NnxMUzg2MHxQNzY5Qkt8UDM1MHxQNTAwfFA1MDl8UDg3MHxVTjI3MnxVUzczMHxWUzg0MHxWUzk1MHxMTjI3MnxMTjUxMHxMUzY3MHxMUzg1NXxMVzY5MHxNTjI3MHxNTjUxMHxQNTA5fFA3Njl8UDkzMHxVTjIwMHxVTjI3MHxVTjUxMHxVTjYxMHxVUzY3MHxVUzc0MHxVUzc2MHxVWDI2NXxVWDg0MHxWTjI3MXxWTjUzMHxWUzY2MHxWUzcwMHxWUzc0MHxWUzc1MHxWUzkxMHxWUzkyMHxWUzkzMHxWWDkyMDB8VlgxMTAwMHxBWDg0MEF8TFc3NzB8UDUwNnxQOTI1fFA5OTkpJywKICAgICAgICAnU29ueScgICAgICAgICAgPT4gJ1NvbnlTVHxTb255TFR8U29ueUVyaWNzc29ufFNvbnlFcmljc3NvbkxUMTVpdnxMVDE4aXxFMTBpfExUMjhofFNvbnlFcmljc3Nvbk1UMjdpJywKICAgICAgICAnQXN1cycgICAgICAgICAgPT4gJ0FzdXMuKkdhbGF4eXxQYWRGb25lLipNb2JpbGUnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cubWljcm9tYXhpbmZvLmNvbS9tb2JpbGVzL3NtYXJ0cGhvbmVzCiAgICAgICAgLy8gQWRkZWQgYmVjYXVzZSB0aGUgY29kZXMgbWlnaHQgY29uZmxpY3Qgd2l0aCBBY2VyIFRhYmxldHMuCiAgICAgICAgJ01pY3JvbWF4JyAgICAgID0+ICdNaWNyb21heC4qXGIoQTIxMHxBOTJ8QTg4fEE3MnxBMTExfEExMTBRfEExMTV8QTExNnxBMTEwfEE5MFN8QTI2fEE1MXxBMzV8QTU0fEEyNXxBMjd8QTg5fEE2OHxBNjV8QTU3fEE5MClcYicsCiAgICAgICAgJ1BhbG0nICAgICAgICAgID0+ICdQYWxtU291cmNlfFBhbG0nLCAvLyBhdmFudGdvfGJsYXplcnxlbGFpbmV8aGlwdG9wfHBsdWNrZXJ8eGlpbm8gOyBAdG9kbyAtIGNvbXBsZXRlIHRoZSByZWdleC4KICAgICAgICAnVmVydHUnICAgICAgICAgPT4gJ1ZlcnR1fFZlcnR1LipMdGR8VmVydHUuKkFzY2VudHxWZXJ0dS4qQXl4dGF8VmVydHUuKkNvbnN0ZWxsYXRpb24oRnxRdWVzdCk/fFZlcnR1LipNb25pa2F8VmVydHUuKlNpZ25hdHVyZScsIC8vIEp1c3QgZm9yIGZ1biA7KQogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cucGFudGVjaC5jby5rci9lbi9wcm9kL3Byb2RMaXN0LmRvP2dicmFuZD1WRUdBIChQQU5URUNIKQogICAgICAgIC8vIE1vc3Qgb2YgdGhlIFZFR0EgZGV2aWNlcyBhcmUgbGVnYWN5LiBQQU5URUNIIHNlZW0gdG8gYmUgbmV3ZXIgZGV2aWNlcyBiYXNlZCBvbiBBbmRyb2lkLgogICAgICAgICdQYW50ZWNoJyAgICAgICA9PiAnUEFOVEVDSHxJTS1BODUwU3xJTS1BODQwU3xJTS1BODMwTHxJTS1BODMwS3xJTS1BODMwU3xJTS1BODIwTHxJTS1BODEwS3xJTS1BODEwU3xJTS1BODAwU3xJTS1UMTAwS3xJTS1BNzI1THxJTS1BNzgwTHxJTS1BNzc1Q3xJTS1BNzcwS3xJTS1BNzYwU3xJTS1BNzUwS3xJTS1BNzQwU3xJTS1BNzMwU3xJTS1BNzIwTHxJTS1BNzEwS3xJTS1BNjkwTHxJTS1BNjkwU3xJTS1BNjUwU3xJTS1BNjMwS3xJTS1BNjAwU3xWRUdBIFBUTDIxfFBUMDAzfFA4MDEwfEFEUjkxMEx8UDYwMzB8UDYwMjB8UDkwNzB8UDQxMDB8UDkwNjB8UDUwMDB8Q0RNODk5MnxUWFQ4MDQ1fEFEUjg5OTV8SVMxMVBUfFAyMDMwfFA2MDEwfFA4MDAwfFBUMDAyfElTMDZ8Q0RNODk5OXxQOTA1MHxQVDAwMXxUWFQ4MDQwfFAyMDIwfFA5MDIwfFAyMDAwfFA3MDQwfFA3MDAwfEM3OTAnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuZmx5LXBob25lLmNvbS9kZXZpY2VzL3NtYXJ0cGhvbmVzLyA7IEluY2x1ZGVkIG9ubHkgc21hcnRwaG9uZXMuCiAgICAgICAgJ0ZseScgICAgICAgICAgID0+ICdJUTIzMHxJUTQ0NHxJUTQ1MHxJUTQ0MHxJUTQ0MnxJUTQ0MXxJUTI0NXxJUTI1NnxJUTIzNnxJUTI1NXxJUTIzNXxJUTI0NXxJUTI3NXxJUTI0MHxJUTI4NXxJUTI4MHxJUTI3MHxJUTI2MHxJUTI1MCcsCiAgICAgICAgLy8gQWRkZWQgc2ltdmFsbGV5IG1vYmlsZSBqdXN0IGZvciBmdW4uIFRoZXkgaGF2ZSBzb21lIGludGVyZXN0aW5nIGRldmljZXMuCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5zaW12YWxsZXkuZnIvdGVsZXBob25pZS0tLWdwcy1fMjJfdGVsZXBob25pZS1tb2JpbGVfdGVsZXBob25lc18uaHRtbAogICAgICAgICdTaW1WYWxsZXknICAgICA9PiAnXGIoU1AtODB8WFQtOTMwfFNYLTM0MHxYVC05MzB8U1gtMzEwfFNQLTM2MHxTUDYwfFNQVC04MDB8U1AtMTIwfFNQVC04MDB8U1AtMTQwfFNQWC01fFNQWC04fFNQLTEwMHxTUFgtOHxTUFgtMTIpXGInLAogICAgICAgIC8vIEBUYXBhdGFsayBpcyBhIG1vYmlsZSBhcHA7IEByZWY6IGh0dHA6Ly9zdXBwb3J0LnRhcGF0YWxrLmNvbS90aHJlYWRzL3NtZi0yLTAtMi1vcy1hbmQtYnJvd3Nlci1kZXRlY3Rpb24tcGx1Z2luLWFuZC10YXBhdGFsay4xNTU2NS8jcG9zdC03OTAzOQogICAgICAgICdHZW5lcmljUGhvbmUnICA9PiAnVGFwYXRhbGt8UERBO3xTQUdFTXxtbXB8cG9ja2V0fHBzcHxzeW1iaWFufFNtYXJ0cGhvbmV8c21hcnRmb258dHJlb3x1cC5icm93c2VyfHVwLmxpbmt8dm9kYWZvbmV8d2FwfG5va2lhfFNlcmllczQwfFNlcmllczYwfFM2MHxTb255RXJpY3Nzb258TjkwMHxNQVVJLipXQVAuKkJyb3dzZXInCiAgICApOwoKICAgIC8qKgogICAgICogTGlzdCBvZiB0YWJsZXQgZGV2aWNlcy4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgJHRhYmxldERldmljZXMgPSBhcnJheSgKICAgICAgICAnaVBhZCcgICAgICAgICAgICAgID0+ICdpUGFkfGlQYWQuKk1vYmlsZScsIC8vIEB0b2RvOiBjaGVjayBmb3IgbW9iaWxlIGZyaWVuZGx5IGVtYWlscyB0b3BpYy4KICAgICAgICAnTmV4dXNUYWJsZXQnICAgICAgID0+ICdeLipBbmRyb2lkLipOZXh1cygoKD86KD8hTW9iaWxlKSl8KD86KFxzKDd8MTApLispKSkuKSokJywKICAgICAgICAnU2Ftc3VuZ1RhYmxldCcgICAgID0+ICdTQU1TVU5HLipUYWJsZXR8R2FsYXh5LipUYWJ8U0MtMDFDfEdULVAxMDAwfEdULVAxMDAzfEdULVAxMDEwfEdULVAzMTA1fEdULVA2MjEwfEdULVA2ODAwfEdULVA2ODEwfEdULVA3MTAwfEdULVA3MzAwfEdULVA3MzEwfEdULVA3NTAwfEdULVA3NTEwfFNDSC1JODAwfFNDSC1JODE1fFNDSC1JOTA1fFNHSC1JOTU3fFNHSC1JOTg3fFNHSC1UODQ5fFNHSC1UODU5fFNHSC1UODY5fFNQSC1QMTAwfEdULVAzMTAwfEdULVAzMTA4fEdULVAzMTEwfEdULVA1MTAwfEdULVA1MTEwfEdULVA2MjAwfEdULVA3MzIwfEdULVA3NTExfEdULU44MDAwfEdULVA4NTEwfFNHSC1JNDk3fFNQSC1QNTAwfFNHSC1UNzc5fFNDSC1JNzA1fFNDSC1JOTE1fEdULU44MDEzfEdULVAzMTEzfEdULVA1MTEzfEdULVA4MTEwfEdULU44MDEwfEdULU44MDA1fEdULU44MDIwfEdULVAxMDEzfEdULVA2MjAxfEdULVA3NTAxfEdULU41MTAwfEdULU41MTEwfFNIVi1FMTQwS3xTSFYtRTE0MEx8U0hWLUUxNDBTfFNIVi1FMTUwU3xTSFYtRTIzMEt8U0hWLUUyMzBMfFNIVi1FMjMwU3xTSFctTTE4MEt8U0hXLU0xODBMfFNIVy1NMTgwU3xTSFctTTE4MFd8U0hXLU0zMDBXfFNIVy1NMzA1V3xTSFctTTM4MEt8U0hXLU0zODBTfFNIVy1NMzgwV3xTSFctTTQzMFd8U0hXLU00ODBLfFNIVy1NNDgwU3xTSFctTTQ4MFd8U0hXLU00ODVXfFNIVy1NNDg2V3xTSFctTTUwMFd8R1QtSTkyMjh8U0NILVA3Mzl8U0NILUk5MjV8R1QtSTkyMDB8R1QtSTkyMDV8R1QtUDUyMDB8R1QtUDUyMTB8U00tVDMxMXxTTS1UMzEwfFNNLVQyMTB8U00tVDIxMXxTTS1QOTAwJywKICAgICAgICAvLyBAcmVmZXJlbmNlOiBodHRwOi8vd3d3LmxhYm5vbC5vcmcvc29mdHdhcmUva2luZGxlLXVzZXItYWdlbnQtc3RyaW5nLzIwMzc4LwogICAgICAgICdLaW5kbGUnICAgICAgICAgICAgPT4gJ0tpbmRsZXxTaWxrLipBY2NlbGVyYXRlZHxBbmRyb2lkLipcYihLRlRUfEtGT1RFKVxiJywKICAgICAgICAvLyBPbmx5IHRoZSBTdXJmYWNlIHRhYmxldHMgd2l0aCBXaW5kb3dzIFJUIGFyZSBjb25zaWRlcmVkIG1vYmlsZS4KICAgICAgICAvLyBAcmVmOiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvaGg5MjA3Njcodj12cy44NSkuYXNweAogICAgICAgICdTdXJmYWNlVGFibGV0JyAgICAgPT4gJ1dpbmRvd3MgTlQgWzAtOS5dKzsgQVJNOycsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3Nob3BwaW5nMS5ocC5jb20vaXMtYmluL0lOVEVSU0hPUC5lbmZpbml0eS9XRlMvV1ctVVNTTUJQdWJsaWNTdG9yZS1TaXRlL2VuX1VTLy0vVVNEL1ZpZXdTdGFuZGFyZENhdGFsb2ctQnJvd3NlP0NhdGFsb2dDYXRlZ29yeUlEPUpmSVE3RU41bHFNQUFBRXlEY0pVRHdNVAogICAgICAgICdIUFRhYmxldCcgICAgICAgICAgPT4gJ0hQIFNsYXRlIDd8SFAgRWxpdGVQYWQgOTAwfGhwLXRhYmxldHxFbGl0ZUJvb2suKlRvdWNoJywKICAgICAgICAvLyBAbm90ZTogd2F0Y2ggb3V0IGZvciBQYWRGb25lLCBzZWUgIzEzMgogICAgICAgICdBc3VzVGFibGV0JyAgICAgICAgPT4gJ1RyYW5zZm9ybWVyfFRGMTAxfF4uKlBhZEZvbmUoKD8hTW9iaWxlKS4pKiR8TUUzMDFUfE1FMzcxTUd8TUUxNzJWfE1FMTczWHxURjMwMFQnLAogICAgICAgICdCbGFja0JlcnJ5VGFibGV0JyAgPT4gJ1BsYXlCb29rfFJJTSBUYWJsZXQnLAogICAgICAgICdIVEN0YWJsZXQnICAgICAgICAgPT4gJ0hUQyBGbHllcnxIVEMgSmV0c3RyZWFtfEhUQy1QNzE1YXxIVEMgRVZPIFZpZXcgNEd8UEc0MTIwMCcsCiAgICAgICAgJ01vdG9yb2xhVGFibGV0JyAgICA9PiAneG9vbXxzaG9sZXN0fE1aNjE1fE1aNjA1fE1aNTA1fE1aNjAxfE1aNjAyfE1aNjAzfE1aNjA0fE1aNjA2fE1aNjA3fE1aNjA4fE1aNjA5fE1aNjE1fE1aNjE2fE1aNjE3JywKICAgICAgICAnTm9va1RhYmxldCcgICAgICAgID0+ICdBbmRyb2lkLipOb29rfE5vb2tDb2xvcnxub29rIGJyb3dzZXJ8Qk5SVjIwMHxCTlJWMjAwQXxCTlRWMjUwfEJOVFYyNTBBfEJOVFY0MDB8Qk5UVjYwMHxMb2dpY1BEIFpvb20yJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmFjZXIucm8vYWMvcm8vUk8vY29udGVudC9kcml2ZXJzCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5wYWNrYXJkYmVsbC5jby51ay9wYi9lbi9HQi9jb250ZW50L2Rvd25sb2FkIChQYWNrYXJkIEJlbGwgaXMgcGFydCBvZiBBY2VyKQogICAgICAgIC8vIEBub3RlOiBDYW4gY29uZmxpY3Qgd2l0aCBNaWNyb21heCBwaG9uZXMgY29kZXMuCiAgICAgICAgJ0FjZXJUYWJsZXQnICAgICAgICA9PiAnQW5kcm9pZC4qOyBcYihBMTAwfEExMDF8QTExMHxBMjAwfEEyMTB8QTIxMXxBNTAwfEE1MDF8QTUxMHxBNTExfEE3MDB8QTcwMXxXNTAwfFc1MDBQfFc1MDF8VzUwMVB8VzUxMHxXNTExfFc3MDB8RzEwMHxHMTAwV3xCMS1BNzEpXGInLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly9ldS5jb21wdXRlcnMudG9zaGliYS1ldXJvcGUuY29tL2lubm92YXRpb24vZmFtaWx5L1RhYmxldHMvMTA5ODc0NC9iYW5uZXJfaWQvdGFibGV0X2Zvb3RlcmxpbmsvCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3VzLnRvc2hpYmEuY29tL3RhYmxldHMvdGFibGV0LWZpbmRlcgogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cudG9zaGliYS5jby5qcC9yZWd6YS90YWJsZXQvCiAgICAgICAgJ1Rvc2hpYmFUYWJsZXQnICAgICA9PiAnQW5kcm9pZC4qKEFUMTAwfEFUMTA1fEFUMjAwfEFUMjA1fEFUMjcwfEFUMjc1fEFUMzAwfEFUMzA1fEFUMVM1fEFUNTAwfEFUNTcwfEFUNzAwfEFUODMwKXxUT1NISUJBLipGT0xJTycsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5udHRkb2NvbW8uY28uanAvZW5nbGlzaC9zZXJ2aWNlL2RldmVsb3Blci9zbWFydF9waG9uZS90ZWNobmljYWxfaW5mby9zcGVjL2luZGV4Lmh0bWwKICAgICAgICAnTEdUYWJsZXQnICAgICAgICAgID0+ICdcYkwtMDZDfExHLVY5MDB8TEctVjkwOVxiJywKICAgICAgICAnRnVqaXRzdVRhYmxldCcgICAgID0+ICdBbmRyb2lkLipcYihGLTAxRHxGLTA1RXxGLTEwRHxNNTMyfFE1NzIpXGInLAogICAgICAgIC8vIFByZXN0aWdpbyBUYWJsZXRzIGh0dHA6Ly93d3cucHJlc3RpZ2lvLmNvbS9zdXBwb3J0CiAgICAgICAgJ1ByZXN0aWdpb1RhYmxldCcgICA9PiAnUE1QMzE3MEJ8UE1QMzI3MEJ8UE1QMzQ3MEJ8UE1QNzE3MEJ8UE1QMzM3MEJ8UE1QMzU3MEN8UE1QNTg3MEN8UE1QMzY3MEJ8UE1QNTU3MEN8UE1QNTc3MER8UE1QMzk3MEJ8UE1QMzg3MEN8UE1QNTU4MEN8UE1QNTg4MER8UE1QNTc4MER8UE1QNTU4OEN8UE1QNzI4MEN8UE1QNzI4MHxQTVA3ODgwRHxQTVA1NTk3RHxQTVA1NTk3fFBNUDcxMDBEfFBFUjM0NjR8UEVSMzI3NHxQRVIzNTc0fFBFUjM4ODR8UEVSNTI3NHxQRVI1NDc0fFBNUDUwOTdDUFJPfFBNUDUwOTd8UE1QNzM4MEQnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly9zdXBwb3J0Lmxlbm92by5jb20vZW5fR0IvZG93bmxvYWRzL2RlZmF1bHQucGFnZT8jCiAgICAgICAgJ0xlbm92b1RhYmxldCcgICAgICA9PiAnSWRlYVRhYnxTMjExMHxTNjAwMHxLMzAxMXxBMzAwMHxBMTAwMHxBMjEwN3xBMjEwOXxBMTEwNycsCiAgICAgICAgJ1lhcnZpa1RhYmxldCcgICAgICA9PiAnQW5kcm9pZC4qKFRBQjIxMHxUQUIyMTF8VEFCMjI0fFRBQjI1MHxUQUIyNjB8VEFCMjY0fFRBQjMxMHxUQUIzNjB8VEFCMzY0fFRBQjQxMHxUQUI0MTF8VEFCNDIwfFRBQjQyNHxUQUI0NTB8VEFCNDYwfFRBQjQ2MXxUQUI0NjR8VEFCNDY1fFRBQjQ2N3xUQUI0NjgpJywKICAgICAgICAnTWVkaW9uVGFibGV0JyAgICAgID0+ICdBbmRyb2lkLipcYk9ZT1xifExJRkUuKihQOTIxMnxQOTUxNHxQOTUxNnxTOTUxMil8TElGRVRBQicsCiAgICAgICAgJ0Fybm92YVRhYmxldCcgICAgICA9PiAnQU4xMEcyfEFON2JHM3xBTjdmRzN8QU44RzN8QU44Y0czfEFON0czfEFOOUczfEFON2RHM3xBTjdkRzNTVHxBTjdkRzNDaGlsZFBhZHxBTjEwYkczfEFOMTBiRzNEVCcsCiAgICAgICAgLy8gSVJVLnJ1IFRhYmxldHMgaHR0cDovL3d3dy5pcnUucnUvY2F0YWxvZy9zb2hvL3BsYW5ldGFibGUvCiAgICAgICAgJ0lSVVRhYmxldCcgICAgICAgICA9PiAnTTcwMnBybycsCiAgICAgICAgJ01lZ2Fmb25UYWJsZXQnICAgICA9PiAnTWVnYUZvbiBWOXxaVEUgVjknLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuYWxsdmlldy5yby9wcm9kdXNlL2Ryb3Nlcmllcy9saXN0YS10YWJsZXRlLXBjLwogICAgICAgICdBbGxWaWV3VGFibGV0JyAgICAgICAgICAgPT4gJ0FsbHZpZXcuKihWaXZhfEFsbGRyb3xDaXR5fFNwZWVkfEFsbCBUVnxGcmVuenl8UXVhc2FyfFNoaW5lfFRYMXxBWDF8QVgyKScsCiAgICAgICAgLy8gQHJlZmVyZW5jZTogaHR0cDovL3dpa2kuYXJjaG9zZmFucy5jb20vaW5kZXgucGhwP3RpdGxlPU1haW5fUGFnZQogICAgICAgICdBcmNob3NUYWJsZXQnICAgICAgPT4gJ1xiKDEwMUc5fDgwRzl8QTEwMUlUKVxiJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmFpbm9sLmNvbS9wbHVnaW4ucGhwP2lkZW50aWZpZXI9YWlub2wmbW9kdWxlPXByb2R1Y3QKICAgICAgICAnQWlub2xUYWJsZXQnICAgICAgID0+ICdOT1ZPN3xOT1ZPOHxOT1ZPMTB8Tm92bzdBdXJvcmF8Tm92bzdCYXNpY3xOT1ZPN1BBTEFESU58bm92bzktU3BhcmsnLAogICAgICAgIC8vIEB0b2RvOiBpbnNwZWN0IGh0dHA6Ly9lc3VwcG9ydC5zb255LmNvbS9VUy9wL3NlbGVjdC1zeXN0ZW0ucGw/RElSRUNUT1I9RFJJVkVSCiAgICAgICAgLy8gQHJlZjogUmVhZGVycyBodHRwOi8vd3d3LmF0c3VoaXJvLW1lLm5ldC9lYm9vay9zb255LXJlYWRlci9zb255LXJlYWRlci13ZWItYnJvd3NlcgogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuc29ueS5qcC9zdXBwb3J0L3RhYmxldC8KICAgICAgICAnU29ueVRhYmxldCcgICAgICAgID0+ICdTb255LipUYWJsZXR8WHBlcmlhIFRhYmxldHxTb255IFRhYmxldCBTfFNPLTAzRXxTR1BUMTJ8U0dQVDEyMXxTR1BUMTIyfFNHUFQxMjN8U0dQVDExMXxTR1BUMTEyfFNHUFQxMTN8U0dQVDIxMXxTR1BUMjEzfFNHUDMxMXxTR1AzMTJ8U0dQMzIxfEVCUkQxMTAxfEVCUkQxMTAyfEVCUkQxMjAxJywKICAgICAgICAvLyBAcmVmOiBkYiArIGh0dHA6Ly93d3cuY3ViZS10YWJsZXQuY29tL2J1eS1wcm9kdWN0cy5odG1sCiAgICAgICAgJ0N1YmVUYWJsZXQnICAgICAgICA9PiAnQW5kcm9pZC4qKEs4R1R8VTlHVHxVMTBHVHxVMTZHVHxVMTdHVHxVMThHVHxVMTlHVHxVMjBHVHxVMjNHVHxVMzBHVCl8Q1VCRSBVOEdUJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmNvYnl1c2EuY29tLz9wPXBjYXQmcGNhdF9pZD0zMDAxCiAgICAgICAgJ0NvYnlUYWJsZXQnICAgICAgICA9PiAnTUlEMTA0MnxNSUQxMDQ1fE1JRDExMjV8TUlEMTEyNnxNSUQ3MDEyfE1JRDcwMTR8TUlENzAxNXxNSUQ3MDM0fE1JRDcwMzV8TUlENzAzNnxNSUQ3MDQyfE1JRDcwNDh8TUlENzEyN3xNSUQ4MDQyfE1JRDgwNDh8TUlEODEyN3xNSUQ5MDQyfE1JRDk3NDB8TUlEOTc0MnxNSUQ3MDIyfE1JRDcwMTAnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cubWF0Y2gubmV0LmNuL3Byb2R1Y3RzLmFzcAogICAgICAgICdNSURUYWJsZXQnICAgICAgICAgPT4gJ005NzAxfE05MDAwfE05MTAwfE04MDZ8TTEwNTJ8TTgwNnxUNzAzfE1JRDcwMXxNSUQ3MTN8TUlENzEwfE1JRDcyN3xNSUQ3NjB8TUlEODMwfE1JRDcyOHxNSUQ5MzN8TUlEMTI1fE1JRDgxMHxNSUQ3MzJ8TUlEMTIwfE1JRDkzMHxNSUQ4MDB8TUlENzMxfE1JRDkwMHxNSUQxMDB8TUlEODIwfE1JRDczNXxNSUQ5ODB8TUlEMTMwfE1JRDgzM3xNSUQ3Mzd8TUlEOTYwfE1JRDEzNXxNSUQ4NjB8TUlENzM2fE1JRDE0MHxNSUQ5MzB8TUlEODM1fE1JRDczMycsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3BkYWRiLm5ldC9pbmRleC5waHA/bT1wZGFsaXN0Jmxpc3Q9U01pVCAoTm9OYW1lIENoaW5lc2UgVGFibGV0cykKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmltcDMubmV0LzE0L3Nob3cucGhwP2l0ZW1pZD0yMDQ1NAogICAgICAgICdTTWlUVGFibGV0JyAgICAgICAgPT4gJ0FuZHJvaWQuKihcYk1JRFxifE1JRC01NjB8TVRWLVQxMjAwfE1UVi1QTkQ1MzF8TVRWLVAxMTAxfE1UVi1QTkQ1MzApJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LnJvY2stY2hpcHMuY29tL2luZGV4LnBocD9kbz1wcm9kJnBpZD0yCiAgICAgICAgJ1JvY2tDaGlwVGFibGV0JyAgICA9PiAnQW5kcm9pZC4qKFJLMjgxOHxSSzI4MDhBfFJLMjkxOHxSSzMwNjYpfFJLMjczOHxSSzI4MDhBJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmZseS1waG9uZS5jb20vZGV2aWNlcy90YWJsZXRzLyA7IGh0dHA6Ly93d3cuZmx5LXBob25lLmNvbS9zZXJ2aWNlLwogICAgICAgICdGbHlUYWJsZXQnICAgICAgICAgPT4gJ0lRMzEwfEZseSBWaXNpb24nLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuYnFyZWFkZXJzLmNvbS9nYi90YWJsZXRzLXByaWNlcy1zYWxlLmh0bWwKICAgICAgICAnYnFUYWJsZXQnICAgICAgICAgID0+ICdicS4qKEVsY2Fub3xDdXJpZXxFZGlzb258TWF4d2VsbHxLZXBsZXJ8UGFzY2FsfFRlc2xhfEh5cGF0aWF8UGxhdG9ufE5ld3RvbnxMaXZpbmdzdG9uZXxDZXJ2YW50ZXN8QXZhbnQpfE1heHdlbGwuKkxpdGV8TWF4d2VsbC4qUGx1cycsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5odWF3ZWlkZXZpY2UuY29tL3dvcmxkd2lkZS9wcm9kdWN0RmFtaWx5LmRvP21ldGhvZD1pbmRleCZkaXJlY3RvcnlJZD01MDExJnRyZWVJZD0zMjkwCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5odWF3ZWlkZXZpY2UuY29tL3dvcmxkd2lkZS9kb3dubG9hZENlbnRlci5kbz9tZXRob2Q9aW5kZXgmZGlyZWN0b3J5SWQ9MzM3MiZ0cmVlSWQ9MCZ0Yj0xJnR5cGU9c29mdHdhcmUgKGluY2x1ZGluZyBsZWdhY3kgdGFibGV0cykKICAgICAgICAnSHVhd2VpVGFibGV0JyAgICAgID0+ICdNZWRpYVBhZHxJREVPUyBTN3xTNy0yMDFjfFM3LTIwMnV8UzctMTAxfFM3LTEwM3xTNy0xMDR8UzctMTA1fFM3LTEwNnxTNy0yMDF8UzctU2xpbScsCiAgICAgICAgLy8gTmVjIG9yIE1lZGlhcyBUYWIKICAgICAgICAnTmVjVGFibGV0JyAgICAgICAgID0+ICdcYk4tMDZEfFxiTi0wOEQnLAogICAgICAgIC8vIFBhbnRlY2ggVGFibGV0czogaHR0cDovL3d3dy5wYW50ZWNodXNhLmNvbS9waG9uZXMvCiAgICAgICAgJ1BhbnRlY2hUYWJsZXQnICAgICA9PiAnUGFudGVjaC4qUDQxMDAnLAogICAgICAgIC8vIEJyb25jaG8gVGFibGV0czogaHR0cDovL3d3dy5icm9uY2hvLmNuLyAoaGFyZCB0byBmaW5kKQogICAgICAgICdCcm9uY2hvVGFibGV0JyAgICAgPT4gJ0Jyb25jaG8uKihONzAxfE43MDh8TjgwMnxhNzEwKScsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3ZlcnN1c3VrLmNvbS9zdXBwb3J0Lmh0bWwKICAgICAgICAnVmVyc3VzVGFibGV0JyAgICAgID0+ICdUT1VDSFBBRC4qWzc4OTEwXXxcYlRPVUNIVEFCXGInLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuenluYy5pbi9pbmRleC5waHAvb3VyLXByb2R1Y3RzL3RhYmxldC1waGFibGV0cwogICAgICAgICdaeW5jVGFibGV0JyAgICAgICAgPT4gJ3oxMDAwfFo5OSAyR3x6OTl8ejkzMHx6OTk5fHo5OTB8ejkwOXxaOTE5fHo5MDAnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cucG9zaXRpdm9pbmZvcm1hdGljYS5jb20uYnIvd3d3L3Blc3NvYWwvdGFibGV0LXlweS8KICAgICAgICAnUG9zaXRpdm9UYWJsZXQnICAgID0+ICdUQjA3U1RBfFRCMTBTVEF8VEIwN0ZUQXxUQjEwRlRBJywKICAgICAgICAvLyBAcmVmOiBodHRwczovL3d3dy5uYWJpdGFibGV0LmNvbS8KICAgICAgICAnTmFiaVRhYmxldCcgICAgICAgID0+ICdBbmRyb2lkLipcYk5hYmknLAogICAgICAgICdLb2JvVGFibGV0JyAgICAgICAgPT4gJ0tvYm8gVG91Y2h8XGJLMDgwXGJ8XGJWb3hcYiBCdWlsZHxcYkFyY1xiIEJ1aWxkJywKICAgICAgICAvLyBGcmVuY2ggRGFuZXcgVGFibGV0cyBodHRwOi8vd3d3LmRhbmV3LmNvbS9wcm9kdWl0cy10YWJsZXR0ZS5waHAKICAgICAgICAnRGFuZXdUYWJsZXQnICAgICAgID0+ICdEU2xpZGUuKlxiKDcwMHw3MDFSfDcwMnw3MDNSfDcwNHw4MDJ8OTcwfDk3MXw5NzJ8OTczfDk3NHwxMDEwfDEwMTIpXGInLAogICAgICAgIC8vIFRleGV0IFRhYmxldHMgYW5kIFJlYWRlcnMgaHR0cDovL3d3dy50ZXhldC5ydS90YWJsZXQvCiAgICAgICAgJ1RleGV0VGFibGV0JyAgICAgICA9PiAnTmF2aVBhZHxUQi03NzJBfFRNLTcwNDV8VE0tNzA1NXxUTS05NzUwfFRNLTcwMTZ8VE0tNzAyNHxUTS03MDI2fFRNLTcwNDF8VE0tNzA0M3xUTS03MDQ3fFRNLTgwNDF8VE0tOTc0MXxUTS05NzQ3fFRNLTk3NDh8VE0tOTc1MXxUTS03MDIyfFRNLTcwMjF8VE0tNzAyMHxUTS03MDExfFRNLTcwMTB8VE0tNzAyM3xUTS03MDI1fFRNLTcwMzdXfFRNLTcwMzhXfFRNLTcwMjdXfFRNLTk3MjB8VE0tOTcyNXxUTS05NzM3V3xUTS0xMDIwfFRNLTk3MzhXfFRNLTk3NDB8VE0tOTc0M1d8VEItODA3QXxUQi03NzFBfFRCLTcyN0F8VEItNzI1QXxUQi03MTlBfFRCLTgyM0F8VEItODA1QXxUQi03MjNBfFRCLTcxNUF8VEItNzA3QXxUQi03MDVBfFRCLTcwOUF8VEItNzExQXxUQi04OTBIRHxUQi04ODBIRHxUQi03OTBIRHxUQi03ODBIRHxUQi03NzBIRHxUQi03MjFIRHxUQi03MTBIRHxUQi00MzRIRHxUQi04NjBIRHxUQi04NDBIRHxUQi03NjBIRHxUQi03NTBIRHxUQi03NDBIRHxUQi03MzBIRHxUQi03MjJIRHxUQi03MjBIRHxUQi03MDBIRHxUQi01MDBIRHxUQi00NzBIRHxUQi00MzFIRHxUQi00MzBIRHxUQi01MDZ8VEItNTA0fFRCLTQ0NnxUQi00MzZ8VEItNDE2fFRCLTE0NlNFfFRCLTEyNlNFJywKICAgICAgICAvLyBAbm90ZTogQXZvaWQgZGV0ZWN0aW5nICdQTEFZU1RBVElPTiAzJyBhcyBtb2JpbGUuCiAgICAgICAgJ1BsYXlzdGF0aW9uVGFibGV0JyA9PiAnUGxheXN0YXRpb24uKihQb3J0YWJsZXxWaXRhKScsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5nYWxhcGFkLm5ldC9wcm9kdWN0Lmh0bWwKICAgICAgICAnR2FsYXBhZFRhYmxldCcgICAgID0+ICdBbmRyb2lkLipcYkcxXGInLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cubWljcm9tYXhpbmZvLmNvbS90YWJsZXQvZnVuYm9vawogICAgICAgICdNaWNyb21heFRhYmxldCcgICAgPT4gJ0Z1bmJvb2t8TWljcm9tYXguKlxiKFAyNTB8UDU2MHxQMzYwfFAzNjJ8UDYwMHxQMzAwfFAzNTB8UDUwMHxQMjc1KVxiJywKICAgICAgICAvLyBodHRwOi8vd3d3LmthcmJvbm5tb2JpbGVzLmNvbS9wcm9kdWN0c190YWJsZXQucGhwCiAgICAgICAgJ0thcmJvbm5UYWJsZXQnICAgICA9PiAnQW5kcm9pZC4qXGIoQTM5fEEzN3xBMzR8U1Q4fFNUMTB8U1Q3fFNtYXJ0IFRhYjN8U21hcnQgVGFiMilcYicsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5teWFsbGZpbmUuY29tL1Byb2R1Y3RzLmFzcAogICAgICAgICdBbGxGaW5lVGFibGV0JyAgICAgPT4gJ0ZpbmU3IEdlbml1c3xGaW5lNyBTaGluZXxGaW5lNyBBaXJ8RmluZTggU3R5bGV8RmluZTkgTW9yZXxGaW5lMTAgSm95fEZpbmUxMSBXaWRlJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LnByb3NjYW52aWRlby5jb20vcHJvZHVjdHMtc2VhcmNoLmFzcD9pdGVtQ2xhc3M9VEFCTEVUJml0ZW1ubWJyPQogICAgICAgICdQUk9TQ0FOVGFibGV0JyAgICAgPT4gJ1xiKFBFTTYzfFBMVDEwMjNHfFBMVDEwNDF8UExUMTA0NHxQTFQxMDQ0R3xQTFQxMDkxfFBMVDQzMTF8UExUNDMxMVBMfFBMVDQzMTV8UExUNzAzMHxQTFQ3MDMzfFBMVDcwMzNEfFBMVDcwMzV8UExUNzAzNUR8UExUNzA0NEt8UExUNzA0NUt8UExUNzA0NUtCfFBMVDcwNzFLR3xQTFQ3MDcyfFBMVDcyMjNHfFBMVDcyMjVHfFBMVDc3NzdHfFBMVDc4MTBLfFBMVDc4NDlHfFBMVDc4NTFHfFBMVDc4NTJHfFBMVDgwMTV8UExUODAzMXxQTFQ4MDM0fFBMVDgwMzZ8UExUODA4MEt8UExUODA4MnxQTFQ4MDg4fFBMVDgyMjNHfFBMVDgyMzRHfFBMVDgyMzVHfFBMVDg4MTZLfFBMVDkwMTF8UExUOTA0NUt8UExUOTIzM0d8UExUOTczNXxQTFQ5NzYwR3xQTFQ5NzcwRylcYicsCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy55b25lc25hdi5jb20vcHJvZHVjdHMvcHJvZHVjdHMucGhwCiAgICAgICAgJ1lPTkVTVGFibGV0JyA9PiAnQlExMDc4fEJDMTAwM3xCQzEwNzd8Uks5NzAyfEJDOTczMHxCQzkwMDF8SVQ5MDAxfEJDNzAwOHxCQzcwMTB8QkM3MDh8QkM3Mjh8QkM3MDEyfEJDNzAzMHxCQzcwMjd8QkM3MDI2JywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmNqc2hvd3Jvb20uY29tL2Vwcm9kdWN0cy5hc3B4P2NsYXNzY29kZT0wMDQwMDEwMDEKICAgICAgICAvLyBDaGluYSBtYW51ZmFjdHVyZXIgbWFrZXMgdGFibGV0cyBmb3IgZGlmZmVyZW50IHNtYWxsIGJyYW5kcyAoZWcuIGh0dHA6Ly93d3cuemVlcGFkLm5ldC9pbmRleC5odG1sKQogICAgICAgICdDaGFuZ0ppYVRhYmxldCcgICAgPT4gJ1RQQzcxMDJ8VFBDNzEwM3xUUEM3MTA1fFRQQzcxMDZ8VFBDNzEwN3xUUEM3MjAxfFRQQzcyMDN8VFBDNzIwNXxUUEM3MjEwfFRQQzc3MDh8VFBDNzcwOXxUUEM3NzEyfFRQQzcxMTB8VFBDODEwMXxUUEM4MTAzfFRQQzgxMDV8VFBDODEwNnxUUEM4MjAzfFRQQzgyMDV8VFBDODUwM3xUUEM5MTA2fFRQQzk3MDF8VFBDOTcxMDF8VFBDOTcxMDN8VFBDOTcxMDV8VFBDOTcxMDZ8VFBDOTcxMTF8VFBDOTcxMTN8VFBDOTcyMDN8VFBDOTc2MDN8VFBDOTc4MDl8VFBDOTcyMDV8VFBDMTAxMDF8VFBDMTAxMDN8VFBDMTAxMDZ8VFBDMTAxMTF8VFBDMTAyMDN8VFBDMTAyMDV8VFBDMTA1MDMnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly93d3cuZ2xvcnl1bmlvbi5jbi9wcm9kdWN0cy5hc3AKICAgICAgICAvLyBAcmVmOiBodHRwOi8vd3d3LmFsbHdpbm5lcnRlY2guY29tL2VuL2FwcGx5L21vYmlsZS5odG1sCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy5wdGNsLmNvbS5way9wZF9jb250ZW50LnBocD9wZF9pZD0yODQgKEVWT1RBQikKICAgICAgICAvLyBha2EuIEN1dGUgb3IgQ29vbCB0YWJsZXRzLiBOb3Qgc3VyZSB5ZXQsIG11c3QgcmVzZWFyY2ggdG8gYXZvaWQgY29sbGlzaW9ucy4KICAgICAgICAnR1VUYWJsZXQnICAgICAgICAgID0+ICdUWC1BMTMwMXxUWC1NOTAwMnxRNzAyJywgLy8gQTEyUnxENzVBfEQ3N3xENzl8UjgzfEE5NXxBMTA2Q3xSMTV8QTc1fEE3NnxENzF8RDcyfFI3MXxSNzN8Ujc3fEQ4MnxSODV8RDkyfEE5N3xEOTJ8UjkxfEExMEZ8QTc3RnxXNzFGfEE3OEZ8Vzc4RnxXODFGfEE5N0Z8VzkxRnxXOTdGfFIxNkd8QzcyfEM3M0V8SzcyfEs3M3xSOTZHCiAgICAgICAgLy8gQHJlZjogaHR0cDovL3d3dy50ZWxzdHJhLmNvbS5hdS9ob21lLXBob25lL3RodWItMi8KICAgICAgICAnVGVsc3RyYVRhYmxldCcgICAgID0+ICdULUh1YjInLAogICAgICAgICdHZW5lcmljVGFibGV0JyAgICAgPT4gJ0FuZHJvaWQuKlxiOTdEXGJ8VGFibGV0KD8hLipQQyl8Vmlld1BhZDd8Qk5UVjI1MEF8TUlELVdDRE1BfExvZ2ljUEQgWm9vbTJ8XGJBN0VCXGJ8Q2F0Tm92YTh8QTFfMDd8Q1Q3MDR8Q1QxMDAyfFxiTTcyMVxifHJrMzBzZGt8XGJFVk9UQUJcYicsCiAgICApOwoKICAgIC8qKgogICAgICogTGlzdCBvZiBtb2JpbGUgT3BlcmF0aW5nIFN5c3RlbXMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRvcGVyYXRpbmdTeXN0ZW1zID0gYXJyYXkoCiAgICAgICAgJ0FuZHJvaWRPUycgICAgICAgICA9PiAnQW5kcm9pZCcsCiAgICAgICAgJ0JsYWNrQmVycnlPUycgICAgICA9PiAnYmxhY2tiZXJyeXxcYkJCMTBcYnxyaW0gdGFibGV0IG9zJywKICAgICAgICAnUGFsbU9TJyAgICAgICAgICAgID0+ICdQYWxtT1N8YXZhbnRnb3xibGF6ZXJ8ZWxhaW5lfGhpcHRvcHxwYWxtfHBsdWNrZXJ8eGlpbm8nLAogICAgICAgICdTeW1iaWFuT1MnICAgICAgICAgPT4gJ1N5bWJpYW58U3ltYk9TfFNlcmllczYwfFNlcmllczQwfFNZQi1bMC05XSt8XGJTNjBcYicsCiAgICAgICAgLy8gQHJlZmVyZW5jZTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX01vYmlsZQogICAgICAgICdXaW5kb3dzTW9iaWxlT1MnICAgPT4gJ1dpbmRvd3MgQ0UuKihQUEN8U21hcnRwaG9uZXxNb2JpbGV8WzAtOV17M314WzAtOV17M30pfFdpbmRvdyBNb2JpbGV8V2luZG93cyBQaG9uZSBbMC05Ll0rfFdDRTsnLAogICAgICAgIC8vIEByZWZlcmVuY2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19QaG9uZQogICAgICAgIC8vIGh0dHA6Ly93aWZlbmcuY24vP3I9YmxvZyZhPXZpZXcmaWQ9MTA2CiAgICAgICAgLy8gaHR0cDovL25pY2tzbmV0dHJhdmVscy5idWlsdHRvcm9hbS5jb20vcG9zdC8yMDExLzAxLzEwL0JvZ3VzLVdpbmRvd3MtUGhvbmUtNy1Vc2VyLUFnZW50LVN0cmluZy5hc3B4CiAgICAgICAgJ1dpbmRvd3NQaG9uZU9TJyAgID0+ICdXaW5kb3dzIFBob25lIDguMHxXaW5kb3dzIFBob25lIE9TfFhCTFdQN3xadW5lV1A3JywKICAgICAgICAnaU9TJyAgICAgICAgICAgICAgID0+ICdcYmlQaG9uZS4qTW9iaWxlfFxiaVBvZHxcYmlQYWQnLAogICAgICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVlR28KICAgICAgICAvLyBAdG9kbzogcmVzZWFyY2ggTWVlR28gaW4gVUFzCiAgICAgICAgJ01lZUdvT1MnICAgICAgICAgICA9PiAnTWVlR28nLAogICAgICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFlbW8KICAgICAgICAvLyBAdG9kbzogcmVzZWFyY2ggTWFlbW8gaW4gVUFzCiAgICAgICAgJ01hZW1vT1MnICAgICAgICAgICA9PiAnTWFlbW8nLAogICAgICAgICdKYXZhT1MnICAgICAgICAgICAgPT4gJ0oyTUUvfFxiTUlEUFxifFxiQ0xEQ1xiJywgLy8gJ3xKYXZhLycgcHJvZHVjZXMgYnVnICMxMzUKICAgICAgICAnd2ViT1MnICAgICAgICAgICAgID0+ICd3ZWJPU3xocHdPUycsCiAgICAgICAgJ2JhZGFPUycgICAgICAgICAgICA9PiAnXGJCYWRhXGInLAogICAgICAgICdCUkVXT1MnICAgICAgICAgICAgPT4gJ0JSRVcnLAogICAgKTsKCiAgICAvKioKICAgICAqIExpc3Qgb2YgbW9iaWxlIFVzZXIgQWdlbnRzLgogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkYnJvd3NlcnMgPSBhcnJheSgKICAgICAgICAvLyBAcmVmZXJlbmNlOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9jaHJvbWUvbW9iaWxlL2RvY3MvdXNlci1hZ2VudAogICAgICAgICdDaHJvbWUnICAgICAgICAgID0+ICdcYkNyTW9cYnxDcmlPU3xBbmRyb2lkLipDaHJvbWUvWy4wLTldKiAoTW9iaWxlKT8nLAogICAgICAgICdEb2xmaW4nICAgICAgICAgID0+ICdcYkRvbGZpblxiJywKICAgICAgICAnT3BlcmEnICAgICAgICAgICA9PiAnT3BlcmEuKk1pbml8T3BlcmEuKk1vYml8QW5kcm9pZC4qT3BlcmF8TW9iaWxlLipPUFIvWzAtOS5dKycsCiAgICAgICAgJ1NreWZpcmUnICAgICAgICAgPT4gJ1NreWZpcmUnLAogICAgICAgICdJRScgICAgICAgICAgICAgID0+ICdJRU1vYmlsZXxNU0lFTW9iaWxlJywgLy8gfFRyaWRlbnQvWy4wLTldKwogICAgICAgICdGaXJlZm94JyAgICAgICAgID0+ICdmZW5uZWN8ZmlyZWZveC4qbWFlbW98KE1vYmlsZXxUYWJsZXQpLipGaXJlZm94fEZpcmVmb3guKk1vYmlsZScsCiAgICAgICAgJ0JvbHQnICAgICAgICAgICAgPT4gJ2JvbHQnLAogICAgICAgICdUZWFTaGFyaycgICAgICAgID0+ICd0ZWFzaGFyaycsCiAgICAgICAgJ0JsYXplcicgICAgICAgICAgPT4gJ0JsYXplcicsCiAgICAgICAgLy8gQHJlZmVyZW5jZTogaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vQXBwbGVBcHBsaWNhdGlvbnMvUmVmZXJlbmNlL1NhZmFyaVdlYkNvbnRlbnQvT3B0aW1pemluZ2ZvclNhZmFyaW9uaVBob25lL09wdGltaXppbmdmb3JTYWZhcmlvbmlQaG9uZS5odG1sIy8vYXBwbGVfcmVmL2RvYy91aWQvVFA0MDAwNjUxNy1TVzMKICAgICAgICAnU2FmYXJpJyAgICAgICAgICA9PiAnVmVyc2lvbi4qTW9iaWxlLipTYWZhcml8U2FmYXJpLipNb2JpbGUnLAogICAgICAgIC8vIEByZWY6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWlkb3JpXyh3ZWJfYnJvd3NlcikKICAgICAgICAvLydNaWRvcmknICAgICAgICAgID0+ICdtaWRvcmknLAogICAgICAgICdUaXplbicgICAgICAgICAgID0+ICdUaXplbicsCiAgICAgICAgJ1VDQnJvd3NlcicgICAgICAgPT4gJ1VDLipCcm93c2VyfFVDV0VCJywKICAgICAgICAvLyBAcmVmOiBodHRwczovL2dpdGh1Yi5jb20vc2VyYmFuZ2hpdGEvTW9iaWxlLURldGVjdC9pc3N1ZXMvNwogICAgICAgICdEaWlnb0Jyb3dzZXInICAgID0+ICdEaWlnb0Jyb3dzZXInLAogICAgICAgIC8vIGh0dHA6Ly93d3cucHVmZmluYnJvd3Nlci5jb20vaW5kZXgucGhwCiAgICAgICAgJ1B1ZmZpbicgICAgICAgICAgICA9PiAnUHVmZmluJywKICAgICAgICAvLyBAcmVmOiBodHRwOi8vbWVyY3VyeS1icm93c2VyLmNvbS9pbmRleC5odG1sCiAgICAgICAgJ01lcmN1cnknICAgICAgICAgID0+ICdcYk1lcmN1cnlcYicsCiAgICAgICAgLy8gQHJlZmVyZW5jZTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW5pbW8KICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Zpc2lvbl9Nb2JpbGVfQnJvd3NlcgogICAgICAgICdHZW5lcmljQnJvd3NlcicgID0+ICdOb2tpYUJyb3dzZXJ8T3ZpQnJvd3NlcnxPbmVCcm93c2VyfFR3b25reUJlYW1Ccm93c2VyfFNFTUMuKkJyb3dzZXJ8Rmx5Rmxvd3xNaW5pbW98TmV0RnJvbnR8Tm92YXJyYS1WaXNpb258TVFRQnJvd3NlcnxNaWNyb01lc3NlbmdlcicKICAgICk7CgogICAgLyoqCiAgICAgKiBVdGlsaXRpZXMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICR1dGlsaXRpZXMgPSBhcnJheSgKICAgICAgICAvLyBFeHBlcmltZW50YWwuIFdoZW4gYSBtb2JpbGUgZGV2aWNlIHdhbnRzIHRvIHN3aXRjaCB0byAnRGVza3RvcCBNb2RlJy4KICAgICAgICAvLyBAcmVmOiBodHRwOi8vc2NvdHRjYXRlLmNvbS90ZWNobm9sb2d5L3dpbmRvd3MtcGhvbmUtOC1pZTEwLWRlc2t0b3Atb3ItbW9iaWxlLwogICAgICAgIC8vIEByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9zZXJiYW5naGl0YS9Nb2JpbGUtRGV0ZWN0L2lzc3Vlcy81NyNpc3N1ZWNvbW1lbnQtMTUwMjQwMTEKICAgICAgICAnRGVza3RvcE1vZGUnID0+ICdXUERlc2t0b3AnLAogICAgICAgICdUVicgICAgICAgICAgPT4gJ1NvbnlEVFZ8SGJiVFYnLCAvLyBleHBlcmltZW50YWwKICAgICAgICAnV2ViS2l0JyAgICAgID0+ICcod2Via2l0KVsgL10oW1x3Ll0rKScsCiAgICAgICAgJ0JvdCcgICAgICAgICA9PiAnR29vZ2xlYm90fERvQ29Nb3xZYW5kZXhCb3R8YmluZ2JvdHxpYV9hcmNoaXZlcnxBaHJlZnNCb3R8RXpvb21zfEdTTEZib3R8V0JTZWFyY2hCb3R8VHdpdHRlcmJvdHxUd2VldG1lbWVCb3R8VHdpa2xlfFBhcGVyTGlCb3R8V290Ym94fFVud2luZEZldGNob3J8ZmFjZWJvb2tleHRlcm5hbGhpdCcsCiAgICAgICAgJ01vYmlsZUJvdCcgICA9PiAnR29vZ2xlYm90LU1vYmlsZXxEb0NvTW98WWFob29TZWVrZXIvTTFBMS1SMkQyJywKICAgICAgICAnQ29uc29sZScgICAgID0+ICdcYihOaW50ZW5kb3xOaW50ZW5kbyBXaWlVfFBMQVlTVEFUSU9OfFhib3gpXGInLAogICAgICAgICdXYXRjaCcgICAgICAgPT4gJ1NNLVY3MDAnLAogICAgKTsKCiAgICAvKioKICAgICAqIFRoZSBpbmRpdmlkdWFsIHNlZ21lbnRzIHRoYXQgY291bGQgZXhpc3QgaW4gYSBVc2VyLUFnZW50IHN0cmluZy4gVkVSIHJlZmVycyB0byB0aGUgcmVndWxhcgogICAgICogZXhwcmVzc2lvbiBkZWZpbmVkIGluIHRoZSBjb25zdGFudCBzZWxmOjpWRVIuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRwcm9wZXJ0aWVzID0gYXJyYXkoCgogICAgICAgIC8vIEJ1aWxkCiAgICAgICAgJ01vYmlsZScgICAgICAgID0+ICdNb2JpbGUvW1ZFUl0nLAogICAgICAgICdCdWlsZCcgICAgICAgICA9PiAnQnVpbGQvW1ZFUl0nLAogICAgICAgICdWZXJzaW9uJyAgICAgICA9PiAnVmVyc2lvbi9bVkVSXScsCiAgICAgICAgJ1ZlbmRvcklEJyAgICAgID0+ICdWZW5kb3JJRC9bVkVSXScsCgogICAgICAgIC8vIERldmljZXMKICAgICAgICAnaVBhZCcgICAgICAgICAgPT4gJ2lQYWQuKkNQVVthLXogXStbVkVSXScsCiAgICAgICAgJ2lQaG9uZScgICAgICAgID0+ICdpUGhvbmUuKkNQVVthLXogXStbVkVSXScsCiAgICAgICAgJ2lQb2QnICAgICAgICAgID0+ICdpUG9kLipDUFVbYS16IF0rW1ZFUl0nLAogICAgICAgIC8vJ0JsYWNrQmVycnknICAgID0+IGFycmF5KCdCbGFja0JlcnJ5W1ZFUl0nLCAnQmxhY2tCZXJyeSBbVkVSXTsnKSwKICAgICAgICAnS2luZGxlJyAgICAgICAgPT4gJ0tpbmRsZS9bVkVSXScsCgogICAgICAgIC8vIEJyb3dzZXIKICAgICAgICAnQ2hyb21lJyAgICAgICAgPT4gYXJyYXkoJ0Nocm9tZS9bVkVSXScsICdDcmlPUy9bVkVSXScsICdDck1vL1tWRVJdJyksCiAgICAgICAgJ0RvbGZpbicgICAgICAgID0+ICdEb2xmaW4vW1ZFUl0nLAogICAgICAgIC8vIEByZWZlcmVuY2U6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVXNlcl9BZ2VudF9TdHJpbmdzX1JlZmVyZW5jZQogICAgICAgICdGaXJlZm94JyAgICAgICA9PiAnRmlyZWZveC9bVkVSXScsCiAgICAgICAgJ0Zlbm5lYycgICAgICAgID0+ICdGZW5uZWMvW1ZFUl0nLAogICAgICAgIC8vIEByZWZlcmVuY2U6IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzNzUwMyh2PXZzLjg1KS5hc3B4CiAgICAgICAgJ0lFJyAgICAgID0+IGFycmF5KCdJRU1vYmlsZS9bVkVSXTsnLCAnSUVNb2JpbGUgW1ZFUl0nLCAnTVNJRSBbVkVSXTsnKSwKICAgICAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05ldEZyb250CiAgICAgICAgJ05ldEZyb250JyAgICAgID0+ICdOZXRGcm9udC9bVkVSXScsCiAgICAgICAgJ05va2lhQnJvd3NlcicgID0+ICdOb2tpYUJyb3dzZXIvW1ZFUl0nLAogICAgICAgICdPcGVyYScgICAgICAgICA9PiBhcnJheSggJyBPUFIvW1ZFUl0nLCAnT3BlcmEgTWluaS9bVkVSXScsICdWZXJzaW9uL1tWRVJdJyApLAogICAgICAgICdPcGVyYSBNaW5pJyAgICA9PiAnT3BlcmEgTWluaS9bVkVSXScsCiAgICAgICAgJ09wZXJhIE1vYmknICAgID0+ICdWZXJzaW9uL1tWRVJdJywKICAgICAgICAnVUMgQnJvd3NlcicgICAgPT4gJ1VDIEJyb3dzZXJbVkVSXScsCiAgICAgICAgJ01RUUJyb3dzZXInICAgID0+ICdNUVFCcm93c2VyL1tWRVJdJywKICAgICAgICAnTWljcm9NZXNzZW5nZXInID0+ICdNaWNyb01lc3Nlbmdlci9bVkVSXScsCiAgICAgICAgLy8gQG5vdGU6IFNhZmFyaSA3NTM0LjQ4LjMgaXMgYWN0dWFsbHkgVmVyc2lvbiA1LjEuCiAgICAgICAgLy8gQG5vdGU6IE9uIEJsYWNrQmVycnkgdGhlIFZlcnNpb24gaXMgb3ZlcndyaXRlbiBieSB0aGUgT1MuCiAgICAgICAgJ1NhZmFyaScgICAgICAgID0+IGFycmF5KCAnVmVyc2lvbi9bVkVSXScsICdTYWZhcmkvW1ZFUl0nICksCiAgICAgICAgJ1NreWZpcmUnICAgICAgID0+ICdTa3lmaXJlL1tWRVJdJywKICAgICAgICAnVGl6ZW4nICAgICAgICAgPT4gJ1RpemVuL1tWRVJdJywKICAgICAgICAnV2Via2l0JyAgICAgICAgPT4gJ3dlYmtpdFsgL11bVkVSXScsCgogICAgICAgIC8vIEVuZ2luZQogICAgICAgICdHZWNrbycgICAgICAgICA9PiAnR2Vja28vW1ZFUl0nLAogICAgICAgICdUcmlkZW50JyAgICAgICA9PiAnVHJpZGVudC9bVkVSXScsCiAgICAgICAgJ1ByZXN0bycgICAgICAgID0+ICdQcmVzdG8vW1ZFUl0nLAoKICAgICAgICAvLyBPUwogICAgICAgICdpT1MnICAgICAgICAgICAgICA9PiAnIFxiT1NcYiBbVkVSXSAnLAogICAgICAgICdBbmRyb2lkJyAgICAgICAgICA9PiAnQW5kcm9pZCBbVkVSXScsCiAgICAgICAgJ0JsYWNrQmVycnknICAgICAgID0+IGFycmF5KCdCbGFja0JlcnJ5W1x3XSsvW1ZFUl0nLCAnQmxhY2tCZXJyeS4qVmVyc2lvbi9bVkVSXScsICdWZXJzaW9uL1tWRVJdJyksCiAgICAgICAgJ0JSRVcnICAgICAgICAgICAgID0+ICdCUkVXIFtWRVJdJywKICAgICAgICAnSmF2YScgICAgICAgICAgICAgPT4gJ0phdmEvW1ZFUl0nLAogICAgICAgIC8vIEByZWZlcmVuY2U6IGh0dHA6Ly93aW5kb3dzdGVhbWJsb2cuY29tL3dpbmRvd3NfcGhvbmUvYi93cGRldi9hcmNoaXZlLzIwMTEvMDgvMjkvaW50cm9kdWNpbmctdGhlLWllOS1vbi13aW5kb3dzLXBob25lLW1hbmdvLXVzZXItYWdlbnQtc3RyaW5nLmFzcHgKICAgICAgICAvLyBAcmVmZXJlbmNlOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbmRvd3NfTlQjUmVsZWFzZXMKICAgICAgICAnV2luZG93cyBQaG9uZSBPUycgPT4gYXJyYXkoICdXaW5kb3dzIFBob25lIE9TIFtWRVJdJywgJ1dpbmRvd3MgUGhvbmUgW1ZFUl0nKSwKICAgICAgICAnV2luZG93cyBQaG9uZScgICAgPT4gJ1dpbmRvd3MgUGhvbmUgW1ZFUl0nLAogICAgICAgICdXaW5kb3dzIENFJyAgICAgICA9PiAnV2luZG93cyBDRS9bVkVSXScsCiAgICAgICAgLy8gaHR0cDovL3NvY2lhbC5tc2RuLm1pY3Jvc29mdC5jb20vRm9ydW1zL2VuLVVTL3dpbmRvd3NkZXZlbG9wZXJwcmV2aWV3Z2VuZXJhbC90aHJlYWQvNmJlMzkyZGEtNGQyZi00MWI0LTgzNTQtOGRjZWUyMGM4NWNkCiAgICAgICAgJ1dpbmRvd3MgTlQnICAgICAgID0+ICdXaW5kb3dzIE5UIFtWRVJdJywKICAgICAgICAnU3ltYmlhbicgICAgICAgICAgPT4gYXJyYXkoJ1N5bWJpYW5PUy9bVkVSXScsICdTeW1iaWFuL1tWRVJdJyksCiAgICAgICAgJ3dlYk9TJyAgICAgICAgICAgID0+IGFycmF5KCd3ZWJPUy9bVkVSXScsICdocHdPUy9bVkVSXTsnKSwKICAgICk7CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcnMgU3BlY2lmeSB0aGUgaGVhZGVycyBhcyBpbmplY3Rpb24uIFNob3VsZCBiZSBQSFAgX1NFUlZFUiBmbGF2b3JlZC4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICBJZiBsZWZ0IGVtcHR5LCB3aWxsIHVzZSB0aGUgZ2xvYmFsIF9TRVJWRVJbJ0hUVFBfKiddIHZhcnMgaW5zdGVhZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBZ2VudCBJbmplY3QgdGhlIFVzZXItQWdlbnQgaGVhZGVyLiBJZiBudWxsLCB3aWxsIHVzZSBIVFRQX1VTRVJfQUdFTlQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAkaGVhZGVycyBhcnJheSBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgYXJyYXkgJGhlYWRlcnMgPSBudWxsLAogICAgICAgICR1c2VyQWdlbnQgPSBudWxsCiAgICApewogICAgICAgICR0aGlzLT5zZXRIdHRwSGVhZGVycygkaGVhZGVycyk7CiAgICAgICAgJHRoaXMtPnNldFVzZXJBZ2VudCgkdXNlckFnZW50KTsKICAgIH0KCiAgICAvKioKICAgICogR2V0IHRoZSBjdXJyZW50IHNjcmlwdCB2ZXJzaW9uLgogICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhlIGRlbW8ucGhwIGZpbGUsCiAgICAqIHNvIHBlb3BsZSBjYW4gY2hlY2sgb24gd2hhdCB2ZXJzaW9uIHRoZXkgYXJlIHRlc3RpbmcKICAgICogZm9yIG1vYmlsZSBkZXZpY2VzLgogICAgKgogICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgdmVyc2lvbiBudW1iZXIgaW4gc2VtYW50aWMgdmVyc2lvbiBmb3JtYXQuCiAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTY3JpcHRWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6VkVSU0lPTjsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgSFRUUCBIZWFkZXJzLiBNdXN0IGJlIFBIUC1mbGF2b3JlZC4gVGhpcyBtZXRob2Qgd2lsbCByZXNldCBleGlzdGluZyBoZWFkZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkaHR0cEhlYWRlcnMgVGhlIGhlYWRlcnMgdG8gc2V0LiBJZiBudWxsLCB0aGVuIHVzaW5nIFBIUCdzIF9TRVJWRVIgdG8gZXh0cmFjdAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaGVhZGVycy4gVGhlIGRlZmF1bHQgbnVsbCBpcyBsZWZ0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbHR5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SHR0cEhlYWRlcnMoJGh0dHBIZWFkZXJzID0gbnVsbCkKICAgIHsKICAgICAgICAvL3VzZSBnbG9iYWwgX1NFUlZFUiBpZiAkaHR0cEhlYWRlcnMgYXJlbid0IGRlZmluZWQKICAgICAgICBpZiAoIWlzX2FycmF5KCRodHRwSGVhZGVycykgfHwgIWNvdW50KCRodHRwSGVhZGVycykpIHsKICAgICAgICAgICAgJGh0dHBIZWFkZXJzID0gJF9TRVJWRVI7CiAgICAgICAgfQoKICAgICAgICAvL2NsZWFyIGV4aXN0aW5nIGhlYWRlcnMKICAgICAgICAkdGhpcy0+aHR0cEhlYWRlcnMgPSBhcnJheSgpOwoKICAgICAgICAvL09ubHkgc2F2ZSBIVFRQIGhlYWRlcnMuIEluIFBIUCBsYW5kLCB0aGF0IG1lYW5zIG9ubHkgX1NFUlZFUiB2YXJzIHRoYXQKICAgICAgICAvL3N0YXJ0IHdpdGggSFRUUF8uCiAgICAgICAgZm9yZWFjaCAoJGh0dHBIZWFkZXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGtleSwwLDUpID09ICdIVFRQXycpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5odHRwSGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBoZWFkZXJzLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEh0dHBIZWFkZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmh0dHBIZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0cmlldmVzIGEgcGFydGljdWxhciBoZWFkZXIuIElmIGl0IGRvZXNuJ3QgZXhpc3QsIG5vIGV4Y2VwdGlvbi9lcnJvciBpcyBjYXVzZWQuCiAgICAgKiBTaW1wbHkgbnVsbCBpcyByZXR1cm5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZWFkZXIgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciB0byByZXRyaWV2ZS4gQ2FuIGJlIEhUVFAgY29tcGxpYW50IHN1Y2ggYXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAiVXNlci1BZ2VudCIgb3IgIlgtRGV2aWNlLVVzZXItQWdlbnQiIG9yIGNhbiBiZSBwaHAtZXNxdWUgd2l0aCB0aGUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBhbGwtY2FwcywgSFRUUF8gcHJlZml4ZWQsIHVuZGVyc2NvcmUgc2VwZXJhdGVkIGF3ZXNvbWVuZXNzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwgVGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIdHRwSGVhZGVyKCRoZWFkZXIpCiAgICB7CiAgICAgICAgLy9hcmUgd2UgdXNpbmcgUEhQLWZsYXZvcmVkIGhlYWRlcnM/CiAgICAgICAgaWYgKHN0cnBvcygkaGVhZGVyLCAnXycpID09PSBmYWxzZSkgewogICAgICAgICAgICAkaGVhZGVyID0gc3RyX3JlcGxhY2UoJy0nLCAnXycsICRoZWFkZXIpOwogICAgICAgICAgICAkaGVhZGVyID0gc3RydG91cHBlcigkaGVhZGVyKTsKICAgICAgICB9CgogICAgICAgIC8vdGVzdCB0aGUgYWx0ZXJuYXRlLCB0b28KICAgICAgICAkYWx0SGVhZGVyID0gJ0hUVFBfJyAuICRoZWFkZXI7CgogICAgICAgIC8vVGVzdCBib3RoIHRoZSByZWd1bGFyIGFuZCB0aGUgSFRUUF8gcHJlZml4CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1skaGVhZGVyXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5odHRwSGVhZGVyc1skaGVhZGVyXTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPmh0dHBIZWFkZXJzWyRhbHRIZWFkZXJdKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmh0dHBIZWFkZXJzWyRhbHRIZWFkZXJdOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgVXNlci1BZ2VudCB0byBiZSB1c2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBZ2VudCBUaGUgdXNlciBhZ2VudCBzdHJpbmcgdG8gc2V0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlckFnZW50KCR1c2VyQWdlbnQgPSBudWxsKQogICAgewogICAgICAgIGlmICghZW1wdHkoJHVzZXJBZ2VudCkpIHsKICAgICAgICAgICAgJHRoaXMtPnVzZXJBZ2VudCA9ICR1c2VyQWdlbnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnVzZXJBZ2VudCA9ICR0aGlzLT5nZXRIdHRwSGVhZGVyKCdVc2VyLUFnZW50Jyk7CgogICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPnVzZXJBZ2VudCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT51c2VyQWdlbnQgPSAkdGhpcy0+Z2V0SHR0cEhlYWRlcignWC1EZXZpY2UtVXNlci1BZ2VudCcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0hlYWRlciBjYW4gb2NjdXIgb24gZGV2aWNlcyB1c2luZyBPcGVyYSBNaW5pIChjYW4gZXhwb3NlIHRoZSByZWFsIGRldmljZSB0eXBlKS4KICAgICAgICAgICAgLy9MZXQncyBjb25jYXRlbmF0ZSBpdCAod2UgbmVlZCB0aGlzIGV4dHJhIGluZm8gaW4gdGhlIHJlZ2V4ZXMpLgogICAgICAgICAgICBpZiAoJG9wZXJhTWluaVVhID0gJHRoaXMtPmdldEh0dHBIZWFkZXIoJ1gtT3BlcmFNaW5pLVBob25lLVVBJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT51c2VyQWdlbnQgLj0gJyAnIC4gJG9wZXJhTWluaVVhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIFVzZXItQWdlbnQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgdXNlciBhZ2VudCBpZiBpdCdzIHNldC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJBZ2VudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VyQWdlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRldGVjdGlvbiB0eXBlLiBNdXN0IGJlIG9uZSBvZiBzZWxmOjpERVRFQ1RJT05fVFlQRV9NT0JJTEUgb3IKICAgICAqIHNlbGY6OkRFVEVDVElPTl9UWVBFX0VYVEVOREVELiBPdGhlcndpc2UsIG5vdGhpbmcgaXMgc2V0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgVGhlIHR5cGUuIE11c3QgYmUgYSBzZWxmOjpERVRFQ1RJT05fVFlQRV8qIGNvbnN0YW50LiBUaGUgZGVmYXVsdAogICAgICogICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaXMgbnVsbCB3aGljaCB3aWxsIGRlZmF1bHQgdG8gc2VsZjo6REVURUNUSU9OX1RZUEVfTU9CSUxFLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RGV0ZWN0aW9uVHlwZSgkdHlwZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR0eXBlID09PSBudWxsKSB7CiAgICAgICAgICAgICR0eXBlID0gc2VsZjo6REVURUNUSU9OX1RZUEVfTU9CSUxFOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0eXBlICE9IHNlbGY6OkRFVEVDVElPTl9UWVBFX01PQklMRSAmJiAkdHlwZSAhPSBzZWxmOjpERVRFQ1RJT05fVFlQRV9FWFRFTkRFRCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGV0ZWN0aW9uVHlwZSA9ICR0eXBlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGxpc3Qgb2Yga25vd24gcGhvbmUgZGV2aWNlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IExpc3Qgb2YgcGhvbmUgZGV2aWNlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQaG9uZURldmljZXMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokcGhvbmVEZXZpY2VzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGxpc3Qgb2Yga25vd24gdGFibGV0IGRldmljZXMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBMaXN0IG9mIHRhYmxldCBkZXZpY2VzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFRhYmxldERldmljZXMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokdGFibGV0RGV2aWNlczsKICAgIH0KCiAgICAvKioKICAgICAqIEFsaWFzIGZvciBnZXRCcm93c2VycygpIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IExpc3Qgb2YgdXNlciBhZ2VudHMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VXNlckFnZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmdldEJyb3dzZXJzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBrbm93biBicm93c2Vycy4gU3BlY2lmaWNhbGx5LCB0aGUgdXNlciBhZ2VudHMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBMaXN0IG9mIGJyb3dzZXJzIC8gdXNlciBhZ2VudHMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QnJvd3NlcnMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokYnJvd3NlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBrbm93biB1dGlsaXRpZXMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBMaXN0IG9mIHV0aWxpdGllcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRVdGlsaXRpZXMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokdXRpbGl0aWVzOwogICAgfQoKICAgIC8qKgogICAgICogTWV0aG9kIGdldHMgdGhlIG1vYmlsZSBkZXRlY3Rpb24gcnVsZXMuIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIHRoZSBtYWdpYyBtZXRob2RzICRkZXRlY3QtPmlzKigpLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQWxsIHRoZSBydWxlcyAoYnV0IG5vdCBleHRlbmRlZCkuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0TW9iaWxlRGV0ZWN0aW9uUnVsZXMoKQogICAgewogICAgICAgIHN0YXRpYyAkcnVsZXM7CgogICAgICAgIGlmICghJHJ1bGVzKSB7CiAgICAgICAgICAgICRydWxlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgc2VsZjo6JHBob25lRGV2aWNlcywKICAgICAgICAgICAgICAgIHNlbGY6OiR0YWJsZXREZXZpY2VzLAogICAgICAgICAgICAgICAgc2VsZjo6JG9wZXJhdGluZ1N5c3RlbXMsCiAgICAgICAgICAgICAgICBzZWxmOjokYnJvd3NlcnMKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcnVsZXM7CgogICAgfQoKICAgIC8qKgogICAgICogTWV0aG9kIGdldHMgdGhlIG1vYmlsZSBkZXRlY3Rpb24gcnVsZXMgKyB1dGlsaXRpZXMuCiAgICAgKiBUaGUgcmVhc29uIHRoaXMgaXMgc2VwYXJhdGUgaXMgYmVjYXVzZSB1dGlsaXRpZXMgcnVsZXMKICAgICAqIGRvbid0IG5lY2Vzc2FyeSBpbXBseSBtb2JpbGUuIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zaWRlCiAgICAgKiB0aGUgbmV3ICRkZXRlY3QtPmlzKCdzdHVmZicpIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IEFsbCB0aGUgcnVsZXMgKyBleHRlbmRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vYmlsZURldGVjdGlvblJ1bGVzRXh0ZW5kZWQoKQogICAgewogICAgICAgIHN0YXRpYyAkcnVsZXM7CgogICAgICAgIGlmICghJHJ1bGVzKSB7CiAgICAgICAgICAgIC8vIE1lcmdlIGFsbCBydWxlcyB0b2dldGhlci4KICAgICAgICAgICAgJHJ1bGVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICBzZWxmOjokcGhvbmVEZXZpY2VzLAogICAgICAgICAgICAgICAgc2VsZjo6JHRhYmxldERldmljZXMsCiAgICAgICAgICAgICAgICBzZWxmOjokb3BlcmF0aW5nU3lzdGVtcywKICAgICAgICAgICAgICAgIHNlbGY6OiRicm93c2VycywKICAgICAgICAgICAgICAgIHNlbGY6OiR1dGlsaXRpZXMKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcnVsZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgY3VycmVudCBzZXQgb2YgcnVsZXMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UnVsZXMoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+ZGV0ZWN0aW9uVHlwZSA9PSBzZWxmOjpERVRFQ1RJT05fVFlQRV9FWFRFTkRFRCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6Z2V0TW9iaWxlRGV0ZWN0aW9uUnVsZXNFeHRlbmRlZCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpnZXRNb2JpbGVEZXRlY3Rpb25SdWxlcygpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICogQ2hlY2sgdGhlIEhUVFAgaGVhZGVycyBmb3Igc2lnbnMgb2YgbW9iaWxlLgogICAgKiBUaGlzIGlzIHRoZSBmYXN0ZXN0IG1vYmlsZSBjaGVjayBwb3NzaWJsZTsgaXQncyB1c2VkCiAgICAqIGluc2lkZSBpc01vYmlsZSgpIG1ldGhvZC4KICAgICoKICAgICogQHJldHVybiBib29sCiAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrSHR0cEhlYWRlcnNGb3JNb2JpbGUoKQogICAgewogICAgICAgIHJldHVybigKICAgICAgICAgICAgaXNzZXQoJHRoaXMtPmh0dHBIZWFkZXJzWydIVFRQX0FDQ0VQVCddKSAmJgogICAgICAgICAgICAgICAgKHN0cnBvcygkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfQUNDRVBUJ10sICdhcHBsaWNhdGlvbi94LW9ibWwyZCcpICE9PSBmYWxzZSB8fCAvLyBPcGVyYSBNaW5pOyBAcmVmZXJlbmNlOiBodHRwOi8vZGV2Lm9wZXJhLmNvbS9hcnRpY2xlcy92aWV3L29wZXJhLWJpbmFyeS1tYXJrdXAtbGFuZ3VhZ2UvCiAgICAgICAgICAgICAgICAgc3RycG9zKCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9BQ0NFUFQnXSwgJ2FwcGxpY2F0aW9uL3ZuZC5yaW0uaHRtbCcpICE9PSBmYWxzZSB8fCAvLyBCbGFja0JlcnJ5IGRldmljZXMuCiAgICAgICAgICAgICAgICAgc3RycG9zKCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9BQ0NFUFQnXSwgJ3RleHQvdm5kLndhcC53bWwnKSAhPT0gZmFsc2UgfHwKICAgICAgICAgICAgICAgICBzdHJwb3MoJHRoaXMtPmh0dHBIZWFkZXJzWydIVFRQX0FDQ0VQVCddLCAnYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwnKSAhPT0gZmFsc2UpIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX1dBUF9QUk9GSUxFJ10pICAgICAgICAgICAgIHx8IC8vIEB0b2RvOiB2YWxpZGF0ZQogICAgICAgICAgICBpc3NldCgkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfWF9XQVBfQ0xJRU5USUQnXSkgICAgICAgICAgICB8fAogICAgICAgICAgICBpc3NldCgkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfV0FQX0NPTk5FQ1RJT04nXSkgICAgICAgICAgICB8fAogICAgICAgICAgICBpc3NldCgkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfUFJPRklMRSddKSAgICAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICBpc3NldCgkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfWF9PUEVSQU1JTklfUEhPTkVfVUEnXSkgICAgICB8fCAvLyBSZXBvcnRlZCBieSBOb2tpYSBkZXZpY2VzIChlZy4gQzMpCiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX05PS0lBX0lQQUREUkVTUyddKSAgICAgICAgIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX05PS0lBX0dBVEVXQVlfSUQnXSkgICAgICAgIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX09SQU5HRV9JRCddKSAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX1ZPREFGT05FXzNHUERQQ09OVEVYVCddKSAgIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX0hVQVdFSV9VU0VSSUQnXSkgICAgICAgICAgIHx8CiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9VQV9PUyddKSAgICAgICAgICAgICAgICAgICAgIHx8IC8vIFJlcG9ydGVkIGJ5IFdpbmRvd3MgU21hcnRwaG9uZXMuCiAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5odHRwSGVhZGVyc1snSFRUUF9YX01PQklMRV9HQVRFV0FZJ10pICAgICAgICAgIHx8IC8vIFJlcG9ydGVkIGJ5IFZlcml6b24sIFZvZGFmb25lIHByb3h5IHN5c3RlbS4KICAgICAgICAgICAgaXNzZXQoJHRoaXMtPmh0dHBIZWFkZXJzWydIVFRQX1hfQVRUX0RFVklDRUlEJ10pICAgICAgICAgICAgfHwgLy8gU2VlbiB0aGlzIG9uIEhUQyBTZW5zYXRpb24uIEByZWY6IFNlbnNhdGlvblhFX0JlYXRzX1o3MTVlCiAgICAgICAgICAgIC8vSFRUUF9YX05FVFdPUktfVFlQRSA9IFdJRkkKICAgICAgICAgICAgKCBpc3NldCgkdGhpcy0+aHR0cEhlYWRlcnNbJ0hUVFBfVUFfQ1BVJ10pICYmCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmh0dHBIZWFkZXJzWydIVFRQX1VBX0NQVSddID09ICdBUk0nICAgICAgICAgIC8vIFNlZW4gdGhpcyBvbiBhIEhUQy4KICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWdpYyBvdmVybG9hZGluZyBtZXRob2QuCiAgICAgKgogICAgICogQG1ldGhvZCBib29sZWFuIGlzWy4uLl0oKQogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgICAgICAgICAgICRuYW1lCiAgICAgKiBAcGFyYW0gIGFycmF5ICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50cwogICAgICogQHJldHVybiBtaXhlZAogICAgICogQHRocm93cyBCYWRNZXRob2RDYWxsRXhjZXB0aW9uIHdoZW4gdGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IGFuZCBkb2Vzbid0IHN0YXJ0IHdpdGggJ2lzJwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRuYW1lLCAkYXJndW1lbnRzKQogICAgewogICAgICAgIC8vbWFrZSBzdXJlIHRoZSBuYW1lIHN0YXJ0cyB3aXRoICdpcycsIG90aGVyd2lzZQogICAgICAgIGlmIChzdWJzdHIoJG5hbWUsIDAsIDIpICE9ICdpcycpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEJhZE1ldGhvZENhbGxFeGNlcHRpb24oIk5vIHN1Y2ggbWV0aG9kIGV4aXN0czogJG5hbWUiKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZXREZXRlY3Rpb25UeXBlKHNlbGY6OkRFVEVDVElPTl9UWVBFX01PQklMRSk7CgogICAgICAgICRrZXkgPSBzdWJzdHIoJG5hbWUsIDIpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm1hdGNoVUFBZ2FpbnN0S2V5KCRrZXkpOwogICAgfQoKICAgIC8qKgogICAgKiBGaW5kIGEgZGV0ZWN0aW9uIHJ1bGUgdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IFVzZXItYWdlbnQuCiAgICAqCiAgICAqIEBwYXJhbSBudWxsICR1c2VyQWdlbnQgZGVwcmVjYXRlZAogICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG1hdGNoRGV0ZWN0aW9uUnVsZXNBZ2FpbnN0VUEoJHVzZXJBZ2VudCA9IG51bGwpCiAgICB7CiAgICAgICAgLy8gQmVnaW4gZ2VuZXJhbCBzZWFyY2guCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldFJ1bGVzKCkgYXMgJF9yZWdleCkgewogICAgICAgICAgICBpZiAoZW1wdHkoJF9yZWdleCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2goJF9yZWdleCwgJHVzZXJBZ2VudCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAqIFNlYXJjaCBmb3IgYSBjZXJ0YWluIGtleSBpbiB0aGUgcnVsZXMgYXJyYXkuCiAgICAqIElmIHRoZSBrZXkgaXMgZm91bmQgdGhlIHRyeSB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwogICAgKiByZWdleCBhZ2FpbnMgdGhlIFVzZXItQWdlbnQuCiAgICAqCiAgICAqIEBwYXJhbSBzdHJpbmcgJGtleQogICAgKiBAcGFyYW0gbnVsbCAkdXNlckFnZW50IGRlcHJlY2F0ZWQKICAgICogQHJldHVybiBtaXhlZAogICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbWF0Y2hVQUFnYWluc3RLZXkoJGtleSwgJHVzZXJBZ2VudCA9IG51bGwpCiAgICB7CiAgICAgICAgLy8gTWFrZSB0aGUga2V5cyBsb3dlcmNhc2Ugc28gd2UgY2FuIG1hdGNoOiBpc0lwaG9uZSgpLCBpc2lQaG9uZSgpLCBpc2lwaG9uZSgpLCBldGMuCiAgICAgICAgJGtleSA9IHN0cnRvbG93ZXIoJGtleSk7CgogICAgICAgIC8vY2hhbmdlIHRoZSBrZXlzIHRvIGxvd2VyIGNhc2UKICAgICAgICAkX3J1bGVzID0gYXJyYXlfY2hhbmdlX2tleV9jYXNlKCR0aGlzLT5nZXRSdWxlcygpKTsKCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJF9ydWxlcykpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRfcnVsZXNbJGtleV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tYXRjaCgkX3J1bGVzWyRrZXldLCAkdXNlckFnZW50KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICogQ2hlY2sgaWYgdGhlIGRldmljZSBpcyBtb2JpbGUuCiAgICAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgdHlwZSBvZiBtb2JpbGUgZGV2aWNlIGRldGVjdGVkLCBpbmNsdWRpbmcgc3BlY2lhbCBvbmVzCiAgICAqIEBwYXJhbSBudWxsICR1c2VyQWdlbnQgZGVwcmVjYXRlZAogICAgKiBAcGFyYW0gbnVsbCAkaHR0cEhlYWRlcnMgZGVwcmVjYXRlZAogICAgKiBAcmV0dXJuIGJvb2wKICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNNb2JpbGUoJHVzZXJBZ2VudCA9IG51bGwsICRodHRwSGVhZGVycyA9IG51bGwpCiAgICB7CgogICAgICAgIGlmICgkaHR0cEhlYWRlcnMpIHsKICAgICAgICAgICAgJHRoaXMtPnNldEh0dHBIZWFkZXJzKCRodHRwSGVhZGVycyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVzZXJBZ2VudCkgewogICAgICAgICAgICAkdGhpcy0+c2V0VXNlckFnZW50KCR1c2VyQWdlbnQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNldERldGVjdGlvblR5cGUoc2VsZjo6REVURUNUSU9OX1RZUEVfTU9CSUxFKTsKCiAgICAgICAgaWYgKCR0aGlzLT5jaGVja0h0dHBIZWFkZXJzRm9yTW9iaWxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tYXRjaERldGVjdGlvblJ1bGVzQWdhaW5zdFVBKCk7CiAgICAgICAgfQoKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBkZXZpY2UgaXMgYSB0YWJsZXQuCiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgdHlwZSBvZiB0YWJsZXQgZGV2aWNlIGlzIGRldGVjdGVkLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICR1c2VyQWdlbnQgICBkZXByZWNhdGVkCiAgICAgKiBAcGFyYW0gIGFycmF5ICAkaHR0cEhlYWRlcnMgZGVwcmVjYXRlZAogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1RhYmxldCgkdXNlckFnZW50ID0gbnVsbCwgJGh0dHBIZWFkZXJzID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0RGV0ZWN0aW9uVHlwZShzZWxmOjpERVRFQ1RJT05fVFlQRV9NT0JJTEUpOwoKICAgICAgICBmb3JlYWNoIChzZWxmOjokdGFibGV0RGV2aWNlcyBhcyAkX3JlZ2V4KSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2goJF9yZWdleCwgJHVzZXJBZ2VudCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgZm9yIGEgY2VydGFpbiBwcm9wZXJ0eSBpbiB0aGUKICAgICAqIHVzZXJBZ2VudC4KICAgICAqIEB0b2RvOiBUaGUgaHR0cEhlYWRlcnMgcGFydCBpcyBub3QgeWV0IHVzZWQuCiAgICAgKgogICAgICogQHBhcmFtICRrZXkKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAkdXNlckFnZW50ICAgZGVwcmVjYXRlZAogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgICRodHRwSGVhZGVycyBkZXByZWNhdGVkCiAgICAgKiBAcmV0dXJuIGJvb2x8aW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzKCRrZXksICR1c2VyQWdlbnQgPSBudWxsLCAkaHR0cEhlYWRlcnMgPSBudWxsKQogICAgewogICAgICAgIC8vIFNldCB0aGUgVUEgYW5kIEhUVFAgaGVhZGVycyBvbmx5IGlmIG5lZWRlZCAoZWcuIGJhdGNoIG1vZGUpLgogICAgICAgIGlmICgkaHR0cEhlYWRlcnMpIHsKICAgICAgICAgICAgJHRoaXMtPnNldEh0dHBIZWFkZXJzKCRodHRwSGVhZGVycyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVzZXJBZ2VudCkgewogICAgICAgICAgICAkdGhpcy0+c2V0VXNlckFnZW50KCR1c2VyQWdlbnQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNldERldGVjdGlvblR5cGUoc2VsZjo6REVURUNUSU9OX1RZUEVfRVhURU5ERUQpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm1hdGNoVUFBZ2FpbnN0S2V5KCRrZXkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGxpc3Qgb2YgbW9iaWxlIG9wZXJhdGluZyBzeXN0ZW1zLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgVGhlIGxpc3Qgb2YgbW9iaWxlIG9wZXJhdGluZyBzeXN0ZW1zLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE9wZXJhdGluZ1N5c3RlbXMoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjokb3BlcmF0aW5nU3lzdGVtczsKICAgIH0KCiAgICAvKioKICAgICAqIFNvbWUgZGV0ZWN0aW9uIHJ1bGVzIGFyZSByZWxhdGl2ZSAobm90IHN0YW5kYXJkKSwKICAgICAqIGJlY2F1c2Ugb2YgdGhlIGRpdmVyc2l0eSBvZiBkZXZpY2VzLCB2ZW5kb3JzIGFuZAogICAgICogdGhlaXIgY29udmVudGlvbnMgaW4gcmVwcmVzZW50aW5nIHRoZSBVc2VyLUFnZW50IG9yCiAgICAgKiB0aGUgSFRUUCBoZWFkZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgdXNlZCB0byBjaGVjayBjdXN0b20gcmVnZXhlcyBhZ2FpbnN0CiAgICAgKiB0aGUgVXNlci1BZ2VudCBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtICRyZWdleAogICAgICogQHBhcmFtICBzdHJpbmcgJHVzZXJBZ2VudAogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRvZG86IHNlYXJjaCBpbiB0aGUgSFRUUCBoZWFkZXJzIHRvby4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoKCRyZWdleCwgJHVzZXJBZ2VudCA9IG51bGwpCiAgICB7CiAgICAgICAgLy8gRXNjYXBlIHRoZSBzcGVjaWFsIGNoYXJhY3RlciB3aGljaCBpcyB0aGUgZGVsaW1pdGVyLgogICAgICAgICRyZWdleCA9IHN0cl9yZXBsYWNlKCcvJywgJ1wvJywgJHJlZ2V4KTsKCiAgICAgICAgcmV0dXJuIChib29sKSBwcmVnX21hdGNoKCcvJy4kcmVnZXguJy9pcycsICghZW1wdHkoJHVzZXJBZ2VudCkgPyAkdXNlckFnZW50IDogJHRoaXMtPnVzZXJBZ2VudCkpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwcm9wZXJ0aWVzIGFycmF5LgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6JHByb3BlcnRpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcmVwYXJlIHRoZSB2ZXJzaW9uIG51bWJlci4KICAgICAqCiAgICAgKiBAdG9kbyBSZW1vdmUgdGhlIGVycm9yIHN1cHJlc3Npb24gZnJvbSBzdHJfcmVwbGFjZSgpIGNhbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmVyIFRoZSBzdHJpbmcgdmVyc2lvbiwgbGlrZSAiMi42LjIxLjIxNTIiOwogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByZXBhcmVWZXJzaW9uTm8oJHZlcikKICAgIHsKICAgICAgICAkdmVyID0gc3RyX3JlcGxhY2UoYXJyYXkoJ18nLCAnICcsICcvJyksICcuJywgJHZlcik7CiAgICAgICAgJGFyclZlciA9IGV4cGxvZGUoJy4nLCAkdmVyLCAyKTsKCiAgICAgICAgaWYgKGlzc2V0KCRhcnJWZXJbMV0pKSB7CiAgICAgICAgICAgICRhcnJWZXJbMV0gPSBAc3RyX3JlcGxhY2UoJy4nLCAnJywgJGFyclZlclsxXSk7IC8vIEB0b2RvOiB0cmVhdCBzdHJpbmdzIHZlcnNpb25zLgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChmbG9hdCkgaW1wbG9kZSgnLicsICRhcnJWZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIGdpdmVuIHByb3BlcnR5IGluIHRoZSBVc2VyLUFnZW50LgogICAgICogV2lsbCByZXR1cm4gYSBmbG9hdCBudW1iZXIuIChlZy4gMl8wIHdpbGwgcmV0dXJuIDIuMCwgNC4zLjEgd2lsbCByZXR1cm4gNC4zMSkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LiBTZWUgc2VsZjo6Z2V0UHJvcGVydGllcygpIGFycmF5CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgZm9yIGFsbCBwb3NzaWJsZSBwcm9wZXJ0aWVzLgogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZSBFaXRoZXIgc2VsZjo6VkVSU0lPTl9UWVBFX1NUUklORyB0byBnZXQgYSBzdHJpbmcgdmFsdWUgb3IKICAgICAqICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCBpbmRpY2F0aW5nIGEgZmxvYXQgdmFsdWUuIFRoaXMgcGFyYW1ldGVyCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gc2VsZjo6VkVSU0lPTl9UWVBFX1NUUklORy4gUGFzc2luZyBhbgogICAgICogICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBwYXJhbWV0ZXIgd2lsbCBkZWZhdWx0IHRvIHRoZSB0aGlzIHR5cGUgYXMgd2VsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmbG9hdCBUaGUgdmVyc2lvbiBvZiB0aGUgcHJvcGVydHkgd2UgYXJlIHRyeWluZyB0byBleHRyYWN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyc2lvbigkcHJvcGVydHlOYW1lLCAkdHlwZSA9IHNlbGY6OlZFUlNJT05fVFlQRV9TVFJJTkcpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vc2V0IHRoZSAkdHlwZSB0byB0aGUgZGVmYXVsdCBpZiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHR5cGUKICAgICAgICBpZiAoJHR5cGUgIT0gc2VsZjo6VkVSU0lPTl9UWVBFX1NUUklORyAmJiAkdHlwZSAhPSBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpIHsKICAgICAgICAgICAgJHR5cGUgPSBzZWxmOjpWRVJTSU9OX1RZUEVfU1RSSU5HOwogICAgICAgIH0KCiAgICAgICAgJHByb3BlcnRpZXMgPSBzZWxmOjpnZXRQcm9wZXJ0aWVzKCk7CgogICAgICAgIC8vIENoZWNrIGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMgaW4gdGhlIHByb3BlcnRpZXMgYXJyYXkuCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHByb3BlcnR5TmFtZSwgJHByb3BlcnRpZXMpKSB7CgogICAgICAgICAgICAvLyBQcmVwYXJlIHRoZSBwYXR0ZXJuIHRvIGJlIG1hdGNoZWQuCiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBhbHdheXMgZGVhbCB3aXRoIGFuIGFycmF5IChzdHJpbmcgaXMgY29udmVydGVkKS4KICAgICAgICAgICAgJHByb3BlcnRpZXNbJHByb3BlcnR5TmFtZV0gPSAoYXJyYXkpICRwcm9wZXJ0aWVzWyRwcm9wZXJ0eU5hbWVdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHByb3BlcnRpZXNbJHByb3BlcnR5TmFtZV0gYXMgJHByb3BlcnR5TWF0Y2hTdHJpbmcpIHsKCiAgICAgICAgICAgICAgICAkcHJvcGVydHlQYXR0ZXJuID0gc3RyX3JlcGxhY2UoJ1tWRVJdJywgc2VsZjo6VkVSLCAkcHJvcGVydHlNYXRjaFN0cmluZyk7CgogICAgICAgICAgICAgICAgLy8gRXNjYXBlIHRoZSBzcGVjaWFsIGNoYXJhY3RlciB3aGljaCBpcyB0aGUgZGVsaW1pdGVyLgogICAgICAgICAgICAgICAgJHByb3BlcnR5UGF0dGVybiA9IHN0cl9yZXBsYWNlKCcvJywgJ1wvJywgJHByb3BlcnR5UGF0dGVybik7CgogICAgICAgICAgICAgICAgLy8gSWRlbnRpZnkgYW5kIGV4dHJhY3QgdGhlIHZlcnNpb24uCiAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvJy4kcHJvcGVydHlQYXR0ZXJuLicvaXMnLCAkdGhpcy0+dXNlckFnZW50LCAkbWF0Y2gpOwoKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJG1hdGNoWzFdKSkgewogICAgICAgICAgICAgICAgICAgICR2ZXJzaW9uID0gKCAkdHlwZSA9PSBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQgPyAkdGhpcy0+cHJlcGFyZVZlcnNpb25ObygkbWF0Y2hbMV0pIDogJG1hdGNoWzFdICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdmVyc2lvbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgbW9iaWxlIGdyYWRpbmcsIHVzaW5nIHNlbGY6Ok1PQklMRV9HUkFERV8qIGNvbnN0YW50cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBPbmUgb2YgdGhlIHNlbGY6Ok1PQklMRV9HUkFERV8qIGNvbnN0YW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vYmlsZUdyYWRlKCkKICAgIHsKICAgICAgICAkaXNNb2JpbGUgPSAkdGhpcy0+aXNNb2JpbGUoKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAvLyBBcHBsZSBpT1MgMy4yLTUuMSAtIFRlc3RlZCBvbiB0aGUgb3JpZ2luYWwgaVBhZCAoNC4zIC8gNS4wKSwgaVBhZCAyICg0LjMpLCBpUGFkIDMgKDUuMSksIG9yaWdpbmFsIGlQaG9uZSAoMy4xKSwgaVBob25lIDMgKDMuMiksIDNHUyAoNC4zKSwgNCAoNC4zIC8gNS4wKSwgYW5kIDRTICg1LjEpCiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdpUGFkJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49NC4zIHx8CiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdpUGhvbmUnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0zLjEgfHwKICAgICAgICAgICAgJHRoaXMtPnZlcnNpb24oJ2lQb2QnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0zLjEgfHwKCiAgICAgICAgICAgIC8vIEFuZHJvaWQgMi4xLTIuMyAtIFRlc3RlZCBvbiB0aGUgSFRDIEluY3JlZGlibGUgKDIuMiksIG9yaWdpbmFsIERyb2lkICgyLjIpLCBIVEMgQXJpYSAoMi4xKSwgR29vZ2xlIE5leHVzIFMgKDIuMykuIEZ1bmN0aW9uYWwgb24gMS41ICYgMS42IGJ1dCBwZXJmb3JtYW5jZSBtYXkgYmUgc2x1Z2dpc2gsIHRlc3RlZCBvbiBHb29nbGUgRzEgKDEuNSkKICAgICAgICAgICAgLy8gQW5kcm9pZCAzLjEgKEhvbmV5Y29tYikgIC0gVGVzdGVkIG9uIHRoZSBTYW1zdW5nIEdhbGF4eSBUYWIgMTAuMSBhbmQgTW90b3JvbGEgWE9PTQogICAgICAgICAgICAvLyBBbmRyb2lkIDQuMCAoSUNTKSAgLSBUZXN0ZWQgb24gYSBHYWxheHkgTmV4dXMuIE5vdGU6IHRyYW5zaXRpb24gcGVyZm9ybWFuY2UgY2FuIGJlIHBvb3Igb24gdXBncmFkZWQgZGV2aWNlcwogICAgICAgICAgICAvLyBBbmRyb2lkIDQuMSAoSmVsbHkgQmVhbikgIC0gVGVzdGVkIG9uIGEgR2FsYXh5IE5leHVzIGFuZCBHYWxheHkgNwogICAgICAgICAgICAoICR0aGlzLT52ZXJzaW9uKCdBbmRyb2lkJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT4yLjEgJiYgJHRoaXMtPmlzKCdXZWJraXQnKSApIHx8CgogICAgICAgICAgICAvLyBXaW5kb3dzIFBob25lIDctNy41IC0gVGVzdGVkIG9uIHRoZSBIVEMgU3Vycm91bmQgKDcuMCkgSFRDIFRyb3BoeSAoNy41KSwgTEctRTkwMCAoNy41KSwgTm9raWEgTHVtaWEgODAwCiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdXaW5kb3dzIFBob25lIE9TJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49Ny4wIHx8CgogICAgICAgICAgICAvLyBCbGFja2JlcnJ5IDcgLSBUZXN0ZWQgb24gQmxhY2tCZXJyecKuIFRvcmNoIDk4MTAKICAgICAgICAgICAgLy8gQmxhY2tiZXJyeSA2LjAgLSBUZXN0ZWQgb24gdGhlIFRvcmNoIDk4MDAgYW5kIFN0eWxlIDk2NzAKICAgICAgICAgICAgJHRoaXMtPmlzKCdCbGFja0JlcnJ5JykgJiYgJHRoaXMtPnZlcnNpb24oJ0JsYWNrQmVycnknLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj02LjAgfHwKICAgICAgICAgICAgLy8gQmxhY2tiZXJyeSBQbGF5Ym9vayAoMS4wLTIuMCkgLSBUZXN0ZWQgb24gUGxheUJvb2sKICAgICAgICAgICAgJHRoaXMtPm1hdGNoKCdQbGF5Ym9vay4qVGFibGV0JykgfHwKCiAgICAgICAgICAgIC8vIFBhbG0gV2ViT1MgKDEuNC0yLjApIC0gVGVzdGVkIG9uIHRoZSBQYWxtIFBpeGkgKDEuNCksIFByZSAoMS40KSwgUHJlIDIgKDIuMCkKICAgICAgICAgICAgKCAkdGhpcy0+dmVyc2lvbignd2ViT1MnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0xLjQgJiYgJHRoaXMtPm1hdGNoKCdQYWxtfFByZXxQaXhpJykgKSB8fAogICAgICAgICAgICAvLyBQYWxtIFdlYk9TIDMuMCAgLSBUZXN0ZWQgb24gSFAgVG91Y2hQYWQKICAgICAgICAgICAgJHRoaXMtPm1hdGNoKCdocC4qVG91Y2hQYWQnKSB8fAoKICAgICAgICAgICAgLy8gRmlyZWZveCBNb2JpbGUgKDEyIEJldGEpIC0gVGVzdGVkIG9uIEFuZHJvaWQgMi4zIGRldmljZQogICAgICAgICAgICAoICR0aGlzLT5pcygnRmlyZWZveCcpICYmICR0aGlzLT52ZXJzaW9uKCdGaXJlZm94Jywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49MTIgKSB8fAoKICAgICAgICAgICAgLy8gQ2hyb21lIGZvciBBbmRyb2lkIC0gVGVzdGVkIG9uIEFuZHJvaWQgNC4wLCA0LjEgZGV2aWNlCiAgICAgICAgICAgICggJHRoaXMtPmlzKCdDaHJvbWUnKSAmJiAkdGhpcy0+aXMoJ0FuZHJvaWRPUycpICYmICR0aGlzLT52ZXJzaW9uKCdBbmRyb2lkJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49NC4wICkgfHwKCiAgICAgICAgICAgIC8vIFNreWZpcmUgNC4xIC0gVGVzdGVkIG9uIEFuZHJvaWQgMi4zIGRldmljZQogICAgICAgICAgICAoICR0aGlzLT5pcygnU2t5ZmlyZScpICYmICR0aGlzLT52ZXJzaW9uKCdTa3lmaXJlJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49NC4xICYmICR0aGlzLT5pcygnQW5kcm9pZE9TJykgJiYgJHRoaXMtPnZlcnNpb24oJ0FuZHJvaWQnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0yLjMgKSB8fAoKICAgICAgICAgICAgLy8gT3BlcmEgTW9iaWxlIDExLjUtMTI6IFRlc3RlZCBvbiBBbmRyb2lkIDIuMwogICAgICAgICAgICAoICR0aGlzLT5pcygnT3BlcmEnKSAmJiAkdGhpcy0+dmVyc2lvbignT3BlcmEgTW9iaScsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk+MTEgJiYgJHRoaXMtPmlzKCdBbmRyb2lkT1MnKSApIHx8CgogICAgICAgICAgICAvLyBNZWVnbyAxLjIgLSBUZXN0ZWQgb24gTm9raWEgOTUwIGFuZCBOOQogICAgICAgICAgICAkdGhpcy0+aXMoJ01lZUdvT1MnKSB8fAoKICAgICAgICAgICAgLy8gVGl6ZW4gKHByZS1yZWxlYXNlKSAtIFRlc3RlZCBvbiBlYXJseSBoYXJkd2FyZQogICAgICAgICAgICAkdGhpcy0+aXMoJ1RpemVuJykgfHwKCiAgICAgICAgICAgIC8vIFNhbXN1bmcgQmFkYSAyLjAgLSBUZXN0ZWQgb24gYSBTYW1zdW5nIFdhdmUgMywgRG9scGhpbiBicm93c2VyCiAgICAgICAgICAgIC8vIEB0b2RvOiBtb3JlIHRlc3RzIGhlcmUhCiAgICAgICAgICAgICR0aGlzLT5pcygnRG9sZmluJykgJiYgJHRoaXMtPnZlcnNpb24oJ0JhZGEnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0yLjAgfHwKCiAgICAgICAgICAgIC8vIFVDIEJyb3dzZXIgLSBUZXN0ZWQgb24gQW5kcm9pZCAyLjMgZGV2aWNlCiAgICAgICAgICAgICggKCR0aGlzLT5pcygnVUMgQnJvd3NlcicpIHx8ICR0aGlzLT5pcygnRG9sZmluJykpICYmICR0aGlzLT52ZXJzaW9uKCdBbmRyb2lkJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49Mi4zICkgfHwKCiAgICAgICAgICAgIC8vIEtpbmRsZSAzIGFuZCBGaXJlICAtIFRlc3RlZCBvbiB0aGUgYnVpbHQtaW4gV2ViS2l0IGJyb3dzZXIgZm9yIGVhY2gKICAgICAgICAgICAgKCAkdGhpcy0+bWF0Y2goJ0tpbmRsZSBGaXJlJykgfHwKICAgICAgICAgICAgJHRoaXMtPmlzKCdLaW5kbGUnKSAmJiAkdGhpcy0+dmVyc2lvbignS2luZGxlJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49My4wICkgfHwKCiAgICAgICAgICAgIC8vIE5vb2sgQ29sb3IgMS40LjEgLSBUZXN0ZWQgb24gb3JpZ2luYWwgTm9vayBDb2xvciwgbm90IE5vb2sgVGFibGV0CiAgICAgICAgICAgICR0aGlzLT5pcygnQW5kcm9pZE9TJykgJiYgJHRoaXMtPmlzKCdOb29rVGFibGV0JykgfHwKCiAgICAgICAgICAgIC8vIENocm9tZSBEZXNrdG9wIDExLTIxIC0gVGVzdGVkIG9uIE9TIFggMTAuNyBhbmQgV2luZG93cyA3CiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdDaHJvbWUnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0xMSAmJiAhJGlzTW9iaWxlIHx8CgogICAgICAgICAgICAvLyBTYWZhcmkgRGVza3RvcCA0LTUgLSBUZXN0ZWQgb24gT1MgWCAxMC43IGFuZCBXaW5kb3dzIDcKICAgICAgICAgICAgJHRoaXMtPnZlcnNpb24oJ1NhZmFyaScsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk+PTUuMCAmJiAhJGlzTW9iaWxlIHx8CgogICAgICAgICAgICAvLyBGaXJlZm94IERlc2t0b3AgNC0xMyAtIFRlc3RlZCBvbiBPUyBYIDEwLjcgYW5kIFdpbmRvd3MgNwogICAgICAgICAgICAkdGhpcy0+dmVyc2lvbignRmlyZWZveCcsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk+PTQuMCAmJiAhJGlzTW9iaWxlIHx8CgogICAgICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciA3LTkgLSBUZXN0ZWQgb24gV2luZG93cyBYUCwgVmlzdGEgYW5kIDcKICAgICAgICAgICAgJHRoaXMtPnZlcnNpb24oJ01TSUUnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj03LjAgJiYgISRpc01vYmlsZSB8fAoKICAgICAgICAgICAgLy8gT3BlcmEgRGVza3RvcCAxMC0xMiAtIFRlc3RlZCBvbiBPUyBYIDEwLjcgYW5kIFdpbmRvd3MgNwogICAgICAgICAgICAvLyBAcmVmZXJlbmNlOiBodHRwOi8vbXkub3BlcmEuY29tL2NvbW11bml0eS9vcGVud2ViL2lkb3BlcmEvCiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdPcGVyYScsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk+PTEwICYmICEkaXNNb2JpbGUKCiAgICAgICAgKXsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Ok1PQklMRV9HUkFERV9BOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdGhpcy0+dmVyc2lvbignaVBhZCcsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk8NC4zIHx8CiAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uKCdpUGhvbmUnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPDMuMSB8fAogICAgICAgICAgICAkdGhpcy0+dmVyc2lvbignaVBvZCcsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk8My4xIHx8CgogICAgICAgICAgICAvLyBCbGFja2JlcnJ5IDUuMDogVGVzdGVkIG9uIHRoZSBTdG9ybSAyIDk1NTAsIEJvbGQgOTc3MAogICAgICAgICAgICAkdGhpcy0+aXMoJ0JsYWNrYmVycnknKSAmJiAkdGhpcy0+dmVyc2lvbignQmxhY2tCZXJyeScsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk+PTUgJiYgJHRoaXMtPnZlcnNpb24oJ0JsYWNrQmVycnknLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPDYgfHwKCiAgICAgICAgICAgIC8vT3BlcmEgTWluaSAoNS4wLTYuNSkgLSBUZXN0ZWQgb24gaU9TIDMuMi80LjMgYW5kIEFuZHJvaWQgMi4zCiAgICAgICAgICAgICggJHRoaXMtPnZlcnNpb24oJ09wZXJhIE1pbmknLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj01LjAgJiYgJHRoaXMtPnZlcnNpb24oJ09wZXJhIE1pbmknLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPD02LjUgJiYKICAgICAgICAgICAgKCR0aGlzLT52ZXJzaW9uKCdBbmRyb2lkJywgc2VsZjo6VkVSU0lPTl9UWVBFX0ZMT0FUKT49Mi4zIHx8ICR0aGlzLT5pcygnaU9TJykpICkgfHwKCiAgICAgICAgICAgIC8vIE5va2lhIFN5bWJpYW5eMyAtIFRlc3RlZCBvbiBOb2tpYSBOOCAoU3ltYmlhbl4zKSwgQzcgKFN5bWJpYW5eMyksIGFsc28gd29ya3Mgb24gTjk3IChTeW1iaWFuXjEpCiAgICAgICAgICAgICR0aGlzLT5tYXRjaCgnTm9raWFOOHxOb2tpYUM3fE45Ny4qU2VyaWVzNjB8U3ltYmlhbi8zJykgfHwKCiAgICAgICAgICAgIC8vIEB0b2RvOiByZXBvcnQgdGhpcyAodGVzdGVkIG9uIE5va2lhIE43MSkKICAgICAgICAgICAgJHRoaXMtPnZlcnNpb24oJ09wZXJhIE1vYmknLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPj0xMSAmJiAkdGhpcy0+aXMoJ1N5bWJpYW5PUycpCiAgICAgICAgKXsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Ok1PQklMRV9HUkFERV9COwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAvLyBCbGFja2JlcnJ5IDQueCAtIFRlc3RlZCBvbiB0aGUgQ3VydmUgODMzMAogICAgICAgICAgICAkdGhpcy0+dmVyc2lvbignQmxhY2tCZXJyeScsIHNlbGY6OlZFUlNJT05fVFlQRV9GTE9BVCk8NS4wIHx8CiAgICAgICAgICAgIC8vIFdpbmRvd3MgTW9iaWxlIC0gVGVzdGVkIG9uIHRoZSBIVEMgTGVvIChXaW5NbyA1LjIpCiAgICAgICAgICAgICR0aGlzLT5tYXRjaCgnTVNJRU1vYmlsZXxXaW5kb3dzIENFLipNb2JpbGUnKSB8fCAkdGhpcy0+dmVyc2lvbignV2luZG93cyBNb2JpbGUnLCBzZWxmOjpWRVJTSU9OX1RZUEVfRkxPQVQpPD01LjIKCiAgICAgICAgKXsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Ok1PQklMRV9HUkFERV9DOwogICAgICAgIH0KCiAgICAgICAgLy9BbGwgb2xkZXIgc21hcnRwaG9uZSBwbGF0Zm9ybXMgYW5kIGZlYXR1cmVwaG9uZXMgLSBBbnkgZGV2aWNlIHRoYXQgZG9lc24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMKICAgICAgICAvL3dpbGwgcmVjZWl2ZSB0aGUgYmFzaWMsIEMgZ3JhZGUgZXhwZXJpZW5jZS4KICAgICAgICByZXR1cm4gc2VsZjo6TU9CSUxFX0dSQURFX0M7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.parseCSV.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIHBhcnNlQ1NWIHsKCi8qCgoJQ2xhc3M6IHBhcnNlQ1NWIHYwLjQuMyBiZXRhCglodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcGFyc2Vjc3YtZm9yLXBocC8KCgoJRnVsbHkgY29uZm9ybXMgdG8gdGhlIHNwZWNpZmljYXRpb25zIGxpbmVkIG91dCBvbiB3aWtpcGVkaWE6CgkgLSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbW1hLXNlcGFyYXRlZF92YWx1ZXMKCglCYXNlZCBvbiB0aGUgY29uY2VwdCBvZiBNaW5nIEhvbmcgTmcncyBDc3ZGaWxlUGFyc2VyIGNsYXNzOgoJIC0gaHR0cDovL21pbmdob25nLmJsb2dzcG90LmNvbS8yMDA2LzA3L2Nzdi1wYXJzZXItZm9yLXBocC5odG1sCgoKCglDb3B5cmlnaHQgKGMpIDIwMDcgSmltIE15aHJiZXJnIChqaW1AenlkZXYuaW5mbykuCgoJUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQoJb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKCWluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKCXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKCWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwoJZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCglUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgoJYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgoJVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKCUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAoJRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCglBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCglMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAoJT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgoJVEhFIFNPRlRXQVJFLgoKCgoJQ29kZSBFeGFtcGxlcwoJLS0tLS0tLS0tLS0tLS0tLQoJIyBnZW5lcmFsIHVzYWdlCgkkY3N2ID0gbmV3IHBhcnNlQ1NWKCdkYXRhLmNzdicpOwoJcHJpbnRfcigkY3N2LT5kYXRhKTsKCS0tLS0tLS0tLS0tLS0tLS0KCSMgdGFiIGRlbGltaXRlZCwgYW5kIGVuY29kaW5nIGNvbnZlcnNpb24KCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsKCSRjc3YtPmVuY29kaW5nKCdVVEYtMTYnLCAnVVRGLTgnKTsKCSRjc3YtPmRlbGltaXRlciA9ICJcdCI7CgkkY3N2LT5wYXJzZSgnZGF0YS50c3YnKTsKCXByaW50X3IoJGNzdi0+ZGF0YSk7CgktLS0tLS0tLS0tLS0tLS0tCgkjIGF1dG8tZGV0ZWN0IGRlbGltaXRlciBjaGFyYWN0ZXIKCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsKCSRjc3YtPmF1dG8oJ2RhdGEuY3N2Jyk7CglwcmludF9yKCRjc3YtPmRhdGEpOwoJLS0tLS0tLS0tLS0tLS0tLQoJIyBtb2RpZnkgZGF0YSBpbiBhIGNzdiBmaWxlCgkkY3N2ID0gbmV3IHBhcnNlQ1NWKCk7CgkkY3N2LT5zb3J0X2J5ID0gJ2lkJzsKCSRjc3YtPnBhcnNlKCdkYXRhLmNzdicpOwoJIyAiNCIgaXMgdGhlIHZhbHVlIG9mIHRoZSAiaWQiIGNvbHVtbiBvZiB0aGUgQ1NWIHJvdwoJJGNzdi0+ZGF0YVs0XSA9IGFycmF5KCdmaXJzdG5hbWUnID0+ICdKb2huJywgJ2xhc3RuYW1lJyA9PiAnRG9lJywgJ2VtYWlsJyA9PiAnam9obkBkb2UuY29tJyk7CgkkY3N2LT5zYXZlKCk7CgktLS0tLS0tLS0tLS0tLS0tCgkjIGFkZCByb3cvZW50cnkgdG8gZW5kIG9mIENTViBmaWxlCgkjICAtIG9ubHkgcmVjb21tZW5kZWQgd2hlbiB5b3Uga25vdyB0aGUgZXh0YWN0IHNjdHJ1Y3R1cmUgb2YgdGhlIGZpbGUKCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsKCSRjc3YtPnNhdmUoJ2RhdGEuY3N2JywgYXJyYXkoJzE5ODYnLCAnSG9tZScsICdOb3doZXJlJywgJycpLCB0cnVlKTsKCS0tLS0tLS0tLS0tLS0tLS0KCSMgY29udmVydCAyRCBhcnJheSB0byBjc3YgZGF0YSBhbmQgc2VuZCBoZWFkZXJzCgkjIHRvIGJyb3dzZXIgdG8gdHJlYXQgb3V0cHV0IGFzIGEgZmlsZSBhbmQgZG93bmxvYWQgaXQKCSRjc3YgPSBuZXcgcGFyc2VDU1YoKTsKCSRjc3YtPm91dHB1dCAodHJ1ZSwgJ21vdmllcy5jc3YnLCAkYXJyYXkpOwoJLS0tLS0tLS0tLS0tLS0tLQoKCiovCgoKCS8qKgoJICogQ29uZmlndXJhdGlvbgoJICogLSBzZXQgdGhlc2Ugb3B0aW9ucyB3aXRoICRvYmplY3QtPnZhcl9uYW1lID0gJ3ZhbHVlJzsKCSAqLwoKCSMgdXNlIGZpcnN0IGxpbmUvZW50cnkgYXMgZmllbGQgbmFtZXMKCXZhciAkaGVhZGluZyA9IHRydWU7CgoJIyBvdmVycmlkZSBmaWVsZCBuYW1lcwoJdmFyICRmaWVsZHMgPSBhcnJheSgpOwoKCSMgc29ydCBlbnRyaWVzIGJ5IHRoaXMgZmllbGQKCXZhciAkc29ydF9ieSA9IG51bGw7Cgl2YXIgJHNvcnRfcmV2ZXJzZSA9IGZhbHNlOwoKCSMgc29ydCBiZWhhdmlvciBwYXNzZWQgdG8ga3NvcnQva3Jzb3J0IGZ1bmN0aW9ucwoJIyByZWd1bGFyID0gU09SVF9SRUdVTEFSCgkjIG51bWVyaWMgPSBTT1JUX05VTUVSSUMKCSMgc3RyaW5nICA9IFNPUlRfU1RSSU5HCgl2YXIgJHNvcnRfdHlwZSA9IG51bGw7CgoJIyBkZWxpbWl0ZXIgKGNvbW1hKSBhbmQgZW5jbG9zdXJlIChkb3VibGUgcXVvdGUpCgl2YXIgJGRlbGltaXRlciA9ICcsJzsKCXZhciAkZW5jbG9zdXJlID0gJyInOwoKCSMgYmFzaWMgU1FMLWxpa2UgY29uZGl0aW9ucyBmb3Igcm93IG1hdGNoaW5nCgl2YXIgJGNvbmRpdGlvbnMgPSBudWxsOwoKCSMgbnVtYmVyIG9mIHJvd3MgdG8gaWdub3JlIGZyb20gYmVnaW5uaW5nIG9mIGRhdGEKCXZhciAkb2Zmc2V0ID0gbnVsbDsKCgkjIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHJldHVybmVkIHJvd3MgdG8gc3BlY2lmaWVkIGFtb3VudAoJdmFyICRsaW1pdCA9IG51bGw7CgoJIyBudW1iZXIgb2Ygcm93cyB0byBhbmFseXplIHdoZW4gYXR0ZW1wdGluZyB0byBhdXRvLWRldGVjdCBkZWxpbWl0ZXIKCXZhciAkYXV0b19kZXB0aCA9IDE1OwoKCSMgY2hhcmFjdGVycyB0byBpZ25vcmUgd2hlbiBhdHRlbXB0aW5nIHRvIGF1dG8tZGV0ZWN0IGRlbGltaXRlcgoJdmFyICRhdXRvX25vbl9jaGFycyA9ICJhLXpBLVowLTlcblxyIjsKCgkjIHByZWZlcnJlZCBkZWxpbWl0ZXIgY2hhcmFjdGVycywgb25seSB1c2VkIHdoZW4gYWxsIGZpbHRlcmluZyBtZXRob2QKCSMgcmV0dXJucyBtdWx0aXBsZSBwb3NzaWJsZSBkZWxpbWl0ZXJzIChoYXBwZW5zIHZlcnkgcmFyZWx5KQoJdmFyICRhdXRvX3ByZWZlcnJlZCA9ICIsO1x0Ljp8IjsKCgkjIGNoYXJhY3RlciBlbmNvZGluZyBvcHRpb25zCgl2YXIgJGNvbnZlcnRfZW5jb2RpbmcgPSBmYWxzZTsKCXZhciAkaW5wdXRfZW5jb2RpbmcgPSAnSVNPLTg4NTktMSc7Cgl2YXIgJG91dHB1dF9lbmNvZGluZyA9ICdJU08tODg1OS0xJzsKCgkjIHVzZWQgYnkgdW5wYXJzZSgpLCBzYXZlKCksIGFuZCBvdXRwdXQoKSBmdW5jdGlvbnMKCXZhciAkbGluZWZlZWQgPSAiXHJcbiI7CgoJIyBvbmx5IHVzZWQgYnkgb3V0cHV0KCkgZnVuY3Rpb24KCXZhciAkb3V0cHV0X2RlbGltaXRlciA9ICcsJzsKCXZhciAkb3V0cHV0X2ZpbGVuYW1lID0gJ2RhdGEuY3N2JzsKCgkjIGtlZXAgcmF3IGZpbGUgZGF0YSBpbiBtZW1vcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBwYXJzaW5nICh1c2VmdWwgZm9yIGRlYnVnZ2luZykKCXZhciAka2VlcF9maWxlX2RhdGEgPSBmYWxzZTsKCgkvKioKCSAqIEludGVybmFsIHZhcmlhYmxlcwoJICovCgoJIyBjdXJyZW50IGZpbGUKCXZhciAkZmlsZTsKCgkjIGxvYWRlZCBmaWxlIGNvbnRlbnRzCgl2YXIgJGZpbGVfZGF0YTsKCgkjIGVycm9yIHdoaWxlIHBhcnNpbmcgaW5wdXQgZGF0YQoJIyAgMCA9IE5vIGVycm9ycyBmb3VuZC4gRXZlcnl0aGluZyBzaG91bGQgYmUgZmluZSA6KQoJIyAgMSA9IEhvcGVmdWxseSBjb3JyZWN0YWJsZSBzeW50YXggZXJyb3Igd2FzIGZvdW5kLgoJIyAgMiA9IEVuY2xvc3VyZSBjaGFyYWN0ZXIgKGRvdWJsZSBxdW90ZSBieSBkZWZhdWx0KQoJIyAgICAgIHdhcyBmb3VuZCBpbiBub24tZW5jbG9zZWQgZmllbGQuIFRoaXMgbWVhbnMKCSMgICAgICB0aGUgZmlsZSBpcyBlaXRoZXIgY29ycnVwdCwgb3IgZG9lcyBub3QKCSMgICAgICBzdGFuZGFyZCBDU1YgZm9ybWF0dGluZy4gUGxlYXNlIHZhbGlkYXRlCgkjICAgICAgdGhlIHBhcnNlZCBkYXRhIHlvdXJzZWxmLgoJdmFyICRlcnJvciA9IDA7CgoJIyBkZXRhaWxlZCBlcnJvciBpbmZvCgl2YXIgJGVycm9yX2luZm8gPSBhcnJheSgpOwoKCSMgYXJyYXkgb2YgZmllbGQgdmFsdWVzIGluIGRhdGEgcGFyc2VkCgl2YXIgJHRpdGxlcyA9IGFycmF5KCk7CgoJIyB0d28gZGltZW50aW9uYWwgYXJyYXkgb2YgQ1NWIGRhdGEKCXZhciAkZGF0YSA9IGFycmF5KCk7CgoKCS8qKgoJICogQ29uc3RydWN0b3IKCSAqIEBwYXJhbSAgIGlucHV0ICAgQ1NWIGZpbGUgb3Igc3RyaW5nCgkgKiBAcmV0dXJuICBub3RoaW5nCgkgKi8KCWZ1bmN0aW9uIHBhcnNlQ1NWICgkaW5wdXQgPSBudWxsLCAkb2Zmc2V0ID0gbnVsbCwgJGxpbWl0ID0gbnVsbCwgJGNvbmRpdGlvbnMgPSBudWxsKSB7CgkJaWYgKCAkb2Zmc2V0ICE9PSBudWxsICkgJHRoaXMtPm9mZnNldCA9ICRvZmZzZXQ7CgkJaWYgKCAkbGltaXQgIT09IG51bGwgKSAkdGhpcy0+bGltaXQgPSAkbGltaXQ7CgkJaWYgKCBjb3VudCgkY29uZGl0aW9ucykgPiAwICkgJHRoaXMtPmNvbmRpdGlvbnMgPSAkY29uZGl0aW9uczsKCQlpZiAoICFlbXB0eSgkaW5wdXQpICkgJHRoaXMtPnBhcnNlKCRpbnB1dCk7Cgl9CgoKCS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCS8vIC0tLS0tIFsgTWFpbiBGdW5jdGlvbnMgXSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgkvKioKCSAqIFBhcnNlIENTViBmaWxlIG9yIHN0cmluZwoJICogQHBhcmFtICAgaW5wdXQgICBDU1YgZmlsZSBvciBzdHJpbmcKCSAqIEByZXR1cm4gIG5vdGhpbmcKCSAqLwoJZnVuY3Rpb24gcGFyc2UgKCRpbnB1dCA9IG51bGwsICRvZmZzZXQgPSBudWxsLCAkbGltaXQgPSBudWxsLCAkY29uZGl0aW9ucyA9IG51bGwpIHsKCQlpZiAoICRpbnB1dCA9PT0gbnVsbCApICRpbnB1dCA9ICR0aGlzLT5maWxlOwoJCWlmICggIWVtcHR5KCRpbnB1dCkgKSB7CgkJCWlmICggJG9mZnNldCAhPT0gbnVsbCApICR0aGlzLT5vZmZzZXQgPSAkb2Zmc2V0OwoJCQlpZiAoICRsaW1pdCAhPT0gbnVsbCApICR0aGlzLT5saW1pdCA9ICRsaW1pdDsKCQkJaWYgKCBjb3VudCgkY29uZGl0aW9ucykgPiAwICkgJHRoaXMtPmNvbmRpdGlvbnMgPSAkY29uZGl0aW9uczsKCQkJaWYgKCBpc19yZWFkYWJsZSgkaW5wdXQpICkgewoJCQkJJHRoaXMtPmRhdGEgPSAkdGhpcy0+cGFyc2VfZmlsZSgkaW5wdXQpOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPmZpbGVfZGF0YSA9ICYkaW5wdXQ7CgkJCQkkdGhpcy0+ZGF0YSA9ICR0aGlzLT5wYXJzZV9zdHJpbmcoKTsKCQkJfQoJCQlpZiAoICR0aGlzLT5kYXRhID09PSBmYWxzZSApIHJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBTYXZlIGNoYW5nZXMsIG9yIG5ldyBmaWxlIGFuZC9vciBkYXRhCgkgKiBAcGFyYW0gICBmaWxlICAgICBmaWxlIHRvIHNhdmUgdG8KCSAqIEBwYXJhbSAgIGRhdGEgICAgIDJEIGFycmF5IHdpdGggZGF0YQoJICogQHBhcmFtICAgYXBwZW5kICAgYXBwZW5kIGN1cnJlbnQgZGF0YSB0byBlbmQgb2YgdGFyZ2V0IENTViBpZiBleGlzdHMKCSAqIEBwYXJhbSAgIGZpZWxkcyAgIGZpZWxkIG5hbWVzCgkgKiBAcmV0dXJuICB0cnVlIG9yIGZhbHNlCgkgKi8KCWZ1bmN0aW9uIHNhdmUgKCRmaWxlID0gbnVsbCwgJGRhdGEgPSBhcnJheSgpLCAkYXBwZW5kID0gZmFsc2UsICRmaWVsZHMgPSBhcnJheSgpKSB7CgkJaWYgKCBlbXB0eSgkZmlsZSkgKSAkZmlsZSA9ICYkdGhpcy0+ZmlsZTsKCQkkbW9kZSA9ICggJGFwcGVuZCApID8gJ2F0JyA6ICd3dCcgOwoJCSRpc19waHAgPSAoIHByZWdfbWF0Y2goJy9cLnBocCQvaScsICRmaWxlKSApID8gdHJ1ZSA6IGZhbHNlIDsKCQlyZXR1cm4gJHRoaXMtPl93ZmlsZSgkZmlsZSwgJHRoaXMtPnVucGFyc2UoJGRhdGEsICRmaWVsZHMsICRhcHBlbmQsICRpc19waHApLCAkbW9kZSk7Cgl9CgoJLyoqCgkgKiBHZW5lcmF0ZSBDU1YgYmFzZWQgc3RyaW5nIGZvciBvdXRwdXQKCSAqIEBwYXJhbSAgIGZpbGVuYW1lICAgIGlmIHNwZWNpZmllZCwgaGVhZGVycyBhbmQgZGF0YSB3aWxsIGJlIG91dHB1dCBkaXJlY3RseSB0byBicm93c2VyIGFzIGEgZG93bmxvYWJsZSBmaWxlCgkgKiBAcGFyYW0gICBkYXRhICAgICAgICAyRCBhcnJheSB3aXRoIGRhdGEKCSAqIEBwYXJhbSAgIGZpZWxkcyAgICAgIGZpZWxkIG5hbWVzCgkgKiBAcGFyYW0gICBkZWxpbWl0ZXIgICBkZWxpbWl0ZXIgdXNlZCB0byBzZXBhcmF0ZSBkYXRhCgkgKiBAcmV0dXJuICBDU1YgZGF0YSB1c2luZyBkZWxpbWl0ZXIgb2YgY2hvaWNlLCBvciBkZWZhdWx0CgkgKi8KCWZ1bmN0aW9uIG91dHB1dCAoJGZpbGVuYW1lID0gbnVsbCwgJGRhdGEgPSBhcnJheSgpLCAkZmllbGRzID0gYXJyYXkoKSwgJGRlbGltaXRlciA9IG51bGwpIHsKCQlpZiAoIGVtcHR5KCRmaWxlbmFtZSkgKSAkZmlsZW5hbWUgPSAkdGhpcy0+b3V0cHV0X2ZpbGVuYW1lOwoJCWlmICggJGRlbGltaXRlciA9PT0gbnVsbCApICRkZWxpbWl0ZXIgPSAkdGhpcy0+b3V0cHV0X2RlbGltaXRlcjsKCQkkZGF0YSA9ICR0aGlzLT51bnBhcnNlKCRkYXRhLCAkZmllbGRzLCBudWxsLCBudWxsLCAkZGVsaW1pdGVyKTsKCQlpZiAoICRmaWxlbmFtZSAhPT0gbnVsbCApIHsKCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2NzdicpOwoJCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiRmaWxlbmFtZS4nIicpOwoJCQllY2hvICRkYXRhOwoJCX0KCQlyZXR1cm4gJGRhdGE7Cgl9CgoJLyoqCgkgKiBDb252ZXJ0IGNoYXJhY3RlciBlbmNvZGluZwoJICogQHBhcmFtICAgaW5wdXQgICAgaW5wdXQgY2hhcmFjdGVyIGVuY29kaW5nLCB1c2VzIGRlZmF1bHQgaWYgbGVmdCBibGFuawoJICogQHBhcmFtICAgb3V0cHV0ICAgb3V0cHV0IGNoYXJhY3RlciBlbmNvZGluZywgdXNlcyBkZWZhdWx0IGlmIGxlZnQgYmxhbmsKCSAqIEByZXR1cm4gIG5vdGhpbmcKCSAqLwoJZnVuY3Rpb24gZW5jb2RpbmcgKCRpbnB1dCA9IG51bGwsICRvdXRwdXQgPSBudWxsKSB7CgkJJHRoaXMtPmNvbnZlcnRfZW5jb2RpbmcgPSB0cnVlOwoJCWlmICggJGlucHV0ICE9PSBudWxsICkgJHRoaXMtPmlucHV0X2VuY29kaW5nID0gJGlucHV0OwoJCWlmICggJG91dHB1dCAhPT0gbnVsbCApICR0aGlzLT5vdXRwdXRfZW5jb2RpbmcgPSAkb3V0cHV0OwoJfQoKCS8qKgoJICogQXV0by1EZXRlY3QgRGVsaW1pdGVyOiBGaW5kIGRlbGltaXRlciBieSBhbmFseXppbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YKCSAqIHJvd3MgdG8gZGV0ZXJtaW5lIG1vc3QgcHJvYmFibGUgZGVsaW1pdGVyIGNoYXJhY3RlcgoJICogQHBhcmFtICAgZmlsZSAgICAgICAgICAgbG9jYWwgQ1NWIGZpbGUKCSAqIEBwYXJhbSAgIHBhcnNlICAgICAgICAgIHRydWUvZmFsc2UgcGFyc2UgZmlsZSBkaXJlY3RseQoJICogQHBhcmFtICAgc2VhcmNoX2RlcHRoICAgbnVtYmVyIG9mIHJvd3MgdG8gYW5hbHl6ZQoJICogQHBhcmFtICAgcHJlZmVycmVkICAgICAgcHJlZmVycmVkIGRlbGltaXRlciBjaGFyYWN0ZXJzCgkgKiBAcGFyYW0gICBlbmNsb3N1cmUgICAgICBlbmNsb3N1cmUgY2hhcmFjdGVyLCBkZWZhdWx0IGlzIGRvdWJsZSBxdW90ZSAoIikuCgkgKiBAcmV0dXJuICBkZWxpbWl0ZXIgY2hhcmFjdGVyCgkgKi8KCWZ1bmN0aW9uIGF1dG8gKCRmaWxlID0gbnVsbCwgJHBhcnNlID0gdHJ1ZSwgJHNlYXJjaF9kZXB0aCA9IG51bGwsICRwcmVmZXJyZWQgPSBudWxsLCAkZW5jbG9zdXJlID0gbnVsbCkgewoKCQlpZiAoICRmaWxlID09PSBudWxsICkgJGZpbGUgPSAkdGhpcy0+ZmlsZTsKCQlpZiAoIGVtcHR5KCRzZWFyY2hfZGVwdGgpICkgJHNlYXJjaF9kZXB0aCA9ICR0aGlzLT5hdXRvX2RlcHRoOwoJCWlmICggJGVuY2xvc3VyZSA9PT0gbnVsbCApICRlbmNsb3N1cmUgPSAkdGhpcy0+ZW5jbG9zdXJlOwoKCQlpZiAoICRwcmVmZXJyZWQgPT09IG51bGwgKSAkcHJlZmVycmVkID0gJHRoaXMtPmF1dG9fcHJlZmVycmVkOwoKCQlpZiAoIGVtcHR5KCR0aGlzLT5maWxlX2RhdGEpICkgewoJCQlpZiAoICR0aGlzLT5fY2hlY2tfZGF0YSgkZmlsZSkgKSB7CgkJCQkkZGF0YSA9ICYkdGhpcy0+ZmlsZV9kYXRhOwoJCQl9IGVsc2UgcmV0dXJuIGZhbHNlOwoJCX0gZWxzZSB7CgkJCSRkYXRhID0gJiR0aGlzLT5maWxlX2RhdGE7CgkJfQoKCQkkY2hhcnMgPSBhcnJheSgpOwoJCSRzdHJsZW4gPSBzdHJsZW4oJGRhdGEpOwoJCSRlbmNsb3NlZCA9IGZhbHNlOwoJCSRuID0gMTsKCQkkdG9fZW5kID0gdHJ1ZTsKCgkJLy8gd2FsayBzcGVjaWZpYyBkZXB0aCBmaW5kaW5nIHBvc3NzaWJsZSBkZWxpbWl0ZXIgY2hhcmFjdGVycwoJCWZvciAoICRpPTA7ICRpIDwgJHN0cmxlbjsgJGkrKyApIHsKCQkJJGNoID0gJGRhdGF7JGl9OwoJCQkkbmNoID0gKCBpc3NldCgkZGF0YXskaSsxfSkgKSA/ICRkYXRheyRpKzF9IDogZmFsc2UgOwoJCQkkcGNoID0gKCBpc3NldCgkZGF0YXskaS0xfSkgKSA/ICRkYXRheyRpLTF9IDogZmFsc2UgOwoKCQkJLy8gb3BlbiBhbmQgY2xvc2luZyBxdW90ZXMKCQkJaWYgKCAkY2ggPT0gJGVuY2xvc3VyZSApIHsKCQkJCWlmICggISRlbmNsb3NlZCB8fCAkbmNoICE9ICRlbmNsb3N1cmUgKSB7CgkJCQkJJGVuY2xvc2VkID0gKCAkZW5jbG9zZWQgKSA/IGZhbHNlIDogdHJ1ZSA7CgkJCQl9IGVsc2VpZiAoICRlbmNsb3NlZCApIHsKCQkJCQkkaSsrOwoJCQkJfQoKCQkJLy8gZW5kIG9mIHJvdwoJCQl9IGVsc2VpZiAoICgkY2ggPT0gIlxuIiAmJiAkcGNoICE9ICJcciIgfHwgJGNoID09ICJcciIpICYmICEkZW5jbG9zZWQgKSB7CgkJCQlpZiAoICRuID49ICRzZWFyY2hfZGVwdGggKSB7CgkJCQkJJHN0cmxlbiA9IDA7CgkJCQkJJHRvX2VuZCA9IGZhbHNlOwoJCQkJfSBlbHNlIHsKCQkJCQkkbisrOwoJCQkJfQoKCQkJLy8gY291bnQgY2hhcmFjdGVyCgkJCX0gZWxzZWlmICghJGVuY2xvc2VkKSB7CgkJCQlpZiAoICFwcmVnX21hdGNoKCcvWycucHJlZ19xdW90ZSgkdGhpcy0+YXV0b19ub25fY2hhcnMsICcvJykuJ10vaScsICRjaCkgKSB7CgkJCQkJaWYgKCAhaXNzZXQoJGNoYXJzWyRjaF1bJG5dKSApIHsKCQkJCQkJJGNoYXJzWyRjaF1bJG5dID0gMTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkY2hhcnNbJGNoXVskbl0rKzsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCS8vIGZpbHRlcmluZwoJCSRkZXB0aCA9ICggJHRvX2VuZCApID8gJG4tMSA6ICRuIDsKCQkkZmlsdGVyZWQgPSBhcnJheSgpOwoJCWZvcmVhY2goICRjaGFycyBhcyAkY2hhciA9PiAkdmFsdWUgKSB7CgkJCWlmICggJG1hdGNoID0gJHRoaXMtPl9jaGVja19jb3VudCgkY2hhciwgJHZhbHVlLCAkZGVwdGgsICRwcmVmZXJyZWQpICkgewoJCQkJJGZpbHRlcmVkWyRtYXRjaF0gPSAkY2hhcjsKCQkJfQoJCX0KCgkJLy8gY2FwdHVyZSBtb3N0IHByb2JhYmxlIGRlbGltaXRlcgoJCWtzb3J0KCRmaWx0ZXJlZCk7CgkJJHRoaXMtPmRlbGltaXRlciA9IHJlc2V0KCRmaWx0ZXJlZCk7CgoJCS8vIHBhcnNlIGRhdGEKCQlpZiAoICRwYXJzZSApICR0aGlzLT5kYXRhID0gJHRoaXMtPnBhcnNlX3N0cmluZygpOwoKCQlyZXR1cm4gJHRoaXMtPmRlbGltaXRlcjsKCgl9CgoKCS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCS8vIC0tLS0tIFsgQ29yZSBGdW5jdGlvbnMgXSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgkvKioKCSAqIFJlYWQgZmlsZSB0byBzdHJpbmcgYW5kIGNhbGwgcGFyc2Vfc3RyaW5nKCkKCSAqIEBwYXJhbSAgIGZpbGUgICBsb2NhbCBDU1YgZmlsZQoJICogQHJldHVybiAgMkQgYXJyYXkgd2l0aCBDU1YgZGF0YSwgb3IgZmFsc2Ugb24gZmFpbHVyZQoJICovCglmdW5jdGlvbiBwYXJzZV9maWxlICgkZmlsZSA9IG51bGwpIHsKCQlpZiAoICRmaWxlID09PSBudWxsICkgJGZpbGUgPSAkdGhpcy0+ZmlsZTsKCQlpZiAoIGVtcHR5KCR0aGlzLT5maWxlX2RhdGEpICkgJHRoaXMtPmxvYWRfZGF0YSgkZmlsZSk7CgkJcmV0dXJuICggIWVtcHR5KCR0aGlzLT5maWxlX2RhdGEpICkgPyAkdGhpcy0+cGFyc2Vfc3RyaW5nKCkgOiBmYWxzZSA7Cgl9CgoJLyoqCgkgKiBQYXJzZSBDU1Ygc3RyaW5ncyB0byBhcnJheXMKCSAqIEBwYXJhbSAgIGRhdGEgICBDU1Ygc3RyaW5nCgkgKiBAcmV0dXJuICAyRCBhcnJheSB3aXRoIENTViBkYXRhLCBvciBmYWxzZSBvbiBmYWlsdXJlCgkgKi8KCWZ1bmN0aW9uIHBhcnNlX3N0cmluZyAoJGRhdGEgPSBudWxsKSB7CgkJaWYgKCBlbXB0eSgkZGF0YSkgKSB7CgkJCWlmICggJHRoaXMtPl9jaGVja19kYXRhKCkgKSB7CgkJCQkkZGF0YSA9ICYkdGhpcy0+ZmlsZV9kYXRhOwoJCQl9IGVsc2UgcmV0dXJuIGZhbHNlOwoJCX0KCgkJJHdoaXRlX3NwYWNlcyA9IHN0cl9yZXBsYWNlKCR0aGlzLT5kZWxpbWl0ZXIsICcnLCAiIFx0XHgwQlwwIik7CgoJCSRyb3dzID0gYXJyYXkoKTsKCQkkcm93ID0gYXJyYXkoKTsKCQkkcm93X2NvdW50ID0gMDsKCQkkY3VycmVudCA9ICcnOwoJCSRoZWFkID0gKCAhZW1wdHkoJHRoaXMtPmZpZWxkcykgKSA/ICR0aGlzLT5maWVsZHMgOiBhcnJheSgpIDsKCQkkY29sID0gMDsKCQkkZW5jbG9zZWQgPSBmYWxzZTsKCQkkd2FzX2VuY2xvc2VkID0gZmFsc2U7CgkJJHN0cmxlbiA9IHN0cmxlbigkZGF0YSk7CgoJCS8vIHdhbGsgdGhyb3VnaCBlYWNoIGNoYXJhY3RlcgoJCWZvciAoICRpPTA7ICRpIDwgJHN0cmxlbjsgJGkrKyApIHsKCQkJJGNoID0gJGRhdGF7JGl9OwoJCQkkbmNoID0gKCBpc3NldCgkZGF0YXskaSsxfSkgKSA/ICRkYXRheyRpKzF9IDogZmFsc2UgOwoJCQkkcGNoID0gKCBpc3NldCgkZGF0YXskaS0xfSkgKSA/ICRkYXRheyRpLTF9IDogZmFsc2UgOwoKCQkJLy8gb3Blbi9jbG9zZSBxdW90ZXMsIGFuZCBpbmxpbmUgcXVvdGVzCgkJCWlmICggJGNoID09ICR0aGlzLT5lbmNsb3N1cmUgKSB7CgkJCQlpZiAoICEkZW5jbG9zZWQgKSB7CgkJCQkJaWYgKCBsdHJpbSgkY3VycmVudCwgJHdoaXRlX3NwYWNlcykgPT0gJycgKSB7CgkJCQkJCSRlbmNsb3NlZCA9IHRydWU7CgkJCQkJCSR3YXNfZW5jbG9zZWQgPSB0cnVlOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSR0aGlzLT5lcnJvciA9IDI7CgkJCQkJCSRlcnJvcl9yb3cgPSBjb3VudCgkcm93cykgKyAxOwoJCQkJCQkkZXJyb3JfY29sID0gJGNvbCArIDE7CgkJCQkJCWlmICggIWlzc2V0KCR0aGlzLT5lcnJvcl9pbmZvWyRlcnJvcl9yb3cuJy0nLiRlcnJvcl9jb2xdKSApIHsKCQkJCQkJCSR0aGlzLT5lcnJvcl9pbmZvWyRlcnJvcl9yb3cuJy0nLiRlcnJvcl9jb2xdID0gYXJyYXkoCgkJCQkJCQkJJ3R5cGUnID0+IDIsCgkJCQkJCQkJJ2luZm8nID0+ICdTeW50YXggZXJyb3IgZm91bmQgb24gcm93ICcuJGVycm9yX3Jvdy4nLiBOb24tZW5jbG9zZWQgZmllbGRzIGNhbiBub3QgY29udGFpbiBkb3VibGUtcXVvdGVzLicsCgkJCQkJCQkJJ3JvdycgPT4gJGVycm9yX3JvdywKCQkJCQkJCQknZmllbGQnID0+ICRlcnJvcl9jb2wsCgkJCQkJCQkJJ2ZpZWxkX25hbWUnID0+ICghZW1wdHkoJGhlYWRbJGNvbF0pKSA/ICRoZWFkWyRjb2xdIDogbnVsbCwKCQkJCQkJCSk7CgkJCQkJCX0KCQkJCQkJJGN1cnJlbnQgLj0gJGNoOwoJCQkJCX0KCQkJCX0gZWxzZWlmICgkbmNoID09ICR0aGlzLT5lbmNsb3N1cmUpIHsKCQkJCQkkY3VycmVudCAuPSAkY2g7CgkJCQkJJGkrKzsKCQkJCX0gZWxzZWlmICggJG5jaCAhPSAkdGhpcy0+ZGVsaW1pdGVyICYmICRuY2ggIT0gIlxyIiAmJiAkbmNoICE9ICJcbiIgKSB7CgkJCQkJZm9yICggJHg9KCRpKzEpOyBpc3NldCgkZGF0YXskeH0pICYmIGx0cmltKCRkYXRheyR4fSwgJHdoaXRlX3NwYWNlcykgPT0gJyc7ICR4KysgKSB7fQoJCQkJCWlmICggJGRhdGF7JHh9ID09ICR0aGlzLT5kZWxpbWl0ZXIgKSB7CgkJCQkJCSRlbmNsb3NlZCA9IGZhbHNlOwoJCQkJCQkkaSA9ICR4OwoJCQkJCX0gZWxzZSB7CgkJCQkJCWlmICggJHRoaXMtPmVycm9yIDwgMSApIHsKCQkJCQkJCSR0aGlzLT5lcnJvciA9IDE7CgkJCQkJCX0KCQkJCQkJJGVycm9yX3JvdyA9IGNvdW50KCRyb3dzKSArIDE7CgkJCQkJCSRlcnJvcl9jb2wgPSAkY29sICsgMTsKCQkJCQkJaWYgKCAhaXNzZXQoJHRoaXMtPmVycm9yX2luZm9bJGVycm9yX3Jvdy4nLScuJGVycm9yX2NvbF0pICkgewoJCQkJCQkJJHRoaXMtPmVycm9yX2luZm9bJGVycm9yX3Jvdy4nLScuJGVycm9yX2NvbF0gPSBhcnJheSgKCQkJCQkJCQkndHlwZScgPT4gMSwKCQkJCQkJCQknaW5mbycgPT4KCQkJCQkJCQkJJ1N5bnRheCBlcnJvciBmb3VuZCBvbiByb3cgJy4oY291bnQoJHJvd3MpICsgMSkuJy4gJy4KCQkJCQkJCQkJJ0Egc2luZ2xlIGRvdWJsZS1xdW90ZSB3YXMgZm91bmQgd2l0aGluIGFuIGVuY2xvc2VkIHN0cmluZy4gJy4KCQkJCQkJCQkJJ0VuY2xvc2VkIGRvdWJsZS1xdW90ZXMgbXVzdCBiZSBlc2NhcGVkIHdpdGggYSBzZWNvbmQgZG91YmxlLXF1b3RlLicsCgkJCQkJCQkJJ3JvdycgPT4gY291bnQoJHJvd3MpICsgMSwKCQkJCQkJCQknZmllbGQnID0+ICRjb2wgKyAxLAoJCQkJCQkJCSdmaWVsZF9uYW1lJyA9PiAoIWVtcHR5KCRoZWFkWyRjb2xdKSkgPyAkaGVhZFskY29sXSA6IG51bGwsCgkJCQkJCQkpOwoJCQkJCQl9CgkJCQkJCSRjdXJyZW50IC49ICRjaDsKCQkJCQkJJGVuY2xvc2VkID0gZmFsc2U7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQkkZW5jbG9zZWQgPSBmYWxzZTsKCQkJCX0KCgkJCS8vIGVuZCBvZiBmaWVsZC9yb3cKCQkJfSBlbHNlaWYgKCAoJGNoID09ICR0aGlzLT5kZWxpbWl0ZXIgfHwgJGNoID09ICJcbiIgfHwgJGNoID09ICJcciIpICYmICEkZW5jbG9zZWQgKSB7CgkJCQkka2V5ID0gKCAhZW1wdHkoJGhlYWRbJGNvbF0pICkgPyAkaGVhZFskY29sXSA6ICRjb2wgOwoJCQkJJGtleSA9IHN0cnRvbG93ZXIoc3RyX3JlcGxhY2UoIiAiLCAiXyIsICRrZXkpKTsKCQkJCSRyb3dbJGtleV0gPSAoICR3YXNfZW5jbG9zZWQgKSA/ICRjdXJyZW50IDogdHJpbSgkY3VycmVudCkgOwoJCQkJJGN1cnJlbnQgPSAnJzsKCQkJCSR3YXNfZW5jbG9zZWQgPSBmYWxzZTsKCQkJCSRjb2wrKzsKCgkJCQkvLyBlbmQgb2Ygcm93CgkJCQlpZiAoICRjaCA9PSAiXG4iIHx8ICRjaCA9PSAiXHIiICkgewoJCQkJCWlmICggJHRoaXMtPl92YWxpZGF0ZV9vZmZzZXQoJHJvd19jb3VudCkgJiYgJHRoaXMtPl92YWxpZGF0ZV9yb3dfY29uZGl0aW9ucygkcm93LCAkdGhpcy0+Y29uZGl0aW9ucykgKSB7CgkJCQkJCWlmICggJHRoaXMtPmhlYWRpbmcgJiYgZW1wdHkoJGhlYWQpICkgewoJCQkJCQkJJGhlYWQgPSAkcm93OwoJCQkJCQl9IGVsc2VpZiAoIGVtcHR5KCR0aGlzLT5maWVsZHMpIHx8ICghZW1wdHkoJHRoaXMtPmZpZWxkcykgJiYgKCgkdGhpcy0+aGVhZGluZyAmJiAkcm93X2NvdW50ID4gMCkgfHwgISR0aGlzLT5oZWFkaW5nKSkgKSB7CgkJCQkJCQlpZiAoICFlbXB0eSgkdGhpcy0+c29ydF9ieSkgJiYgIWVtcHR5KCRyb3dbJHRoaXMtPnNvcnRfYnldKSApIHsKCQkJCQkJCQlpZiAoIGlzc2V0KCRyb3dzWyRyb3dbJHRoaXMtPnNvcnRfYnldXSkgKSB7CgkJCQkJCQkJCSRyb3dzWyRyb3dbJHRoaXMtPnNvcnRfYnldLidfMCddID0gJiRyb3dzWyRyb3dbJHRoaXMtPnNvcnRfYnldXTsKCQkJCQkJCQkJdW5zZXQoJHJvd3NbJHJvd1skdGhpcy0+c29ydF9ieV1dKTsKCQkJCQkJCQkJZm9yICggJHNuPTE7IGlzc2V0KCRyb3dzWyRyb3dbJHRoaXMtPnNvcnRfYnldLidfJy4kc25dKTsgJHNuKysgKSB7fQoJCQkJCQkJCQkkcm93c1skcm93WyR0aGlzLT5zb3J0X2J5XS4nXycuJHNuXSA9ICRyb3c7CgkJCQkJCQkJfSBlbHNlICRyb3dzWyRyb3dbJHRoaXMtPnNvcnRfYnldXSA9ICRyb3c7CgkJCQkJCQl9IGVsc2UgJHJvd3NbXSA9ICRyb3c7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJHJvdyA9IGFycmF5KCk7CgkJCQkJJGNvbCA9IDA7CgkJCQkJJHJvd19jb3VudCsrOwoJCQkJCWlmICggJHRoaXMtPnNvcnRfYnkgPT09IG51bGwgJiYgJHRoaXMtPmxpbWl0ICE9PSBudWxsICYmIGNvdW50KCRyb3dzKSA9PSAkdGhpcy0+bGltaXQgKSB7CgkJCQkJCSRpID0gJHN0cmxlbjsKCQkJCQl9CgkJCQkJaWYgKCAkY2ggPT0gIlxyIiAmJiAkbmNoID09ICJcbiIgKSAkaSsrOwoJCQkJfQoKCQkJLy8gYXBwZW5kIGNoYXJhY3RlciB0byBjdXJyZW50IGZpZWxkCgkJCX0gZWxzZSB7CgkJCQkkY3VycmVudCAuPSAkY2g7CgkJCX0KCQl9CgkJJHRoaXMtPnRpdGxlcyA9ICRoZWFkOwoJCWlmICggIWVtcHR5KCR0aGlzLT5zb3J0X2J5KSApIHsKCQkJJHNvcnRfdHlwZSA9IFNPUlRfUkVHVUxBUjsKCQkJaWYgKCAkdGhpcy0+c29ydF90eXBlID09ICdudW1lcmljJyApIHsKCQkJCSRzb3J0X3R5cGUgPSBTT1JUX05VTUVSSUM7CgkJCX0gZWxzZWlmICggJHRoaXMtPnNvcnRfdHlwZSA9PSAnc3RyaW5nJyApIHsKCQkJCSRzb3J0X3R5cGUgPSBTT1JUX1NUUklORzsKCQkJfQoJCQkoICR0aGlzLT5zb3J0X3JldmVyc2UgKSA/IGtyc29ydCgkcm93cywgJHNvcnRfdHlwZSkgOiBrc29ydCgkcm93cywgJHNvcnRfdHlwZSkgOwoJCQlpZiAoICR0aGlzLT5vZmZzZXQgIT09IG51bGwgfHwgJHRoaXMtPmxpbWl0ICE9PSBudWxsICkgewoJCQkJJHJvd3MgPSBhcnJheV9zbGljZSgkcm93cywgKCR0aGlzLT5vZmZzZXQgPT09IG51bGwgPyAwIDogJHRoaXMtPm9mZnNldCkgLCAkdGhpcy0+bGltaXQsIHRydWUpOwoJCQl9CgkJfQoJCWlmICggISR0aGlzLT5rZWVwX2ZpbGVfZGF0YSApIHsKCQkJJHRoaXMtPmZpbGVfZGF0YSA9IG51bGw7CgkJfQoJCXJldHVybiAkcm93czsKCX0KCgkvKioKCSAqIENyZWF0ZSBDU1YgZGF0YSBmcm9tIGFycmF5CgkgKiBAcGFyYW0gICBkYXRhICAgICAgICAyRCBhcnJheSB3aXRoIGRhdGEKCSAqIEBwYXJhbSAgIGZpZWxkcyAgICAgIGZpZWxkIG5hbWVzCgkgKiBAcGFyYW0gICBhcHBlbmQgICAgICBpZiB0cnVlLCBmaWVsZCBuYW1lcyB3aWxsIG5vdCBiZSBvdXRwdXQKCSAqIEBwYXJhbSAgIGlzX3BocCAgICAgIGlmIGEgcGhwIGRpZSgpIGNhbGwgc2hvdWxkIGJlIHB1dCBvbiB0aGUgZmlyc3QKCSAqICAgICAgICAgICAgICAgICAgICAgIGxpbmUgb2YgdGhlIGZpbGUsIHRoaXMgaXMgbGF0ZXIgaWdub3JlZCB3aGVuIHJlYWQuCgkgKiBAcGFyYW0gICBkZWxpbWl0ZXIgICBmaWVsZCBkZWxpbWl0ZXIgdG8gdXNlCgkgKiBAcmV0dXJuICBDU1YgZGF0YSAodGV4dCBzdHJpbmcpCgkgKi8KCWZ1bmN0aW9uIHVucGFyc2UgKCAkZGF0YSA9IGFycmF5KCksICRmaWVsZHMgPSBhcnJheSgpLCAkYXBwZW5kID0gZmFsc2UgLCAkaXNfcGhwID0gZmFsc2UsICRkZWxpbWl0ZXIgPSBudWxsKSB7CgkJaWYgKCAhaXNfYXJyYXkoJGRhdGEpIHx8IGVtcHR5KCRkYXRhKSApICRkYXRhID0gJiR0aGlzLT5kYXRhOwoJCWlmICggIWlzX2FycmF5KCRmaWVsZHMpIHx8IGVtcHR5KCRmaWVsZHMpICkgJGZpZWxkcyA9ICYkdGhpcy0+dGl0bGVzOwoJCWlmICggJGRlbGltaXRlciA9PT0gbnVsbCApICRkZWxpbWl0ZXIgPSAkdGhpcy0+ZGVsaW1pdGVyOwoKCQkkc3RyaW5nID0gKCAkaXNfcGhwICkgPyAiPD9waHAgaGVhZGVyKCdTdGF0dXM6IDQwMycpOyBkaWUoJyAnKTsgPz4iLiR0aGlzLT5saW5lZmVlZCA6ICcnIDsKCQkkZW50cnkgPSBhcnJheSgpOwoKCQkvLyBjcmVhdGUgaGVhZGluZwoJCWlmICggJHRoaXMtPmhlYWRpbmcgJiYgISRhcHBlbmQgJiYgIWVtcHR5KCRmaWVsZHMpICkgewoJCQlmb3JlYWNoKCAkZmllbGRzIGFzICRrZXkgPT4gJHZhbHVlICkgewoJCQkJJGVudHJ5W10gPSAkdGhpcy0+X2VuY2xvc2VfdmFsdWUoJHZhbHVlKTsKCQkJfQoJCQkkc3RyaW5nIC49IGltcGxvZGUoJGRlbGltaXRlciwgJGVudHJ5KS4kdGhpcy0+bGluZWZlZWQ7CgkJCSRlbnRyeSA9IGFycmF5KCk7CgkJfQoKCQkvLyBjcmVhdGUgZGF0YQoJCWZvcmVhY2goICRkYXRhIGFzICRrZXkgPT4gJHJvdyApIHsKCQkJZm9yZWFjaCggJHJvdyBhcyAkZmllbGQgPT4gJHZhbHVlICkgewoJCQkJJGVudHJ5W10gPSAkdGhpcy0+X2VuY2xvc2VfdmFsdWUoJHZhbHVlKTsKCQkJfQoJCQkkc3RyaW5nIC49IGltcGxvZGUoJGRlbGltaXRlciwgJGVudHJ5KS4kdGhpcy0+bGluZWZlZWQ7CgkJCSRlbnRyeSA9IGFycmF5KCk7CgkJfQoKCQlyZXR1cm4gJHN0cmluZzsKCX0KCgkvKioKCSAqIExvYWQgbG9jYWwgZmlsZSBvciBzdHJpbmcKCSAqIEBwYXJhbSAgIGlucHV0ICAgbG9jYWwgQ1NWIGZpbGUKCSAqIEByZXR1cm4gIHRydWUgb3IgZmFsc2UKCSAqLwoJZnVuY3Rpb24gbG9hZF9kYXRhICgkaW5wdXQgPSBudWxsKSB7CgkJJGRhdGEgPSBudWxsOwoJCSRmaWxlID0gbnVsbDsKCQlpZiAoICRpbnB1dCA9PT0gbnVsbCApIHsKCQkJJGZpbGUgPSAkdGhpcy0+ZmlsZTsKCQl9IGVsc2VpZiAoIGZpbGVfZXhpc3RzKCRpbnB1dCkgKSB7CgkJCSRmaWxlID0gJGlucHV0OwoJCX0gZWxzZSB7CgkJCSRkYXRhID0gJGlucHV0OwoJCX0KCQlpZiAoICFlbXB0eSgkZGF0YSkgfHwgJGRhdGEgPSAkdGhpcy0+X3JmaWxlKCRmaWxlKSApIHsKCQkJaWYgKCAkdGhpcy0+ZmlsZSAhPSAkZmlsZSApICR0aGlzLT5maWxlID0gJGZpbGU7CgkJCWlmICggcHJlZ19tYXRjaCgnL1wucGhwJC9pJywgJGZpbGUpICYmIHByZWdfbWF0Y2goJy88XD8uKj9cPz4oLiopL2ltcycsICRkYXRhLCAkc3RyaXApICkgewoJCQkJJGRhdGEgPSBsdHJpbSgkc3RyaXBbMV0pOwoJCQl9CgkJCWlmICggJHRoaXMtPmNvbnZlcnRfZW5jb2RpbmcgKSAkZGF0YSA9IGljb252KCR0aGlzLT5pbnB1dF9lbmNvZGluZywgJHRoaXMtPm91dHB1dF9lbmNvZGluZywgJGRhdGEpOwoJCQlpZiAoIHN1YnN0cigkZGF0YSwgLTEpICE9ICJcbiIgKSAkZGF0YSAuPSAiXG4iOwoJCQkkdGhpcy0+ZmlsZV9kYXRhID0gJiRkYXRhOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkvLyAtLS0tLSBbIEludGVybmFsIEZ1bmN0aW9ucyBdIC0tLS0tLS0tLS0tLS0tLS0tCgkvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoJLyoqCgkgKiBWYWxpZGF0ZSBhIHJvdyBhZ2FpbnN0IHNwZWNpZmllZCBjb25kaXRpb25zCgkgKiBAcGFyYW0gICByb3cgICAgICAgICAgYXJyYXkgd2l0aCB2YWx1ZXMgZnJvbSBhIHJvdwoJICogQHBhcmFtICAgY29uZGl0aW9ucyAgIHNwZWNpZmllZCBjb25kaXRpb25zIHRoYXQgdGhlIHJvdyBtdXN0IG1hdGNoCgkgKiBAcmV0dXJuICB0cnVlIG9mIGZhbHNlCgkgKi8KCWZ1bmN0aW9uIF92YWxpZGF0ZV9yb3dfY29uZGl0aW9ucyAoJHJvdyA9IGFycmF5KCksICRjb25kaXRpb25zID0gbnVsbCkgewoJCWlmICggIWVtcHR5KCRyb3cpICkgewoJCQlpZiAoICFlbXB0eSgkY29uZGl0aW9ucykgKSB7CgkJCQkkY29uZGl0aW9ucyA9IChzdHJwb3MoJGNvbmRpdGlvbnMsICcgT1IgJykgIT09IGZhbHNlKSA/IGV4cGxvZGUoJyBPUiAnLCAkY29uZGl0aW9ucykgOiBhcnJheSgkY29uZGl0aW9ucykgOwoJCQkJJG9yID0gJyc7CgkJCQlmb3JlYWNoKCAkY29uZGl0aW9ucyBhcyAka2V5ID0+ICR2YWx1ZSApIHsKCQkJCQlpZiAoIHN0cnBvcygkdmFsdWUsICcgQU5EICcpICE9PSBmYWxzZSApIHsKCQkJCQkJJHZhbHVlID0gZXhwbG9kZSgnIEFORCAnLCAkdmFsdWUpOwoJCQkJCQkkYW5kID0gJyc7CgkJCQkJCWZvcmVhY2goICR2YWx1ZSBhcyAkayA9PiAkdiApIHsKCQkJCQkJCSRhbmQgLj0gJHRoaXMtPl92YWxpZGF0ZV9yb3dfY29uZGl0aW9uKCRyb3csICR2KTsKCQkJCQkJfQoJCQkJCQkkb3IgLj0gKHN0cnBvcygkYW5kLCAnMCcpICE9PSBmYWxzZSkgPyAnMCcgOiAnMScgOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRvciAuPSAkdGhpcy0+X3ZhbGlkYXRlX3Jvd19jb25kaXRpb24oJHJvdywgJHZhbHVlKTsKCQkJCQl9CgkJCQl9CgkJCQlyZXR1cm4gKHN0cnBvcygkb3IsICcxJykgIT09IGZhbHNlKSA/IHRydWUgOiBmYWxzZSA7CgkJCX0KCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFZhbGlkYXRlIGEgcm93IGFnYWluc3QgYSBzaW5nbGUgY29uZGl0aW9uCgkgKiBAcGFyYW0gICByb3cgICAgICAgICAgYXJyYXkgd2l0aCB2YWx1ZXMgZnJvbSBhIHJvdwoJICogQHBhcmFtICAgY29uZGl0aW9uICAgc3BlY2lmaWVkIGNvbmRpdGlvbiB0aGF0IHRoZSByb3cgbXVzdCBtYXRjaAoJICogQHJldHVybiAgdHJ1ZSBvZiBmYWxzZQoJICovCglmdW5jdGlvbiBfdmFsaWRhdGVfcm93X2NvbmRpdGlvbiAoJHJvdywgJGNvbmRpdGlvbikgewoJCSRvcGVyYXRvcnMgPSBhcnJheSgKCQkJJz0nLCAnZXF1YWxzJywgJ2lzJywKCQkJJyE9JywgJ2lzIG5vdCcsCgkJCSc8JywgJ2lzIGxlc3MgdGhhbicsCgkJCSc+JywgJ2lzIGdyZWF0ZXIgdGhhbicsCgkJCSc8PScsICdpcyBsZXNzIHRoYW4gb3IgZXF1YWxzJywKCQkJJz49JywgJ2lzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbHMnLAoJCQknY29udGFpbnMnLAoJCQknZG9lcyBub3QgY29udGFpbicsCgkJKTsKCQkkb3BlcmF0b3JzX3JlZ2V4ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkb3BlcmF0b3JzIGFzICR2YWx1ZSApIHsKCQkJJG9wZXJhdG9yc19yZWdleFtdID0gcHJlZ19xdW90ZSgkdmFsdWUsICcvJyk7CgkJfQoJCSRvcGVyYXRvcnNfcmVnZXggPSBpbXBsb2RlKCd8JywgJG9wZXJhdG9yc19yZWdleCk7CgkJaWYgKCBwcmVnX21hdGNoKCcvXiguKykgKCcuJG9wZXJhdG9yc19yZWdleC4nKSAoLispJC9pJywgdHJpbSgkY29uZGl0aW9uKSwgJGNhcHR1cmUpICkgewoJCQkkZmllbGQgPSAkY2FwdHVyZVsxXTsKCQkJJG9wID0gJGNhcHR1cmVbMl07CgkJCSR2YWx1ZSA9ICRjYXB0dXJlWzNdOwoJCQlpZiAoIHByZWdfbWF0Y2goJy9eKFtcJ1wiXXsxfSkoLiopKFtcJ1wiXXsxfSkkL2knLCAkdmFsdWUsICRjYXB0dXJlKSApIHsKCQkJCWlmICggJGNhcHR1cmVbMV0gPT0gJGNhcHR1cmVbM10gKSB7CgkJCQkJJHZhbHVlID0gJGNhcHR1cmVbMl07CgkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIlxcbiIsICJcbiIsICR2YWx1ZSk7CgkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIlxcciIsICJcciIsICR2YWx1ZSk7CgkJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoIlxcdCIsICJcdCIsICR2YWx1ZSk7CgkJCQkJJHZhbHVlID0gc3RyaXBzbGFzaGVzKCR2YWx1ZSk7CgkJCQl9CgkJCX0KCQkJaWYgKCBhcnJheV9rZXlfZXhpc3RzKCRmaWVsZCwgJHJvdykgKSB7CgkJCQlpZiAoICgkb3AgPT0gJz0nIHx8ICRvcCA9PSAnZXF1YWxzJyB8fCAkb3AgPT0gJ2lzJykgJiYgJHJvd1skZmllbGRdID09ICR2YWx1ZSApIHsKCQkJCQlyZXR1cm4gJzEnOwoJCQkJfSBlbHNlaWYgKCAoJG9wID09ICchPScgfHwgJG9wID09ICdpcyBub3QnKSAmJiAkcm93WyRmaWVsZF0gIT0gJHZhbHVlICkgewoJCQkJCXJldHVybiAnMSc7CgkJCQl9IGVsc2VpZiAoICgkb3AgPT0gJzwnIHx8ICRvcCA9PSAnaXMgbGVzcyB0aGFuJyApICYmICRyb3dbJGZpZWxkXSA8ICR2YWx1ZSApIHsKCQkJCQlyZXR1cm4gJzEnOwoJCQkJfSBlbHNlaWYgKCAoJG9wID09ICc+JyB8fCAkb3AgPT0gJ2lzIGdyZWF0ZXIgdGhhbicpICYmICRyb3dbJGZpZWxkXSA+ICR2YWx1ZSApIHsKCQkJCQlyZXR1cm4gJzEnOwoJCQkJfSBlbHNlaWYgKCAoJG9wID09ICc8PScgfHwgJG9wID09ICdpcyBsZXNzIHRoYW4gb3IgZXF1YWxzJyApICYmICRyb3dbJGZpZWxkXSA8PSAkdmFsdWUgKSB7CgkJCQkJcmV0dXJuICcxJzsKCQkJCX0gZWxzZWlmICggKCRvcCA9PSAnPj0nIHx8ICRvcCA9PSAnaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFscycpICYmICRyb3dbJGZpZWxkXSA+PSAkdmFsdWUgKSB7CgkJCQkJcmV0dXJuICcxJzsKCQkJCX0gZWxzZWlmICggJG9wID09ICdjb250YWlucycgJiYgcHJlZ19tYXRjaCgnLycucHJlZ19xdW90ZSgkdmFsdWUsICcvJykuJy9pJywgJHJvd1skZmllbGRdKSApIHsKCQkJCQlyZXR1cm4gJzEnOwoJCQkJfSBlbHNlaWYgKCAkb3AgPT0gJ2RvZXMgbm90IGNvbnRhaW4nICYmICFwcmVnX21hdGNoKCcvJy5wcmVnX3F1b3RlKCR2YWx1ZSwgJy8nKS4nL2knLCAkcm93WyRmaWVsZF0pICkgewoJCQkJCXJldHVybiAnMSc7CgkJCQl9IGVsc2UgewoJCQkJCXJldHVybiAnMCc7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICcxJzsKCX0KCgkvKioKCSAqIFZhbGlkYXRlcyBpZiB0aGUgcm93IGlzIHdpdGhpbiB0aGUgb2Zmc2V0IG9yIG5vdCBpZiBzb3J0aW5nIGlzIGRpc2FibGVkCgkgKiBAcGFyYW0gICBjdXJyZW50X3JvdyAgIHRoZSBjdXJyZW50IHJvdyBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkCgkgKiBAcmV0dXJuICB0cnVlIG9mIGZhbHNlCgkgKi8KCWZ1bmN0aW9uIF92YWxpZGF0ZV9vZmZzZXQgKCRjdXJyZW50X3JvdykgewoJCWlmICggJHRoaXMtPnNvcnRfYnkgPT09IG51bGwgJiYgJHRoaXMtPm9mZnNldCAhPT0gbnVsbCAmJiAkY3VycmVudF9yb3cgPCAkdGhpcy0+b2Zmc2V0ICkgcmV0dXJuIGZhbHNlOwoJCXJldHVybiB0cnVlOwoJfQoKCS8qKgoJICogRW5jbG9zZSB2YWx1ZXMgaWYgbmVlZGVkCgkgKiAgLSBvbmx5IHVzZWQgYnkgdW5wYXJzZSgpCgkgKiBAcGFyYW0gICB2YWx1ZSAgIHN0cmluZyB0byBwcm9jZXNzCgkgKiBAcmV0dXJuICBQcm9jZXNzZWQgdmFsdWUKCSAqLwoJZnVuY3Rpb24gX2VuY2xvc2VfdmFsdWUgKCR2YWx1ZSA9IG51bGwpIHsKCQlpZiAoICR2YWx1ZSAhPT0gbnVsbCAmJiAkdmFsdWUgIT0gJycgKSB7CgkJCSRkZWxpbWl0ZXIgPSBwcmVnX3F1b3RlKCR0aGlzLT5kZWxpbWl0ZXIsICcvJyk7CgkJCSRlbmNsb3N1cmUgPSBwcmVnX3F1b3RlKCR0aGlzLT5lbmNsb3N1cmUsICcvJyk7CgkJCWlmICggcHJlZ19tYXRjaCgiLyIuJGRlbGltaXRlci4ifCIuJGVuY2xvc3VyZS4ifFxufFxyL2kiLCAkdmFsdWUpIHx8ICgkdmFsdWV7MH0gPT0gJyAnIHx8IHN1YnN0cigkdmFsdWUsIC0xKSA9PSAnICcpICkgewoJCQkJJHZhbHVlID0gc3RyX3JlcGxhY2UoJHRoaXMtPmVuY2xvc3VyZSwgJHRoaXMtPmVuY2xvc3VyZS4kdGhpcy0+ZW5jbG9zdXJlLCAkdmFsdWUpOwoJCQkJJHZhbHVlID0gJHRoaXMtPmVuY2xvc3VyZS4kdmFsdWUuJHRoaXMtPmVuY2xvc3VyZTsKCQkJfQoJCX0KCQlyZXR1cm4gJHZhbHVlOwoJfQoKCS8qKgoJICogQ2hlY2sgZmlsZSBkYXRhCgkgKiBAcGFyYW0gICBmaWxlICAgbG9jYWwgZmlsZW5hbWUKCSAqIEByZXR1cm4gIHRydWUgb3IgZmFsc2UKCSAqLwoJZnVuY3Rpb24gX2NoZWNrX2RhdGEgKCRmaWxlID0gbnVsbCkgewoJCWlmICggZW1wdHkoJHRoaXMtPmZpbGVfZGF0YSkgKSB7CgkJCWlmICggJGZpbGUgPT09IG51bGwgKSAkZmlsZSA9ICR0aGlzLT5maWxlOwoJCQlyZXR1cm4gJHRoaXMtPmxvYWRfZGF0YSgkZmlsZSk7CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKCgkvKioKCSAqIENoZWNrIGlmIHBhc3NlZCBpbmZvIG1pZ2h0IGJlIGRlbGltaXRlcgoJICogIC0gb25seSB1c2VkIGJ5IGZpbmRfZGVsaW1pdGVyKCkKCSAqIEByZXR1cm4gIHNwZWNpYWwgc3RyaW5nIHVzZWQgZm9yIGRlbGltaXRlciBzZWxlY3Rpb24sIG9yIGZhbHNlCgkgKi8KCWZ1bmN0aW9uIF9jaGVja19jb3VudCAoJGNoYXIsICRhcnJheSwgJGRlcHRoLCAkcHJlZmVycmVkKSB7CgkJaWYgKCAkZGVwdGggPT0gY291bnQoJGFycmF5KSApIHsKCQkJJGZpcnN0ID0gbnVsbDsKCQkJJGVxdWFsID0gbnVsbDsKCQkJJGFsbW9zdCA9IGZhbHNlOwoJCQlmb3JlYWNoKCAkYXJyYXkgYXMgJGtleSA9PiAkdmFsdWUgKSB7CgkJCQlpZiAoICRmaXJzdCA9PSBudWxsICkgewoJCQkJCSRmaXJzdCA9ICR2YWx1ZTsKCQkJCX0gZWxzZWlmICggJHZhbHVlID09ICRmaXJzdCAmJiAkZXF1YWwgIT09IGZhbHNlKSB7CgkJCQkJJGVxdWFsID0gdHJ1ZTsKCQkJCX0gZWxzZWlmICggJHZhbHVlID09ICRmaXJzdCsxICYmICRlcXVhbCAhPT0gZmFsc2UgKSB7CgkJCQkJJGVxdWFsID0gdHJ1ZTsKCQkJCQkkYWxtb3N0ID0gdHJ1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJJGVxdWFsID0gZmFsc2U7CgkJCQl9CgkJCX0KCQkJaWYgKCAkZXF1YWwgKSB7CgkJCQkkbWF0Y2ggPSAoICRhbG1vc3QgKSA/IDIgOiAxIDsKCQkJCSRwcmVmID0gc3RycG9zKCRwcmVmZXJyZWQsICRjaGFyKTsKCQkJCSRwcmVmID0gKCAkcHJlZiAhPT0gZmFsc2UgKSA/IHN0cl9wYWQoJHByZWYsIDMsICcwJywgU1RSX1BBRF9MRUZUKSA6ICc5OTknIDsKCQkJCXJldHVybiAkcHJlZi4kbWF0Y2guJy4nLig5OTk5OSAtIHN0cl9wYWQoJGZpcnN0LCA1LCAnMCcsIFNUUl9QQURfTEVGVCkpOwoJCQl9IGVsc2UgcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIFJlYWQgbG9jYWwgZmlsZQoJICogQHBhcmFtICAgZmlsZSAgIGxvY2FsIGZpbGVuYW1lCgkgKiBAcmV0dXJuICBEYXRhIGZyb20gZmlsZSwgb3IgZmFsc2Ugb24gZmFpbHVyZQoJICovCglmdW5jdGlvbiBfcmZpbGUgKCRmaWxlID0gbnVsbCkgewoJCWlmICggaXNfcmVhZGFibGUoJGZpbGUpICkgewoJCQlpZiAoICEoJGZoID0gZm9wZW4oJGZpbGUsICdyJykpICkgcmV0dXJuIGZhbHNlOwoJCQkkZGF0YSA9IGZyZWFkKCRmaCwgZmlsZXNpemUoJGZpbGUpKTsKCQkJZmNsb3NlKCRmaCk7CgkJCXJldHVybiAkZGF0YTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogV3JpdGUgdG8gbG9jYWwgZmlsZQoJICogQHBhcmFtICAgZmlsZSAgICAgbG9jYWwgZmlsZW5hbWUKCSAqIEBwYXJhbSAgIHN0cmluZyAgIGRhdGEgdG8gd3JpdGUgdG8gZmlsZQoJICogQHBhcmFtICAgbW9kZSAgICAgZm9wZW4oKSBtb2RlCgkgKiBAcGFyYW0gICBsb2NrICAgICBmbG9jaygpIG1vZGUKCSAqIEByZXR1cm4gIHRydWUgb3IgZmFsc2UKCSAqLwoJZnVuY3Rpb24gX3dmaWxlICgkZmlsZSwgJHN0cmluZyA9ICcnLCAkbW9kZSA9ICd3YicsICRsb2NrID0gMikgewoJCWlmICggJGZwID0gZm9wZW4oJGZpbGUsICRtb2RlKSApIHsKCQkJZmxvY2soJGZwLCAkbG9jayk7CgkJCSRyZSA9IGZ3cml0ZSgkZnAsICRzdHJpbmcpOwoJCQkkcmUyID0gZmNsb3NlKCRmcCk7CgkJCWlmICggJHJlICE9IGZhbHNlICYmICRyZTIgIT0gZmFsc2UgKSByZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbLogUpdater.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KY2xhc3MgdGJMb2dVcGRhdGVyIHsNCg0KCXB1YmxpYyBmaW5hbCBzdGF0aWMgZnVuY3Rpb24gZ2V0TG9nTGluZXMoJGxvZ0ZpbGUsICRyYW5kb21rZXksICRsaW5lcyA9IDIwKSB7DQoJCQ0KCQlpZiAoIWlzX2ZpbGUoJGxvZ0ZpbGUpKSByZXR1cm4gJ0xvZ0ZpbGUgbm90IEZvdW5kJzsNCgkJDQoJCWlmIChlbXB0eSgkX1NFU1NJT04pKSB7DQoJCQkkc2Vzc2lvbl9uYW1lID0gInRiTG9nVXBkYXRlciI7DQoJCQlzZXNzaW9uX25hbWUoJHNlc3Npb25fbmFtZSk7DQoJCX0NCgkJDQoJCWlmICghaXNzZXQoJF9TRVNTSU9OWyd0YkxvZ1VwZGF0ZXJfJy4kcmFuZG9ta2V5LidfVHMnXSkgb3IgJF9TRVNTSU9OWyd0YkxvZ1VwZGF0ZXJfJy4kcmFuZG9ta2V5LidfVHMnXSA9PSAnJyApIHsNCgkJCXJldHVybiBzZWxmOjpyZWFkTGFzdExvZ0xpbmVzKCRsb2dGaWxlLCAkcmFuZG9ta2V5LCAkbGluZXMpLiJcbiI7DQoJCX0NCgkJZWxzZSB7DQoJCQlyZXR1cm4gc2VsZjo6dXBkYXRlTG9nTGluZXMoJGxvZ0ZpbGUsICRyYW5kb21rZXkpOwkNCgkJfQ0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBha3R1YWxpc2llcnQgbmFjaCBnZXNwZWljaGVydGVtIExvZ1RpbWVTdGFtcCBkYXMgdGFpbCBuYWNoIMOEbmRlcnVuZ2VuDQoJICogQHBhcmFtIHN0cmluZyAkbG9nRmlsZSAtIFBmYWQgenVtIExvZ2ZpbGUNCgkgKiBAcGFyYW0gc3RyaW5nICRrZXkgLSByYW5kb20ga2V5IHVtIHZlcnNjaGllZGVuZSBTZXNzaW9ucyB0cmVubmVuIHp1IGvDtm5uZW4NCgkgKi8NCgkNCglwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHVwZGF0ZUxvZ0xpbmVzKCRsb2dGaWxlLCRrZXkpDQoJew0KCQkkbG9nZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRsb2dGaWxlKTsNCgkJJHVzZXJMYXN0VHMgPSBpc3NldCgkX1NFU1NJT05bJ3RiTG9nVXBkYXRlcl8nLiRrZXkuJ19UcyddKSA/ICRfU0VTU0lPTlsndGJMb2dVcGRhdGVyXycuJGtleS4nX1RzJ10gOiAnJzsNCgkJaWYgKCEkdXNlckxhc3RUcykgeyByZXR1cm47CX0NCgkNCgkJJHRzcyA9IHNlbGY6OmdldFRpbWVzdGFtcHMoJGxvZ2RhdGEpOw0KCQkkbGFzdFRzID0gZW5kKCR0c3MpOw0KCQ0KCQlpZigkbGFzdFRzPT1udWxsKSB7DQoJCQlyZXR1cm4gJyc7DQoJCX0NCgkJZWxzZSB7DQoJCQkkX1NFU1NJT05bJ3RiTG9nVXBkYXRlcl8nLiRrZXkuJ19UcyddID0gJGxhc3RUczsNCgkJCXJldHVybiBzdWJzdHIoJGxvZ2RhdGEsIHN0cmlwb3MoJGxvZ2RhdGEsICRsYXN0VHMpKTsNCgkJfQ0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBFbnRlciBkZXNjcmlwdGlvbiBoZXJlIC4uLg0KCSAqIEBiYXNlIGh0dHA6Ly93d3cucGhwZ2FuZ3N0YS5kZS90YWcvcGhwLXRhaWwNCgkgKiBAcGFyYW0gc3RyaW5nICRsb2dGaWxlDQoJICogQHBhcmFtIGludCAkbGluZXMNCgkgKi8NCg0KCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgZnVuY3Rpb24gcmVhZExhc3RMb2dMaW5lcygkbG9nRmlsZSwgJGtleSwgJGxpbmVzID0gMjApIHsNCgkgICAgJGhhbmRsZSA9IGZvcGVuKCRsb2dGaWxlLCAiciIpOw0KCSAgICBpZiAoISRoYW5kbGUpIHsNCgkgICAgICAgIHJldHVybiBhcnJheSgpOw0KCSAgICB9DQoJICAgICRsaW5lY291bnRlciA9ICRsaW5lczsNCgkgICAgJHBvcyA9IC0yOw0KCSAgICAkYmVnaW5uaW5nID0gZmFsc2U7DQoJICAgICR0ZXh0ID0gYXJyYXkoKTsNCgkgICAgd2hpbGUgKCRsaW5lY291bnRlciA+IDApIHsNCgkgICAgICAgICR0ID0gIiAiOw0KCSAgICAgICAgd2hpbGUgKCR0ICE9ICJcbiIpIHsNCgkgICAgICAgICAgICBpZihmc2VlaygkaGFuZGxlLCAkcG9zLCBTRUVLX0VORCkgPT0gLTEpIHsNCgkgICAgICAgICAgICAgICAgJGJlZ2lubmluZyA9IHRydWU7DQoJICAgICAgICAgICAgICAgIGJyZWFrOw0KCSAgICAgICAgICAgIH0NCgkgICAgICAgICAgICAkdCA9IGZnZXRjKCRoYW5kbGUpOw0KCSAgICAgICAgICAgICRwb3MtLTsNCgkgICAgICAgIH0NCgkgICAgICAgICRsaW5lY291bnRlci0tOw0KCSAgICAgICAgaWYgKCRiZWdpbm5pbmcpIHsNCgkgICAgICAgICAgICByZXdpbmQoJGhhbmRsZSk7DQoJICAgICAgICB9DQoJICAgICAgICAkdGV4dFskbGluZXMtJGxpbmVjb3VudGVyLTFdID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyIiwgIlxuIiwgIlx0IiksICcnLCBmZ2V0cygkaGFuZGxlKSk7DQoJICAgICAgICBpZiAoJGJlZ2lubmluZykgYnJlYWs7DQoJICAgIH0NCgkgICAgZmNsb3NlKCRoYW5kbGUpOw0KCSAgICANCgkgICAgJGxpbmVzID0gYXJyYXlfcmV2ZXJzZSgkdGV4dCk7DQoJICAgICRsb2cgPSBpbXBsb2RlKCJcbiIsJGxpbmVzKTsNCgkgICAgDQoJICAgICR0cyA9IHNlbGY6OmdldFRpbWVzdGFtcHMoJGxvZyk7DQoJICAgICRsYXN0VHMgPSBlbmQoJHRzKTsNCgkgICAgDQoJICAgIGlmICgkbGFzdFRzID09IG51bGwpIHt9DQoJICAgIGVsc2Ugew0KCSAgICAJJF9TRVNTSU9OWyd0YkxvZ1VwZGF0ZXJfJy4ka2V5LidfVHMnXSA9ICRsYXN0VHM7DQoJICAgIH0NCgkgICAgDQoJICAgIHJldHVybiAkbG9nOw0KCX0NCgkgIA0KCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFRpbWVzdGFtcHMoJHJhd19kYXRhKQ0KCXsNCgkJJHJvd3MgPSBwcmVnX21hdGNoX2FsbCgnLyhbMC05XSl7NH1cLShbMC05XSl7Mn1cLShbMC05XSl7Mn1ccyhbMC05XSl7Mn06KFswLTldKXsyfTooWzAtOV0pezJ9LycsICRyYXdfZGF0YSwgJG1hdGNoZXMpOw0KCQlyZXR1cm4gJG1hdGNoZXNbMF07DQoJfQ0KCQ0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbModuleOps.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KZmluYWwgY2xhc3MgdGJNb2R1bGVPcHMgew0KCQ0KCXByaXZhdGUgJG1vZHVsZTsNCglwcml2YXRlICRwcmVmczsNCglwcml2YXRlICRldmVudHM7DQoJcHJpdmF0ZSAkZGI7DQoJcHJpdmF0ZSAkY29uZmlnOw0KCXByaXZhdGUgJHhtbF9leGNsdWRlX2ZpbGVzID0gYXJyYXkoJ15cLnN2bicgLCAnXkNWUyQnICwgJ15cIy4qXCMkJyAsICd+JCcsICdcLmJhayQnICk7DQoJcHJpdmF0ZSAkeG1sZHRkID0gJw0KPCFET0NUWVBFIG1vZHVsZSBbDQogIDwhRUxFTUVOVCBtb2R1bGUgKGR0ZHZlcnNpb24sbmFtZSx2ZXJzaW9uLHByZWZlcmVuY2VzKixldmVudHMqLHRlbXBsYXRlcyosdGFibGVzKik+DQogIDwhRUxFTUVOVCBkdGR2ZXJzaW9uICgjUENEQVRBKT4NCiAgPCFFTEVNRU5UIG5hbWUgKCNQQ0RBVEEpPg0KICA8IUVMRU1FTlQgdmVyc2lvbiAoI1BDREFUQSk+DQogIDwhRUxFTUVOVCBwcmVmZXJlbmNlcyAoI1BDREFUQSk+DQogIDwhRUxFTUVOVCBldmVudHMgKCNQQ0RBVEEpPg0KICA8IUVMRU1FTlQgdGVtcGxhdGVzICgjUENEQVRBKT4NCiAgPCFFTEVNRU5UIHRhYmxlcyAoI1BDREFUQSk+DQpdPic7DQoJDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRtb2R1bGVuYW1lKSANCgl7DQoJCSRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZW5hbWUpOw0KCQlpZiAoIWlzX29iamVjdCgkbW9kdWxlKSkNCgkJCXJldHVybiBmYWxzZTsNCgkJCQ0KCQkkdGhpcy0+ZGIgPSBjbXNtcygpLT5HZXREYigpOw0KCQkkdGhpcy0+Y29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CQ0KDQoJCSR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOyAJDQoJfQ0KCQ0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBnZXRDdXJyZW50TW9kdWxlKCkNCgl7DQoJCXJldHVybiAkdGhpcy0+bW9kdWxlOw0KCX0NCgkNCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gZ2V0TW9kdWxlUHJlZnMoKQ0KCXsNCgkJaWYgKCFpc19vYmplY3QoJHRoaXMtPm1vZHVsZSkpIHJldHVybiBmYWxzZTsNCgkJDQoJCXJldHVybiAkdGhpcy0+Z2V0UHJlZnMoKTsNCgl9DQoJDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIGdldE1vZHVsZUV2ZW50cygpDQoJew0KCQlpZiAoIWlzX29iamVjdCgkdGhpcy0+bW9kdWxlKSkgcmV0dXJuIGZhbHNlOw0KCQkNCgkJcmV0dXJuICR0aGlzLT5nZXRFdmVudHMoKTsNCgl9DQoJDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIGdldE1vZHVsZVRlbXBsYXRlcygpDQoJew0KCQlpZiAoIWlzX29iamVjdCgkdGhpcy0+bW9kdWxlKSkgcmV0dXJuIGZhbHNlOw0KCQkNCgkJcmV0dXJuICR0aGlzLT5nZXRUZW1wbGF0ZXMoKTsNCgl9DQoJDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIGdldE1vZHVsZVRhYmxlcygpDQoJew0KCQlpZiAoIWlzX29iamVjdCgkdGhpcy0+bW9kdWxlKSkgcmV0dXJuIGZhbHNlOw0KCQkNCgkJcmV0dXJuICR0aGlzLT5nZXRUYWJsZXMoKTsNCgl9DQoJDQoJDQoJcHJpdmF0ZSBmaW5hbCBmdW5jdGlvbiBnZXRQcmVmcygpDQoJew0KCQkkbW9kID0gJHRoaXMtPm1vZHVsZTsNCgkJDQoJCSRmaWx0ZXIgPSAkdGhpcy0+bW9kdWxlLT5HZXROYW1lKCkgLiAiX21hcGlfcHJlZl8iOw0KDQoJCSRxdWVyeSA9ICdTRUxFQ1Qgc2l0ZXByZWZfbmFtZSxzaXRlcHJlZl92YWx1ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidzaXRlcHJlZnMgd2hlcmUgc2l0ZXByZWZfbmFtZSBsaWtlIFwnJy4kZmlsdGVyLiclXCcnOw0KCQkkZGJyID0gJHRoaXMtPmRiLT5HZXRBcnJheSgkcXVlcnkpOw0KCQlpZiggaXNfYXJyYXkoJGRicikgKQ0KCQl7DQoJCQkkcHJlZnMgPSBhcnJheSgpOw0KCQkJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGRicik7ICRpKysgKQ0KCQkJew0KCQkJCSRyb3cgPSAkZGJyWyRpXTsNCgkJCQkkcHJlZnNbc3RyX3JlcGxhY2UoJGZpbHRlciwgIiIsICRyb3dbJ3NpdGVwcmVmX25hbWUnXSldID0gJHJvd1snc2l0ZXByZWZfdmFsdWUnXTsNCgkJCX0NCgkJfQ0KCQkNCgkJcmV0dXJuICRwcmVmczsNCgl9DQoJDQoJcHJpdmF0ZSBmaW5hbCBmdW5jdGlvbiBnZXRFdmVudHMoKQ0KCXsNCgkJJHEgPSAiU0VMRUNUIG9yaWdpbmF0b3IsIGV2ZW50X25hbWUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4iZXZlbnRfaGFuZGxlcnMgaW5uZXIgam9pbiAiLmNtc19kYl9wcmVmaXgoKS4iZXZlbnRzIG9uICIuY21zX2RiX3ByZWZpeCgpLiJldmVudHMuZXZlbnRfaWQgPSAiLmNtc19kYl9wcmVmaXgoKS4iZXZlbnRfaGFuZGxlcnMuZXZlbnRfaWQgIFdIRVJFIG1vZHVsZV9uYW1lID0gPyI7DQoJCSRwYXJhbXNbXSA9ICR0aGlzLT5tb2R1bGUtPkdldE5hbWUoKTsNCgkJJHJlc3VsdCA9ICR0aGlzLT5kYi0+R2V0QWxsKCAkcSwgJHBhcmFtcyApOw0KCQkNCgkJaWYgKCEkcmVzdWx0KSByZXR1cm4gZmFsc2U7DQoJCQ0KCQlyZXR1cm4gJHJlc3VsdDsJCQ0KCX0NCgkNCglwcml2YXRlIGZpbmFsIGZ1bmN0aW9uIGdldFRlbXBsYXRlcygpDQoJew0KLy8NCi8vCQkkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdGVtcGxhdGVzIFdIRVJFIG1vZHVsZV9uYW1lID0gPyI7DQovLwkJJHBhcmFtc1tdID0gJHRoaXMtPm1vZHVsZS0+R2V0TmFtZSgpOw0KLy8JCSRyZXN1bHQgPSAkdGhpcy0+ZGItPkdldEFsbCggJHEsICRwYXJhbXMgKTsNCi8vCQlyZXR1cm4gJHJlc3VsdDsJCQ0KCQkNCgkJJGFsbHRlbXBsYXRlcyA9ICR0aGlzLT5tb2R1bGUtPkxpc3RUZW1wbGF0ZXMoKTsNCgkJDQoJCWlmICghJGFsbHRlbXBsYXRlcykgcmV0dXJuIGZhbHNlOw0KCQlyZXR1cm4gJGFsbHRlbXBsYXRlczsNCgl9DQoNCglwcml2YXRlIGZpbmFsIGZ1bmN0aW9uIGdldFRhYmxlcygpDQoJew0KDQoJCSRxID0gIlNIT1cgVEFCTEVTIEZST00gIiAuICR0aGlzLT5jb25maWdbJ2RiX25hbWUnXTsNCgkJJHBhcmFtc1tdID0gJHRoaXMtPm1vZHVsZS0+R2V0TmFtZSgpOw0KCQkkc2hvd3RhYmxlcyA9ICR0aGlzLT5kYi0+R2V0QWxsKCAkcSApOw0KDQoJCSR0YWJsZXMgPSBhcnJheSgpOw0KCQlmb3JlYWNoICgkc2hvd3RhYmxlcyBhcyAkdGIgKSB7DQoJCQlmb3JlYWNoKCR0YiBhcyAkdCkgew0KCQkJCWlmIChzdHJwb3MoJHQsY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy5zdHJ0b2xvd2VyKCR0aGlzLT5tb2R1bGUtPkdldE5hbWUoKSkpICE9PSBmYWxzZSkNCgkJCQkJJHRhYmxlc1skdF0gPSBhcnJheSgpOw0KCQkJfQ0KCQl9DQoJCQ0KCQlmb3JlYWNoICgkdGFibGVzIGFzICR0YWJsZSA9PiAkZGF0YSkgew0KCQkJJHEgPSAiU0VMRUNUICogRlJPTSAiIC4gJHRhYmxlOw0KCQkJJGRhdGEgPSAkdGhpcy0+ZGItPkdldEFsbCggJHEgKTsNCgkJCSR0YWJsZXNbJHRhYmxlXSA9ICRkYXRhOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJHRhYmxlczsJCQ0KCQkNCgl9DQoJDQoJDQoNCgkvLyBiYXNlZCBvbiBjbGFzcy5tb2R1bGVvcGVyYXRpb25zLmluYy5waHANCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gQ3JlYXRlWE1MUGFja2FnZSgpDQoJew0KCQlpZiAoIWlzX29iamVjdCgkdGhpcy0+bW9kdWxlKSkgcmV0dXJuIGZhbHNlOw0KCQkNCgkJLy8gZ2V0IGEgZmlsZSBsaXN0DQovLwkJJGZpbGVjb3VudCA9IDA7DQovLwkJJGRpciA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpLkRJUkVDVE9SWV9TRVBBUkFUT1IuIm1vZHVsZXMiLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHRoaXMtPm1vZHVsZS0+R2V0TmFtZSgpOw0KLy8JCSRmaWxlcyA9IGdldF9yZWN1cnNpdmVfZmlsZV9saXN0KCAkZGlyLCAkdGhpcy0+eG1sX2V4Y2x1ZGVfZmlsZXMgKTsNCg0KCQkkeG1sdHh0ICA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+JzsNCgkJJHhtbHR4dCAuPSAkdGhpcy0+eG1sZHRkLiJcbiI7DQoJCSR4bWx0eHQgLj0gIjxtb2R1bGU+XG4iOw0KCQkkeG1sdHh0IC49ICIJPGR0ZHZlcnNpb24+Ii5NT0RVTEVfRFREX1ZFUlNJT04uIjwvZHRkdmVyc2lvbj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8bmFtZT4iLiR0aGlzLT5tb2R1bGUtPkdldE5hbWUoKS4iPC9uYW1lPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx2ZXJzaW9uPiIuJHRoaXMtPm1vZHVsZS0+R2V0VmVyc2lvbigpLiI8L3ZlcnNpb24+XG4iOw0KCQkkeG1sdHh0IC49ICIJPHByZWZlcmVuY2VzPiIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHRoaXMtPmdldFByZWZzKCkpKS4iPC9wcmVmZXJlbmNlcz5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8ZXZlbnRzPiIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHRoaXMtPmdldEV2ZW50cygpKSkuIjwvcHJlZj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8dGVtcGxhdGVzPiIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHRoaXMtPmdldFRlbXBsYXRlcygpKSkuIjwvdGVtcGxhdGVzPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx0YWJsZXM+Ii5iYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkdGhpcy0+Z2V0VGFibGVzKCkpKS4iPC90YWJsZXM+XG4iOw0KCQkkeG1sdHh0IC49ICI8L21vZHVsZT5cbiI7DQoJCSRtZXNzYWdlID0gJ1hNTCBwYWNrYWdlIG9mICcuc3RybGVuKCR4bWx0eHQpLicgYnl0ZXMgY3JlYXRlZCBmb3IgJy4kdGhpcy0+bW9kdWxlLT5HZXROYW1lKCk7DQoJCXJldHVybiAkeG1sdHh0Ow0KCX0NCg0KCWZ1bmN0aW9uIEV4cGFuZFhNTFBhY2thZ2UoICR4bWx1cmksICRvdmVyd3JpdGUgPSAwLCAkYnJpZWYgPSAwICkNCgl7DQoJCSRnQ21zID0gY21zbXMoKTsNCg0KCQkvLyBmaXJzdCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gYWN0dWFsbHkgd3JpdGUgdG8gdGhlIG1vZHVsZSBkaXJlY3RvcnkNCgkJJGRpciA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpLkRJUkVDVE9SWV9TRVBBUkFUT1IuIm1vZHVsZXMiOw0KDQoJCWlmKCAhaXNfd3JpdGFibGUoICRkaXIgKSAmJiAkYnJpZWYgPT0gMCApDQoJCXsNCgkJCS8vIGRpcmVjdG9yeSBub3Qgd3JpdGFibGUNCgkJCSR0aGlzLT5TZXRFcnJvciggbGFuZyggJ2Vycm9yZGlyZWN0b3J5bm90d3JpdGFibGUnICkgKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCSRyZWFkZXIgPSBuZXcgWE1MUmVhZGVyKCk7DQoJCSRyZXQgPSAkcmVhZGVyLT5vcGVuKCR4bWx1cmkpOw0KCQlpZiggJHJldCA9PSAwICkNCgkJew0KCQkJJHRoaXMtPlNldEVycm9yKCBsYW5nKCAnZXJyb3Jjb3VsZG5vdHBhcnNleG1sJyApICk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkkaGF2ZWR0ZHZlcnNpb24gPSBmYWxzZTsNCgkJJG1vZHVsZWRldGFpbHMgPSBhcnJheSgpOw0KCQlpZiggaXNfZmlsZSgkeG1sdXJpKSApDQoJCSRtb2R1bGVkZXRhaWxzWydzaXplJ10gPSBmaWxlc2l6ZSgkeG1sdXJpKTsNCgkJJHJlcXVpcmVkID0gYXJyYXkoKTsNCgkJd2hpbGUoICRyZWFkZXItPnJlYWQoKSApDQoJCXsNCgkJCXN3aXRjaCgkcmVhZGVyLT5ub2RlVHlwZSkNCgkJCXsNCgkJCQljYXNlIFhNTFJFQURFUjo6RUxFTUVOVDoNCgkJCQkJew0KCQkJCQkJc3dpdGNoKCBzdHJ0b3VwcGVyKCRyZWFkZXItPmxvY2FsTmFtZSkgKQ0KCQkJCQkJew0KCQkJCQkJCWNhc2UgJ05BTUUnOg0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkcmVhZGVyLT5yZWFkKCk7DQoJCQkJCQkJCQkkbW9kdWxlZGV0YWlsc1snbmFtZSddID0gJHJlYWRlci0+dmFsdWU7DQoJCQkJCQkJCQkvLyBjaGVjayBpZiB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5IGluc3RhbGxlZA0KCQkJCQkJCQkJaWYoIGlzc2V0KCAkdGhpcy0+X21vZHVsZXNbJG1vZHVsZWRldGFpbHNbJ25hbWUnXV0gKSAmJiAkb3ZlcndyaXRlID09IDAgJiYgJGJyaWVmID09IDAgKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSR0aGlzLT5TZXRFcnJvciggbGFuZyggJ21vZHVsZWluc3RhbGxlZCcgKSApOw0KCQkJCQkJCQkJCXJldHVybiBUUlVFOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCX0NCgkJCQkJCQljYXNlICdEVERWRVJTSU9OJzoNCgkJCQkJCQkJew0KCQkJCQkJCQkJJHJlYWRlci0+cmVhZCgpOw0KCQkJCQkJCQkJaWYoICRyZWFkZXItPnZhbHVlICE9IE1PRFVMRV9EVERfVkVSU0lPTiApDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJHRoaXMtPlNldEVycm9yKCBsYW5nKCAnZXJyb3JkdGRtaXNtYXRjaCcgKSApOw0KCQkJCQkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCSRoYXZlZHRkdmVyc2lvbiA9IHRydWU7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJfQ0KDQoJCQkJCQkJY2FzZSAnVkVSU0lPTic6DQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRyZWFkZXItPnJlYWQoKTsNCgkJCQkJCQkJCSRtb2R1bGVkZXRhaWxzWyd2ZXJzaW9uJ10gPSAkcmVhZGVyLT52YWx1ZTsNCgkJCQkJCQkJCSR0bXBpbnN0ID0gJHRoaXMtPmdldF9tb2R1bGVfaW5zdGFuY2UoJG1vZHVsZWRldGFpbHNbJ25hbWUnXSk7DQoJCQkJCQkJCQlpZiggJHRtcGluc3QgJiYgJGJyaWVmID09IDAgKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSR2ZXJzaW9uID0gJHRtcGluc3QtPkdldFZlcnNpb24oKTsNCgkJCQkJCQkJCQlpZiggdmVyc2lvbl9jb21wYXJlKCRtb2R1bGVkZXRhaWxzWyd2ZXJzaW9uJ10sJHZlcnNpb24pIDwgMCApDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdGhpcy0+U2V0RXJyb3IoIGxhbmcoJ2Vycm9yYXR0ZW1wdGVkZG93bmdyYWRlJykgKTsNCgkJCQkJCQkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlIGlmICh2ZXJzaW9uX2NvbXBhcmUoJG1vZHVsZWRldGFpbHNbJ3ZlcnNpb24nXSwkdmVyc2lvbikgPT0gMCApDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdGhpcy0+U2V0RXJyb3IoIGxhbmcoJ21vZHVsZWluc3RhbGxlZCcpICk7DQoJCQkJCQkJCQkJCXJldHVybiBUUlVFOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQl9DQoNCgkJCQkJCQljYXNlICdNSU5DTVNWRVJTSU9OJzoNCgkJCQkJCQljYXNlICdNQVhDTVNWRVJTSU9OJzoNCgkJCQkJCQljYXNlICdERVNDUklQVElPTic6DQoJCQkJCQkJY2FzZSAnRklMRU5BTUUnOg0KCQkJCQkJCWNhc2UgJ0lTRElSJzoNCgkJCQkJCQkJew0KCQkJCQkgICAgJG5hbWUgPSAkcmVhZGVyLT5sb2NhbE5hbWU7DQoJCQkJCSAgICAkcmVhZGVyLT5yZWFkKCk7DQoJCQkJCSAgICAkbW9kdWxlZGV0YWlsc1skbmFtZV0gPSAkcmVhZGVyLT52YWx1ZTsNCgkJCQkJICAgIGJyZWFrOw0KCQkJCQkJCQl9DQoJCQkJCQkJY2FzZSAnSEVMUCc6DQoJCQkJCQkJY2FzZSAnQUJPVVQnOg0KCQkJCQkJCQl7DQoJCQkJCSAgICAkbmFtZSA9ICRyZWFkZXItPmxvY2FsTmFtZTsNCgkJCQkJICAgICRyZWFkZXItPnJlYWQoKTsNCgkJCQkJICAgICRtb2R1bGVkZXRhaWxzWyRuYW1lXSA9IGJhc2U2NF9kZWNvZGUoJHJlYWRlci0+dmFsdWUpOw0KCQkJCQkgICAgYnJlYWs7DQoJCQkJCQkJCX0NCgkJCQkJCQljYXNlICdSRVFVSVJFRE5BTUUnOg0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkcmVhZGVyLT5yZWFkKCk7DQoJCQkJCQkJCQkkcmVxdWlyZXNbJ25hbWUnXSA9ICRyZWFkZXItPnZhbHVlOw0KCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCX0NCgkJCQkJCQljYXNlICdSRVFVSVJFRFZFUlNJT04nOg0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkcmVhZGVyLT5yZWFkKCk7DQoJCQkJCQkJCQkkcmVxdWlyZXNbJ3ZlcnNpb24nXSA9ICRyZWFkZXItPnZhbHVlOw0KCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCX0NCgkJCQkJCQljYXNlICdEQVRBJzoNCgkJCQkJCQkJew0KCQkJCQkJCQkJJHJlYWRlci0+cmVhZCgpOw0KCQkJCQkJCQkJJG1vZHVsZWRldGFpbHNbJ2ZpbGVkYXRhJ10gPSAkcmVhZGVyLT52YWx1ZTsNCgkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCWNhc2UgWE1MUmVhZGVyOjpFTkRfRUxFTUVOVDoNCgkJCQkJew0KCQkJCQkJc3dpdGNoKCBzdHJ0b3VwcGVyKCRyZWFkZXItPmxvY2FsTmFtZSkgKQ0KCQkJCQkJew0KCQkJCQkJCWNhc2UgJ1JFUVVJUkVTJzoNCgkJCQkJCQkJew0KCQkJCQkJCQkJaWYoIGNvdW50KCRyZXF1aXJlcykgIT0gMiApDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJY29udGludWU7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlpZiggIWlzc2V0KCAkbW9kdWxlZGV0YWlsc1sncmVxdWlyZXMnXSApICkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkkbW9kdWxlZGV0YWlsc1sncmVxdWlyZXMnXSA9IGFycmF5KCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkkbW9kdWxlZGV0YWlsc1sncmVxdWlyZXMnXVtdID0gJHJlcXVpcmVzOw0KCQkJCQkJCQkJJHJlcXVpcmVzID0gYXJyYXkoKTsNCgkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQl9DQoJCQkJCQkJY2FzZSAnRklMRSc6DQoJCQkJCQkJCXsNCgkJCQkJCQkJCWlmKCAkYnJpZWYgIT0gMCApIGNvbnRpbnVlOw0KDQoJCQkJCQkJCQkvLyBmaW5pc2hlZCBhIGZpcnN0IGZpbGUNCgkJCQkJCQkJCWlmKCAhaXNzZXQoICRtb2R1bGVkZXRhaWxzWyduYW1lJ10gKQkgICB8fCAhaXNzZXQoICRtb2R1bGVkZXRhaWxzWyd2ZXJzaW9uJ10gKSB8fA0KCQkJCQkJCQkJIWlzc2V0KCAkbW9kdWxlZGV0YWlsc1snZmlsZW5hbWUnXSApIHx8ICFpc3NldCggJG1vZHVsZWRldGFpbHNbJ2lzZGlyJ10gKSApDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJHRoaXMtPlNldEVycm9yKCBsYW5nKCdlcnJvcmluY29tcGxldGV4bWwnKSApOw0KCQkJCQkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJCQkJCX0NCg0KCQkJCQkJCQkJLy8gcmVhZHkgdG8gZ28NCgkJCQkJCQkJCSRtb2R1bGVkaXI9JGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRtb2R1bGVkZXRhaWxzWyduYW1lJ107DQoJCQkJCQkJCQkkZmlsZW5hbWU9JG1vZHVsZWRpci4kbW9kdWxlZGV0YWlsc1snZmlsZW5hbWUnXTsNCgkJCQkJCQkJCWlmKCAhZmlsZV9leGlzdHMoICRtb2R1bGVkaXIgKSApDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJaWYoICFAbWtkaXIoICRtb2R1bGVkaXIgKSAmJiAhaXNfZGlyKCAkbW9kdWxlZGlyICkgKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHRoaXMtPlNldEVycm9yKGxhbmcoJ2Vycm9yY2FudGNyZWF0ZWZpbGUnKS4nICcuJG1vZHVsZWRpcik7DQoJCQkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWVsc2UgaWYoICRtb2R1bGVkZXRhaWxzWydpc2RpciddICkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQlpZiggIUBta2RpciggJGZpbGVuYW1lICkgJiYgIWlzX2RpciggJGZpbGVuYW1lICkgKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHRoaXMtPlNldEVycm9yKGxhbmcoJ2Vycm9yY2FudGNyZWF0ZWZpbGUnKS4nICcuJGZpbGVuYW1lKTsNCgkJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJZWxzZQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRkYXRhID0gJG1vZHVsZWRldGFpbHNbJ2ZpbGVkYXRhJ107DQoJCQkJCQkJCQkJaWYoIHN0cmxlbiggJGRhdGEgKSApDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoICRkYXRhICk7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCSRmcCA9IEBmb3BlbiggJGZpbGVuYW1lLCAidyIgKTsNCgkJCQkJCQkJCQlpZiggISRmcCApDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdGhpcy0+U2V0RXJyb3IobGFuZygnZXJyb3JjYW50Y3JlYXRlZmlsZScpLicgJy4kZmlsZW5hbWUpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQlpZiggc3RybGVuKCAkZGF0YSApICkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCUBmd3JpdGUoICRmcCwgJGRhdGEgKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJQGZjbG9zZSggJGZwICk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQl1bnNldCggJG1vZHVsZWRldGFpbHNbJ2ZpbGVkYXRhJ10gKTsNCgkJCQkJCQkJCXVuc2V0KCAkbW9kdWxlZGV0YWlsc1snZmlsZW5hbWUnXSApOw0KCQkJCQkJCQkJdW5zZXQoICRtb2R1bGVkZXRhaWxzWydpc2RpciddICk7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCX0NCgkJfSAvLyB3aGlsZQ0KDQoJCSRyZWFkZXItPmNsb3NlKCk7DQoJCWlmKCAkaGF2ZWR0ZHZlcnNpb24gPT0gZmFsc2UgKQ0KCQl7DQoJCQkkdGhpcy0+U2V0RXJyb3IoIGxhbmcoICdlcnJvcmR0ZG1pc21hdGNoJyApICk7DQoJCX0NCg0KCQkvLyB3ZSd2ZSBjcmVhdGVkIHRoZSBtb2R1bGUncyBkaXJlY3RvcnkNCgkJdW5zZXQoICRtb2R1bGVkZXRhaWxzWydmaWxlZGF0YSddICk7DQoJCXVuc2V0KCAkbW9kdWxlZGV0YWlsc1snZmlsZW5hbWUnXSApOw0KCQl1bnNldCggJG1vZHVsZWRldGFpbHNbJ2lzZGlyJ10gKTsNCg0KCQlpZiggJHRoaXMtPkdldExhc3RFcnJvcigpICE9ICIiICkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgl9DQoJDQoJDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBsaXN0TW9kdWxlcygpDQoJew0KCQkkdGIgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1Rvb2xCb3gnKTsNCgkJDQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQlpZiAoIWlzX29iamVjdCgkdGIpKSByZXR1cm4gZmFsc2U7DQoJCQ0KCQlnbG9iYWwgJGlkOw0KCQlnbG9iYWwgJHJldHVybmlkOw0KCQkNCgkJJHRoZW1lT2JqZWN0ID0gY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyk7DQoJCQ0KCQkkbW9kb3BzID0gY21zbXMoKS0+R2V0TW9kdWxlT3BlcmF0aW9ucygpOwkJDQoJCSRtb2RvcHMtPkxvYWRNb2R1bGVzKFRSVUUpOw0KCQkkYWxsbW9kdWxlcyA9ICRtb2RvcHMtPkdldEFsbE1vZHVsZU5hbWVzKCk7DQoNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIGZyb20gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZXMgT1JERVIgQlkgbW9kdWxlX25hbWUiOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCXdoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7DQoJCQkkZGJtWyRyb3dbJ21vZHVsZV9uYW1lJ11dWydTdGF0dXMnXSA9ICRyb3dbJ3N0YXR1cyddOw0KCQkJJGRibVskcm93Wydtb2R1bGVfbmFtZSddXVsnVmVyc2lvbiddID0gJHJvd1sndmVyc2lvbiddOw0KCQkJJGRibVskcm93Wydtb2R1bGVfbmFtZSddXVsnQWN0aXZlJ10gPSAoJHJvd1snYWN0aXZlJ10gPT0gMT90cnVlOmZhbHNlKTsNCgkJfQ0KCQkNCgkJJGN1cmNsYXNzID0gInJvdzEiOw0KCQkvLyBjb25zdHJ1Y3QgdHJ1ZS9mYWxzZSBidXR0b24gaW1hZ2VzDQoJCSRpbWFnZV90cnVlID0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsIGxhbmcoJ3RydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCQkkaW1hZ2VfZmFsc2UgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsIGxhbmcoJ2ZhbHNlJyksJycsJycsJ3N5c3RlbWljb24nKTsNCg0KCQkkcm93YXJyYXkgPSBhcnJheSgpOw0KCQkkcm93Y2xhc3MgPSAncm93MSc7DQoJCQ0KCQlmb3JlYWNoKCRhbGxtb2R1bGVzIGFzICRrZXkpDQoJCXsNCgkJCWlmICghaXNzZXQoJGRibVska2V5XSkpCXsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCQ0KCQkJJHJvdyA9IG5ldyBTdGRDbGFzcygpOw0KCQkJDQovLwkJCSRtb2RpbnN0YW5jZSA9ICRtb2RvcHMtPmdldF9tb2R1bGVfaW5zdGFuY2UoJGtleSwnJyx0cnVlKTsNCgkJCSRyb3ctPm5hbWUgPSAka2V5Ow0KCQkJJHJvdy0+dmVyc2lvbiA9ICRkYm1bJGtleV1bJ1ZlcnNpb24nXTsNCgkJCSRyb3ctPmFjdGl2ZSA9ICRkYm1bJGtleV1bJ0FjdGl2ZSddID8gJGltYWdlX3RydWUgOiAkaW1hZ2VfZmFsc2U7DQoJCQkkcm93LT54bWwgPSAkdGItPkNyZWF0ZUxpbmsoJGlkLCAnZG9fbW9kdWxlb3BzJywgJHJldHVybmlkLA0KCQkJCSAgICAnPGltZyBzcmM9Ii4uL21vZHVsZXMvVG9vbEJveC9pbWFnZXMveG1sX3Jzcy5naWYiYWx0PSInLmxhbmcoJ3htbCcpLiciIC8+JywNCgkJCQkgICAgYXJyYXkoJ20nID0+ICRyb3ctPm5hbWUsJ21vZGUnID0+ICdleHBvcnQnKSk7IA0KCQkJDQoJCQkNCgkJCSRyb3dhcnJheVtdID0gJHJvdzsNCgkJCQ0KCQl9DQoJCQ0KCQlyZXR1cm4gJHJvd2FycmF5Ow0KDQoJIH0NCg0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbRedirectLog.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KY2xhc3MgdGJSZWRpcmVjdExvZyB7DQoJDQoJcHJpdmF0ZSAkdGI7DQoJcHJpdmF0ZSAkZGI7DQoJcHJpdmF0ZSAkY29uZmlnOw0KCXByb3RlY3RlZCAkaHR0cDsNCglwcm90ZWN0ZWQgJGxvZ2dpbmc7DQoJcHJvdGVjdGVkICRyZWZlcmVyOw0KCXByb3RlY3RlZCAkZGVidWdJZDsNCgkNCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiR0Ykluc3RhbmNlKSANCgl7DQoJCSR0aGlzLT50YiA9ICR0Ykluc3RhbmNlOw0KCQkkdGhpcy0+ZGIgPSBjbXNtcygpLT5HZXREYigpOw0KCQkkdGhpcy0+Y29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoJCQ0KCQkkdGhpcy0+aHR0cCA9ICRfU0VSVkVSWydTRVJWRVJfUE9SVCddPT00NDMgPyAnaHR0cHM6Ly8nIDogJ2h0dHA6Ly8nOw0KCQkkdGhpcy0+bG9nZ2luZyA9IGZhbHNlOw0KCQkkdGhpcy0+cmVmZXJlciA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10gOiAnJzsNCgkJJHRoaXMtPmRlYnVnSWQgPSAwOw0KCX0NCgkNCi8qKg0KCSogQnVpbGRzIGEgc3VtbWFyeSBsb2cgYW5kIHdyaXRlcyBpdCB0byBkYXRhYmFzZQ0KCSogQHBhcmFtIGFycmF5ICRkYXRhIFRoZSBsb2cgZGF0YSBhcyBhcnJheS4NCgkqIEBwYXJhbSBzdHJpbmcgJHBlcmlvZCBUaGUgcGVyaW9kIHRvIGxvZyAoZGF5LCBtb250aCBvciB5ZWFyKS4NCgkqIEBwYXJhbSBpbnQgJHB2YWx1ZSBUaGUgZGF5LCBtb250aCBvciB5ZWFyIGFzIGludGVnZXIgKGUuZy4gZGVjZW1iZXIgd291bGQgYmUgMTIpDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gTG9nU3VtKCRkYXRhLCRwZXJpb2QsJHB2YWx1ZSkgew0KDQoJCS8vIEJ1aWxkIHN1bSBhcnJheXMNCgkJJHVybGxvZyA9IGFycmF5KCk7DQoNCgkJLy8gQ2hlY2sgZGF0YSBhcnJheQ0KCQlpZiAoaXNfYXJyYXkoJGRhdGEpKSB7DQoNCgkJCS8vIEJ1aWxkIHNxbCBpbnNlcnQgcXVlcnkNCgkJCSRzcWwgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZ3N1bSAocGVyaW9kLCB2YWx1ZSwgdXJsLCBwYWdlX2lkLCB2aXNpdHMsIHNlYXJjaGVuZ2luZSwga2V5d29yZCwgcmVmZXJlciwgY3JlYXRlZF9kYXRlKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sIE5PVygpKSc7DQoJCQkjZWNobyAkc3FsLic8aHIgLz4nOw0KDQoJCQkvLyBTZXQgbWFpbCBhcnJheXMNCgkJCSRtYWlsdXJscyA9IGFycmF5KCk7DQoNCgkJCS8vIFdhbGsgdGhyb3VnaCBsb2cgYW5kIGJ1aWxkIGEgc3VtbWFyeSBvZiB0aGUgdmFsdWVzDQoJCQlmb3JlYWNoICgkZGF0YSBhcyAkZCkgew0KCQkJCS8vIFNldCB2aXNpdHMNCgkJCQkkdmlzaXRzID0gaXNzZXQoJGRbJ3Zpc2l0cyddKSA/ICRkWyd2aXNpdHMnXSA6IDE7DQoJCQkJLy8gTG9nIHRvIHVybCBzdW1tYXJ5DQoJCQkJaWYgKCRkWyd1cmwnXSkgew0KCQkJCQlpZiAoIWlzc2V0KCR1cmxsb2dbJGRbJ3VybCddXSkpIHsNCgkJCQkJCSR1cmxsb2dbJGRbJ3VybCddXSA9IGFycmF5ICgJJ3JlZmVyZXInID0+ICcnLA0KCQkJCQkJCQkJCQkJCQknc2VhcmNoZW5naW5lJyA9PiAnJywNCgkJCQkJCQkJCQkJCQkJJ2tleXdvcmQnID0+ICcnLA0KCQkJCQkJCQkJCQkJCQkncGFnZV9pZCcgPT4gIDAsDQoJCQkJCQkJCQkJCQkJCSd2aXNpdHMnID0+ICAwLA0KCQkJCQkJCQkJCQkJCQknYXJlZmVyZXInID0+IGFycmF5KCksDQoJCQkJCQkJCQkJCQkJCSdhc2VhcmNoZW5naW5lJyA9PiBhcnJheSgpLA0KCQkJCQkJCQkJCQkJCQknYWtleXdvcmQnID0+IGFycmF5KCksDQoJCQkJCQkJCQkJCQkJCSdhcGFnZV9pZCcgPT4gIGFycmF5KCkgKTsNCgkJCQkJfQ0KCQkJCQlpZiAoJGRbJ3JlZmVyZXInXSkgew0KCQkJCQkJaWYgKCFpc3NldCgkdXJsbG9nWyRkWyd1cmwnXV1bJ2FyZWZlcmVyJ11bJGRbJ3JlZmVyZXInXV0pKSANCgkJCQkJCQkkdXJsbG9nWyRkWyd1cmwnXV1bJ2FyZWZlcmVyJ11bJGRbJ3JlZmVyZXInXV0gPSAxOw0KCQkJCQkJZWxzZSANCgkJCQkJCQkkdXJsbG9nWyRkWyd1cmwnXV1bJ2FyZWZlcmVyJ11bJGRbJ3JlZmVyZXInXV0rKzsNCgkJCQkJfQ0KCQkJCQlpZiAoJGRbJ3NlYXJjaGVuZ2luZSddKSB7DQoJCQkJCQlpZiAoIWlzc2V0KCR1cmxsb2dbJGRbJ3VybCddXVsnYXNlYXJjaGVuZ2luZSddWyRkWydzZWFyY2hlbmdpbmUnXV0pKQ0KCQkJCQkJCSR1cmxsb2dbJGRbJ3VybCddXVsnYXNlYXJjaGVuZ2luZSddWyRkWydzZWFyY2hlbmdpbmUnXV0gPSAxOw0KCQkJCQkJZWxzZQkNCgkJCQkJCQkkdXJsbG9nWyRkWyd1cmwnXV1bJ2FzZWFyY2hlbmdpbmUnXVskZFsnc2VhcmNoZW5naW5lJ11dKys7DQoJCQkJCX0gDQoJCQkJCWlmICgkZFsna2V5d29yZCddKSB7DQoJCQkJCQlpZiAoIWlzc2V0KCR1cmxsb2dbJGRbJ3VybCddXVsnYWtleXdvcmQnXVskZFsna2V5d29yZCddXSkpDQoJCQkJCQkJJHVybGxvZ1skZFsndXJsJ11dWydha2V5d29yZCddWyRkWydrZXl3b3JkJ11dID0gMTsNCgkJCQkJCWVsc2UNCgkJCQkJCQkkdXJsbG9nWyRkWyd1cmwnXV1bJ2FrZXl3b3JkJ11bJGRbJ2tleXdvcmQnXV0rKzsNCgkJCQkJfSANCgkJCQkJaWYgKCRkWydwYWdlX2lkJ10+MCkgew0KCQkJCQkJaWYgKCFpc3NldCgkdXJsbG9nWyRkWyd1cmwnXV1bJ2FwYWdlX2lkJ11bJGRbJ3BhZ2VfaWQnXV0pKQ0KCQkJCQkJCSR1cmxsb2dbJGRbJ3VybCddXVsnYXBhZ2VfaWQnXVskZFsncGFnZV9pZCddXSA9IDE7DQoJCQkJCQllbHNlDQoJCQkJCQkJJHVybGxvZ1skZFsndXJsJ11dWydhcGFnZV9pZCddWyRkWydwYWdlX2lkJ11dKys7DQoJCQkJCX0gDQoJCQkJCSR1cmxsb2dbJGRbJ3VybCddXVsndmlzaXRzJ10rPSAkdmlzaXRzOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQnVpbGQgdXJsIHN1bW1hcnkNCgkJCWZvcmVhY2ggKCR1cmxsb2cgYXMgJGtleT0+JHZhbHVlKSB7DQoJCQkJLy8gR2V0IGJlc3QgcmVmZXJlcg0KCQkJCWlmIChpc19hcnJheSgkdmFsdWVbJ2FyZWZlcmVyJ10pKSB7DQoJCQkJCSRtZHN1bSA9IDA7DQoJCQkJCWZvcmVhY2ggKCR2YWx1ZVsnYXJlZmVyZXInXSBhcyAka2V5Mj0+JHZhbHVlMikgew0KCQkJCQkJaWYgKCR2YWx1ZTIgPiAkbWRzdW0pIHsNCgkJCQkJCQkkdXJsbG9nWyRrZXldWydyZWZlcmVyJ10gPSAka2V5MjsNCgkJCQkJCQkkbWRzdW0gPSAkdmFsdWUyOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIEdldCBiZXN0IHNlYXJjaGVuZ2luZQ0KCQkJCWlmIChpc19hcnJheSgkdmFsdWVbJ2FzZWFyY2hlbmdpbmUnXSkpIHsNCgkJCQkJJG1kc3VtID0gMDsNCgkJCQkJZm9yZWFjaCAoJHZhbHVlWydhc2VhcmNoZW5naW5lJ10gYXMgJGtleTI9PiR2YWx1ZTIpIHsNCgkJCQkJCWlmICgkdmFsdWUyID4gJG1kc3VtKSB7DQoJCQkJCQkJJHVybGxvZ1ska2V5XVsnc2VhcmNoZW5naW5lJ10gPSAka2V5MjsNCgkJCQkJCQkkbWRzdW0gPSAkdmFsdWUyOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIEdldCBiZXN0IGtleXdvcmQNCgkJCQlpZiAoaXNfYXJyYXkoJHZhbHVlWydha2V5d29yZCddKSkgew0KCQkJCQkkbWRzdW0gPSAwOw0KCQkJCQlmb3JlYWNoICgkdmFsdWVbJ2FrZXl3b3JkJ10gYXMgJGtleTI9PiR2YWx1ZTIpIHsNCgkJCQkJCWlmICgkdmFsdWUyID4gJG1kc3VtKSB7DQoJCQkJCQkJJHVybGxvZ1ska2V5XVsna2V5d29yZCddID0gJGtleTI7DQoJCQkJCQkJJG1kc3VtID0gJHZhbHVlMjsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQkvLyBHZXQgYmVzdCBwYWdlX2lkDQoJCQkJaWYgKGlzX2FycmF5KCR2YWx1ZVsnYXBhZ2VfaWQnXSkpIHsNCgkJCQkJJG1kc3VtID0gMDsNCgkJCQkJZm9yZWFjaCAoJHZhbHVlWydhcGFnZV9pZCddIGFzICRrZXkyPT4kdmFsdWUyKSB7DQoJCQkJCQlpZiAoJHZhbHVlMiA+ICRtZHN1bSkgew0KCQkJCQkJCSR1cmxsb2dbJGtleV1bJ3BhZ2VfaWQnXSA9ICRrZXkyOw0KCQkJCQkJCSRtZHN1bSA9ICR2YWx1ZTI7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJLy8gSW5zZXJ0IHZhbHVlcyB0byBkYXRhYmFzZSB0YWJsZQ0KCQkJCSMgcGVyaW9kLCB2YWx1ZSwgdXJsLCBwYWdlX2lkLCB2aXNpdHMsIHNlYXJjaGVuZ2luZSwga2V5d29yZCwgcmVmZXJlcg0KCQkJCSNlY2hvICRwZXJpb2QuJywnLiRwdmFsdWUuJywnLiRrZXkuJywnLiR1cmxsb2dbJGtleV1bJ3BhZ2VfaWQnXS4nLCcuJHVybGxvZ1ska2V5XVsndmlzaXRzJ10uJywnLiR1cmxsb2dbJGtleV1bJ3NlYXJjaGVuZ2luZSddLicsJy4kdXJsbG9nWyRrZXldWydrZXl3b3JkJ10uJywnLiR1cmxsb2dbJGtleV1bJ3JlZmVyZXInXTtleGl0Ow0KCQkJCSRyZXMgPSAkdGhpcy0+ZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkcGVyaW9kLCRwdmFsdWUsJGtleSwkdXJsbG9nWyRrZXldWydwYWdlX2lkJ10sJHVybGxvZ1ska2V5XVsndmlzaXRzJ10sJHVybGxvZ1ska2V5XVsnc2VhcmNoZW5naW5lJ10sJHVybGxvZ1ska2V5XVsna2V5d29yZCddLCR1cmxsb2dbJGtleV1bJ3JlZmVyZXInXSkpOw0KCQkJCS8vIEFkZCBkYXRhIHRvIG1haWwgYXJyYXkNCgkJCQkkbWFpbHVybHNbXSA9IGFycmF5ICgJJ3ZhbHVlJwkJCT0+ICRwdmFsdWUsDQoJCQkJCQkJCQkJJ3VybCcJIAkJPT4gJGtleSwNCgkJCQkJCQkJCQkncGFnZScJCQk9PiAkdXJsbG9nWyRrZXldWydwYWdlX2lkJ10sDQoJCQkJCQkJCQkJJ3Zpc2l0cycJCT0+ICR1cmxsb2dbJGtleV1bJ3Zpc2l0cyddLA0KCQkJCQkJCQkJCSdzZWFyY2hlbmdpbmUnCT0+ICR1cmxsb2dbJGtleV1bJ3NlYXJjaGVuZ2luZSddLA0KCQkJCQkJCQkJCSdrZXl3b3JkJwkJPT4gJHVybGxvZ1ska2V5XVsna2V5d29yZCddLA0KCQkJCQkJCQkJCSdyZWZlcmVyJwkJPT4gJHVybGxvZ1ska2V5XVsncmVmZXJlciddDQoJCQkJCQkJCQkpOw0KCQkJfQ0KDQoJCQkvLyBNYWlsIG1vbnRobHkgc3RhdHMNCgkJCWlmICgkcGVyaW9kID09ICdtb250aCcpIHsNCgkJCQkkZW1haWwgPSB0cmltKCR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfZW1haWwnKSk7DQoJCQkJaWYgKCRlbWFpbCkgew0KCQkJCQkvLyBBc3NpZ24gc21hcnR5IHZhcnMNCgkJCQkJJHRoaXMtPnRiU21hcnR5LT5hc3NpZ24oJ21vbnRoJywkdGhpcy0+TGFuZygnbW9udGgnKSk7DQoJCQkJCSR0aGlzLT50YlNtYXJ0eS0+YXNzaWduKCd1cmwnLCR0aGlzLT5MYW5nKCd1cmwnKSk7DQoJCQkJCSR0aGlzLT50YlNtYXJ0eS0+YXNzaWduKCdwYWdlJywkdGhpcy0+TGFuZygncGFnZScpKTsNCgkJCQkJJHRoaXMtPnRiU21hcnR5LT5hc3NpZ24oJ3Zpc2l0cycsJHRoaXMtPkxhbmcoJ3Zpc2l0cycpKTsNCgkJCQkJJHRoaXMtPnRiU21hcnR5LT5hc3NpZ24oJ3NlYXJjaGVuZ2luZScsJHRoaXMtPkxhbmcoJ3NlYXJjaGVuZ2luZScpKTsNCgkJCQkJJHRoaXMtPnRiU21hcnR5LT5hc3NpZ24oJ2tleXdvcmQnLCR0aGlzLT5MYW5nKCdrZXl3b3JkJykpOw0KCQkJCQkkdGhpcy0+dGJTbWFydHktPmFzc2lnbigncmVmZXJlcicsJHRoaXMtPkxhbmcoJ3JlZmVyZXInKSk7DQoJCQkJCSR0aGlzLT50YlNtYXJ0eS0+YXNzaWduKCd1cmxzJywkbWFpbHVybHMpOw0KCQkJCQkkdGhpcy0+dGJTbWFydHktPmFzc2lnbignb2xkdXJsX3VzZScsJHRoaXMtPnRiLT5HZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlJykgPyAxIDogMCk7DQoJCQkJCS8vIEJ1aWxkIG1vbnRoIGFuZCB5ZWFyDQoJCQkJCSR5ZWFyID0gJHB2YWx1ZT09MTIgPyBkYXRlKCJZIiktMSA6IGRhdGUoIlkiKTsNCgkJCQkJJG1vbnRoID0gc3ByaW50ZigiJTAyZCAvICUwNGQiLCAkcHZhbHVlLCAkeWVhcik7DQoJCQkJCS8vIEdldCBzdWJqZWN0DQoJCQkJCSRzdWJqZWN0ID0gJHRoaXMtPkxhbmcoJ3N0YXRzX2VtYWlsX3N1YmplY3QnKTsNCgkJCQkJJHN1YmplY3QgPSBzdHJfcmVwbGFjZSAoJyV1JywkX1NFUlZFUlsnSFRUUF9IT1NUJ10sJHN1YmplY3QpOw0KCQkJCQkkc3ViamVjdCA9IHN0cl9yZXBsYWNlICgnJW0nLCRtb250aCwkc3ViamVjdCk7DQoJCQkJCS8vIEdldCBib2R5DQoJCQkJCSRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc3RhdHNfZW1haWwudHBsJyk7DQoJCQkJCS8vIEdldCBDTVNNYWlsZXINCgkJCQkJJGNtc21haWxlciA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ01TTWFpbGVyJyk7DQoJCQkJCSRjbXNtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsLCcnKTsNCgkJCQkJJGNtc21haWxlci0+U2V0U3ViamVjdCgkc3ViamVjdCk7DQoJCQkJCSRjbXNtYWlsZXItPklzSFRNTCh0cnVlKTsNCgkJCQkJJGNtc21haWxlci0+U2V0Qm9keSgkYm9keSk7DQoJCQkJCSRjbXNtYWlsZXItPlNlbmQoKTsNCgkJCQl9DQoJCQl9DQoNCgkJfQ0KDQoJfQ0KDQoJLyoqDQoJKiBQcmVwYXJlcyBWaXNpdCBEYXRhIGZvciBMb2dnaW5nIGFuZCByZXR1cm5zIGl0IGFzIGFycmF5Lg0KCSogQHJldHVybiBhcnJheQ0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIFByZXBhcmVMb2dWaXNpdCgpIHsNCg0KCQkvLyBTZXQgcmV0dXJuIGFycmF5DQoJCSRkYXRhID0gYXJyYXkoKTsNCg0KCQkvLyBQcmVwYXJlIGlucHV0IHBhcmFtcw0KCQkjJHRoaXMtPnRiLT5TZXRQcmVmZXJlbmNlKCdkYXknLCcyMDEwMDUyMycpOw0KCQkkbWRkYXkgPSAkdGhpcy0+dGItPkdldFByZWZlcmVuY2UoJ2RheScpOw0KCQkkbWRtb250aCA9ICR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgnbW9udGgnKTsNCgkJJG1keWVhciA9ICR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgneWVhcicpOw0KCQkkZGF0YVsnYm90J10gPSAnJzsNCgkJJHRyYWNrVXNlckFnZW50ID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pOw0KCQlpZiAoc3RyaXN0cigkdHJhY2tVc2VyQWdlbnQsJ2FyY2hpdmVyJykpICRkYXRhWydib3QnXT0nQWxleGEnOw0KCQlpZiAoc3RyaXN0cigkdHJhY2tVc2VyQWdlbnQsJ2V4YWJvdCcpKSAkZGF0YVsnYm90J109J0V4YWxlYWQnOw0KCQlpZiAoc3RyaXN0cigkdHJhY2tVc2VyQWdlbnQsJ2Zhc3QnKSkgJGRhdGFbJ2JvdCddPSdGYXN0JzsNCgkJaWYgKHN0cmlzdHIoJHRyYWNrVXNlckFnZW50LCdmaXJlZmx5JykpICRkYXRhWydib3QnXT0nRmlyZWJhbGwnOw0KCQlpZiAoc3RyaXN0cigkdHJhY2tVc2VyQWdlbnQsJ2dvb2dsZWJvdCcpKSAkZGF0YVsnYm90J109J0dvb2dsZSc7DQoJCWlmIChzdHJpc3RyKCR0cmFja1VzZXJBZ2VudCwnbXNuYm90JykpICRkYXRhWydib3QnXT0nQmluZyc7DQoJCWlmIChzdHJpc3RyKCR0cmFja1VzZXJBZ2VudCwnc2Nvb3RlcicpKSAkZGF0YVsnYm90J109J0FsdGFWaXN0YSc7DQoJCWlmIChzdHJpc3RyKCR0cmFja1VzZXJBZ2VudCwneWFob28tbW1jcmF3bGVyJykpICRkYXRhWydib3QnXT0nWWFob28nOw0KCQlpZiAoc3RyaXN0cigkdHJhY2tVc2VyQWdlbnQsJ2dpZ2Fib3QnKSkgJGRhdGFbJ2JvdCddPSdHaWdhYm90JzsNCg0KCQkvLyBDaGVjaywgd2hldGhlciB2aXNpdCBzaG91bGQgYmUgbG9nZ2VkDQoJCWlmICghJGRhdGFbJ2JvdCddKSAkdGhpcy0+bG9nZ2luZyA9IHRydWU7DQoJCSMkdGhpcy0+bG9nZ2luZyA9IHRydWU7DQoNCgkJLy8gR2V0IG1vcmUgZGF0YSBhbmQgdXBkYXRlIHZpc2l0IGlmIGl0IGlzbid0IGEgbmV3IHZpc2l0b3INCgkJaWYgKCR0aGlzLT5sb2dnaW5nKSB7DQoJCQkvLyBDaGVjaywgd2hldGhlciB0aGlzIGlzIGEgbmV3IHZpc2l0DQoJCQkkbWR2aXNpdCA9ICR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nIFdIRVJFIHNlc3Npb25pZCA9ID8gTElNSVQgMScsIGFycmF5KHNlc3Npb25faWQoKSkpOw0KCQkJaWYgKCRtZHZpc2l0KSB7DQoJCQkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZyBTRVQgdmlzaXR0aW1lPU5PVygpIFdIRVJFIGlkPT8nOw0KCQkJCSRyZXMgPSAkdGhpcy0+ZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkbWR2aXNpdCkpOw0KCQkJCSR0aGlzLT5sb2dnaW5nID0gZmFsc2U7DQoJCQkvLyBHZXQgcmVmZXJlciwga2V5d29yZHMgYW5kIHNlYXJjaGVuZ2luZQ0KCQkJfSBlbHNlIHsNCgkJCQkvLyBHZXQgUmVmZXJlcg0KCQkJCXByZWdfbWF0Y2ggKCcvXlx3K1wvXC8oW15cL10qKSguKik/JC9pJywkdGhpcy0+cmVmZXJlciwkbWRrZXkpOw0KCQkJCS8qIEFiZnJhZ2Ugd2VnZW4gUEhQIE5vdGljZTogVW5kZWZpbmVkIG9mZnNldDogMSAtIG11c3Mgbu+/vWhlciBnZXBy77+9ZnQgd2VyZGVuICovaWYgKCFpc3NldCgkbWRrZXlbMV0pKSAkbWRrZXlbMV0gPSAnJzsNCgkJCQkkZGF0YVsncmVmZXJlciddID0gJG1ka2V5WzFdIT0kX1NFUlZFUlsnSFRUUF9IT1NUJ10gPyAkdGhpcy0+cmVmZXJlciA6ICcnOw0KCQkJCSMkZGF0YVsncmVmZXJlciddID0gJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/aGw9ZGUmc2FmZT1vZmYmY2xpZW50PWZpcmVmb3gtYSZybHM9b3JnLm1vemlsbGElM0FkZSUzQW9mZmljaWFsJnE9dGVzdCt0JUMzJUE0c3QmYXE9ZiZhcWk9JmFxbD0mb3E9JmdzX3JmYWk9JzsNCgkJCQkjJGRhdGFbJ3JlZmVyZXInXSA9ICdodHRwczovL3d3dy5nb29nbGUuY29tP2hsPWRlJnNhZmU9b2ZmJmNsaWVudD1maXJlZm94LWEmcmxzPW9yZy5tb3ppbGxhJTNBZGUlM0FvZmZpY2lhbCZxPXRlc3QrdCVDMyVBNHN0JzsNCgkJCQkkZGF0YVsnc2VhcmNoZW5naW5lJ10gPSAnJzsNCgkJCQkkZGF0YVsna2V5d29yZCddID0gJyc7DQoJCQkJJG1kcmVmID0gJGRhdGFbJ3JlZmVyZXInXSA/IHBhcnNlX3VybCgkZGF0YVsncmVmZXJlciddKSA6ICcnOw0KCQkJCSNlY2hvICc8cHJlPic7cHJpbnRfcigkbWRyZWYpO2VjaG8gJzwvcHJlPic7ZXhpdDsNCgkJCQlpZiAoaXNfYXJyYXkoJG1kcmVmKSkgew0KCQkJCQkvLyBHZXQgU2VhcmNoIEVuZ2luZSBhbmQgS2V5d29yZA0KCQkJCQkkbWR0ZW1wID0gZXhwbG9kZSgnLicsJG1kcmVmWydob3N0J10pOw0KCQkJCQkjZWNobyAkbWR0ZW1wW2NvdW50KCRtZHRlbXApLTJdO2V4aXQ7DQoJCQkJCWlmIChjb3VudCgkbWR0ZW1wKT4xKSB7DQoJCQkJCQlzd2l0Y2ggKCRtZHRlbXBbY291bnQoJG1kdGVtcCktMl0pIHsNCgkJCQkJCQljYXNlICdnb29nbGUnOgkkZGF0YVsnc2VhcmNoZW5naW5lJ10gPSAnR29vZ2xlJzsNCgkJCQkJCQkJCQkJcHJlZ19tYXRjaCAoJy9eLiooXD98JilxPShbXiZdKikoLiopPyQvaScsJGRhdGFbJ3JlZmVyZXInXSwkbWRrZXkpOw0KCQkJCQkJCQkJCQkkZGF0YVsna2V5d29yZCddID0gdXJsZGVjb2RlKCRtZGtleVsyXSk7DQoJCQkJCQkJCQkJCSRkYXRhWydyZWZlcmVyJ10gPSAnJzsNCgkJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJY2FzZSAnYmluZyc6CSRkYXRhWydzZWFyY2hlbmdpbmUnXSA9ICdCaW5nJzsNCgkJCQkJCQkJCQkJcHJlZ19tYXRjaCAoJy9eLiooXD98JilxPShbXiZdKikoLiopPyQvaScsJGRhdGFbJ3JlZmVyZXInXSwkbWRrZXkpOw0KCQkJCQkJCQkJCQkkZGF0YVsna2V5d29yZCddID0gdXJsZGVjb2RlKCRtZGtleVsyXSk7DQoJCQkJCQkJCQkJCSRkYXRhWydyZWZlcmVyJ10gPSAnJzsNCgkJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJY2FzZSAneWFob28nOgkkZGF0YVsnc2VhcmNoZW5naW5lJ10gPSAnWWFob28nOw0KCQkJCQkJCQkJCQlwcmVnX21hdGNoICgnL14uKnA9KFteJl0qKSguKik/JC9pJywkZGF0YVsncmVmZXJlciddLCRtZGtleSk7DQoJCQkJCQkJCQkJCSRkYXRhWydrZXl3b3JkJ10gPSB1cmxkZWNvZGUoJG1ka2V5WzFdKTsNCgkJCQkJCQkJCQkJJGRhdGFbJ3JlZmVyZXInXSA9ICcnOw0KCQkJCQkJCQkJCQlicmVhazsNCgkJCQkJCQlkZWZhdWx0OgkJJGRhdGFbJ3NlYXJjaGVuZ2luZSddID0gJyc7DQoJCQkJCQkJCQkJCSRkYXRhWydrZXl3b3JkJ10gPSAnJzsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCS8vIENhbGN1bGF0ZSBhbmQgc2F2ZSBzdGF0aXN0aWMgc3VtbWFyeSBpZiBuZXcgeWVhcg0KCQlpZiAoZGF0ZSgnWScpID4gJG1keWVhcikgew0KCQkJLy8gR2V0IG9sZCBtb250aA0KCQkJJG1kb2xkeWVhciA9ICR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgneWVhcicpOw0KCQkJLy8gRGVsZXRlIG9sZCByb3cgZnJvbSBkYXRhYmFzZQ0KCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZ3N1bSBXSEVSRSBwZXJpb2QgPSA/IEFORCB2YWx1ZSA9ID8nLGFycmF5KCd5ZWFyJywkbWRvbGR5ZWFyKSk7DQoJCQkvLyBDYWxjdWxhdGUgbG9nIHN1bW1hcnkNCgkJCSRtZGxvZyA9ICR0aGlzLT5kYi0+R2V0QWxsKCdTRUxFQ1QgdXJsLHBhZ2VfaWQsdmlzaXRzLHNlYXJjaGVuZ2luZSxrZXl3b3JkLHJlZmVyZXIgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nc3VtIFdIRVJFIHBlcmlvZCA9ID8nLCBhcnJheSgnbW9udGgnKSk7DQoJCQlpZiAoJG1kbG9nKSAkdGhpcy0+TG9nU3VtKCRtZGxvZywneWVhcicsJG1kb2xkeWVhcik7DQoJCQkvLyBEZWxldGUgb2xkIG1vbnRocyBmcm9tIGRhdGFiYXNlDQoJCQkkcmVzID0gJHRoaXMtPmRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nc3VtIFdIRVJFIHBlcmlvZCA9ID8nLGFycmF5KCdtb250aCcpKTsNCgkJCS8vIFNldCBuZXcgeWVhcg0KCQkJJHRoaXMtPnRiLT5TZXRQcmVmZXJlbmNlKCd5ZWFyJyxkYXRlKCdZJykpOw0KCQl9DQoNCgkJLy8gQ2FsY3VsYXRlIGFuZCBzYXZlIHN0YXRpc3RpYyBzdW1tYXJ5IGlmIG5ldyBtb250aA0KCQlpZiAoZGF0ZSgnWW0nKSA+ICRtZG1vbnRoKSB7DQoJCQkvLyBHZXQgb2xkIG1vbnRoDQoJCQkkbWRvbGRtb250aCA9IHN1YnN0cigkdGhpcy0+dGItPkdldFByZWZlcmVuY2UoJ21vbnRoJyksLTIpOw0KCQkJLy8gRGVsZXRlIG9sZCByb3cgZnJvbSBkYXRhYmFzZQ0KCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZ3N1bSBXSEVSRSBwZXJpb2QgPSA/IEFORCB2YWx1ZSA9ID8nLGFycmF5KCdtb250aCcsJG1kb2xkbW9udGgpKTsNCgkJCS8vIENhbGN1bGF0ZSBsb2cgc3VtbWFyeQ0KCQkJJG1kbG9nID0gJHRoaXMtPmRiLT5HZXRBbGwoJ1NFTEVDVCB1cmwscGFnZV9pZCx2aXNpdHMsc2VhcmNoZW5naW5lLGtleXdvcmQscmVmZXJlciBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9sb2dzdW0gV0hFUkUgcGVyaW9kID0gPycsIGFycmF5KCdkYXknKSk7DQoJCQlpZiAoJG1kbG9nKSAkdGhpcy0+TG9nU3VtKCRtZGxvZywnbW9udGgnLCRtZG9sZG1vbnRoKTsNCgkJCS8vIERlbGV0ZSBvbGQgZGF5cyBmcm9tIGRhdGFiYXNlDQoJCQkkcmVzID0gJHRoaXMtPmRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nc3VtIFdIRVJFIHBlcmlvZCA9ID8nLGFycmF5KCdkYXknKSk7DQoJCQkvLyBTZXQgbmV3IG1vbnRoDQoJCQkkdGhpcy0+dGItPlNldFByZWZlcmVuY2UoJ21vbnRoJyxkYXRlKCdZbScpKTsNCgkJfQ0KDQoJCS8vIENhbGN1bGF0ZSBhbmQgc2F2ZSBzdGF0aXN0aWMgc3VtbWFyeSBpZiBuZXcgZGF5DQoJCWlmIChkYXRlKCdZbWQnKSA+ICRtZGRheSkgew0KCQkJLy8gR2V0IG9sZCBtb250aA0KCQkJJG1kb2xkZGF5ID0gc3Vic3RyKCR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgnZGF5JyksLTIpOw0KCQkJLy8gRGVsZXRlIG9sZCByb3cgZnJvbSBkYXRhYmFzZQ0KCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZ3N1bSBXSEVSRSBwZXJpb2QgPSA/IEFORCB2YWx1ZSA9ID8nLGFycmF5KCdkYXknLCRtZG9sZGRheSkpOw0KCQkJLy8gQ2FsY3VsYXRlIGxvZyBzdW1tYXJ5DQoJCQkkbWRsb2cgPSAkdGhpcy0+ZGItPkdldEFsbCgnU0VMRUNUIHVybCxwYWdlX2lkLHNlYXJjaGVuZ2luZSxrZXl3b3JkLHJlZmVyZXIsREFURSh2aXNpdHRpbWUpIGFzIHZpc2l0ZGF0ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9sb2cnLGFycmF5KCkpOw0KCQkJaWYgKCRtZGxvZykgJHRoaXMtPkxvZ1N1bSgkbWRsb2csJ2RheScsJG1kb2xkZGF5KTsNCgkJCS8vIENsZWFyIGxvZyB0YWJsZQ0KCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2xvZycsYXJyYXkoKSk7DQoJCQkvLyBTZXQgbmV3IGRheQ0KCQkJJHRoaXMtPnRiLT5TZXRQcmVmZXJlbmNlKCdkYXknLGRhdGUoJ1ltZCcpKTsNCgkJfQ0KDQoJCS8vIFJldHVybiBkYXRhDQoJCXJldHVybiAkZGF0YTsNCg0KCX0NCg0KCS8qKg0KCSogTG9nIFZpc2l0IHRvIERhdGFiYXNlIChkYXRhIHdlcmUgcHJlcGFyZWQgaW4gUHJlcGFyZUxvZ1Zpc2l0KQ0KCSogQHBhcmFtIGFycmF5ICRkYXRhIEFycmF5IHdpdGggbG9nZ2luZyBkYXRhLg0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIExvZ1Zpc2l0KCRkYXRhLCR1cmw9JycsJHBhZ2U9MCkgew0KDQoJCS8vIENoZWNrIG1haW4gaW5wdXQgZmllbGRzDQoJCWlmICghaXNfYXJyYXkoJGRhdGEpIHx8ICF0cmltKCR1cmwpKSByZXR1cm4gZmFsc2U7DQoJCS8vIENoZWNrIGFycmF5IHZhbHVlcw0KCQkkcGFnZSA9IChpbnQpJHBhZ2U7DQoJCWlmICghaXNzZXQoJGRhdGFbJ3JlZmVyZXInXSkpICRkYXRhWydyZWZlcmVyJ10gPSAnJzsNCgkJaWYgKCFpc3NldCgkZGF0YVsnc2VhcmNoZW5naW5lJ10pKSAkZGF0YVsnc2VhcmNoZW5naW5lJ10gPSAnJzsNCgkJaWYgKCFpc3NldCgkZGF0YVsnYm90J10pKSAkZGF0YVsnYm90J10gPSAnJzsNCgkJaWYgKCFpc3NldCgkZGF0YVsna2V5d29yZCddKSkgJGRhdGFbJ2tleXdvcmQnXSA9ICcnOw0KDQoJCS8vIExvZyB2aXNpdCBmb3IgcmVmZXJlcg0KCQkkc3FsID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9sb2cgKHVybCwgcGFnZV9pZCwgcmVmZXJlciwgc2VhcmNoZW5naW5lLCBib3QsIGtleXdvcmQsIHNlc3Npb25pZCwgdmlzaXR0aW1lKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sIE5PVygpKSc7DQoJCSRyZXMgPSAkdGhpcy0+ZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkdXJsLCAkcGFnZSwgJGRhdGFbJ3JlZmVyZXInXSwgJGRhdGFbJ3NlYXJjaGVuZ2luZSddLCAkZGF0YVsnYm90J10sICRkYXRhWydrZXl3b3JkJ10sIHNlc3Npb25faWQoKSkpOw0KDQoJfQ0KDQoJLyoqDQoJKiBMb2dnaW5nIHZpc2l0cyB0byBkZWJ1ZyBpc3N1ZXMNCgkqIEByZXR1cm4gYXJyYXkNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBEZWJ1Z01EKCl7DQoJCS8vIEdldCByZWZlcmVyIChmcm9tdXJsKSBhbmQgdGFyZ2V0IHVybCAodG91cmwpDQoJCSRmcm9tdXJsID0gJHRoaXMtPnJlZmVyZXI7DQoJCSR0b3VybCA9ICR0aGlzLT5jb25maWdbJ3Jvb3RfdXJsJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107DQoJCS8vIEluc2VydCBhIG5ldyBkZWJ1Zw0KCQkkc3FsID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9kZWJ1ZyAoaXAsc2Vzc2lvbl9pZCxmcm9tdXJsLHRvdXJsLHN0YXR1cyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sPyw/LD8sTk9XKCksTk9XKCkpJzsNCgkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRfU0VSVkVSWydSRU1PVEVfQUREUiddLHNlc3Npb25faWQoKSwkZnJvbXVybCwkdG91cmwsJ29rJykpOw0KCQkvLyBHZXQgSUQgZnJvbSBsYXN0IGRlYnVnIGVudHJ5DQoJCWlmICgkcmVzKSAkdGhpcy0+ZGVidWdJZCA9IChpbnQpJHRoaXMtPmRiLT5HZXRPbmUoJ1NFTEVDVCBpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9kZWJ1ZyBXSEVSRSBzZXNzaW9uX2lkPT8gT1JERVIgQlkgbW9kaWZpZWRfZGF0ZSBERVNDIExJTUlUIDEnLCBhcnJheShzZXNzaW9uX2lkKCkpKTsNCgkJLy8gRGVsZXRlIG9sZCBkZWJ1ZyBtZXNzYWdlcw0KCQkkY291bnRkaWQgPSAoaW50KSR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgY291bnQoaWQpIGFzIGFuemFobCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9kZWJ1ZycsYXJyYXkoKSk7DQoJCWlmICgkY291bnRkaWQ+MTAwKSB7DQoJCQkkbWF4ZGlkID0gKGludCkkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIGlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnIE9SREVSIEJZIG1vZGlmaWVkX2RhdGUgREVTQyBMSU1JVCA5OSwxJywgYXJyYXkoKSk7DQoJCQkkcmVzID0gJHRoaXMtPmRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZGVidWcgV0hFUkUgaWQ8PycsYXJyYXkoJG1heGRpZCkpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJKiBSZWRpcmVjdHMgYW4gb2xkIFVSTCB0byBhbiBzcGVjaWZpZWQgcGFnZSAoc2VsZWN0YWJsZSBpbiB0aGUgbW9kdWxlIGJhY2tlbmQpLg0KCSogQHBhcmFtIGFycmF5ICRsb2cgUHJlcGFyZWQgbG9nIGRhdGEuDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gUmVkaXJlY3RVUkwoJGxvZykgew0KDQoJCS8vIFNldCB2YXJpYWJsZXMNCgkJJHJ1cmwgPSAnJzsNCgkJDQoJCS8vIEdldCBlcnJvcnBhZ2UgaWYgb25lIHdhcyBjcmVhdGVkDQoJCSRlNDA0ID0gJHRoaXMtPmRiLT5HZXRPbmUoJ1NFTEVDVCBjb250ZW50X2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgdHlwZT0iZXJyb3JwYWdlIicsIGFycmF5KCkpOw0KDQoJCS8vIENoZWNrLCB3aGV0aGVyIHBhZ2UgaXMgYSBub3QgZXhpc3RpbmcgTmV3cw0KCQkkaXNuZXdzID0gMTsNCgkJaWYgKCR0aGlzLT50Yi0+cGFnZUlkPj0wICYmIHByZWdfbWF0Y2goJy9eXFwvbmV3c1xcLyhcZCspXFwvKC4qKS8nLCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCRuZXdzaW5mbykpIHsNCgkJCSRuZXdzaWQgPSAoaW50KSRuZXdzaW5mb1sxXTsNCgkJCWlmICgkbmV3c2lkKSAkaXNuZXdzID0gJHRoaXMtPmRiLT5HZXRPbmUoJ1NFTEVDVCBuZXdzX2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9uZXdzIFdIRVJFIHN0YXR1cz0icHVibGlzaGVkIiBBTkQgbmV3c19pZD0/JywgYXJyYXkoJG5ld3NpZCkpOw0KCQl9DQoNCgkJLy8gTG9vayBmb3IgcmVkaXJlY3QgdXJscw0KCQkjZWNobyAkdGhpcy0+dGItPnBhZ2VJZC4nPGJyIC8+Jy4kZTQwNC4nPGJyIC8+Jy4kaXNuZXdzO2V4aXQ7DQoJCWlmICgkdGhpcy0+dGItPnBhZ2VJZDw9MCB8fCAoJGU0MDQgJiYgJHRoaXMtPnRiLT5wYWdlSWQ9PSRlNDA0KSB8fCAhJGlzbmV3cykgew0KDQoJCQkvLyBHZXQgcmVkaXJlY3QgdXJscw0KCQkJJHVybHMgPSAkdGhpcy0+ZGItPkdldEFsbCgnU0VMRUNUIHBhZ2VfaWQsdG91cmwsaWQsdXJsLHVybF9yZWdleHAgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfcmVkaXJlY3QgV0hFUkUgYWN0aXZlPTEgQU5EIChwYWdlX2lkPjAgT1IgdG91cmwhPSIiKScsYXJyYXkoKSk7DQoJCQkvLyBXYWxrIHRocm91Z2ggcmVkaXJlY3QgdXJscw0KCQkJaWYgKCR1cmxzKSB7DQoNCgkJCQkvLyBHZXQgcmVxdWVzdGV0IHVybA0KCQkJCSR1cmwgPSAkdGhpcy0+Y29uZmlnWydyb290X3VybCddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddOw0KCQkJCQ0KCQkJCXdoaWxlIChzdWJzdHIoJHVybCwtMSkgPT0gJy8nKSB7ICR1cmwgPSBzdWJzdHIoJHVybCwwLC0xKTsgfQ0KCQkJCS8vIExvb2sgZm9yIG1hdGNoZXMgb2YgdXJscw0KCQkJCWZvcmVhY2ggKCR1cmxzIGFzICR1KSB7DQoJCQkJCS8vIEdldCB0YXJnZXQgdXJsDQoJCQkJCXdoaWxlIChzdWJzdHIoJHVbJ3VybCddLC0xKSA9PSAnLycpIHsgJHVbJ3VybCddID0gc3Vic3RyKCR1Wyd1cmwnXSwwLC0xKTsgfQ0KCQkJCQkvLyBUZXN0IGlmIHVybCBtYXRjaGVzDQoJCQkJCSRyZWdleHBfbWF0Y2ggPSBmYWxzZTsNCgkJCQkJaWYgKCR1Wyd1cmxfcmVnZXhwJ10pIHsNCgkJCQkJCSR2cmVnZXhwID0gJy8nLnN0cl9yZXBsYWNlKCcvJywnXFwvJywkdVsndXJsJ10pLicvJzsNCgkJCQkJCWlmKHByZWdfbWF0Y2goJHZyZWdleHAsJHVybCkpICRyZWdleHBfbWF0Y2ggPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWlmICgkdXJsPT0kdVsndXJsJ10gfHwgJHJlZ2V4cF9tYXRjaCkgew0KCQkJCQkJLy8gR2V0IHRvdXJsLCBpZiBzZXQNCgkJCQkJCSR0b3VybCA9IHRyaW0oJHVbJ3RvdXJsJ10pID8gJHVbJ3RvdXJsJ10gOiAnJzsNCgkJCQkJCWlmICgkdG91cmwpICR1WydwYWdlX2lkJ10gPSAwOw0KCQkJCQkJLy8gQ2hlY2ssIGlmIHJlcXVlc3RlZCBwYWdlIGlzIHN0YW5kYXJkIHBhZ2UNCgkJCQkJCSRkZWZhdWx0ID0gZmFsc2U7DQoJCQkJCQlpZiAoJHVbJ3BhZ2VfaWQnXT4wICYmICEkdG91cmwpIHsgJGRlZmF1bHQgPSAkdVsncGFnZV9pZCddPT1jbXNtcygpLT5nZXRfdmFyaWFibGUoJ2RlZmF1bHRfY29udGVudF9pZCcpID8gdHJ1ZSA6IGZhbHNlOyB9DQoJCQkJCQkvLyBDYXNlLCBpZiBVUkxzIGZvciBwYWdlcyBhcmUgdXNlZA0KCQkJCQkJaWYgKCEkdG91cmwpIHsNCgkJCQkJCQkkcGFnZV91cmwgPSAkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIHBhZ2VfdXJsIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYWN0aXZlPTEgQU5EIGNvbnRlbnRfaWQ9PycsYXJyYXkoJHVbJ3BhZ2VfaWQnXSkpOw0KCQkJCQkJCWlmICgkcGFnZV91cmwpIHsNCgkJCQkJCQkJJHJ1cmwgPSAkZGVmYXVsdCA/ICR0aGlzLT5jb25maWdbJ3Jvb3RfdXJsJ10gOiAkdGhpcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kcGFnZV91cmw7DQoJCQkJCQkJCWlmICghJGRlZmF1bHQgJiYgISR0aGlzLT5jb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ10gfHwgJHRoaXMtPmNvbmZpZ1sncGFnZV9leHRlbnNpb24nXT09Jy8nKSAkcnVybC49Jy8nOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIENhc2UsIGlmIG9ubHkgYWxpYXNlcyBmb3IgcGFnZXMgYXJlIHVzZWQNCgkJCQkJCWlmICghJHJ1cmwgJiYgISR0b3VybCkgew0KCQkJCQkJCS8vIExvb2sgZm9yIGNvbnRlbnQgcGFnZSBwYXJlbnRzDQoJCQkJCQkJJHBhcmVudHMgPSBhcnJheSgpOw0KCQkJCQkJCSRwYXJlbnRzW10gPSAkdVsncGFnZV9pZCddOw0KCQkJCQkJCWlmICgkdGhpcy0+Y29uZmlnWyd1c2VfaGllcmFyY2h5J10pIHsNCgkJCQkJCQkJJHBhcmVudHRlbXAgPSAkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIHBhcmVudF9pZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGFjdGl2ZT0xIEFORCB0eXBlIT0ic2VjdGlvbmhlYWRlciIgQU5EIHR5cGUhPSJlcnJvcnBhZ2UiIEFORCB0eXBlIT0ic2VwYXJhdG9yIiBBTkQgY29udGVudF9pZCA9ID8nLCBhcnJheSgkdVsncGFnZV9pZCddKSk7DQoJCQkJCQkJCXdoaWxlICgkcGFyZW50dGVtcCA+IDApIHsNCgkJCQkJCQkJCSRwYXJlbnRzW10gPSAkcGFyZW50dGVtcDsNCgkJCQkJCQkJCSRwYXJlbnR0ZW1wID0gJHRoaXMtPmRiLT5HZXRPbmUoJ1NFTEVDVCBwYXJlbnRfaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBhY3RpdmU9MSBBTkQgdHlwZSE9InNlY3Rpb25oZWFkZXIiIEFORCB0eXBlIT0iZXJyb3JwYWdlIiBBTkQgdHlwZSE9InNlcGFyYXRvciIgQU5EIGNvbnRlbnRfaWQgPSA/JywgYXJyYXkoJHBhcmVudHRlbXApKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQlmb3JlYWNoICgkcGFyZW50cyBhcyAkcCkgew0KCQkJCQkJCQkkcnVybCA9ICR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgY29udGVudF9hbGlhcyBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGFjdGl2ZT0xIEFORCB0eXBlIT0ic2VjdGlvbmhlYWRlciIgQU5EIHR5cGUhPSJlcnJvcnBhZ2UiIEFORCB0eXBlIT0ic2VwYXJhdG9yIiBBTkQgY29udGVudF9pZCA9ID8nLCBhcnJheSgkcCkpLicvJy4kcnVybDsNCgkJCQkJCQl9DQoJCQkJCQkJLy8gQnVpbGQgdXJsDQoJCQkJCQkJaWYgKCRydXJsKSB7DQoJCQkJCQkJCXdoaWxlIChzdWJzdHIoJHJ1cmwsLTEpID09ICcvJykgeyAkcnVybCA9IHN1YnN0cigkcnVybCwwLC0xKTsgfQ0KCQkJCQkJCQlpZiAoJHJ1cmwpICRydXJsID0gJHJ1cmwuJHRoaXMtPmNvbmZpZ1sncGFnZV9leHRlbnNpb24nXTsgDQoJCQkJCQkJfQ0KCQkJCQkJCSRydXJsID0gJGRlZmF1bHQgPyAkdGhpcy0+Y29uZmlnWydyb290X3VybCddIDogJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJHJ1cmw7DQoJCQkJCQl9DQoJCQkJCQkvLyBMb2cgY3VycmVudCB2aXNpdA0KCQkJCQkJaWYgKCR0aGlzLT5sb2dnaW5nKSAkdGhpcy0+TG9nVmlzaXQoJGxvZywkdXJsLCR1WydwYWdlX2lkJ10pOw0KCQkJCQkJLy8gUmVkaXJlY3QNCgkJCQkJCWlmICghJHRvdXJsICYmICRydXJsIT0kdGhpcy0+aHR0cC4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIHsNCgkJCQkJCQlpZiAoJHRoaXMtPmRlYnVnSWQpIHsNCgkJCQkJCQkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnIFNFVCBtb2RpZmllZF9kYXRlPU5PVygpLCBzdGF0dXM9PyBXSEVSRSBpZD0/JzsNCgkJCQkJCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCczMDE6Jy4kcnVybCwkdGhpcy0+ZGVidWdJZCkpOw0KCQkJCQkJCX0NCgkJCQkJCQkkdGhpcy0+UmVkaXJlY3ROb3coJHJ1cmwpOw0KCQkJCQkJfSBlbHNlIGlmICgkdG91cmwgJiYgJHRvdXJsIT0kdGhpcy0+aHR0cC4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pIHsNCgkJCQkJCQlpZiAoJHRoaXMtPmRlYnVnSWQpIHsNCgkJCQkJCQkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnIFNFVCBtb2RpZmllZF9kYXRlPU5PVygpLCBzdGF0dXM9PyBXSEVSRSBpZD0/JzsNCgkJCQkJCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCczMDE6Jy4kdG91cmwsJHRoaXMtPmRlYnVnSWQpKTsNCgkJCQkJCQl9DQoJCQkJCQkJJHRoaXMtPlJlZGlyZWN0Tm93KCR0b3VybCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkqIExvZ3MgYW4gZXJyb3IgKGUuZy4gNDA0KS4NCgkqIEBwYXJhbSBhcnJheSAkbG9nIFByZXBhcmVkIGxvZyBkYXRhLg0KCSovDQoJZnVuY3Rpb24gTG9nRXJyb3IoJGxvZykgew0KDQoJCS8vIFNldCBnbG9iYWwgdmFycw0KCQkkaWQgPSAoaW50KSR0aGlzLT50Yi0+cGFnZUlkOw0KCQkNCgkJJHJlZGlyZWN0ID0gZmFsc2U7DQoJCSRkb21haW4gPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107DQoJCSR1cmwgPSAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCg0KCQkvLyBMb2cgZXJyb3JzICg0MDQpDQoJCSRlNDA0ID0gJHRoaXMtPmRiLT5HZXRPbmUoJ1NFTEVDVCBjb250ZW50X2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgdHlwZT0iZXJyb3JwYWdlIicsIGFycmF5KCkpOw0KCQkNCgkJLy8gTG9nIGVycm9ycyBpZiBpdCBpcyBvbmUNCgkJaWYgKCRpZDwwIHx8ICgkZTQwNCAmJiAkaWQ9PSRlNDA0KSkgew0KCQkJLy8gU2V0IERlYnVnIG1lc3NhZ2Ugc3RhdHVzIHRvIDQwNA0KCQkJaWYgKCR0aGlzLT5kZWJ1Z0lkKSB7DQoJCQkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnIFNFVCBtb2RpZmllZF9kYXRlPU5PVygpLCBzdGF0dXM9PyBXSEVSRSBpZD0/JzsNCgkJCQkkcmVzID0gJHRoaXMtPmRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJzQwNCcsJHRoaXMtPmRlYnVnSWQpKTsNCgkJCX0NCgkJCS8vIEdldCBpZ25vcmUgZmlsdGVycw0KCQkJJGVmaWx0ZXIgPSAkdGhpcy0+ZGItPkdldEFsbCgnU0VMRUNUIGlkLGl1cmwsaXJlZ2V4cCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnNfaWdub3JlJywgYXJyYXkoKSk7DQoJCQkvLyBHZXQgcmVmZXJlciAoZnJvbXVybCkgYW5kIHRhcmdldCB1cmwgKHRvdXJsKQ0KCQkJJGZyb211cmwgPSBpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pID8gJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddIDogJyc7DQoJCQkkdG91cmwgPSAkdGhpcy0+aHR0cC4kZG9tYWluLiR1cmw7DQoJCQkvLyBDaGVjayBmb3IgaWdub3JlIGZpbHRlcg0KCQkJJGlnbm9yZSA9IGZhbHNlOw0KCQkJZm9yZWFjaCAoJGVmaWx0ZXIgYXMgJGVmKSB7DQoJCQkJaWYgKCRlZlsnaXJlZ2V4cCddPjApIHsNCgkJCQkJJGlyZWdleHAgPSAnLycuc3RyX3JlcGxhY2UoJy8nLCdcXC8nLCRlZlsnaXVybCddKS4nLyc7DQoJCQkJCWlmIChwcmVnX21hdGNoKCRpcmVnZXhwLCR0b3VybCkpICRpZ25vcmUgPSB0cnVlOw0KCQkJCX0gZWxzZSBpZiAoJGVmWydpdXJsJ109PSR0b3VybCkgew0KCQkJCQkkaWdub3JlID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCQkNCgkJCWlmICghJGlnbm9yZSkgew0KCQkJCS8vIENoZWNrLCBpZiBlcnJvciBhbHJlYWR5IGV4aXN0cw0KCQkJCSRlcnJvcmV4aXN0cyA9ICR0aGlzLT5kYi0+R2V0Um93KCdTRUxFQ1QgaWQsZnJvbXVybCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9lcnJvcnMgV0hFUkUgdG91cmwgPSA/IEFORCBtb2RpZmllZF9kYXRlID4gVU5JWF9USU1FU1RBTVAoIE5PVygpIC0gNjAgKSBMSU1JVCAxJywgYXJyYXkoJHRvdXJsKSk7DQoJCQkJaWYgKCRlcnJvcmV4aXN0cykgew0KCQkJCQkkZXJyb3JpZCA9ICRlcnJvcmV4aXN0c1snaWQnXTsNCgkJCQkJJHRmcm9tdXJsID0gJGVycm9yZXhpc3RzWydmcm9tdXJsJ10gPyAkZXJyb3JleGlzdHNbJ2Zyb211cmwnXSA6ICcnOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRlcnJvcmlkID0gMDsNCgkJCQkJJHRmcm9tdXJsID0gJyc7DQoJCQkJfQ0KCQkJCS8vIFVwZGF0ZSBlcnJvciwgaWYgaXQgZXhpc3RzDQoJCQkJaWYgKCRlcnJvcmlkICYmICR0ZnJvbXVybD09JGZyb211cmwpIHsNCgkJCQkJJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycyBTRVQgdmlzaXRzID0gdmlzaXRzICsgMSwgbW9kaWZpZWRfZGF0ZT1OT1coKSBXSEVSRSBpZD0/JzsNCgkJCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRlcnJvcmlkKSk7DQoJCQkJLy8gSW5zZXJ0IGEgbmV3IGVycm9yDQoJCQkJfSBlbHNlIHsNCgkJCQkJJHNxbCA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzIChmcm9tdXJsLHRvdXJsLHZpc2l0cyxjcmVhdGVkX2RhdGUsbW9kaWZpZWRfZGF0ZSkgVkFMVUVTICg/LD8sMSxOT1coKSxOT1coKSknOw0KCQkJCQkkcmVzID0gJHRoaXMtPmRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGZyb211cmwsJHRvdXJsKSk7DQoJCQkJfQ0KCQkJCS8vIERlbGV0ZSBvbGQgZXJyb3JzDQoJCQkJJGNvdW50ZGlkID0gKGludCkkdGhpcy0+ZGItPkdldE9uZSgnU0VMRUNUIGNvdW50KGlkKSBhcyBhbnphaGwgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzJyxhcnJheSgpKTsNCgkJCQlpZiAoJGNvdW50ZGlkPjAgJiYgJGNvdW50ZGlkPihpbnQpJHRoaXMtPnRiLT5HZXRQcmVmZXJlbmNlKCdtYXhfNDA0JykpIHsNCgkJCQkJJG1heGRpZCA9ICR0aGlzLT5kYi0+R2V0T25lKCdTRUxFQ1QgaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzIE9SREVSIEJZIG1vZGlmaWVkX2RhdGUgREVTQyBMSU1JVCA/LDEnLCBhcnJheSgoaW50KSR0aGlzLT50Yi0+R2V0UHJlZmVyZW5jZSgnbWF4XzQwNCcpLTEpKTsNCgkJCQkJJHJlcyA9ICR0aGlzLT5kYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycyBXSEVSRSBpZDw/JyxhcnJheSgkbWF4ZGlkKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgl9DQoNCgkvKioNCgkqIFJlZGlyZWN0cyB0byBhIG5ldyBVUkwgYW5kIGFib3J0cyB0aGUgc2NyaXB0Lg0KCSogQHBhcmFtIHN0cmluZyAkdXJsIFVSTCB0byByZWRpcmVjdCB0byAuLi4NCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBSZWRpcmVjdE5vdygkdXJsKSB7DQoJCWlmICh0cmltKCR1cmwpKSB7DQoJCQkjZWNobyB0cmltKCR1cmwpO2V4aXQ7DQoJCQloZWFkZXIoJ0hUVFAvMS4xIDMwMSBNb3ZlZCBQZXJtYW5lbnRseScpOw0KCQkJaGVhZGVyKCdMb2NhdGlvbjogJy50cmltKCR1cmwpKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCX0NCg0KCQkNCgkNCgkNCgkNCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbTools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNb2R1bGU6CQlUb29sQm94ClRpdGxlOgkJRXh0ZW5kZWQgdG9vbHMgY2xhc3MKVmVyc2lvbjoJMS4yCkRlc2NyaXB0LjoJU21hcnR5LUV4dGVuc2lvbiBmb3Igc29tZSB1c2VmdWwgZnVuY3Rpb25zCkxhc3QgTW9kLjoJMDkuMTEuMjAxMgpBdXRob3I6CQlMdWthcyBCbGF0dGVyCkVtYWlsOgkJbHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaApOb3RlczoKTGljZW5jZToJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKCQkJaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKCQkJdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKCQkJKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCQkJSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCgkJCWFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQoJCQlpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCgkJCU1hZGUgU2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgoJCQlzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlLgoJCQlGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ01TIE1hZGUgU2ltcGxlIG9uIGl0cyB3ZWJzaXRlOgoJCQlodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnLwoJCQlUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKCQkJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKCQkJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQoJCQlHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoJCQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQoJCQlhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQoJCQlGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQoJCQlPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCmNsYXNzIHRiVG9vbHMKewoJcHJpdmF0ZSBzdGF0aWMgJF9pbnN0YW5jZTsKCQoJcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaW5zdGFuY2UoKQoJewoJCWlmKCFzZWxmOjokX2luc3RhbmNlKQoJCQlzZWxmOjokX2luc3RhbmNlID0gbmV3IHNlbGY7CgkJcmV0dXJuIHNlbGY6OiRfaW5zdGFuY2U7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJG1ldGhvZCwgJGFyZ3MpCgl7CgkJaWYgKCFtZXRob2RfZXhpc3RzKF9fQ0xBU1NfXywkbWV0aG9kKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9ICdtZXRob2QgXCcnIC4gX19DTEFTU19fIC4gJzo6JyAuICRtZXRob2QgLiAnXCcgaXMgdW5rbm93bi4nOwogICAgICAgICAgICBlY2hvICRtZXNzYWdlOwogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCRtZXNzYWdlLEVfVVNFUl9XQVJOSU5HICk7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCQkKCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoX19DTEFTU19fIC4gJzo6JyAuICRtZXRob2QsICRhcmdzKTsKCQkKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykKCXsKCQlpZiAoIW1ldGhvZF9leGlzdHMoX19DTEFTU19fLCRtZXRob2QpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gJ21ldGhvZCBcJycgLiBfX0NMQVNTX18gLiAnOjonIC4gJG1ldGhvZCAuICdcJyBpcyB1bmtub3duLic7CiAgICAgICAgICAgIGVjaG8gJG1lc3NhZ2U7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJG1lc3NhZ2UsRV9VU0VSX1dBUk5JTkcgKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoJCXJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheShfX0NMQVNTX18gLiAnOjonIC4gJG1ldGhvZCwgJGFyZ3MpOwoJfQoKCQoJCgkKCS8qKgoJICoKCSAqIFByw7xmdCwgb2IgZGVyIGFuZ2VnZWJlbmUgQWxpYXMgZWluZSBQYWdlSUQgaXN0IHVuZCBnaWJ0IGRlbiBBbGlhcyB6dXLDvGNrCgkgKiBAcGFyYW0gJGFsaWFzCgkgKiBAcmV0dXJuIHN0cmluZyAkYWxpYXMKCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIsIDIwLjEyLjIwMTEKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0QWxpYXMoJGFsaWFzKQoJewoJCSRnQ21zID0gY21zbXMoKTsKCgkJJG1hbmFnZXIgPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoJCSRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOwogICAgCWlmICghaXNzZXQoJG5vZGUpKSB7CgkJCSRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOwoJCQlpZiAoaXNzZXQoJG5vZGUpKQoJCQkJJGFsaWFzID0gJG5vZGUtPmdldF90YWcoJGFsaWFzKTsKCQkJZWxzZQoJCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgoJCXJldHVybiAkYWxpYXM7Cgl9CgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPnNlbGZfdXJsIGJ5IFJvYmVydCBDYW1wYmVsbAoJICogR2lidCBkaWUgYWt0dWVsbGUgU2VpdGVuLVVSTCB6dXLvv71jawoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduCgkgKiBAcmV0dXJuIHN0cmluZyAvIHNtYXJ0eSBhc3NpZ24KCSAqLwoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gc2VsZlVybCgkYXNzaWduPScnKQoJewoJCSRzID0gZW1wdHkoJF9TRVJWRVJbIkhUVFBTIl0pID8gJycgOiAoJF9TRVJWRVJbIkhUVFBTIl0gPT0gIm9uIikgPyAicyIgOiAiIjsKCQkkcCA9IHN0cnBvcygkX1NFUlZFUlsnU0VSVkVSX1BST1RPQ09MJ10sJy8nKTsKCQkkcHJvdG9jb2wgPSBzdHJ0b2xvd2VyKHN1YnN0cigkX1NFUlZFUlsnU0VSVkVSX1BST1RPQ09MJ10sMCwkcCkpLiRzOwoJCSRwb3J0ID0gKCRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdID09ICI4MCIpID8gIiIgOiAoIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdKTsKCQkkcyA9ICRwcm90b2NvbC4iOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kcG9ydDsKCgkJJHVybCA9ICRzLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwoJCWlmKCFlbXB0eSgkYXNzaWduKSkgewoJCQkkZ0NtcyA9IGNtc21zKCk7CgkJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCR1cmwpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiAkdXJsOwoJfQoJCgoKCS8qKgoJICogYmFzZWQgb24gJGNnc2ltcGxlLT5nZXRfcGFyZW50X2FsaWFzIGJ5IFJvYmVydCBDYW1wYmVsbAoJICogR2lidCBkZW4gQWxpYXMgZGVyIFBhcmVudCBQYWdlIG9kZXIgZGVuIEFsaWFzIGRlciBQYXJlbnQgUGFnZSBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSB6dXLvv71jawoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMKCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbgoJICovCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0UGFyZW50QWxpYXMoJGFsaWFzID0gJycsJGFzc2lnbiA9ICcnKQoJewoJCSRnQ21zID0gY21zbXMoKTsKCQkkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgoJCWlmKCAkYWxpYXMgPT0gJycgKSB7CgkJCSRhbGlhcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCdwYWdlX2FsaWFzJyk7CgkJfQoJCWVsc2UKCQkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsKCgkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzKTsKCQlpZiggIWlzX29iamVjdCgkY29udGVudCkgKSByZXR1cm4gJyc7CgoJCSRwYXJlbnRpZCA9ICRjb250ZW50LT5QYXJlbnRJZCgpOwoJCWlmKCAkcGFyZW50aWQgPD0gMCApIHJldHVybiAnJzsKCQkkYWxpYXMgPSAkY29udGVudG9wcy0+R2V0UGFnZUFsaWFzRnJvbUlkKCRwYXJlbnRpZCk7CgoJCWlmKCFlbXB0eSgkYXNzaWduKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkYWxpYXMpOwoJCQlyZXR1cm47CiAgICAJfQogIAkJcmV0dXJuICRhbGlhczsKCX0KCgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9yb290X2FsaWFzKCkgYnkgUm9iZXJ0IENhbXBiZWxsCgkgKiBnaWJ0IGRlbiBQYWdlIEFsaWFzIGRlciBSb290c2VpdGUgKG9iZXJzdGUgRWJlbmUpIGFrdHVlbGxlbiBvZGVyIGVpbmVyIGRlZmluaWVydGVuIFNlaXRlIHp1cu+/vWNrCgkgKiBAcGFyYW0gdW5rbm93bl90eXBlICRhbGlhcwoJICogQHBhcmFtIHVua25vd25fdHlwZSAkYXNzaWduCgkgKi8KCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFJvb3RBbGlhcygkYWxpYXMgPSAnJywkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCQl9CgkJZWxzZQoJCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKICAJCSRpZCA9ICRjb250ZW50b3BzLT5HZXRQYWdlSURGcm9tQWxpYXMoJGFsaWFzKTsKCQl3aGlsZSggJGlkID4gMCApIHsKCQkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGlkKTsKCQkJaWYoICFpc19vYmplY3QoICRjb250ZW50ICkgKSByZXR1cm4gJyc7CgkJCSRhbGlhcyA9ICRjb250ZW50LT5BbGlhcygpOwoJCQkkaWQgPSAkY29udGVudC0+UGFyZW50SWQoKTsKCQl9CgogICAgCWlmKCFlbXB0eSgkYXNzaWduKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkYWxpYXMpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiAkYWxpYXM7Cgl9CgoKCS8qKgoJICogZ2lidCBkZW4gUGFnZSBBbGlhcyBlaW5lciBQYXJlbnRzZWl0ZSBhdWYgZWluZW0gYmVzdGltbXRlbiBMZXZlbCBhdXMuCgkgKiBAY29weXJpZ2h0IEx1a2FzIEJsYXR0ZXIKCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24KCSAqIEByZXR1cm4gc3RyaW5nIC0gcGFnZSBhbGlhcwoJICovCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldExldmVsQWxpYXMoJGxldmVsLCAkYWxpYXMgPSAnJywkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCQl9CgkJZWxzZQoJCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKICAJCSRpZCA9ICRjb250ZW50b3BzLT5HZXRQYWdlSURGcm9tQWxpYXMoJGFsaWFzKTsKCQl3aGlsZSggJGlkID4gMCApIHsKCQkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGlkKTsKCQkJaWYoICFpc19vYmplY3QoICRjb250ZW50ICkgKSByZXR1cm4gJyc7CgoJCQkkcGFnZWxldmVsID0gc3Vic3RyX2NvdW50KCRjb250ZW50LT5IaWVyYXJjaHkoKSwnLicpICsgMTsKCQkJJGFsaWFzID0gJGNvbnRlbnQtPkFsaWFzKCk7CgkJCSRpZCA9ICRjb250ZW50LT5QYXJlbnRJZCgpOwoKCQkJaWYgKCRwYWdlbGV2ZWwgPT0gJGxldmVsKSB7CgkJCQlicmVhazsKCQkJfQoJCQllbHNlIGlmICgkcGFnZWxldmVsIDwgJGxldmVsKSB7CgkJCQlyZXR1cm4gJyc7CgkJCX0KCQl9CgogICAgCWlmKCFlbXB0eSgkYXNzaWduKSkgewoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkYWxpYXMpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiAkYWxpYXM7Cgl9CgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9wYWdlX3RpdGxlKCkgYnkgUm9iZXJ0IENhbXBiZWxsCgkgKiBHaWJ0IGRlbiBTZWl0ZW50aXRlbCBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSBvZGVyIGRlciBha3R1ZWxsZW4gU2VpdGUgenVy77+9Y2sKCSAqIEBwYXJhbSB1bmtub3duX3R5cGUgJGFsaWFzCgkgKiBAcGFyYW0gdW5rbm93bl90eXBlICRhc3NpZ24KCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFBhZ2VUaXRsZSgkYWxpYXMgPSAnJywkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCSAgICB9CgkgICAgZWxzZQoJCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKCQlpZighJGFsaWFzKSByZXR1cm4gJyc7CgoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7CgkJaWYoICFpc19vYmplY3QoJGNvbnRlbnQpICkgcmV0dXJuICcnOwoKCQlpZighZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGNvbnRlbnQtPk5hbWUoKSk7CgkJCXJldHVybjsKCSAgICB9CgkJcmV0dXJuICRjb250ZW50LT5OYW1lKCk7Cgl9CgoKCS8qKgoJICogYmFzZWQgb24gJGNnc2ltcGxlLT5nZXRfcGFnZV9tZW51dGV4dCgpIGJ5IFJvYmVydCBDYW1wYmVsbAoJICogR2lidCBkZW4gTWVudXRleHQgZWluZXIgYmVzdGltbXRlbiBTZWl0ZSBvZGVyIGRlciBha3R1ZWxsZW4gU2VpdGUgenVy77+9Y2sKCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24KCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFBhZ2VNZW51dGV4dCgkYWxpYXMgPSAnJywkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCQl9CgkgICAgZWxzZQoJCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKCQlpZighJGFsaWFzKSByZXR1cm4gZmFsc2U7CgoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7CgkJaWYoICFpc19vYmplY3QoJGNvbnRlbnQpICkgcmV0dXJuICcnOwoKCQlpZighZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGNvbnRlbnQtPk1lbnVUZXh0KCkpOwoJCQlyZXR1cm47CgkgICAgfQoJCXJldHVybiAkY29udGVudC0+TWVudVRleHQoKTsKCX0KCgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmhhc19jaGlsZHJlbigpIGJ5IFJvYmVydCBDYW1wYmVsbAoJICogSGF0IGVpbmUgZGVmaW5pZXJ0ZSBvZGVyIGRpZSBha3R1ZWxsZSBTZWl0ZSB3ZWl0ZXJlIFVudGVyc2VpdGVuPwoJICogQHBhcmFtICRhbGlhcwoJICogQHBhcmFtICRhc3NpZ24KCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGhhc0NoaWxkcmVuKCRhbGlhcyA9ICcnLCRhc3NpZ24gPSAnJykKCXsKCQkkcmVzdWx0ID0gZmFsc2U7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCSAgICB9CgkgICAgZWxzZQoJICAgIAkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKCSAgICBpZighJGFsaWFzKSByZXR1cm4gZmFsc2U7CgoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7CgkJaWYoaXNfb2JqZWN0KCRjb250ZW50KSApCgkJCSRyZXN1bHQgPSAkY29udGVudC0+SGFzQ2hpbGRyZW4oKTsKCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRyZXN1bHQpOwoJCQlyZXR1cm47CgkgICAgfQoJCXJldHVybiAkcmVzdWx0OwoJfQoKCgkvKioKCSAqIEdpYnQgZGVuIEFsaWFzIGRlciBlcnN0ZW4gQ2hpbGRzZWl0ZSBtaXQgSW5oYWx0IGF1cwoJICogQHBhcmFtIHN0cmluZyAkcGFyZW50YWxpYXMKCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbgoJICogQHBhcmFtIHN0cmluZyAkb25seUluTWVudQoJICogQGNvcHlyaWdodCBMdWthcyBCbGF0dGVyCgoJICovCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZEFsaWFzKCRwYXJlbnRhbGlhcyA9ICcnLCAkYXNzaWduID0gJycsICRvbmx5SW5NZW51PXRydWUpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKCQkkY2hpbGRyZW4gPSBzZWxmOjpnZXRDaGlsZHJlbigkcGFyZW50YWxpYXMpOwoKCQlpZiAoISRjaGlsZHJlbikgcmV0dXJuIGZhbHNlOwoKCQkkYWxpYXMgPSBmYWxzZTsKCQlmb3JlYWNoKCRjaGlsZHJlbiBhcyAkY2hpbGQpIHsKCQkJaWYgKCRjaGlsZFsndHlwZSddID09ICdlcnJvcnBhZ2UnKSBjb250aW51ZTsKCQkJZWxzZSBpZiAoJGNoaWxkWyd0eXBlJ10gPT0gJ3NlY3Rpb25oZWFkZXInIG9yICRjaGlsZFsndHlwZSddID09ICdzZXBhcmF0b3InIG9yICRjaGlsZFsndHlwZSddID09ICdsaW5rJykgewoJCQkJaWYgKHNlbGY6Omhhc0NoaWxkcmVuKCRjaGlsZFsnYWxpYXMnXSkpIHsKCQkJCQkkYWxpYXMgPSBzZWxmOjpnZXRGaXJzdENoaWxkQWxpYXMoJGNoaWxkWydhbGlhcyddLCcnLCRvbmx5SW5NZW51KTsKCQkJCQlpZiAoJGFsaWFzKSBicmVhazsKCQkJCX0KCQkJfQoJCQllbHNlIGlmICgkb25seUluTWVudSBhbmQgJGNoaWxkWydzaG93X2luX21lbnUnXSkgewoJCQkJJGFsaWFzID0gJGNoaWxkWydhbGlhcyddOwoJCQkJYnJlYWs7CgkJCX0KCQkJZWxzZSBpZiAoISRvbmx5SW5NZW51KSB7CgkJCQkkYWxpYXMgPSAkY2hpbGRbJ2FsaWFzJ107CgkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoISRhbGlhcykgcmV0dXJuIGZhbHNlOwoKCQlpZighZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGFsaWFzKTsKCQkJcmV0dXJuOwoJICAgIH0KCQlyZXR1cm4gJGFsaWFzOwoJfQoKCS8qKgoJICogR2lidCBkaWUgVVJMIGVpbmVyIGRlZmluaWVydGVuIFNlaXRlIGF1cwoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMKCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbgoJICogQGNvcHlyaWdodCBMdWthcyBCbGF0dGVyCgoJICovCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0UGFnZVVybCgkYWxpYXMgPSAnJywgJGFzc2lnbiA9ICcnKQoJewoJCSRnQ21zID0gY21zbXMoKTsKCQkkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgoJCWlmKCAkYWxpYXMgPT0gJycgKSB7CgkJCSRhbGlhcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCdwYWdlX2FsaWFzJyk7CgkJfQoJICAgIGVsc2UKCQkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsKCgkJaWYoISRhbGlhcykgcmV0dXJuIGZhbHNlOwoKCQkkY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcygkYWxpYXMpOwoJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIHJldHVybiAnJzsKCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRjb250ZW50LT5HZXRVUkwoKSk7CgkJCXJldHVybjsKCSAgICB9CgkJcmV0dXJuICRjb250ZW50LT5HZXRVUkwoKTsKCX0KCgkvKioKCSAqCgkgKiBHaWJ0IHp1csO8Y2sgb2IgZWluZSBiZXN0aW1tdGUgU2VpdGUgZGllIERlZmF1bHRzZWl0ZSBpc3QKCSAqIEBjb3B5cmlnaHQgTHVrYXMgQmxhdHRlcgoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMgLSBhbGlhcyBvciBpZCBvZiBhIHBhZ2UKCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbiAtIG5hbWUgb2YgYXNzaWduIHZhcmlhYmxlCgkgKi8KCglwcml2YXRlIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpc0RlZmF1bHRQYWdlKCRhbGlhcyA9ICcnLCAkYXNzaWduID0gJycpCgl7CgkJJGRlZmF1bHQgPSBmYWxzZTsKCQkkZ0NtcyA9IGNtc21zKCk7CgoJCSRhbGlhcyA9IHNlbGY6OmdldEFsaWFzKCRhbGlhcyk7CgkJaWYoISRhbGlhcykgcmV0dXJuIGZhbHNlOwoKCQkkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7CgkJaWYoIGlzX29iamVjdCgkY29udGVudCkgKSB7CgkJCSRkZWZhdWx0ID0gJGNvbnRlbnQtPkRlZmF1bHRDb250ZW50KCk7CgkJfQoKCQlpZighZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksJGRlZmF1bHQpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiAkZGVmYXVsdDsKCX0KCgkvKioKCSAqIGJhc2VkIG9uICRjZ3NpbXBsZS0+Z2V0X2NoaWxkcmVuKCkgYnkgUm9iZXJ0IENhbXBiZWxsCgkgKiBHaWJ0IGVpbmVyIEFycmF5IG1pdCBkZW4gUGFnZUlkcyBhbGxlciBDaGlsZCBTZWl0ZW4gZWluZXIgYmVzdGltbXRlbiBTZWl0ZSBvZGVyIGRlciBha3R1ZWxsZW4gU2VpdGUgenVy77+9Y2suCgkgKiBAcGFyYW0gc3RyaW5nICRhbGlhcwoJICogQHBhcmFtIGJvb2xlYW4gJHNob3dhbGwKCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbgoKCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldENoaWxkcmVuKCRhbGlhcyA9ICcnLCRzaG93YWxsID0gZmFsc2UsICRhc3NpZ24gPSAnJykKCXsKCQkkZ0NtcyA9IGNtc21zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRhbGlhcyA9PSAnJyApIHsKCQkJJGFsaWFzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoJ3BhZ2VfYWxpYXMnKTsKCQl9CgkJZWxzZQoJCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOwoKCQlpZighJGFsaWFzKSByZXR1cm4gZmFsc2U7CgoJCSRobSA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKCQkkcGFyZW50ID0gJGhtLT5nZXROb2RlQnlBbGlhcygkYWxpYXMpOwoJCWlmKCAhJHBhcmVudCApIHsgcmV0dXJuIGZhbHNlOyB9CgoJCSRjaGlsZF9ub2RlcyA9ICRwYXJlbnQtPmdldENoaWxkcmVuKGZhbHNlLCRzaG93YWxsKTsKCQlpZiggIWlzX2FycmF5KCRjaGlsZF9ub2RlcykgfHwgY291bnQoJGNoaWxkX25vZGVzKSA9PSAwICkgcmV0dXJuIGZhbHNlOwoKCQkkcmVzdWx0cyA9IGFycmF5KCk7CgkJZm9yZWFjaCggJGNoaWxkX25vZGVzIGFzICRub2RlICkgewoJCQkkY29udGVudCA9ICRub2RlLT5nZXRDb250ZW50KCk7CgkJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIGNvbnRpbnVlOwoKCQkJJHJvdyA9IGFycmF5KCdhbGlhcyc9PiRjb250ZW50LT5BbGlhcygpLCdpZCc9PiRjb250ZW50LT5JZCgpLAoJCSAgICAgJ3RpdGxlJz0+JGNvbnRlbnQtPk5hbWUoKSwnbWVudXRleHQnPT4kY29udGVudC0+TWVudVRleHQoKSwKCQkgICAgICdzaG93X2luX21lbnUnPT4kY29udGVudC0+U2hvd0luTWVudSgpLCd0eXBlJz0+JGNvbnRlbnQtPlR5cGUoKSk7CgkJCSRyZXN1bHRzW10gPSAkcm93OwoJCX0KCQlpZiggIWNvdW50KCRyZXN1bHRzKSApIHJldHVybiBmYWxzZTsKCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRyZXN1bHRzKTsKCQkJcmV0dXJuOwoJICAgIH0KCQlyZXR1cm4gJHJlc3VsdHM7Cgl9CgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9wYWdlX2NvbnRlbnQoKSBieSBjYWxndXkxMDAwCgkgKiBHaWJ0IGRlbiBJbmhhbHQgZWluZXMgYmVzdGltbXRlbiBDb250ZW50IEJsb2NrcyBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSB6dXLvv71jawoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMgLSBhbGlhcyBvciBpZCBvZiBhIHBhZ2UKCSAqIEBwYXJhbSBzdHJpbmcgJGJsb2NrIC0gbmFtZSBvZiB0aGUgY29udGVudGJsb2NrCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24gLSBuYW1lIG9mIGFzc2lnbiB2YXJpYWJsZQoJICovCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0UGFnZUNvbnRlbnQoJGFsaWFzLCAkYmxvY2sgPSAnJywkYXNzaWduID0gJycpCgl7CgkJJHJlc3VsdCA9IGZhbHNlOwoJCSRnQ21zID0gY21zbXMoKTsKCgkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsKCQlpZighJGFsaWFzKSByZXR1cm4gZmFsc2U7CgoJCSRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCgkJaWYoICRibG9jayA9PSAnJyApICRibG9jayA9ICdjb250ZW50X2VuJzsKCgkJaWYoICRhbGlhcyAhPSAnJyApIHsKCQkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzKTsKCQkJaWYoIGlzX29iamVjdCgkY29udGVudCkgKSB7CgkJCQkkcmVzdWx0ID0gJGNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrKTsKCQkJfQoJICAgIH0KCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLCRyZXN1bHQpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiAkcmVzdWx0OwoJfQoKCS8qKgoJICogSGF0IEJlcmVjaHRpZ3VuZyBpbiBkZW4gZGVmaW5pZXJ0ZW4gRkVVIFVzZXJHcm91cHMKCSAqIEBwYXJhbSBzdHJpbmcgJGZldWdyb3VwcwoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduCgkgKiBAcmV0dXJuIGJvb2xlYW4gdHJ1ZS9mYWxzZQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciwgMjAuMTIuMjAxMQoJICovCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gaGFzRmV1R3JvdXBBY2Nlc3MoJGZldWdyb3VwcyA9ICcnLCAkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgoJCWlmICghJGZldWdyb3VwcykgewoJCQlpZiAoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSxmYWxzZSk7CgkJCQlyZXR1cm47CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgoJCSRmZXVzZXJzID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CgoJCWlmICghJGZldWdyb3VwcyBvciAhaXNfT2JqZWN0KCRmZXVzZXJzKSkgewoJCQlpZiAoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSxmYWxzZSk7CgkJCQlyZXR1cm47CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJHVzZXJfaWQgPSAkZmV1c2Vycy0+TG9nZ2VkSW5JZCgpOwoJCSRncm91cHMgPSAkZmV1c2Vycy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJfaWQpOwoKCQkkZ25zID0gYXJyYXkoKTsKCQlpZigkZ3JvdXBzICE9PSBmYWxzZSApIHsKCQkgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkZ2lkICkgewoJCSAgICAgICAgJGduc1tdID0gJGdpZFsnZ3JvdXBpZCddOwoJCSAgICB9CgkJfQoKCQkkZmV1QXJyYXk9IGV4cGxvZGUoJywnLCRmZXVncm91cHMpOwoJCSRyZXR2YWwgPSBmYWxzZTsKCQlmb3JlYWNoICgkZmV1QXJyYXkgYXMgJGZldSkgewoJCQlpZiAoaW5fYXJyYXkoJGZldSwkZ25zKSkgewoJCQkJaWYgKCFlbXB0eSgkYXNzaWduKSkgewoJCQkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLHRydWUpOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfQoJCWlmICghZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksZmFsc2UpOwoJCQlyZXR1cm47CgkJfQoJCXJldHVybiBmYWxzZTsKCgl9Ly9pZgoKCS8qKgoJICogSXN0IGRlciBCZW51dHplciBlaW5nZWxvZ2d0CgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24KCSAqIEByZXR1cm4gaW50IHVzZXJfaWQKCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIsIDIwLjEyLjIwMTEKCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGlzTG9nZ2VkSW4oJGFzc2lnbiA9ICcnKQoJewoJCSRnQ21zID0gY21zbXMoKTsKCQkkc21hcnR5ID0gJGdDbXMtPkdldFNtYXJ0eSgpOwoJCSRmZXVzZXJzID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CgoJCWlmICghaXNfb2JqZWN0KCRmZXVzZXJzKSkgewoJCQlpZiAoIWVtcHR5KCRhc3NpZ24pKSB7CgkJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSxmYWxzZSk7CgkJCQlyZXR1cm47CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0vL2lmCgoJCSR1c2VyX2lkID0gJGZldXNlcnMtPkxvZ2dlZEluSWQoKTsKCgkJaWYgKCR1c2VyX2lkKSB7CgkJCWlmICghZW1wdHkoJGFzc2lnbikpIHsKCQkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLHRydWUpOwoJCQkJcmV0dXJuOwoJCQl9CgkJCXJldHVybiB0cnVlOwoJCX0vL2lmCgoJCWlmICghZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksZmFsc2UpOwoJCQlyZXR1cm47CgkJfS8vaWYKCQlyZXR1cm4gZmFsc2U7CgoJfS8vZnVuY3Rpb24KCgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9zaWxiaW5nKCkgYnkgUm9iZXJ0IENhbXBiZWxsCgkgKiBHZXQgcHJldiBzaWJsaW5nCgkgKiBAcGFyYW0gJGRpcgoJICogQHBhcmFtICRhc3NpZ24KCSAqIEBwYXJhbSAkYWxpYXMKCSAqLwoKCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFNpYmxpbmcoJGRpciwkYXNzaWduID0gJycsJGFsaWFzID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgkJJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCgkJaWYoIGVtcHR5KCRhbGlhcykgKSB7CgkJCSRhbGlhcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCdwYWdlX2FsaWFzJyk7CgkJfQoJCWVsc2UKCQkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsKCgkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzKTsKCQlpZiggIWlzX29iamVjdCgkY29udGVudCkgKSByZXR1cm4gZmFsc2U7CgoJCS8vIGdldCB0aGUgbGFzdCBpdGVtIG91dCBvZiB0aGUgaGllcmFyY2h5CgkJLy8gYW5kIHJlYnVpbGQKCQkkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfYWxpYXMgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudAoJCQkJICAgIFdIRVJFIHBhcmVudF9pZCA9ID8KCQkJCSAgICAgIEFORCBpdGVtX29yZGVyICVzID8KCQkJCSAgICAgIEFORCBhY3RpdmUgPSAxCgkJCQkgICAgT1JERVIgQlkgaXRlbV9vcmRlciAlcwoJCQkJICAgIExJTUlUIDEnOwoKCQlzd2l0Y2goc3RydG9sb3dlcigkZGlyKSkgewoJCQljYXNlICctMSc6CgkJCQljYXNlICdwcmV2JzoKCQkJCQkkdGhlY2hhciA9ICc8JzsKCQkJCQkkb3JkZXIgPSAnREVTQyc7CgkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSR0aGVjaGFyID0gJz4nOwoJCQkJCSRvcmRlciA9ICdBU0MnOwoJCQkJYnJlYWs7CgkJfS8vc3dpdGNoCgoJCSRyZXMgPSAkZGItPkdldE9uZShzcHJpbnRmKCRxdWVyeSwkdGhlY2hhciwkb3JkZXIpLAoJCWFycmF5KCRjb250ZW50LT5QYXJlbnRJZCgpLCRjb250ZW50LT5JdGVtT3JkZXIoKSkpOwoJCWlmKCAhZW1wdHkoJGFzc2lnbikgKSB7CgkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLCRyZXMpOwoJCQlyZXR1cm47CgkJfS8vaWYKCQlyZXR1cm4gJHJlczsKCX0vL2Z1bmN0aW9uCgoJLyoqCgkgKiBDcmVhdGVzIEhUTUwgdGFibGUgZnJvbSBtdWx0aWRpbWVuc2lvbmFsIGFycmF5CgkgKiBiYXNlZCBvbiBodHRwOi8vd3d3LnRlcnJhd2ViZGVzaWduLmNvbS9tdWx0aWRpbWVuc2lvbmFsLnBocAoJICoKCSAqIEBwYXJhbSBhcnJheSAkYXJyYXkKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0QXJyYXlBc1RhYmxlKCRhcnJheSkKCXsKCQkkYXJyYXkgPSBzZWxmOjpvYmplY3QyYXJyYXkoJGFycmF5KTsKCgkJJHRhYmxlID0gIjx0YWJsZT5cbiI7CgkJJHRhYmxlIC49IHNlbGY6OmdldEFycmF5QXNUYWJsZU1ha2VSb3dzKCRhcnJheSwgMSwgMCk7CgkJJHRhYmxlIC49ICI8L3RhYmxlPlxuIjsKCQlyZXR1cm4gJHRhYmxlOwoKCX0vL2Z1bmN0aW9uCgoJcHJvdGVjdGVkIGZpbmFsIGZ1bmN0aW9uIGdldEFycmF5QXNUYWJsZU1ha2VSb3dzKCRhcnJheSwgJGxldmVsLCAkc3ViKQoJewoJCSRzdHJpbmcgPSAiIjsKCgkJaWYgKGlzX2FycmF5KCRhcnJheSkgPT0gMSl7ICAgICAgICAgIC8vIGNoZWNrIGlmIGlucHV0IGlzIGFuIGFycmF5CgkJICAgICAgZm9yZWFjaCgkYXJyYXkgYXMgJGtleV92YWwgPT4gJHZhbHVlKSB7CgkJICAgICAgICAgICRvZmZzZXQgPSAiIjsKCgkJICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpID09IDEpeyAgIC8vIGFycmF5IGlzIG11bHRpZGltZW5zaW9uYWwKCQkgICAgICAgICAgCSRzdHJpbmcgLj0gIjx0cj4iOwoJCSAgICAgICAgICAJJG9mZnNldCA9IHNlbGY6OmdldEFycmF5QXNUYWJsZURvT2Zmc2V0KCRsZXZlbCk7CgkJICAgICAgICAgIAkkc3RyaW5nIC49ICRvZmZzZXQgLiAiPHRkIHZhbGlnbj0ndG9wJz4iIC4gJGtleV92YWwgLiAiPC90ZD4iOwoJCSAgICAgICAgICAJJHN0cmluZyAuPSBzZWxmOjpnZXRBcnJheUFzVGFibGVNYWtlUm93cygkdmFsdWUsICRsZXZlbCsxLCAxKTsKCQkgICAgICAgICAgfWVsc2V7ICAgICAgICAgICAgICAgICAgICAgIC8vKHN1YilhcnJheSBpcyBub3QgbXVsdGlkaW0KCQkgICAgICAgICAgCWlmICgkc3ViICE9IDEpeyAgICAgICAgICAvLyBmaXJzdCBlbnRyeSBmb3Igc3ViYXJyYXkKCQkgICAgICAgICAgICAgICRzdHJpbmcgLj0gIjx0cj4iOwoJCSAgICAgICAgICAgICAgJG9mZnNldCA9IHNlbGY6OmdldEFycmF5QXNUYWJsZURvT2Zmc2V0KCRsZXZlbCk7CgkJICAgICAgICAgIAl9CgkJICAgICAgICAgIAkkc3ViID0gMDsKCQkgICAgICAgICAgCSRzdHJpbmcgLj0gJG9mZnNldCAuICI8dGQgY2xhc3M9J3RoJyB2YWxpZ249J3RvcCc+IiAuICRrZXlfdmFsIC4KCQkgICAgICAgICAgICAgICI8L3RkPjx0ZCB2YWxpZ249J3RvcCc+IiAuICR2YWx1ZSAuICI8L3RkPiI7CgkJICAgICAgICAgIAkkc3RyaW5nIC49ICI8L3RyPlxuIjsKCQkgICAgICAgICAgfQoJCSAgICAgIH0gLy9mb3JlYWNoICRhcnJheQoJCSB9Ly9pZgoKCQlyZXR1cm4gJHN0cmluZzsKCgl9Ly9mdW5jdGlvbgoKCXByaXZhdGUgZmluYWwgZnVuY3Rpb24gZ2V0QXJyYXlBc1RhYmxlRG9PZmZzZXQoJGxldmVsKQoJewoJICAgICRvZmZzZXQgPSAiIjsgICAgICAgICAgICAgLy8gb2Zmc2V0IGZvciBzdWJhcnJ5CgkgICAgZm9yICgkaT0xOyAkaTwkbGV2ZWw7JGkrKyl7CgkgICAgJG9mZnNldCA9ICRvZmZzZXQgLiAiPHRkPjwvdGQ+IjsKCSAgICB9CgkgICAgcmV0dXJuICRvZmZzZXQ7Cgl9Ly9mdW5jdGlvbgoKCgoJLyoqCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9maWxlX2xpc3RpbmcoKSBieSBSb2JlcnQgQ2FtcGJlbGwKCSAqIEdpYnQgZGVuIEluaGFsdCBlaW5lcyBiZXN0aW1tdGVuIE9yZG5lcnMgaW4gZWluZW0gQXJyYXkgenVy77+9Y2sKCSAqIEBwYXJhbSBzdHJpbmcgJGRpcgoJICogQHBhcmFtIHN0cmluZyAkZXhjbHVkZXByZWZpeAoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduCgkgKi8KCglwcml2YXRlIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRGaWxlTGlzdGluZygkZGlyLCRleGNsdWRlcHJlZml4PScnLCRhc3NpZ24gPSAnJykKCXsKCQkkZ0NtcyA9IGNtc21zKCk7CgkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKCQkkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoKCQkkZmlsZXByZWZpeCA9ICcnOwoJCWlmKCAhZW1wdHkoJGV4Y2x1ZGVwcmVmaXgpICkgewoJCQkkZmlsZXByZWZpeCA9ICRleGNsdWRlcHJlZml4OwoJCX0KCQlpZiggc3RhcnRzd2l0aCgkZGlyLCcvJykgKSByZXR1cm47CgkJJGRpciA9IHRiVXRpbHM6OnRydWVwYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLiIvIi4kZGlyKTsKCQkkbGlzdCA9IGdldF9tYXRjaGluZ19maWxlcygkZGlyLCcnLHRydWUsdHJ1ZSwkZmlsZXByZWZpeCwxKTsKCQlpZiggIWVtcHR5KCRhc3NpZ24pICkgewoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkbGlzdCk7CgkJCXJldHVybjsKCQl9CgkJcmV0dXJuICRsaXN0OwoJfS8vZnVuY3Rpb24KCQoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0TGFzdE1vZGlmaWVkKCRhbGlhcyA9ICcnLCAkYXNzaWduID0gJycpCgl7CgkJJGdDbXMgPSBjbXNtcygpOwoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7CgkJJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCgkJaWYoIGVtcHR5KCRhbGlhcykgKSB7CgkJCSRhbGlhcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCdwYWdlX2FsaWFzJyk7CgkJfQoJCWVsc2UKCQkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsKCgkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzLHRydWUpOwoJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIHJldHVybiBmYWxzZTsKCQkKCQkkdGltZXN0YW1wID0gJGNvbnRlbnQtPkdldE1vZGlmaWVkRGF0ZSgpOwoKCQlpZighZW1wdHkoJGFzc2lnbikpIHsKCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksJHRpbWVzdGFtcCk7CgkJCXJldHVybjsKCQl9CgkJcmV0dXJuICR0aW1lc3RhbXA7Cgl9Ly8gZnVuY3Rpb24KCQoJCgkKfTsvLyBjbGFzcwoKLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbTwitterfeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KTW9kdWxlOgkJVG9vbEJveA0KVGl0bGU6CQl0d2l0dGVyZmVlZA0KVmVyc2lvbjoJMS4xDQpEZXNjcmlwdC46CWdldCBUd2l0dGVyZmVlZA0KTGFzdCBNb2QuOgkwMy4wOC4yMDEzDQpBdXRob3I6CQlMdWthcyBCbGF0dGVyDQpFbWFpbDoJCWx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2gNCkJhc2VkIG9uOgliaXJkZmVlZCBmcm9tIEJlbiBCb25vcmENCk5vdGVzOg0KTGljZW5jZToJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCgkJCWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQoJCQl0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KCQkJKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCgkJCUhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KCQkJYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQoJCQlpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQoJCQlNYWRlIFNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4NCgkJCXNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBTaW1wbGUuDQoJCQlGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ01TIE1hZGUgU2ltcGxlIG9uIGl0cyB3ZWJzaXRlOg0KCQkJaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy8NCgkJCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KCQkJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCgkJCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCgkJCUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQoJCQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KCQkJYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCgkJCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQoJCQlPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCmZpbmFsIGNsYXNzIHRiVHdpdHRlcmZlZWQgeyANCgkNCglwcml2YXRlIHN0YXRpYyAkX2RhdGVmb3JtYXQgPSAnZnJpZW5kbHknOw0KCXByaXZhdGUgc3RhdGljICRfcGFyc2VMaW5rcyAgID0gdHJ1ZTsNCglwcml2YXRlIHN0YXRpYyAkX2RiOw0KCXByaXZhdGUgc3RhdGljICRfbG9nOw0KCXByaXZhdGUgc3RhdGljICRfdG9vbGJveDsNCg0KCXByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQ0KCXByaXZhdGUgZnVuY3Rpb24gX19jbG9uZSgpIHt9DQoNCgkvKioNCgkgKiANCgkgKiBDaGVjayBpZiBDdXJsIGlzIGVuYWJsZWQNCgkgKi8JDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpc0N1cmxFbmFibGVkKCkgew0KCQlpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ2N1cmwnKSkNCgkJCXJldHVybiBmYWxzZTsNCgkJcmV0dXJuIHRydWU7DQoJfQ0KCQ0KCQ0KCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgZnVuY3Rpb24gdG9vbGJveCgpDQoJew0KCQlpZiAoIWlzX29iamVjdChzZWxmOjokX3Rvb2xib3gpKQ0KCQkJc2VsZjo6JF90b29sYm94ID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUb29sQm94Jyk7DQoJCQkNCgkJcmV0dXJuIAlzZWxmOjokX3Rvb2xib3g7DQoJfQ0KCQ0KCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgZnVuY3Rpb24gJiBnZXREYigpDQoJew0KCQlpZiAoIWlzX29iamVjdChzZWxmOjokX2RiKSkgc2VsZjo6JF9kYiA9ICYgY21zbXMoKS0+R2V0RGIoKTsNCgkJcmV0dXJuIHNlbGY6OiRfZGI7IA0KCX0NCgkNCglwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGxvZygkdHh0KQ0KCXsNCgkJaWYgKCFpc19vYmplY3Qoc2VsZjo6JF9sb2cpKSB7DQoJCQlzZWxmOjokX2xvZyA9IHNlbGY6OnRvb2xib3goKTsNCgkJCXNlbGY6OiRfbG9nLT5zZXRMb2dGaWxlKCd0YlR3aXR0ZXJmZWVkJyk7CQ0KCQl9DQoJCXNlbGY6OiRfbG9nLT5sd3JpdGUoJHR4dCk7DQoJfQ0KCQ0KCQ0KCXByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZ2V0U2Vjb25kQmV0d2VlbkRhdGUoJGRhdGUxLCRkYXRlMikNCgl7DQoJCSR0aW1lRmlyc3QgID0gc3RydG90aW1lKCRkYXRlMSk7DQoJCSR0aW1lU2Vjb25kID0gc3RydG90aW1lKCRkYXRlMik7DQoJCSRkaWZmZXJlbmNlSW5TZWNvbmRzID0gJHRpbWVTZWNvbmQgLSAkdGltZUZpcnN0Ow0KDQoJCXJldHVybiAkZGlmZmVyZW5jZUluU2Vjb25kczsNCgl9DQoJDQoJLyoqDQoJICogDQoJICogRmV0Y2ggRmVlZCB2aWEgQ3VybCBvZGVyIGZpbGVfZ2V0X2NvbnRlbnRzDQoJICogQHBhcmFtIHN0cmluZyAkdXJsIC0gVHdpdHRlciBBUEkgVVJMIGlua2wuIFBhcmFtZXRlcg0KCSAqIEByZXR1cm4ganNvbiAvIGZhbHNlDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBmZXRjaEZlZWQoJHVybCwkcGFyYW1zKSANCgl7DQoJCSRtb2QgPSBzZWxmOjp0b29sYm94KCk7DQoJCQ0KCQkkdG9rZW4gPSBiYXNlNjRfZGVjb2RlKCRtb2QtPkdldFByZWZlcmVuY2UoJ3R3aXR0ZXJmZWVkX3Rva2VuJykpOw0KCQkkcXVlcnkgPSAkdXJsLic/Jy5odHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOw0KCQkkY3VybCA9IGN1cmxfaW5pdCgpOw0KCQljdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICRxdWVyeSk7DQoJCWN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCgkJY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgYXJyYXkoJ0F1dGhvcml6YXRpb246IEJlYXJlciAnIC4gJHRva2VuKSk7DQoJCSRyZXN1bHQgPSBjdXJsX2V4ZWMoJGN1cmwpOw0KCQljdXJsX2Nsb3NlKCRjdXJsKTsNCgkJcmV0dXJuIGpzb25fZGVjb2RlKCRyZXN1bHQpOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBQYXJzZWQgZGllIFR3aXR0ZXJsaW5rcw0KCSAqIGJ5IGh0dHA6Ly90b3NjaG8uZGUvMjAxMC90d2l0dGVyLWVpbmVuLXR3ZWV0LWZvcm1hdGllcmVuLw0KCSAqIEBwYXJhbSAkc3RyDQoJICogQHJldHVybiBzdHJpbmcNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHBhcnNlVHdpdHRlckxpbmtzKCRzdHIpIA0KCXsNCgkJJHVyaV9zY2hlbWVzID0gYXJyYXkgKCdtYWlsdG8nLCAnbmV3cycsICdubnRwJywgJ2NhbGx0bycsICdlZDJrJywgJ2lyYycsICdzc2gnLCAnc3ZuJywncz9mdHBzPycsICdodHRwcz8nICk7DQogICAgCSRyZWdleFsndXJsJ10gPSAnKCcgLiBpbXBsb2RlKCd8JywgJHVyaV9zY2hlbWVzKS4gJyk6Ly8oWy1cd1wuXSspKyg6XGQrKT8oLyhbXHcvX1wuXSooXD9cUyspPyk/KT8nOw0KICAgIAkkcmVnZXhbJ3VzZXJuYW1lJ10gPSAiQChbYS16QS1aX1xkXSspIjsNCiAgICAJJHJlZ2V4WydoYXNodGFnJ10gID0gIihbXlxwTF0pezAsMX0oIyhbLV9ccExcZF0rKSkiOw0KDQoJICAgIC8vIEh5cGVybGlua3MgdW13YW5kZWxuDQoJICAgICRzdHIgPSBwcmVnX3JlcGxhY2UoJ34nIC4gJHJlZ2V4Wyd1cmwnXSAuICd+dScsICc8YSBocmVmPSIkezB9IiB0YXJnZXQ9Il9ibGFuayI+JHswfTwvYT4gJywgJHN0cik7DQoJICAgIC8vIFVzZXJuYW1lbiB2ZXJsaW5rZW4NCgkgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnficgLiAkcmVnZXhbJ3VzZXJuYW1lJ10gLiAnfnUnLCc8YSBjbGFzcz0idHd1c2VyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS8kezF9Ij4kezB9PC9hPicsJHN0cik7DQoJICAgIC8vIEhhc2h0YWdzIHZlcmxpbmtlbg0KCSAgICAkc3RyID0gcHJlZ19yZXBsYWNlKCd+JyAuICRyZWdleFsnaGFzaHRhZyddIC4gJ351JywnICR7MX08YSBjbGFzcz0iaGFzaHRhZyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vc2VhcmNoP3E9JTIzJHszfSI+JHsyfTwvYT4nLCRzdHIpOw0KCQ0KCSAgICByZXR1cm4gJHN0cjsNCgl9DQoNCgkvKioNCgkgKiANCgkgKiBQYXJzZWQgZGFzIERhdHVtIGRlcyBFaW50cmFnZXMNCgkgKiBAcGFyYW0gJGRhdGUgLSBEYXR1bSBkZXMgRmVlZC1FaW50cmFnZXMNCgkgKiBAcGFyYW0gJGRhdGVmb3JtYXQgLSBGb3JtYXQgaW4gd2VsY2hlcyBkYXMgRGF0dW0gdW1nZXdhbmRlbHQgd2VyZGVuIHNvbGw6IGZyaWVuZGx5ID0gRGF0dW0gaW4gRm9ybSB2b24gIjIgZGF5cyBhZ28iOyBBbHRlcm5hdGl2ZSBkLm0uWSBIOm06cyAtLT4gc2llaGUgRGF0ZVRpbWUgRG9rdW1lbnRhdGlvbg0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBwYXJzZURhdGUoJGRhdGUsJGRhdGVmb3JtYXQpIHsNCgkJDQoJCS8vIGN1cnJlbnQgZGF0ZXRpbWUNCgkJJG5vdyA9IG5ldyBEYXRlVGltZSgpOw0KCQ0KCQkkc3RpbWUgPSBuZXcgRGF0ZVRpbWUoJGRhdGUpOw0KCQ0KCQlpZiAoJGRhdGVmb3JtYXQ9PSAnZnJpZW5kbHknKSB7DQoJDQoJCQkvLyBmcmllbmRseSBkYXRlIGZvcm1hdA0KCQkJJGl2YWwgPSAkbm93LT5kaWZmKCRzdGltZSk7DQoJCQkJCQ0KCQkJJHlyID0gJGl2YWwtPnk7DQoJCQkkbWggPSAkaXZhbC0+bSArICgkaXZhbC0+ZCA+IDE1KTsNCgkJCWlmICgkbWggPiAxMSkgJHlyID0gMTsNCgkJCSRkeSA9ICRpdmFsLT5kICsgKCRpdmFsLT5oID4gMTUpOw0KCQkJJGhyID0gJGl2YWwtPmg7DQoJCQkkbW4gPSAkaXZhbC0+aSArICgkaXZhbC0+cyA+IDI5KTsNCgkJCQkJDQoJCQlpZiAoJHlyID4gMCkgew0KCQkJCWlmICgkeXIgPT0gMSkgJGRhdGUgPSAnbGFzdCB5ZWFyJzsNCgkJCQllbHNlICRkYXRlID0gJHlyIC4gJyB5ZWFycyBhZ28nOw0KCQkJfQ0KCQkJZWxzZSBpZiAoJG1oID4gMCkgew0KCQkJCWlmICgkbWggPT0gMSkgJGRhdGUgPSAnbGFzdCBtb250aCc7DQoJCQkJZWxzZSAkZGF0ZSA9ICRtaCAuICcgbW9udGhzIGFnbyc7DQoJCQl9DQoJCQllbHNlIGlmICgkZHkgPiAwKSB7DQoJCQkJaWYgKCRkeSA9PSAxKSAkZGF0ZSA9ICd5ZXN0ZXJkYXknOw0KCQkJCWVsc2UgaWYgKCRkeSA8IDgpICRkYXRlID0gJGR5IC4gJyBkYXlzIGFnbyc7DQoJCQkJZWxzZSBpZiAoJGR5IDwgMTUpICRkYXRlID0gJ2xhc3Qgd2Vlayc7DQoJCQkJZWxzZSAkZGF0ZSA9IHJvdW5kKCRkeSAvIDcpIC4gJyB3ZWVrcyBhZ28nOw0KCQkJfQ0KCQkJZWxzZSBpZiAoJGhyID4gMCkgew0KCQkJCSRociArPSAoJGl2YWwtPmkgPiAyOSk7DQoJCQkJJGRhdGUgPSAkaHIgLiAnIGhvdXInIC4gKCRociA9PSAxID8gJycgOiAncycpIC4gJyBhZ28nOw0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJaWYgKCRtbiA8IDMpICRkYXRlID0gJ2p1c3Qgbm93JzsNCgkJCQllbHNlICRkYXRlID0gJG1uIC4gJyBtaW51dGVzIGFnbyc7DQoJCQl9DQoJDQoJCX0NCgkJZWxzZSB7DQoJCQkvLyBzdGFuZGFyZCBQSFAgZGF0ZSBmb3JtYXQNCgkJCSRkYXRlID0gJHN0aW1lLT5mb3JtYXQoJGRhdGVmb3JtYXQpOw0KCQl9DQoJDQoJCXJldHVybiAkZGF0ZTsNCgl9DQoJDQoJDQoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0RmVlZEZyb21EYigkaGFzaCwgJGNvdW50LCRkYXRlZm9ybWF0ID0gJ2ZyaWVuZGx5JykNCgl7DQoJCS8vc2VsZjo6bG9nKCJnZXRGZWVkRnJvbURCIik7DQoJCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF90dyB3aGVyZSBoYXNoID0gPyBvcmRlciBieSBpZCBkZXNjIGxpbWl0ID8gJzsNCgkJJHR3ZWV0cyA9IHNlbGY6OmdldERiKCktPkdldEFycmF5KCRxdWVyeSxhcnJheSgkaGFzaCwkY291bnQpKTsNCgkJDQoJCWZvcmVhY2ggKCR0d2VldHMgYXMgJHR3ZWV0KSB7DQoJCQkkcm93ID0gbmV3IHN0ZENsYXNzKCk7DQoJCQkkcm93LT5pZCA9ICR0d2VldFsnaWQnXTsNCgkJCSRkYXRlID0gZGF0ZSgiWS1tLWQgSDppOnMiLCBzdHJ0b3RpbWUoJHR3ZWV0Wyd0d2RhdGUnXS4nIEdNVCcpKTsNCgkJCSRyb3ctPmRhdGUgPSAgc2VsZjo6cGFyc2VEYXRlKCRkYXRlLCdmcmllbmRseScpOw0KCQkJJHJvdy0+cmF3ZGF0ZSA9ICR0d2VldFsnY3JlYXRlZF9hdCddOw0KCQkJJHJvdy0+dGV4dCA9IHNlbGY6OnBhcnNlVHdpdHRlckxpbmtzKCR0d2VldFsndGV4dCddKTsNCgkJCSRyb3ctPmltZ191cmwgPSAkdHdlZXRbJ2ltZ191cmwnXTsNCgkJCSRyb3ctPmltZ191cmxfaHR0cHMgPSAkdHdlZXRbJ2ltZ191cmxfaHR0cHMnXTsNCgkJCSRyb3ctPmF1dGhvciA9ICR0d2VldFsnYXV0aG9yJ107DQoJCQkkcm93LT5zY3JlZW5uYW1lID0gJHR3ZWV0WydzY3JlZW5uYW1lJ107DQoJCQkkcm93LT5zY3JlZW5uYW1lX3VybCA9ICR0d2VldFsnc2NyZWVubmFtZV91cmwnXTsNCgkJCSRyb3ctPnNvdXJjZSA9ICR0d2VldFsnc291cmNlJ107DQoJCQkkcm93LT5sb2NhdGlvbiA9ICR0d2VldFsnbG9jYXRpb24nXTsNCgkJCSRyb3ctPnJldHdlZXRfY291bnQgPSAkdHdlZXRbJ3JldHdlZXRfY291bnQnXTsNCgkJCSRyb3ctPmZhdm9yaXRlZCA9ICR0d2VldFsnZmF2b3JpdGVkJ107DQoJCQkkcm93LT5yZXR3ZWV0X3NjcmVlbm5hbWUgPSAnJzsNCgkJCSRyb3ctPnJldHdlZXRfYXV0aG9yID0gJyc7DQoJCQkNCgkJCWlmICgkdHdlZXRbJ3JldHdlZXRfaWQnXSkgew0KCQkJCSRyb3ctPnRleHQgPSBzZWxmOjpwYXJzZVR3aXR0ZXJsaW5rcygkdHdlZXRbJ3JldHdlZXRfdGV4dCddKTsNCgkJCQkkcm93LT5zb3VyY2UgPSAkdHdlZXRbJ3JldHdlZXRfc291cmNlJ107DQoJCQkJJHJvdy0+c2NyZWVubmFtZSA9ICR0d2VldFsncmV0d2VldF9zY3JlZW5uYW1lJ107DQoJCQkJJHJvdy0+YXV0aG9yID0gJHR3ZWV0WydyZXR3ZWV0X3NjcmVlbm5hbWUnXTsNCgkJCQkkcm93LT5zY3JlZW5uYW1lX3VybCA9ICR0d2VldFsncmV0d2VldF9zY3JlZW5uYW1lX3VybCddOw0KCQkJCSRyb3ctPmltZ191cmwgPSAkdHdlZXRbJ3JldHdlZXRfaW1nX3VybCddOw0KCQkJCSRyb3ctPmltZ191cmxfaHR0cHMgPSAkdHdlZXRbJ3JldHdlZXRfaW1nX3VybF9odHRwcyddOw0KCQkJCSRyb3ctPnJldHdlZXRfc2NyZWVubmFtZSA9ICR0d2VldFsnc2NyZWVubmFtZSddOw0KCQkJCSRyb3ctPnJldHdlZXRfYXV0aG9yID0gJHR3ZWV0WydhdXRob3InXTsNCgkJCX0NCgkJCQ0KCQkJJHJvdy0+ZGF0ZV9saW5rID0gJzxhIGNsYXNzPSJ0d2VldC10aW1lc3RhbXAgdHdlZXQtcG9wdXAiIGhyZWY9IicuJHJvdy0+c2NyZWVubmFtZV91cmwuJy9zdGF0dXMvJy4kcm93LT5pZC4nIiB0aW1lPSInLiRyb3ctPnJhd2RhdGUuJyIgdGFyZ2V0PSJfYmxhbmsiPicuc2VsZjo6cGFyc2VEYXRlKCRkYXRlLCdmcmllbmRseScpLic8L2E+JzsNCgkJCSRyb3ctPnJlcGx5X2xpbmsgPSAnPGEgY2xhc3M9InR3ZWV0LXJlcGx5IHR3ZWV0LXBvcHVwIiBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD9pbl9yZXBseV90bz0nLiRyb3ctPmlkLiciIHRhcmdldD0iX2JsYW5rIj5yZXBseTwvYT4nOw0KCQkJJHJvdy0+cmV0d2VldF9saW5rID0gJzxhIGNsYXNzPSJ0d2VldC1ydCB0d2VldC1wb3B1cCIgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvcmV0d2VldD90d2VldF9pZD0nLiRyb3ctPmlkLiciIHRhcmdldD0iX2JsYW5rIj5yZXR3ZWV0PC9hPic7DQoJCQkkcm93LT5mYXZvcml0ZV9saW5rID0gJzxhIGNsYXNzPSJ0d2VldC1mYXYgdHdlZXQtcG9wdXAiIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L2Zhdm9yaXRlP3R3ZWV0X2lkPScuJHJvdy0+aWQuJyIgdGFyZ2V0PSJfYmxhbmsiPmZhdm9yaXRlPC9hPic7DQoJCQkNCgkJCSRyb3ctPnJlcGx5X3Jhd2xpbmsgPSAiaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/aW5fcmVwbHlfdG89Ii4kcm93LT5pZDsNCgkJCSRyb3ctPnJldHdlZXRfcmF3bGluayA9ICJodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC9yZXR3ZWV0P3R3ZWV0X2lkPSIuJHJvdy0+aWQ7DQoJCQkkcm93LT5mYXZvcml0ZV9yYXdsaW5rID0gImh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L2Zhdm9yaXRlP3R3ZWV0X2lkPSIuJHJvdy0+aWQ7DQoJCQkNCgkJCSRlbnRyeXNbXSA9ICRyb3c7DQoJCX0NCgkJcmV0dXJuICRlbnRyeXM7DQoJfQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEhvbHQgZGllIGlkIGRlcyBsZXR6dGVuIFR3ZWV0cw0KCSAqIEBwYXJhbSAkaGFzaA0KCSAqIHJldHVybiBzdHJpbmcgDQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRMYXN0VHdlZXQoJGhhc2gpDQoJew0KCQlyZXR1cm4gc2VsZjo6Z2V0RGIoKS0+R2V0T25lKCdzZWxlY3QgaWQgZnJvbSAnIC5jbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdHcgd2hlcmUgaGFzaCA9ID8gb3JkZXIgYnkgdHdkYXRlIGRlc2MiLGFycmF5KCRoYXNoKSk7DQoJfQ0KCQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEJlcmVpdGV0IGRlbiBUd2l0dGVyZmVlZCBhdWYNCgkgKiBAcGFyYW0gJGhhc2ggLSBIYXNoIGRlciBBYmZyYWdlDQoJICogQHBhcmFtICR1cmwgLSBVUkwgZGVyIFR3aXR0ZXJhcGkNCgkgKiBAcGFyYW0gJGNvdW50IC0gQW56YWhsIGRlciBUd2VldHMNCgkgKiBAcGFyYW0gJGNhY2hldGltZSAtIFplaXQgaW4gU2VrdW5kZW4gbmFjaCBkZW5lbiBkaWUgU3VjaGUgYWt0dWFsaXNpZXJ0IHdpcmQNCgkgKiBAcmV0dXJuIGFycmF5DQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRUd2l0dGVyU3RyZWFtKCRoYXNoLCAkdXJsLCAkcGFyYW1zLCAkY291bnQsICRjYWNoZXRpbWUpDQoJew0KCQkkbGFzdHVwZGF0ZSA9IHNlbGY6OmdldERiKCktPkdldE9uZSgnc2VsZWN0IHRpbWVzdGFtcCBmcm9tICcgLmNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfdG9vbGJveF90d3VwZGF0ZSB3aGVyZSBoYXNoID0gPycsYXJyYXkoJGhhc2gpKTsNCg0KCQkkbm93ID0gZGF0ZSgiWS1tLWQgSDppOnMiKTsNCgkJDQoJCWlmICghJGxhc3R1cGRhdGUgb3Igc2VsZjo6Z2V0U2Vjb25kQmV0d2VlbkRhdGUoJGxhc3R1cGRhdGUsICRub3cpID4gJGNhY2hldGltZSApIHsNCgkJIAkkanNvbiA9IHNlbGY6OmZldGNoRmVlZCgkdXJsLCRwYXJhbXMpOw0KCQkgCXNlbGY6OnN0b3JlRGF0YSgkanNvbiwgJGhhc2gpOw0KCQl9DQoJCQkNCgkJcmV0dXJuIHNlbGY6OmdldEZlZWRGcm9tRGIoJGhhc2gsICRjb3VudCwgJGRhdGVmb3JtYXQpOwkNCgl9DQoJDQoJDQoJDQoJDQoJLyoqDQoJICogDQoJICogV2VydGV0IGRlbiBUd2l0dGVyZmVlZCBhdXMgdW5kIGdpYnQgaW4gYWxzIHN0ZENsYXNzIEFycmF5IHp1csO8Y2sNCgkgKiBAcGFyYW0ganNvbiBhcnJheSAkanNvbg0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHN0b3JlRGF0YSgkanNvbiwkaGFzaCkNCgl7DQoJCWlmIChpc3NldCgkanNvbi0+ZXJyb3IpKSB7DQoJCQkvL3NlbGY6OmxvZygic3RvcmVEYXRhIC0ganNvbi0+ZXJyb3IgPSAiIC4gJGpzb24tPmVycm9yKTsJCQkNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJJGVudHJ5cyA9IGFycmF5KCk7DQoJCQ0KCQkkaXNTZWFyY2g9IGlzc2V0KCRqc29uLT5zZWFyY2hfbWV0YWRhdGEpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkanNvbmFycmF5ID0gJGlzU2VhcmNoID8gJGpzb24tPnN0YXR1c2VzIDogJGpzb247DQoJCQ0KCQlmb3JlYWNoKCRqc29uYXJyYXkgYXMgJGtleSA9PiAkaXRlbSkgew0KCQkJJHJvdyA9IG5ldyBzdGRDbGFzcygpOw0KCQkJDQoJCQlpZiAoJGlzU2VhcmNoKSB7DQoJCQkJJHJvdy0+aWQgPSAkaXRlbS0+aWRfc3RyOw0KCQkJCWlmIChzZWxmOjpnZXREYigpLT5HZXRPbmUoJ3NlbGVjdCBpZCBmcm9tICcgLmNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfdG9vbGJveF90dyB3aGVyZSBpZCA9ID8gYW5kIGhhc2g9PycsYXJyYXkoJHJvdy0+aWQsJGhhc2gpKSkgY29udGludWU7IA0KCQkJDQoJCQkJJHJvdy0+dGV4dCA9ICRpdGVtLT50ZXh0Ow0KCQkJCSRyb3ctPmRhdGUgPSBnbWRhdGUoJ1ktbS1kIEg6aTpzJywgc3RydG90aW1lKCRpdGVtLT5jcmVhdGVkX2F0KSk7DQoJCQkJJHJvdy0+Y3JlYXRlZF9hdCA9ICAkaXRlbS0+Y3JlYXRlZF9hdDsNCgkJCQkkcm93LT5pbWdfdXJsID0gJGl0ZW0tPnVzZXItPnByb2ZpbGVfaW1hZ2VfdXJsOw0KCQkJCSRyb3ctPmltZ191cmxfaHR0cHMgPSAkaXRlbS0+dXNlci0+cHJvZmlsZV9pbWFnZV91cmxfaHR0cHM7DQoJCQkJJHJvdy0+c2NyZWVubmFtZSA9ICRpdGVtLT51c2VyLT5zY3JlZW5fbmFtZTsNCgkJCQkkcm93LT5hdXRob3IgPSAkaXRlbS0+dXNlci0+bmFtZTsNCgkJCQkkcm93LT5zY3JlZW5uYW1lX3VybCA9ICdodHRwOi8vdHdpdHRlci5jb20vJy4kaXRlbS0+dXNlci0+c2NyZWVuX25hbWU7DQoJCQkJJHJvdy0+c291cmNlID0gJGl0ZW0tPnNvdXJjZTsNCgkJCQkkcm93LT5sb2NhdGlvbiA9ICRpdGVtLT51c2VyLT5sb2NhdGlvbjsNCgkJCQkkcm93LT5yZXR3ZWV0X2NvdW50ID0gJGl0ZW0tPnJldHdlZXRfY291bnQ7DQoJCQkJJHJvdy0+ZmF2b3JpdGVkID0gJGZhdm9yaXRlX2NvdW50Ow0KCQkJCSRyb3ctPnJldHdlZXRfc2NyZWVubmFtZSA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfYXV0aG9yID0gIiI7DQoJCQkJJHJvdy0+cmV0d2VldF9pZCA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfZGF0ZSA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfdGV4dCA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfdXNlcl9pZCA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfaW1nX3VybCA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfaW1nX3VybF9odHRwcyA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfdXNlcmlkID0gIiI7DQoJCQkJJHJvdy0+cmV0d2VldF9hdXRob3IgPSAiIjsNCgkJCQkkcm93LT5yZXR3ZWV0X3NjcmVlbm5hbWUgPSAiIjsNCgkJCQkkcm93LT5yZXR3ZWV0X3NjcmVlbm5hbWVfdXJsID0gIiI7DQoJCQkJJHJvdy0+cmV0d2VldF9sb2NhdGlvbiA9ICIiOw0KCQkJCSRyb3ctPnJldHdlZXRfc291cmNlID0gIiI7DQoJCQl9DQoJCQllbHNlIHsNCgkJCQkkcm93LT5pZCA9ICRpdGVtLT5pZF9zdHI7DQoJCQkJaWYgKHNlbGY6OmdldERiKCktPkdldE9uZSgnc2VsZWN0IGlkIGZyb20gJyAuY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV90b29sYm94X3R3IHdoZXJlIGlkID0gPyBhbmQgaGFzaD0/JyxhcnJheSgkcm93LT5pZCwkaGFzaCkpKSBjb250aW51ZTsgDQoJCQkJDQoJCQkJJHJvdy0+Y3JlYXRlZF9hdCA9ICAkaXRlbS0+Y3JlYXRlZF9hdDsNCgkJCQkkcm93LT5kYXRlID0gIGdtZGF0ZSgnWS1tLWQgSDppOnMnLCBzdHJ0b3RpbWUoJGl0ZW0tPmNyZWF0ZWRfYXQpKTsNCgkJCQkkcm93LT50ZXh0ID0gJGl0ZW0tPnRleHQ7DQoJCQkJJHJvdy0+dXNlcmlkID0gJGl0ZW0tPnVzZXItPmlkOw0KCQkJCSRyb3ctPmltZ191cmwgPSAkaXRlbS0+dXNlci0+cHJvZmlsZV9pbWFnZV91cmw7DQoJCQkJJHJvdy0+aW1nX3VybF9odHRwcyA9ICRpdGVtLT51c2VyLT5wcm9maWxlX2ltYWdlX3VybF9odHRwczsNCgkJCQkkcm93LT5hdXRob3IgPSAkaXRlbS0+dXNlci0+bmFtZTsNCgkJCQkkcm93LT5zY3JlZW5uYW1lID0gJGl0ZW0tPnVzZXItPnNjcmVlbl9uYW1lOw0KCQkJCSRyb3ctPnNjcmVlbm5hbWVfdXJsID0gJ2h0dHA6Ly90d2l0dGVyLmNvbS8nLiRpdGVtLT51c2VyLT5zY3JlZW5fbmFtZTsNCgkJCQkkcm93LT5zb3VyY2UgPSAkaXRlbS0+c291cmNlOw0KCQkJCSRyb3ctPmxvY2F0aW9uID0gJGl0ZW0tPnVzZXItPmxvY2F0aW9uOw0KCQkJCSRyb3ctPnJldHdlZXRfY291bnQgPSAkaXRlbS0+cmV0d2VldF9jb3VudDsNCgkJCQkkcm93LT5mYXZvcml0ZWQgPSAkaXRlbS0+ZmF2b3JpdGVkOw0KCQkJCQ0KCQkJCS8vIFJldHdlZXQ6IEluZm9zIGRlcyBPcmlnaW5hbHR3ZWV0cyBhYmbDvGxsZW4NCgkJCQkkcm93LT5yZXR3ZWV0X2lkID0gaXNzZXQoJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPmlkX3N0cikgPyAkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+aWRfc3RyIDogJyc7DQoJCQkJJHJvdy0+cmV0d2VldF9kYXRlID0gaXNzZXQoJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPmNyZWF0ZV9hdCkgPyBnbWRhdGUoJ1ktbS1kIEg6aTpzJywgc3RydG90aW1lKCRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT5jcmVhdGVkX2F0KSkgOiAnJzsNCgkJCQkkcm93LT5yZXR3ZWV0X3RleHQgPSBpc3NldCgkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dGV4dCkgPyAkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dGV4dCA6ICcnOw0KCQkJCSRyb3ctPnJldHdlZXRfdXNlcl9pZCA9IGlzc2V0KCRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT51c2VyLT5pZCkgPyAkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dXNlci0+aWQgOiAnJzsNCgkJCQkkcm93LT5yZXR3ZWV0X2ltZ191cmwgPSBpc3NldCgkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dXNlci0+cHJvZmlsZV9pbWFnZV91cmwpID8gJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPnByb2ZpbGVfaW1hZ2VfdXJsIDogJyc7DQoJCQkJJHJvdy0+cmV0d2VldF9pbWdfdXJsX2h0dHBzID0gaXNzZXQoJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPnByb2ZpbGVfaW1hZ2VfdXJsX2h0dHBzKSA/ICRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT51c2VyLT5wcm9maWxlX2ltYWdlX3VybF9odHRwcyA6ICcnOw0KCQkJCSRyb3ctPnJldHdlZXRfdXNlcmlkID0gaXNzZXQoJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPmlkKSA/ICRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT51c2VyLT5pZCA6ICcnOw0KCQkJCSRyb3ctPnJldHdlZXRfYXV0aG9yID0gaXNzZXQoJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPm5hbWUpID8gJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPm5hbWUgOiAnJzsNCgkJCQkkcm93LT5yZXR3ZWV0X3NjcmVlbm5hbWUgPSBpc3NldCgkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dXNlci0+c2NyZWVuX25hbWUpID8gJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPnNjcmVlbl9uYW1lIDogJyc7DQoJCQkJJHJvdy0+cmV0d2VldF9zY3JlZW5uYW1lX3VybCA9IGlzc2V0KCRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT51c2VyLT5zY3JlZW5fbmFtZSkgPyAnaHR0cDovL3R3aXR0ZXIuY29tLycuJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnVzZXItPnNjcmVlbl9uYW1lIDogJyc7DQoJCQkJJHJvdy0+cmV0d2VldF9sb2NhdGlvbiA9IGlzc2V0KCRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT51c2VyLT5sb2NhdGlvbikgPyAkaXRlbS0+cmV0d2VldGVkX3N0YXR1cy0+dXNlci0+bG9jYXRpb24gOiAnJzsNCgkJCQkkcm93LT5yZXR3ZWV0X3NvdXJjZSA9IGlzc2V0KCRpdGVtLT5yZXR3ZWV0ZWRfc3RhdHVzLT5zb3VyY2UpID8gJGl0ZW0tPnJldHdlZXRlZF9zdGF0dXMtPnNvdXJjZSA6ICcnOw0KCQkJfQ0KCQkNCgkJCSRyb3ctPmpzb25kYXRhID0gJGl0ZW07DQoJCQkNCgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90b29sYm94X3R3DQoJCQkJCShoYXNoLCBpZCwgY3JlYXRlZF9hdCwgdHdkYXRlLCB1c2VyaWQsIHNjcmVlbm5hbWUsIHNjcmVlbm5hbWVfdXJsLCBpbWdfdXJsLCBpbWdfdXJsX2h0dHBzLCBhdXRob3IsIHNvdXJjZSwgbG9jYXRpb24sIHRleHQsIHJldHdlZXRfY291bnQsIGZhdm9yaXRlZCwgDQoJCQkJCXJldHdlZXRfaWQscmV0d2VldF90d2RhdGUsIHJldHdlZXRfdXNlcmlkLHJldHdlZXRfc2NyZWVubmFtZSwgcmV0d2VldF9zY3JlZW5uYW1lX3VybCxyZXR3ZWV0X2F1dGhvciwgcmV0d2VldF9pbWdfdXJsLA0KCQkJCQlyZXR3ZWV0X2ltZ19odHRwcyxyZXR3ZWV0X3NvdXJjZSwgcmV0d2VldF9sb2NhdGlvbixyZXR3ZWV0X3RleHQsanNvbmRhdGEpDQoJCQkJCVZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8pIjsNCgkJCSRkYXRhYXJyYXkgPSBhcnJheSgkaGFzaCwkcm93LT5pZCwgJHJvdy0+Y3JlYXRlZF9hdCwgJHJvdy0+ZGF0ZSwgJHJvdy0+dXNlcmlkLCAkcm93LT5zY3JlZW5uYW1lLCAkcm93LT5zY3JlZW5uYW1lX3VybCwgJHJvdy0+aW1nX3VybCwgJHJvdy0+aW1nX3VybF9odHRwcywgDQoJCQkJCQkJICAgJHJvdy0+YXV0aG9yLCAkcm93LT5zb3VyY2UsICRyb3ctPmxvY2F0aW9uLCAkcm93LT50ZXh0LCRyb3ctPnJldHdlZXRfY291bnQsICRyb3ctPmZhdm9yaXRlZCwgJHJvdy0+cmV0d2VldF9pZCwgDQoJCQkJCQkJICAgJHJvdy0+cmV0d2VldF9kYXRlLCRyb3ctPnJldHdlZXRfdXNlcmlkLCRyb3ctPnJldHdlZXRfc2NyZWVubmFtZSwgJHJvdy0+cmV0d2VldF9zY3JlZW5uYW1lX3VybCwgICRyb3ctPnJldHdlZXRfYXV0aG9yLCAkcm93LT5yZXR3ZWV0X2ltZ191cmwsICRyb3ctPnJldHdlZXRfaW1nX3VybF9odHRwcywgDQoJCQkJCQkJICAgJHJvdy0+cmV0d2VldF9zb3VyY2UsJHJvdy0+cmV0d2VldF9sb2NhdGlvbiwkcm93LT5yZXR3ZWV0X3RleHQsIGJhc2U2NF9lbmNvZGUoc2VyaWFsaXplKCRyb3ctPmpzb25kYXRhKSkpOw0KCQkJDQoJCQkkcmVzdWx0ID0gc2VsZjo6Z2V0RGIoKS0+RXhlY3V0ZSgkcXVlcnksICRkYXRhYXJyYXkpOw0KCQkJDQoJCQlpZighJHJlc3VsdCkgew0KCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ3N0b3JlRGF0YSgpIC0gU1FMIEVSUk9SOiAnIC4gc2VsZjo6Z2V0RGIoKS0+RXJyb3JNc2coKSAuICcoJyAuIHNlbGY6OmdldERiKCktPnNxbCAuICcpJyk7DQoJCQl9DQoJCX0NCgkJDQoJCSR0aW1lc3RhbXAgPSBkYXRlKCJZLW0tZCBIOmk6cyIpOw0KCQkJDQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90b29sYm94X3R3dXBkYXRlIChoYXNoLCB0aW1lc3RhbXApIHZhbHVlcyAoJyIuJGhhc2guIicsJyIuJHRpbWVzdGFtcC4iJykgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaGFzaCA9ICciLiRoYXNoLiInLCB0aW1lc3RhbXAgPSAnIi4kdGltZXN0YW1wLiInIjsNCgkJc2VsZjo6Z2V0RGIoKS0+RXhlY3V0ZSgkcXVlcnkpOw0KCQkNCgl9DQoJDQovKioNCgkgKiANCgkgKiBXZXJ0ZXQgZGVuIFNlYXJjaGZlZWQgYXVzIHVuZCBnaWJ0IGluIGFscyBzdGRDbGFzcyBBcnJheSB6dXLDvGNrDQoJICogQHBhcmFtIGpzb24gYXJyYXkgJGpzb24NCgkgKiBAcmV0dXJuIGFycmF5DQoJICovDQoJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBmZXRjaFNlYXJjaERhdGFBcnJheSgkanNvbikNCgl7DQoJCWlmIChpc3NldCgkanNvbi0+ZXJyb3IpKSByZXR1cm4gZmFsc2U7DQoJCQ0KCQkkZW50cnlzID0gYXJyYXkoKTsNCgkJDQoJCWZvcmVhY2goJGpzb24tPnJlc3VsdHMgYXMgJGtleSA9PiAkaXRlbSkgew0KCQkJJHJvdyA9IG5ldyBzdGRDbGFzcygpOw0KCQkJaWYgKHNlbGY6OiRfcGFyc2VMaW5rcykJJHJvdy0+dGV4dCA9IHNlbGY6OnBhcnNlVHdpdHRlcmxpbmtzKCRpdGVtLT50ZXh0KTsNCgkJCWVsc2UJCQkJCSRyb3ctPnRleHQgPSAkaXRlbS0+dGV4dDsNCgkJCQkNCgkJCSRyb3ctPmRhdGUgPSBzZWxmOjpwYXJzZURhdGUoJGl0ZW0tPmNyZWF0ZWRfYXQsIHNlbGY6OiRfZGF0ZWZvcm1hdCk7DQoJCQkkcm93LT5pbWdfdXJsID0gJGl0ZW0tPnByb2ZpbGVfaW1hZ2VfdXJsOw0KCQkJJHJvdy0+aW1nX3VybF9odHRwcyA9ICRpdGVtLT5wcm9maWxlX2ltYWdlX3VybF9odHRwczsNCgkJCSRyb3ctPnNjcmVlbm5hbWUgPSAkaXRlbS0+ZnJvbV91c2VyOw0KCQkJJHJvdy0+YXV0aG9yID0gJGl0ZW0tPmZyb21fdXNlcl9uYW1lOw0KCQkJJHJvdy0+c2NyZWVubmFtZV91cmwgPSAnaHR0cDovL3R3aXR0ZXIuY29tLycuJGl0ZW0tPmZyb21fdXNlcjsNCgkJCSRyb3ctPnNvdXJjZSA9ICRpdGVtLT5zb3VyY2U7DQoJCQkkcm93LT5sb2NhdGlvbiA9ICIiOw0KCQkJJHJvdy0+cmV0d2VldF9jb3VudCA9ICIiOw0KCQkJJHJvdy0+ZmF2b3JpdGVkID0gIiI7DQoJCQkkcm93LT5yZXR3ZWV0X3NjcmVlbm5hbWUgPSAiIjsNCgkJCSRyb3ctPnJldHdlZXRfYXV0aG9yID0gIiI7DQoJCQkkZW50cnlzW10gPSAkcm93Ow0KCQl9DQoJCXJldHVybiAkZW50cnlzOw0KCX0NCgkNCgkNCgkvKioNCgkgKiANCgkgKiBIb2x0IGRlbiBUd2l0dGVyZmVlZCBlaW5lcyBCZW51dHplcnMgdW5kIGdpYnQgaW4gYWxzIHN0ZENsYXNzIEFycmF5IHp1csO8Y2sNCgkgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZSAtIFR3aXR0ZXIgQmVudXR6ZXJuYW1lDQoJICogQHBhcmFtIGludCAkY291bnQgLSBBbnphaGwgRWludHLDpGdlDQoJICogQHBhcmFtIHN0cmluZyAkZGF0ZWZvcm1hdCAtIERhdHVtc2Zvcm1hdA0KCSAqIEBwYXJhbSBpbnQgJGNhY2hldGltZSAtIFplaXQgaW4gTWludXRlbiBuYWNoIHdlbGNoZXIgZGVyIEZlZWQgYWt0dWFsaXNpZXJ0IHdpcmQNCgkgKiBAcmV0dXJuIGFycmF5DQoJICogQGRva3UgaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vZG9jcy9hcGkvMS9nZXQvc3RhdHVzZXMvdXNlcl90aW1lbGluZQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0VXNlclRpbWVsaW5lKCR1c2VybmFtZSwgJGNvdW50ID0gMjAsICRkYXRlZm9ybWF0ID0gJ2ZyaWVuZGx5JywgJGNhY2hldGltZSA9IDUpDQoJew0KCQkkdXNlcm5hbWUgPSBwcmVnX3JlcGxhY2UoJy9bXkEtWmEtejAtOV9dLycsJycsICR1c2VybmFtZSk7DQoJCSRoYXNoID0gbWQ1KCR1c2VybmFtZSk7DQoJCWlmICgoaW50KSRjb3VudCA8IDEpICRjb3VudCA9IDIwOw0KCQkkY2FjaGVzZWNvbmRzID0gKGludCkkY2FjaGV0aW1lIDwgMSA/IDUgKiA2MCA6ICRjYWNoZXRpbWUgKiA2MDsNCgkJDQoJCSR1cmwgPSAnaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vMS4xL3N0YXR1c2VzL3VzZXJfdGltZWxpbmUuanNvbic7DQoJCSRwYXJhbXMgPSBhcnJheSgnc2NyZWVuX25hbWUnID0+ICR1c2VybmFtZSwgJ2luY2x1ZGVfcnRzJyA9PiAnMScpOw0KCQkNCgkJJGxhc3R0d2VldCA9IHNlbGY6OmdldExhc3RUd2VldCgkaGFzaCk7DQoJCQ0KCQlpZiAoISRsYXN0dHdlZXQpIHsNCgkJCWlmICgkY291bnQgPiA1MCkJJHBhcmFtc1snY291bnQnXSA9ICRjb3VudDsNCgkJCWVsc2UJCQkJJHBhcmFtc1snY291bnQnXSA9IDUwOw0KCQl9CQ0KCQllbHNlIAkJCQkJJHBhcmFtc1snc2luY2VfaWQnXSA9ICRsYXN0dHdlZXQ7DQoJCQ0KCQkkZmVlZCA9IHNlbGY6OmdldFR3aXR0ZXJTdHJlYW0oJGhhc2gsICR1cmwsICRwYXJhbXMsICRjb3VudCwgJGNhY2hlc2Vjb25kcyk7DQoJCQ0KCQlyZXR1cm4gJGZlZWQ7DQoJfQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEhvbHQgZGVuIFR3aXR0ZXJmZWVkIGVpbmVyIExpc3RlIGVpbmVzIEJlbnV0emVyIHVuZCBnaWJ0IGluIGFscyBzdGRDbGFzcyBBcnJheSB6dXLDvGNrDQoJICogQHBhcmFtIHN0cmluZyAkc2VhcmNoIC0gU3VjaGJlZ3JpZmYNCgkgKiBAcGFyYW0gc3RyaW5nIGxpc3QgLSBOYW1lIGRlciBMaXN0ZQ0KCSAqIEBwYXJhbSBpbnQgJGNvdW50IC0gQW56YWhsIEVpbnRyw6RnZQ0KCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGVmb3JtYXQgLSBEYXR1bXNmb3JtYXQNCgkgKiBAcGFyYW0gaW50ICRjYWNoZXRpbWUgLSBaZWl0IGluIE1pbnV0ZW4gbmFjaCB3ZWxjaGVyIGRlciBGZWVkIGFrdHVhbGlzaWVydCB3aXJkDQoJICogQHJldHVybiBhcnJheQ0KCSAqIEBkb2t1IGh0dHBzOi8vZGV2LnR3aXR0ZXIuY29tL2RvY3MvYXBpLzEvZ2V0L2xpc3RzL3N0YXR1c2VzDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRVc2VyTGlzdCAoJHVzZXJuYW1lLCAkbGlzdCwgJGNvdW50ID0gMjAsICRkYXRlZm9ybWF0ID0gJ2ZyaWVuZGx5JywgJGNhY2hldGltZSA9IDUpDQoJew0KCQkkdXNlcm5hbWUgPSBwcmVnX3JlcGxhY2UoJy9bXkEtWmEtejAtOV9dLycsJycsICR1c2VybmFtZSk7DQoJCSRsaXN0ID0gcHJlZ19yZXBsYWNlKCcvW15BLVphLXowLTlfXS8nLCcnLCAkbGlzdCk7DQoJCSRoYXNoID0gbWQ1KCR1c2VybmFtZS4kbGlzdCk7DQoJCWlmICgoaW50KSRjb3VudCA8IDEpICRjb3VudCA9IDIwOw0KCQkkY2FjaGVzZWNvbmRzID0gKGludCkkY2FjaGV0aW1lIDwgMSA/IDUgKiA2MCA6ICRjYWNoZXRpbWUgKiA2MDsNCgkJDQoJCSR1cmwgPSAnaHR0cHM6Ly9hcGkudHdpdHRlci5jb20vMS4xL2xpc3RzL3N0YXR1c2VzLmpzb24nOw0KCQkkcGFyYW1zID0gYXJyYXkoJ3NsdWcnID0+ICRsaXN0LCAnb3duZXJfc2NyZWVuX25hbWUnID0+ICR1c2VybmFtZSwgJ2luY2x1ZGVfcnRzJyA9PiAnMScsICdpbmNsdWRlX2VudGl0aWVzJyA9PiAxLCAncGFnZScgPT4gMSApOw0KCQkNCgkJJGxhc3R0d2VldCA9IHNlbGY6OmdldExhc3RUd2VldCgkaGFzaCk7DQoJCQ0KCQlpZiAoISRsYXN0dHdlZXQpIHsNCgkJCWlmICgkY291bnQgPiA1MCkJJHBhcmFtc1sncGVyX3BhZ2UnXSA9ICRjb3VudDsNCgkJCWVsc2UJCQkJJHBhcmFtc1sncGVyX3BhZ2UnXSA9IDUwOw0KCQl9CQ0KCQllbHNlIAkJCQkJJHBhcmFtc1snc2luY2VfaWQnXSA9ICRsYXN0dHdlZXQ7DQoJCQ0KCQkkZmVlZCA9IHNlbGY6OmdldFR3aXR0ZXJTdHJlYW0oJGhhc2gsICR1cmwsICRwYXJhbXMsICRjb3VudCwgJGNhY2hlc2Vjb25kcyk7DQoJCQ0KCQlyZXR1cm4gJGZlZWQ7DQoJCQ0KCX0JDQoJDQoJLyoqDQoJICogDQoJICogSG9sdCBkZW4gU2VhcmNoZmVlZCB6dSBlaW5lbSBkZWZpbmllcnRlbiBTdWNod29ydCBhbHMgc3RkQ2xhc3MgQXJyYXkgenVyw7xjaw0KCSAqIEBwYXJhbSBzdHJpbmcgJHNlYXJjaCAtIFN1Y2hiZWdyaWZmDQoJICogQHBhcmFtIGludCAkY291bnQgLSBBbnphaGwgRWludHLDpGdlDQoJICogQHBhcmFtIHN0cmluZyAkZGF0ZWZvcm1hdCAtIERhdHVtc2Zvcm1hdA0KCSAqIEBwYXJhbSBib29sICRwYXJzZUxpbmtzIC0gTGlua3MgYXVzd2VydGVuDQoJICogQHBhcmFtIGJvb2wgJHJ0cyAtIFJUUw0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKiBAZG9rdSBodHRwczovL2Rldi50d2l0dGVyLmNvbS9kb2NzL2FwaS8xL2dldC9zZWFyY2gNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFNlYXJjaEZlZWQgKCRzZWFyY2gsICRjb3VudCA9IDIwLCAkZGF0ZWZvcm1hdCA9ICdmcmllbmRseScsICRjYWNoZXRpbWUgPSA1KQ0KCXsNCgkJJGNvdW50ID0gJGNvdW50ID4gMCA/IChpbnQpICRjb3VudDogMTA7DQoJCSRoYXNoID0gbWQ1KCRzZWFyY2gpOw0KCQlpZiAoKGludCkkY291bnQgPCAxKSAkY291bnQgPSAyMDsNCgkJJGNhY2hlc2Vjb25kcyA9IChpbnQpJGNhY2hldGltZSA8IDEgPyA1ICogNjAgOiAkY2FjaGV0aW1lICogNjA7DQoJCQ0KCQkkdXJsID0gJ2h0dHBzOi8vYXBpLnR3aXR0ZXIuY29tLzEuMS9zZWFyY2gvdHdlZXRzLmpzb24nOw0KCQkkcGFyYW1zID0gYXJyYXkoJ3EnID0+IHVybGVuY29kZSgkc2VhcmNoKSwgJ3JwcCcgPT4gJGNvdW50LCAnaW5jbHVkZV9lbnRpdGllcycgPT4gMSk7DQoJCQ0KCQkkbGFzdHR3ZWV0ID0gc2VsZjo6Z2V0TGFzdFR3ZWV0KCRoYXNoKTsNCgkJaWYgKCRsYXN0dHdlZXQpCSRwYXJhbXNbJ3NpbmNlX2lkJ10gPSAkbGFzdHR3ZWV0Ow0KCQkNCgkJJGZlZWQgPSBzZWxmOjpnZXRUd2l0dGVyU3RyZWFtKCRoYXNoLCAkdXJsLCAkcGFyYW1zLCAkY291bnQsICRjYWNoZXNlY29uZHMpOw0KCQkNCgkJcmV0dXJuICRmZWVkOw0KCX0NCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.tbUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogCQlUb29sQm94DQojIENsYXNzOiAgCQl0YlV0aWxzDQojIEF1dGhvcjogCQlibGF0dGVydGVjaCBpbmZvcm1hdGlrIC0gTHVrYXMgQmxhdHRlciAtIHd3dy5ibGF0dGVydGVjaC5jaA0KIyBFbWFpbDoJCWx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2gNCiMgQ29weXJpZ2h0OiAJYmxhdHRlcnRlY2ggaW5mb3JtYXRpayAtIEx1a2FzIEJsYXR0ZXIgLSB3d3cuYmxhdHRlcnRlY2guY2gNCiMgTGljZW5jZToJCUdQTCAyDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDggYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KY2xhc3MgdGJVdGlscw0Kew0KCXN0YXRpYyBwcml2YXRlICRlcnJvcnMgPSBhcnJheSgpOw0KCXN0YXRpYyBwcml2YXRlICR0YjsNCgkNCglwcml2YXRlIHN0YXRpYyAkX2luc3RhbmNlOw0KCQ0KCXByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQ0KDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaW5zdGFuY2UoKQ0KCXsNCgkJaWYoIXNlbGY6OiRfaW5zdGFuY2UpDQoJCQlzZWxmOjokX2luc3RhbmNlID0gbmV3IHNlbGY7DQoJCXJldHVybiBzZWxmOjokX2luc3RhbmNlOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBnZXQgQ2xhc3MgZXJyb3JzDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGZpbmFsDQoJICogQHJldHVybiBhcnJheQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0RXJyb3JzKCkgDQoJew0KCQlpZiAoaXNzZXQoc2VsZjo6JGVycm9yc1swXSkpDQoJCQlyZXR1cm4gc2VsZjo6JGVycm9yc1swXTsNCgkJZWxzZQ0KCQkJcmV0dXJuIHNlbGY6OiRlcnJvcnM7CQ0KCX0NCgkNCgkNCgkvKioNCgkgKiANCgkgKiBDbGVhciBDbGFzcyBlcnJvcw0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHJldHVybg0KCSAqLw0KCXByaXZhdGUgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGNsZWFyRXJyb3JzKCkNCgl7DQoJCXNlbGY6OiRlcnJvcnMgPSBhcnJheSgpOw0KCX0NCgkNCgkNCgkvKioNCgkgKiANCgkgKiBGw7xocnQgU21hcnR5IGltIMO8YmVyZ2ViZW5lbiBTdHJpbmcgYXVzLiBTbWFydHkgaXN0IG1pdCBbW3Jvb3RfdXJsXV0gbWFza2llcnQNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEByZXR1cm4gc3RyaW5nIChUZW1wbGF0ZSBtaXQgYXVzZ2Vmw7xocnRlbSBTbWFydHkpDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBleGVjdXRlVGVtcGxhdGVTbWFydHkoJHN0cmluZykgew0KDQoJCSRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCgkJJHNtYXJ0eS0+bGVmdF9kZWxpbWl0ZXIgPSAnW1snOw0KCQkkc21hcnR5LT5yaWdodF9kZWxpbWl0ZXIgPSAnXV0nOw0KCQkNCgkJaWYgKHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS4xMScpID49IDAgKSB7DQoJCQkkdGVtcGxhdGUgPSAkc21hcnR5LT5mZXRjaCgnc3RyaW5nOicuJHN0cmluZyk7DQoJCX0NCgkJZWxzZSB7DQoJCQkkc21hcnR5LT5fY29tcGlsZV9zb3VyY2UoJ3RiU3R5bGVzaGVldDpjb21iaW5lZCcsICRzdHJpbmcsICRfY29tcGlsZWQgKTsNCgkJCUBvYl9zdGFydCgpOw0KCQkJJHNtYXJ0eS0+X2V2YWwoJz8+JyAuICRfY29tcGlsZWQpOw0KCQkJJHRlbXBsYXRlID0gQG9iX2dldF9jb250ZW50cygpOw0KCQkJQG9iX2VuZF9jbGVhbigpOw0KCQl9DQoJCQ0KCQkkc21hcnR5LT5sZWZ0X2RlbGltaXRlciA9ICd7JzsNCgkJJHNtYXJ0eS0+cmlnaHRfZGVsaW1pdGVyID0gJ30nOw0KCQkNCgkJcmV0dXJuICR0ZW1wbGF0ZTsNCgl9CQkJDQoJDQoJLyoqDQoJICogDQoJICogSG9sdCBkaWUgVGVtcGxhdGUgUHJvcGVydHlzIGF1cyBkZXIgVGFiZWxsZSB1bmQgZ2lidCBzaWUgYWxzIEFycmF5IHp1csO8Y2sNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSAkdGVtcGxhdGUgLSBOYW1lIGRlcyBUZW1wbGF0ZXMNCgkgKiBAcmV0dXJuIGFycmF5IC8gZmFsc2UNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFRlbXBsYXRlUHJvcHMoJHRlbXBsYXRlKQ0KCXsNCgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsNCgkJJHF1ZXJ5ID0gIlNFTEVDVCAqDQoJCQkJRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90b29sYm94X3RlbXBsYXRlcHJvcHMNCgkJCQlXSEVSRSB0ZW1wbGF0ZT0/IE9SIHRlbXBsYXRlaWQ9PyI7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGVtcGxhdGUsICR0ZW1wbGF0ZSkpOw0KCQ0KCQlpZiggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCXsNCgkJCSRvdXRwdXQgPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KCQl9DQoJCQ0KCQlpZiAoIWlzc2V0KCRvdXRwdXQpKSByZXR1cm4gZmFsc2U7DQoJCQ0KCQlpZiAoc2VsZjo6aXNfc2VyaWFsaXplZCgkb3V0cHV0WydvcHRpb25zJ10pKSB7DQoJCQkkb3V0cHV0WydvcHRpb25zJ10gPSB1bnNlcmlhbGl6ZSgkb3V0cHV0WydvcHRpb25zJ10pOw0KCQkJaWYgKGlzX2FycmF5KCRvdXRwdXRbJ29wdGlvbnMnXSkgYW5kICFlbXB0eSgkb3V0cHV0WydvcHRpb25zJ10pKSB7DQoJCQkJJG91dHB1dCA9IGFycmF5X21lcmdlKCRvdXRwdXQsICRvdXRwdXRbJ29wdGlvbnMnXSk7DQoJCQl9DQoJCX0gDQoJCQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQoJDQoJLyoqDQoJICogDQoJICogU2F2ZSBUZW1wbGF0ZXByb3BzDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gc3RyaW5nICR0ZW1wbGF0ZSAtIHRlbXBsYXRlIG5hbWUNCgkgKiBAcGFyYW0gYXJyYXkgJHBhcmFtcyAtIFBhcmFtcyBsaWtlICRwYXJhbXNbXSB3aXRoIHRlbXBsYXRlcHJvcHMNCgkgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgLSBPcHRpb24tQXJyYXkNCgkgKiBAcmV0dXJuIGJvb2xlYW4NCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHNhdmVUZW1wbGF0ZVByb3BzKCR0ZW1wbGF0ZSwkcGFyYW1zLCRvcHRpb25zID0gYXJyYXkoKSkNCgl7DQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCSRzZWN0aW9uIAk9IGlzc2V0KCRwYXJhbXNbJ3NlY3Rpb24nXSkgCT8gcHJlZ19yZXBsYWNlKCcvW14wLTlhLXpBLVpfXS8nLCcnLCRwYXJhbXNbJ3NlY3Rpb24nXSkgOiAnJzsNCgkJJHRwbHNlY3Rpb24gPSBpc3NldCgkcGFyYW1zWyd0cGxzZWN0aW9uJ10pIAk/IHByZWdfcmVwbGFjZSgnL1teMC05YS16QS1aX10vJywnJywkcGFyYW1zWyd0cGxzZWN0aW9uJ10pIDogJyc7DQoJCSR2ZXJzaW9uIAk9IGlzc2V0KCRwYXJhbXNbJ3ZlcnNpb24nXSkJCT8gJHBhcmFtc1sndmVyc2lvbiddCQkJOiAnJzsNCgkJJGFib3V0CSAJPSBpc3NldCgkcGFyYW1zWydhYm91dCddKSAJCT8gJHBhcmFtc1snYWJvdXQnXQkJCQk6ICcnOw0KCQkkanF1ZXJ5CSAJPSBpc3NldCgkcGFyYW1zWydqcXVlcnknXSkJCT8gKGludCkgJHBhcmFtc1snanF1ZXJ5J10JCTogJyc7DQoJCSRqcXVlcnlfb3duCT0gaXNzZXQoJHBhcmFtc1snanF1ZXJ5X293biddKQk/IChpbnQpICRwYXJhbXNbJ2pxdWVyeV9vd24nXQk6ICcnOw0KDQoJCWlmICghc2VsZjo6aXNfc2VyaWFsaXplZCgkb3B0aW9ucykpICRvcHRpb25zID0gc2VyaWFsaXplKCRvcHRpb25zKTsNCgkJDQoJCSR0ZW1wbGF0ZXByb3BzID0gc2VsZjo6Z2V0VGVtcGxhdGVQcm9wcygkdGVtcGxhdGUpOw0KCQkNCgkJLy8gc2F2ZSB0ZW1wbGF0ZXByb3BlcnRpZXMgaW4gZGF0YWJhc2UNCgkJaWYgKCAkdGVtcGxhdGVwcm9wcyApIHsNCgkJCSRxdWVyeSA9ICJVUERBVEUgIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdG9vbGJveF90ZW1wbGF0ZXByb3BzDQoJCQkJCVNFVCB2ZXJzaW9uPT8sYWJvdXQ9PyxzZWN0aW9uPT8sdHBsc2VjdGlvbj0/LGpxdWVyeT0/LGpxdWVyeV9vd249PyxvcHRpb25zPT8NCgkJCQkJV0hFUkUgdGVtcGxhdGVpZD0/IjsNCgkJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdmVyc2lvbiwgJGFib3V0LCAkc2VjdGlvbiwgJHRwbHNlY3Rpb24sICRqcXVlcnksICRqcXVlcnlfb3duLCAkb3B0aW9ucywgJHRlbXBsYXRlcHJvcHNbJ3RlbXBsYXRlaWQnXSkpOw0KCQkJaWYoISRyZXN1bHQpIHsNCgkJCQlzZWxmOjokZXJyb3JzW10gPSBhcnJheSgnbGFuZycgPT4gJycsICdhZGRpdGlvbmFsJyA9PiAgJ1NRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSAuICcoJyAuICRkYi0+c3FsIC4gJyknKSA7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoJCWVsc2Ugew0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcw0KCQkJCQkodGVtcGxhdGUsdmVyc2lvbixhYm91dCxzZWN0aW9uLHRwbHNlY3Rpb24sanF1ZXJ5LGpxdWVyeV9vd24sb3B0aW9ucyx2aXNpYmxlKQ0KCQkJCQlWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/KSI7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRlbXBsYXRlLCAkdmVyc2lvbiwgJGFib3V0LCAkc2VjdGlvbiwgJHRwbHNlY3Rpb24sICRqcXVlcnksICRqcXVlcnlfb3duLCAkb3B0aW9ucywgMSkpOw0KCQkJaWYoISRyZXN1bHQpIHsNCgkJCQlzZWxmOjokZXJyb3JzW10gPSBhcnJheSgnbGFuZycgPT4gJycsICdhZGRpdGlvbmFsJyA9PiAgJ1NRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSAuICcoJyAuICRkYi0+c3FsIC4gJyknKSA7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoJCQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJDQoJLyoqDQoJICogDQoJICogR2VuZXJpZXJ0IGRhcyBUZW1wbGF0ZS1PYmpla3QgenVyIEF1Zmxpc3R1bmcgYWxsZXIgVGVtcGxhdGVzDQoJICogQHBhcmFtIG9iamVjdCAkbW9kdWxlDQoJICogQHBhcmFtIHN0cmluZyAkc2VjdGlvbiAtIFRvb2xCb3ggU2VjdGlvbg0KCSAqIEBwYXJhbSBzdHJpbmcgJHRwbHNlY3Rpb24gLSBUZW1wbGF0ZSBTZWN0aW9uOiBTdW1tYXJ5LCBEZXRhaWwsIFNlYXJjaCwgZXRjLg0KCSAqIEBwYXJhbSBzdHJpbmcgJHRhYnRvIC0gVGFiIHp1IHdlbGNoZW0gbmFjaCBlaW5lciBBa3Rpb24gd2llZGVyIGdld2VjaHNlbHQgd2lyZA0KCSAqIEBwYXJhbSBzdHJpbmcgJHR0YWJ0byAtIFRhYiBUYWIgenUgd2VsY2hlbSBnZXdlY2hzZWx0IHdpcmQNCgkgKi8NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFRwbExpc3QoJiRtb2R1bGUsICRzZWN0aW9uLCAkdHBsc2VjdGlvbiwgJHRhYnRvLCAkdHRhYnRvID0gIiIgKSANCgl7DQoJCWdsb2JhbCAkaWQ7DQoJCWdsb2JhbCAkcmV0dXJuaWQ7DQoJCQ0KCQkkdGhlbWVPYmplY3QgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsgLy8gICYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOw0KCQkkZmFsc2VpbWFnZTEgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsJG1vZHVsZS0+TGFuZyAoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCQkkdHJ1ZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCRtb2R1bGUtPkxhbmcgKCdkZWZhdWx0JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkJDQoJCQ0KCQkkYWxsdGVtcGxhdGVzID0gJG1vZHVsZS0+TGlzdFRlbXBsYXRlcygpOw0KCQkkY3VycmVudF90ZW1wbGF0ZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfJy4kc2VjdGlvbi4kdHBsc2VjdGlvbi4nX3RlbXBsYXRlJyk7DQoJCSRyb3dhcnJheSA9IGFycmF5KCk7DQoJCSRyb3djbGFzcyA9ICdyb3cxJzsNCgkJCQ0KCQlmb3JlYWNoKCAkYWxsdGVtcGxhdGVzIGFzICR0cGwgKQ0KCQl7DQoJCQkkdHBscHJvcHMgPSB0YlV0aWxzOjpnZXRUZW1wbGF0ZVByb3BzKCR0cGwpOw0KCQkJDQoJCQlpZiAoJHRwbHByb3BzWydzZWN0aW9uJ10gIT0gJHNlY3Rpb24pIGNvbnRpbnVlOw0KCQkJaWYoJHRwbHByb3BzWyd0cGxzZWN0aW9uJ10gIT0gJHRwbHNlY3Rpb24pIGNvbnRpbnVlOw0KCQkJDQoJCQkkcm93ID0gbmV3IFN0ZENsYXNzKCk7DQoJCQkkcm93LT50cGxzZWN0aW9uID0gJHRwbHByb3BzWyd0cGxzZWN0aW9uJ107DQoJCQkNCgkJCSRyb3ctPm5hbWUgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgc3RyX3JlcGxhY2UoJG1vZHVsZS0+Z2V0VHBsVG9rZW4oKSwgIiIsICR0cGwpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2VkaXQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0bykpOw0KCQkJJHJvdy0+dmVyc2lvbiA9ICR0cGxwcm9wc1sndmVyc2lvbiddOw0KCQkJJHJvdy0+YWJvdXQgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0cGxhYm91dCcsICRyZXR1cm5pZCwgJG1vZHVsZS0+TGFuZygncHJvbXB0X2Fib3V0JyksIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ21vZGUnPT4nc2hvdycsICd0YWJ0bycgPT4gJHRhYnRvLCAndHRhYnRvJyA9PiAkdHRhYnRvKSk7DQoJCQkkcm93LT5yb3djbGFzcyA9ICAkcm93Y2xhc3M7DQoJCQkNCgkJCWlmKCAkdHBsID09ICRjdXJyZW50X3RlbXBsYXRlKSAkcm93LT5kZWZhdWx0ID0gJHRydWVpbWFnZTE7DQoJCQllbHNlDQoJCQl7DQoJCQkJJHJvdy0+ZGVmYXVsdCA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnc3dpdGNoZGVmYXVsdHRlbXBsYXRlJywgJHJldHVybmlkLCAkZmFsc2VpbWFnZTEsDQoJCQkJCQkgICAgICAgYXJyYXkoJ3RlbXBsYXRlJz0+JHRwbCwgJ3RhYnRvJyA9PiAkdGFidG8sICd0dGFidG8nID0+ICR0dGFidG8sICdzZWN0aW9uJz0+JHNlY3Rpb24sICd0cGxzZWN0aW9uJyA9PiAkcm93LT50cGxzZWN0aW9uKSk7DQoJCQl9DQoJCQ0KCQkJJHJvdy0+ZWRpdGxpbmsgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkJCSAgICBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKS0+RGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJG1vZHVsZS0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLA0KCQkJCQkJICAgIGFycmF5ICgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2VkaXQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0bykpOw0KCQkJDQoJCQkkcm93LT5jb3B5bGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLA0KCQkJCQkJICAgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UgKCdpY29ucy9zeXN0ZW0vY29weS5naWYnLCAkbW9kdWxlLT5MYW5nICgnY29weScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJCQkgICAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJHRwbCwgJ21vZGUnPT4nYWRkJywgJ3RhYnRvJyA9PiAkdGFidG8sICd0dGFidG8nID0+ICR0dGFidG8sICdzZWN0aW9uJyA9PiAkc2VjdGlvbiwgJ3RwbHNlY3Rpb24nID0+ICRyb3ctPnRwbHNlY3Rpb24pKTsNCgkJCQ0KCQkJaWYoICR0cGwgPT0gJGN1cnJlbnRfdGVtcGxhdGUpCSRyb3ctPmRlbGV0ZWxpbmsgPSAnJm5ic3A7JzsNCgkJCWVsc2UNCgkJCXsNCgkJCQkkcm93LT5kZWxldGVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdkb19kZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwNCgkJCQkJCQkgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJG1vZHVsZS0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJCQkJICBhcnJheSAoJ3RlbXBsYXRlJyA9PiAkdHBsLCAndGFidG8nPT4kdGFidG8sICd0dGFidG8nID0+ICR0dGFidG8pLCAkbW9kdWxlLT5MYW5nKCdhcmV5b3VzdXJlJykpOw0KCQkJfQ0KCQkNCgkJCSRyb3ctPmV4cG9ydCA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fZXhwb3J0dGVtcGxhdGUnLCAkcmV0dXJuaWQsDQoJCQkJCQkgICAgJzxpbWcgc3JjPSIuLi9tb2R1bGVzL1Rvb2xCb3gvaW1hZ2VzL3htbF9yc3MuZ2lmIiBhbHQ9IlhNTCIgLz4nLA0KCQkJCQkJICAgIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRwbCkpOw0KCQkNCgkJCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJCQkkcm93Y2xhc3MgPQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7DQoJCQkJCQkgICAgDQoJCX0NCgkJDQoJCQ0KCQlpZiAoIWNvdW50KCRyb3dhcnJheSkpIHsNCgkJCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCSRyb3ctPm5hbWUgPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9ub3RlbXBsYXRlcycpOw0KCQkJJHJvdy0+ZGVmYXVsdCA9ICIiOw0KCQkJJHJvdy0+ZWRpdGxpbmsgPSAiIjsNCgkJCSRyb3ctPmNvcHlsaW5rID0gIiI7DQoJCQkkcm93LT5kZWxldGVsaW5rID0gIiI7DQoJCQkkcm93LT5leHBvcnQgPSAiIjsNCgkJCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJCX0NCgkJDQoJCXJldHVybiAkcm93YXJyYXk7DQoJCQ0KCQkNCgl9DQoJDQoJLyoqDQoJICogDQoJICogS29udHJvbGxpZXJ0IGRlbiBDU1YgT3JkbmVyLCBha3R1YWxpc2llcnQgREIgdW5kIGxpZWZlcnQgRGF0ZW4gYWxzIFN0ZENsYXNzIEFycmF5IHp1csO8Y2sNCgkgKiBAcmV0dXJuIHN0ZENsYXNzIEFycmF5DQoJICovDQoJDQoJDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRDU1ZGaWxlcygmJG1vZHVsZSwgJHRhYnRvLCAkdHRhYnRvID0gIiIpDQoJew0KCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoJCQ0KCQkkdGhlbWVPYmplY3QgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsgLy8gICYgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddOw0KCQkkZmFsc2VpbWFnZTEgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsJG1vZHVsZS0+TGFuZyAoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpOw0KCQkkdHJ1ZWltYWdlMSA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCRtb2R1bGUtPkxhbmcgKCdkZWZhdWx0JyksJycsJycsJ3N5c3RlbWljb24nKTsNCgkJDQoJCSRkaXIgPSAkY29uZmlnWydyb290X3BhdGgnXS4nL3VwbG9hZHMvVG9vbEJveC9DU1YnOw0KCQkNCgkJaWYgKCFpc19kaXIoJGRpcikpIG1rZGlyKCRkaXIsNzc3LHRydWUpOw0KCQkNCgkJJGZpbGVzID0gc2VsZjo6Z2V0Rm9sZGVyRmlsZXMoJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy91cGxvYWRzL1Rvb2xCb3gvY3N2JywgIiIsICJjc3YiKTsNCgkJDQoJCSRyb3dhcnJheSA9IGFycmF5KCk7DQoJCSRyb3djbGFzcyA9ICdyb3cxJzsNCgkJCQ0KCQlmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZSkNCgkJew0KCQkJJGZpbGVpbmZvID0gc2VsZjo6Z2V0Q1NWRmlsZUluZm8oJGZpbGVbJ25hbWUnXSk7DQoJCQkNCgkJCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCQ0KCQkJJHJvdy0+ZmlsZW5hbWUgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgc3RyX3JlcGxhY2UoJG1vZHVsZS0+Z2V0VHBsVG9rZW4oKSwgIiIsICR0cGwpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0cGwsICdtb2RlJz0+J2VkaXQnLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0bykpOw0KCQkJJHJvdy0+ZmlsZXBhdGggPSAiIjsNCgkJCSRyb3ctPmZpbGVzaXplID0gIiI7DQoJCQkkcm93LT5sYXN0bW9kID0gIiI7DQoJCQkNCgkJCSRyb3ctPmVkaXRsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdjc3ZmaWxlYWN0aW9uJywgJHJldHVybmlkLA0KCQkJCQkJICAgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UgKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkbW9kdWxlLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJCQkgICAgYXJyYXkgKCdmaWxlJyA9PiAkZmlsZWluZm9bJ2ZpbGVuciddLCAnbW9kZSc9PidlZGl0JywgJ3RhYnRvJyA9PiAkdGFidG8sICd0dGFidG8nID0+ICR0dGFidG8pKTsNCgkJCQ0KCQkJJHJvdy0+Y29weWxpbmsgPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2NzdmZpbGVhY3Rpb24nLCAkcmV0dXJuaWQsDQoJCQkJCQkgICAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSAoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICRtb2R1bGUtPkxhbmcgKCdjb3B5JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkJCSAgICBhcnJheSAoJ2ZpbGUnID0+ICRmaWxlaW5mb1snZmlsZW5yJ10sICdtb2RlJz0+J2NvcHknLCAndGFidG8nID0+ICR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0bykpOw0KCQkJDQoJCQkkcm93LT5yZW5hbWVsaW5rID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdjc3ZmaWxlYWN0aW9uJywgJHJldHVybmlkLA0KCQkJCQkJCSAgY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyktPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkbW9kdWxlLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwNCgkJCQkJCQkgIGFycmF5ICgnZmlsZScgPT4gJGZpbGVpbmZvWydmaWxlbnInXSwgJ21vZGUnPT4ncmVuYW1lJywgJ3RhYnRvJz0+JHRhYnRvLCAndHRhYnRvJyA9PiAkdHRhYnRvKSk7DQoJCQ0KCQkJJHJvdy0+ZGVsZXRlbGluayA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnY3N2ZmlsZWFjdGlvbicsICRyZXR1cm5pZCwNCgkJCQkJCQkgIGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJG1vZHVsZS0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksDQoJCQkJCQkJICBhcnJheSAoJ2ZpbGUnID0+ICRmaWxlaW5mb1snZmlsZW5yJ10sICdtb2RlJz0+J2RlbGV0ZScsICd0YWJ0byc9PiR0YWJ0bywgJ3R0YWJ0bycgPT4gJHR0YWJ0byksICRtb2R1bGUtPkxhbmcoJ2FyZXlvdXN1cmUnKSk7DQoJCQkNCgkJCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJCQkkcm93Y2xhc3MgPQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7DQoJCQkJCQkgICAgDQoJCX0NCgkJDQoJCQ0KCQlpZiAoIWNvdW50KCRyb3dhcnJheSkpIHsNCgkJCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsNCgkJCSRyb3ctPmZpbGVuYW1lID0gJG1vZHVsZS0+TGFuZygnZXJyb3Jfbm9maWxlcycpOw0KCQkJJHJvdy0+ZmlsZXBhdGggPSAiIjsNCgkJCSRyb3ctPmZpbGVzaXplID0gIiI7DQoJCQkkcm93LT5sYXN0bW9kID0gIiI7DQoJCQkkcm93LT5lZGl0bGluayA9ICIiOw0KCQkJJHJvdy0+Y29weWxpbmsgPSAiIjsNCgkJCSRyb3ctPmRlbGV0ZWxpbmsgPSAiIjsNCgkJCSRyb3ctPnJlbmFtZWxpbmsgPSAiIjsNCgkJCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7DQoJCX0NCgkJDQoJCXJldHVybiAkcm93YXJyYXk7DQoJCQ0KCQkNCgl9CQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEVudGVyIGRlc2NyaXB0aW9uIGhlcmUgLi4uDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUNCgkgKiBAcmV0dXJuIGFycmF5IC0gRmlsZWluZm8NCgkgKi8NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldENTVkZpbGVJbmZvKCRmaWxlbmFtZSkNCgl7DQoJCSRkYiA9IGNtc21zKCktPkdldERCKCk7DQoJCQ0KCQkvLyBHaWJ0IGVzIGVpbmVuIERhdGVuc2F0eiB6dW0gRmlsZSBpbiBkZXIgREI/DQoJCSRxdWVyeSA9ICJTRUxFQ1QgKg0KCQkJCUZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdG9vbGJveF9jc3YNCgkJCQlXSEVSRSBCSU5BUlkgZmlsZW5hbWUgPSA/IG9yIGZpbGVuciA9ID8iOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVuYW1lLCAkZmlsZW5hbWUpKTsNCgkNCgkJaWYoICRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDAgKQl7DQoJCQkkb3V0cHV0ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCgkJfQ0KCQkNCgkJLy8gRXMgZ2lidCBrZWluZW4gRGF0ZW5zYXR6DQoJCWlmICghaXNzZXQoJG91dHB1dCkpIHsNCgkJCS8vIEtvbnRyb2xsZSBvYiBlcyBlaW5lbiBEYXRlbnNhdHogenVyIGdsZWljaGVuIERhdGVpIG1pdCBhbmRlcmVyIEdyb3NzLS9LbGVpbnNjaHJlaWJ1bmcgZ2lidA0KCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqDQoJCQkJRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV90b29sYm94X2Nzdg0KCQkJCVdIRVJFIGZpbGVuYW1lID0gPyI7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVuYW1lKSk7DQoJCQkNCgkJCS8vIFdlbm4gZXMgbnVyIGVpbmVuIERhdGVuc2F0eiBnaWJ0LCBkaWVzZW4gbWl0IGRlbSBEYXRlaW5hbWVuIGFrdHVhbGlzaWVyZW4NCgkJCWlmKCAkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMSApIHsNCgkJCQkkb3V0cHV0ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsNCgkJCQkvLyBEYXRlaW5hbWVuIGFrdHVhbGlzaWVyZW4NCgkJCQkkcXVlcnkgPSAidXBkYXRlICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfY3N2IHNldCBmaWxlbmFtZSA9ID8sIHBhdGggPSAnJyB3aGVyZSBmaWxlbnIgPSA/IjsNCgkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZW5hbWUsJG91dHB1dFsnZmlsZW5yJ10pKTsNCgkJCQkNCgkJCQkNCgkJCQkNCgkJCX0NCgkJCQ0KCQl9IA0KLy8JCWZpbGVucglpbnQoMTEpIEF1dG8gSW5jcmVtZW50CSANCi8vCQlmaWxlbmFtZQ0KLy8JCXBhdGgJdmFyY2hhcig1MDApIE5VTEwJIA0KLy8JCWZpbGVzaXplCWJpZ2ludCgyMCkgTlVMTAkgDQovLwkJbGFzdHVwZGF0ZQ0KCQkNCgl9DQoJDQoJDQoJDQoJLyoqDQoJICogDQoJICogR2lidCBkZW4gUGZhZCB6dSBlaW5lciBUb29sQm94IFRlbXBsYXRlIFhNTC1EYXRlaSBhdXMuDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gJHNlY3Rpb24JLSBUb29sQm94IFNlY3Rpb24NCgkgKiBAcGFyYW0gJHRlbXBsYXRlIC0gVGVtcGxhdGUgbmFtZQ0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRUcGxYTUxGaWxlKCRzZWN0aW9uLCR0ZW1wbGF0ZSkNCgl7DQoJCXJldHVybiByZWFscGF0aChkaXJuYW1lKF9fRklMRV9fKS4gJy8uLi8nLicvdGVtcGxhdGVzL1Rvb2xCb3gtdHBsLScudHJpbSgkc2VjdGlvbikuJy0nLnRyaW0oJHRlbXBsYXRlKS4nLnhtbCcpOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBUYWtlcyBYTUwgc3RyaW5nIGFuZCByZXR1cm5zIGEgYm9vbGVhbiByZXN1bHQgd2hlcmUgdmFsaWQgWE1MIHJldHVybnMgdHJ1ZQ0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHBhcmFtICR4bWwNCgkgKiBAcmV0dXJuIGJvb2xlYW4NCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGlzX3ZhbGlkX3htbCAoICR4bWwgKSB7DQoJCWxpYnhtbF91c2VfaW50ZXJuYWxfZXJyb3JzKCB0cnVlICk7DQoJCSRkb2MgPSBuZXcgRE9NRG9jdW1lbnQoJzEuMCcsICd1dGYtOCcpOw0KCQkkZG9jLT5sb2FkWE1MKCAkeG1sICk7DQoJCSRlcnJvcnMgPSBsaWJ4bWxfZ2V0X2Vycm9ycygpOw0KCQlyZXR1cm4gZW1wdHkoICRlcnJvcnMgKTsNCgl9DQoJDQoNCgkvKioNCgkgKiBDb252ZXJ0IFhNTCB0byBhbiBBcnJheQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAgJFhNTA0KCSAqIEByZXR1cm4gYXJyYXkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFhNTHRvQXJyYXkoJFhNTCkNCgl7DQoJCSR4bWxfcGFyc2VyID0geG1sX3BhcnNlcl9jcmVhdGUoKTsNCgkJeG1sX3BhcnNlX2ludG9fc3RydWN0KCR4bWxfcGFyc2VyLCAkWE1MLCAkdmFscyk7DQoJCXhtbF9wYXJzZXJfZnJlZSgkeG1sX3BhcnNlcik7DQoJCS8vIHd5em5hY3phbXkgdGFibGljZSB6IHBvd3RhcnphamFjeW1pIHNpZSB0YWdhbWkgbmEgdHltIHNhbXltIHBvemlvbWllDQoJCSRfdG1wPScnOw0KCQlmb3JlYWNoICgkdmFscyBhcyAkeG1sX2VsZW0pIHsNCgkJCSR4X3RhZz0keG1sX2VsZW1bJ3RhZyddOw0KCQkJJHhfbGV2ZWw9JHhtbF9lbGVtWydsZXZlbCddOw0KCQkJJHhfdHlwZT0keG1sX2VsZW1bJ3R5cGUnXTsNCgkJCWlmICgkeF9sZXZlbCE9MSAmJiAkeF90eXBlID09ICdjbG9zZScpIHsNCgkJCQlpZiAoaXNzZXQoJG11bHRpX2tleVskeF90YWddWyR4X2xldmVsXSkpDQoJCQkJJG11bHRpX2tleVskeF90YWddWyR4X2xldmVsXT0xOw0KCQkJCWVsc2UNCgkJCQkkbXVsdGlfa2V5WyR4X3RhZ11bJHhfbGV2ZWxdPTA7DQoJCQl9DQoJCQlpZiAoJHhfbGV2ZWwhPTEgJiYgJHhfdHlwZSA9PSAnY29tcGxldGUnKSB7DQoJCQkJaWYgKCRfdG1wPT0keF90YWcpDQoJCQkJJG11bHRpX2tleVskeF90YWddWyR4X2xldmVsXT0xOw0KCQkJCSRfdG1wPSR4X3RhZzsNCgkJCX0NCgkJfQ0KCQkvLyBqZWR6aWVteSBwbyB0YWJsaWN5DQoJCWZvcmVhY2ggKCR2YWxzIGFzICR4bWxfZWxlbSkgew0KCQkJJHhfdGFnPSR4bWxfZWxlbVsndGFnJ107DQoJCQkkeF9sZXZlbD0keG1sX2VsZW1bJ2xldmVsJ107DQoJCQkkeF90eXBlPSR4bWxfZWxlbVsndHlwZSddOw0KCQkJaWYgKCR4X3R5cGUgPT0gJ29wZW4nKQ0KCQkJJGxldmVsWyR4X2xldmVsXSA9ICR4X3RhZzsNCgkJCSRzdGFydF9sZXZlbCA9IDE7DQoJCQkkcGhwX3N0bXQgPSAnJHhtbF9hcnJheSc7DQoJCQlpZiAoJHhfdHlwZT09J2Nsb3NlJyAmJiAkeF9sZXZlbCE9MSkNCgkJCSRtdWx0aV9rZXlbJHhfdGFnXVskeF9sZXZlbF0rKzsNCgkJCXdoaWxlICgkc3RhcnRfbGV2ZWwgPCAkeF9sZXZlbCkgew0KCQkJCSRwaHBfc3RtdCAuPSAnWyRsZXZlbFsnLiRzdGFydF9sZXZlbC4nXV0nOw0KCQkJCWlmIChpc3NldCgkbXVsdGlfa2V5WyRsZXZlbFskc3RhcnRfbGV2ZWxdXVskc3RhcnRfbGV2ZWxdKSAmJiAkbXVsdGlfa2V5WyRsZXZlbFskc3RhcnRfbGV2ZWxdXVskc3RhcnRfbGV2ZWxdKQ0KCQkJCSRwaHBfc3RtdCAuPSAnWycuKCRtdWx0aV9rZXlbJGxldmVsWyRzdGFydF9sZXZlbF1dWyRzdGFydF9sZXZlbF0tMSkuJ10nOw0KCQkJCSRzdGFydF9sZXZlbCsrOw0KCQkJfQ0KCQkJJGFkZD0nJzsNCgkJCWlmIChpc3NldCgkbXVsdGlfa2V5WyR4X3RhZ11bJHhfbGV2ZWxdKSAmJiAkbXVsdGlfa2V5WyR4X3RhZ11bJHhfbGV2ZWxdICYmICgkeF90eXBlPT0nb3BlbicgfHwgJHhfdHlwZT09J2NvbXBsZXRlJykpIHsNCgkJCQlpZiAoIWlzc2V0KCRtdWx0aV9rZXkyWyR4X3RhZ11bJHhfbGV2ZWxdKSkNCgkJCQkkbXVsdGlfa2V5MlskeF90YWddWyR4X2xldmVsXT0wOw0KCQkJCWVsc2UNCgkJCQkkbXVsdGlfa2V5MlskeF90YWddWyR4X2xldmVsXSsrOw0KCQkJCSRhZGQ9J1snLiRtdWx0aV9rZXkyWyR4X3RhZ11bJHhfbGV2ZWxdLiddJzsNCgkJCX0NCgkJCWlmIChpc3NldCgkeG1sX2VsZW1bJ3ZhbHVlJ10pICYmIHRyaW0oJHhtbF9lbGVtWyd2YWx1ZSddKSE9JycgJiYgIWFycmF5X2tleV9leGlzdHMoJ2F0dHJpYnV0ZXMnLCAkeG1sX2VsZW0pKSB7DQoJCQkJaWYgKCR4X3R5cGUgPT0gJ29wZW4nKQ0KCQkJCSRwaHBfc3RtdF9tYWluPSRwaHBfc3RtdC4nWyR4X3R5cGVdJy4kYWRkLidbXCdjb250ZW50XCddID0gJHhtbF9lbGVtW1wndmFsdWVcJ107JzsNCgkJCQllbHNlDQoJCQkJJHBocF9zdG10X21haW49JHBocF9zdG10LidbJHhfdGFnXScuJGFkZC4nID0gJHhtbF9lbGVtW1wndmFsdWVcJ107JzsNCgkJCQlldmFsKCRwaHBfc3RtdF9tYWluKTsNCgkJCX0NCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdhdHRyaWJ1dGVzJywgJHhtbF9lbGVtKSkgew0KCQkJCWlmIChpc3NldCgkeG1sX2VsZW1bJ3ZhbHVlJ10pKSB7DQoJCQkJCSRwaHBfc3RtdF9tYWluPSRwaHBfc3RtdC4nWyR4X3RhZ10nLiRhZGQuJ1tcJ2NvbnRlbnRcJ10gPSAkeG1sX2VsZW1bXCd2YWx1ZVwnXTsnOw0KCQkJCQlldmFsKCRwaHBfc3RtdF9tYWluKTsNCgkJCQl9DQoJCQkJZm9yZWFjaCAoJHhtbF9lbGVtWydhdHRyaWJ1dGVzJ10gYXMgJGtleT0+JHZhbHVlKSB7DQoJCQkJCSRwaHBfc3RtdF9hdHQ9JHBocF9zdG10LidbJHhfdGFnXScuJGFkZC4nWyRrZXldID0gJHZhbHVlOyc7DQoJCQkJCWV2YWwoJHBocF9zdG10X2F0dCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiAkeG1sX2FycmF5Ow0KCX0NCgkNCgkNCgkNCgkvKioNCgkgKiANCgkgKiBQYXJzZWQgZWluIFRlbXBsYXRlIFhNTCBpbiBlaW4gQXJyYXkNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSBzdHJpbmcgJGZuIC0gRmlsZW5hbWUgKGlua2wuIFBmYWQpDQoJICogQHJldHVybiBhcnJheQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0VGVtcGxhdGVEYXRhRnJvbVhNTCgkeG1sKQ0KCXsNCgkJaWYgKGlzX2ZpbGUoJHhtbCkpICR4bWwgPSBmaWxlX2dldF9jb250ZW50cygkeG1sKTsNCgkJDQoJCS8vIERla2xhcmF0aW9uIGFsbGVyIFN0YW5kYXJkZmVsZGVyDQoJCSR0cGxkZXRhaWxzID0gYXJyYXkoJ25hbWUnID0+IE5VTEwsJ3ZlcnNpb24nID0+IE5VTEwsJ3Rvb2xib3h2ZXJzaW9uJyA9PiBOVUxMLCdhYm91dCcgPT4gTlVMTCwnc2VjdGlvbicgPT4gTlVMTCwndHBsc2VjdGlvbicgPT4gTlVMTCwnanF1ZXJ5JyA9PiAwLCdqcXVlcnlfb3duJyA9PiAwLCdvcHRpb25zJyA9PiBOVUxMLCd0cGxjb2RlJyA9PiBOVUxMLCd0cGxjc3MnID0+IE5VTEwsJ3RwbGpzJyA9PiBOVUxMLCd0cGxtb2JpbGVjb2RlJyA9PiBOVUxMLCd0cGxtb2JpbGVjc3MnID0+IE5VTEwsJ3RwbG1vYmlsZWpzJyA9PiBOVUxMLCdmaWxlcycgPT4gYXJyYXkoKSk7DQoJCQ0KCQkkZG9jID0gbmV3IERPTURvY3VtZW50KCk7DQoJCSRkb2MtPnByZXNlcnZlV2hpdGVTcGFjZSA9IGZhbHNlOw0KCQlpZiAoISRkb2MtPmxvYWRYTUwoJHhtbCkpIHsNCgkJCXNlbGY6OiRlcnJvcnNbXSA9IGFycmF5KCdsYW5nJyA9PiAnZXJyb3JfY291bGRub3RwYXJzZXhtbCcsICdhZGRpdGlvbmFsJyA9PiAnJykgOw0KCQkgCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJZm9yZWFjaCAoJGRvYy0+Y2hpbGROb2Rlcy0+aXRlbSgwKS0+Y2hpbGROb2RlcyBhcyAkY2hpbGROb2RlKSB7DQoJCQkkbmFtZSA9IHN0cnRvbG93ZXIoJGNoaWxkTm9kZS0+bm9kZU5hbWUpOw0KCQkJJHZhbHVlID0gJGNoaWxkTm9kZS0+bm9kZVZhbHVlOw0KDQoJCQlpZiAoJG5hbWUgPT0gImZpbGUiKSB7DQoJCQkJJGFycmF5ID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoKCRjaGlsZE5vZGUtPmNoaWxkTm9kZXMgYXMgJGZpbGUpIHsNCgkJCQkJJGZpbGVuYW1lID0gc3RydG9sb3dlcigkZmlsZS0+bm9kZU5hbWUpOw0KCQkJCQkkZmlsZWRhdGEgPSAkZmlsZS0+bm9kZVZhbHVlOw0KCQkJCQkkYXJyYXlbJGZpbGVuYW1lXSA9ICRmaWxlZGF0YTsNCgkJCQl9DQoJCQkJJHRwbGRldGFpbHNbJ2ZpbGVzJ11bXSA9ICRhcnJheTsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJCS8vaWYgKHNlbGY6OmlzX2Jhc2U2NGNvZGUoJHZhbHVlKSkgJHZhbHVlID0gYmFzZTY0X2RlY29kZSgkdmFsdWUpOw0KCQkJCWlmIChpbl9hcnJheSgkbmFtZSwgYXJyYXkoJ3RwbGNvZGUnLCd0cGxjc3MnLCd0cGxqcycsJ3RwbG1vYmlsZWNvZGUnLCd0cGxtb2JpbGVjc3MnLCd0cGxtb2JpbGVqcycsJ2Fib3V0Jywnb3B0aW9ucycpKSkNCgkJCQkJJHZhbHVlID0gYmFzZTY0X2RlY29kZSgkdmFsdWUpOw0KCQkJCSR0cGxkZXRhaWxzWyRuYW1lXSA9ICR2YWx1ZTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYgKHNlbGY6OmlzX3NlcmlhbGl6ZWQoJHRwbGRldGFpbHNbJ29wdGlvbnMnXSkpIHsNCgkJCSR0cGxkZXRhaWxzWydvcHRpb25zJ10gPSB1bnNlcmlhbGl6ZSgkdHBsZGV0YWlsc1snb3B0aW9ucyddKTsNCgkJCWlmIChpc19hcnJheSgkdHBsZGV0YWlsc1snb3B0aW9ucyddKSkNCgkJCQkkdHBsZGV0YWlscyA9IGFycmF5X21lcmdlKCR0cGxkZXRhaWxzLCAkdHBsZGV0YWlsc1snb3B0aW9ucyddKTsNCgkJfSANCgkJDQoJCXJldHVybiAkdHBsZGV0YWlsczsJCQ0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBJbXBvcnQgVGVtcGxhdGUNCgkgKiBAYXV0aG9yOiBMdWthcyBCbGF0dGVyIDxsYkBibGF0dGVydGVjaC5jaD4NCgkgKiBAY29weXJpZ2h0OiBHUEwgMg0KCSAqIEBmaW5hbA0KCSAqIEBwYXJhbSAkbW9kdWxlIC0gaW5zdGFuY2Ugb2YgVG9vbEJveA0KCSAqIEBwYXJhbSAkeG1sIC0gWE1MIGRlciBUZW1wbGF0ZWRhdGVpDQoJICogQHBhcmFtICRvdmVyd3JpdGUgLSBTb2xsIGVpbiBiZXN0ZWhlbmRlcyBUZW1wbGF0ZSDDvGJlcnNjaHJpZWJlbiB3ZXJkZW4NCgkgKiBAcGFyYW0gJHNldEN1cnJlbnQgLSBEYXMgVGVtcGxhdGUgYWxzIFN0YW5kYXJkdGVtcGxhdGUgcmVnaXN0cmllcmVuDQoJICogQHJldHVybiBib29sZWFuDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpbXBvcnRUZW1wbGF0ZSgmJG1vZHVsZSwgJHhtbCwgJG92ZXJ3cml0ZSA9IHRydWUsICRzZXRDdXJyZW50ID0gZmFsc2UpDQoJew0KCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQkkeG1sID0gc2VsZjo6Z2V0VGVtcGxhdGVEYXRhRnJvbVhNTCgkeG1sKTsNCg0KCQlpZigkeG1sID09IGZhbHNlICkgew0KCQkJc2VsZjo6JGVycm9yc1tdID0gYXJyYXkoJ2xhbmcnID0+ICdlcnJvcl9jb3VsZG5vdHBhcnNleG1sJywgJ2FkZGl0aW9uYWwnID0+ICcnKSA7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJDQoJCS8vIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0byB0aGUgbW9kdWxlIGRpcmVjdG9yeSwgZm9yIGluaXRpYWwgaW5zdGFsbCB0aGlzIGlzIGFscmVhZHkgY2hlY2tlZA0KCQkkZGlyID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4nbW9kdWxlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nVG9vbEJveCcuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SOyANCgkJaWYoICFpc193cml0YWJsZSgkZGlyKSkgew0KCQkJc2VsZjo6JGVycm9yc1tdID0gYXJyYXkoJ2xhbmcnID0+ICdlcnJvcl9kaXJlY3Rvcnlub3R3cml0YWJsZScsICdhZGRpdGlvbmFsJyA9PiAnXCcnIC4gJGRpciAuICdcJycpIDsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCSR4bWxbJ25hbWUnXSA9IHN0cnRvbG93ZXIoJHhtbFsnbmFtZSddKTsNCgkJDQoJCS8vIGNoZWNrIGlmIHRoaXMgdGVtcGxhdGUgaXMgYWxyZWFkeSBpbnN0YWxsZWQNCgkJaWYoIGlzX2RpcigkZGlyIC4gJHhtbFsnbmFtZSddKSBhbmQgJG92ZXJ3cml0ZSA9PSBmYWxzZSApDQoJCXsNCgkJCXNlbGY6OiRlcnJvcnNbXSA9IGFycmF5KCdsYW5nJyA9PiAnZXJyb3JfdGVtcGxhdGVleGlzdHMnLCAnYWRkaXRpb25hbCcgPT4gJ1wnJyAuICR4bWxbJ25hbWUnXSAuICdcJycpIDsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJJHRlbXBsYXRlZGlyID0gJGRpci4nLycuJHhtbFsnbmFtZSddOw0KCQllY2hvICR0ZW1wbGF0ZWRpcjsNCgkJaWYgKCFmaWxlX2V4aXN0cygkdGVtcGxhdGVkaXIpKSB7DQoJCQlpZiAoIUBta2RpcigkdGVtcGxhdGVkaXIpIGFuZCAhaXNfZGlyKCR0ZW1wbGF0ZWRpcikpIHsNCgkJCQlzZWxmOjokZXJyb3JzW10gPSBhcnJheSgnbGFuZycgPT4gJ2Vycm9yX2NhbnRjcmVhdGVkaXInLCAnYWRkaXRpb25hbCcgPT4gJ1wnJyAuICR0ZW1wbGF0ZWRpciAuICdcJycpIDsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCX0NCgkJDQoJCWZvcmVhY2goJHhtbFsnZmlsZXMnXSBhcyAkZmlsZSkgew0KCQkJCQ0KCQkJJGZpbGVuYW1lID0gcmVhbHBhdGgoJHRlbXBsYXRlZGlyKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmaWxlWydmaWxlbmFtZSddOw0KCQkJaWYoJGZpbGVbJ2lzZGlyJ10pIHsNCgkJCQlpZiAoIUBta2RpcigkZmlsZW5hbWUpIGFuZCAhaXNfZGlyKCRmaWxlbmFtZSkpIHsNCgkJCQkJc2VsZjo6JGVycm9yc1tdID0gYXJyYXkoJ2xhbmcnID0+ICdlcnJvcl9jYW50Y3JlYXRlZGlyJywgJ2FkZGl0aW9uYWwnID0+ICdcJycgLiAkZmlsZW5hbWUgLiAnXCcnKSA7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlIHsNCgkJCQkkZGF0YSA9ICRmaWxlWydkYXRhJ107DQoJCQkJaWYgKHN0cmxlbigkZGF0YSkpCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQkJJGZwID0gZm9wZW4oJGZpbGVuYW1lLCAidyIpOw0KCQkJCWlmKCAhJGZwICkgew0KCQkJCQlzZWxmOjokZXJyb3JzW10gPSBhcnJheSgnbGFuZycgPT4gJ2Vycm9yX2NhbnRjcmVhdGVmaWxlJywgJ2FkZGl0aW9uYWwnID0+ICAnXCcnIC4gJGZpbGVuYW1lIC4gJ1wnJykgOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJCWlmKHN0cmxlbigkZGF0YSkpCXsNCgkJCQkJZndyaXRlKCRmcCwgJGRhdGEpOw0KCQkJCX0NCgkJCQlmY2xvc2UoJGZwKTsNCgkJCX0NCgkJfQ0KCQkNCgkJLy8gc2F2ZSB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVjb2RlID0gJHhtbFsndHBsY29kZSddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbGNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbGpzJ10uVE9PTEJPWF9TRVBBUkFUT1IuJHhtbFsndHBsbW9iaWxlY29kZSddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbG1vYmlsZWNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiR4bWxbJ3RwbG1vYmlsZWpzJ10uJyp9JzsNCgkJJG1vZHVsZS0+U2V0VGVtcGxhdGUoJHhtbFsnbmFtZSddLCAkdGVtcGxhdGVjb2RlKTsNCgkJDQoJCS8vIHNhdmUgY3NzLWZpbGUNCgkJaWYgKGVtcHR5KCR4bWxbJ3RwbGNzcyddKSkgew0KCQkJQHVubGluayhyZWFscGF0aCgnLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICR4bWxbJ25hbWUnXSAuICcuY3NzJykpOw0KCQl9DQoJCWVsc2Ugew0KCQkJJGhhbmRsZSA9IGZvcGVuKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy8nIC4gJHhtbFsnbmFtZSddIC4gJy5jc3MnLCd3Jyk7DQoJCQlmd3JpdGUoJGhhbmRsZSxzZWxmOjpleGVjdXRlVGVtcGxhdGVTbWFydHkoJHhtbFsndHBsY3NzJ10pKTsNCgkJCWZjbG9zZSgkaGFuZGxlKTsNCgkJfQ0KCQkvLyBzYXZlIGNzcy1maWxlDQoJCWlmIChlbXB0eSgkeG1sWyd0cGxtb2JpbGVjc3MnXSkpIHsNCgkJCUB1bmxpbmsocmVhbHBhdGgoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycgLiAkeG1sWyduYW1lJ10gLiAnX21vYmlsZS5jc3MnKSk7DQoJCX0NCgkJZWxzZSB7DQoJCQkkaGFuZGxlID0gZm9wZW4oJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycgLiAkeG1sWyduYW1lJ10gLiAnX21vYmlsZS5jc3MnLCd3Jyk7DQoJCQlmd3JpdGUoJGhhbmRsZSxzZWxmOjpleGVjdXRlVGVtcGxhdGVTbWFydHkoJHhtbFsndHBsbW9iaWxlY3NzJ10pKTsNCgkJCWZjbG9zZSgkaGFuZGxlKTsNCgkJfQ0KCQkNCgkJDQoJCWlmICghc2VsZjo6c2F2ZVRlbXBsYXRlUHJvcHMoJHhtbFsnbmFtZSddLCAkeG1sLCAkeG1sWydvcHRpb25zJ10pKSB7DQoJCQlzZWxmOjokZXJyb3JzW10gPSBhcnJheSgnbGFuZycgPT4gJ2Vycm9yX2NvdWxkbm90d3JpdGV0cGxwcm9wcycsICdhZGRpdGlvbmFsJyA9PiAgJ1wnJyAuICR4bWxbJ25hbWUnXSAuICdcJycpIDsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJLy8gQWxzIFN0YW5kYXJkdGVtcGxhdGUgc2V0emVuDQoJCWlmICgkc2V0Q3VycmVudCkgew0KCQkJJG1vZHVsZS0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF8nLiR4bWxbJ3NlY3Rpb24nXS4nX2NvbnRlbnRzJywkdGVtcGxhdGVjb2RlKTsNCgkJCSRtb2R1bGUtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfJy4keG1sWydzZWN0aW9uJ10uJ190ZW1wbGF0ZScsJHhtbFsnbmFtZSddKTsNCgkJfQ0KCQkNCgkJDQoJCQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9CQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEV4cG9ydGllcnQgZGFzIGRlZmluaWVydGUgVGVtcGxhdGUgYWxzIFhNTCBEYXRlaQ0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHBhcmFtIG9iamVjdCAkbW9kdWxlIC0gSW5zdGFueiB2b24gVG9vbEJveA0KCSAqIEBwYXJhbSBzdHJpbmcgJHRlbXBsYXRlIC0gTmFtZSBkZXMgVGVtcGxhdGVzDQoJICogQHJldHVybg0KCSAqLw0KCQ0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZXhwb3J0VGVtcGxhdGUoJG1vZHVsZSwgJHRlbXBsYXRlKQ0KCXsNCgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCQkkdGVtcGxhdGVmb2xkZXIgPSBzdHJfcmVwbGFjZSgkbW9kdWxlLT5nZXRUcGxUb2tlbigpLCAiIiwgJHRlbXBsYXRlKTsNCgkJDQoJCS8vIGdldCB0ZW1wbGF0ZQ0KCQkkdGVtcGxhdGVjb2RlID0gJG1vZHVsZS0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlKTsNCgkJJHRlbXBsYXRlYXJyID0gZXhwbG9kZShUT09MQk9YX1NFUEFSQVRPUiwgJHRlbXBsYXRlY29kZSk7DQoJCQ0KCQkkdHBsY29kZQkJPSBpc3NldCgkdGVtcGxhdGVhcnJbMF0pID8gdHJpbSgkdGVtcGxhdGVhcnJbMF0sJyp9JykgOiAnJzsNCgkJJHRwbGNzcwkJCT0gaXNzZXQoJHRlbXBsYXRlYXJyWzFdKSA/IHRyaW0oJHRlbXBsYXRlYXJyWzFdLCcqfScpIDogJyc7DQoJCSR0cGxqcwkJCT0gaXNzZXQoJHRlbXBsYXRlYXJyWzJdKSA/IHRyaW0oJHRlbXBsYXRlYXJyWzJdLCcqfScpIDogJyc7DQoJCSR0cGxtb2JpbGVjb2RlCT0gaXNzZXQoJHRlbXBsYXRlYXJyWzNdKSA/IHRyaW0oJHRlbXBsYXRlYXJyWzNdLCcqfScpIDogJyc7DQoJCSR0cGxtb2JpbGVjc3MJPSBpc3NldCgkdGVtcGxhdGVhcnJbNF0pID8gdHJpbSgkdGVtcGxhdGVhcnJbNF0sJyp9JykgOiAnJzsNCgkJJHRwbG1vYmlsZWpzCT0gaXNzZXQoJHRlbXBsYXRlYXJyWzVdKSA/IHRyaW0oJHRlbXBsYXRlYXJyWzVdLCcqfScpIDogJyc7DQoJCQ0KCQkkdGVtcGxhdGVwcm9wcyA9IHNlbGY6OmdldFRlbXBsYXRlUHJvcHMoJHRlbXBsYXRlKTsNCgkJDQoJCSRvcHRpb25zID0gaXNfYXJyYXkoJHRlbXBsYXRlcHJvcHNbJ29wdGlvbnMnXSkgPyBzZXJpYWxpemUoJHRlbXBsYXRlcHJvcHNbJ29wdGlvbnMnXSkgOiAkdGVtcGxhdGVwcm9wc1snb3B0aW9ucyddOw0KCQkNCgkJaWYgKCEkdGVtcGxhdGVwcm9wcykgew0KCQkJc2VsZjo6JGVycm9yc1tdID0gYXJyYXkoJ2xhbmcnID0+ICdlcnJvcl9jb3VsZG5vdHJlYWR0cGxwcm9wcycsICdhZGRpdGlvbmFsJyA9PiAgJ1wnJyAuICR0ZW1wbGF0ZSAuICdcJycpIDsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkNCgkJJGZpbGVjb3VudCA9IDA7DQoJCSRkaXIgPSByZWFscGF0aCgkY29uZmlnWydyb290X3BhdGgnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvJykuRElSRUNUT1JZX1NFUEFSQVRPUi4kdGVtcGxhdGU7DQoJCSRkaXIgPSBpc19kaXIoJGRpcikgPyAkZGlyIDogcmVhbHBhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzLycpLkRJUkVDVE9SWV9TRVBBUkFUT1Iuc3RydG9sb3dlcigkdGVtcGxhdGUpOw0KCQkNCgkJJGZpbGVzID0gc2VsZjo6Z2V0Rm9sZGVyRmlsZXMoJGRpciwgIi8iKTsNCgkJDQoJCSR4bWx0eHQgID0gJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Jy4iXG4iOw0KCQkkeG1sdHh0IC49ICI8dG9vbGJveHRwbD5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8bmFtZT4iLiR0ZW1wbGF0ZS4iPC9uYW1lPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx2ZXJzaW9uPiIuJHRlbXBsYXRlcHJvcHNbJ3ZlcnNpb24nXS4iPC92ZXJzaW9uPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx0b29sYm94dmVyc2lvbj4iLiRtb2R1bGUtPkdldFZlcnNpb24oKS4iPC90b29sYm94dmVyc2lvbj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8YWJvdXQ+Ii5iYXNlNjRfZW5jb2RlKCR0ZW1wbGF0ZXByb3BzWydhYm91dCddKS4iPC9hYm91dD5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8c2VjdGlvbj4iLiR0ZW1wbGF0ZXByb3BzWydzZWN0aW9uJ10uIjwvc2VjdGlvbj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8dHBsc2VjdGlvbj4iLiR0ZW1wbGF0ZXByb3BzWyd0cGxzZWN0aW9uJ10uIjwvdHBsc2VjdGlvbj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8anF1ZXJ5PiIuJHRlbXBsYXRlcHJvcHNbJ2pxdWVyeSddLiI8L2pxdWVyeT5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8anF1ZXJ5X293bj4iLiR0ZW1wbGF0ZXByb3BzWydqcXVlcnlfb3duJ10uIjwvanF1ZXJ5X293bj5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8b3B0aW9ucz4iLmJhc2U2NF9lbmNvZGUoJG9wdGlvbnMpLiI8L29wdGlvbnM+XG4iOw0KCQkkeG1sdHh0IC49ICIJPHRwbGNvZGU+Ii5iYXNlNjRfZW5jb2RlKCR0cGxjb2RlKS4iPC90cGxjb2RlPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx0cGxjc3M+Ii5iYXNlNjRfZW5jb2RlKCR0cGxjc3MpLiI8L3RwbGNzcz5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8dHBsanM+Ii5iYXNlNjRfZW5jb2RlKCR0cGxqcykuIjwvdHBsanM+XG4iOw0KCQkkeG1sdHh0IC49ICIJPHRwbG1vYmlsZWNvZGU+Ii5iYXNlNjRfZW5jb2RlKCR0cGxtb2JpbGVjb2RlKS4iPC90cGxtb2JpbGVjb2RlPlxuIjsNCgkJJHhtbHR4dCAuPSAiCTx0cGxtb2JpbGVjc3M+Ii5iYXNlNjRfZW5jb2RlKCR0cGxtb2JpbGVjc3MpLiI8L3RwbG1vYmlsZWNzcz5cbiI7DQoJCSR4bWx0eHQgLj0gIgk8dHBsbW9iaWxlanM+Ii5iYXNlNjRfZW5jb2RlKCR0cGxtb2JpbGVqcykuIjwvdHBsbW9iaWxlanM+XG4iOw0KCQkNCgkJZm9yZWFjaCggJGZpbGVzIGFzICRmaWxlICkNCgkJew0KCQkJJHhtbHR4dCAuPSAiCTxmaWxlPlxuIjsNCgkJCSR4bWx0eHQgLj0gIgkgIDxmaWxlbmFtZT4iIC4gJGZpbGVbJ2ZpbGVuYW1lJ10gLiAiPC9maWxlbmFtZT5cbiI7DQoJCQkkeG1sdHh0IC49ICIJICA8aXNkaXI+IiAuICRmaWxlWydpc2RpciddIC4gIjwvaXNkaXI+XG4iOw0KCQkJaWYgKCAhJGZpbGVbJ2lzZGlyJ10gKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZGlyIC4gJGZpbGVbJ2ZpbGVuYW1lJ10pKTsNCgkJCQkkeG1sdHh0IC49ICIJICA8ZGF0YT48IVtDREFUQVsiLiRkYXRhLiJdXT48L2RhdGE+XG4iOw0KCQkJfQ0KCQkJJHhtbHR4dCAuPSAiCTwvZmlsZT5cbiI7DQoJCQkrKyRmaWxlY291bnQ7DQoJCX0NCgkJJHhtbHR4dCAuPSAiPC90b29sYm94dHBsPlxuIjsNCgkJDQoJCSRtZXNzYWdlID0gJ1hNTCBwYWNrYWdlIG9mICcgLiBzdHJsZW4oJHhtbHR4dCkgLiAnIGJ5dGVzIGNyZWF0ZWQgZm9yIFRvb2xCb3ggJy4kc2VjdGlvbnhtbG5hbWUuJyB0ZW1wbGF0ZSAnIC4gJHRlbXBsYXRlZm9sZGVyOw0KCQkkbWVzc2FnZSAuPSAnIGluY2x1ZGluZyAnIC4gJGZpbGVjb3VudCAuICcgZmlsZXMnOw0KCQkNCgkJDQoJCSR4bWxuYW1lID0gJ1Rvb2xCb3gtdHBsLScgLiAkdGVtcGxhdGVwcm9wc1snc2VjdGlvbiddIC4nLScgLiAkdGVtcGxhdGVmb2xkZXIgLiAnLnhtbCc7DQoNCgkJLy8gc2VuZCB0aGUgZmlsZQ0KCQlvYl9lbmRfY2xlYW4oKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoJCWhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOw0KCQloZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLiR4bWxuYW1lKTsNCgkJZWNobyAkeG1sdHh0Ow0KCQlleGl0KCk7DQoJCQ0KCX0NCgkNCgkNCgkvKioNCgkgKiBMw7ZzY2h0IGVpbiBUZW1wbGF0ZQ0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHBhcmFtIG9iamVjdCAkbW9kdWxlIC0gSW5zdGFueiB2b24gVG9vbEJveA0KCSAqIEBwYXJhbSBzdHJpbmcgJHRlbXBsYXRlIC0gTmFtZSBkZXMgVGVtcGxhdGVzDQoJICogQHJldHVybg0KCSAqLw0KCQ0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZGVsZXRlVGVtcGxhdGUoJG1vZHVsZSwgJHRlbXBsYXRlKSANCgl7DQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQkvLyBLb250cm9sbGUgb2IgVGVtcGxhdGUgZXhpc3RpZXJ0DQoJCSRxdWVyeSA9ICdTRUxFQ1QgY291bnQoKikgZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3RlbXBsYXRlcyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gYW5kIHRlbXBsYXRlX25hbWUgPSA/IE9SREVSIEJZIHRlbXBsYXRlX25hbWUgQVNDJzsNCgkJJGNvdW50ID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCBhcnJheSgkbW9kdWxlLT5HZXROYW1lKCksJHRlbXBsYXRlKSk7DQoNCgkJaWYgKCRjb3VudCAhPSAxKSByZXR1cm4gZmFsc2U7DQoJCQ0KCQkkbW9kdWxlLT5EZWxldGVUZW1wbGF0ZSgkdGVtcGxhdGUpOw0KDQoJCS8vIGRlbGV0ZSBjc3MtZmlsZQ0KCQlpZiggaXNfZmlsZSgnLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICR0ZW1wbGF0ZSAuICcuY3NzJykgKQ0KCQl7DQoJCQl1bmxpbmsoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzLycgLiAkdGVtcGxhdGUgLiAnLmNzcycpOw0KCQl9DQoNCgkJc2VsZjo6ZGVsZXRlRm9sZGVyKHN0cl9yZXBsYWNlKCcvJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvJyAuIHN0cnRvbG93ZXIoJHRlbXBsYXRlKSAuICcvJykpOw0KDQoJCS8vIGRlbGV0ZSB0ZW1wbGF0ZXByb3BlcnRpZXMNCgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcyBXSEVSRSB0ZW1wbGF0ZT0/IjsNCgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0ZW1wbGF0ZSkpOw0KCQkNCgkJcmV0dXJuIHRydWU7DQoJfQ0KCQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEdpYnQgZWluZSBMaXN0ZSBkZXIgVGVtcGxhdGUtRGF0ZWllbiB6dXLDvGNrDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gJHJvb3QNCgkgKiBAcGFyYW0gJHBhdGgNCgkgKiBAcGFyYW0gJGZpbHRlciAtIFJlZ2V4IGRlciBEYXRlaWVuZHVuZ2VuDQoJICogQHJldHVybiBhcnJheSAtIExpc3RlIGFsbGVyIERhdGVpZW4gZWluZXMgVmVyemVpY2huaXNzZXMNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldEZvbGRlckZpbGVzKCRyb290LCRwYXRoLCRmaWx0ZXIgPSBhcnJheSgpKQ0KCXsNCgkJJG91dHB1dCA9IGFycmF5KCk7DQoJCSRmaWx0ZXJzID0gYXJyYXkoKTsNCgkJDQoJCWlmICghaXNfYXJyYXkoJGZpbHRlcikpICRmaWx0ZXJzID0gZXhwbG9kZSgiLCIsIHN0cnRvbG93ZXIoJGZpbHRlcikpOyBlbHNlICRmaWx0ZXJzID0gJGZpbHRlcjsNCgkJDQovLwkJZWNobyAicGF0aCA9ICIgLnJlYWxwYXRoKCRyb290LicvJy4kcGF0aCk7DQoJCQ0KCQlpZiAoIWlzX2RpcihyZWFscGF0aCgkcm9vdC4nLycuJHBhdGgpKSkNCgkJCXJldHVybiAkb3V0cHV0Ow0KCQkNCgkJaWYgKCAkaGFuZGxlID0gb3BlbmRpcihyZWFscGF0aCgkcm9vdC4nLycuJHBhdGgpKSApDQoJCXsNCgkJCXdoaWxlICggZmFsc2UgIT09ICgkZmlsZSA9IHJlYWRkaXIoJGhhbmRsZSkpICkNCgkJCXsNCgkJCQlpZiAoICRmaWxlICE9ICIuIiAmJiAkZmlsZSAhPSAiLi4iICkNCgkJCQl7DQoJCQkJCWlmICggaXNfZGlyKCRyb290IC4gJHBhdGggLiAkZmlsZSkgKQ0KCQkJCQl7DQoJCQkJCQkkb3V0cHV0W10gPSBhcnJheSgNCgkJCQkJCSdmaWxlbmFtZScgPT4gJHBhdGggLiAkZmlsZSAuICIvIiwNCgkJCQkJCSduYW1lJyA9PiAkcGF0aCAuICRmaWxlLA0KCQkJCQkJJ2V4dCcgPT4gJycsDQoJCQkJCQknc2l6ZScgPT4gJycsDQoJCQkJCQkncmF3c2l6ZScgPT4gJycsDQoJCQkJCQknaXNkaXInID0+IDENCgkJCQkJCSk7DQoJCQkJCQkkb3V0cHV0ID0gYXJyYXlfbWVyZ2UoJG91dHB1dCxzZWxmOjpnZXRGb2xkZXJGaWxlcygkcm9vdCwgJHBhdGggLiAkZmlsZSAuICIvIikpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJJHBpID0gcGF0aGluZm8oJHJvb3QgLiAkcGF0aCAuICRmaWxlKTsNCgkJCQkJCS8vIFdlbm4gRmlsdGVyIGdlc2V0enQsIHByw7xmZW4gb2IgenVsw6Rzc2lnZSBEYXRlaWVuZHVuZwkJCQkJCQ0KCQkJCQkJaWYgKGNvdW50KCRmaWx0ZXJzKSkgew0KCQkJCQkJCWZvcmVhY2goJGZpbHRlciBhcyAkZikgew0KCQkJCQkJCQlpZiAoc3RydG9sb3dlcigkcGlbJ2V4dGVuc2lvbiddKSAhPSB0cmltKCRmKSApIGNvbnRpbnVlOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCQ0KCQkJCQkJJHNpemUgPSBmaWxlc2l6ZSgkcm9vdCAuICRwYXRoIC4gJGZpbGUpOw0KCQkJCQkJJG91dHB1dFtdID0gYXJyYXkoDQoJCQkJCQknZmlsZW5hbWUnID0+ICRwYXRoIC4gJGZpbGUsDQoJCQkJCQknbmFtZScgPT4gJHBpWydiYXNlbmFtZSddLA0KCQkJCQkJJ2V4dCcgPT4gJHBpWydleHRlbnNpb24nXSwNCgkJCQkJCSdzaXplJyA9PiBzZWxmOjpmb3JtYXRGaWxlU2l6ZSgkc2l6ZSksDQoJCQkJCQkncmF3c2l6ZScgPT4gJHNpemUsDQoJCQkJCQknaXNkaXInID0+IDANCgkJCQkJCSk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0KCQlyZXR1cm4gJG91dHB1dDsNCgl9DQogIA0KCS8qKg0KCSAqIA0KCSAqIEzDtnNjaHQgZWluZW4gT3JkbmVyIGlua2wuIEluaGFsdA0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHBhcmFtIHN0cmluZyAkZGlyIC0gUGZhZCBkZXMgT3JkbmVycyANCgkgKiBAcmV0dXJuDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBkZWxldGVGb2xkZXIoJGRpcikNCgl7DQoJCSRkZWxldGVmaWxlcyA9IGdsb2IoJGRpciAuICcqJywgR0xPQl9NQVJLKTsNCgkJZm9yZWFjaCgkZGVsZXRlZmlsZXMgYXMgJGZpbGUpDQoJCXsNCgkJCWlmICggc3Vic3RyKCRmaWxlLCAtMSkgPT0gRElSRUNUT1JZX1NFUEFSQVRPUiApDQoJCQkJc2VsZjo6ZGVsZXRlRm9sZGVyKCRmaWxlKTsNCgkJCWVsc2UNCgkJCQl1bmxpbmsoJGZpbGUpOw0KCQl9DQoJCWlmIChpc19kaXIoJGRpcikpIHJtZGlyKCRkaXIpOw0KCX0NCiAgDQoJLyoqDQoJICogDQoJICogR2lidCBkaWUgRGF0ZWlncsO2c3NlbiBpbiBlaW5lbSBsZXNiYXJlbiBGb3JtYXQgenVyw7xjaw0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHBhcmFtIGludCAkZmlsZXNpemUgLSBHcsO2c3NlIGRlcyBGaWxlcw0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBmb3JtYXRGaWxlU2l6ZSgkZmlsZXNpemUpIHsNCgkJaWYoc3RybGVuKCRmaWxlc2l6ZSkgPD0gMykgew0KCQkJJGZpbGVzaXplID0gcm91bmQoJGZpbGVzaXplLDIpLiIgYiI7DQoJCX0gZWxzZWlmKHN0cmxlbigkZmlsZXNpemUpIDwgNykgew0KCQkJJGZpbGVzaXplID0gKCRmaWxlc2l6ZS8xMDI0KTsNCgkJCSRmc3BsaXQgPSBzdWJzdHIoc3Ryc3RyKCRmaWxlc2l6ZSwgIi4iKSwgMCwgNCk7DQoJCQkkZnN0YXJ0ID0gZXhwbG9kZSgiLiIsICRmaWxlc2l6ZSk7DQoJCQkkZnN0YXJ0ID0gJGZzdGFydFswXTsJDQoJCQkkZmlsZXNpemUgPSAkZnN0YXJ0LiRmc3BsaXQ7DQoJCQkkZmlsZXNpemUgPSByb3VuZChzdHJfcmVwbGFjZSgiLCIsIi4iLCRmaWxlc2l6ZSksMikuIiBrYiI7DQoJCX0gZWxzZSB7DQoJCQkkZmlsZXNpemUgPSAoJGZpbGVzaXplLzEwMjQvMTAyNCk7DQoJCQkkZnNwbGl0ID0gc3Vic3RyKHN0cnN0cigkZmlsZXNpemUsICIuIiksIDAsIDQpOw0KCQkJJGZzdGFydCA9IGV4cGxvZGUoIi4iLCAkZmlsZXNpemUpOw0KCQkJJGZzdGFydCA9ICRmc3RhcnRbMF07DQoJCQkkZmlsZXNpemUgPSAkZnN0YXJ0LiRmc3BsaXQ7DQoJCQkkZmlsZXNpemUgPSByb3VuZChzdHJfcmVwbGFjZSgiLCIsIi4iLCRmaWxlc2l6ZSksMikuIiBtYiI7DQoJCX0NCgkJcmV0dXJuIHN0cl9yZXBsYWNlKCIsIiwiLiIsJGZpbGVzaXplKTsNCgl9DQoJDQogIA0KICAJLyoqDQogIAkgKiANCiAgCSAqIExpZWZlcnQgYWxsZSBEYXRlaWVuIGVpbmVzIFZlcnplaWNobmlzc2VzIHp1csO8Y2sgKEdhbGxlcnkgQmFzaWVyZW5kKQ0KICAJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCiAgCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGggLSBQZmFkIHp1bSBPcmRuZXINCiAgCSAqIEBwYXJhbSBib29sICRyZWN1cnNpdmUgLSBSZWt1cnNpdmUgZHVyY2ggYWxsZSBVbnRlcm9yZG5lcg0KICAJICogQHJldHVybiANCiAgCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RGlyRmlsZXMoJHBhdGgsJHJlY3Vyc2l2ZSkNCgl7DQoJCSRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0dhbGxlcnknKTsNCg0KCQkkcGF0aCA9IGVtcHR5KCRwYXRoKSA/ICcnIDogdHJpbSgkcGF0aCwgJy8nKSAuICcvJzsNCgkJJHVwZGlyID0gaXNfZGlyKCRwYXRoKSA/ICcnIDogJy4uLyc7DQoJCSRhbGxvd2V4dCA9IGV4cGxvZGUoJywnLCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd2VkX2V4dGVuc2lvbnMnLCcnKSk7DQoJCSRtYXhleHQgPSBhcnJheSgnanBnJywnanBlZycsJ2dpZicsJ3BuZycpOw0KCQkkb3V0cHV0ID0gYXJyYXkoKTsNCgkJaWYgKCAkaGFuZGxlID0gb3BlbmRpcihyZWFscGF0aCgkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoKSkgKQ0KCQl7DQoJCQl3aGlsZSAoIGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSApDQoJCQl7DQoJCQkJJGV4dCA9IHN1YnN0cigkZmlsZSwgc3RycnBvcygkZmlsZSwgJy4nKSArIDEpOw0KCQkJCWlmICggc3Vic3RyKCRmaWxlLDAsMSkgIT0gIi4iICYmIHN1YnN0cigkZmlsZSwwLHN0cmxlbihJTV9QUkVGSVgpKSAhPSBJTV9QUkVGSVggJiYgKChpbl9hcnJheShzdHJ0b2xvd2VyKCRleHQpLCRhbGxvd2V4dCkgJiYgaW5fYXJyYXkoc3RydG9sb3dlcigkZXh0KSwkbWF4ZXh0KSkgfHwgaXNfZGlyKCR1cGRpciAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhdGggLiAkZmlsZSkpICkNCgkJCQl7DQoJCQkJCSRmaWxlbmFtZSA9IGlzX2RpcigkdXBkaXIgLiBERUZBVUxUX0dBTExFUllfUEFUSCAuICRwYXRoIC4gJGZpbGUpID8gJGZpbGUgLiAnLycgOiAkZmlsZTsNCgkJCQkJJG91dHB1dFskcGF0aCAuICRmaWxlbmFtZV0gPSBhcnJheSgNCgkJCQkJCSdmaWxlbmFtZScgPT4gJGZpbGVuYW1lLA0KCQkJCQkJJ2ZpbGVwYXRoJyA9PiAkcGF0aCwNCgkJCQkJCSdmaWxlbWRhdGUnID0+IGRhdGUoIlktbS1kIEg6aTpzIiwgZmlsZW10aW1lKCR1cGRpciAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhdGggLiAkZmlsZSkpLA0KCQkJCQkpOw0KCQkJCQlpZiAoICRyZWN1cnNpdmUgJiYgaXNfZGlyKCR1cGRpciAuIERFRkFVTFRfR0FMTEVSWV9QQVRIIC4gJHBhdGggLiAkZmlsZSkgKQ0KCQkJCQl7DQoJCQkJCQkkb3V0cHV0ID0gYXJyYXlfbWVyZ2UoJG91dHB1dCwgc2VsZjo6R2V0ZGlyZmlsZXMoJHBhdGggLiAkZmlsZSwgJHJlY3Vyc2l2ZSkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJY2xvc2VkaXIoJGhhbmRsZSk7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIHNldCByZWN1cnNpdmUgY2htb2QNCgkgKiBAYXV0aG9yOiBodHRwOi8vc25pcHBsci5jb20vdmlldy81MzUwL3JlY3Vyc2l2ZS1jaG1vZC1pbi1waHAvDQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAcGFyYW0gc3RyaW5nICRwYXRoDQoJICogQHBhcmFtIGludCAkZmlsZVBlcm0NCgkgKiBAcGFyYW0gaW50ICRkaXJQZXJtDQoJICogQGZpbmFsDQoJICogQHJldHVybiBib29sZWFuDQoJICogDQoJICovDQoNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIHJlY3Vyc2l2ZUNobW9kICgkcGF0aCwgJGZpbGVQZXJtPTA2NDQsICRkaXJQZXJtPTA3NTUpIHsNCgkJLy8gQ2hlY2sgaWYgdGhlIHBhdGggZXhpc3RzDQoJCWlmICghZmlsZV9leGlzdHMoJHBhdGgpKSB7DQoJCQlyZXR1cm4oZmFsc2UpOw0KCQl9DQoJCQ0KCQlpZiAoc3RybGVuKCRmaWxlUGVybSkgPT0gMykgJGZpbGVQZXJtID0gIjAiIC4gJGZpbGVQZXJtOw0KCQlpZiAoc3RybGVuKCRkaXJQZXJtKSA9PSAzKSAgJGRpclBlcm0gPSAiMCIgLiAgJGRpclBlcm07DQoJCQ0KCQkvLyBTZWUgd2hldGhlciB0aGlzIGlzIGEgZmlsZQ0KCQlpZiAoaXNfZmlsZSgkcGF0aCkpIHsNCgkJCS8vIENobW9kIHRoZSBmaWxlIHdpdGggb3VyIGdpdmVuIGZpbGVwZXJtaXNzaW9ucw0KCQkJY2htb2QoJHBhdGgsICRmaWxlUGVybSk7DQoNCgkJCS8vIElmIHRoaXMgaXMgYSBkaXJlY3RvcnkuLi4NCgkJfSBlbHNlaWYgKGlzX2RpcigkcGF0aCkpIHsNCgkJCS8vIFRoZW4gZ2V0IGFuIGFycmF5IG9mIHRoZSBjb250ZW50cw0KCQkJJGZvbGRlcnNBbmRGaWxlcyA9IHNjYW5kaXIoJHBhdGgpOw0KDQoJCQkvLyBSZW1vdmUgIi4iIGFuZCAiLi4iIGZyb20gdGhlIGxpc3QNCgkJCSRlbnRyaWVzID0gYXJyYXlfc2xpY2UoJGZvbGRlcnNBbmRGaWxlcywgMik7DQoNCgkJCS8vIFBhcnNlIGV2ZXJ5IHJlc3VsdC4uLg0KCQkJZm9yZWFjaCAoJGVudHJpZXMgYXMgJGVudHJ5KSB7DQoJCQkJLy8gQW5kIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2FpbiByZWN1cnNpdmVseSwgd2l0aCB0aGUgc2FtZSBwZXJtaXNzaW9ucw0KCQkJCXNlbGY6OnJlY3Vyc2l2ZUNobW9kKCRwYXRoLiIvIi4kZW50cnksICRmaWxlUGVybSwgJGRpclBlcm0pOw0KCQkJfQ0KDQoJCQkvLyBXaGVuIHdlIGFyZSBkb25lIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnksIHdlIGNobW9kIHRoZSBkaXJlY3RvcnkgaXRzZWxmDQoJCQljaG1vZCgkcGF0aCwgJGRpclBlcm0pOw0KCQl9DQoNCgkJLy8gRXZlcnl0aGluZyBzZWVtZWQgdG8gd29yayBvdXQgd2VsbCwgcmV0dXJuIHRydWUNCgkJcmV0dXJuKHRydWUpOw0KCX0NCgkNCgkNCgkvKioNCgkgKiANCgkgKiBHZXQgdGhlIGluc3RhbGxlZCBqUXVlcnkgRmlsZSBjbXNfZ2V0X2pxdWVyeSBmdW5jdGlvbg0KCSAqIEBhdXRob3I6IEx1a2FzIEJsYXR0ZXIgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KCSAqIEBjb3B5cmlnaHQ6IEdQTCAyDQoJICogQGZpbmFsDQoJICogQHJldHVybiBzdHJpbmcgLSBmaWxlbmFtZQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0alF1ZXJ5KCkgew0KCQkNCgkJJGV4Y2x1ZGUgPSAianF1ZXJ5LXVpLm1pbi5qcyxqcXVlcnkudWkubmVzdGVkU29ydGFibGUuanMsanF1ZXJ5Lmpzb24ubWluLmpzLGpxdWVyeS5qc29uLmpzLGpxdWVyeS11aS0xLjguMTQubWluLmpzLGpxdWVyeS51aS5uZXN0ZWRTb3J0YWJsZS0xLjMuNC5qcyxqcXVlcnkuanNvbi0yLjIuanMiOw0KCQkkc3NsID0gZmFsc2U7DQoJCSRjZG4gPSBmYWxzZTsNCgkJJGFwcGVuZCA9ICIiOw0KCQkkY3VzdG9tX3Jvb3QgPSAiIjsNCgkJDQoJCSRqcXVlcnkgPSB0cmltKGNtc19nZXRfanF1ZXJ5KCRleGNsdWRlLCRzc2wsJGNkbiwkYXBwZW5kLCRjdXN0b21fcm9vdCksIlxuIik7DQoJCWlmICghJGpxdWVyeSkgJGpxdWVyeSA9ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS1sYXRlc3QubWluLmpzIj48L3NjcmlwdD4nOw0KCQkNCgkJcmV0dXJuICRqcXVlcnk7DQoJfQ0KCQ0KCS8qKg0KCSAqIA0KCSAqIEVyemV1Z3QgZWluZSBadWZhbGxzcmVpaGUgYXVzIFphaGxlbiB1bmQgQnVjaHN0YWJlbg0KCSAqIEBwYXJhbSBpbnQgJGxlbmd0aCAtIEzDpG5nZSBkZXMgUmFuZG9tLVN0cmluZ3MNCgkgKi8NCglmdW5jdGlvbiByYW5kb21BbHBoYU51bSgkbGVuZ3RoID0gOCkNCgl7DQoJCWlmICgxID4gJGxlbmd0aCkgJGxlbmd0aCA9IDg7DQoJCSRjaGFycyA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7DQoJCSRudW1DaGFycyA9IDYyOw0KCQkkc3RyaW5nID0gJyc7DQoJCWZvciAoJGkgPSAwOyAkaSA8ICRsZW5ndGg7ICRpKyspIHsNCgkJCSRzdHJpbmcgLj0gJGNoYXJzW210X3JhbmQoMCwgJG51bUNoYXJzIC0gMSldOw0KCQl9DQoJCXJldHVybiAkc3RyaW5nOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBBcnJheSBzb3J0aWVyZW4NCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5DQoJICogQHBhcmFtIGFycmF5ICRhcmd1bWVudHMNCgkgKiBAcGFyYW0gYXJyYXkgJGtleXMNCgkgKiBAc291cmNlIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24udWFzb3J0LnBocCM0MjcyMw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXJyYXlTb3J0KCRhcnJheSwgJGFyZ3VtZW50cyA9IGFycmF5KCksICRrZXlzID0gdHJ1ZSkNCgl7DQoJCS8vIGNvbXBhcmluZyBmdW5jdGlvbiBjb2RlDQoJCSRjb2RlID0gIlwkcmVzdWx0PTA7ICI7DQoNCgkJLy8gZm9yZWFjaCBzb3J0aW5nIGFyZ3VtZW50IChhcnJheSBrZXkpDQoJCWZvcmVhY2ggKCRhcmd1bWVudHMgYXMgJGFyZ3VtZW50KQ0KCQl7DQoJCQlpZiAoICFlbXB0eSgkYXJndW1lbnQpICkNCgkJCXsNCgkJCQkvLyBvcmRlciBmaWVsZA0KCQkJCSRmaWVsZCA9IHN1YnN0cigkYXJndW1lbnQsIDIsIHN0cmxlbigkYXJndW1lbnQpKTsNCg0KCQkJCS8vIHNvcnQgdHlwZSAoInMiIC0+IHN0cmluZywgIm4iIC0+IG51bWVyaWMpDQoJCQkJJHR5cGUgPSAkYXJndW1lbnRbMF07DQoNCgkJCQkvLyBzb3J0IG9yZGVyICgiKyIgLT4gIkFTQyIsICItIiAtPiAiREVTQyIpDQoJCQkJJG9yZGVyID0gJGFyZ3VtZW50WzFdOw0KDQoJCQkJLy8gYWRkICJpZiIgc3RhdGVtZW50LCB3aGljaCBjaGVja3MgaWYgdGhpcyBhcmd1bWVudCBzaG91bGQgYmUgdXNlZA0KCQkJCSRjb2RlIC49ICJpZiAoIUlzX051bWVyaWMoXCRyZXN1bHQpIHx8IFwkcmVzdWx0ID09IDApICI7DQoNCgkJCQkvLyBpZiAibnVtZXJpYyIgc29ydCB0eXBlDQoJCQkJaWYgKHN0cnRvbG93ZXIoJHR5cGUpID09ICJuIikNCgkJCQl7DQoJCQkJCSRjb2RlIC49ICRvcmRlciA9PSAiLSIgPyAiXCRyZXN1bHQgPSAoXCRhLT57JGZpZWxkfSA+IFwkYi0+eyRmaWVsZH0gPyAtMSA6IChcJGEtPnskZmllbGR9IDwgXCRiLT57JGZpZWxkfSA/IDEgOiAwKSk7IiA6ICJcJHJlc3VsdCA9IChcJGEtPnskZmllbGR9ID4gXCRiLT57JGZpZWxkfSA/IDEgOiAoXCRhLT57JGZpZWxkfSA8IFwkYi0+eyRmaWVsZH0gPyAtMSA6IDApKTsgIjsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gaWYgInN0cmluZyIgc29ydCB0eXBlDQoJCQkJCSRjb2RlIC49ICRvcmRlciA9PSAiLSIgPyAiXCRyZXN1bHQgPSBzdHJjb2xsKFwkYS0+eyRmaWVsZH0sIFwkYi0+eyRmaWVsZH0pICogLTE7IiA6ICJcJHJlc3VsdCA9IHN0cmNvbGwoXCRhLT57JGZpZWxkfSwgXCRiLT57JGZpZWxkfSk7ICI7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCS8vIHJldHVybiByZXN1bHQNCgkJJGNvZGUgLj0gInJldHVybiBcJHJlc3VsdDsiOw0KDQoJCS8vIGNyZWF0ZSBjb21wYXJpbmcgZnVuY3Rpb24NCgkJJGNvbXBhcmUgPSBjcmVhdGVfZnVuY3Rpb24oJyRhLCAkYicsICRjb2RlKTsNCg0KCQkvLyBzb3J0IGFycmF5IGFuZCBwcmVzZXJ2ZSBrZXlzDQoJCXVhc29ydCgkYXJyYXksICRjb21wYXJlKTsNCgkJDQoJCS8vIHJldHVybiBhcnJheQ0KCQlyZXR1cm4gJGFycmF5Ow0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBBcnJheSBzb3J0aWVyZW4NCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5DQoJICogQHBhcmFtIHN0cmluZyAka2V5IC0tPiAha2V5bmFtZSA9IGRlc2M7IGtleW5hbWUgPSBhc2MgDQoJICogQHNvdXJjZSBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2RlL2Z1bmN0aW9uLmFycmF5LW11bHRpc29ydC5waHAjOTA1NDENCgkgKi8NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGFycmF5X3NvcnRfZnVuYygkYSwkYj1OVUxMKSB7DQoJCXN0YXRpYyAka2V5czsNCgkJaWYoJGI9PT1OVUxMKSByZXR1cm4gJGtleXM9JGE7DQoJCWZvcmVhY2goJGtleXMgYXMgJGspIHsNCgkJCWlmKEAka1swXT09JyEnKSB7DQoJCQkJJGs9c3Vic3RyKCRrLDEpOw0KCQkJCWlmKEAkYVska10hPT1AJGJbJGtdKSB7DQoJCQkJCXJldHVybiBzdHJjbXAoQCRiWyRrXSxAJGFbJGtdKTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlIGlmKEAkYVska10hPT1AJGJbJGtdKSB7DQoJCQkJcmV0dXJuIHN0cmNtcChAJGFbJGtdLEAkYlska10pOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAwOw0KCX0NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gYXJyYXlfc29ydCgmJGFycmF5KSB7DQoJCWlmKCEkYXJyYXkpIHJldHVybiAka2V5czsNCgkJJGtleXM9ZnVuY19nZXRfYXJncygpOw0KCQlhcnJheV9zaGlmdCgka2V5cyk7DQoJCWFycmF5X3NvcnRfZnVuYygka2V5cyk7DQoJCXVzb3J0KCRhcnJheSwic2VsZjo6YXJyYXlfc29ydF9mdW5jIik7DQoJfQ0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiB0YkFycmF5U29ydCgkYXJyYXkpIHsNCgkJaWYoISRhcnJheSkgcmV0dXJuICRrZXlzOw0KCQkka2V5cz1mdW5jX2dldF9hcmdzKCk7DQoJCWFycmF5X3NoaWZ0KCRrZXlzKTsNCgkJYXJyYXlfc29ydF9mdW5jKCRrZXlzKTsNCgkJdXNvcnQoJGFycmF5LCJzZWxmOjphcnJheV9zb3J0X2Z1bmMiKTsNCgkJIA0KCQlyZXR1cm4gJGFycmF5Ow0KCX0NCgkNCgkNCgkNCgkNCgkvKioNCgkgKiBUZXN0cyBpZiBhbiBpbnB1dCBpcyB2YWxpZCBQSFAgc2VyaWFsaXplZCBzdHJpbmcuDQoJICoNCgkgKiBDaGVja3MgaWYgYSBzdHJpbmcgaXMgc2VyaWFsaXplZCB1c2luZyBxdWljayBzdHJpbmcgbWFuaXB1bGF0aW9uDQoJICogdG8gdGhyb3cgb3V0IG9idmlvdXNseSBpbmNvcnJlY3Qgc3RyaW5ncy4gVW5zZXJpYWxpemUgaXMgdGhlbiBydW4NCgkgKiBvbiB0aGUgc3RyaW5nIHRvIHBlcmZvcm0gdGhlIGZpbmFsIHZlcmlmaWNhdGlvbi4NCgkgKg0KCSAqIFZhbGlkIHNlcmlhbGl6ZWQgZm9ybXMgYXJlIHRoZSBmb2xsb3dpbmc6DQoJICogPHVsPg0KCSAqIDxsaT5ib29sZWFuOiA8Y29kZT5iOjE7PC9jb2RlPjwvbGk+DQoJICogPGxpPmludGVnZXI6IDxjb2RlPmk6MTs8L2NvZGU+PC9saT4NCgkgKiA8bGk+ZG91YmxlOiA8Y29kZT5kOjAuMjs8L2NvZGU+PC9saT4NCgkgKiA8bGk+c3RyaW5nOiA8Y29kZT5zOjQ6InRlc3QiOzwvY29kZT48L2xpPg0KCSAqIDxsaT5hcnJheTogPGNvZGU+YTozOntpOjA7aToxO2k6MTtpOjI7aToyO2k6Mzt9PC9jb2RlPjwvbGk+DQoJICogPGxpPm9iamVjdDogPGNvZGU+Tzo4OiJzdGRDbGFzcyI6MDp7fTwvY29kZT48L2xpPg0KCSAqIDxsaT5udWxsOiA8Y29kZT5OOzwvY29kZT48L2xpPg0KCSAqIDwvdWw+DQoJICogQGF1dGhvcglDaHJpcyBTbWl0aCA8Y29kZStwaHBAY2hyaXMuY3MyNzgub3JnPiwgRnJhbmsgQsO8bHRnZSA8ZnJhbmtAYnVlbHRnZS5kZT4NCgkgKiBAY29weXJpZ2h0CUNvcHlyaWdodCAoYykgMjAwOSBDaHJpcyBTbWl0aCAoaHR0cDovL3d3dy5jczI3OC5vcmcvKSwgMjAxMSBGcmFuayBCw7xsdGdlIChodHRwOi8vYnVlbHRnZS5kZSkNCgkgKiBAbGljZW5zZQlodHRwOi8vc2FtLnpveS5vcmcvd3RmcGwvIFdURlBMDQoJICogQHBhcmFtCXN0cmluZwkkdmFsdWUJVmFsdWUgdG8gdGVzdCBmb3Igc2VyaWFsaXplZCBmb3JtDQoJICogQHBhcmFtCW1peGVkCSRyZXN1bHQJUmVzdWx0IG9mIHVuc2VyaWFsaXplKCkgb2YgdGhlICR2YWx1ZQ0KCSAqIEByZXR1cm4JYm9vbGVhbgkJCVRydWUgaWYgJHZhbHVlIGlzIHNlcmlhbGl6ZWQgZGF0YSwgb3RoZXJ3aXNlIEZBTFNFDQoJICovDQoJc3RhdGljIHB1YmxpYyBmaW5hbCBmdW5jdGlvbiBpc19zZXJpYWxpemVkKCAkdmFsdWUsICYkcmVzdWx0ID0gbnVsbCApIHsNCgkJLy8gQml0IG9mIGEgZ2l2ZSBhd2F5IHRoaXMgb25lDQoJCWlmICggISBpc19zdHJpbmcoICR2YWx1ZSApICkgew0KCQkJcmV0dXJuIEZBTFNFOw0KCQl9DQoJDQoJCS8vIFNlcmlhbGl6ZWQgRkFMU0UsIHJldHVybiBUUlVFLiB1bnNlcmlhbGl6ZSgpIHJldHVybnMgRkFMU0Ugb24gYW4NCgkJLy8gaW52YWxpZCBzdHJpbmcgb3IgaXQgY291bGQgcmV0dXJuIEZBTFNFIGlmIHRoZSBzdHJpbmcgaXMgc2VyaWFsaXplZA0KCQkvLyBGQUxTRSwgZWxpbWluYXRlIHRoYXQgcG9zc2liaWxpdHkuDQoJCWlmICggJ2I6MDsnID09PSAkdmFsdWUgKSB7DQoJCQkkcmVzdWx0ID0gRkFMU0U7DQoJCQlyZXR1cm4gVFJVRTsNCgkJfQ0KCQ0KCQkkbGVuZ3RoCT0gc3RybGVuKCR2YWx1ZSk7DQoJCSRlbmQJPSAnJzsNCgkJDQoJCWlmICggaXNzZXQoICR2YWx1ZVswXSApICkgew0KCQkJc3dpdGNoICgkdmFsdWVbMF0pIHsNCgkJCQljYXNlICdzJzoNCgkJCQkJaWYgKCAnIicgIT09ICR2YWx1ZVskbGVuZ3RoIC0gMl0gKQ0KCQkJCQkJcmV0dXJuIEZBTFNFOw0KCQkJCQkNCgkJCQljYXNlICdiJzoNCgkJCQljYXNlICdpJzoNCgkJCQljYXNlICdkJzoNCgkJCQkJLy8gVGhpcyBsb29rcyBvZGQgYnV0IGl0IGlzIHF1aWNrZXIgdGhhbiBpc3NldCgpaW5nDQoJCQkJCSRlbmQgLj0gJzsnOw0KCQkJCWNhc2UgJ2EnOg0KCQkJCWNhc2UgJ08nOg0KCQkJCQkkZW5kIC49ICd9JzsNCgkJDQoJCQkJCWlmICggJzonICE9PSAkdmFsdWVbMV0gKQ0KCQkJCQkJcmV0dXJuIEZBTFNFOw0KCQkNCgkJCQkJc3dpdGNoICggJHZhbHVlWzJdICkgew0KCQkJCQkJY2FzZSAwOg0KCQkJCQkJY2FzZSAxOg0KCQkJCQkJY2FzZSAyOg0KCQkJCQkJY2FzZSAzOg0KCQkJCQkJY2FzZSA0Og0KCQkJCQkJY2FzZSA1Og0KCQkJCQkJY2FzZSA2Og0KCQkJCQkJY2FzZSA3Og0KCQkJCQkJY2FzZSA4Og0KCQkJCQkJY2FzZSA5Og0KCQkJCQkJYnJlYWs7DQoJCQ0KCQkJCQkJZGVmYXVsdDoNCgkJCQkJCQlyZXR1cm4gRkFMU0U7DQoJCQkJCX0NCgkJCQljYXNlICdOJzoNCgkJCQkJJGVuZCAuPSAnOyc7DQoJCQkJDQoJCQkJCWlmICggJHZhbHVlWyRsZW5ndGggLSAxXSAhPT0gJGVuZFswXSApDQoJCQkJCQlyZXR1cm4gRkFMU0U7DQoJCQkJYnJlYWs7DQoJCQkJDQoJCQkJZGVmYXVsdDoNCgkJCQkJcmV0dXJuIEZBTFNFOw0KCQkJfQ0KCQl9DQoJCQ0KCQlpZiAoICggJHJlc3VsdCA9IEB1bnNlcmlhbGl6ZSgkdmFsdWUpICkgPT09IEZBTFNFICkgew0KCQkJJHJlc3VsdCA9IG51bGw7DQoJCQlyZXR1cm4gRkFMU0U7DQoJCX0NCgkJDQoJCXJldHVybiBUUlVFOw0KCX0NCgkNCgkvKioNCgkgKiANCgkgKiBGw7xndCBkZW0gVGVtcGxhdGUgdm9yIGRlbSBkZWZpbmllcnRlbiBUYWcgKDxib2R5PiBvZGVyIDxoZWFkPikgZWluZW4gZGVmaW5pZXJ0ZW4gSW5oYWx0IHp1DQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IC0gVGVtcGxhdGUNCgkgKiBAcGFyYW0gc3RyaW5nICRhZGQgLSBEYXRlbiBkaWUgaGluenVnZWbDvGd0IHdlcmRlbiBzb2xsZW4NCgkgKiBAcGFyYW0gc3RyaW5nICR0YWcgLSBIVE1MIFRhZw0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBhZGRIdG1sQmVmb3JUYWcoJGNvbnRlbnQsICRhZGQsICR0YWcpDQoJew0KCQkkYWRkID0gIlxyXG4iLlRPT0xCT1hfSURFTlQuJGFkZDsNCgkJJHBvcyA9IHN0cmlwb3MoJGNvbnRlbnQsc3Vic3RyKCR0YWcsIDAsIC0xKSk7DQoJCWlmKCAkcG9zICE9PSBGQUxTRSApIHsNCgkJCSRjb250ZW50ID0gc3Vic3RyKCRjb250ZW50LCAwLCAkcG9zKSAuICRhZGQgLiBzdWJzdHIoJGNvbnRlbnQsICRwb3MpOw0KCQl9DQoJCQ0KCQlyZXR1cm4gJGNvbnRlbnQ7DQoJfQ0KCQ0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gX2Jhc2U2NHVybF9lbmNvZGUoJGRhdGEpIHsNCgkJcmV0dXJuIHJ0cmltKHN0cnRyKGJhc2U2NF9lbmNvZGUoanNvbl9lbmNvZGUoJGRhdGEpKSwgJysvJywgJy1fJyksICc9Jyk7DQoJfQ0KCQ0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gX2Jhc2U2NHVybF9kZWNvZGUoJGRhdGEpIHsNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoc3RyX3BhZChzdHJ0cigkZGF0YSwgJy1fJywgJysvJyksIHN0cmxlbigkZGF0YSkgJSA0LCAnPScsIFNUUl9QQURfUklHSFQpKTsNCgl9IA0KCQ0KCS8qKg0KCSAqIFNpbXBsZSBoZWxwZXIgdG8gZGVidWcgdG8gdGhlIGNvbnNvbGUNCgkgKiBAYXV0aG9yICBGcmFuayBCw7xsdGdlDQoJICogQHNvdXJjZSBodHRwczovL2dpdGh1Yi5jb20vYnVlbHRnZS9EZWJ1Zy1PYmplY3RzL2Jsb2IvbWFzdGVyL2RlYnVnX29iamVjdHMucGhwI0w0NTYNCgkgKiBAcGFyYW0gQXJyYXksIFN0cmluZyAkZGF0YQ0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWJ1ZzJDb25zb2xlKCAkZGF0YSApIHsNCg0KCQkkb3V0cHV0ID0gJyc7DQoNCgkJaWYgKCBpc19hcnJheSggJGRhdGEgKSApIHsNCgkJCSRvdXRwdXQgLj0gIjxzY3JpcHQ+Y29uc29sZS53YXJuKCAnRGVidWcgT2JqZWN0cyB3aXRoIEFycmF5LicgKTsgY29uc29sZS5sb2coICciIC4gaW1wbG9kZSggJywnLCAkZGF0YSkgLiAiJyApOzwvc2NyaXB0PiI7DQoJCX0gZWxzZSBpZiAoIGlzX29iamVjdCggJGRhdGEgKSApIHsNCgkJCSRkYXRhID0gdmFyX2V4cG9ydCggJGRhdGEsIHRydWUgKTsNCgkJCSRkYXRhID0gZXhwbG9kZSggIlxuIiwgJGRhdGEgKTsNCgkJCWZvcmVhY2goICRkYXRhIGFzICRsaW5lICkgew0KCQkJCWlmICggdHJpbSggJGxpbmUgKSApIHsNCgkJCQkJJGxpbmUgPSBhZGRzbGFzaGVzKCAkbGluZSApOw0KCQkJCQkkb3V0cHV0IC49ICJjb25zb2xlLmxvZyggJ3skbGluZX0nICk7IjsNCgkJCQl9DQoJCQl9DQoJCQkkb3V0cHV0ID0gIjxzY3JpcHQ+Y29uc29sZS53YXJuKCAndGJEZWJ1ZyB3aXRoIE9iamVjdC4nICk7ICRvdXRwdXQ8L3NjcmlwdD4iOw0KCQl9IGVsc2Ugew0KCQkJJG91dHB1dCAuPSAiPHNjcmlwdD5jb25zb2xlLmxvZyggJ3RiRGVidWc6IHskZGF0YX0nICk7PC9zY3JpcHQ+IjsNCgkJfQ0KDQoJCXJldHVybiAkb3V0cHV0Ow0KCX0NCg0KDQoJLyoqDQoJICogVGhpcyBmdW5jdGlvbiBpcyB0byByZXBsYWNlIFBIUCdzIGV4dHJlbWVseSBidWdneSByZWFscGF0aCgpLg0KCSAqIEBwYXJhbSBzdHJpbmcgVGhlIG9yaWdpbmFsIHBhdGgsIGNhbiBiZSByZWxhdGl2ZSBldGMuDQoJICogQHJldHVybiBzdHJpbmcgVGhlIHJlc29sdmVkIHBhdGgsIGl0IG1pZ2h0IG5vdCBleGlzdC4NCgkgKiBAc291cmNlOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQwNDk4NTYvcmVwbGFjZS1waHBzLXJlYWxwYXRoDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiB0cnVlcGF0aCgkcGF0aCl7DQoJCS8vIHdoZXRoZXIgJHBhdGggaXMgdW5peCBvciBub3QNCgkJJHVuaXBhdGg9c3RybGVuKCRwYXRoKT09MCB8fCAkcGF0aHswfSE9Jy8nOw0KCQkvLyBhdHRlbXB0cyB0byBkZXRlY3QgaWYgcGF0aCBpcyByZWxhdGl2ZSBpbiB3aGljaCBjYXNlLCBhZGQgY3dkDQoJCWlmKHN0cnBvcygkcGF0aCwnOicpPT09ZmFsc2UgJiYgJHVuaXBhdGgpDQoJCSRwYXRoPWdldGN3ZCgpLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhdGg7DQoJCS8vIHJlc29sdmUgcGF0aCBwYXJ0cyAoc2luZ2xlIGRvdCwgZG91YmxlIGRvdCBhbmQgZG91YmxlIGRlbGltaXRlcnMpDQoJCSRwYXRoID0gc3RyX3JlcGxhY2UoYXJyYXkoJy8nLCAnXFwnKSwgRElSRUNUT1JZX1NFUEFSQVRPUiwgJHBhdGgpOw0KCQkkcGFydHMgPSBhcnJheV9maWx0ZXIoZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCAkcGF0aCksICdzdHJsZW4nKTsNCgkJJGFic29sdXRlcyA9IGFycmF5KCk7DQoJCWZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgew0KCQkJaWYgKCcuJyAgPT0gJHBhcnQpIGNvbnRpbnVlOw0KCQkJaWYgKCcuLicgPT0gJHBhcnQpIHsNCgkJCQlhcnJheV9wb3AoJGFic29sdXRlcyk7DQoJCQl9IGVsc2Ugew0KCQkJCSRhYnNvbHV0ZXNbXSA9ICRwYXJ0Ow0KCQkJfQ0KCQl9DQoJCSRwYXRoPWltcGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwgJGFic29sdXRlcyk7DQoJCS8vIHJlc29sdmUgYW55IHN5bWxpbmtzDQoJCWlmKGZpbGVfZXhpc3RzKCRwYXRoKSAmJiBsaW5raW5mbygkcGF0aCk+MCkkcGF0aD1yZWFkbGluaygkcGF0aCk7DQoJCS8vIHB1dCBpbml0aWFsIHNlcGFyYXRvciB0aGF0IGNvdWxkIGhhdmUgYmVlbiBsb3N0DQoJCSRwYXRoPSEkdW5pcGF0aCA/ICcvJy4kcGF0aCA6ICRwYXRoOw0KCQlyZXR1cm4gJHBhdGg7DQoJfQ0KCQ0KCQ0KCS8qKg0KCSAqDQoJICogQGFic3RyYWN0IENoZWNrIGlmIHN0cmluZyBpcyBiYXNlNjQgZW5jb2RlLCBiZWkgZWluemVsbmVuIFfDtnJ0ZXJuIHNjaGzDpGd0IGRpZXNlIFByw7xmdW5nIGZlaGwuDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciA8bGJAYmxhdHRlcnRlY2guY2g+DQoJICogQGNvcHlyaWdodDogR1BMIDINCgkgKiBAZmluYWwNCgkgKiBAcGFyYW0gc3RyaW5nICRzdHIgLSBiYXNlNjRlbmNvZGUgU3RyaW5nDQoJICogQHJldHVybiBib29sZWFuDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpc19iYXNlNjRjb2RlKCRzdHIpDQoJew0KCQlpZiAoYmFzZTY0X2RlY29kZSgkc3RyLCB0cnVlKSkgDQoJCQlyZXR1cm4gdHJ1ZTsNCgkJCQ0KCQlyZXR1cm4gZmFsc2U7CQ0KCX0NCgkNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldEZpbGVFeHQoJGZpbGVuYW1lKQ0KCXsNCgkJcmV0dXJuIHN0cnRvbG93ZXIoZW5kKGV4cGxvZGUoJy4nLCRmaWxlbmFtZSkpKTsNCgl9DQoNCgkNCgkvKioNCgkgKiANCgkgKiBJY29uLUJpYmxpb3RoZWsNCgkgKiBAcGFyYW0gc3RyaW5nICRleHQgLSBEYXRlaS1FeHRlbnNpb24NCgkgKiBAcmV0dXJuIGltYWdlIHN0cmVhbQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0RmlsZUljb25CYXNlNjQoJGV4dCkNCgl7DQoJCSRfaW1hZ2VzID0gYXJyYXkoKTsNCgkJCQkNCgkJJF9pbWFnZXNbImRlbCJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSmRTVVJCVkRqTHBaUDdTMU5oR01mOVc3WWZvZ1NKYm9TRQ0KCQlVVkNZOHpKMzF0cmNwczZ6VEk5YkxHSnBqcDFobWtHTnhWejRRNmlsZHRYS1h6Sk5iSlJhUm1yWG9lV3g4dEpPVFdwdG5yTnJ5cmU1DQoJCVlDWXVJM3JoKzh2TCsvbThQQS9Qa3dJZzVYK3k1bUpXcnhmT1VCWG05MVFaTTZVbHVVbXRobnRIcXBseFVtbDJsY2lGNndybWRIcmkNCgkJSTBXeDN4dzJoQWVkaUx3WlJXUmtDUHpkRHN3YVN2R3FrR0NmcThWRVVzRXlQRjFPOFF1M083QTA5UmJSdmp1SXR0c1JiVDZISHplYg0KCQlzRGpjQjQvSmdGRmxOdjlNbmttc0Vzem9kSUlZN09hdXQyT0pjU0Y2OFF4OGRndjh0bXFFTDFnUWFhQVJ0cDVBK040TnpCMGxNWHhvDQoJCW4vdXhiSThnSVlqQjlIeXRHWXV1c2ZpUElRY043MWtqZ25XNlZlRk9rZ2gzWGNITHZBd01TRFBvaE9BRGRZUUpkRjFGdExNWlBtc2wNCgkJdmhaSmsyYWhrZ1J2cTRISFVvV0hSRHFURUREbDJtRGtmaGVpRGd0OHB3MzQwL0VvY3VDbEN1RnZib1F6YjBjd0laZ2tpNEtoemxhRQ0KCQk2dzBJbmlwYlZ6QmZxb0svcVJIOTRpMHJnb2tTRmVPMTFpQmtwOEVkVjhjZkpvMHlENzVhRTJaTlJ2U0owbFpLY0JYTGFVWW1RckN6DQoJCURUNnRETjVTeVJxWWxXZURMWkFnMEg0SlErSnQ2TTNhdE5MRTEwVlN3UXNONFo2cjBDQndxelhlc0htVitCZW95QVVyaThFeU1maTINCgkJRm93WFM1ZGhkN2RvbzJEVklJMFY1QkFqaWdQODlHRVZBdGRhOGIyZWhvZFU0ck5hQVcrZEdmemxGa3lvODlHVGxjckhZQ0xwS0QrVg0KCQk3eWVlSE56TGprcDI0VXUxRWQ2RzgvRjhxanFHUnpsYmwySDJkempwTWcxS2R3c0h4T2xtSjdHVGVaQy9uZXNYYmVaNmM5T1ludXhVDQoJCWMzZm1CdUZmdC9GZjh4TWQwczY1U1hJYi9nQUFBQUJKUlU1RXJrSmdnZz09IjsNCgkJDQoJCSRfaW1hZ2VzWyJhcmNoaXZlIl0gPSAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMA0KCQlVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFKbVNVUkJWRGpMaFpOTlM1UlJHSWF2OCtITXZETk81WmhPDQoJCVlxWFFGMkZnVk5SQ0NLTTJFYlExb2syYi9BRzE2Ri8wZ2U1cVV3aXRnaGJXb29pa2lJaEkzQVFWRkVSK1ZzeU16dGc3dnVlY3A0VTINCgkJT1JINXdMTTVjSzduNXI2NWxZZ0FvSlRhRGhRQncvOW5BZmdpSWdFQUVXRU5jamlPNDNLU0pONDVKLy9hT0k1bFpHVGtCdEFMYUJGcA0KCQlBaHhOa3NSWHExV3AxV3FOclZRcVVpcVZaSDUrWHB4ek1qczdLNk9qb3cySW1yaTlaMURudGp3bzJkT2Jacjd2cEtYRm9EVkF3RnBODQoJCXZSNnphOWR1K3ZyNktSUUtyS3lzRUVKZ2JHenM1dkR3OERYMS9ONlJyeDBIT3JwZnZPcW5XczBDQ2dRa2FKVEpFa0lBSEVOREZ5Z1cNCgkJaTAxbVdHdVAyVncrS25UM2RqUFVNMGVMelpPNEw2aWt6dFF6NkRsMmk0ZVB4Z2srSVlveWxNdGxRZ2c0NStqczdGeUZLS1VrL2xsaA0KCQlldnBsZzl6VHRSOFJDMEFtU2xHdHJHQ014VnFGOXg1ai9nUmxSUUxaYklidDNmdlc0bHdtcFMwSWhDQTRGd2dFakRGb3JWRksvVGE5DQoJCW9ZRGE4amRtcHQ4M0huZHU4NkRhRVFrZ0hna0JyWFhUNVFhQTRGdWlxSTNpdGw0SVB6SFdrN0c1TlFVQlFnSVNVRW9CWUl4cFZsQXINCgkJbGU5K2ZDYm50Rlk2cU0yWjRCT1dhekZ6UzEzVVByd2psVXF6dUZodFhGOU5aWjBDbjdoTGM1OW1ybHkrL3VQUStPTzNUKzZQUDhXNw0KCQlPcEgxZko2Y3BMVTFoVXNTcGhjcVJMbE5GSEs2R1hEODRudXZsQ29EUzFGcmdabjI4K1Q1em9tOTMzanplb0tweVplWTlvUGNlT0pwDQoJCXoxZTRlcmJ0THcvV1RUQlpXVnBhVk5tY1l1dldEazZlT3NQQXdDQ0xzZUhPcENPZk5nMHZnQUNnMXJYeFNMMWVuekRHWkFDOVFTT0QNCgkJOTM0NW5VNFByZ2ZzV0t2elJwOS9qd2NXZmdGN1ZFS1hmSFk1a3dBQUFBQkpSVTVFcmtKZ2dnPT0iOw0KCQkkX2ltYWdlc1siYXVkaW8iXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUl2U1VSQlZEakxqWlBMYXhOUkZJZXJpUCtBTzdHZzduUlgNCgkJcW8xb2dvS0NLMEZiaWc4UXV4S2hQb3AwNFNZTE5ZcWxLcEVtUWxEQlJSY0ZGV2xCcXFKWUxWcGJxNmt0YVJvMGFXbWFtVXhtSnBONQ0KCQladktvUCsrOW1tbHFXdXpBdDdqYytYMkhjeTZuRGtBZGhYeGJDSTJFcHYrd2xiRGV5VlVKR20zYnpwVktwY1Z5dVl5VklQY0lCQUwzDQoJCXFpWFZnaVlhTmd3RHBtazZxS29LUlZFZ0NBS1Q4RHlQWUREb1NDcmhkWUhyTzlxemtkT1F2cCtFK08wNGhDK3RFRDYzZ0JzK1FpRG4NCgkJaFFnVFdKWUZXaVFVQ3YyUlVFSC9nNFlOWHdkY1QvVkVKNnhrRjh6RURSaXhxMUNucmlEOTRTaWtIMDhnaWtKTlMyd21WTER3eWJPTg0KCQlIM0diTnQ4RFkrWU1yRGsvdEdrdmhPRm1LUEUrcHhWSmtwREpaTUJ4M0pKQUhOKy9NVFBxOGFteGR0ajhmV2pod3pCK2RpSDVhZzl5DQoJCThWNlF1YkRoVVltbWFXd2VzaXd2Q1lSUnR5djljYTlvYzM3a2szZWdUYmJCaVBvd1AraUdPSEdUMEExaDdCclM0M2VoaVhIb3VzNUUNCgkJam9DRXgzSXpGNkZNbllNY1Bnczk1aU9DVzFERFhxVGZuRUJxc0JuUlI5c2hUdllpYnloc2lCUkh3TDEzZGFiZTdyNzk3dUhPeDNLaw0KCQltMVQySURmaGhUUnlBZk1EaDVBYXVveDhOczVhS1JRS0ROclNzaUhTWjZTSG9xMWk5bmtEdU5mSGtIaTJEOWxvSHd0U2lzVWlnNFpYDQoJCUZhU0cycEI4Y1pCVVBZK2lsYTBKVjFNajhGL2EzREhiZndEcTNNdGxiMTJSL0V1Tm9LTjEweWxMbXY2MTJoNnN3S0lqK0N2WlJRWmsNCgkJMG91MWhNbS9PdHZlS2tFOWxheGhuU3ZRMWEvL0RWOWF4ZDVOU0hsQ0FBQUFBRWxGVGtTdVFtQ0MiOw0KCQkkX2ltYWdlc1siY29kZSJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSHRTVVJCVkRqTGpaTTlUOXRRRklZcFE1ZU9NQktsVzZlVw0KCQlJUWlwYThSZlFLUWdoRUFLcVpnS0ZRZ21GbjVBV3lWRENpcFZRWkMyRXFCV2xFcWRPMlJDcEFzc1FCUnN4MSsxbmRpeDh3RnZmVzZ3DQoJCWNVaFFzZlRJMGozM1BEN24rTjR1QUYyRSsvUzVSRndHLzhOamwyNC9MeUNJT0k2ajErdjF5MGFqZ1U2NGNTU1R5YmRCU1ZBd1NNbW0NCgkJYWNLeUxCL0RNS0JwR2tSUlpCSkJFSkJLcFh5SmwveUFCTFRCdG0xVXExWDJKc3JsTW5SZGh5UkpURkNwVkVBZlNhZlRUVWxRb0ZzMQ0KCQlsdXhCQWtvb2xVcVFaYm10SlRZVFQvQW9ISW5PZnBjd3RWdGt3Y1NCZ3JrREdZcGgrNjBvaXNJcTRYbStWZkIwK1UvUDBMdmozTndQDQoJCUdmSFBUY0hNdm95Rlh3cGU3VW1RdEFxVFVDVTBEMVZWYndUUFZrNWpZMTlGZTNaZlFueTdDRTUxV0pEWHFwamVFVUhyNDVraTlySXENCgkJYTRkbVFpSmZNTEl0R0VzL0ZjUTJ1Y2JSbWRuU1l5NXZZV3lMeC93M0VhTWZMbUJhRHBNUXZ1REo2NVBZOERwbnozd3BZbUx0QXB6Yw0KCQlySUFxbWZyRWdkWkgxZ3JZL2EzNnc2WHowREtEOEVTMjUvbmlZUzYrd1dFOG1XZkJ5WThjWG1ZRUpGWUxrSFVIdFZxTlFjbHRBdm9MDQoJCUQzdjdvL0ZVSHNOdnpsbnd4ZnNDRXVrQy9obzN5VUhhQk41QnVvMTdPanR5bCtEcXJudlFnVXRmY0MwWmNBZGtVZUEreWU3ZU1ydTkNCgkJQVVHSUpQZTR6aDUwOVVQL0FBZk55cGk4b2ovbUFBQUFBRWxGVGtTdVFtQ0MiOw0KCQkkX2ltYWdlc1siZGF0YWJhc2UiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUhWU1VSQlZEakxqWlBMYWlKQkZJWk5IbUpXQ2VRZE11VDENCgkJTWkvZ1lsQVJCUlVrYW8rYWJIVWhtaGdVMFFIdEFSVnhKMGJ4aHZmR2EwN09mNUl1MjF5WUZQeUxycXJ6MWYrZjZySVJrUTNpY2NhNg0KCQlaRjM5Unhlc1UxVm5BVnl1VnF2SmRydmQ3M1k3K2t5OFRrNm44N2NWWWdWY29YaXhXTkJ5dVZTYVRxYzBIbytwMStzSnBOdnRrc3ZsDQoJCVVoQ2IzVzcvY2YvdytCU0x4ZmFwVklxU3lTUmxNaG5TZFoyR3d5SE41M09hVENiVTcvY0ZZQmdHNFJDUHgvTUt1YjI3KzF1cjFYcWoNCgkJMFlqVzZ6V3hDeWxvTkJxVVNDU2tZRGFiMFdBdytCQkplcUxGdFFwdkdvRnFBbEFFYVpvbXVjMG9jQVFublU3bkFMaUozdWg4d2hnbg0KCQl0dHR0YXJWYVZDZ1VwQ0FVQ2duUWhNQUorZ0czQ3NEWmE3eGgxbXcyWmJGU3FZZ3dnc0dnYkRRaGNJV2VBSFNJb1AxcGNHZU5hclVxDQoJCWdGS3BKTUx3Ky8wcTcyYXprWWhtUEFXSVJtTTZBR2JYYzdrYzVmTjVBWGk5WGdXQUN3QWd1TEVBb2pyZnNWR3YxeVYvc1Zpa2Nya3MNCgkJQUlmRElZVVFIRUFvUGdMd1QzR2R6V1lOZEJmWGgzeHdBcERQNXpzcXRrb0J3dUh3YVNBUStPVjJ1Ly9GNDNHS1JDTEVjNVJPcHdWbw0KCQlPbmd2QlhqN2pVL3d3WlBQWDcyRFQ3UlhnRGZJVDI3UUVndmZLZWE5YzNtOUZzQTVJTjk0enFidzlNOWZBRXVXK3p6ajh1THZBQUFBDQoJCUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJkaXJlY3RvcnkiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUdyU1VSQlZEakx4Wk83aWhSQkZJYS82dTBaVzdHSEJVVjANCgkJVVFRVFp6ZDNRZGhNUXhPZndNUlhFQU5CTU5RWDBNekF6RkF3RXpId0FSYk5GRGR3RWQzMU1qM1g3YTZ1T3I5QnR6TmpZaktCSjZuaQ0KCQljUDd2M0txY0pGYXhoQlZ0WlVBSzhPSGxsZDJzdDdYbDNESlBWT05QK3pFVVY0SHFMNVVEWUhyNXh2dVFBamdsL1FzN1R6dk9PVkFqDQoJCXhqbEMrZVBTd2U2RGZiVmVnTFZ1VDRyMTRlVHI2enZBOHhTQW9CTHp4NnB2ajRsK0RaSWV6dVZrRzlmWTJIN1lSUUlNWklCd3ljbXoNCgkJSDEvczNGOEFhcGZJUE5GM2tRazcra3c5UFdCeStJWk9kZzVVZzNta0FBVHkvdDB1c292ekdlQ1VXVGpDejBCK1NqMGVrZmR2a1ozYQ0KCQliQnYrVTRHYUN0SjFpRW02QU5RSjZmRXpyRy9lbmdjS3cvd1hRdkVLeFNFS1F4UkdLRTdJenQrRFNpd0JKTVVTbTcxcmd1TVloUUtyDQoJCUJ5Z09JUlN0ZjRUaUZGUkJ2YlJHS2lRTFdQMjl5UlNIS0JUdGZkQm1IczBCVXBndnRnRjR5UkZSK05VS2kwWFpjWWpDZUNHMnNta3oNCgkJTEFIa2JSQm1QMC9VazI2TzVZblVBY3RCcDFHc0FJK1M1blJKSkphbDVLMWFBTXJxMGQ2VG05dUk2emp5Zjc1ZEFlNnR4L1NzV2VELw0KCQkvbzIvQWI2SUgzL2gyNXBPQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJncmFwaGljcyJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSDhTVVJCVkRqTGpaUExheE5SRklmSExycHgxMFdiZ2hYeA0KCQlIN0RReDZwMTRjYWRpQ3MzMVkyTExpelloZEJGV3loWWFGVWFVeExVUUZDeEw2MUUrMGdvZldHTFJVcUdxb1dwMkpwR0c4ZzR5YlRKDQoJCUpKbTg2ODk3THM0UUpJbTk4REVEOS82K21YTm1qaUFJd2hsR0U2UDFQNXhqVkFFUWlxSFZsTWxrWXZsOC9yaFFLS0FVYkI5MnU5MVcNCgkJU2tLcmxjTEpaQks2cnB0b21vWm9OQXBGVWJoRWxtVTRIQTR1OFl6VTFQc21Xcnlyb3hZckY5Q0JkRHFOYkRiTHIwUWlrVUFzRmtNNA0KCQlIT2FDVkNvRmVzanpwd011YWVYdXRoWWN3NHJ0dkc0S0tHeEFBZ3JFNDNGRUloR3psSlFXeEUvUmlyUTZpOC9UN1hqWFYyc3pCYXdNDQoJCTh5RGRVOTFHS2FxcUluUWd3Zjl4Q05tb0I3TFlnWm4rT3VkMFQxMjFLZmlYWW9rcWY4WCs1akF5UjNOUXZ0ekVxOTZ6NG9zN2xocXoNCgkJaWVXNlR4Sk4zVVZnOHlFUHF6dTM4UDd4UlZ5K2NQb2F5NTJxS0RoVWYwSGFXc0MzeFJ2c3RkM1F2dDltVFd0RU9QQUpmLytMOG9LQQ0KCQlmd2ZMbmlsNDN6N0JrdXNxZHIyWDRCdHZnMStjNWZzVkJaSi9IOWFYYml4LzJFQW91QVZ4NHpWbUhsMkJ0T3JrUGFrbzJEc0l3dWxlDQoJCXhLaG5HL2NtZmJnK3VJYnVrWGtvb1IvSTVYS2Npb0x1KzgvUU5UeUd6cUUzNk9pZFFOZURKYXlMZTd5WkJ1VUV2OHQ5aVJJY1U2WjQNCgkJRnByWjM2ZlR4a25DN0d5Q0JyQlkwRUNTRTR5ekFZMStneUg0QXk5Y3cySWZ3djltQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJpbWFnZSJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBR1dTVVJCVkJnWnBjRS9hMU5oR01iaDMvT2VONTZjS3EyRA0KCQlwNkFvQ09LbWs0dUNuOEROeWNFT0lvamlscjJUYUJmUnpWbkVTUVIzQnorRkZEb1dBMklqdGtScW1weWM5N2s5cVlsL0lRVjdYU2FKDQoJCXc0ZzBWbFpmUDBtMTNkd2VwUGJ1aUg4NWZ5aHlXQ3g0L3VieGpVNmtrZHhXSHQ2OVZDNlhwWmxGQkFod0pnd0pKSEFtUktvcmJqOTQNCgkJZXd2b1JCcmJ1eWt2VDVSMi8rbExUcDA1VHA0NVNUbUVKWUpCTUFqQnlJTHhZZU05anpyM0dDY3pHcEhHWUFRaFJNNmZPOHVGeTFmSg0KCQlRb2FVd0NLWUVjd3dDNFFRYUdVQmQzNktURG1RNTIzYXhUR1FtRWNJRUJPUktRZkcxWkR4Y0EvTWtCeFh3ajFnZ0NReVM5VFZBTW1aDQoJCWlVeEo4TG4va1MrOVBtT3ZjU1cranJhbzBtbU1INWJ6SGZhKzlVR0JtY2lVQkorMkZtaDFoK3lUUUNYU2tKa2RDcnBkOGJ0SXd3RUoNCgkJUW5hRWtPWE1rN1hhaUY4Q1V4TC9KZEtRT3diME50YzVTRzl6SFhRTmQvWkZHc2FFZUxhMkNoanpYUWNxWmlLTnhTTDB2UjR1blZ3dw0KCQlNRU5NQ0FUaWIwWmRWK1F0RTQxSTQyZ2VYdDFaZTNkbE1OWkZkdzZVdDZDSXZLQmhramlNNzlQeXExWVVtdGtLQUFBQUFFbEZUa1N1DQoJCVFtQ0MiOw0KCQkkX2ltYWdlc1sicHJlc2VudGF0aW9uIl0gPSAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMA0KCQlVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFIZVNVUkJWRGpMalpPL2kxTkJFTWMvdSsvbEJZeGlMa2dVDQoJCTd2UnN0TEVVRHl4dHhWNjh5a0lNV2xvY2FHSHJEMUR4U0FxeE5mNHQxMTVqbzZEWWhDUkNFc2s3MzNzN3UyUHhrdWlSb0JrWWRtR1oNCgkJejN4bmRzYW9LZ0RHbUMzZ0xCRHhieHNBMzFVMUFLQ3F6Q0JYc3l3Yk8rZThpT2dxejdKTTIrMzJXK0FpWUZYMUdHREhPZWVuMDZtbQ0KCQlhYnJ3eVdTaW85RkkrLzIraW9qMmVqM3RkRG9MaUptK2JpbUFoZ0JlVWU5Um1ia3JUNXdnVDk3UmFEUW9pb0lRQXQxdWQ3L1ZhcjFoDQoJCSt1cSsvczkrUExpbHcrRndxU1JnSjFZcGV4SFNLZW5IRjRERmYvdUMzYjdDeWRzUHNhZnJhTzVJa29UeGVFd0lBUkdoMld3Q1lOVUoNCgkJQU9tSFo1eTRlWS9hN2g0aFBjSWRIdkR6L2ZNU25qdmlPQ1pKRWlxVkN0VnFkZkVsOFJ5Z0hrejlETFpXUXpPSGlzZDlPaXpmY2tjVQ0KCQlSUmhqTU1iTW0xNENRbEVDL05mUGpQZDJDU0pRQ0VFRURXWUJzTlppakZrYUNxdTVLeStibHdsNWdlYU9VRGcwYzhUbk5zc1NDbGtFDQoJCVIxR0V0WFlaY09ydUk2SUxsMUFKcUFUaXJXMDJIcjhzRlRoQlZaZmtseVhNRmRRYmJEemRYem03OHo0Qng3S1hUY3dkZ3pzM3lpenUNCgkJenhBaEh2Vmg0YXZxQnpBemFRYTRKaUlIZ0dFOUMzRWNYN2V6aFZJZ2VPOS9BV0dkWU8vOUVlRE5YK3Q4ZnJiT2RrMEZIaGo4QnZVcw0KCQlmUDBUSDVkT0FBQUFBRWxGVGtTdVFtQ0MiOw0KCQkkX2ltYWdlc1sic3ByZWFkc2hlZXQiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlwU1VSQlZEakxqWk5QU0ZSUkZNWi85NzA3bzBTT09zaE0NCgkJMHgvSkZ0VW1pc0tCb29WRUVVVGhzZ2kzS1MwQ04wRzJsYWdXRVlrU1Vkc1JXZ1NGRzlzVkZBVzFFSXdRcVJaaWlET1pZODA0Yjk2Nw0KCQk5NTQyNDloVXBCOTh5L1BqTzV6ektSRUJRQ20xRTBnRFB2OVhIcGdURVFlQWlGQ0RIQW1Db0JoRmtUWEd5TDhjQklHTWpvN2VBM1lEDQoJCW5vZzBBTEpSRk5sU3FTVGxjcm51bFpVVldWNWVsc1hGUlRIR3lNTENnb3lOamRVaGFuQ3lWOWF5T1NlSWRUZ25PQ3RZNDNEV1lZM2oNCgkJOXVseGtza2tZUmppbkNPWHk0ME1EQXpjWlhDeVZ6WlMzOE1lS1JRS2Y2MEVaUFhTWEluTDl5K3dMWk1rQ01zMFJSMjhtSjJnclNXSg0KCQlFbytsSDkvSXBOUEU0M0dLeFNMT09Zd3hwRklwQVBUV2ppYU90WitnTGRGS2xKbEQ4dTAweFdQOGxPL001K2U1ZWZFQjE4YjcwVnFqDQoJCWxNSmFpKyt2SDhxTHFvYStubjQrZkptaU5OUEN2TXpRbklqelp1bzFWODhOczMvSEFjS0t3ZmQ5dE5ab3JZbkZZdXVBTUxETWZKM20NCgkJK2ZRem5yN0wwVms5ekdwTG1lekI0engrK1lnZ3FoQUZFWjduNGZ0K0hWUUhWTW9CNSsrY0pOV2FSclF3TWpITTlxQ0xURmNuSkpxNQ0KCQk5V1NJTUxBb3BRRHdmUi9QOCtvQWJhcVdLMmVHU0d4cHhWckRudlErM3MrKzR0UG5qNFNld1lzY1VkVWdJaWlsY000MS91WFpHOWtODQoJCXo5aDlhYStFWWRqZytobkR3SERxK2lHc2FYd2NaNlhoc2RaVytGT3FGazBCM2NhWXQ0QmljM0phNjZOZXJWQUNPR3R0QlhDYkdiYlcNCgkJcmdKVy9WYm5YYlU2ZTV0TVlJSDhMNTRYcTBjcTAxOCtBQUFBQUVsRlRrU3VRbUNDIjsNCgkJJF9pbWFnZXNbInRleHRkb2N1bWVudCJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSWRTVVJCVkRqTGpaTzdhNVJSRU1WLzkvRjl5YUxCelFZMw0KCQlDQzdFcEJHeFUyTzBFQkcwc3hIQlVpdFRXWWl0WUNzaWlKTDBOdmxmZ29XU1JwR0E0SU1zbTQzWlhjaG12OGU5TXhaWk4xR0Q1TUNCDQoJCVc4eWNlNGFaWTFRVkFHUE1hV0FhY1B3Zm04QTNWUlVBVkpXaHlJVXN5N3BsV2NZUWdoN0dMTXQwYVducE5UQURXRlg5UTJDK0xNdTQNCgkJczdPai9YNS94RjZ2cDUxT1IxdXRsb1lRdE5sczZ2THk4a2pFM0h1ejlxUElRamNVZy9HWmVuVk9va0lFaVNCQkNLVVNRK1RGd3dhMQ0KCQlXbzJpS0JBUlZsWlczaXd1THI3aXpzc1Bud1o1MERMSW9Xejl6UFQrcy9mYWJyZi9HUW1ZOTdHSUlYR1dwMjgvMDhzaTUrb1YxamNHDQoJCVRDU082bkhIMnBkZFlxbWthVXEzMjBWRUNDRlFyOWNCc0JJVkJiSmNTZFhRbUs3UTZRc25xNTRzajJnQnBsUzg5NlJwU3BJa2pJMk4NCgkJalZaaXRkaDdqQU9TSzZ0clhjcEMyR2psZlAxZXNIRCtHRFlvemptODkzanZTWkprWHlBV2Urc3NjNlc1RzluYUxxa2F3L3BHeEJybA0KCQkxdFZwSkNyV1dweHpJNkdSZ09RS0N2MkJZSFBsNXVVYXRST2VTc1Z5N2VJa1U5VVVpWW94QmdEbkhOYmFndzRVNnlBV3dwbXBoTnZYDQoJCVQ2SEFoQVp1TE5SeDFpRERXekhHL0w2WkVieUpWTGEyYzU0L1Bnc0tneXp3NU1IY3FLQzluUk9LL2FhRHZ3TjRLWVM3ajk1OURIazINCgkJUHR1WW5CVUJGVUVWVkJRUmd6WDdJL3dOTTdSbWdFc2hoRlhBY0RTSTkvNktIUVpLQVlreERnQTVTbk9NY1JlSTVrQ2NHOE00MnlNNg0KCQlpTURtTDI2MWVhT09ucXJPQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJ1bmtub3duIl0gPSAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVFBQUFDMStqZnFBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMA0KCQlVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFDNFNVUkJWQ2pQZFpGYkRzSWdFRVducnNNbTdvR0dmWnJvDQoJCWh4dlUrSXExVHlqVTYwQmYxcGFjNFljNVlTNFpBdEdXQk1rL2RyUUJPVndKbFpyV1lrTGhzQjhVVjlLMEJVclBHeTljV2JuZzJDdEUNCgkJRVVtTEdwcFBqUndwYml4VUtIQmlaUlMwcCtaR2h2czRpck5FdldEOGhlSHBic3lEWHpuUGhZRk95VGpKYzEzb2xJcXpaQ0hCb3VFMA0KCQlGUk1VakErczFnVGphUmdWRnBxUndDOG1mb1hQUEVWUFM3TGJSYUpMMnk3Yk9pZlJDVEVsaTNVN0JNV2dMektsVy9DdWViWlBBQUFBDQoJCUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJ2ZWN0b3JncmFwaGljcyJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSVdTVVJCVkRqTGhaTlBieEpSRk1XaFJyWXUzTnJFeElVYg0KCQlkeld0ZTZNN2QzNEVvMkhqeG04Z3daVXhJWUVBUlVLQVdnd2JWMEJweEFXMTFicFFGckNvQ1ZFTURwbGhRTW93NzgyL2VueDNXc2lVDQoJCTBqckoyYno3enUrOWU5NWNId0FmU1h6WGhGYUVWditqNjBKTE01OEhzR0lZeHNpMjdTUEhjYkJJb281b05CcnhRcnlBVlRKUEpoUG8NCgkJdXU2cTArbWdWcXVoMFdoQWxtVVgwdXYxRUl2RlpwQ3AyVThBMnNBNWgybWFZSXloVUNoQTB6VFU2M1VvaXVJQ2FKME9TU2FUeDVCNQ0KCQlBSm5wcXFWU0NibU5UV3hWdDlGc050SHY5OCswNUdZeUQ3QXNDNVZLQlp2RmQvajJrNkV0YzZnakhmTGdFTEtpdWplUkpHa3hRR1NBDQoJCVlEQ0l4OCtlSS9PUkliM0xrZjBzV3ZtaW85YWFvQzJOb1E3K1FGVUhDd0ZyNVhJWjhiZnZoWkZocTJYZ1U5dEViMlRqOTlEQ2djVHgNCgkJOVllT2c2NEdaVENHUFFkWUVucGFMQmJ4Wmw5SGZJZWpvMXJnNW5HdnRpM0NNeXhvdW9uaElZTThaRzdOQldTejJZZXBWS29iaVVSKw0KCQlVWGpyd3J5K3d6Qm05cW5BcUQwM1lIb2hic0FTVVArbHkydStYQzdYem1ReXQ5THBkSmMyeHVzY3IwVUxVOU5VRkM2SkRpRlJDeTRnDQoJCW44OC9FV3FGdytFRW1mTDdISzgrOEZPQXFkbXJXWWpDN0U4a0VsY0NnY0FkV214Mkxielk1bUNtYytZV1hwMzNIL3cxTFFlaEtoUFANCgkJWnVLOG1UalIwUXh3QXJrdFF0S3BzTEhIRWFyd0M4MWlyK1pPcndld1RCQ2lYcjE1Ny83ZDBQZnFqUWN2SDEwdzFqVDZ5LzhBL25ISg0KCQlIY0FnbTJBQUFBQUFTVVZPUks1Q1lJST0iOw0KCQkkX2ltYWdlc1sidmlkZW8iXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlmU1VSQlZEakxwWk5QYUJOQkdNWGZicnViekJxYmc0a0wNCgkJMGxKTGdpVktFL0FQNktsNlVVRlFOQWVESUFqVlMwOGFFTHg1OUdRUEFSRVYvNEJlaXFjcVJPcFJENHBVTkNKU1MyMU9nbG9JU1dNRQ0KCQlaL2FQYjZBUmROZVRDejkybU8rOU45L3c3UnBoR09KL25zSCtvbHF0dmcrQ1lKUjhxOVZxdVRoeHVWeitvSlRLZVo2M1VxL1hDMzhFDQoJCTBKajNmZjgrT1Z1cFZHTGJvbGt6UXc1SE9xQXhRVTR3WFdXblpyeWttWUQwUXNnQU9KZTlocEVVY1ByOGkwR2FKOG4ydnMvc0wyaDgNCgkJUjY2VHBWZldUZEVUSFdFNkdSR0tqR2lpS05MaWk1QlNMcE43cEJIcGdNWWhNa204dFBVV3ozc0wyRDF3RmFZL2p2bldjVFRhRTVEeQ0KCQlqTWZUVDVKMFhJQWlUUlluM0FTd1oxTUtiVG1ON3orS2FIVU9ZcW1iMWZjUGlOYTRrUUJ1eXZXQUhZZmNIR3pEZ1ljeDlOS3J3SllIDQoJCUNBeUYyMUppUFdCblhNQVFPZWE2Ym1uKzR1ZVlHWmk4Z3R5bU5Wb2JGN0JHNXByTnBqZCtlVzZYNEJTVUQwZ09kQ3B6QThNcEEvdjINCgkJdjE1a2w0K3BLMGVtd0hTYmpKR0Jseit2WU0xZlFlRHJZT0JUZHpPR3ZEZjZFRk5yK0xZakhiQmdzYUNMeHIrbW9OUWpVMnZZaFJYcA0KCQlnSVVPbVNXV25zSlJmamxPWmhyZXhndFlEWi9nV2JldE5SYk5zNlFUMTBHSmdsTms2NEhNYUdnYkFrb01vNWZpRk55N0NLRFFVR3FFDQoJCTVyMzhZa3R4QWZTcVc3WnQzM2w2Nld0a0FrQUNqdU5zYUxWYUR4bHc1SGRKLzg2YVlyRzRXQ2dVWkQ2ZlgranYvVTB5bWZ4b1dWWm8NCgkJbXVaeWYrOFhxZkdQNDlDQ3JCVUFBQUFBU1VWT1JLNUNZSUk9IjsNCgkJJF9pbWFnZXNbIndlYnBhZ2UiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUp3U1VSQlZEakxqWlBkVDFKaEhNZXR2eU8zL2dmTEt5KzYNCgkJOGJMVjJxSUFxN1V5RzZJcmRSUEw1aHMyVTVGUjBNSklBcVpsaDdCVlZpSTFra3l5aVBrQ3lVdHp0UVlUWWJ3SkU4VytQYzhwam9mSw0KCQkxZGsrT3hmUCtYM084M3NyQVZCQ0ljOGVRaG1oL0Ivc0plem00bmlDc3ZYMTljVG01dVpXUHAvSDN5RG5VS3ZWS3I2RUx5aW53V3RyDQoJCWE4aGtNaHpKWkJMeGVCd3JLeXVzSkJ3T1E2UFJjSkpDOEs0REovZFhNMDRET3N3TnFOT0x5YnNSbzlONkxDeTdrVWdrRUlsRVdFRTINCgkJbXdYOWlWYXIvU21oZ2xxZDhJUkVLd3lhM3FoZzgwOWdQTGdJL1hzck9wL0ljWFZNaHFuRlNheXVydjZSRWxzVDZaQ29vdjV1MWZ6VQ0KCQlWd3ZjS1JkZWZWdUVLUkNBM09GSHYyTU94dGxCZEZ1YU1mL1poV2cweXQ0a0ZBb1ZDWlMzSGQxZ2twT3dSdDloMExPRVMzWXZhbXpQDQoJCWNkRjdBNnJsUHJTYnBiaFAwa21sVW13OVlySFl0b0RrdTJUNnBFWi8ySUNYRVE4a1R6K2cyVGtOY2VBS0t2Mm5JSGFjaG42cUJ4MU0NCgkJSTV0L09wMW1SWHpCZDMxQWlSYWZCcDF2WnlFY2NlR0N6UTZwMjR5akV6b2NHVDZMVWFjUzBpRXhjcmtjSzZGc3A2QVhMUm5tRk9qeQ0KCQlQTUlaaXhQSG1BQU9HeFpRZWMyT1F5bzd6cG02Y05ONkdaMmtLMVJBb2ZQQXI4R0E0b1VNcmROTmtJdy93UEZoRHdTalgzRHdsZzBDDQoJCVF5OTZIcmVpVGxjRlpzYUFqWTBOTnZoM1FVWHRIZUhjb0tNTkE3TmpxTGQ4eEhtekR6WERSdlJPMUtIdG5nVHloekw0U0hlb29BQW4NCgkJS014QnRVWVFiR1dhMERjK0FzV3pTVnkzcWtqZUl0TENGc3o0WG9OTWFSRkZBbTRTeVRYYm1RYTJZSFFTR2FjUi9wQVhPK3pHRmlmNA0KCQlKZGxIQ3BTaEJ6c3RFeitZZkp0bXQ1Y25LS1dTLzFqbkFuVDFTMzhBR1R5blVGVVR6SmNBQUFBQVNVVk9SSzVDWUlJPSI7DQoJCQ0KCQkNCgkJJF9pbWFnZXNbIjd6Il0gPSAkX2ltYWdlc1siYXJjaGl2ZSJdOw0KCQkkX2ltYWdlc1siYXMiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlxU1VSQlZEakxqWlBOaTFKUkdNYW4vb29XRGJTS05xMnMNCgkJZ1pxaDBVZ3FLVm9PVTdPb29FV0xnWmkrSklhWUdvbGFSQVM2MEpYdXhKV29JQzZFMEtBZ0F6R2JDcXBGbXVhMzkzcXY5K1BvUEozMw0KCQlUSFBIY1l5NjhIRFB2ZWU4di9lOHp6bnZGSUFwRW44T2N0bTRadjZoUTF6N3JiZ1JnRTNYOVM1amJEZ1lEREJKZkI1ZXIvZmxLR1FVDQoJCU1FUEJpcUpBVlZWTGtpU2gwK21nVnFzSlNMVmFoYy9uc3lEYndmc0lRQXMwVFlOaEdORGV2SVgyOUJuVXh4NTB1MTNVNjNVQjZQZjcNCgkJb0NSK3YzOExNZzZnWUNPZGhuYjFHZ2FlVmFqbkwwQ1daVFFhalQwbENVL0dBZWEzNzlBV0ZzSHUza0ovNFRMVU8vZXRVcHJOcHRoSg0KCQlwVkw1QzRBeDZJL1d3VmJ2b2U5K0FNYXpNdnJIelNNSTdZVDhhTFZha3dIczh4ZG9TMWVndUM3Q2VKVUJhM2ZFd2tLaGdFd21JK3BQDQoJCTgvTHkrZnhrZ1A3OEJaajdOZ1lQM1pEbjdGRFhQR0poS3BWQ3VWd1cvdEE3SEE3dkJhd2RQckpFbVpsN2hRYzdJSjJZdHdDeFdFeVUNCgkJSWd6bUNnYUR1d0YxNTdrRGxWT25DK2JLTW1TN0U4YTc5ekEzUHNFcy8wUThIa2MybTRWcG1rTGtCNVVSalVhM0FNcFoxK3Vldy9sVg0KCQltbk13L2NaMXFPdFByR09pcktWU0NjbGswZ0tRUXFHUU9GWUI2Tm5QS1BLc2ZkTll2Z25KZFFuc1YyM1hXUk1ra1VpZzNXNkxNU2tRDQoJCUNPeVVJSitjaDNSOEZqK08yajZZSHpjMkovVkFzVmdVRUJwSEloSGtjamthRHkwUC9oaDVqQnVrMHNRNGdPNEFYU0lhMDliNTk1Q3YNCgkJN1ludUhRRk1FK1EvMm5sYjFQclR2d0dvMkszZ1dWSDNGZ0FBQUFCSlJVNUVya0pnZ2c9PSI7DQoJCSRfaW1hZ2VzWyJhdmkiXSA9ICRfaW1hZ2VzWyJ2aWRlbyJdOw0KCQkkX2ltYWdlc1siYnoyIl0gPSAkX2ltYWdlc1siYXJjaGl2ZSJdOw0KCQkkX2ltYWdlc1siYyJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSGRTVVJCVkRqTGpaTkxTK05nRklhZCtSMEt3dXpjU1FkZA0KCQl1blRXWHJhS0E0S0N1RktjV1lxZ1ZiRTRUS0pXTnlxQzJvSEtvREJlRUJGMDRVcEZVVlFxVW9lbVNWT1RKcjJscmI1KzV4c1RVeStqDQoJCWdZZGMzeWZubk9RckFWQkNzSzJVNFdGVXZVRTU0Nk9UY3drODJXeFd6K2Z6dDRWQ0FTL0I3a01RaEI5dWlWdFFSZUZrTW9sVUt1V1ENCgkJU0NTZ2FScGtXZVlTU1pJZ2lxSWpzY01mU0VBUFpESVpXSmJGOTRScG10QjFIWXFpY0VFNm5RYTl4Ty8zLzVPUW9NNTcvcW0yYTNQRw0KCQl0eXpEdHh6Ri9GWU1lNmM2RjFEQU1BekVZckZuTGZHWjFBOWRldnFDOG8yd3BtTDhqd0poUmNidzd5Z0dBeEpZUzd4dnV4VlZWWGtsDQoJCWtVamtVZEFzaGdQK0RSVmZ1cmVYYlBQY3VvS2UyYi9RREt0SVFwWFFQT0x4K0tPZ2YwbkdDQ3U5c21IaXU3dThJR3VEQkhSc1M2Z2QNCgkJbWdtSkhFSGZMd245d1NncWFnYzZYdnQ4UkM2WDQ4TWxDZUVJMmliRElTOFRWRFlHQkhmQU8zT05vd3ZUT2FjcVNFQlFOWTZncHZPaw0KCQlwM2N4Z3E4L1E4Wnh5SVNXc0RBd2ZZMzJzU3NjbmhrOFNGQUZCSVdMQlBRWnExc092alg1TG96T3FUQmF4U3UwakY1aVlWVitGblpUDQoJCUpMQi9wTjBERFR2N1dsSHZ0dVFwTHdyWXhidi9EZklKdDQ3Z1FmS1pEU2hGTjk0VFpzK2FmUFc2QkdVa2VjZHl0cUdsWDNZUFRyN20NCgkJb21zcE4wWUFBQUFBU1VWT1JLNUNZSUk9IjsNCgkJJF9pbWFnZXNbImNhYiJdID0gJF9pbWFnZXNbImFyY2hpdmUiXTsNCgkJJF9pbWFnZXNbImNwcCJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSC9TVVJCVkRqTGpaUE5heE5SRk1XcmY0Y0Z3VjEzSlZLWA0KCQlMdXRhNjFhcElDaElWMHJibFVxaGpZcFJjVWFOYm94SXF4RlRRZ1Z0aTRoUVFUZTFDN0ZGU1Vtbm12bU04NVhKekNTcHgzZWZ6bVRTDQoJCVJ0cUJ3N3laOSs1djdybDNiZytBSGhLN0RqQ2xtQVoyMFVHbS9YRmNBcEFLZ3NCcU5wdGJyVllMM2NUMklRakNuU1FrQ1JpZzRGcXQNCgkJQnMvell0bTJEZE0wb2FvcWg4aXlERkVVWTBnVXZJOEFkTUQzZllSaHlPOGsxM1ZoV1JZMFRlT0FlcjBPK2tnMm0vMExJY0R4OUxkRA0KCQlneGZmNWpKektqSnpDbWJlNmZpMGFuRUFCVGlPQTEzWGQxamlOVGx4ZlQwMVVWQi9DZk1HN3IvV0lMeFNjYU9vNEZwZUJyUEVmVWRXDQoJCURNUGdtVlFxbFRiZ3RDamxzNHNHamwxNlB4dVJueTVvR0gzeUE3b1pvUGpSNEJEYnFlSGxrc0xyVWExVzI0REpXUlUzV2VyOVF3L0cNCgkJaytrVm1BMmxHdURLdE1RenNWd2ZsNmMzZUUzSVVneVllQ0Zqc3FDZ2IzRHFRaEp3cS9nVFk3bHlWNjFKZGh0dzdxRlVTak5BLzhtOA0KCQlrQVNrYzV0WVhuTjRCdlRzMWtPMjN1QWRJa3N4NE9qSTE5R3J6eXM0Yzdma2ZDbTVNTzBRVTQ4M2NmNWVHY3VyTnE4QldmRDhrSzExDQoJCUh0d0JvRFllR1Y0Wk81WDU3b3c4a25CV0xHUDQ5anFldlZGNUlLblJhT3hRQnlENmtUNnNtRmo2YkhiME9vSnNWMWNBZS9uN2YzUFENCgkJUlZzeDRCL2tNQ3VRUnh0N0NXWm5YVDY5Q1VBdlFmWXd6cEZvOUh2L0FEMzMyZEtuaTlYbkFBQUFBRWxGVGtTdVFtQ0MiOw0KCQkkX2ltYWdlc1siY3MiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUpPU1VSQlZEakxqWlBiYXhOQkZNYXJmNGNGd2I5QUlnWEINCgkJUjE4RW55dytpMWdzNGcwMWtwaFNsUGpRZUF0TnpOcUdOTFZwTkNHaEV2QlMyMVJyMFpJSzZvdkZpS2JOYlhOcGRwTnNzdG5jVXo5bg0KCQlOaWF1RXJFREh3TXo4LzFtempseitnRDBVWkd4aDBoRk5QQWY3U1hhM2ZVcEFLcGFyVlpvTnB2YnJWWUx2VVQyWWJGWVRFcUlFakJBDQoJCXpaSWtvVnd1ZDFVc0ZpRUlBaktaakF4SnA5TmdHS1lMNlpoM1VRQTlVSzFXVWEvWDVabXFWQ3FoVUNpQTR6Z1pVS2xVUUMreFdxMXQNCgkJQ0FVTTN2Nis3NGh1MmNINGVVejZPY3dGY3ZnWUVtVUFOWWlpaUZGM0FxNVhISUpSQ2VxSExPSmJGY2c1T1c2TXFtNDk1ZkwyTnpuWQ0KCQlsN093dmVZeHNaU0Y2UVVIRXBJYzkrZVFnT3Z1Rkw2RU1qQzZ3cmc0R1paZkl3T0diYXpYOFRhUFkvcUFyNU1zNzJvT0J0OFdrbndWDQoJCWVtOEtXbWNDWTAvUzBFMUhjWFl5aGpOTUJBWUgyd2FZRjhpemwzSTRlR0xxbWpMano5YnkrUFJOeENNUzBrMEMwYyt5TURqajBNd20NCgkJTU9HSjQrVnF0ZzBZbitkd2Y1SEgvc0c3NS80dVd6QWl3YmZDUStkTVlTR1F4ZGhNSE1QbU1GWSs4TWdYNjIzQWlEdTkrWUFBRGczNQ0KCQlMRXJ6SFU4U0drY1NJNCtUMERvU3VHUm5vWjVtY2RJVXdkQzl6ZDg1T0hwalF6UCtuTU9WbVpqNE5TWkJLTlZoOUxiTjZ4c2xuR2FpDQoJCThDeG1NUCtPbDgxY3Jpd250Z3VnWlR5c0Rtb3ZURVhFVVZjS1Y4bHQ1MjBzNWtqSnZQNE1UcGtqeUFwVlhDWm12VFdLUnFNaDZ3OUENCgkJNXlPOVh5OWlqVWdaQ2kxbEwvVUVrTVVmLytxREh0cnVBbjVCRHBBdlhLWWJPekdUc3lXNWV4V0FmZ3JaUVR0M1JGdS8veWZIVnNYLw0KCQlmaTV0andBQUFBQkpSVTVFcmtKZ2dnPT0iOw0KCQkkX2ltYWdlc1siY3NzIl0gPSAkX2ltYWdlc1siY29kZSJdOw0KCQkkX2ltYWdlc1siZG9jIl0gPSAkX2ltYWdlc1sidGV4dGRvY3VtZW50Il07DQoJCSRfaW1hZ2VzWyJkb2N4Il0gPSAkX2ltYWdlc1sidGV4dGRvY3VtZW50Il07DQoJCSRfaW1hZ2VzWyJleGUiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBUUFBQUMxK2pmcUFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUVrU1VSQlZDalBiZEU5UzBJQkdJYmh4eG9iV3hQOEQ4cjUNCgkJSTYwUkxnME5OVFMyMVZCUlF3ZzFhQTRWT0FXQnBCVkNGaEtVdGtWSnRQUXg5R0ZGV2g0OXgzUDBidkFqanNXelhyenZjQXRwUkVFWg0KCQlmUXRvQUNFa3BLQlZkcG91djdOWWkzU0prQXluV2NYRXhLVENKNis0UExQZUlaSlBoa3NkbXpwMXZpbFR3cVZHbFdoRWdSNndzYkdwDQoJCVUrT0x0OTRyR2ZKMWdJT0xpNE9GU1lWM1NqeDVRWGR0a2lIRngvL2dqaXdsVHNoeVQ1TFYzVDhnd3kzSEZMbmhrQ3VXbUIzcUEwVXUNCgkJMldHT1pWSVVtTi9ydTVDaXdBc0xOTENJOGNnK2kzaEFnZ01laU5PZ3dRYlhSSm53Z2hvWDVEa2lUb3cwT2NMSjhIQWJ0THBra3p3Sg0KCQlDdVRZNHBRcHBnZUZGTEpOdHhNcnpTUkZ0bG5odkRYTzZGazdsbDhoYit3WnhwQ2hvUHpvQjZhaVhJWWNTTERXQUFBQUFFbEZUa1N1DQoJCVFtQ0MiOw0KCQkkX2ltYWdlc1siZ3oiXSA9ICRfaW1hZ2VzWyJhcmNoaXZlIl07DQoJCSRfaW1hZ2VzWyJnaWYiXSA9ICRfaW1hZ2VzWyJpbWFnZSJdOw0KCQkkX2ltYWdlc1siaCJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSHRTVVJCVkRqTGpaTkxTOXhRRk1lMTM4QzlBLzBPeW55Qg0KCQlVamVGUWpkdVJPaTJNTXRDRWFsUzBUb0xFZFFNZEVTaG9LRFdSeW1LaWdXeElJN1BoYUI5YUJGVUpqSEpwSGxubnZiZmUyN05KY1ZJDQoJCURmd0l5VDNuZDg4NWNPb0ExQkhzYVdRME1aTC80U0hqZ2NpTENKcEtwWkpWclZhdmE3VWE0bURua0NScEtDcUpDcEtVN0hrZWZOOFgNCgkJMkxZTjB6U2hxaXFYS0lxQ1RDWWpKR0Z5UFFrb29GZ3NvbHd1OHpmaHVpNHN5NEttYVZ3UUJBSG9rbXcyKzFjU0NscFNVbXIxMk1QNw0KCQlMUXVuaWk4a2xPQTREblJkdjlVU24wa29lUFJpSkRXK2FUR0JqY09MZ0Fld2xuamZZU3VGUW9GWElzdnliUUY5akcyYXZJS0ZQUXR6DQoJCU95Wm1jeVpNdHl3a1ZBbk53ekNNZU1HN2pWK1l5Rm1RMWczMEwya1lXaXRBV3RaRkpkUU96WVJFc1lMaHp3WkdHRitPSGV6LzlQRDINCgkJazRhZWVZVUhWeW9WUGhlU0VMR0N3UlVkQSt6Ry9WTVBleWN1M2l5bzZKNVd4RHhJUUZBMVF0Q2F1VXdQck9wSVBoL3ZTQytxU0MvcQ0KCQlQSG4zdTR1dTJTdThuc3J6WktxQW9PUi9CTzJqK1ErRFRQQzAvMkNkU3U3OXFPTFZsSXlYazNsMHpzam9tSll4djZFTFFZZ1FQT2s3DQoJCWEyanBPbm1jYUc1N3R2dUQzZnpOeGM1WEI5c0VtMFh1eU1iNVZjQ3JpQkk3QS9iejkxMTdFTU8xRU54SW10bUFmRHE0VHpLTGRmbjINCgkJUmdRSmt0eGpuVU5vOVJOL0FGbVR3bFA3VFkxdUFBQUFBRWxGVGtTdVFtQ0MiOw0KCQkkX2ltYWdlc1siaHRtIl0gPSAkX2ltYWdlc1sid2VicGFnZSJdOw0KCQkkX2ltYWdlc1siaHRtbCJdID0gJF9pbWFnZXNbIndlYnBhZ2UiXTsNCgkJJF9pbWFnZXNbImlzbyJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSXNTVVJCVkRqTGpaTmZhOU5RR0lkblA0Y0R2OE5rbjhQTA0KCQk2VWZ3U2dRWk9vU0JZa1V2WkxOMWxNRkFyUXlIcnNJdVdrRTN1ZzJ0MUszTzBMWHJab3RkbHpacDBxWnAvcWM5UDg4NTJxeXlpZ3M4DQoJCUY4bko3em52ZVpOM0RNQVlnMTRYS1JPVXlmOXdpUklLY2tPQ0NjZHhOTi8zKzcxZUQ2T2c2NGhFSW5QRGttSEJKQXNiaGdIVE5BTTYNCgkJblE3YTdUWWtTZUtTZXIyT2FEUWFTQWJoQzdlZkpHWTI4Z1pXUHJVUVR5dDRsMmxDS0xmUjdYYWhhUnBrV2VZQ3k3TEFOb25GWXI4bA0KCQlxenQyNlBVWEl4emY3cENmaW9lUzVFSTJmVlFrRytHVkgwaGxSVnFGam1hemVlWkl2Q2MwUEJYZjFvaHU5NkdaQkVuQlFNTW1jQWpnDQoJCWVIM2NXUktReVRmNFVSUkY0WldJb25ncW9PRlVSWFpwVUVPdDFZTm0rQnpESTZBZUZLbzZJcXNGM2c5ZDEzay9WRlU5RlN5dEs5VjgNCgkJelVKaVIwV2JCaCsvMmNWaWNoK3Ryb2R2TlFlRkV3dlRzYS84QzdEenM1NHdVU0JZZU4rb2ZxK2FnZURabW9CWDY0ZFFkUmNiQnlhRQ0KCQlxb0diVHpQd1BBK3U2M0lKSXhETXJSMm5Ea1VUUjZvUHhTSjhaeFl1Tmx4c0h0bllMYWw0OERJSCtvbTVnTUdxQ1FTUDNsYW03aStYDQoJCVNNZnA0MEFGc2pXQ3JiS0hkTWxHcGVuZzJ1eEhwSE0xWGdHRGhmOFMzRnN1aGU0KzN3OVBMKzZSdmJLR2d1aEFPRGFSTFNxNE92c0INCgkJTDVKRnZ1dEFNQ0FRREg2a0s5Zm5aeUtKQW00dFpIRmovak1leG5QWXpKM3cwa2R4UnNCdTZFUHlyemtZUVQ4US9KRmNwcVdhYk9FOA0KCQlZZnB1bDAvdmtHQ2NTYzR4emdQWTZJLy9BbUM4N2VLcTRycnpBQUFBQUVsRlRrU3VRbUNDIjsNCgkJJF9pbWFnZXNbImphdmEiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlSU1VSQlZEakxqWlBKYTFOUkZJZXJhLzhFQ3k3ZFY3dHgNCgkJa2IyVU9vRGd6bzBSM1l1THJGd1dJVmdsV1FSdE4wR0NMa0lpeEpESlFKS0dRT1lCQTRha21lYzVlU0ZUL1huUHNYbE5zV0lmZk9UZA0KCQlkM08rZSs2UGV6Y0FiQkRpdVM3WUVtei9oeHVDcTNMZG1tQnJPcDMyRjR2RnlYSzV4RVdJZVdnMG1uZnJrblhCTmhXUHgyTklraVF6DQoJCUdBelE2L1hRYURSWVVxdlZvTlZxWlFrWEd3eUdtMnExK2swMEdrVWtFa0U0SEVZd0dHUUNnUURTNlRTS3hTSUxKcE1KYUJHZFR2ZEgNCgkJWWpLWkh2cDh2dU5zTm90NnZjN1FhdlJMcTFVcUZjVGpjYmhjTHJtTEZaeUoyKzB1OVB0OWhDMWY4T0hwRHQ0L3VvTzM5Mjh6bXNjSw0KCQlIRDUvZ0tQUEI4am44eXhwTnB1b1ZxdG5BcVBSaU9Gd2lQR2dCL2ZoUHI3dXZjSkg1UzRPbnQzRHA1ZFA4RzMvTlg0Y2ZlZENpOFhDDQoJCWVYUTZuVE9CeldhVDV2TTVKMHlURkZ5MzI1V2h0bWtiaE4xdXgyZzA0Z1ZsZ2NmaitVbURVcWtFaDhPQmNybk03eFJhTHBkRElwSGcNCgkJY1NxVllpaEVZcjBETDYxTzZmdjlmaFFLQmQ0dmhVcnBrNkRkYnNOc05yTjhOcHR4dDdKQXBWSzlFTVc5VENiREVncUkycVVPU0VMdg0KCQlKUEY2dmJ3OUtqNG5FTTgxcFZKNVY2L1hIOGRpTVE2SWFMVmFMQW1GUW5BNm5meU5zbG9oQzA1UDRSV0ZRckZMSFZpdFZvWVNGMmNFDQoJCXlXU1NneE9uOUJ4L0NXZ2dQdjc2MXoyNGdCTlpjQ3E1SlFLU2FPSXl4ZUsvSTc2OWE0Sk5rbHppT3ErZ3E3LzVHeDE3MmtaZ2ErWFcNCgkJQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJqcGciXSA9ICRfaW1hZ2VzWyJpbWFnZSJdOw0KCQkkX2ltYWdlc1sianBlZyJdID0gJF9pbWFnZXNbImltYWdlIl07DQoJCSRfaW1hZ2VzWyJqcyJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSGRTVVJCVkRqTGpaTlBheE5CR0lkckx3VVJMem5XZ2tjdg0KCQlJclFoUnc5RkdneTAxSVkwVFZzUTBxNkdGa1Qwa3dqSklkOUFQNEFIUDRROUZPMmhKN0VsMit5ZjdPek1iamE3U2YwNTc4UWROeWJGDQoJCUxqd3N6THUvWjJmZW1aa0RNRWZJNTRGa1JWTDREdzhsOHpxWEVhd01CZ00ySEE2dlI2TVJaaUhyYURhYkg3S1NyS0JBNFNBSUVJYWgNCgkJeHZkOWVKNkhicmVySktacG90VnFhVWthdmtNQytpQ0tJc1J4ck42RUVBS01NVmlXcFFUOWZoLzBrM2E3UFpaa0JVUG1xWEFLQ1NqQQ0KCQlPWWR0MjFOTFVqMUpCWVc3QzZ2aTZCQzh2S1dLUVhVWFFjTkE1Tmg2S1k3anFKbDBPcDFKd1kvSGk3bUxwL2xUL3VvQS9PWDJXTEMzDQoJCUM5Rm9RQndmSUxLdWxJUm1RdjF3WGZldndIbXl1TVBYUzVGdjFNSHJGU1RtaFNvbW5VdncvU3BvM0MrdmczLytwSlpEUFNHUkZ2aWwNCgkJTlYrOFBVWnZvemlLdm4rZDNMWnZKL0JlbE1EZXZJWlhLMkVRQ2lVaHRNRE01M2JZNXJPSUdYdHdqVTNFVnovSE01QXo4ZXBscVBGSw0KCQlFZnpMUjkxY09nOFRQVGdyM011ZEZ4K2Q5b3dLN0tNTlZmUU90eVExT085cWlIc1draVJSVUhoS1FMdXdmSDkrMVhwZmhWVmZVMFYzDQoJCS8vazR6RndkempJbFNBL1N2OGpUT1pPYkJMOXV1Z2N6dU5hQ1A1SzhiRkJJaGR1RTViZEMzZDZNWUlra3Q3ak9LWFQxbDM0RGtJdTkNCgkJZTBhZ1pqb0FBQUFBU1VWT1JLNUNZSUk9IjsNCgkJJF9pbWFnZXNbIm1vdiJdID0gJF9pbWFnZXNbInZpZGVvIl07DQoJCSRfaW1hZ2VzWyJtcDMiXSA9ICRfaW1hZ2VzWyJhdWRpbyJdOw0KCQkkX2ltYWdlc1sibXA0Il0gPSAkX2ltYWdlc1siYXVkaW8iXTsNCgkJJF9pbWFnZXNbIm1wZWciXSA9ICRfaW1hZ2VzWyJ2aWRlbyJdOw0KCQkkX2ltYWdlc1sibXBnIl0gPSAkX2ltYWdlc1sidmlkZW8iXTsNCgkJJF9pbWFnZXNbIm9kZyJdID0gJF9pbWFnZXNbInZlY3RvcmdyYXBoaWNzIl07DQoJCSRfaW1hZ2VzWyJvZHAiXSA9ICRfaW1hZ2VzWyJwcmVzZW50YXRpb24iXTsNCgkJJF9pbWFnZXNbIm9kcyJdID0gJF9pbWFnZXNbInNwcmVhZHNoZWV0Il07DQoJCSRfaW1hZ2VzWyJvZHQiXSA9ICRfaW1hZ2VzWyJ0ZXh0ZG9jdW1lbnQiXTsNCgkJJF9pbWFnZXNbInBkZiJdID0gImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDANCgkJVTI5bWRIZGhjbVVBUVdSdlltVWdTVzFoWjJWU1pXRmtlWEhKWlR3QUFBSGhTVVJCVkRqTGpaUExTeHRSRklmVlpSZFdpMG9GQmYrQg0KCQlyaFJ4NWRLVllLRzR0TGhScWxnWFBtSVZKUWlDNjBKQ0NaWXFGSFFoN3JyUWxVSzdhVlVVZkNCUkc1UmtKcE5ra3N3ck01TkVmNzNuDQoJCTZneHBIdWpBQi9mT3ZlZmpuSE01VlFDcUNQYTFNTm9ablUvUXhxaHg0d29FN1pabHBYTzUzRjArbjBjNTJEbDhQdC9uUWttaG9KT0MNCgkJZFVXQnN2UUoydTRPRE1PQXd2YXBWQXFTSkhHSktJcncrLzJ1eEFtdUpnRmRNRFVWaW5jU3h2RUJUTk9FcG1sSXA5T0l4V0pja01saw0KCQlvT3M2QW9IQWc2UllZTnMya3A0UnFPdmZ1SUFDVkZWRlBCNHZLWW4zcEZqQXlrRFNPd1Z0YTUydnFXNm5sRVFpd1RNUkJLR3lnSWg5DQoJCUdFRENNd1pINkVnb0UrcUhMTXVWQmRiZkt3anYzeUU2T2dqei9QUS9DWlZEUFNGUlJZRTQvUkh5MXk4d3J5OFJHV0dTcXlDL25NMW0NCgkJZVg5SVFwUVYySktJVUg4dnJFZ1ltZUFGd3VQRENIYTlRZWh0RDI2SEJoQ1puWUM4dWNHektTc0lMOHdnc2ppSDFQWVB4TCt2UXZtNQ0KCQlCLzNzQk1MeUltN0doaENlOTBCYVd5a1YvR3ArVlI5b3FQVmU5dmZCVHNydU0xSHRCS1ZQbUZJVU51c0JyVjNCNGV2NmJzYnlYbFBkDQoJCWtici91K1N0SFVreHJ1QlBZKzBLWThmMzhvV1gvYnl2TkFkbHVITkxlT3hEQit1eVFRZlBDV1ozTlQ2OUJZSldranhqbkIxbzlGdi8NCgkJQVNRNXMrQUJ6OGkyQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJwaHAiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUdzU1VSQlZEakxqWk5MU3dKUkZJQ3RGdjJBZ2dnUzJ2UUwNCgkJREZ2VnBuMFBpNGlJdG0xS0l0dldKcVcxcFlzUmVteXlOSUxBUmJacG0wV3RySjBrYm1iVWxIbXI0K3QwejYwWjdvU1NBeDkzNXR4eg0KCQl2cmxQQndBNEVQS01FVndFOXorTUUvcXRPa2JncXRWcVVxUFJhRFdiVGVnRTZZZFFLQlJrSmF6QWpjV2Fwb0d1NnhheUxJTW9pbEFvDQoJCUZLaEVFQVFJaDhPV3hDenVRd0VtVkt0Vk1BeUR0b2lxcWlCSkVoU0xSU3FvVkNxQVArRTQ3a2VDQXZmVTVzRFE4TVJzL09ZTnRyMXgNCgkJMlBYZHd1SlNoTExsamNGbE5BVzVIQTlraExZcDBUVWhTWU1MSG03UExFRFM3enl3M3liUnF5ZmcrVHlCdHdsMnNEUDFuS1dGaVVTYQ0KCQl6RmV4M3RrNDVzWGpMMUF1bDIwQ0dUcytzeVZZMzdpZ0Jid2cwM2VNc2ZIOWd3U3NyWitEb2lnMlFac2ROaVptTWtWckttd2MxOGF6DQoJCUhLRUx5UXJPTUVIVERKcDhIWHUxaG9zdEc4ZFk4UGlSbmdkV01FcTQ2N1p3YkR4d2xJUjhYclFMY0J2bjVrOUdwbWQ4Zm4vZ0hsWlcNCgkJVDIwQy9ENGs4ZVREQjN5VkZLalg2eFNiZ0QxSWY4Rzk3MFEzUWJ2YlBlaEF5eEw4U2liSkVkYXhvNWRpa3F2UzI4c0luQ2pwNFRxYg0KCQk0TlYzZmdQaXJaNHBENEtTNHdBQUFBQkpSVTVFcmtKZ2dnPT0iOw0KCQkkX2ltYWdlc1sicG5nIl0gPSAkX2ltYWdlc1siaW1hZ2UiXTsNCgkJJF9pbWFnZXNbInBwcyJdID0gJF9pbWFnZXNbInByZXNlbnRhdGlvbiJdOw0KCQkkX2ltYWdlc1sicHBzeCJdID0gJF9pbWFnZXNbInByZXNlbnRhdGlvbiJdOw0KCQkkX2ltYWdlc1sicHB0Il0gPSAkX2ltYWdlc1sicHJlc2VudGF0aW9uIl07DQoJCSRfaW1hZ2VzWyJwcHR4Il0gPSAkX2ltYWdlc1sicHJlc2VudGF0aW9uIl07DQoJCSRfaW1hZ2VzWyJwc2QiXSA9ICRfaW1hZ2VzWyJncmFwaGljcyJdOw0KCQkkX2ltYWdlc1sicmFyIl0gPSAkX2ltYWdlc1siYXJjaGl2ZSJdOw0KCQkkX2ltYWdlc1sicmIiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQUlFU1VSQlZEakxqWk5QVHhOQkdJZXhpZDlDRXI4REJyOEMNCgkJSEVpTVZvb21KaVFreEJJTTNkZ0lpYUlFU0pUR0dwVnR5WEl6SGhvTTRTSWU5S0FuRWk0Y2xRdEpFY3pXRnJiZFA5M2Q3czd1L0p3Wg0KCQk3WFlKQmRua3lSeG1mcy9Ndk85T0Q0QWVEdnV1TVBvWS9mL2hLaU1SNVdLQ3ZsYXJwUk5Dd2lBSTBBMDJEMW1XMzhRbGNVRS9EemViDQoJCVRkaTJIV0VZQmhxTkJxclZxcEJVS2hVVUNvVkkwZzVmNGdLK3dIVmRlSjRuUm81bFdkQjFIYlZhVFFnY3h3SGZSRkdVdnhJdUNLWWYNCgkJem1xWnlaMndLSU84ZlEzLzFVdjRTeS9RV2xpQU8vc1U5cU1abUZNUzNIZnZUMXhKMUlUT1pKOVJwUWk2K1JIMHkyZlFiMTlCUDIzQw0KCQlWaFJvK1R5c1hBNzErWGtjTUlrNmZBZkhLNnRRVmZXRW9FU1huZ05yYTBDNURIWkpZR01EWmlhRDM1SUVpNDFxT28zdmMzTW9KMU9vDQoJCWo5MkhwbWtkUVppVkVzSFVBemw4OGhqWTNnWUlBZGJYWVEwTW9EbzRDSDFrQkhzc3ZIOGpDZjNlR0t6RFh6Qk5zeU5vRi9ISDdXU0oNCgkJWkxQQTdpNnd0UVZuYUFobUtvWGp4VVg4dkRrTVkzUWNubTZJSW5KT0NTNG5FdGU5UWhGK1JoSW5JUk1UY0ZoWXZaV0NjWGNVUG1zbA0KCQk3dzZIL3crbkJGRWI1U0xjOFRUbzhqTHE3TTRtMjVtSGZkOFg4UEM1QXRIclhCNU5kbXdScm5mQ2NjNFZDRW5wQThqUkVhc3A2Y3BaDQoJCUFucldPK2hDR0FuK1NhNnhBdGw4NGlKaHR0WVNyemNtNk9XU0N6em5OdnpwOS80Qmd3S3ZHM1pxMWVvQUFBQUFTVVZPUks1Q1lJST0iOw0KCQkkX2ltYWdlc1sic2xuIl0gPSAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMA0KCQlVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFKUVNVUkJWRGpMalpOdlNCTnhHTWVYOU8rRk9Ba2FMYmVoDQoJCW96ZEdSR2lNUXFUSWxFcUpNSWlnM294bDBZeGNnWXQ2RlVaUnJ5TFl3cEZXQ3Iyd1hnakJJTUpNWWhGamdaU2lFWE9nNWM1TjU5M3UNCgkJZG5lN3UrMiszVjN0VDIyU0J4L3V4ZS81ZnU3dXVlZlJBZENwS0pkSm9WSEI5aDlxRlNyeXVTSkJZenFkcGlSSnltWXlHWlJET1lmSA0KCQk0M2xVTENrVzJOUndLcFVDeTdKNWtza2tTSkpFTEJiVEpBUkJ3T3YxNWlXNThBWlZvQmJ3UEE5QkVMUzdDc013b0NnSzhYaGNFM0FjDQoJCUIvVWhQcC92dHlRbkdCaTAzcFlYanlBYlBRdVJEMnNTYm1VRlZOOU5MSjV1eDlEcnlaSlAwbnFpQ2h6amw0OE9oOW9ZUlBUQVhCVmsNCgkJc2duUzBoUld1N3V4WEcvRWZMMFpaOXlqR0hnYjF0NGtHbzBXQk82QXZjVVZzRlA5b1RaWmpsUUNQN1pBL3I0SnBITTNsdXAySW02cA0KCQlSc1JhaTJQWC9Ham9EV0VrOEJXSlJLSWc2UDE0N21mUCtDVzYzZDE2UlV5T1FQNVNBNnJMQXNLeUEwVE5OaXp2TTREOS9BNFRrMkVjDQoJCTdudVBFMCt2Z3FicGdxQm56TGw2dnY4TjMreDRlRXNTMG1BdkhBSmhNb0F3NmtIVVZVRjRya2VXSEFLWFp0QTE1a0RMNkM2dGtYbUINCgkJZmZpWnMvUCtORTdkQzRwQmh3c0pZNlVTVmpCdEJPL2JDc3dyYmZxMkdTK0NlOUR3eW9vSG9SdmFQUHpWeEk2N0lWZkhuUUErMkpxUQ0KCQlNRlFndXIwYW5QOEo1SVZtWUVvcG1kYmg1WVFPMXdNdTBCeGRLbEIvNDRHTGc0OC9IVDhKOHVCZXNINi9WaUR4QzVEbldpSFBXakF6DQoJCTB3bGVZQ0dLb2thSklEZEkvNkpNWjFuV0VzaHI3VUVac25uQkg4bCtaZnBZOVdBOVlhV1cwYmEzU0dCV0pldFk1eHpxNnB0L0FZNi8NCgkJbUttenNoRjVBQUFBQUVsRlRrU3VRbUNDIjsNCgkJJF9pbWFnZXNbInNxbCJdID0gJF9pbWFnZXNbImRhdGFiYXNlIl07DQoJCSRfaW1hZ2VzWyJ0YXIiXSA9ICRfaW1hZ2VzWyJhcmNoaXZlIl07DQoJCSRfaW1hZ2VzWyJ0Z3oiXSA9ICRfaW1hZ2VzWyJhcmNoaXZlIl07DQoJCSRfaW1hZ2VzWyJ0eHQiXSA9ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBUUFBQUMxK2pmcUFBQUFCR2RCVFVFQUFLL0lOd1dLNlFBQUFCbDBSVmgwDQoJCVUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQURvU1VSQlZCZ1pCY0V4YmxOQkdBYkEyY2VlZ1RSQnVJS08NCgkJZ2lpaFNaTlRjQzVMVUhBaWhOSlIwa0dLQ0RjWUpZNkQzLzc3TWRPaW5UdnpBZ0N3OHlzVGhJdm4vVm9qSXlNakl5UFArYlMxc1VRSQ0KCQlWMnM5NXBCRER2bWJQL21ka2Z0ODN0cFlndVpxNUpoL09lYVloK3l6eThoVEh2TmxheE5OY3ptK2xhOU9UbGFyMVVkQS8rQzJBNHRyDQoJCVJDbkQzalM4QkIxb2JxMkdrNkdVNlFiUUFTNEJVYVlTUUFmNGJoaEtLVEZkQXpyQU93QXhFVUFIK0tFTTAxU1kzZ002d0JzRUFRQjANCgkJZ0orbWFab0MzZ0k2aVBZYUFJQkpzaVJtSFUwQUFMT2VGQzNhSzJjV0FBQ1VYZTcrQXdPMGxjOWVUSFlUQUFBQUFFbEZUa1N1UW1DQyI7DQoJCSRfaW1hZ2VzWyJ3YXYiXSA9ICRfaW1hZ2VzWyJhdWRpbyJdOw0KCQkkX2ltYWdlc1sid21hIl0gPSAkX2ltYWdlc1siYXVkaW8iXTsNCgkJJF9pbWFnZXNbIndtdiJdID0gJF9pbWFnZXNbInZpZGVvIl07DQoJCSRfaW1hZ2VzWyJ4Y2YiXSA9ICRfaW1hZ2VzWyJncmFwaGljcyJdOw0KCQkkX2ltYWdlc1sieGxzIl0gPSAkX2ltYWdlc1sic3ByZWFkc2hlZXQiXTsNCgkJJF9pbWFnZXNbInhsc3giXSA9ICRfaW1hZ2VzWyJzcHJlYWRzaGVldCJdOw0KCQkkX2ltYWdlc1sieG1sIl0gPSAkX2ltYWdlc1siY29kZSJdOw0KCQkkX2ltYWdlc1siemlwIl0gPSAkX2ltYWdlc1siYXJjaGl2ZSJdOw0KCQkNCgkJDQoJCSRtdGltZSA9IGdtZGF0ZSgncicsIGZpbGVtdGltZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pKTsNCgkJJGV0YWcgPSBtZDUoJG10aW1lLiRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7DQoNCgkJaGVhZGVyKCdFVGFnOiAiJy4kZXRhZy4nIicpOw0KCQloZWFkZXIoJ0xhc3QtTW9kaWZpZWQ6ICcuJG10aW1lKTsNCgkJaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlL2dpZicpOw0KCQlpZihpc3NldCgkX2ltYWdlc1skZXh0XSkpDQoJCXByaW50IGJhc2U2NF9kZWNvZGUoJF9pbWFnZXNbJGV4dF0pOw0KCQllbHNlDQoJCXByaW50IGJhc2U2NF9kZWNvZGUoJF9pbWFnZXNbInVua25vd24iXSk7DQoJfQ0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/lib/class tbTools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZToJCVRvb2xCb3gNClRpdGxlOgkJRXh0ZW5kZWQgdG9vbHMgY2xhc3MNClZlcnNpb246CTEuMg0KRGVzY3JpcHQuOglTbWFydHktRXh0ZW5zaW9uIGZvciBzb21lIHVzZWZ1bCBmdW5jdGlvbnMNCkxhc3QgTW9kLjoJMDkuMTEuMjAxMg0KQXV0aG9yOgkJTHVrYXMgQmxhdHRlcg0KRW1haWw6CQlsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoDQpOb3RlczoNCkxpY2VuY2U6CVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQoJCQlpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KCQkJdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCgkJCShhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQoJCQlIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQNCgkJCWFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KCQkJaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUw0KCQkJTWFkZSBTaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluDQoJCQlzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlLg0KCQkJRmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENNUyBNYWRlIFNpbXBsZSBvbiBpdHMgd2Vic2l0ZToNCgkJCWh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcvDQoJCQlUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCgkJCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQoJCQlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQoJCQlHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KCQkJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCgkJCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQoJCQlGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KCQkJT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQpjbGFzcyB0YlRvb2xzDQp7DQoJcHJpdmF0ZSBzdGF0aWMgJF9pbnN0YW5jZTsNCglwcml2YXRlIHN0YXRpYyAkX2Ntc21zOw0KCXByaXZhdGUgc3RhdGljICRfc21hcnR5Ow0KCXByaXZhdGUgc3RhdGljICRfY29udGVudG9wczsNCglwcml2YXRlIHN0YXRpYyAkX2hpZXJhcmNoeW1hbmFnZXI7DQoJcHJpdmF0ZSBzdGF0aWMgJF9sb2c7DQoJDQoJcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9DQoNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRDbXNtcygpDQoJew0KCQlpZighaXNfb2JqZWN0KHNlbGY6OiRfY21zbXMpKSBzZWxmOjokX2Ntc21zID0gJiBjbXNtcygpOw0KCQlyZXR1cm4gc2VsZjo6JF9jbXNtczsNCgl9DQoJDQoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U21hcnR5KCkNCgl7DQoJCWlmKCFpc19vYmplY3Qoc2VsZjo6JF9zbWFydHkpKQlzZWxmOjokX3NtYXJ0eSA9ICYgc2VsZjo6Z2V0Q21zbXMoKS0+R2V0U21hcnR5KCk7DQoJCXJldHVybiBzZWxmOjokX3NtYXJ0eTsNCgl9DQoNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRDb250ZW50T3BzKCkNCgl7DQoJCWlmKCFpc19vYmplY3Qoc2VsZjo6JF9jb250ZW50b3BzKSkJc2VsZjo6JF9jb250ZW50b3BzID0gc2VsZjo6Z2V0Q21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCgkJcmV0dXJuIHNlbGY6OiRfY29udGVudG9wczsNCgl9DQoNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRIaWVyYXJjaHlNYW5hZ2VyKCkNCgl7DQoJCWlmKCFpc19vYmplY3Qoc2VsZjo6JF9oaWVyYXJjaHltYW5hZ2VyKSkJc2VsZjo6JF9oaWVyYXJjaHltYW5hZ2VyID0gc2VsZjo6Z2V0Q21zbXMoKS0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KCQlyZXR1cm4gc2VsZjo6JF9oaWVyYXJjaHltYW5hZ2VyOw0KCX0NCgkNCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2coJGxvZykNCgl7DQoJCWlmICghaXNfb2JqZWt0KHNlbGY6OiRfbG9nKSkgew0KCQkJc2VsZjo6JF9sb2cgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1Rvb2xCb3gnKTsNCgkJCXNlbGY6OiRfbG9nLT5zZXRMb2dGaWxlKCd0YlRvb2xzTG9nJyk7DQoJCX0NCgkJc2VsZjo6JF9sb2ctPmx3cml0ZSgkbG9nKTsNCgl9DQoJDQoJDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaW5zdGFuY2UoKQ0KCXsNCgkJcmV0dXJuIG5ldyBzZWxmOw0KCQkNCgkJaWYoIXNlbGY6OiRfaW5zdGFuY2UpDQoJCQlzZWxmOjokX2luc3RhbmNlID0gbmV3IHNlbGY7DQoJCXJldHVybiBzZWxmOjokX2luc3RhbmNlOw0KCX0gDQoJDQoJcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbWV0aG9kLCAkYXJncykNCgl7DQoJCWlmICghbWV0aG9kX2V4aXN0cyhfX0NMQVNTX18sJG1ldGhvZCkpIHsNCiAgICAgICAgICAgICRtZXNzYWdlID0gJ21ldGhvZCBcJycgLiBfX0NMQVNTX18gLiAnOjonIC4gJG1ldGhvZCAuICdcJyBpcyB1bmtub3duLic7DQogICAgICAgICAgICBlY2hvICRtZXNzYWdlOw0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigkbWVzc2FnZSxFX1VTRVJfV0FSTklORyApOw0KICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgIH0gDQoJCQ0KCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoX19DTEFTU19fIC4gJzo6JyAuICRtZXRob2QsICRhcmdzKTsNCgkJDQoJfQ0KDQovLwlwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykNCi8vCXsNCi8vCQlpZiAoIW1ldGhvZF9leGlzdHMoX19DTEFTU19fLCRtZXRob2QpKSB7DQovLyAgICAgICAgICAgICRtZXNzYWdlID0gJ21ldGhvZCBcJycgLiBfX0NMQVNTX18gLiAnOjonIC4gJG1ldGhvZCAuICdcJyBpcyB1bmtub3duLic7DQovLyAgICAgICAgICAgIGVjaG8gJG1lc3NhZ2U7DQovLyAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJG1lc3NhZ2UsRV9VU0VSX1dBUk5JTkcgKTsNCi8vICAgICAgICAgICAgcmV0dXJuIG51bGw7DQovLyAgICAgICAgfQ0KLy8JCXJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheShfX0NMQVNTX18gLiAnOjonIC4gJG1ldGhvZCwgJGFyZ3MpOw0KLy8JfQ0KCQ0KCQ0KCS8qKg0KCSAqDQoJICogUHLDvGZ0LCBvYiBkZXIgYW5nZWdlYmVuZSBBbGlhcyBlaW5lIFBhZ2VJRCBpc3QgdW5kIGdpYnQgZGVuIEFsaWFzIHp1csO8Y2sNCgkgKiBpc3Qga2VpbiBBbGlhcyBhbmdlZ2ViZW4sIHNvIHdpcmQgZGVyIHBhZ2VfYWxpYXMgdmVyd2VuZGV0DQoJICogQHBhcmFtICRhbGlhcw0KCSAqIEByZXR1cm4gc3RyaW5nICRhbGlhcw0KCSAqIMKnQGF1dGhvcjogTHVrYXMgQmxhdHRlciwgMjAuMTIuMjAxMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0QWxpYXMoJGFsaWFzID0gJycpDQoJew0KCQkkYWxpYXMgPSB0aW0oJGFsaWFzKTsNCgkJaWYgKCEkYWxpYXMpIHsNCgkJCSRhbGlhcyA9IHNlbGY6OmdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygncGFnZV9hbGlhcycpOw0KCQkJaWYgKCRhbGlhcykgcmV0dXJuICRhbGlhczsNCgkJCWVsc2UgcmV0dXJuIGZhbHNlOw0KCQl9CQ0KCQkNCgkJJGdDbXMgPSBjbXNtcygpOw0KCQkNCgkJJG1hbmFnZXIgPSBzZWxmOjpnZXRIaWVyYXJjaHlNYW5hZ2VyKCk7DQoJCSRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkYWxpYXMpOw0KICAgIAlpZiAoIWlzc2V0KCRub2RlKSkgew0KCQkJJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUlkKCRhbGlhcyk7DQoJCQlpZiAoaXNzZXQoJG5vZGUpKQ0KCQkJCSRhbGlhcyA9ICRub2RlLT5nZXRfdGFnKCRhbGlhcyk7DQoJCQllbHNlDQoJCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJcmV0dXJuICRhbGlhczsNCgl9DQoNCgkvKioNCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPnNlbGZfdXJsIGJ5IFJvYmVydCBDYW1wYmVsbA0KCSAqIEdpYnQgZGllIGFrdHVlbGxlIFNlaXRlbi1VUkwgenVyw7xjaw0KCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbg0KCSAqIEByZXR1cm4gc3RyaW5nIC8gc21hcnR5IGFzc2lnbg0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gc2VsZlVybCgkYXNzaWduPScnKQ0KCXsNCgkJJHMgPSBlbXB0eSgkX1NFUlZFUlsiSFRUUFMiXSkgPyAnJyA6ICgkX1NFUlZFUlsiSFRUUFMiXSA9PSAib24iKSA/ICJzIiA6ICIiOw0KCQkkcCA9IHN0cnBvcygkX1NFUlZFUlsnU0VSVkVSX1BST1RPQ09MJ10sJy8nKTsNCgkJJHByb3RvY29sID0gc3RydG9sb3dlcihzdWJzdHIoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddLDAsJHApKS4kczsNCgkJJHBvcnQgPSAoJF9TRVJWRVJbIlNFUlZFUl9QT1JUIl0gPT0gIjgwIikgPyAiIiA6ICgiOiIuJF9TRVJWRVJbIlNFUlZFUl9QT1JUIl0pOw0KCQkkcyA9ICRwcm90b2NvbC4iOi8vIi4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4kcG9ydDsNCg0KCQkkdXJsID0gJHMuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107DQoJCWlmKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJGdDbXMgPSBjbXNtcygpOw0KCQkJJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsNCgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCR1cmwpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCXJldHVybiAkdXJsOw0KCX0NCgkNCgkvKioNCgkgKg0KCSAqIEdpYnQgenVyw7xjayBvYiBlaW5lIGJlc3RpbW10ZSBTZWl0ZSBkaWUgRGVmYXVsdHNlaXRlIGlzdA0KCSAqIEBjb3B5cmlnaHQgTHVrYXMgQmxhdHRlcg0KCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzIC0gYWxpYXMgb3IgaWQgb2YgYSBwYWdlDQoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduIC0gbmFtZSBvZiBhc3NpZ24gdmFyaWFibGUNCgkgKi8NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gaXNEZWZhdWx0UGFnZSgkYWxpYXMgPSAnJywgJGFzc2lnbiA9ICcnKQ0KCXsNCgkJJGRlZmF1bHQgPSBmYWxzZTsNCgkJJGdDbXMgPSBzZWxmOjpnZXRDbXNtcygpOw0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRhbGlhcyA9IHNlbGY6OmdldEFsaWFzKCRhbGlhcyk7DQoJCQ0KCQlpZighJGFsaWFzKSByZXR1cm4gJGRlZmF1bHQ7DQoNCgkJJGNvbnRlbnRvcHMgPSBzZWxmOjpnZXRDb250ZW50T3BzKCk7DQoNCgkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzKTsNCgkJaWYoIGlzX29iamVjdCgkY29udGVudCkgKSB7DQoJCQkkZGVmYXVsdCA9ICRjb250ZW50LT5EZWZhdWx0Q29udGVudCgpOw0KCQl9DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkZGVmYXVsdCk7DQoJCQlyZXR1cm47DQoJCX0NCgkJcmV0dXJuICRkZWZhdWx0Ow0KCX0NCg0KCS8qKg0KCSAqIGJhc2VkIG9uICRjZ3NpbXBsZS0+Z2V0X3BhcmVudF9hbGlhcyBieSBSb2JlcnQgQ2FtcGJlbGwNCgkgKiBHaWJ0IGRlbiBBbGlhcyBkZXIgUGFyZW50IFBhZ2Ugb2RlciBkZW4gQWxpYXMgZGVyIFBhcmVudCBQYWdlIGVpbmVyIGRlZmluaWVydGVuIFNlaXRlIHp1cu+/vWNrDQoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMNCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24NCgkgKi8NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0UGFyZW50QWxpYXMoJGFsaWFzID0gJycsJGFzc2lnbiA9ICcnKQ0KCXsNCgkJJGdDbXMgPSBzZWxmOjpnZXRDbXNtcygpOw0KCQkkaG0gPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOw0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRhbGlhcyA9IHNlbGY6OmdldEFsaWFzKCRhbGlhcyk7DQoNCgkJJG5vZGUgPSAkaG0tPmZpbmRfYnlfdGFnKCdhbGlhcycsJGFsaWFzKTsNCgkJaWYoICEkbm9kZSApIHJldHVybjsNCg0KCQkkYWxpYXMgPSAkbm9kZS0+Z2V0UGFyZW50KCktPmdldF90YWcoJ2FsaWFzJyk7DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkYWxpYXMpOw0KCQkJcmV0dXJuOw0KICAgIAl9DQogIAkJcmV0dXJuICRhbGlhczsNCgl9DQoJDQoJDQoJLyoqDQoJICogYmFzZWQgb24gJGNnc2ltcGxlLT5nZXRfcm9vdF9hbGlhcygpIGJ5IFJvYmVydCBDYW1wYmVsbA0KCSAqIGdpYnQgZGVuIFBhZ2UgQWxpYXMgZGVyIFJvb3RzZWl0ZSAob2JlcnN0ZSBFYmVuZSkgYWt0dWVsbGVuIG9kZXIgZWluZXIgZGVmaW5pZXJ0ZW4gU2VpdGUgenVy77+9Y2sNCgkgKiBAcGFyYW0gdW5rbm93bl90eXBlICRhbGlhcw0KCSAqIEBwYXJhbSB1bmtub3duX3R5cGUgJGFzc2lnbg0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0Um9vdEFsaWFzKCRhbGlhcyA9ICcnLCRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7DQoJCSRzbWFydHkgPSBzZWxmOjpnZXRTbWFydHkoKTsNCgkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsNCg0KCQkkc3RhY2sgPSBhcnJheSgpOw0KCQkkbm9kZSA9ICRobS0+ZmluZF9ieV90YWcoJ2FsaWFzJywkYWxpYXMpOw0KCQl3aGlsZSggJG5vZGUgJiYgJG5vZGUtPmdldF90YWcoJ2lkJykgPiAwICkgew0KCQkJJHN0YWNrW10gPSAkbm9kZTsNCgkJCSRub2RlID0gJG5vZGUtPmdldFBhcmVudCgpOw0KCQl9DQoJCWlmKCBjb3VudCgkc3RhY2spID09IDAgKSByZXR1cm47DQoNCgkJJGFsaWFzID0gJHN0YWNrW2NvdW50KCRzdGFjayktMV0tPmdldF90YWcoJ2FsaWFzJyk7DQoJCWlmKCAkYXNzaWduICE9ICcnICkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGFsaWFzKTsNCgkJCXJldHVybjsNCgkJfQ0KCQlyZXR1cm4gJGFsaWFzOw0KCX0NCg0KCS8qKg0KCSAqIGdpYnQgZGVuIFBhZ2UgQWxpYXMgZWluZXIgUGFyZW50c2VpdGUgYXVmIGVpbmVtIGJlc3RpbW10ZW4gTGV2ZWwgYXVzLg0KCSAqIEBjb3B5cmlnaHQgTHVrYXMgQmxhdHRlcg0KCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzDQoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduDQoJICogQHJldHVybiBzdHJpbmcgLSBwYWdlIGFsaWFzDQoJICovDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRMZXZlbEFsaWFzKCRsZXZlbCwgJGFsaWFzID0gJycsJGFzc2lnbiA9ICcnKQ0KCXsNCgkJJGdDbXMgPSBzZWxmOjpnZXRDbXNtcygpOw0KCQkkY29udGVudG9wcyA9IHNlbGY6OmdldENvbnRlbnRPcHMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KDQoJCWlmKCAkYWxpYXMgPT0gJycgKSB7DQoJCQkkYWxpYXMgPSAkc21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygncGFnZV9hbGlhcycpOw0KCQl9DQoJCWVsc2UNCgkJCSRhbGlhcyA9IHNlbGY6OmdldEFsaWFzKCRhbGlhcyk7DQoNCiAgCQkkaWQgPSAkY29udGVudG9wcy0+R2V0UGFnZUlERnJvbUFsaWFzKCRhbGlhcyk7DQoJCXdoaWxlKCAkaWQgPiAwICkgew0KCQkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGlkKTsNCgkJCWlmKCAhaXNfb2JqZWN0KCAkY29udGVudCApICkgcmV0dXJuICcnOw0KDQoJCQkkcGFnZWxldmVsID0gc3Vic3RyX2NvdW50KCRjb250ZW50LT5IaWVyYXJjaHkoKSwnLicpICsgMTsNCgkJCSRhbGlhcyA9ICRjb250ZW50LT5BbGlhcygpOw0KCQkJJGlkID0gJGNvbnRlbnQtPlBhcmVudElkKCk7DQoNCgkJCWlmICgkcGFnZWxldmVsID09ICRsZXZlbCkgew0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJZWxzZSBpZiAoJHBhZ2VsZXZlbCA8ICRsZXZlbCkgew0KCQkJCXJldHVybiAnJzsNCgkJCX0NCgkJfQ0KDQogICAgCWlmKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGFsaWFzKTsNCgkJCXJldHVybjsNCgkJfQ0KCQlyZXR1cm4gJGFsaWFzOw0KCX0NCg0KCS8qKg0KCSAqIGJhc2VkIG9uICRjZ3NpbXBsZS0+Z2V0X3BhZ2VfdGl0bGUoKSBieSBSb2JlcnQgQ2FtcGJlbGwNCgkgKiBHaWJ0IGRlbiBTZWl0ZW50aXRlbCBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSBvZGVyIGRlciBha3R1ZWxsZW4gU2VpdGUgenVy77+9Y2sNCgkgKiBAcGFyYW0gdW5rbm93bl90eXBlICRhbGlhcw0KCSAqIEBwYXJhbSB1bmtub3duX3R5cGUgJGFzc2lnbg0KCSAqLw0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRQYWdlVGl0bGUoJGFsaWFzID0gJycsJGFzc2lnbiA9ICcnKQ0KCXsNCgkJJGdDbXMgPSBzZWxmOjpnZXRDbXNtcygpOw0KCQkkY29udGVudG9wcyA9IHNlbGY6OmdldENvbnRlbnRPcHMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KDQoJCWlmKCEkYWxpYXMpIHJldHVybiAnJzsNCg0KCQkkY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcygkYWxpYXMpOw0KCQlpZiggIWlzX29iamVjdCgkY29udGVudCkgKSByZXR1cm4gJyc7DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkY29udGVudC0+TmFtZSgpKTsNCgkJCXJldHVybjsNCgkgICAgfQ0KCQlyZXR1cm4gJGNvbnRlbnQtPk5hbWUoKTsNCgl9DQoNCg0KCS8qKg0KCSAqIGJhc2VkIG9uICRjZ3NpbXBsZS0+Z2V0X3BhZ2VfbWVudXRleHQoKSBieSBSb2JlcnQgQ2FtcGJlbGwNCgkgKiBHaWJ0IGRlbiBNZW51dGV4dCBlaW5lciBiZXN0aW1tdGVuIFNlaXRlIG9kZXIgZGVyIGFrdHVlbGxlbiBTZWl0ZSB6dXLvv71jaw0KCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzDQoJICogQHBhcmFtIHN0cmluZyAkYXNzaWduDQoJICovDQoNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFBhZ2VNZW51dGV4dCgkYWxpYXMgPSAnJywkYXNzaWduID0gJycpDQoJew0KCQkkZ0NtcyA9IHNlbGY6OmdldENtc21zKCk7DQoJCSRjb250ZW50b3BzID0gc2VsZjo6Z2V0Q29udGVudE9wcygpOw0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRhbGlhcyA9IHNlbGY6OmdldEFsaWFzKCRhbGlhcyk7DQoNCgkJaWYoISRhbGlhcykgcmV0dXJuIGZhbHNlOw0KDQoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7DQoJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIHJldHVybiAnJzsNCg0KCQlpZighZW1wdHkoJGFzc2lnbikpIHsNCgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRjb250ZW50LT5NZW51VGV4dCgpKTsNCgkJCXJldHVybjsNCgkgICAgfQ0KCQlyZXR1cm4gJGNvbnRlbnQtPk1lbnVUZXh0KCk7DQoJfQ0KDQoNCgkvKioNCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmhhc19jaGlsZHJlbigpIGJ5IFJvYmVydCBDYW1wYmVsbA0KCSAqIEhhdCBlaW5lIGRlZmluaWVydGUgb2RlciBkaWUgYWt0dWVsbGUgU2VpdGUgd2VpdGVyZSBVbnRlcnNlaXRlbj8NCgkgKiBAcGFyYW0gJGFsaWFzDQoJICogQHBhcmFtICRhc3NpZ24NCgkgKi8NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gaGFzQ2hpbGRyZW4oJGFsaWFzID0gJycsJGFzc2lnbiA9ICcnKQ0KCXsNCgkJJHJlc3VsdCA9IGZhbHNlOw0KCQkkZ0NtcyA9IHNlbGY6OmdldENtc21zKCk7DQoJCSRjb250ZW50b3BzID0gc2VsZjo6Z2V0Q29udGVudE9wcygpOw0KCQkkc21hcnR5ID0gIHNlbGY6OmdldFNtYXJ0eSgpOw0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KDQoJICAgIGlmKCEkYWxpYXMpIHJldHVybiBmYWxzZTsNCg0KCQkkY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcygkYWxpYXMpOw0KCQlpZihpc19vYmplY3QoJGNvbnRlbnQpICkNCgkJCSRyZXN1bHQgPSAkY29udGVudC0+SGFzQ2hpbGRyZW4oKTsNCg0KCQlpZighZW1wdHkoJGFzc2lnbikpIHsNCgkJCSRzbWFydHktPmFzc2lnbigkYXNzaWduLCRyZXN1bHQpOw0KCQkJcmV0dXJuOw0KCSAgICB9DQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCg0KDQoJLyoqDQoJICogR2lidCBkZW4gQWxpYXMgZGVyIGVyc3RlbiBDaGlsZHNlaXRlIG1pdCBJbmhhbHQgYXVzDQoJICogQHBhcmFtIHN0cmluZyAkcGFyZW50YWxpYXMNCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24NCgkgKiBAcGFyYW0gc3RyaW5nICRvbmx5SW5NZW51DQoJICogQGNvcHlyaWdodCBMdWthcyBCbGF0dGVyDQoNCgkgKi8NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZEFsaWFzKCRwYXJlbnRhbGlhcyA9ICcnLCAkYXNzaWduID0gJycsICRvbmx5SW5NZW51PXRydWUpDQoJew0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRjaGlsZHJlbiA9IHNlbGY6OmdldENoaWxkcmVuKCRwYXJlbnRhbGlhcyk7DQoNCgkJaWYgKCEkY2hpbGRyZW4pIHJldHVybiBmYWxzZTsNCg0KCQkkYWxpYXMgPSBmYWxzZTsNCgkJZm9yZWFjaCgkY2hpbGRyZW4gYXMgJGNoaWxkKSB7DQoJCQlpZiAoJGNoaWxkWyd0eXBlJ10gPT0gJ2Vycm9ycGFnZScpIGNvbnRpbnVlOw0KCQkJZWxzZSBpZiAoJGNoaWxkWyd0eXBlJ10gPT0gJ3NlY3Rpb25oZWFkZXInIG9yICRjaGlsZFsndHlwZSddID09ICdzZXBhcmF0b3InIG9yICRjaGlsZFsndHlwZSddID09ICdsaW5rJykgew0KCQkJCWlmIChzZWxmOjpoYXNDaGlsZHJlbigkY2hpbGRbJ2FsaWFzJ10pKSB7DQoJCQkJCSRhbGlhcyA9IHNlbGY6OmdldEZpcnN0Q2hpbGRBbGlhcygkY2hpbGRbJ2FsaWFzJ10sJycsJG9ubHlJbk1lbnUpOw0KCQkJCQlpZiAoJGFsaWFzKSBicmVhazsNCgkJCQl9DQoJCQl9DQoJCQllbHNlIGlmICgkb25seUluTWVudSBhbmQgJGNoaWxkWydzaG93X2luX21lbnUnXSkgew0KCQkJCSRhbGlhcyA9ICRjaGlsZFsnYWxpYXMnXTsNCgkJCQlicmVhazsNCgkJCX0NCgkJCWVsc2UgaWYgKCEkb25seUluTWVudSkgew0KCQkJCSRhbGlhcyA9ICRjaGlsZFsnYWxpYXMnXTsNCgkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQlpZiAoISRhbGlhcykgcmV0dXJuIGZhbHNlOw0KDQoJCWlmKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJGFsaWFzKTsNCgkJCXJldHVybjsNCgkgICAgfQ0KCQlyZXR1cm4gJGFsaWFzOw0KCX0NCg0KCS8qKg0KCSAqIEdpYnQgZGllIFVSTCBlaW5lciBkZWZpbmllcnRlbiBTZWl0ZSBhdXMNCgkgKiBAcGFyYW0gc3RyaW5nICRhbGlhcw0KCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbg0KCSAqIEBjb3B5cmlnaHQgTHVrYXMgQmxhdHRlcg0KDQoJICovDQoNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFBhZ2VVcmwoJGFsaWFzID0gJycsICRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0Q21zbXMoKTsNCgkJJGNvbnRlbnRvcHMgPSBzZWxmOjpnZXRDb250ZW50T3BzKCk7DQoJCSRzbWFydHkgPSBzZWxmOjpnZXRTbWFydHkoKTsNCg0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KDQoJCWlmKCEkYWxpYXMpIHJldHVybiBmYWxzZTsNCg0KCQkkY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcygkYWxpYXMpOw0KCQlpZiggIWlzX29iamVjdCgkY29udGVudCkgKSByZXR1cm4gJyc7DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24oJGFzc2lnbiwkY29udGVudC0+R2V0VVJMKCkpOw0KCQkJcmV0dXJuOw0KCSAgICB9DQoJCXJldHVybiAkY29udGVudC0+R2V0VVJMKCk7DQoJfQ0KDQoNCg0KCS8qKg0KCSAqIGJhc2VkIG9uICRjZ3NpbXBsZS0+Z2V0X2NoaWxkcmVuKCkgYnkgUm9iZXJ0IENhbXBiZWxsDQoJICogR2lidCBlaW5lciBBcnJheSBtaXQgZGVuIFBhZ2VJZHMgYWxsZXIgQ2hpbGQgU2VpdGVuIGVpbmVyIGJlc3RpbW10ZW4gU2VpdGUgb2RlciBkZXIgYWt0dWVsbGVuIFNlaXRlIHp1csO8Y2suDQoJICogQHBhcmFtIHN0cmluZyAkYWxpYXMNCgkgKiBAcGFyYW0gYm9vbGVhbiAkc2hvd2FsbA0KCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbg0KDQoJICovDQoNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldENoaWxkcmVuKCRhbGlhcyA9ICcnLCRzaG93YWxsID0gZmFsc2UsICRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0Q21zbXMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KDQoJCWlmKCEkYWxpYXMpIHJldHVybiBmYWxzZTsNCg0KCQkkaG0gPSBzZWxmOjpnZXRIaWVyYXJjaHlNYW5hZ2VyKCk7DQoJCSRwYXJlbnQgPSAkaG0tPmdldE5vZGVCeUFsaWFzKCRhbGlhcyk7DQoJCWlmKCAhJHBhcmVudCApIHsgcmV0dXJuIGZhbHNlOyB9DQoNCgkJJGNoaWxkX25vZGVzID0gJHBhcmVudC0+Z2V0Q2hpbGRyZW4oZmFsc2UsJHNob3dhbGwpOw0KCQlpZiggIWlzX2FycmF5KCRjaGlsZF9ub2RlcykgfHwgY291bnQoJGNoaWxkX25vZGVzKSA9PSAwICkgcmV0dXJuIGZhbHNlOw0KDQoJCSRyZXN1bHRzID0gYXJyYXkoKTsNCgkJZm9yZWFjaCggJGNoaWxkX25vZGVzIGFzICRub2RlICkgew0KCQkJJGNvbnRlbnQgPSAkbm9kZS0+Z2V0Q29udGVudCgpOw0KCQkJaWYoICFpc19vYmplY3QoJGNvbnRlbnQpICkgY29udGludWU7DQoNCgkJCSRyb3cgPSBhcnJheSgnYWxpYXMnPT4kY29udGVudC0+QWxpYXMoKSwnaWQnPT4kY29udGVudC0+SWQoKSwNCgkJICAgICAndGl0bGUnPT4kY29udGVudC0+TmFtZSgpLCdtZW51dGV4dCc9PiRjb250ZW50LT5NZW51VGV4dCgpLA0KCQkgICAgICdzaG93X2luX21lbnUnPT4kY29udGVudC0+U2hvd0luTWVudSgpLCAnYWN0aXZlJyA9PiAkY29udGVudC0+QWN0aXZlKCksJ3R5cGUnPT4kY29udGVudC0+VHlwZSgpKTsNCgkJCSRyZXN1bHRzW10gPSAkcm93Ow0KCQl9DQoJCWlmKCAhY291bnQoJHJlc3VsdHMpICkgcmV0dXJuIGZhbHNlOw0KDQoJCWlmKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJHJlc3VsdHMpOw0KCQkJcmV0dXJuOw0KCSAgICB9DQoJCXJldHVybiAkcmVzdWx0czsNCgl9DQoNCgkvKioNCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9wYWdlX2NvbnRlbnQoKSBieSBjYWxndXkxMDAwDQoJICogR2lidCBkZW4gSW5oYWx0IGVpbmVzIGJlc3RpbW10ZW4gQ29udGVudCBCbG9ja3MgZWluZXIgZGVmaW5pZXJ0ZW4gU2VpdGUgenVyw7xjaw0KCSAqIEBwYXJhbSBzdHJpbmcgJGFsaWFzIC0gYWxpYXMgb3IgaWQgb2YgYSBwYWdlDQoJICogQHBhcmFtIHN0cmluZyAkYmxvY2sgLSBuYW1lIG9mIHRoZSBjb250ZW50YmxvY2sNCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24gLSBuYW1lIG9mIGFzc2lnbiB2YXJpYWJsZQ0KCSAqLw0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRQYWdlQ29udGVudCgkYWxpYXMsICRibG9jayA9ICcnLCRhc3NpZ24gPSAnJykNCgl7DQoJCSRyZXN1bHQgPSBmYWxzZTsNCgkJJGdDbXMgPSBzZWxmOjpnZXRDbXNtcygpOw0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KCQkNCgkJaWYoISRhbGlhcykgcmV0dXJuIGZhbHNlOw0KDQoJCSRjb250ZW50b3BzID0gc2VsZjo6Z2V0Q29udGVudE9wcygpOw0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoNCgkJaWYoICRibG9jayA9PSAnJyApICRibG9jayA9ICdjb250ZW50X2VuJzsNCg0KCQlpZiggJGFsaWFzICE9ICcnICkgew0KCQkJJGNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tQWxpYXMoJGFsaWFzKTsNCgkJCWlmKCBpc19vYmplY3QoJGNvbnRlbnQpICkgew0KCQkJCSRyZXN1bHQgPSAkY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2spOw0KCQkJfQ0KCSAgICB9DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkcmVzdWx0KTsNCgkJCXJldHVybjsNCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoNCgkvKioNCgkgKiBIYXQgQmVyZWNodGlndW5nIGluIGRlbiBkZWZpbmllcnRlbiBGRVUgVXNlckdyb3Vwcw0KCSAqIEBwYXJhbSBzdHJpbmcgJGZldWdyb3Vwcw0KCSAqIEBwYXJhbSBzdHJpbmcgJGFzc2lnbg0KCSAqIEByZXR1cm4gYm9vbGVhbiB0cnVlL2ZhbHNlDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciwgMjAuMTIuMjAxMQ0KCSAqLw0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBoYXNGZXVHcm91cEFjY2VzcygkZmV1Z3JvdXBzID0gJycsICRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0Q21zbXMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KDQoJCWlmICghJGZldWdyb3Vwcykgew0KCQkJaWYgKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLGZhbHNlKTsNCgkJCQlyZXR1cm47DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkkZmV1c2VycyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOw0KDQoJCWlmICghJGZldWdyb3VwcyBvciAhaXNfT2JqZWN0KCRmZXVzZXJzKSkgew0KCQkJaWYgKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJCSRzbWFydHktPmFzc2lnbih0cmltKCRhc3NpZ24pLGZhbHNlKTsNCgkJCQlyZXR1cm47DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkkdXNlcl9pZCA9ICRmZXVzZXJzLT5Mb2dnZWRJbklkKCk7DQoJCSRncm91cHMgPSAkZmV1c2Vycy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJfaWQpOw0KDQoJCSRnbnMgPSBhcnJheSgpOw0KCQlpZigkZ3JvdXBzICE9PSBmYWxzZSApIHsNCgkJICAgIGZvcmVhY2goICRncm91cHMgYXMgJGdpZCApIHsNCgkJICAgICAgICAkZ25zW10gPSAkZ2lkWydncm91cGlkJ107DQoJCSAgICB9DQoJCX0NCg0KCQkkZmV1QXJyYXk9IGV4cGxvZGUoJywnLCRmZXVncm91cHMpOw0KCQkkcmV0dmFsID0gZmFsc2U7DQoJCWZvcmVhY2ggKCRmZXVBcnJheSBhcyAkZmV1KSB7DQoJCQlpZiAoaW5fYXJyYXkoJGZldSwkZ25zKSkgew0KCQkJCWlmICghZW1wdHkoJGFzc2lnbikpIHsNCgkJCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksdHJ1ZSk7DQoJCQkJCXJldHVybjsNCgkJCQl9DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJaWYgKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksZmFsc2UpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCg0KCX0vL2lmDQoNCgkvKioNCgkgKiBJc3QgZGVyIEJlbnV0emVyIGVpbmdlbG9nZ3QNCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24NCgkgKiBAcmV0dXJuIGludCB1c2VyX2lkDQoJICogQGF1dGhvcjogTHVrYXMgQmxhdHRlciwgMjAuMTIuMjAxMQ0KCSAqLw0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBpc0xvZ2dlZEluKCRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0Q21zbXMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KCQkkZmV1c2VycyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOw0KCQkNCgkJaWYgKCFpc19vYmplY3QoJGZldXNlcnMpKSB7DQoJCQlpZiAoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksZmFsc2UpOw0KCQkJCXJldHVybjsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfS8vaWYNCg0KCQkkdXNlcl9pZCA9ICRmZXVzZXJzLT5Mb2dnZWRJbklkKCk7DQoNCgkJaWYgKCR1c2VyX2lkKSB7DQoJCQlpZiAoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksdHJ1ZSk7DQoJCQkJcmV0dXJuOw0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0vL2lmDQoNCgkJaWYgKCFlbXB0eSgkYXNzaWduKSkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksZmFsc2UpOw0KCQkJcmV0dXJuOw0KCQl9Ly9pZg0KCQlyZXR1cm4gZmFsc2U7DQoNCgl9Ly9mdW5jdGlvbg0KDQoNCgkvKioNCgkgKiBiYXNlZCBvbiAkY2dzaW1wbGUtPmdldF9zaWxiaW5nKCkgYnkgUm9iZXJ0IENhbXBiZWxsDQoJICogR2V0IHByZXYgc2libGluZw0KCSAqIEBwYXJhbSAkZGlyDQoJICogQHBhcmFtICRhc3NpZ24NCgkgKiBAcGFyYW0gJGFsaWFzDQoJICovDQoNCglwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIGdldFNpYmxpbmcoJGRpciwkYXNzaWduID0gJycsJGFsaWFzID0gJycpDQoJew0KCQkkZ0NtcyA9IHNlbGY6OmdldENtc21zKCk7DQoJCSRkYiA9ICRnQ21zLT5HZXREYigpOw0KCQkkc21hcnR5ID0gc2VsZjo6Z2V0U21hcnR5KCk7DQoJCSRjb250ZW50b3BzID0gc2VsZjo6Z2V0Q29udGVudE9wcygpOw0KCQkkYWxpYXMgPSBzZWxmOjpnZXRBbGlhcygkYWxpYXMpOw0KDQoJCSRjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUFsaWFzKCRhbGlhcyk7DQoJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIHJldHVybiBmYWxzZTsNCg0KCQkvLyBnZXQgdGhlIGxhc3QgaXRlbSBvdXQgb2YgdGhlIGhpZXJhcmNoeQ0KCQkvLyBhbmQgcmVidWlsZA0KCQkkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfYWxpYXMgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudA0KCQkJCSAgICBXSEVSRSBwYXJlbnRfaWQgPSA/DQoJCQkJICAgICAgQU5EIGl0ZW1fb3JkZXIgJXMgPw0KCQkJCSAgICAgIEFORCBhY3RpdmUgPSAxDQoJCQkJICAgIE9SREVSIEJZIGl0ZW1fb3JkZXIgJXMNCgkJCQkgICAgTElNSVQgMSc7DQoNCgkJc3dpdGNoKHN0cnRvbG93ZXIoJGRpcikpIHsNCgkJCWNhc2UgJy0xJzoNCgkJCQljYXNlICdwcmV2JzoNCgkJCQkJJHRoZWNoYXIgPSAnPCc7DQoJCQkJCSRvcmRlciA9ICdERVNDJzsNCgkJCQlicmVhazsNCg0KCQkJCWRlZmF1bHQ6DQoJCQkJCSR0aGVjaGFyID0gJz4nOw0KCQkJCQkkb3JkZXIgPSAnQVNDJzsNCgkJCQlicmVhazsNCgkJfS8vc3dpdGNoDQoNCgkJJHJlcyA9ICRkYi0+R2V0T25lKHNwcmludGYoJHF1ZXJ5LCR0aGVjaGFyLCRvcmRlciksDQoJCWFycmF5KCRjb250ZW50LT5QYXJlbnRJZCgpLCRjb250ZW50LT5JdGVtT3JkZXIoKSkpOw0KCQlpZiggIWVtcHR5KCRhc3NpZ24pICkgew0KCQkJJHNtYXJ0eS0+YXNzaWduKHRyaW0oJGFzc2lnbiksJHJlcyk7DQoJCQlyZXR1cm47DQoJCX0vL2lmDQoJCXJldHVybiAkcmVzOw0KCX0vL2Z1bmN0aW9uDQoJDQoJLyoqDQoJICogYmFzZWQgb24gJGNnc2ltcGxlLT5tb2R1bGVfaW5zdGFsbGVkKCkgYnkgUm9iZXJ0IENhbXBiZWxsDQoJICogQ2hlY2sgaWYgTW9kdWxlIGlzIGluc3RhbGxlZA0KCSAqIEBwYXJhbSAkZGlyDQoJICogQHBhcmFtICRhc3NpZ24NCgkgKiBAcGFyYW0gJGFsaWFzDQoJICovDQoJDQogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gbW9kdWxlSW5zdGFsbGVkKCRtb2R1bGUsJGFzc2lnbiA9ICcnKQ0KICB7DQogICAgaWYoICRtb2R1bGUgPT0gJycgKSByZXR1cm4gMDsNCiAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCRtb2R1bGUpOw0KDQogICAgJHJlc3VsdCA9IDA7DQogICAgaWYoIGlzX29iamVjdCggJG1vZHVsZSApICkgJHJlc3VsdCA9IDE7DQoNCiAgICBpZiggIWVtcHR5KCRhc3NpZ24pICkgew0KICAgICAgJHNtYXJ0eSA9IGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpOw0KICAgICAgJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJHJlc3VsdCk7DQogICAgICByZXR1cm47DQogICAgfQ0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQoJDQoJDQoJLyoqDQoJICogQ3JlYXRlcyBIVE1MIHRhYmxlIGZyb20gbXVsdGlkaW1lbnNpb25hbCBhcnJheQ0KCSAqIGJhc2VkIG9uIGh0dHA6Ly93d3cudGVycmF3ZWJkZXNpZ24uY29tL211bHRpZGltZW5zaW9uYWwucGhwDQoJICoNCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5DQoJICogQHJldHVybiBzdHJpbmcNCgkgKi8NCg0KDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRBcnJheUFzVGFibGUoJGFycmF5KQ0KCXsNCgkJJGFycmF5ID0gc2VsZjo6b2JqZWN0MmFycmF5KCRhcnJheSk7DQoNCgkJJHRhYmxlID0gIjx0YWJsZT5cbiI7DQoJCSR0YWJsZSAuPSBzZWxmOjpnZXRBcnJheUFzVGFibGVNYWtlUm93cygkYXJyYXksIDEsIDApOw0KCQkkdGFibGUgLj0gIjwvdGFibGU+XG4iOw0KCQlyZXR1cm4gJHRhYmxlOw0KDQoJfS8vZnVuY3Rpb24NCg0KCXByb3RlY3RlZCBmaW5hbCBmdW5jdGlvbiBnZXRBcnJheUFzVGFibGVNYWtlUm93cygkYXJyYXksICRsZXZlbCwgJHN1YikNCgl7DQoJCSRzdHJpbmcgPSAiIjsNCg0KCQlpZiAoaXNfYXJyYXkoJGFycmF5KSA9PSAxKXsgICAgICAgICAgLy8gY2hlY2sgaWYgaW5wdXQgaXMgYW4gYXJyYXkNCgkJICAgICAgZm9yZWFjaCgkYXJyYXkgYXMgJGtleV92YWwgPT4gJHZhbHVlKSB7DQoJCSAgICAgICAgICAkb2Zmc2V0ID0gIiI7DQoNCgkJICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpID09IDEpeyAgIC8vIGFycmF5IGlzIG11bHRpZGltZW5zaW9uYWwNCgkJICAgICAgICAgIAkkc3RyaW5nIC49ICI8dHI+IjsNCgkJICAgICAgICAgIAkkb2Zmc2V0ID0gc2VsZjo6Z2V0QXJyYXlBc1RhYmxlRG9PZmZzZXQoJGxldmVsKTsNCgkJICAgICAgICAgIAkkc3RyaW5nIC49ICRvZmZzZXQgLiAiPHRkIHZhbGlnbj0ndG9wJz4iIC4gJGtleV92YWwgLiAiPC90ZD4iOw0KCQkgICAgICAgICAgCSRzdHJpbmcgLj0gc2VsZjo6Z2V0QXJyYXlBc1RhYmxlTWFrZVJvd3MoJHZhbHVlLCAkbGV2ZWwrMSwgMSk7DQoJCSAgICAgICAgICB9ZWxzZXsgICAgICAgICAgICAgICAgICAgICAgLy8oc3ViKWFycmF5IGlzIG5vdCBtdWx0aWRpbQ0KCQkgICAgICAgICAgCWlmICgkc3ViICE9IDEpeyAgICAgICAgICAvLyBmaXJzdCBlbnRyeSBmb3Igc3ViYXJyYXkNCgkJICAgICAgICAgICAgICAkc3RyaW5nIC49ICI8dHI+IjsNCgkJICAgICAgICAgICAgICAkb2Zmc2V0ID0gc2VsZjo6Z2V0QXJyYXlBc1RhYmxlRG9PZmZzZXQoJGxldmVsKTsNCgkJICAgICAgICAgIAl9DQoJCSAgICAgICAgICAJJHN1YiA9IDA7DQoJCSAgICAgICAgICAJJHN0cmluZyAuPSAkb2Zmc2V0IC4gIjx0ZCBjbGFzcz0ndGgnIHZhbGlnbj0ndG9wJz4iIC4gJGtleV92YWwgLg0KCQkgICAgICAgICAgICAgICI8L3RkPjx0ZCB2YWxpZ249J3RvcCc+IiAuICR2YWx1ZSAuICI8L3RkPiI7DQoJCSAgICAgICAgICAJJHN0cmluZyAuPSAiPC90cj5cbiI7DQoJCSAgICAgICAgICB9DQoJCSAgICAgIH0gLy9mb3JlYWNoICRhcnJheQ0KCQkgfS8vaWYNCg0KCQlyZXR1cm4gJHN0cmluZzsNCg0KCX0vL2Z1bmN0aW9uDQoNCglwcml2YXRlIGZpbmFsIGZ1bmN0aW9uIGdldEFycmF5QXNUYWJsZURvT2Zmc2V0KCRsZXZlbCkNCgl7DQoJICAgICRvZmZzZXQgPSAiIjsgICAgICAgICAgICAgLy8gb2Zmc2V0IGZvciBzdWJhcnJ5DQoJICAgIGZvciAoJGk9MTsgJGk8JGxldmVsOyRpKyspew0KCSAgICAkb2Zmc2V0ID0gJG9mZnNldCAuICI8dGQ+PC90ZD4iOw0KCSAgICB9DQoJICAgIHJldHVybiAkb2Zmc2V0Ow0KCX0vL2Z1bmN0aW9uDQoNCg0KDQoJLyoqDQoJICogYmFzZWQgb24gJGNnc2ltcGxlLT5nZXRfZmlsZV9saXN0aW5nKCkgYnkgUm9iZXJ0IENhbXBiZWxsDQoJICogR2lidCBkZW4gSW5oYWx0IGVpbmVzIGJlc3RpbW10ZW4gT3JkbmVycyBpbiBlaW5lbSBBcnJheSB6dXLvv71jaw0KCSAqIEBwYXJhbSBzdHJpbmcgJGRpcg0KCSAqIEBwYXJhbSBzdHJpbmcgJGV4Y2x1ZGVwcmVmaXgNCgkgKiBAcGFyYW0gc3RyaW5nICRhc3NpZ24NCgkgKi8NCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgZnVuY3Rpb24gZ2V0RmlsZUxpc3RpbmcoJGRpciwkZXhjbHVkZXByZWZpeD0nJywkYXNzaWduID0gJycpDQoJew0KCQkkZ0NtcyA9IGNtc21zKCk7DQoJCSRzbWFydHkgPSAkZ0Ntcy0+R2V0U21hcnR5KCk7DQoJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7DQoNCgkJJGZpbGVwcmVmaXggPSAnJzsNCgkJaWYoICFlbXB0eSgkZXhjbHVkZXByZWZpeCkgKSB7DQoJCQkkZmlsZXByZWZpeCA9ICRleGNsdWRlcHJlZml4Ow0KCQl9DQoJCWlmKCBzdGFydHN3aXRoKCRkaXIsJy8nKSApIHJldHVybjsNCgkJJGRpciA9IHRiVXRpbHM6OnRydWVwYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLiIvIi4kZGlyKTsNCgkJJGxpc3QgPSBnZXRfbWF0Y2hpbmdfZmlsZXMoJGRpciwnJyx0cnVlLHRydWUsJGZpbGVwcmVmaXgsMSk7DQoJCWlmKCAhZW1wdHkoJGFzc2lnbikgKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkbGlzdCk7DQoJCQlyZXR1cm47DQoJCX0NCgkJcmV0dXJuICRsaXN0Ow0KCX0vL2Z1bmN0aW9uDQoJDQoJcHVibGljIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBnZXRMYXN0TW9kaWZpZWQoJGFsaWFzID0gJycsICRhc3NpZ24gPSAnJykNCgl7DQoJCSRnQ21zID0gc2VsZjo6Z2V0Q21zbXMoKTsNCgkJJHNtYXJ0eSA9IHNlbGY6OmdldFNtYXJ0eSgpOw0KCQkkY29udGVudG9wcyA9IHNlbGY6OmdldENvbnRlbnRPcHMoKTsNCgkJJGFsaWFzID0gc2VsZjo6Z2V0QWxpYXMoJGFsaWFzKTsNCg0KCQkkY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21BbGlhcygkYWxpYXMsdHJ1ZSk7DQoJCWlmKCAhaXNfb2JqZWN0KCRjb250ZW50KSApIHJldHVybiBmYWxzZTsNCgkJDQoJCSR0aW1lc3RhbXAgPSAkY29udGVudC0+R2V0TW9kaWZpZWREYXRlKCk7DQoNCgkJaWYoIWVtcHR5KCRhc3NpZ24pKSB7DQoJCQkkc21hcnR5LT5hc3NpZ24odHJpbSgkYXNzaWduKSwkdGltZXN0YW1wKTsNCgkJCXJldHVybjsNCgkJfQ0KCQlyZXR1cm4gJHRpbWVzdGFtcDsNCgl9Ly8gZnVuY3Rpb24NCgkNCgkNCgkNCn07Ly8gY2xhc3MNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/Exception/ImageWorkshopLayerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxDb3JlXEV4Y2VwdGlvbjsNCg0KLy91c2UgUEhQSW1hZ2VXb3Jrc2hvcFxFeGNlcHRpb25cSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb24gYXMgSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb247DQoNCi8vIElmIG5vIGF1dG9sb2FkZXIsIHVuY29tbWVudCB0aGVzZSBsaW5lczoNCnJlcXVpcmVfb25jZShfX0RJUl9fLicvLi4vLi4vRXhjZXB0aW9uL0ltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uLnBocCcpOw0KDQovKioNCiAqIEltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbg0KICogDQogKiBNYW5hZ2UgSW1hZ2VXb3Jrc2hvcExheWVyIGV4Y2VwdGlvbnMNCiAqIA0KICogQGxpbmsgaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tDQogKiBAYXV0aG9yIFN5YmlvIChDbMOpbWVudCBHdWlsbGVtYWluICAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbiBleHRlbmRzIEltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uDQp7DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/Exception/ImageWorkshopLibException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxDb3JlXEV4Y2VwdGlvbjsNCg0KLy91c2UgUEhQSW1hZ2VXb3Jrc2hvcFxFeGNlcHRpb25cSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb24gYXMgSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb247DQoNCi8vIElmIG5vIGF1dG9sb2FkZXIsIHVuY29tbWVudCB0aGVzZSBsaW5lczoNCnJlcXVpcmVfb25jZShfX0RJUl9fLicvLi4vLi4vRXhjZXB0aW9uL0ltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uLnBocCcpOw0KDQovKioNCiAqIEltYWdlV29ya3Nob3BMaWJFeGNlcHRpb24NCiAqIA0KICogTWFuYWdlIEltYWdlV29ya3Nob3BMaWIgZXhjZXB0aW9ucw0KICogDQogKiBAbGluayBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20NCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlDQogKiBAY29weXJpZ2h0IENsw6ltZW50IEd1aWxsZW1haW4NCiAqLw0KY2xhc3MgSW1hZ2VXb3Jrc2hvcExpYkV4Y2VwdGlvbiBleHRlbmRzIEltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uDQp7DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/ImageWorkshopLayer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxDb3JlOw0KDQovL3VzZSBQSFBJbWFnZVdvcmtzaG9wXEltYWdlV29ya3Nob3AgYXMgSW1hZ2VXb3Jrc2hvcDsNCi8vdXNlIFBIUEltYWdlV29ya3Nob3BcQ29yZVxJbWFnZVdvcmtzaG9wTGliIGFzIEltYWdlV29ya3Nob3BMaWI7DQovL3VzZSBQSFBJbWFnZVdvcmtzaG9wXENvcmVcRXhjZXB0aW9uXEltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbiBhcyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb247DQoNCi8vIElmIG5vIGF1dG9sb2FkZXIsIHVuY29tbWVudCB0aGVzZSBsaW5lczoNCnJlcXVpcmVfb25jZShfX0RJUl9fLicvLi4vLi4vY2xhc3MuSW1hZ2VXb3Jrc2hvcC5waHAnKTsNCnJlcXVpcmVfb25jZShfX0RJUl9fLicvSW1hZ2VXb3Jrc2hvcExpYi5waHAnKTsNCnJlcXVpcmVfb25jZShfX0RJUl9fLicvRXhjZXB0aW9uL0ltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbi5waHAnKTsNCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wTGF5ZXIgY2xhc3MNCiAqDQogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsYXllciB0aGF0IGNvbnRhaW5zIGEgYmFja2dyb3VuZCBpbWFnZSBhbmQgY2FuIGJlIGVkaXRlZA0KICoNCiAqIEBsaW5rIGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbQ0KICogQGF1dGhvciBTeWJpbyAoQ2zDqW1lbnQgR3VpbGxlbWFpbiAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BMYXllcg0Kew0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgLy8gUHJvcGVydGllcw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIHdpZHRoDQogICAgICoNCiAgICAgKiBXaWR0aCBvZiB0aGUgZ3JvdXAgbW9kZWwNCiAgICAgKiBEZWZhdWx0OiA4MDANCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJHdpZHRoOw0KDQogICAgLyoqDQogICAgICogQHZhciBoZWlnaHQNCiAgICAgKg0KICAgICAqIEhlaWdodCBvZiB0aGUgZ3JvdXAgbW9kZWwNCiAgICAgKiBEZWZhdWx0OiA2MDANCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGhlaWdodDsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgbGF5ZXJzDQogICAgICoNCiAgICAgKiBMYXllcnMgKGFuZCBncm91cHMpDQogICAgICovDQogICAgcHVibGljICRsYXllcnM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGxheWVyTGV2ZWxzDQogICAgICoNCiAgICAgKiBMZXZlbHMgb2YgdGhlIHN1YmxheWVycyBpbiB0aGUgc3RhY2sNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGxheWVyTGV2ZWxzOw0KDQogICAgLyoqDQogICAgICogQHZhciBsYXllclBvc2l0aW9ucw0KICAgICAqDQogICAgICogUG9zaXRpb25zICh4IGFuZCB5KSBvZiB0aGUgc3VibGF5ZXJzIGluIHRoZSBzdGFjaw0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkbGF5ZXJQb3NpdGlvbnM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGxhc3RMYXllcklkDQogICAgICoNCiAgICAgKiBJZCBvZiB0aGUgbGFzdCBpbmRleGVkIHN1YmxheWVyIGluIHRoZSBzdGFjaw0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkbGFzdExheWVySWQ7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGhpZ2hlc3RMYXllckxldmVsDQogICAgICoNCiAgICAgKiBUaGUgaGlnaGVzdCBzdWJsYXllciBsZXZlbA0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkaGlnaGVzdExheWVyTGV2ZWw7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGltYWdlDQogICAgICoNCiAgICAgKiBCYWNrZ3JvdW5kIEltYWdlDQogICAgICovDQogICAgcHJvdGVjdGVkICRpbWFnZTsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqLw0KICAgIGNvbnN0IFVOSVRfUElYRUwgPSAncGl4ZWwnOw0KICAgIA0KICAgIC8qKg0KICAgICAqIEB2YXIgc3RyaW5nDQogICAgICovICAgIA0KICAgIGNvbnN0IFVOSVRfUEVSQ0VOVCA9ICdwZXJjZW50JzsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9HRF9OT1RfSU5TVEFMTEVEID0gMTsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9QSFBfSU1BR0VfVkFSX05PVF9VU0VEID0gMjsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9GT05UX05PVF9GT1VORCA9IDM7DQogICAgDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyDQogICAgICovDQogICAgY29uc3QgTUVUSE9EX0RFUFJFQ0FURUQgPSA0Ow0KICAgIA0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgLy8gTWV0aG9kcw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLy8gTWFnaWNhbHMNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBDb25zdHJ1Y3Rvcg0KICAgICAqDQogICAgICogQHBhcmFtIFxyZXNvdXJjZSAkaW1hZ2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdnZCcpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdQSFBJbWFnZVdvcmtzaG9wIHJlcXVpcmVzIHRoZSBHRCBleHRlbnNpb24gdG8gYmUgbG9hZGVkLicsIHN0YXRpYzo6RVJST1JfR0RfTk9UX0lOU1RBTExFRCk7DQogICAgICAgIH0NCiAgICAJDQogICAgICAgIGlmIChnZXR0eXBlKCRpbWFnZSkgIT0gJ3Jlc291cmNlJyAmJiBnZXR0eXBlKCRpbWFnZSkgIT0gJ1xyZXNvdXJjZScpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ1lvdSBtdXN0IGdpdmUgYSBwaHAgaW1hZ2UgdmFyIHRvIGluaXRpYWxpemUgYSBsYXllci4nLCBzdGF0aWM6OkVSUk9SX1BIUF9JTUFHRV9WQVJfTk9UX1VTRUQpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPndpZHRoID0gaW1hZ2VzeCgkaW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gaW1hZ2VzeSgkaW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkaW1hZ2U7DQogICAgICAgICR0aGlzLT5sYXllcnMgPSAkdGhpcy0+bGF5ZXJMZXZlbHMgPSAkdGhpcy0+bGF5ZXJQb3NpdGlvbnMgPSBhcnJheSgpOw0KICAgICAgICAkdGhpcy0+Y2xlYXJTdGFjaygpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENsb25lIG1ldGhvZDogdXNlIGl0IGlmIHlvdSB3YW50IHRvIHJldXNlIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agb2JqZWN0IGluIGFub3RoZXIgdmFyaWFibGUNCiAgICAgKiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGltZyByZXNvdXJjZSB2YXIgcmVmZXJlbmNlcyBhbGwgdGhlIHNhbWUgaW1hZ2UgaW4gUEhQLg0KICAgICAqIEV4YW1wbGU6ICRiID0gY2xvbmUgJGE7IChuZXZlciBkbyAkYiA9ICRhOykNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JlYXRlTmV3VmFyRnJvbUJhY2tncm91bmRJbWFnZSgpOw0KICAgIH0NCiAgICANCiAgICAvLyBTdXBlcmltcG9zZSBhIHN1YmxheWVyDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogQWRkIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agc3VibGF5ZXIgYW5kIHNldCBpdCBpbiB0aGUgc3RhY2sgYXQgYSBnaXZlbiBsZXZlbA0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgaW4gdGhlIHN0YWNrIGFuZCBpdHMgY29ycmVjdGVkIGxldmVsOg0KICAgICAqIGFycmF5KCJsYXllckxldmVsIiA9PiBpbnRlZ2VyLCAiaWQiID0+IGludGVnZXIpDQogICAgICoNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllckxldmVsDQogICAgICogQHBhcmFtIEltYWdlV29ya3Nob3AgJGxheWVyDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRMYXllcigkbGF5ZXJMZXZlbCwgJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoJGxheWVyTGV2ZWwsICRsYXllciwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHBvc2l0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYW4gZXhpc3RpbmcgSW1hZ2VXb3Jrc2hvcCBzdWJsYXllciBhbmQgc2V0IGl0IGluIHRoZSBzdGFjayBhdCB0aGUgaGlnaGVzdCBsZXZlbA0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgaW4gdGhlIHN0YWNrIGFuZCB0aGUgaGlnaGVzdCBsZXZlbDoNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcCAkbGF5ZXINCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGFkZExheWVyT25Ub3AoJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsICsgMSwgJGxheWVyLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZCBhbiBleGlzdGluZyBJbWFnZVdvcmtzaG9wIHN1YmxheWVyIGFuZCBzZXQgaXQgaW4gdGhlIHN0YWNrIGF0IGxldmVsIDENCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHN1YmxheWVyIGlkIGluIHRoZSBzdGFjayBhbmQgbGV2ZWwgMToNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcCAkbGF5ZXINCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGFkZExheWVyQmVsb3coJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoMSwgJGxheWVyLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCiAgICANCiAgICAvLyBNb3ZlIGEgc3VibGF5ZXIgaW5zaWRlIHRoZSBzdGFjaw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KICAgICAqIE1vdmUgYSBzdWJsYXllciBvbiB0aGUgdG9wIG9mIGEgZ3JvdXAgc3RhY2sNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEByZXR1cm4gbWl4ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZVRvcCgkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bW92ZVRvKCRsYXllcklkLCAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwsIGZhbHNlKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNb3ZlIGEgc3VibGF5ZXIgdG8gdGhlIGxldmVsIDEgb2YgYSBncm91cCBzdGFjaw0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcyBvciBmYWxzZSBvdGhlcndpc2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogQHBhcmFtIGludGVnZXIgJGxldmVsDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVCb3R0b20oJGxheWVySWQpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgMSwgdHJ1ZSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZSBhIHN1YmxheWVyIHRvIHRoZSBsZXZlbCAkbGV2ZWwgb2YgYSBncm91cCBzdGFjaw0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcyBvciBmYWxzZSBpZiBsYXllciBpc24ndCBmb3VuZA0KICAgICAqDQogICAgICogU2V0ICRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIgdHJ1ZSBpZiB5b3Ugd2FudCB0byBtb3ZlIHRoZSBzdWJsYXllciB1bmRlciB0aGUgb3RoZXIgc3VibGF5ZXIgYXQgdGhlIHRhcmdldGVkIGxldmVsLA0KICAgICAqIG9yIGZhbHNlIHRvIGluc2VydCBpdCBvbiB0aGUgdG9wIG9mIHRoZSBvdGhlciBzdWJsYXllciBhdCB0aGUgdGFyZ2V0ZWQgbGV2ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogQHBhcmFtIGludGVnZXIgJGxldmVsDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oJGxheWVySWQsICRsZXZlbCwgJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllciA9IHRydWUpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHN0YWNrDQogICAgICAgIGlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7DQoNCiAgICAgICAgICAgICRsYXllck9sZExldmVsID0gJHRoaXMtPmdldExheWVyTGV2ZWwoJGxheWVySWQpOw0KDQogICAgICAgICAgICBpZiAoJGxldmVsIDwgMSkgew0KICAgICAgICAgICAgICAgICRsZXZlbCA9IDE7DQogICAgICAgICAgICAgICAgJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllciA9IHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICgkbGV2ZWwgPiAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwpIHsNCg0KICAgICAgICAgICAgICAgICRsZXZlbCA9ICR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbDsNCiAgICAgICAgICAgICAgICAkaW5zZXJ0VW5kZXJUYXJnZXRlZExheWVyID0gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIE5vdCB0aGUgc2FtZSBsZXZlbCB0aGFuIHRoZSBjdXJyZW50IGxldmVsDQogICAgICAgICAgICBpZiAoJGxheWVyT2xkTGV2ZWwgIT0gJGxldmVsKSB7DQoNCiAgICAgICAgICAgICAgICAkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyID0gJGlzVW5kZXJBbmROZXdMZXZlbExvd2VyID0gJGlzT25Ub3BBbmROZXdMZXZlbEhpZ2hlciA9ICRpc09uVG9wQW5kTmV3TGV2ZWxMb3dlciA9IGZhbHNlOw0KDQogICAgICAgICAgICAgICAgaWYgKCRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIpIHsgLy8gVW5kZXIgbGV2ZWwNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJGxldmVsID4gJGxheWVyT2xkTGV2ZWwpIHsgLy8gbmV3IGxldmVsIGhpZ2hlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlID0gJGxheWVyT2xkTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcExvb3BXaGVuU21hbGxlclRoYW4gPSAkbGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyID0gdHJ1ZTsNCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBuZXcgbGV2ZWwgbG93ZXINCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGluY3JlbWVudG9yU3RhcnRpbmdWYWx1ZSA9ICRsZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbiA9ICRsYXllck9sZExldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGlzVW5kZXJBbmROZXdMZXZlbExvd2VyID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gb24gdGhlIHRvcA0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkbGV2ZWwgPiAkbGF5ZXJPbGRMZXZlbCkgeyAvLyBuZXcgbGV2ZWwgaGlnaGVyDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbmNyZW1lbnRvclN0YXJ0aW5nVmFsdWUgPSAkbGF5ZXJPbGRMZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbiA9ICRsZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpc09uVG9wQW5kTmV3TGV2ZWxIaWdoZXIgPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5ldyBsZXZlbCBsb3dlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlID0gJGxldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3BMb29wV2hlblNtYWxsZXJUaGFuID0gJGxheWVyT2xkTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkaXNPblRvcEFuZE5ld0xldmVsTG93ZXIgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgICAgICAgICAkbGF5ZXJMZXZlbHNUbXAgPSAkdGhpcy0+bGF5ZXJMZXZlbHM7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGlzT25Ub3BBbmROZXdMZXZlbExvd2VyKSB7DQogICAgICAgICAgICAgICAgICAgICRsZXZlbCsrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoJGkgPSAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlOyAkaSA8ICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbjsgJGkrKykgew0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyIHx8ICRpc09uVG9wQW5kTmV3TGV2ZWxIaWdoZXIpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRpXSA9ICRsYXllckxldmVsc1RtcFskaSArIDFdOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skaSArIDFdID0gJGxheWVyTGV2ZWxzVG1wWyRpXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHVuc2V0KCRsYXllckxldmVsc1RtcCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGlzVW5kZXJBbmROZXdMZXZlbEhpZ2hlcikgew0KICAgICAgICAgICAgICAgICAgICAkbGV2ZWwtLTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJMZXZlbHNbJGxldmVsXSA9ICRsYXllcklkOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuICRsZXZlbDsNCg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJGxldmVsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1vdmUgdXAgYSBzdWJsYXllciBpbiB0aGUgc3RhY2sgKGxldmVsICsxKQ0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVXAoJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICAgICAgJGxheWVyT2xkTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgJGxheWVyT2xkTGV2ZWwgKyAxLCBmYWxzZSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZSBkb3duIGEgc3VibGF5ZXIgaW4gdGhlIHN0YWNrIChsZXZlbCAtMSkNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZURvd24oJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICAgICAgJGxheWVyT2xkTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgJGxheWVyT2xkTGV2ZWwgLSAxLCB0cnVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLy8gTWVyZ2UgbGF5ZXJzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogTWVyZ2UgYSBzdWJsYXllciB3aXRoIGFub3RoZXIgc3VibGF5ZXIgYmVsb3cgaXQgaW4gdGhlIHN0YWNrDQogICAgICogTm90ZTogdGhlIHJlc3VsdCBsYXllciB3aWxsIGNvbnNlcnZlIHRoZSBnaXZlbiBpZA0KICAgICAqIFJldHVybiB0cnVlIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQgb3IgZG9lc24ndCBoYXZlIGEgbGF5ZXIgdW5kZXIgaXQgaW4gdGhlIHN0YWNrDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sZWFuDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlRG93bigkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIC8vIGlmIHRoZSBsYXllciBleGlzdHMgaW4gZG9jdW1lbnQNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCg0KICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvbnMgPSAkdGhpcy0+Z2V0TGF5ZXJQb3NpdGlvbnMoJGxheWVySWQpOw0KICAgICAgICAgICAgJGxheWVyID0gJHRoaXMtPmdldExheWVyKCRsYXllcklkKTsNCiAgICAgICAgICAgICRsYXllcldpZHRoID0gJGxheWVyLT5nZXRXaWR0aCgpOw0KICAgICAgICAgICAgJGxheWVySGVpZ2h0ID0gJGxheWVyLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXTsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXTsNCg0KICAgICAgICAgICAgaWYgKCRsYXllckxldmVsID4gMSkgew0KDQogICAgICAgICAgICAgICAgJHVuZGVyTGF5ZXJJZCA9ICR0aGlzLT5sYXllckxldmVsc1skbGF5ZXJMZXZlbCAtIDFdOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyID0gJHRoaXMtPmdldExheWVyKCR1bmRlckxheWVySWQpOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyV2lkdGggPSAkdW5kZXJMYXllci0+Z2V0V2lkdGgoKTsNCiAgICAgICAgICAgICAgICAkdW5kZXJMYXllckhlaWdodCA9ICR1bmRlckxheWVyLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICAgICAkdW5kZXJMYXllclBvc2l0aW9uWCA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skdW5kZXJMYXllcklkXVsneCddOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyUG9zaXRpb25ZID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyR1bmRlckxheWVySWRdWyd5J107DQoNCiAgICAgICAgICAgICAgICAkdG90YWxXaWR0aExheWVyID0gJGxheWVyV2lkdGggKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgJHRvdGFsSGVpZ2h0TGF5ZXIgPSAkbGF5ZXJIZWlnaHQgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgICAgICAgICAkdG90YWxXaWR0aFVuZGVyTGF5ZXIgPSAkdW5kZXJMYXllcldpZHRoICsgJHVuZGVyTGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgJHRvdGFsSGVpZ2h0VW5kZXJMYXllciA9ICR1bmRlckxheWVySGVpZ2h0ICsgJHVuZGVyTGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgICAgICAgICAkbWluTGF5ZXJQb3NpdGlvblggPSAkbGF5ZXJQb3NpdGlvblg7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGxheWVyUG9zaXRpb25YID4gJHVuZGVyTGF5ZXJQb3NpdGlvblgpIHsNCiAgICAgICAgICAgICAgICAgICAgJG1pbkxheWVyUG9zaXRpb25YID0gJHVuZGVyTGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJG1pbkxheWVyUG9zaXRpb25ZID0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgICAgICAgICAgaWYgKCRsYXllclBvc2l0aW9uWSA+ICR1bmRlckxheWVyUG9zaXRpb25ZKSB7DQogICAgICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWSA9ICR1bmRlckxheWVyUG9zaXRpb25ZOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICgkdG90YWxXaWR0aExheWVyID4gJHRvdGFsV2lkdGhVbmRlckxheWVyKSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcFdpZHRoID0gJHRvdGFsV2lkdGhMYXllciAtICRtaW5MYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkbGF5ZXJUbXBXaWR0aCA9ICR0b3RhbFdpZHRoVW5kZXJMYXllciAtICRtaW5MYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoJHRvdGFsSGVpZ2h0TGF5ZXIgPiAkdG90YWxIZWlnaHRVbmRlckxheWVyKSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcEhlaWdodCA9ICR0b3RhbEhlaWdodExheWVyIC0gJG1pbkxheWVyUG9zaXRpb25ZOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcEhlaWdodCA9ICR0b3RhbEhlaWdodFVuZGVyTGF5ZXIgLSAkbWluTGF5ZXJQb3NpdGlvblk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wID0gSW1hZ2VXb3Jrc2hvcDo6aW5pdFZpcmdpbkxheWVyKCRsYXllclRtcFdpZHRoLCAkbGF5ZXJUbXBIZWlnaHQpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkdW5kZXJMYXllciwgJHVuZGVyTGF5ZXJQb3NpdGlvblggLSAkbWluTGF5ZXJQb3NpdGlvblgsICR1bmRlckxheWVyUG9zaXRpb25ZIC0gJG1pbkxheWVyUG9zaXRpb25ZKTsNCiAgICAgICAgICAgICAgICAkbGF5ZXJUbXAtPmFkZExheWVyKDIsICRsYXllciwgJGxheWVyUG9zaXRpb25YIC0gJG1pbkxheWVyUG9zaXRpb25YLCAkbGF5ZXJQb3NpdGlvblkgLSAkbWluTGF5ZXJQb3NpdGlvblkpOw0KDQogICAgICAgICAgICAgICAgLy8gVXBkYXRlIGxheWVycw0KICAgICAgICAgICAgICAgICRsYXllclRtcC0+bWVyZ2VBbGwoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJzWyR1bmRlckxheWVySWRdID0gY2xvbmUgJGxheWVyVG1wOw0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkdW5kZXJMYXllcklkLCAkbWluTGF5ZXJQb3NpdGlvblgsICRtaW5MYXllclBvc2l0aW9uWCk7DQoNCiAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAkbGF5ZXJUbXAgPSBJbWFnZVdvcmtzaG9wOjppbml0RnJvbVJlc291cmNlVmFyKCR0aGlzLT5pbWFnZSk7DQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkbGF5ZXIsICRsYXllclBvc2l0aW9uWCwgJGxheWVyUG9zaXRpb25ZKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0UmVzdWx0KCk7IC8vIFVwZGF0ZSBiYWNrZ3JvdW5kIGltYWdlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHVuc2V0KCRsYXllclRtcCk7DQogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlKCRsYXllcklkKTsgLy8gUmVtb3ZlIHRoZSBtZXJnZWQgbGF5ZXIgZnJvbSB0aGUgc3RhY2sNCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNZXJnZSBzdWJsYXllcnMgaW4gdGhlIHN0YWNrIG9uIHRoZSBsYXllciBiYWNrZ3JvdW5kDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlQWxsKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICR0aGlzLT5nZXRSZXN1bHQoKTsNCiAgICAgICAgJHRoaXMtPmNsZWFyU3RhY2soKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUGFzdGUgYW4gaW1hZ2Ugb24gdGhlIGxheWVyDQogICAgICogWW91IGNhbiBzcGVjaWZ5IHRoZSBwb3NpdGlvbiBsZWZ0IChpbiBwaXhlbHMpIGFuZCB0aGUgcG9zaXRpb24gdG9wIChpbiBwaXhlbHMpIG9mIHRoZSBhZGRlZCBpbWFnZSByZWxhdGl2ZXMgdG8gdGhlIGxheWVyDQogICAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIHNldCBhdCAwIGFuZCAwDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0IFVzZSBvbmUgb2YgYFVOSVRfKmAgY29uc3RhbnRzLCAiVU5JVF9QSVhFTCIgYnkgZGVmYXVsdA0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkaW1hZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXN0ZUltYWdlKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJGltYWdlLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDApDQogICAgew0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQoNCiAgICAgICAgICAgICRwb3NpdGlvblggPSByb3VuZCgoJHBvc2l0aW9uWCAvIDEwMCkgKiAkdGhpcy0+d2lkdGgpOw0KICAgICAgICAgICAgJHBvc2l0aW9uWSA9IHJvdW5kKCgkcG9zaXRpb25ZIC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgaW1hZ2Vjb3B5KCR0aGlzLT5pbWFnZSwgJGltYWdlLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAwLCAwLCAkaW1hZ2UtPmdldFdpZHRoKCksICRpbWFnZS0+Z2V0SGVpZ2h0KCkpOw0KICAgIH0NCiAgICANCiAgICAvLyBDaGFuZ2Ugc3VibGF5ZXIgcG9zaXRpb25zDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogQ2hhbmdlIHRoZSBwb3NpdGlvbiBvZiBhIHN1YmxheWVyIGZvciBuZXcgcG9zaXRpb25zDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld1Bvc1kNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld1Bvc1ggPSBudWxsLCAkbmV3UG9zWSA9IG51bGwpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJG5ld1Bvc1ggIT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd4J10gPSAkbmV3UG9zWDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKCRuZXdQb3NZICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneSddID0gJG5ld1Bvc1k7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBBcHBseSBhIHRyYW5zbGF0aW9uIG9uIGEgc3VibGF5ZXIgdGhhdCBjaGFuZ2UgaXRzIHBvc2l0aW9ucw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkYWRkZWRQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJGFkZGVkUG9zWQ0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCAoYXJyYXkgb2YgbmV3IHBvc2l0aW9ucyBvciBmYWxzZSBpZiBmYWlsKQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKCRsYXllcklkLCAkYWRkZWRQb3NYID0gbnVsbCwgJGFkZGVkUG9zWSA9IG51bGwpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJGFkZGVkUG9zWCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXSArPSAkYWRkZWRQb3NYOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJGFkZGVkUG9zWSAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSArPSAkYWRkZWRQb3NZOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLy8gUmVtb3Zpbmcgc3VibGF5ZXJzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogRGVsZXRlIGEgbGF5ZXIgKHJldHVybiB0cnVlIGlmIHN1Y2Nlc3MsIGZhbHNlIGlmIG5vIHN1YmxheWVyIGlzIGZvdW5kKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJGxheWVySWQpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgbGF5ZXIgZXhpc3RzIGluIGRvY3VtZW50DQogICAgICAgIGlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7DQoNCiAgICAgICAgICAgICRsYXllclRvRGVsZXRlTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQoNCiAgICAgICAgICAgIC8vIGRlbGV0ZQ0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmRlbGV0ZSgpOw0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0pOw0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllclRvRGVsZXRlTGV2ZWxdKTsNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF0pOw0KDQogICAgICAgICAgICAvLyBPbmUgb3IgcGx1cmFsIGxheWVycyBhcmUgc3ViIG9mIHRoZSBkZWxldGVkIGxheWVyDQogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygoJGxheWVyVG9EZWxldGVMZXZlbCArIDEpLCAkdGhpcy0+bGF5ZXJMZXZlbHMpKSB7DQoNCiAgICAgICAgICAgICAgICBrc29ydCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWxzVG1wID0gJHRoaXMtPmxheWVyTGV2ZWxzOw0KDQogICAgICAgICAgICAgICAgJG1heE9sZGVzdExldmVsID0gMTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGF5ZXJMZXZlbHNUbXAgYXMgJGxldmVsVG1wID0+ICRsYXllcklkVG1wKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRsZXZlbFRtcCA+ICRsYXllclRvRGVsZXRlTGV2ZWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1soJGxldmVsVG1wIC0gMSldID0gJGxheWVySWRUbXA7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAkbWF4T2xkZXN0TGV2ZWwrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdW5zZXQoJGxheWVyTGV2ZWxzVG1wKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJMZXZlbHNbJG1heE9sZGVzdExldmVsXSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbC0tOw0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUmVzZXQgdGhlIGxheWVyIHN0YWNrDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU3RhY2soKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVycyBhcyAkbGF5ZXIpIHsNCiAgICAgICAgICAgICRsYXllci0+ZGVsZXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyUG9zaXRpb25zKTsNCg0KICAgICAgICAkdGhpcy0+bGFzdExheWVySWQgPSAwOw0KICAgICAgICAkdGhpcy0+bGF5ZXJzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsID0gMDsNCiAgICB9DQogICAgDQogICAgLy8gUGVyZm9ybSBhbiBhY3Rpb24NCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdIZWlnaHQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqIA0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqIA0KICAgICAqICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbiBjYW4gYmUgaWdub3JlZCB1bmxlc3MgeW91IGNob29zZSBhIG5ldyB3aWR0aCBBTkQgYSBuZXcgaGVpZ2h0IEFORCB0byBjb25zZXJ2ZSBwcm9wb3J0aW9uLg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVJblBpeGVsKCRuZXdXaWR0aCA9IG51bGwsICRuZXdIZWlnaHQgPSBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gJ01NJykNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemUoc2VsZjo6VU5JVF9QSVhFTCwgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgc3BlY2lmeWluZyBhIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplSW5QZXJjZW50KCRwZXJjZW50V2lkdGggPSBudWxsLCAkcGVyY2VudEhlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZShzZWxmOjpVTklUX1BFUkNFTlQsICRwZXJjZW50V2lkdGgsICRwZXJjZW50SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0IFVzZSBvbmUgb2YgYFVOSVRfKmAgY29uc3RhbnRzLCAiVU5JVF9QSVhFTCIgYnkgZGVmYXVsdA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJG5ld1dpZHRoID0gbnVsbCwgJG5ld0hlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgaWYgKCRuZXdXaWR0aCB8fCAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQogICAgICAgICAgICAgICAgICAgICRuZXdXaWR0aCA9IHJvdW5kKCgkbmV3V2lkdGggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRuZXdIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgJG5ld0hlaWdodCA9IHJvdW5kKCgkbmV3SGVpZ2h0IC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICAgICBpZiAoJGNvbnZlcnNlUHJvcG9ydGlvbikgeyAvLyBQcm9wb3J0aW9uIGFyZSBjb25zZXJ2ZWQNCg0KICAgICAgICAgICAgICAgIGlmICgkbmV3V2lkdGggJiYgJG5ld0hlaWdodCkgeyAvLyBQcm9wb3J0aW9ucyArICRuZXdXaWR0aCArICRuZXdIZWlnaHQNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0V2lkdGgoKSA+ICR0aGlzLT5nZXRIZWlnaHQoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3V2lkdGgsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldEhlaWdodCgpID4gJG5ld0hlaWdodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdIZWlnaHQsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdIZWlnaHQsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgPiAkbmV3V2lkdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3V2lkdGgsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgIT0gJG5ld1dpZHRoIHx8ICR0aGlzLT5nZXRIZWlnaHQoKSAhPSAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXllclRtcCA9IEltYWdlV29ya3Nob3A6OmluaXRWaXJnaW5MYXllcigkbmV3V2lkdGgsICRuZXdIZWlnaHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkbGF5ZXJUbXAtPmFkZExheWVyKDEsICR0aGlzLCByb3VuZCgkcG9zaXRpb25YICogKCRuZXdXaWR0aCAvIDEwMCkpLCByb3VuZCgkcG9zaXRpb25ZICogKCRuZXdIZWlnaHQgLyAxMDApKSwgJHBvc2l0aW9uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndpZHRoID0gJGxheWVyVG1wLT5nZXRXaWR0aCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmhlaWdodCA9ICRsYXllclRtcC0+Z2V0SGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllclBvc2l0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0SW1hZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVscyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJMZXZlbHMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9ucyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJQb3NpdGlvbnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnMgPSAkbGF5ZXJUbXAtPmdldExheWVycygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGxheWVyVG1wKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJG5ld1dpZHRoKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkbmV3SGVpZ2h0ID0gcm91bmQoKCR3aWR0aFJlc2l6ZVBlcmNlbnQgLyAxMDApICogJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJHdpZHRoUmVzaXplUGVyY2VudDsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkbmV3SGVpZ2h0KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGhlaWdodFJlc2l6ZVBlcmNlbnQgPSAkbmV3SGVpZ2h0IC8gKCR0aGlzLT5oZWlnaHQgLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkbmV3V2lkdGggPSByb3VuZCgoJGhlaWdodFJlc2l6ZVBlcmNlbnQgLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRoZWlnaHRSZXNpemVQZXJjZW50Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCgkbmV3V2lkdGggJiYgISRuZXdIZWlnaHQpIHx8ICghJG5ld1dpZHRoICYmICRuZXdIZWlnaHQpKSB7IC8vIE5ldyB3aWR0aCBPUiBuZXcgaGVpZ2h0IGlzIGdpdmVuDQoNCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0UmVzaXplUGVyY2VudCA9IDEwMDsNCiAgICAgICAgICAgICAgICAgICAgJG5ld0hlaWdodCA9ICR0aGlzLT5oZWlnaHQ7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9IDEwMDsNCiAgICAgICAgICAgICAgICAgICAgJG5ld1dpZHRoID0gJHRoaXMtPndpZHRoOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlIHsgLy8gTmV3IHdpZHRoIEFORCBuZXcgaGVpZ2h0IGFyZSBnaXZlbg0KDQogICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXllciBwb3NpdGlvbnMgaW4gdGhlIHN0YWNrDQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbikgew0KDQogICAgICAgICAgICAgICAgJG5ld1Bvc1ggPSByb3VuZCgoJHdpZHRoUmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneCddKTsNCiAgICAgICAgICAgICAgICAkbmV3UG9zWSA9IHJvdW5kKCgkaGVpZ2h0UmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneSddKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld1Bvc1gsICRuZXdQb3NZKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gUmVzaXplIGxheWVycyBpbiB0aGUgc3RhY2sNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCiAgICAgICAgICAgICAgICAkbGF5ZXItPnJlc2l6ZUluUGVyY2VudCgkd2lkdGhSZXNpemVQZXJjZW50LCAkaGVpZ2h0UmVzaXplUGVyY2VudCk7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyc1ska2V5XSA9ICRsYXllcjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHRoaXMtPnJlc2l6ZUJhY2tncm91bmQoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0KTsgLy8gUmVzaXplIHRoZSBsYXllcg0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbGFyZ2VzdCBzaWRlIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCgkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZUJ5TGFyZ2VzdFNpZGUoc2VsZjo6VU5JVF9QSVhFTCwgJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIGxhcmdlc3Qgc2lkZSBieSBzcGVjaWZ5aW5nIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoIHBlcmNlbnQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemVCeUxhcmdlc3RTaWRlKHNlbGY6OlVOSVRfUEVSQ0VOVCwgJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIGxhcmdlc3Qgc2lkZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoIHBlcmNlbnQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TGFyZ2VzdFNpZGUoJHVuaXQgPSBzZWxmOjpVTklUX1BJWEVMLCAkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgaWYgKCR1bml0ID09IHNlbGY6OlVOSVRfUEVSQ0VOVCkgew0KICAgICAgICAgICAgJG5ld0xhcmdlc3RTaWRlV2lkdGggPSByb3VuZCgoJG5ld0xhcmdlc3RTaWRlV2lkdGggLyAxMDApICogJHRoaXMtPmdldExhcmdlc3RTaWRlV2lkdGgoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgPiAkdGhpcy0+Z2V0SGVpZ2h0KCkpIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdMYXJnZXN0U2lkZVdpZHRoLCBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdMYXJnZXN0U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIG5hcnJvdyBzaWRlIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGgNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwoJG5ld05hcnJvd1NpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZUJ5TmFycm93U2lkZShzZWxmOjpVTklUX1BJWEVMLCAkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBuYXJyb3cgc2lkZSBieSBzcGVjaWZ5aW5nIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGggcGVyY2VudA0KICAgICAqIEBwYXJhbSBib29sZWFuICRjb252ZXJzZVByb3BvcnRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50KCRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemVCeU5hcnJvd1NpZGUoc2VsZjo6VU5JVF9QRVJDRU5ULCAkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBuYXJyb3cgc2lkZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGgNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TmFycm93U2lkZSgkdW5pdCA9IHNlbGY6OlVOSVRfUElYRUwsICRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCiAgICAgICAgICAgICRuZXdOYXJyb3dTaWRlV2lkdGggPSByb3VuZCgoJG5ld05hcnJvd1NpZGVXaWR0aCAvIDEwMCkgKiAkdGhpcy0+Z2V0TmFycm93U2lkZVdpZHRoKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRXaWR0aCgpIDwgJHRoaXMtPmdldEhlaWdodCgpKSB7DQogICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3TmFycm93U2lkZVdpZHRoLCBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgZG9jdW1lbnQgYnkgc3BlY2lmeWluZyBwaXhlbHMNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3I6IGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKFRoZSBzY3JpcHQgd2lsbCBiZSBsb25nZXIgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BJblBpeGVsKCR3aWR0aCA9IDAsICRoZWlnaHQgPSAwLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JvcChzZWxmOjpVTklUX1BJWEVMLCAkd2lkdGgsICRoZWlnaHQsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgZG9jdW1lbnQgYnkgc3BlY2lmeWluZyBwZXJjZW50DQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50V2lkdGgNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBlcmNlbnRIZWlnaHQNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBvc2l0aW9uWFBlcmNlbnQNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBvc2l0aW9uWVBlcmNlbnQNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wSW5QZXJjZW50KCRwZXJjZW50V2lkdGggPSAwLCAkcGVyY2VudEhlaWdodCA9IDAsICRwb3NpdGlvblhQZXJjZW50ID0gMCwgJHBvc2l0aW9uWVBlcmNlbnQgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNyb3Aoc2VsZjo6VU5JVF9QRVJDRU5ULCAkcGVyY2VudFdpZHRoLCAkcGVyY2VudEhlaWdodCwgJHBvc2l0aW9uWFBlcmNlbnQsICRwb3NpdGlvbllQZXJjZW50LCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3AgdGhlIGRvY3VtZW50DQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBmbG9hdCAkd2lkdGgNCiAgICAgKiBAcGFyYW0gZmxvYXQgJGhlaWdodA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGZsb2F0ICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJHdpZHRoID0gMCwgJGhlaWdodCA9IDAsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gJ0xUJykNCiAgICB7DQogICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCg0KICAgICAgICAgICAgJHdpZHRoID0gcm91bmQoKCR3aWR0aCAvIDEwMCkgKiAkdGhpcy0+d2lkdGgpOw0KICAgICAgICAgICAgJGhlaWdodCA9IHJvdW5kKCgkaGVpZ2h0IC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KDQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaWYgKCgkd2lkdGggIT0gJHRoaXMtPndpZHRoIHx8ICRwb3NpdGlvblggPT0gMCkgfHwgKCRoZWlnaHQgIT0gJHRoaXMtPmhlaWdodCB8fCAkcG9zaXRpb25ZID09IDApKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRsYXllclRtcCA9IEltYWdlV29ya3Nob3A6OmluaXRWaXJnaW5MYXllcigkd2lkdGgsICRoZWlnaHQpOw0KICAgICAgICAgICAgJGxheWVyQ2xvbmUgPSBJbWFnZVdvcmtzaG9wOjppbml0VmlyZ2luTGF5ZXIoJHRoaXMtPndpZHRoLCAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaW1hZ2VkZXN0cm95KCRsYXllckNsb25lLT5pbWFnZSk7DQogICAgICAgICAgICAkbGF5ZXJDbG9uZS0+aW1hZ2UgPSAkdGhpcy0+aW1hZ2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRsYXllclRtcC0+YWRkTGF5ZXIoMSwgJGxheWVyQ2xvbmUsIC0kcG9zaXRpb25YLCAtJHBvc2l0aW9uWSwgJHBvc2l0aW9uKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJG5ld1BvcyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJQb3NpdGlvbnMoKTsNCiAgICAgICAgICAgICRsYXllck5ld1Bvc1ggPSAkbmV3UG9zWzFdWyd4J107DQogICAgICAgICAgICAkbGF5ZXJOZXdQb3NZID0gJG5ld1Bvc1sxXVsneSddOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGxheWVyDQogICAgICAgICAgICAkdGhpcy0+d2lkdGggPSAkbGF5ZXJUbXAtPmdldFdpZHRoKCk7DQogICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJGxheWVyVG1wLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0UmVzdWx0KCk7DQogICAgICAgICAgICB1bnNldCgkbGF5ZXJUbXApOw0KICAgICAgICAgICAgdW5zZXQoJGxheWVyQ2xvbmUpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkdGhpcy0+dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckNyb3BwaW5nKCRsYXllck5ld1Bvc1gsICRsYXllck5ld1Bvc1kpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wICgiTFQiKSwgIlJUIi4uLiBieSBzcGVjaWZ5aW5nIGEgc2hpZnQgaW4gcGl4ZWwNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB0cmFuc3BhcmVudCAoYnV0IHNjcmlwdCBjb3VsZCBiZSBsb25nIHRvIGV4ZWN1dGUpDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wTWF4aW11bUluUGl4ZWwoJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNyb3BNYXhpbXVtKHNlbGY6OlVOSVRfUElYRUwsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wICgiTFQiKSwgIlJUIi4uLiBieSBzcGVjaWZ5aW5nIGEgc2hpZnQgaW4gcGVyY2VudA0KICAgICAqDQogICAgICogJGJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHRyYW5zcGFyZW50IChidXQgc2NyaXB0IGNvdWxkIGJlIGxvbmcgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YUGVyY2VudA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvbllQZXJjZW50DQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JvcE1heGltdW1JblBlcmNlbnQoJHBvc2l0aW9uWFBlcmNlbnQgPSAwLCAkcG9zaXRpb25ZUGVyY2VudCA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JvcE1heGltdW0oc2VsZjo6VU5JVF9QRVJDRU5ULCAkcG9zaXRpb25YUGVyY2VudCwgJHBvc2l0aW9uWVBlcmNlbnQsICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wDQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BNYXhpbXVtKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJG5hcnJvd1NpZGUgPSAkdGhpcy0+Z2V0TmFycm93U2lkZVdpZHRoKCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5jcm9wSW5QaXhlbCgkbmFycm93U2lkZSwgJG5hcnJvd1NpZGUsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUm90YXRlIHRoZSBsYXllciAoaW4gZGVncmVlKQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRkZWdyZWVzDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgkZGVncmVlcykNCiAgICB7DQogICAgICAgIGlmICgkZGVncmVlcyAhPSAwKSB7DQoNCiAgICAgICAgICAgIGlmICgkZGVncmVlcyA8IC0zNjAgfHwgJGRlZ3JlZXMgPiAzNjApIHsNCiAgICAgICAgICAgICAgICAkZGVncmVlcyA9ICRkZWdyZWVzICUgMzYwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPCAwICYmICRkZWdyZWVzID49IC0zNjApIHsNCiAgICAgICAgICAgICAgICAkZGVncmVlcyA9IDM2MCArICRkZWdyZWVzOw0KICAgICAgICAgICAgfQ0KDQoJCQkvLyBSb3RhdGUgdGhlIGxheWVyIGJhY2tncm91bmQgaW1hZ2UNCiAgICAgICAgICAgICRpbWFnZVJvdGF0ZWQgPSBpbWFnZXJvdGF0ZSgkdGhpcy0+aW1hZ2UsIC0kZGVncmVlcywgLTEpOw0KICAgICAgICAgICAgaW1hZ2VhbHBoYWJsZW5kaW5nKCRpbWFnZVJvdGF0ZWQsIHRydWUpOw0KICAgICAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJGltYWdlUm90YXRlZCwgdHJ1ZSk7DQoNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5pbWFnZSk7DQoNCiAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZVJvdGF0ZWQ7DQoNCiAgICAgICAgICAgICRvbGRXaWR0aCA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgICRvbGRIZWlnaHQgPSAkdGhpcy0+aGVpZ2h0Ow0KDQogICAgICAgICAgICAkdGhpcy0+d2lkdGggPSBpbWFnZXN4KCR0aGlzLT5pbWFnZSk7DQogICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gaW1hZ2VzeSgkdGhpcy0+aW1hZ2UpOw0KDQogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAgICAgJGxheWVyU2VsZk9sZENlbnRlclBvc2l0aW9uID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICd4JyA9PiAkbGF5ZXItPndpZHRoIC8gMiwNCiAgICAgICAgICAgICAgICAgICAgJ3knID0+ICRsYXllci0+aGVpZ2h0IC8gMiwNCiAgICAgICAgICAgICAgICApOw0KDQogICAgICAgICAgICAgICAgJHNtYWxsSW1hZ2VDZW50ZXIgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ3gnID0+ICRsYXllclNlbGZPbGRDZW50ZXJQb3NpdGlvblsneCddICsgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneCddLA0KICAgICAgICAgICAgICAgICAgICAneScgPT4gJGxheWVyU2VsZk9sZENlbnRlclBvc2l0aW9uWyd5J10gKyAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd5J10sDQogICAgICAgICAgICAgICAgKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5yb3RhdGUoJGRlZ3JlZXMpOw0KDQogICAgICAgICAgICAgICAgJHJvID0gc3FydChwb3coJHNtYWxsSW1hZ2VDZW50ZXJbJ3gnXSwgMikgKyBwb3coJHNtYWxsSW1hZ2VDZW50ZXJbJ3knXSwgMikpOw0KDQogICAgICAgICAgICAgICAgJHRldGEgPSAoYWNvcygkc21hbGxJbWFnZUNlbnRlclsneCddIC8gJHJvKSkgKiAxODAgLyBwaSgpOw0KDQogICAgICAgICAgICAgICAgJGEgPSAkcm8gKiBjb3MoKCR0ZXRhICsgJGRlZ3JlZXMpICogcGkoKSAvIDE4MCk7DQogICAgICAgICAgICAgICAgJGIgPSAkcm8gKiBzaW4oKCR0ZXRhICsgJGRlZ3JlZXMpICogcGkoKSAvIDE4MCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPiAwICYmICRkZWdyZWVzIDw9IDkwKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWCA9ICRhIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT53aWR0aCAvIDIpICsgJG9sZEhlaWdodCAqIHNpbigoJGRlZ3JlZXMgKiBwaSgpKSAvIDE4MCk7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMik7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGRlZ3JlZXMgPiA5MCAmJiAkZGVncmVlcyA8PSAxODApIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMikgKyAkdGhpcy0+d2lkdGg7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMikgKyAkb2xkSGVpZ2h0ICogKC1jb3MoKCRkZWdyZWVzKSAqIHBpKCkgLyAxODApKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGVncmVlcyA+IDE4MCAmJiAkZGVncmVlcyA8PSAyNzApIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMikgKyAkb2xkV2lkdGggKiAoLWNvcygoJGRlZ3JlZXMpICogcGkoKSAvIDE4MCkpOw0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25ZID0gJGIgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmhlaWdodCAvIDIpICsgJHRoaXMtPmhlaWdodDsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWCA9ICRhIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT53aWR0aCAvIDIpOw0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25ZID0gJGIgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmhlaWdodCAvIDIpICsgJG9sZFdpZHRoICogKC1zaW4oKCRkZWdyZWVzKSAqIHBpKCkgLyAxODApKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICd4JyA9PiAkbmV3UG9zaXRpb25YLA0KICAgICAgICAgICAgICAgICAgICAneScgPT4gJG5ld1Bvc2l0aW9uWSwNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2hhbmdlIHRoZSBvcGFjaXR5IG9mIHRoZSBsYXllcg0KICAgICAqICRyZWN1cnNpdmU6IGFwcGx5IGl0IG9uIHN1YmxheWVycw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG9wYWNpdHkNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkcmVjdXJzaXZlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG9wYWNpdHkoJG9wYWNpdHksICRyZWN1cnNpdmUgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCRyZWN1cnNpdmUpIHsNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCiAgICAgICAgICAgICAgICAkbGF5ZXItPm9wYWNpdHkoJG9wYWNpdHksIHRydWUpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGtleV0gPSAkbGF5ZXI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkdHJhbnNwYXJlbnRJbWFnZSA9IEltYWdlV29ya3Nob3BMaWI6OmdlbmVyYXRlSW1hZ2UoJHRoaXMtPmdldFdpZHRoKCksICR0aGlzLT5nZXRIZWlnaHQoKSk7DQogICAgICAgIA0KICAgICAgICBJbWFnZVdvcmtzaG9wTGliOjppbWFnZUNvcHlNZXJnZUFscGhhKCR0cmFuc3BhcmVudEltYWdlLCAkdGhpcy0+aW1hZ2UsIDAsIDAsIDAsIDAsICR0aGlzLT5nZXRXaWR0aCgpLCAkdGhpcy0+Z2V0SGVpZ2h0KCksICRvcGFjaXR5KTsNCg0KICAgICAgICB1bnNldCgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdHJhbnNwYXJlbnRJbWFnZTsNCiAgICAgICAgdW5zZXQoJHRyYW5zcGFyZW50SW1hZ2UpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBBcHBseSBhIGZpbHRlciBvbiB0aGUgbGF5ZXINCiAgICAgKiBCZSBjYXJlZnVsOiBzb21lIGZpbHRlcnMgY2FuIGRhbWFnZSB0cmFuc3BhcmVudCBpbWFnZXMsIHVzZSBpdCBzcGFyaW5nbHkgISAoQSBnb29kIHByYXRpY2UgaXMgdG8gdXNlIG1lcmdlQWxsIG9uIHlvdXIgbGF5ZXIgYmVmb3JlIGFwcGx5aW5nIGEgZmlsdGVyKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkZmlsdGVyVHlwZSAoaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5pbWFnZWZpbHRlci5waHApDQogICAgICogQHBhcmFtIGludCAkYXJnMQ0KICAgICAqIEBwYXJhbSBpbnQgJGFyZzINCiAgICAgKiBAcGFyYW0gaW50ICRhcmczDQogICAgICogQHBhcmFtIGludCAkYXJnNA0KICAgICAqIEBwYXJhbSBib29sZWFuICRyZWN1cnNpdmUNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoJGZpbHRlclR5cGUsICRhcmcxID0gbnVsbCwgJGFyZzIgPSBudWxsLCAkYXJnMyA9IG51bGwsICRhcmc0ID0gbnVsbCwgJHJlY3Vyc2l2ZSA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgaWYgKCRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfQ09MT1JJWkUpIHsNCiAgICAgICAgICAgIGltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZSwgJGZpbHRlclR5cGUsICRhcmcxLCAkYXJnMiwgJGFyZzMsICRhcmc0KTsNCiAgICAgICAgfSBlbHNlaWYgKCRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfQlJJR0hUTkVTUyB8fCAkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX0NPTlRSQVNUIHx8ICRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfU01PT1RIKSB7DQogICAgICAgICAgICBpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2UsICRmaWx0ZXJUeXBlLCAkYXJnMSk7DQogICAgICAgIH0gZWxzZWlmICgkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX1BJWEVMQVRFKSB7DQogICAgICAgICAgICBpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2UsICRmaWx0ZXJUeXBlLCAkYXJnMSwgJGFyZzIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlLCAkZmlsdGVyVHlwZSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHJlY3Vyc2l2ZSkgew0KDQogICAgICAgICAgICAkbGF5ZXJzID0gJHRoaXMtPmxheWVyczsNCg0KICAgICAgICAgICAgZm9yZWFjaCgkbGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5hcHBseUZpbHRlcigkZmlsdGVyVHlwZSwgJGFyZzEsICRhcmcyLCAkYXJnMywgJGFyZzQsIHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIEFwcGx5IGhvcml6b250YWwgb3IgdmVydGljYWwgZmxpcCAoVHJhbnNmb3JtYXRpb24pDQogICAgICogDQogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBmbGlwKCR0eXBlID0gJ2hvcml6b250YWwnKQ0KICAgIHsNCiAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgZm9yZWFjaCAoJGxheWVycyBhcyAka2V5ID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAkbGF5ZXItPmZsaXAoJHR5cGUpOw0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1ska2V5XSA9ICRsYXllcjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJHRlbXAgPSBJbWFnZVdvcmtzaG9wTGliOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHR5cGUgPT0gJ2hvcml6b250YWwnKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGltYWdlY29weXJlc2FtcGxlZCgkdGVtcCwgJHRoaXMtPmltYWdlLCAwLCAwLCAkdGhpcy0+d2lkdGggLSAxLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsIC0kdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJHRlbXA7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbnMpIHsNCiAgICANCiAgICAgICAgICAgICAgICAkdGhpcy0+Y2hhbmdlUG9zaXRpb24oJGxheWVySWQsICR0aGlzLT53aWR0aCAtICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5nZXRXaWR0aCgpIC0gJGxheWVyUG9zaXRpb25zWyd4J10sICRsYXllclBvc2l0aW9uc1sneSddKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJ3ZlcnRpY2FsJykgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbWFnZWNvcHlyZXNhbXBsZWQoJHRlbXAsICR0aGlzLT5pbWFnZSwgMCwgMCwgMCwgJHRoaXMtPmhlaWdodCAtIDEsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJHRoaXMtPndpZHRoLCAtJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdGVtcDsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVyUG9zaXRpb25zIGFzICRsYXllcklkID0+ICRsYXllclBvc2l0aW9ucykgew0KICAgIA0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJGxheWVyUG9zaXRpb25zWyd4J10sICR0aGlzLT5oZWlnaHQgLSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+Z2V0SGVpZ2h0KCkgLSAkbGF5ZXJQb3NpdGlvbnNbJ3knXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHVuc2V0KCR0ZW1wKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogQWRkIGEgdGV4dCBvbiB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiB0aGUgbGF5ZXIgdXNpbmcgYSBkZWZhdWx0IGZvbnQgcmVnaXN0ZXJlZCBpbiBHRA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdGV4dA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250DQogICAgICogQHBhcmFtIHN0cmluZyAkY29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsaWduDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlVGV4dCgkdGV4dCwgJGZvbnQgPSAxLCAkY29sb3IgPSAnZmZmZmZmJywgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkYWxpZ24gPSAnaG9yaXpvbnRhbCcpDQogICAgew0KICAgICAgICAkUkdCVGV4dENvbG9yID0gSW1hZ2VXb3Jrc2hvcExpYjo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQogICAgICAgICR0ZXh0Q29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltYWdlLCAkUkdCVGV4dENvbG9yWydSJ10sICRSR0JUZXh0Q29sb3JbJ0cnXSwgJFJHQlRleHRDb2xvclsnQiddKTsNCg0KICAgICAgICBpZiAoJGFsaWduID09ICdob3Jpem9udGFsJykgew0KICAgICAgICAgICAgaW1hZ2VzdHJpbmcoJHRoaXMtPmltYWdlLCAkZm9udCwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHRleHQsICR0ZXh0Q29sb3IpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaW1hZ2VzdHJpbmd1cCgkdGhpcy0+aW1hZ2UsICRmb250LCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkdGV4dCwgJHRleHRDb2xvcik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYSB0ZXh0IG9uIHRoZSBiYWNrZ3JvdW5kIGltYWdlIG9mIHRoZSBsYXllciB1c2luZyBhIGZvbnQgbG9jYWxpemVkIGF0ICRmb250UGF0aA0KICAgICAqIFJldHVybiB0aGUgdGV4dCBjb29yZG9uYXRlcw0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdGV4dA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250UGF0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250U2l6ZQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbG9yDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFJvdGF0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSA9IDEzLCAkY29sb3IgPSAnZmZmZmZmJywgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkZm9udFJvdGF0aW9uID0gMCkNCiAgICB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZvbnRQYXRoKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbignQ2FuXCd0IGZpbmQgYSBmb250IGZpbGUgYXQgdGhpcyBwYXRoIDogIicuJGZvbnRQYXRoLiciLicsIHN0YXRpYzo6RVJST1JfRk9OVF9OT1RfRk9VTkQpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkUkdCVGV4dENvbG9yID0gSW1hZ2VXb3Jrc2hvcExpYjo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQogICAgICAgICR0ZXh0Q29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltYWdlLCAkUkdCVGV4dENvbG9yWydSJ10sICRSR0JUZXh0Q29sb3JbJ0cnXSwgJFJHQlRleHRDb2xvclsnQiddKTsNCg0KICAgICAgICByZXR1cm4gaW1hZ2V0dGZ0ZXh0KCR0aGlzLT5pbWFnZSwgJGZvbnRTaXplLCAkZm9udFJvdGF0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkdGV4dENvbG9yLCAkZm9udFBhdGgsICR0ZXh0KTsNCiAgICB9DQogICAgDQogICAgLy8gTWFuYWdlIHRoZSByZXN1bHQNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXR1cm4gYSBtZXJnZWQgcmVzb3VyY2UgaW1hZ2UNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgaXMgcmVhbGx5IHVzZWZ1bGwgaWYgeW91IHdhbnQgdG8gc2F2ZSBhIEpQRyBvciBHSUYsIGJlY2F1c2UgdGhlIHRyYW5zcGFyZW5jeSBvZiB0aGUgYmFja2dyb3VuZA0KICAgICAqIHdvdWxkIGJlIHJlbW92ZSBmb3IgYSBjb2xvcmVkIGJhY2tncm91bmQsIHNvIHlvdSBzaG91bGQgY2hvb3NlIGEgY29sb3IgbGlrZSAiZmZmZmZmIiAod2hpdGUpDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiYWNrZ3JvdW5kQ29sb3INCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzdWx0KCRiYWNrZ3JvdW5kQ29sb3IgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJGltYWdlc1RvTWVyZ2UgPSBhcnJheSgpOw0KICAgICAgICBrc29ydCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KDQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllckxldmVscyBhcyAkbGF5ZXJMZXZlbCA9PiAkbGF5ZXJJZCkgew0KDQogICAgICAgICAgICAkaW1hZ2VzVG9NZXJnZVskbGF5ZXJMZXZlbF0gPSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+Z2V0UmVzdWx0KCk7DQoNCiAgICAgICAgICAgIC8vIExheWVyIHBvc2l0aW9ucw0KICAgICAgICAgICAgaWYgKCR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXSAhPSAwIHx8ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSAhPSAwKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJHZpcmdpbkxheW91dEltYWdlVG1wID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCR2aXJnaW5MYXlvdXRJbWFnZVRtcCwgJGltYWdlc1RvTWVyZ2VbJGxheWVyTGV2ZWxdLCAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd4J10sICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSwgMCwgMCk7DQogICAgICAgICAgICAgICAgJGltYWdlc1RvTWVyZ2VbJGxheWVyTGV2ZWxdID0gJHZpcmdpbkxheW91dEltYWdlVG1wOw0KICAgICAgICAgICAgICAgIHVuc2V0KCR2aXJnaW5MYXlvdXRJbWFnZVRtcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkaXRlcmF0b3IgPSAxOw0KICAgICAgICAkbWVyZ2VkSW1hZ2UgPSAkdGhpcy0+aW1hZ2U7DQogICAgICAgIGtzb3J0KCRpbWFnZXNUb01lcmdlKTsNCg0KICAgICAgICBmb3JlYWNoICgkaW1hZ2VzVG9NZXJnZSBhcyAkaW1hZ2VMZXZlbCA9PiAkaW1hZ2UpIHsNCiAgICAgICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCRtZXJnZWRJbWFnZSwgJGltYWdlKTsNCiAgICAgICAgICAgICRpdGVyYXRvcisrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkb3BhY2l0eSA9IDEyNzsNCiAgICAgICAgDQogICAgICAgIGlmICgkYmFja2dyb3VuZENvbG9yICYmICRiYWNrZ3JvdW5kQ29sb3IgIT0gJ3RyYW5zcGFyZW50Jykgew0KICAgICAgICAgICAgJG9wYWNpdHkgPSAwOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkYmFja2dyb3VuZEltYWdlID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRiYWNrZ3JvdW5kQ29sb3IsICRvcGFjaXR5KTsNCiAgICAgICAgSW1hZ2VXb3Jrc2hvcExpYjo6bWVyZ2VUd29JbWFnZXMoJGJhY2tncm91bmRJbWFnZSwgJG1lcmdlZEltYWdlKTsNCiAgICAgICAgJG1lcmdlZEltYWdlID0gJGJhY2tncm91bmRJbWFnZTsNCiAgICAgICAgdW5zZXQoJGJhY2tncm91bmRJbWFnZSk7DQoNCiAgICAgICAgcmV0dXJuICRtZXJnZWRJbWFnZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTYXZlIHRoZSByZXN1bHRpbmcgaW1hZ2UgYXQgdGhlIHNwZWNpZmllZCBwYXRoDQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGlzIHJlYWxseSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIHNhdmUgYSBKUEcgb3IgR0lGLCBiZWNhdXNlIHRoZSB0cmFuc3BhcmVuY3kgb2YgdGhlIGJhY2tncm91bmQNCiAgICAgKiB3b3VsZCBiZSByZW1vdmUgZm9yIGEgY29sb3JlZCBiYWNrZ3JvdW5kLCBzbyB5b3Ugc2hvdWxkIGNob29zZSBhIGNvbG9yIGxpa2UgImZmZmZmZiIgKHdoaXRlKQ0KICAgICAqDQogICAgICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgb3ZlcnJpZGUgIQ0KICAgICAqDQogICAgICogJGltYWdlUXVhbGl0eSBpcyB1c2VsZXNzIGZvciBHSUYNCiAgICAgKg0KICAgICAqIEV4OiAkZm9sZGVyID0gX19ESVJfXy4iLy4uL3dlYi9pbWFnZXMvMjAxMiINCiAgICAgKiAgICAgJGltYWdlTmFtZSA9ICJidXR0ZXJmbHkuanBnIg0KICAgICAqICAgICAkY3JlYXRlRm9sZGVycyA9IHRydWUNCiAgICAgKiAgICAgJGltYWdlUXVhbGl0eSA9IDk1DQogICAgICogICAgICRiYWNrZ3JvdW5kQ29sb3IgPSAiZmZmZmZmIg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZm9sZGVyDQogICAgICogQHBhcmFtIHN0cmluZyAkaW1hZ2VOYW1lDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNyZWF0ZUZvbGRlcnMNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiYWNrZ3JvdW5kQ29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaW1hZ2VRdWFsaXR5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoJGZvbGRlciwgJGltYWdlTmFtZSwgJGNyZWF0ZUZvbGRlcnMgPSB0cnVlLCAkYmFja2dyb3VuZENvbG9yID0gbnVsbCwgJGltYWdlUXVhbGl0eSA9IDc1KQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc19maWxlKCRmb2xkZXIpKSB7DQoNCiAgICAgICAgICAgIGlmIChpc19kaXIoJGZvbGRlcikgfHwgJGNyZWF0ZUZvbGRlcnMpIHsNCg0KICAgICAgICAgICAgICAgIC8vIENyZWF0aW5nIHRoZSBmb2xkZXJzIGlmIHRoZXkgZG9uJ3QgZXhpc3QNCiAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigkZm9sZGVyKSAmJiAkY3JlYXRlRm9sZGVycykgew0KICAgICAgICAgICAgICAgICAgICAkb2xkVW1hc2sgPSB1bWFzaygwKTsNCiAgICAgICAgICAgICAgICAgICAgbWtkaXIoJGZvbGRlciwgMDc3NywgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgIHVtYXNrKCRvbGRVbWFzayk7DQogICAgICAgICAgICAgICAgICAgIGNobW9kKCRmb2xkZXIsIDA3NzcpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRleHRlbnNpb24gPSBleHBsb2RlKCcuJywgJGltYWdlTmFtZSk7DQogICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIoJGV4dGVuc2lvbltjb3VudCgkZXh0ZW5zaW9uKSAtIDFdKTsNCg0KICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICRmb2xkZXIuJy8nLiRpbWFnZU5hbWU7DQoNCiAgICAgICAgICAgICAgICBpZiAoKCRleHRlbnNpb24gPT0gJ2pwZycgfHwgJGV4dGVuc2lvbiA9PSAnanBlZycgfHwgJGV4dGVuc2lvbiA9PSAnZ2lmJykgJiYgKCEkYmFja2dyb3VuZENvbG9yIHx8ICRiYWNrZ3JvdW5kQ29sb3IgPT0gJ3RyYW5zcGFyZW50JykpIHsNCiAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmRDb2xvciA9ICdmZmZmZmYnOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRpbWFnZSA9ICR0aGlzLT5nZXRSZXN1bHQoJGJhY2tncm91bmRDb2xvcik7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PSAnanBnJyB8fCAkZXh0ZW5zaW9uID09ICdqcGVnJykgew0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlanBlZygkaW1hZ2UsICRmaWxlbmFtZSwgJGltYWdlUXVhbGl0eSk7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpbWFnZSk7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGV4dGVuc2lvbiA9PSAnZ2lmJykgew0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlZ2lmKCRpbWFnZSwgJGZpbGVuYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGltYWdlKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZXh0ZW5zaW9uID09ICdwbmcnKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGltYWdlUXVhbGl0eSA9ICRpbWFnZVF1YWxpdHkgLyAxMDsNCiAgICAgICAgICAgICAgICAgICAgJGltYWdlUXVhbGl0eSAtPSAxOw0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlcG5nKCRpbWFnZSwgJGZpbGVuYW1lLCAkaW1hZ2VRdWFsaXR5KTsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGltYWdlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBDaGVja2Vycw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQogICAgLyoqDQogICAgICogQ2hlY2sgaWYgYSBzdWJsYXllciBleGlzdHMgaW4gdGhlIHN0YWNrIGZvciBhIGdpdmVuIGlkDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sZWFuDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGlzTGF5ZXJJbkluZGV4KCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGxheWVySWQsICR0aGlzLT5sYXllcnMpKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvLyBHZXR0ZXIgLyBTZXR0ZXINCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXR1cm4gdGhlIG5hcnJvdyBzaWRlIHdpZHRoIG9mIHRoZSBsYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hcnJvd1NpZGVXaWR0aCgpDQogICAgew0KICAgICAgICAkbmFycm93U2lkZVdpZHRoID0gJHRoaXMtPmdldFdpZHRoKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRIZWlnaHQoKSA8ICRuYXJyb3dTaWRlV2lkdGgpIHsNCiAgICAgICAgICAgICRuYXJyb3dTaWRlV2lkdGggPSAkdGhpcy0+Z2V0SGVpZ2h0KCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJG5hcnJvd1NpZGVXaWR0aDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm4gdGhlIGxhcmdlc3Qgc2lkZSB3aWR0aCBvZiB0aGUgbGF5ZXINCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXJnZXN0U2lkZVdpZHRoKCkNCiAgICB7DQogICAgICAgICRsYXJnZXN0U2lkZVdpZHRoID0gJHRoaXMtPmdldFdpZHRoKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRIZWlnaHQoKSA+ICRsYXJnZXN0U2lkZVdpZHRoKSB7DQogICAgICAgICAgICAkbGFyZ2VzdFNpZGVXaWR0aCA9ICR0aGlzLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkbGFyZ2VzdFNpZGVXaWR0aDsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogR2V0IHRoZSBsZXZlbCBvZiBhIHN1YmxheWVyDQogICAgICogUmV0dXJuIHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIChpbnRlZ2VyIG9yIGJvb2xlYW4pDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyTGV2ZWwoJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgbGF5ZXIgZXhpc3RzIGluIGRvY3VtZW50DQogICAgICAgICAgICByZXR1cm4gYXJyYXlfc2VhcmNoKCRsYXllcklkLCAkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBHZXQgYSBzdWJsYXllciBpbiB0aGUgc3RhY2sNCiAgICAgKiBEb24ndCBmb3JnZXQgdG8gdXNlIGNsb25lIG1ldGhvZDogJGIgPSBjbG9uZSAkYS0+Z2V0TGF5ZXIoMyk7DQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllcnNbJGxheWVySWRdOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgd2lkdGgNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRXaWR0aCgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPndpZHRoOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEdldHRlciBoZWlnaHQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWlnaHQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWlnaHQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGltYWdlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHJlc291cmNlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEltYWdlKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW1hZ2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVycw0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXllcnMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllcnM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVyTGV2ZWxzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyTGV2ZWxzKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bGF5ZXJMZXZlbHM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVyUG9zaXRpb25zDQogICAgICogDQogICAgICogR2V0IGFsbCB0aGUgcG9zaXRpb25zIG9mIHRoZSBzdWJsYXllcnMsDQogICAgICogb3Igd2hlbiBzcGVjaWZ5aW5nICRsYXllcklkLCBnZXQgdGhlIHBvc2l0aW9uIG9mIHRoaXMgc3VibGF5ZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogDQogICAgICogQHJldHVybiBtaXhlZCAoYXJyYXkgb3IgYm9vbGVhbikNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGF5ZXJQb3NpdGlvbnMoJGxheWVySWQgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCEkbGF5ZXJJZCkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmxheWVyUG9zaXRpb25zOw0KICAgICAgICAgICAgDQogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7IC8vIGlmIHRoZSBzdWJsYXllciBleGlzdHMgaW4gdGhlIHN0YWNrDQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGhpZ2hlc3RMYXllckxldmVsDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEhpZ2hlc3RMYXllckxldmVsKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWw7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxhc3RMYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RMYXllcklkKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdExheWVySWQ7DQogICAgfQ0KICAgIA0KICAgIC8vIEludGVybmFscw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KICAgICAqIERlbGV0ZSB0aGUgY3VycmVudCBvYmplY3QNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkNCiAgICB7DQogICAgICAgIGltYWdlZGVzdHJveSgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAkdGhpcy0+Y2xlYXJTdGFjaygpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBDcmVhdGUgYSBuZXcgYmFja2dyb3VuZCBpbWFnZSB2YXIgZnJvbSB0aGUgb2xkIGJhY2tncm91bmQgaW1hZ2UgdmFyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZU5ld1ZhckZyb21CYWNrZ3JvdW5kSW1hZ2UoKQ0KICAgIHsNCiAgICAgICAgJHZpcmdpbkltYWdlID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+Z2V0V2lkdGgoKSwgJHRoaXMtPmdldEhlaWdodCgpKTsgLy8gTmV3IGJhY2tncm91bmQgaW1hZ2UNCiAgICAgICAgDQogICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCR2aXJnaW5JbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCg0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdmlyZ2luSW1hZ2U7DQogICAgICAgIHVuc2V0KCR2aXJnaW5JbWFnZSk7DQoNCiAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgZm9yZWFjaCgkbGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0gPSBjbG9uZSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBJbmRleCBhIHN1YmxheWVyIGluIHRoZSBsYXllciBzdGFjaw0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgYW5kIGl0cyBmaW5hbCBsZXZlbDoNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVyTGV2ZWwNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcExheWVyICRsYXllcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZXhMYXllcigkbGF5ZXJMZXZlbCwgJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbikNCiAgICB7DQogICAgICAgIC8vIENob29zZSBhbiBpZCBmb3IgdGhlIGFkZGVkIGxheWVyDQogICAgICAgICRsYXllcklkID0gJHRoaXMtPmxhc3RMYXllcklkICsgMTsNCg0KICAgICAgICAvLyBDbG9uZSAkbGF5ZXIgdG8gZHVwbGljYXRlIGltYWdlIHJlc291cmNlIHZhcg0KICAgICAgICAkbGF5ZXIgPSBjbG9uZSAkbGF5ZXI7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBpbiB0aGUgc3RhY2sNCiAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0gPSAkbGF5ZXI7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBwb3NpdGlvbnMgaW4gdGhlIG1haW4gbGF5ZXINCiAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXSA9IEltYWdlV29ya3Nob3BMaWI6OmNhbGN1bGF0ZVBvc2l0aW9ucygkdGhpcy0+Z2V0V2lkdGgoKSwgJHRoaXMtPmdldEhlaWdodCgpLCAkbGF5ZXItPmdldFdpZHRoKCksICRsYXllci0+Z2V0SGVpZ2h0KCksICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQoNCiAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXN0TGF5ZXJJZCBvZiB0aGUgd29ya3Nob3ANCiAgICAgICAgJHRoaXMtPmxhc3RMYXllcklkID0gJGxheWVySWQ7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBsZXZlbCBpbiB0aGUgc3RhY2sNCiAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+aW5kZXhMZXZlbEluRG9jdW1lbnQoJGxheWVyTGV2ZWwsICRsYXllcklkKTsNCg0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnbGF5ZXJMZXZlbCcgPT4gJGxheWVyTGV2ZWwsDQogICAgICAgICAgICAnaWQnID0+ICRsYXllcklkLA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEluZGV4IGEgbGF5ZXIgbGV2ZWwgYW5kIHVwZGF0ZSB0aGUgbGF5ZXJzIGxldmVscyBpbiB0aGUgZG9jdW1lbnQNCiAgICAgKiBSZXR1cm4gdGhlIGNvcnJlY3RlZCBsZXZlbCBvZiB0aGUgbGF5ZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllckxldmVsDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmRleExldmVsSW5Eb2N1bWVudCgkbGF5ZXJMZXZlbCwgJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbGF5ZXJMZXZlbCwgJHRoaXMtPmxheWVyTGV2ZWxzKSkgeyAvLyBMZXZlbCBhbHJlYWR5IGV4aXN0cw0KIA0KICAgICAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsgLy8gQWxsIGxheWVycyBhZnRlciB0aGlzIGxldmVsIGFuZCB0aGUgbGF5ZXIgd2hpY2ggaGF2ZSB0aGlzIGxldmVsIGFyZSB1cGRhdGVkDQogICAgICAgICAgICAkbGF5ZXJMZXZlbHNUbXAgPSAkdGhpcy0+bGF5ZXJMZXZlbHM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllckxldmVsc1RtcCBhcyAkbGV2ZWxUbXAgPT4gJGxheWVySWRUbXApIHsNCiAgICAgICAgICAgICAgICBpZiAoJGxldmVsVG1wID49ICRsYXllckxldmVsKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skbGV2ZWxUbXAgKyAxXSA9ICRsYXllcklkVG1wOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdW5zZXQoJGxheWVyTGV2ZWxzVG1wKTsNCg0KICAgICAgICB9IGVsc2UgeyAvLyBMZXZlbCBpc24ndCB0YWtlbg0KICAgICAgICAgICAgaWYgKCR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbCA8ICRsYXllckxldmVsKSB7IC8vIElmIGdpdmVuIGxldmVsIGlzIHRvbyBoaWdoLCBwcm9jZWVkIGFkanVzdGVtZW50DQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgKyAxOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllckxldmVsXSA9ICRsYXllcklkOw0KICAgICAgICAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgPSBtYXgoYXJyYXlfZmxpcCgkdGhpcy0+bGF5ZXJMZXZlbHMpKTsgLy8gVXBkYXRlICRoaWdoZXN0TGF5ZXJMZXZlbA0KDQogICAgICAgIHJldHVybiAkbGF5ZXJMZXZlbDsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogVXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgbGF5ZXJzIGluIHRoZSBzdGFjayBhZnRlciBjcm9wcGluZw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckNyb3BwaW5nKCRwb3NpdGlvblgsICRwb3NpdGlvblkpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAkb2xkTGF5ZXJQb3NYID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneCddOw0KICAgICAgICAgICAgJG9sZExheWVyUG9zWSA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXTsNCg0KICAgICAgICAgICAgJG5ld0xheWVyUG9zWCA9ICRvbGRMYXllclBvc1ggKyAkcG9zaXRpb25YOw0KICAgICAgICAgICAgJG5ld0xheWVyUG9zWSA9ICRvbGRMYXllclBvc1kgKyAkcG9zaXRpb25ZOw0KDQogICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJHRoaXMtPmNoYW5nZVBvc2l0aW9uKCRsYXllcklkLCAkbmV3TGF5ZXJQb3NYLCAkbmV3TGF5ZXJQb3NZKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGJhY2tncm91bmQgb2YgYSBsYXllcg0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld1dpZHRoDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld0hlaWdodA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCYWNrZ3JvdW5kKCRuZXdXaWR0aCwgJG5ld0hlaWdodCkNCiAgICB7DQogICAgICAgICRvbGRXaWR0aCA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgJG9sZEhlaWdodCA9ICR0aGlzLT5oZWlnaHQ7DQoNCiAgICAgICAgJHRoaXMtPndpZHRoID0gJG5ld1dpZHRoOw0KICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJG5ld0hlaWdodDsNCg0KICAgICAgICAkdmlyZ2luTGF5b3V0SW1hZ2UgPSBJbWFnZVdvcmtzaG9wTGliOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQoNCiAgICAgICAgaW1hZ2Vjb3B5cmVzYW1wbGVkKCR2aXJnaW5MYXlvdXRJbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRvbGRXaWR0aCwgJG9sZEhlaWdodCk7DQoNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJHZpcmdpbkxheW91dEltYWdlOw0KICAgIH0NCiAgICANCiAgICAvLyBEZXByZWNhdGVkLCBkb24ndCB1c2UgYW55bW9yZQ0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KCSAqIEBkZXByZWNhdGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUluUG91cmNlbnQoJHBlcmNlbnRXaWR0aCA9IG51bGwsICRwZXJjZW50SGVpZ2h0ID0gbnVsbCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdNTScpDQogICAgew0KCQl0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdNZXRob2QgcmVzaXplSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIHJlc2l6ZUluUGVyY2VudCgpLiBVc2UgcmVzaXplSW5QZXJjZW50KCkgaW5zdGVhZC4nLCBzdGF0aWM6Ok1FVEhPRF9ERVBSRUNBVEVEKTsNCiAgICB9DQoJDQoJLyoqDQogICAgICogQGRlcHJlY2F0ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlMYXJnZXN0U2lkZUluUG91cmNlbnQoJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCByZXNpemVCeUxhcmdlc3RTaWRlSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoKS4gVXNlIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KICAgIH0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeU5hcnJvd1NpZGVJblBvdXJjZW50KCRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCByZXNpemVCeU5hcnJvd1NpZGVJblBvdXJjZW50KCkgd2FzIHJlbmFtZWQgcmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50KCkuIFVzZSByZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KICAgIH0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wSW5Qb3VyY2VudCgkcGVyY2VudFdpZHRoID0gMCwgJHBlcmNlbnRIZWlnaHQgPSAwLCAkcG9zaXRpb25YUGVyY2VudCA9IDAsICRwb3NpdGlvbllQZXJjZW50ID0gMCwgJHBvc2l0aW9uID0gJ0xUJykNCiAgICB7DQoJCXRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCBjcm9wSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIGNyb3BJblBlcmNlbnQoKS4gVXNlIGNyb3BJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KCX0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wTWF4aW11bUluUG91cmNlbnQoJHBvc2l0aW9uWFBlcmNlbnQgPSAwLCAkcG9zaXRpb25ZUGVyY2VudCA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdNZXRob2QgY3JvcE1heGltdW1JblBvdXJjZW50KCkgd2FzIHJlbmFtZWQgY3JvcE1heGltdW1JblBlcmNlbnQoKS4gVXNlIGNyb3BNYXhpbXVtSW5QZXJjZW50KCkgaW5zdGVhZC4nLCBzdGF0aWM6Ok1FVEhPRF9ERVBSRUNBVEVEKTsNCiAgICB9DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Core/ImageWorkshopLib.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxDb3JlOw0KDQovL3VzZSBQSFBJbWFnZVdvcmtzaG9wXENvcmVcRXhjZXB0aW9uXEltYWdlV29ya3Nob3BMaWJFeGNlcHRpb24gYXMgSW1hZ2VXb3Jrc2hvcExpYkV4Y2VwdGlvbjsNCg0KLy8gSWYgbm8gYXV0b2xvYWRlciwgdW5jb21tZW50IHRoZXNlIGxpbmVzOg0KcmVxdWlyZV9vbmNlKF9fRElSX18uJy9FeGNlcHRpb24vSW1hZ2VXb3Jrc2hvcExpYkV4Y2VwdGlvbi5waHAnKTsNCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wTGliIGNsYXNzDQogKg0KICogQ29udGFpbnMgc29tZSB0b29scyB0byBoZWxwIGluIHNvbWUgSW1hZ2VXb3Jrc2hvcCBjYWxjdWxhdGlvbnMNCiAqDQogKiBAbGluayBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20NCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlDQogKiBAY29weXJpZ2h0IENsw6ltZW50IEd1aWxsZW1haW4NCiAqLw0KY2xhc3MgSW1hZ2VXb3Jrc2hvcExpYg0Kew0KICAgIC8qKg0KICAgICAqIEB2YXIgaW50ZWdlcg0KICAgICAqLw0KICAgIGNvbnN0IEVSUk9SX0ZPTlRfTk9UX0ZPVU5EID0gMzsNCiAgICANCiAgICAvKioNCiAgICAgKiBDYWxjdWxhdGUgdGhlIGxlZnQgdG9wIHBvc2l0aW9ucyBvZiBhIGxheWVyIGluc2lkZSBhIHBhcmVudCBsYXllciBjb250YWluZXINCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRjb250YWluZXJXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRjb250YWluZXJIZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllckhlaWdodA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllclBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllclBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVQb3NpdGlvbnMoJGNvbnRhaW5lcldpZHRoLCAkY29udGFpbmVySGVpZ2h0LCAkbGF5ZXJXaWR0aCwgJGxheWVySGVpZ2h0LCAkbGF5ZXJQb3NpdGlvblgsICRsYXllclBvc2l0aW9uWSwgJHBvc2l0aW9uID0gJ0xUJykNCiAgICB7DQogICAgICAgICRwb3NpdGlvbiA9IHN0cnRvbG93ZXIoJHBvc2l0aW9uKTsNCg0KICAgICAgICBpZiAoJHBvc2l0aW9uID09ICdydCcpIHsNCg0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGggLSAkbGF5ZXJQb3NpdGlvblg7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAnbGInKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQgLSAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAncmInKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICRjb250YWluZXJXaWR0aCAtICRsYXllcldpZHRoIC0gJGxheWVyUG9zaXRpb25YOw0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25ZID0gJGNvbnRhaW5lckhlaWdodCAtICRsYXllckhlaWdodCAtICRsYXllclBvc2l0aW9uWTsNCg0KICAgICAgICB9IGVsc2VpZiAoJHBvc2l0aW9uID09ICdtbScpIHsNCg0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gKCgkY29udGFpbmVyV2lkdGggLSAkbGF5ZXJXaWR0aCkgLyAyKSArICRsYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICgoJGNvbnRhaW5lckhlaWdodCAtICRsYXllckhlaWdodCkgLyAyKSArICRsYXllclBvc2l0aW9uWTsNCg0KICAgICAgICB9IGVsc2VpZiAoJHBvc2l0aW9uID09ICdtdCcpIHsNCg0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gKCgkY29udGFpbmVyV2lkdGggLSAkbGF5ZXJXaWR0aCkgLyAyKSArICRsYXllclBvc2l0aW9uWDsNCg0KICAgICAgICB9IGVsc2VpZiAoJHBvc2l0aW9uID09ICdtYicpIHsNCg0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gKCgkY29udGFpbmVyV2lkdGggLSAkbGF5ZXJXaWR0aCkgLyAyKSArICRsYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQgLSAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAnbG0nKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICgoJGNvbnRhaW5lckhlaWdodCAtICRsYXllckhlaWdodCkgLyAyKSArICRsYXllclBvc2l0aW9uWTsNCg0KICAgICAgICB9IGVsc2VpZiAoJHBvc2l0aW9uID09ICdybScpIHsNCg0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25YID0gJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGggLSAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAoKCRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAneCcgPT4gJGxheWVyUG9zaXRpb25YLA0KICAgICAgICAgICAgJ3knID0+ICRsYXllclBvc2l0aW9uWSwNCiAgICAgICAgKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogQ29udmVydCBIZXggY29sb3IgdG8gUkdCIGNvbG9yIGZvcm1hdA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkaGV4DQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0SGV4VG9SR0IoJGhleCkNCiAgICB7DQogICAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICdSJyA9PiAoaW50KSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRoZXgsIDAsIDIpLCAxNiwgMTApLA0KICAgICAgICAgICAgJ0cnID0+IChpbnQpIGJhc2VfY29udmVydChzdWJzdHIoJGhleCwgMiwgMiksIDE2LCAxMCksDQogICAgICAgICAgICAnQicgPT4gKGludCkgYmFzZV9jb252ZXJ0KHN1YnN0cigkaGV4LCA0LCAyKSwgMTYsIDEwKSwNCiAgICAgICAgKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogR2VuZXJhdGUgYSBuZXcgaW1hZ2UgcmVzb3VyY2UgdmFyDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0DQogICAgICogQHBhcmFtIHN0cmluZyAkY29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkb3BhY2l0eQ0KICAgICAqDQogICAgICogQHJldHVybiByZXNvdXJjZQ0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVJbWFnZSgkd2lkdGggPSAxMDAsICRoZWlnaHQgPSAxMDAsICRjb2xvciA9ICdmZmZmZmYnLCAkb3BhY2l0eSA9IDEyNykNCiAgICB7DQogICAgICAgICRSR0JDb2xvcnMgPSBJbWFnZVdvcmtzaG9wTGliOjpjb252ZXJ0SGV4VG9SR0IoJGNvbG9yKTsNCg0KICAgICAgICAkaW1hZ2UgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkd2lkdGgsICRoZWlnaHQpOw0KICAgICAgICBpbWFnZXNhdmVhbHBoYSgkaW1hZ2UsIHRydWUpOw0KICAgICAgICAkY29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkaW1hZ2UsICRSR0JDb2xvcnNbJ1InXSwgJFJHQkNvbG9yc1snRyddLCAkUkdCQ29sb3JzWydCJ10sICRvcGFjaXR5KTsNCiAgICAgICAgaW1hZ2VmaWxsKCRpbWFnZSwgMCwgMCwgJGNvbG9yKTsNCg0KICAgICAgICByZXR1cm4gJGltYWdlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXR1cm4gZGltZW5zaW9uIG9mIGEgdGV4dA0KICAgICAqDQogICAgICogQHBhcmFtICRmb250U2l6ZQ0KICAgICAqIEBwYXJhbSAkZm9udEFuZ2xlDQogICAgICogQHBhcmFtICRmb250RmlsZQ0KICAgICAqIEBwYXJhbSAkdGV4dA0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheSBvciBib29sZWFuDQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUZXh0Qm94RGltZW5zaW9uKCRmb250U2l6ZSwgJGZvbnRBbmdsZSwgJGZvbnRGaWxlLCAkdGV4dCkNCiAgICB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZvbnRGaWxlKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BMaWJFeGNlcHRpb24oJ0NhblwndCBmaW5kIGEgZm9udCBmaWxlIGF0IHRoaXMgcGF0aCA6ICInLiRmb250RmlsZS4nIi4nLCBzdGF0aWM6OkVSUk9SX0ZPTlRfTk9UX0ZPVU5EKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJGJveCA9IGltYWdldHRmYmJveCgkZm9udFNpemUsICRmb250QW5nbGUsICRmb250RmlsZSwgJHRleHQpOw0KDQoJCWlmICghJGJveCkgew0KDQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KICAgICAgICAkbWluWCA9IG1pbihhcnJheSgkYm94WzBdLCAkYm94WzJdLCAkYm94WzRdLCAkYm94WzZdKSk7DQogICAgICAgICRtYXhYID0gbWF4KGFycmF5KCRib3hbMF0sICRib3hbMl0sICRib3hbNF0sICRib3hbNl0pKTsNCiAgICAgICAgJG1pblkgPSBtaW4oYXJyYXkoJGJveFsxXSwgJGJveFszXSwgJGJveFs1XSwgJGJveFs3XSkpOw0KICAgICAgICAkbWF4WSA9IG1heChhcnJheSgkYm94WzFdLCAkYm94WzNdLCAkYm94WzVdLCAkYm94WzddKSk7DQogICAgICAgICR3aWR0aCA9ICgkbWF4WCAtICRtaW5YKTsNCiAgICAgICAgJGhlaWdodCA9ICgkbWF4WSAtICRtaW5ZKTsNCiAgICAgICAgJGxlZnQgPSBhYnMoJG1pblgpICsgJHdpZHRoOw0KICAgICAgICAkdG9wID0gYWJzKCRtaW5ZKSArICRoZWlnaHQ7DQoNCiAgICAgICAgLy8gdG8gY2FsY3VsYXRlIHRoZSBleGFjdCBib3VuZGluZyBib3gsIHdlIHdyaXRlIHRoZSB0ZXh0IGluIGEgbGFyZ2UgaW1hZ2UNCiAgICAgICAgJGltZyA9IEBpbWFnZWNyZWF0ZXRydWVjb2xvcigkd2lkdGggPDwgMiwgJGhlaWdodCA8PCAyKTsNCiAgICAgICAgJHdoaXRlID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbWcsIDI1NSwgMjU1LCAyNTUpOw0KICAgICAgICAkYmxhY2sgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJGltZywgMCwgMCwgMCk7DQogICAgICAgIGltYWdlZmlsbGVkcmVjdGFuZ2xlKCRpbWcsIDAsIDAsIGltYWdlc3goJGltZyksIGltYWdlc3koJGltZyksICRibGFjayk7DQoNCiAgICAgICAgLy8gZm9yIGVuc3VyZSB0aGF0IHRoZSB0ZXh0IGlzIGNvbXBsZXRlbHkgaW4gdGhlIGltYWdlDQogICAgICAgIGltYWdldHRmdGV4dCgkaW1nLCAkZm9udFNpemUsICRmb250QW5nbGUsICRsZWZ0LCAkdG9wLCAkd2hpdGUsICRmb250RmlsZSwgJHRleHQpOw0KDQogICAgICAgIC8vIHN0YXJ0IHNjYW5uaW5nICgwPT4gYmxhY2sgPT4gZW1wdHkpDQogICAgICAgICRybGVmdCA9ICR3NCA9ICR3aWR0aDw8MjsNCiAgICAgICAgJHJyaWdodCA9IDA7DQogICAgICAgICRyYm90dG9tID0gMDsNCiAgICAgICAgJHJ0b3AgPSAkaDQgPSAkaGVpZ2h0PDwyOw0KDQogICAgICAgIGZvciAoJHggPSAwOyAkeCA8ICR3NDsgJHgrKykgew0KDQoJCQlmb3IgKCR5ID0gMDsgJHkgPCAkaDQ7ICR5KyspIHsNCg0KCQkJCWlmIChpbWFnZWNvbG9yYXQoJGltZywgJHgsICR5KSkgew0KDQoJCQkJCSRybGVmdCA9IG1pbigkcmxlZnQsICR4KTsNCgkJCQkJJHJyaWdodCA9IG1heCgkcnJpZ2h0LCAkeCk7DQoJCQkJCSRydG9wID0gbWluKCRydG9wLCAkeSk7DQoJCQkJCSRyYm90dG9tID0gbWF4KCRyYm90dG9tLCAkeSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCiAgICAgICAgaW1hZ2VkZXN0cm95KCRpbWcpOw0KDQogICAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICdsZWZ0JyA9PiAkbGVmdCAtICRybGVmdCwNCiAgICAgICAgICAgICd0b3AnID0+ICR0b3AgLSAkcnRvcCwNCiAgICAgICAgICAgICd3aWR0aCcgPT4gJHJyaWdodCAtICRybGVmdCArIDEsDQogICAgICAgICAgICAnaGVpZ2h0JyA9PiAkcmJvdHRvbSAtICRydG9wICsgMSwNCiAgICAgICAgKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogQ29weSBhbiBpbWFnZSBvbiBhbm90aGVyIG9uZSBhbmQgY29udmVyc2UgdHJhbnNwYXJlbmN5DQogICAgICoNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGRlc3RJbWcNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHNyY0ltZw0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZXN0WA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZXN0WQ0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzcmNYDQogICAgICogQHBhcmFtIGludGVnZXIgJHNyY1kNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc3JjVw0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzcmNIDQogICAgICogQHBhcmFtIGludGVnZXIgJHBjdA0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW1hZ2VDb3B5TWVyZ2VBbHBoYSgmJGRlc3RJbWcsICYkc3JjSW1nLCAkZGVzdFgsICRkZXN0WSwgJHNyY1gsICRzcmNZLCAkc3JjVywgJHNyY0gsICRwY3QgPSAwKQ0KICAgIHsNCiAgICAgICAgJGRlc3RYID0gKGludCkgJGRlc3RYOw0KICAgICAgICAkZGVzdFkgPSAoaW50KSAkZGVzdFk7DQogICAgICAgICRzcmNYID0gKGludCkgJHNyY1g7DQogICAgICAgICRzcmNZID0gKGludCkgJHNyY1k7DQogICAgICAgICRzcmNXID0gKGludCkgJHNyY1c7DQogICAgICAgICRzcmNIID0gKGludCkgJHNyY0g7DQogICAgICAgICRwY3QgPSAoaW50KSAkcGN0Ow0KICAgICAgICAkZGVzdFcgPSBpbWFnZVNYKCRkZXN0SW1nKTsNCiAgICAgICAgJGRlc3RIID0gaW1hZ2VTWSgkZGVzdEltZyk7DQoNCiAgICAgICAgZm9yICgkeSA9IDA7ICR5IDwgJHNyY0ggKyAkc3JjWTsgJHkrKykgew0KDQogICAgICAgICAgICBmb3IgKCR4ID0gMDsgJHggPCAkc3JjVyArICRzcmNYOyAkeCsrKSB7DQoNCiAgICAgICAgICAgICAgICBpZiAoJHggKyAkZGVzdFggPj0gMCAmJiAkeCArICRkZXN0WCA8ICRkZXN0VyAmJiAkeCArICRzcmNYID49IDAgJiYgJHggKyAkc3JjWCA8ICRzcmNXICYmICR5ICsgJGRlc3RZID49IDAgJiYgJHkgKyAkZGVzdFkgPCAkZGVzdEggJiYgJHkgKyAkc3JjWSA+PSAwICYmICR5ICsgJHNyY1kgPCAkc3JjSCkgew0KDQogICAgICAgICAgICAgICAgICAgICRkZXN0UGl4ZWwgPSBpbWFnZUNvbG9yc0ZvckluZGV4KCRkZXN0SW1nLCBpbWFnZUNvbG9yYXQoJGRlc3RJbWcsICR4ICsgJGRlc3RYLCAkeSArICRkZXN0WSkpOw0KICAgICAgICAgICAgICAgICAgICAkc3JjSW1nQ29sb3JhdCA9IGltYWdlQ29sb3JhdCgkc3JjSW1nLCAkeCArICRzcmNYLCAkeSArICRzcmNZKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgkc3JjSW1nQ29sb3JhdCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkc3JjUGl4ZWwgPSBpbWFnZUNvbG9yc0ZvckluZGV4KCRzcmNJbWcsICRzcmNJbWdDb2xvcmF0KTsNCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICRzcmNBbHBoYSA9IDEgLSAoJHNyY1BpeGVsWydhbHBoYSddIC8gMTI3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0QWxwaGEgPSAxIC0gKCRkZXN0UGl4ZWxbJ2FscGhhJ10gLyAxMjcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJG9wYWNpdHkgPSAkc3JjQWxwaGEgKiAkcGN0IC8gMTAwOw0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZXN0QWxwaGEgPj0gJG9wYWNpdHkpIHsNCiAgICAJCQkJCQkkYWxwaGEgPSAkZGVzdEFscGhhOw0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZXN0QWxwaGEgPCAkb3BhY2l0eSkgew0KICAgIAkJCQkJCSRhbHBoYSA9ICRvcGFjaXR5Ow0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhbHBoYSA+IDEpIHsNCiAgICAJCQkJCQkkYWxwaGEgPSAxOw0KICAgIAkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRvcGFjaXR5ID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0UmVkID0gcm91bmQoKCgkZGVzdFBpeGVsWydyZWQnXSAqICRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVzdEdyZWVuID0gcm91bmQoKCgkZGVzdFBpeGVsWydncmVlbiddICogJGRlc3RBbHBoYSAqICgxIC0gJG9wYWNpdHkpKSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXN0Qmx1ZSA9IHJvdW5kKCgoJGRlc3RQaXhlbFsnYmx1ZSddICogJGRlc3RBbHBoYSAqICgxIC0gJG9wYWNpdHkpKSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcmNSZWQgPSByb3VuZCgoKCRzcmNQaXhlbFsncmVkJ10gKiAkb3BhY2l0eSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3JjR3JlZW4gPSByb3VuZCgoKCRzcmNQaXhlbFsnZ3JlZW4nXSAqICRvcGFjaXR5KSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcmNCbHVlID0gcm91bmQoKCgkc3JjUGl4ZWxbJ2JsdWUnXSAqICRvcGFjaXR5KSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWQgPSByb3VuZCgoJGRlc3RSZWQgKyAkc3JjUmVkICApIC8gKCRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSArICRvcGFjaXR5KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyZWVuID0gcm91bmQoKCRkZXN0R3JlZW4gKyAkc3JjR3JlZW4pIC8gKCRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSArICRvcGFjaXR5KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsdWUgPSByb3VuZCgoJGRlc3RCbHVlICsgJHNyY0JsdWUgKSAvICgkZGVzdEFscGhhICogKDEgLSAkb3BhY2l0eSkgKyAkb3BhY2l0eSkpOw0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmVkICAgPiAyNTUpIHsNCiAgICAJCQkJCQkJJHJlZCAgID0gMjU1Ow0KICAgIAkJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGdyZWVuID4gMjU1KSB7DQogICAgCQkJCQkJCSRncmVlbiA9IDI1NTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgDQogICAgCQkJCQkJaWYgKCRibHVlICA+IDI1NSkgew0KICAgIAkJCQkJCQkkYmx1ZSAgPSAyNTU7DQogICAgCQkJCQkJfQ0KICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbHBoYSA9IHJvdW5kKCgxIC0gJGFscGhhKSAqIDEyNyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yID0gaW1hZ2VDb2xvckFsbG9jYXRlQWxwaGEoJGRlc3RJbWcsICRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTZXRQaXhlbCgkZGVzdEltZywgJHggKyAkZGVzdFgsICR5ICsgJGRlc3RZLCAkY29sb3IpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIE1lcmdlIHR3byBpbWFnZSB2YXINCiAgICAgKg0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkZGVzdGluYXRpb25JbWFnZQ0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc291cmNlSW1hZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZGVzdGluYXRpb25Qb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJGRlc3RpbmF0aW9uUG9zWQ0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzb3VyY2VQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJHNvdXJjZVBvc1kNCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlVHdvSW1hZ2VzKCYkZGVzdGluYXRpb25JbWFnZSwgJHNvdXJjZUltYWdlLCAkZGVzdGluYXRpb25Qb3NYID0gMCwgJGRlc3RpbmF0aW9uUG9zWSA9IDAsICRzb3VyY2VQb3NYID0gMCwgJHNvdXJjZVBvc1kgPSAwKQ0KICAgIHsNCiAgICAgICAgaW1hZ2VDb3B5KCRkZXN0aW5hdGlvbkltYWdlLCAkc291cmNlSW1hZ2UsICRkZXN0aW5hdGlvblBvc1gsICRkZXN0aW5hdGlvblBvc1ksICRzb3VyY2VQb3NYLCAkc291cmNlUG9zWSwgaW1hZ2VTWCgkc291cmNlSW1hZ2UpLCBpbWFnZVNZKCRzb3VyY2VJbWFnZSkpOw0KICAgIH0NCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Exception/ImageWorkshopBaseException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxFeGNlcHRpb247DQoNCi8qKg0KICogSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb24NCiAqIA0KICogVGhlIGluaGVyaXRlZCBleGNlcHRpb24gY2xhc3MNCiAqIA0KICogQGxpbmsgaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tDQogKiBAYXV0aG9yIEJqw7hybiBCw7hycmVzZW4gfCBTeWJpbyAoQ2zDqW1lbnQgR3VpbGxlbWFpbiAgLyBAU3liaW8wMSkNCiAqIEBsaWNlbnNlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UNCiAqIEBjb3B5cmlnaHQgQ2zDqW1lbnQgR3VpbGxlbWFpbg0KICovDQpjbGFzcyBJbWFnZVdvcmtzaG9wQmFzZUV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24NCnsNCiAgICAvKioNCiAgICAgKiBDb25zdHJ1Y3Rvcg0KICAgICAqIA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29kZQ0KICAgICAqIEBwYXJhbSBFeGNlcHRpb24gJHByZXZpb3VzDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRtZXNzYWdlLCAkY29kZSA9IDAsIFxFeGNlcHRpb24gJHByZXZpb3VzID0gbnVsbCkNCiAgICB7DQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRjb2RlLCAkcHJldmlvdXMpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBfX3RvU3RyaW5nIG1ldGhvZA0KICAgICAqDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpDQogICAgew0KICAgICAgICByZXR1cm4gX19DTEFTU19fLiI6IFt7JHRoaXMtPmNvZGV9XTogeyR0aGlzLT5tZXNzYWdlfVxuIjsNCiAgICB9DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/PHPImageWorkshop/Exception/ImageWorkshopException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcFxFeGNlcHRpb247DQoNCi8vdXNlIFBIUEltYWdlV29ya3Nob3BcRXhjZXB0aW9uXEltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uIGFzIEltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uOw0KDQovLyBJZiBubyBhdXRvbG9hZGVyLCB1bmNvbW1lbnQgdGhlc2UgbGluZXM6DQpyZXF1aXJlX29uY2UoX19ESVJfXy4nL0ltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uLnBocCcpOw0KDQovKioNCiAqIEltYWdlV29ya3Nob3BFeGNlcHRpb24NCiAqIA0KICogTWFuYWdlIEltYWdlV29ya3Nob3AgZXhjZXB0aW9ucw0KICogDQogKiBAbGluayBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20NCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlDQogKiBAY29weXJpZ2h0IENsw6ltZW50IEd1aWxsZW1haW4NCiAqLw0KY2xhc3MgSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbiBleHRlbmRzIEltYWdlV29ya3Nob3BCYXNlRXhjZXB0aW9uDQp7DQp9]]></data>
	</file>
	<file>
	  <filename>/lib/__class.___ImageWorkshop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLy9uYW1lc3BhY2UgUEhQSW1hZ2VXb3Jrc2hvcDsNCg0KLy91c2UgUEhQSW1hZ2VXb3Jrc2hvcFxDb3JlXEltYWdlV29ya3Nob3BMYXllciBhcyBJbWFnZVdvcmtzaG9wTGF5ZXI7DQovL3VzZSBQSFBJbWFnZVdvcmtzaG9wXENvcmVcSW1hZ2VXb3Jrc2hvcExpYiBhcyBJbWFnZVdvcmtzaG9wTGliOw0KLy91c2UgUEhQSW1hZ2VXb3Jrc2hvcFxFeGNlcHRpb25cSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbiBhcyBJbWFnZVdvcmtzaG9wRXhjZXB0aW9uOw0KDQovLyBJZiBubyBhdXRvbG9hZGVyLCB1bmNvbW1lbnQgdGhlc2UgbGluZXM6DQovL3JlcXVpcmVfb25jZShfX0RJUl9fLicvUEhQSW1hZ2VXb3Jrc2hvcC9Db3JlL0ltYWdlV29ya3Nob3BMYXllci5waHAnKTsNCi8vcmVxdWlyZV9vbmNlKF9fRElSX18uJy9QSFBJbWFnZVdvcmtzaG9wL0V4Y2VwdGlvbi9JbWFnZVdvcmtzaG9wRXhjZXB0aW9uLnBocCcpOw0KDQoNCi8qKg0KICogSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb24NCiAqIA0KICogVGhlIGluaGVyaXRlZCBleGNlcHRpb24gY2xhc3MNCiAqIA0KICogQGxpbmsgaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tDQogKiBAYXV0aG9yIEJqw7hybiBCw7hycmVzZW4gfCBTeWJpbyAoQ2zDqW1lbnQgR3VpbGxlbWFpbiAgLyBAU3liaW8wMSkNCiAqIEBsaWNlbnNlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UNCiAqIEBjb3B5cmlnaHQgQ2zDqW1lbnQgR3VpbGxlbWFpbg0KICovDQpjbGFzcyBJbWFnZVdvcmtzaG9wQmFzZUV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24NCnsNCiAgICAvKioNCiAgICAgKiBDb25zdHJ1Y3Rvcg0KICAgICAqIA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29kZQ0KICAgICAqIEBwYXJhbSBFeGNlcHRpb24gJHByZXZpb3VzDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRtZXNzYWdlLCAkY29kZSA9IDAsIFxFeGNlcHRpb24gJHByZXZpb3VzID0gbnVsbCkNCiAgICB7DQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRjb2RlLCAkcHJldmlvdXMpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBfX3RvU3RyaW5nIG1ldGhvZA0KICAgICAqDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpDQogICAgew0KICAgICAgICByZXR1cm4gX19DTEFTU19fLiI6IFt7JHRoaXMtPmNvZGV9XTogeyR0aGlzLT5tZXNzYWdlfVxuIjsNCiAgICB9DQp9DQoNCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wRXhjZXB0aW9uDQogKiANCiAqIE1hbmFnZSBJbWFnZVdvcmtzaG9wIGV4Y2VwdGlvbnMNCiAqIA0KICogQGxpbmsgaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tDQogKiBAYXV0aG9yIFN5YmlvIChDbMOpbWVudCBHdWlsbGVtYWluICAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BFeGNlcHRpb24gZXh0ZW5kcyBJbWFnZVdvcmtzaG9wQmFzZUV4Y2VwdGlvbg0Kew0KfQ0KDQoNCi8qKg0KICogSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uDQogKiANCiAqIE1hbmFnZSBJbWFnZVdvcmtzaG9wTGF5ZXIgZXhjZXB0aW9ucw0KICogDQogKiBAbGluayBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20NCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlDQogKiBAY29weXJpZ2h0IENsw6ltZW50IEd1aWxsZW1haW4NCiAqLw0KY2xhc3MgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uIGV4dGVuZHMgSW1hZ2VXb3Jrc2hvcEJhc2VFeGNlcHRpb24NCnsNCn0NCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wTGliRXhjZXB0aW9uDQogKiANCiAqIE1hbmFnZSBJbWFnZVdvcmtzaG9wTGliIGV4Y2VwdGlvbnMNCiAqIA0KICogQGxpbmsgaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tDQogKiBAYXV0aG9yIFN5YmlvIChDbMOpbWVudCBHdWlsbGVtYWluICAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BMaWJFeGNlcHRpb24gZXh0ZW5kcyBJbWFnZVdvcmtzaG9wQmFzZUV4Y2VwdGlvbg0Kew0KfQ0KDQoNCmNsYXNzIEltYWdlV29ya3Nob3BMaWINCnsNCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9GT05UX05PVF9GT1VORCA9IDM7DQogICAgDQogICAgLyoqDQogICAgICogQ2FsY3VsYXRlIHRoZSBsZWZ0IHRvcCBwb3NpdGlvbnMgb2YgYSBsYXllciBpbnNpZGUgYSBwYXJlbnQgbGF5ZXIgY29udGFpbmVyDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29udGFpbmVyV2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkY29udGFpbmVySGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVyV2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJIZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJQb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJQb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlUG9zaXRpb25zKCRjb250YWluZXJXaWR0aCwgJGNvbnRhaW5lckhlaWdodCwgJGxheWVyV2lkdGgsICRsYXllckhlaWdodCwgJGxheWVyUG9zaXRpb25YLCAkbGF5ZXJQb3NpdGlvblksICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICAkcG9zaXRpb24gPSBzdHJ0b2xvd2VyKCRwb3NpdGlvbik7DQoNCiAgICAgICAgaWYgKCRwb3NpdGlvbiA9PSAncnQnKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICRjb250YWluZXJXaWR0aCAtICRsYXllcldpZHRoIC0gJGxheWVyUG9zaXRpb25YOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gJ2xiJykgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0IC0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gJ3JiJykgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblggPSAkY29udGFpbmVyV2lkdGggLSAkbGF5ZXJXaWR0aCAtICRsYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQgLSAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAnbW0nKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAoKCRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAnbXQnKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAnbWInKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICgoJGNvbnRhaW5lcldpZHRoIC0gJGxheWVyV2lkdGgpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0IC0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgIH0gZWxzZWlmICgkcG9zaXRpb24gPT0gJ2xtJykgew0KDQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvblkgPSAoKCRjb250YWluZXJIZWlnaHQgLSAkbGF5ZXJIZWlnaHQpIC8gMikgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgfSBlbHNlaWYgKCRwb3NpdGlvbiA9PSAncm0nKSB7DQoNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICRjb250YWluZXJXaWR0aCAtICRsYXllcldpZHRoIC0gJGxheWVyUG9zaXRpb25YOw0KICAgICAgICAgICAgJGxheWVyUG9zaXRpb25ZID0gKCgkY29udGFpbmVySGVpZ2h0IC0gJGxheWVySGVpZ2h0KSAvIDIpICsgJGxheWVyUG9zaXRpb25ZOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGFycmF5KA0KICAgICAgICAgICAgJ3gnID0+ICRsYXllclBvc2l0aW9uWCwNCiAgICAgICAgICAgICd5JyA9PiAkbGF5ZXJQb3NpdGlvblksDQogICAgICAgICk7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIENvbnZlcnQgSGV4IGNvbG9yIHRvIFJHQiBjb2xvciBmb3JtYXQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleA0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29udmVydEhleFRvUkdCKCRoZXgpDQogICAgew0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnUicgPT4gKGludCkgYmFzZV9jb252ZXJ0KHN1YnN0cigkaGV4LCAwLCAyKSwgMTYsIDEwKSwNCiAgICAgICAgICAgICdHJyA9PiAoaW50KSBiYXNlX2NvbnZlcnQoc3Vic3RyKCRoZXgsIDIsIDIpLCAxNiwgMTApLA0KICAgICAgICAgICAgJ0InID0+IChpbnQpIGJhc2VfY29udmVydChzdWJzdHIoJGhleCwgNCwgMiksIDE2LCAxMCksDQogICAgICAgICk7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIEdlbmVyYXRlIGEgbmV3IGltYWdlIHJlc291cmNlIHZhcg0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJHdpZHRoDQogICAgICogQHBhcmFtIGludGVnZXIgJGhlaWdodA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbG9yDQogICAgICogQHBhcmFtIGludGVnZXIgJG9wYWNpdHkNCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlSW1hZ2UoJHdpZHRoID0gMTAwLCAkaGVpZ2h0ID0gMTAwLCAkY29sb3IgPSAnZmZmZmZmJywgJG9wYWNpdHkgPSAxMjcpDQogICAgew0KICAgICAgICAkUkdCQ29sb3JzID0gSW1hZ2VXb3Jrc2hvcExpYjo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQoNCiAgICAgICAgJGltYWdlID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHdpZHRoLCAkaGVpZ2h0KTsNCiAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJGltYWdlLCB0cnVlKTsNCiAgICAgICAgJGNvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJGltYWdlLCAkUkdCQ29sb3JzWydSJ10sICRSR0JDb2xvcnNbJ0cnXSwgJFJHQkNvbG9yc1snQiddLCAkb3BhY2l0eSk7DQogICAgICAgIGltYWdlZmlsbCgkaW1hZ2UsIDAsIDAsICRjb2xvcik7DQoNCiAgICAgICAgcmV0dXJuICRpbWFnZTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUmV0dXJuIGRpbWVuc2lvbiBvZiBhIHRleHQNCiAgICAgKg0KICAgICAqIEBwYXJhbSAkZm9udFNpemUNCiAgICAgKiBAcGFyYW0gJGZvbnRBbmdsZQ0KICAgICAqIEBwYXJhbSAkZm9udEZpbGUNCiAgICAgKiBAcGFyYW0gJHRleHQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkgb3IgYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VGV4dEJveERpbWVuc2lvbigkZm9udFNpemUsICRmb250QW5nbGUsICRmb250RmlsZSwgJHRleHQpDQogICAgew0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRmb250RmlsZSkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGliRXhjZXB0aW9uKCdDYW5cJ3QgZmluZCBhIGZvbnQgZmlsZSBhdCB0aGlzIHBhdGggOiAiJy4kZm9udEZpbGUuJyIuJywgc3RhdGljOjpFUlJPUl9GT05UX05PVF9GT1VORCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRib3ggPSBpbWFnZXR0ZmJib3goJGZvbnRTaXplLCAkZm9udEFuZ2xlLCAkZm9udEZpbGUsICR0ZXh0KTsNCg0KCQlpZiAoISRib3gpIHsNCg0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCiAgICAgICAgJG1pblggPSBtaW4oYXJyYXkoJGJveFswXSwgJGJveFsyXSwgJGJveFs0XSwgJGJveFs2XSkpOw0KICAgICAgICAkbWF4WCA9IG1heChhcnJheSgkYm94WzBdLCAkYm94WzJdLCAkYm94WzRdLCAkYm94WzZdKSk7DQogICAgICAgICRtaW5ZID0gbWluKGFycmF5KCRib3hbMV0sICRib3hbM10sICRib3hbNV0sICRib3hbN10pKTsNCiAgICAgICAgJG1heFkgPSBtYXgoYXJyYXkoJGJveFsxXSwgJGJveFszXSwgJGJveFs1XSwgJGJveFs3XSkpOw0KICAgICAgICAkd2lkdGggPSAoJG1heFggLSAkbWluWCk7DQogICAgICAgICRoZWlnaHQgPSAoJG1heFkgLSAkbWluWSk7DQogICAgICAgICRsZWZ0ID0gYWJzKCRtaW5YKSArICR3aWR0aDsNCiAgICAgICAgJHRvcCA9IGFicygkbWluWSkgKyAkaGVpZ2h0Ow0KDQogICAgICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgZXhhY3QgYm91bmRpbmcgYm94LCB3ZSB3cml0ZSB0aGUgdGV4dCBpbiBhIGxhcmdlIGltYWdlDQogICAgICAgICRpbWcgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHdpZHRoIDw8IDIsICRoZWlnaHQgPDwgMik7DQogICAgICAgICR3aGl0ZSA9IGltYWdlY29sb3JhbGxvY2F0ZSgkaW1nLCAyNTUsIDI1NSwgMjU1KTsNCiAgICAgICAgJGJsYWNrID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbWcsIDAsIDAsIDApOw0KICAgICAgICBpbWFnZWZpbGxlZHJlY3RhbmdsZSgkaW1nLCAwLCAwLCBpbWFnZXN4KCRpbWcpLCBpbWFnZXN5KCRpbWcpLCAkYmxhY2spOw0KDQogICAgICAgIC8vIGZvciBlbnN1cmUgdGhhdCB0aGUgdGV4dCBpcyBjb21wbGV0ZWx5IGluIHRoZSBpbWFnZQ0KICAgICAgICBpbWFnZXR0ZnRleHQoJGltZywgJGZvbnRTaXplLCAkZm9udEFuZ2xlLCAkbGVmdCwgJHRvcCwgJHdoaXRlLCAkZm9udEZpbGUsICR0ZXh0KTsNCg0KICAgICAgICAvLyBzdGFydCBzY2FubmluZyAoMD0+IGJsYWNrID0+IGVtcHR5KQ0KICAgICAgICAkcmxlZnQgPSAkdzQgPSAkd2lkdGg8PDI7DQogICAgICAgICRycmlnaHQgPSAwOw0KICAgICAgICAkcmJvdHRvbSA9IDA7DQogICAgICAgICRydG9wID0gJGg0ID0gJGhlaWdodDw8MjsNCg0KICAgICAgICBmb3IgKCR4ID0gMDsgJHggPCAkdzQ7ICR4KyspIHsNCg0KCQkJZm9yICgkeSA9IDA7ICR5IDwgJGg0OyAkeSsrKSB7DQoNCgkJCQlpZiAoaW1hZ2Vjb2xvcmF0KCRpbWcsICR4LCAkeSkpIHsNCg0KCQkJCQkkcmxlZnQgPSBtaW4oJHJsZWZ0LCAkeCk7DQoJCQkJCSRycmlnaHQgPSBtYXgoJHJyaWdodCwgJHgpOw0KCQkJCQkkcnRvcCA9IG1pbigkcnRvcCwgJHkpOw0KCQkJCQkkcmJvdHRvbSA9IG1heCgkcmJvdHRvbSwgJHkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQogICAgICAgIGltYWdlZGVzdHJveSgkaW1nKTsNCg0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnbGVmdCcgPT4gJGxlZnQgLSAkcmxlZnQsDQogICAgICAgICAgICAndG9wJyA9PiAkdG9wIC0gJHJ0b3AsDQogICAgICAgICAgICAnd2lkdGgnID0+ICRycmlnaHQgLSAkcmxlZnQgKyAxLA0KICAgICAgICAgICAgJ2hlaWdodCcgPT4gJHJib3R0b20gLSAkcnRvcCArIDEsDQogICAgICAgICk7DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIENvcHkgYW4gaW1hZ2Ugb24gYW5vdGhlciBvbmUgYW5kIGNvbnZlcnNlIHRyYW5zcGFyZW5jeQ0KICAgICAqDQogICAgICogQHBhcmFtIHJlc291cmNlICRkZXN0SW1nDQogICAgICogQHBhcmFtIHJlc291cmNlICRzcmNJbWcNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZGVzdFgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZGVzdFkNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc3JjWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzcmNZDQogICAgICogQHBhcmFtIGludGVnZXIgJHNyY1cNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc3JjSA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwY3QNCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGltYWdlQ29weU1lcmdlQWxwaGEoJiRkZXN0SW1nLCAmJHNyY0ltZywgJGRlc3RYLCAkZGVzdFksICRzcmNYLCAkc3JjWSwgJHNyY1csICRzcmNILCAkcGN0ID0gMCkNCiAgICB7DQogICAgICAgICRkZXN0WCA9IChpbnQpICRkZXN0WDsNCiAgICAgICAgJGRlc3RZID0gKGludCkgJGRlc3RZOw0KICAgICAgICAkc3JjWCA9IChpbnQpICRzcmNYOw0KICAgICAgICAkc3JjWSA9IChpbnQpICRzcmNZOw0KICAgICAgICAkc3JjVyA9IChpbnQpICRzcmNXOw0KICAgICAgICAkc3JjSCA9IChpbnQpICRzcmNIOw0KICAgICAgICAkcGN0ID0gKGludCkgJHBjdDsNCiAgICAgICAgJGRlc3RXID0gaW1hZ2VTWCgkZGVzdEltZyk7DQogICAgICAgICRkZXN0SCA9IGltYWdlU1koJGRlc3RJbWcpOw0KDQogICAgICAgIGZvciAoJHkgPSAwOyAkeSA8ICRzcmNIICsgJHNyY1k7ICR5KyspIHsNCg0KICAgICAgICAgICAgZm9yICgkeCA9IDA7ICR4IDwgJHNyY1cgKyAkc3JjWDsgJHgrKykgew0KDQogICAgICAgICAgICAgICAgaWYgKCR4ICsgJGRlc3RYID49IDAgJiYgJHggKyAkZGVzdFggPCAkZGVzdFcgJiYgJHggKyAkc3JjWCA+PSAwICYmICR4ICsgJHNyY1ggPCAkc3JjVyAmJiAkeSArICRkZXN0WSA+PSAwICYmICR5ICsgJGRlc3RZIDwgJGRlc3RIICYmICR5ICsgJHNyY1kgPj0gMCAmJiAkeSArICRzcmNZIDwgJHNyY0gpIHsNCg0KICAgICAgICAgICAgICAgICAgICAkZGVzdFBpeGVsID0gaW1hZ2VDb2xvcnNGb3JJbmRleCgkZGVzdEltZywgaW1hZ2VDb2xvcmF0KCRkZXN0SW1nLCAkeCArICRkZXN0WCwgJHkgKyAkZGVzdFkpKTsNCiAgICAgICAgICAgICAgICAgICAgJHNyY0ltZ0NvbG9yYXQgPSBpbWFnZUNvbG9yYXQoJHNyY0ltZywgJHggKyAkc3JjWCwgJHkgKyAkc3JjWSk7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICBpZiAoJHNyY0ltZ0NvbG9yYXQgPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgJHNyY1BpeGVsID0gaW1hZ2VDb2xvcnNGb3JJbmRleCgkc3JjSW1nLCAkc3JjSW1nQ29sb3JhdCk7DQogICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkc3JjQWxwaGEgPSAxIC0gKCRzcmNQaXhlbFsnYWxwaGEnXSAvIDEyNyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGVzdEFscGhhID0gMSAtICgkZGVzdFBpeGVsWydhbHBoYSddIC8gMTI3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRvcGFjaXR5ID0gJHNyY0FscGhhICogJHBjdCAvIDEwMDsNCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVzdEFscGhhID49ICRvcGFjaXR5KSB7DQogICAgCQkJCQkJJGFscGhhID0gJGRlc3RBbHBoYTsNCiAgICAJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVzdEFscGhhIDwgJG9wYWNpdHkpIHsNCiAgICAJCQkJCQkkYWxwaGEgPSAkb3BhY2l0eTsNCiAgICAJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWxwaGEgPiAxKSB7DQogICAgCQkJCQkJJGFscGhhID0gMTsNCiAgICAJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkb3BhY2l0eSA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVzdFJlZCA9IHJvdW5kKCgoJGRlc3RQaXhlbFsncmVkJ10gKiAkZGVzdEFscGhhICogKDEgLSAkb3BhY2l0eSkpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlc3RHcmVlbiA9IHJvdW5kKCgoJGRlc3RQaXhlbFsnZ3JlZW4nXSAqICRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVzdEJsdWUgPSByb3VuZCgoKCRkZXN0UGl4ZWxbJ2JsdWUnXSAqICRkZXN0QWxwaGEgKiAoMSAtICRvcGFjaXR5KSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3JjUmVkID0gcm91bmQoKCgkc3JjUGl4ZWxbJ3JlZCddICogJG9wYWNpdHkpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNyY0dyZWVuID0gcm91bmQoKCgkc3JjUGl4ZWxbJ2dyZWVuJ10gKiAkb3BhY2l0eSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3JjQmx1ZSA9IHJvdW5kKCgoJHNyY1BpeGVsWydibHVlJ10gKiAkb3BhY2l0eSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVkID0gcm91bmQoKCRkZXN0UmVkICsgJHNyY1JlZCAgKSAvICgkZGVzdEFscGhhICogKDEgLSAkb3BhY2l0eSkgKyAkb3BhY2l0eSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRncmVlbiA9IHJvdW5kKCgkZGVzdEdyZWVuICsgJHNyY0dyZWVuKSAvICgkZGVzdEFscGhhICogKDEgLSAkb3BhY2l0eSkgKyAkb3BhY2l0eSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHVlID0gcm91bmQoKCRkZXN0Qmx1ZSArICRzcmNCbHVlICkgLyAoJGRlc3RBbHBoYSAqICgxIC0gJG9wYWNpdHkpICsgJG9wYWNpdHkpKTsNCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZCAgID4gMjU1KSB7DQogICAgCQkJCQkJCSRyZWQgICA9IDI1NTsNCiAgICAJCQkJCQl9DQogICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRncmVlbiA+IDI1NSkgew0KICAgIAkJCQkJCQkkZ3JlZW4gPSAyNTU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgIA0KICAgIAkJCQkJCWlmICgkYmx1ZSAgPiAyNTUpIHsNCiAgICAJCQkJCQkJJGJsdWUgID0gMjU1Ow0KICAgIAkJCQkJCX0NCiAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxwaGEgPSByb3VuZCgoMSAtICRhbHBoYSkgKiAxMjcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvciA9IGltYWdlQ29sb3JBbGxvY2F0ZUFscGhhKCRkZXN0SW1nLCAkcmVkLCAkZ3JlZW4sICRibHVlLCAkYWxwaGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2V0UGl4ZWwoJGRlc3RJbWcsICR4ICsgJGRlc3RYLCAkeSArICRkZXN0WSwgJGNvbG9yKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBNZXJnZSB0d28gaW1hZ2UgdmFyDQogICAgICoNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJGRlc3RpbmF0aW9uSW1hZ2UNCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHNvdXJjZUltYWdlDQogICAgICogQHBhcmFtIGludGVnZXIgJGRlc3RpbmF0aW9uUG9zWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRkZXN0aW5hdGlvblBvc1kNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc291cmNlUG9zWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzb3VyY2VQb3NZDQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZXJnZVR3b0ltYWdlcygmJGRlc3RpbmF0aW9uSW1hZ2UsICRzb3VyY2VJbWFnZSwgJGRlc3RpbmF0aW9uUG9zWCA9IDAsICRkZXN0aW5hdGlvblBvc1kgPSAwLCAkc291cmNlUG9zWCA9IDAsICRzb3VyY2VQb3NZID0gMCkNCiAgICB7DQogICAgICAgIGltYWdlQ29weSgkZGVzdGluYXRpb25JbWFnZSwgJHNvdXJjZUltYWdlLCAkZGVzdGluYXRpb25Qb3NYLCAkZGVzdGluYXRpb25Qb3NZLCAkc291cmNlUG9zWCwgJHNvdXJjZVBvc1ksIGltYWdlU1goJHNvdXJjZUltYWdlKSwgaW1hZ2VTWSgkc291cmNlSW1hZ2UpKTsNCiAgICB9DQp9DQoNCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wTGF5ZXIgY2xhc3MNCiAqDQogKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsYXllciB0aGF0IGNvbnRhaW5zIGEgYmFja2dyb3VuZCBpbWFnZSBhbmQgY2FuIGJlIGVkaXRlZA0KICoNCiAqIEBsaW5rIGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbQ0KICogQGF1dGhvciBTeWJpbyAoQ2zDqW1lbnQgR3VpbGxlbWFpbiAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3BMYXllcg0Kew0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgLy8gUHJvcGVydGllcw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIHdpZHRoDQogICAgICoNCiAgICAgKiBXaWR0aCBvZiB0aGUgZ3JvdXAgbW9kZWwNCiAgICAgKiBEZWZhdWx0OiA4MDANCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJHdpZHRoOw0KDQogICAgLyoqDQogICAgICogQHZhciBoZWlnaHQNCiAgICAgKg0KICAgICAqIEhlaWdodCBvZiB0aGUgZ3JvdXAgbW9kZWwNCiAgICAgKiBEZWZhdWx0OiA2MDANCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGhlaWdodDsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgbGF5ZXJzDQogICAgICoNCiAgICAgKiBMYXllcnMgKGFuZCBncm91cHMpDQogICAgICovDQogICAgcHVibGljICRsYXllcnM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGxheWVyTGV2ZWxzDQogICAgICoNCiAgICAgKiBMZXZlbHMgb2YgdGhlIHN1YmxheWVycyBpbiB0aGUgc3RhY2sNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgJGxheWVyTGV2ZWxzOw0KDQogICAgLyoqDQogICAgICogQHZhciBsYXllclBvc2l0aW9ucw0KICAgICAqDQogICAgICogUG9zaXRpb25zICh4IGFuZCB5KSBvZiB0aGUgc3VibGF5ZXJzIGluIHRoZSBzdGFjaw0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkbGF5ZXJQb3NpdGlvbnM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGxhc3RMYXllcklkDQogICAgICoNCiAgICAgKiBJZCBvZiB0aGUgbGFzdCBpbmRleGVkIHN1YmxheWVyIGluIHRoZSBzdGFjaw0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkbGFzdExheWVySWQ7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGhpZ2hlc3RMYXllckxldmVsDQogICAgICoNCiAgICAgKiBUaGUgaGlnaGVzdCBzdWJsYXllciBsZXZlbA0KICAgICAqLw0KICAgIHByb3RlY3RlZCAkaGlnaGVzdExheWVyTGV2ZWw7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGltYWdlDQogICAgICoNCiAgICAgKiBCYWNrZ3JvdW5kIEltYWdlDQogICAgICovDQogICAgcHJvdGVjdGVkICRpbWFnZTsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIHN0cmluZw0KICAgICAqLw0KICAgIGNvbnN0IFVOSVRfUElYRUwgPSAncGl4ZWwnOw0KICAgIA0KICAgIC8qKg0KICAgICAqIEB2YXIgc3RyaW5nDQogICAgICovICAgIA0KICAgIGNvbnN0IFVOSVRfUEVSQ0VOVCA9ICdwZXJjZW50JzsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9HRF9OT1RfSU5TVEFMTEVEID0gMTsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9QSFBfSU1BR0VfVkFSX05PVF9VU0VEID0gMjsNCiAgICANCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9GT05UX05PVF9GT1VORCA9IDM7DQogICAgDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyDQogICAgICovDQogICAgY29uc3QgTUVUSE9EX0RFUFJFQ0FURUQgPSA0Ow0KICAgIA0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgLy8gTWV0aG9kcw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLy8gTWFnaWNhbHMNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBDb25zdHJ1Y3Rvcg0KICAgICAqDQogICAgICogQHBhcmFtIFxyZXNvdXJjZSAkaW1hZ2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdnZCcpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdQSFBJbWFnZVdvcmtzaG9wIHJlcXVpcmVzIHRoZSBHRCBleHRlbnNpb24gdG8gYmUgbG9hZGVkLicsIHN0YXRpYzo6RVJST1JfR0RfTk9UX0lOU1RBTExFRCk7DQogICAgICAgIH0NCiAgICAJDQogICAgICAgIGlmIChnZXR0eXBlKCRpbWFnZSkgIT0gJ3Jlc291cmNlJyAmJiBnZXR0eXBlKCRpbWFnZSkgIT0gJ1xyZXNvdXJjZScpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ1lvdSBtdXN0IGdpdmUgYSBwaHAgaW1hZ2UgdmFyIHRvIGluaXRpYWxpemUgYSBsYXllci4nLCBzdGF0aWM6OkVSUk9SX1BIUF9JTUFHRV9WQVJfTk9UX1VTRUQpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPndpZHRoID0gaW1hZ2VzeCgkaW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gaW1hZ2VzeSgkaW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkaW1hZ2U7DQogICAgICAgICR0aGlzLT5sYXllcnMgPSAkdGhpcy0+bGF5ZXJMZXZlbHMgPSAkdGhpcy0+bGF5ZXJQb3NpdGlvbnMgPSBhcnJheSgpOw0KICAgICAgICAkdGhpcy0+Y2xlYXJTdGFjaygpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENsb25lIG1ldGhvZDogdXNlIGl0IGlmIHlvdSB3YW50IHRvIHJldXNlIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agb2JqZWN0IGluIGFub3RoZXIgdmFyaWFibGUNCiAgICAgKiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGltZyByZXNvdXJjZSB2YXIgcmVmZXJlbmNlcyBhbGwgdGhlIHNhbWUgaW1hZ2UgaW4gUEhQLg0KICAgICAqIEV4YW1wbGU6ICRiID0gY2xvbmUgJGE7IChuZXZlciBkbyAkYiA9ICRhOykNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JlYXRlTmV3VmFyRnJvbUJhY2tncm91bmRJbWFnZSgpOw0KICAgIH0NCiAgICANCiAgICAvLyBTdXBlcmltcG9zZSBhIHN1YmxheWVyDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogQWRkIGFuIGV4aXN0aW5nIEltYWdlV29ya3Nob3Agc3VibGF5ZXIgYW5kIHNldCBpdCBpbiB0aGUgc3RhY2sgYXQgYSBnaXZlbiBsZXZlbA0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgaW4gdGhlIHN0YWNrIGFuZCBpdHMgY29ycmVjdGVkIGxldmVsOg0KICAgICAqIGFycmF5KCJsYXllckxldmVsIiA9PiBpbnRlZ2VyLCAiaWQiID0+IGludGVnZXIpDQogICAgICoNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllckxldmVsDQogICAgICogQHBhcmFtIEltYWdlV29ya3Nob3AgJGxheWVyDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRMYXllcigkbGF5ZXJMZXZlbCwgJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoJGxheWVyTGV2ZWwsICRsYXllciwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHBvc2l0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYW4gZXhpc3RpbmcgSW1hZ2VXb3Jrc2hvcCBzdWJsYXllciBhbmQgc2V0IGl0IGluIHRoZSBzdGFjayBhdCB0aGUgaGlnaGVzdCBsZXZlbA0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgaW4gdGhlIHN0YWNrIGFuZCB0aGUgaGlnaGVzdCBsZXZlbDoNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcCAkbGF5ZXINCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGFkZExheWVyT25Ub3AoJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsICsgMSwgJGxheWVyLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZCBhbiBleGlzdGluZyBJbWFnZVdvcmtzaG9wIHN1YmxheWVyIGFuZCBzZXQgaXQgaW4gdGhlIHN0YWNrIGF0IGxldmVsIDENCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgZ2VuZXJhdGVkIHN1YmxheWVyIGlkIGluIHRoZSBzdGFjayBhbmQgbGV2ZWwgMToNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcCAkbGF5ZXINCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGFkZExheWVyQmVsb3coJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmluZGV4TGF5ZXIoMSwgJGxheWVyLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCiAgICANCiAgICAvLyBNb3ZlIGEgc3VibGF5ZXIgaW5zaWRlIHRoZSBzdGFjaw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KICAgICAqIE1vdmUgYSBzdWJsYXllciBvbiB0aGUgdG9wIG9mIGEgZ3JvdXAgc3RhY2sNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEByZXR1cm4gbWl4ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZVRvcCgkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bW92ZVRvKCRsYXllcklkLCAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwsIGZhbHNlKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNb3ZlIGEgc3VibGF5ZXIgdG8gdGhlIGxldmVsIDEgb2YgYSBncm91cCBzdGFjaw0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcyBvciBmYWxzZSBvdGhlcndpc2UNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogQHBhcmFtIGludGVnZXIgJGxldmVsDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVCb3R0b20oJGxheWVySWQpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgMSwgdHJ1ZSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZSBhIHN1YmxheWVyIHRvIHRoZSBsZXZlbCAkbGV2ZWwgb2YgYSBncm91cCBzdGFjaw0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcyBvciBmYWxzZSBpZiBsYXllciBpc24ndCBmb3VuZA0KICAgICAqDQogICAgICogU2V0ICRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIgdHJ1ZSBpZiB5b3Ugd2FudCB0byBtb3ZlIHRoZSBzdWJsYXllciB1bmRlciB0aGUgb3RoZXIgc3VibGF5ZXIgYXQgdGhlIHRhcmdldGVkIGxldmVsLA0KICAgICAqIG9yIGZhbHNlIHRvIGluc2VydCBpdCBvbiB0aGUgdG9wIG9mIHRoZSBvdGhlciBzdWJsYXllciBhdCB0aGUgdGFyZ2V0ZWQgbGV2ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogQHBhcmFtIGludGVnZXIgJGxldmVsDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oJGxheWVySWQsICRsZXZlbCwgJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllciA9IHRydWUpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHN0YWNrDQogICAgICAgIGlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7DQoNCiAgICAgICAgICAgICRsYXllck9sZExldmVsID0gJHRoaXMtPmdldExheWVyTGV2ZWwoJGxheWVySWQpOw0KDQogICAgICAgICAgICBpZiAoJGxldmVsIDwgMSkgew0KICAgICAgICAgICAgICAgICRsZXZlbCA9IDE7DQogICAgICAgICAgICAgICAgJGluc2VydFVuZGVyVGFyZ2V0ZWRMYXllciA9IHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICgkbGV2ZWwgPiAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwpIHsNCg0KICAgICAgICAgICAgICAgICRsZXZlbCA9ICR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbDsNCiAgICAgICAgICAgICAgICAkaW5zZXJ0VW5kZXJUYXJnZXRlZExheWVyID0gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIE5vdCB0aGUgc2FtZSBsZXZlbCB0aGFuIHRoZSBjdXJyZW50IGxldmVsDQogICAgICAgICAgICBpZiAoJGxheWVyT2xkTGV2ZWwgIT0gJGxldmVsKSB7DQoNCiAgICAgICAgICAgICAgICAkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyID0gJGlzVW5kZXJBbmROZXdMZXZlbExvd2VyID0gJGlzT25Ub3BBbmROZXdMZXZlbEhpZ2hlciA9ICRpc09uVG9wQW5kTmV3TGV2ZWxMb3dlciA9IGZhbHNlOw0KDQogICAgICAgICAgICAgICAgaWYgKCRpbnNlcnRVbmRlclRhcmdldGVkTGF5ZXIpIHsgLy8gVW5kZXIgbGV2ZWwNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJGxldmVsID4gJGxheWVyT2xkTGV2ZWwpIHsgLy8gbmV3IGxldmVsIGhpZ2hlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlID0gJGxheWVyT2xkTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RvcExvb3BXaGVuU21hbGxlclRoYW4gPSAkbGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyID0gdHJ1ZTsNCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBuZXcgbGV2ZWwgbG93ZXINCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGluY3JlbWVudG9yU3RhcnRpbmdWYWx1ZSA9ICRsZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbiA9ICRsYXllck9sZExldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGlzVW5kZXJBbmROZXdMZXZlbExvd2VyID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gb24gdGhlIHRvcA0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkbGV2ZWwgPiAkbGF5ZXJPbGRMZXZlbCkgeyAvLyBuZXcgbGV2ZWwgaGlnaGVyDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbmNyZW1lbnRvclN0YXJ0aW5nVmFsdWUgPSAkbGF5ZXJPbGRMZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbiA9ICRsZXZlbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpc09uVG9wQW5kTmV3TGV2ZWxIaWdoZXIgPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG5ldyBsZXZlbCBsb3dlcg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlID0gJGxldmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3BMb29wV2hlblNtYWxsZXJUaGFuID0gJGxheWVyT2xkTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgICAgICAkaXNPblRvcEFuZE5ld0xldmVsTG93ZXIgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgICAgICAgICAkbGF5ZXJMZXZlbHNUbXAgPSAkdGhpcy0+bGF5ZXJMZXZlbHM7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGlzT25Ub3BBbmROZXdMZXZlbExvd2VyKSB7DQogICAgICAgICAgICAgICAgICAgICRsZXZlbCsrOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoJGkgPSAkaW5jcmVtZW50b3JTdGFydGluZ1ZhbHVlOyAkaSA8ICRzdG9wTG9vcFdoZW5TbWFsbGVyVGhhbjsgJGkrKykgew0KDQogICAgICAgICAgICAgICAgICAgIGlmICgkaXNVbmRlckFuZE5ld0xldmVsSGlnaGVyIHx8ICRpc09uVG9wQW5kTmV3TGV2ZWxIaWdoZXIpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRpXSA9ICRsYXllckxldmVsc1RtcFskaSArIDFdOw0KDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skaSArIDFdID0gJGxheWVyTGV2ZWxzVG1wWyRpXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHVuc2V0KCRsYXllckxldmVsc1RtcCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGlzVW5kZXJBbmROZXdMZXZlbEhpZ2hlcikgew0KICAgICAgICAgICAgICAgICAgICAkbGV2ZWwtLTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJMZXZlbHNbJGxldmVsXSA9ICRsYXllcklkOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuICRsZXZlbDsNCg0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJGxldmVsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIE1vdmUgdXAgYSBzdWJsYXllciBpbiB0aGUgc3RhY2sgKGxldmVsICsxKQ0KICAgICAqIFJldHVybiBuZXcgc3VibGF5ZXIgbGV2ZWwgaWYgc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVXAoJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICAgICAgJGxheWVyT2xkTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgJGxheWVyT2xkTGV2ZWwgKyAxLCBmYWxzZSk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZSBkb3duIGEgc3VibGF5ZXIgaW4gdGhlIHN0YWNrIChsZXZlbCAtMSkNCiAgICAgKiBSZXR1cm4gbmV3IHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gbWl4ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZURvd24oJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICAgICAgJGxheWVyT2xkTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm1vdmVUbygkbGF5ZXJJZCwgJGxheWVyT2xkTGV2ZWwgLSAxLCB0cnVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLy8gTWVyZ2UgbGF5ZXJzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogTWVyZ2UgYSBzdWJsYXllciB3aXRoIGFub3RoZXIgc3VibGF5ZXIgYmVsb3cgaXQgaW4gdGhlIHN0YWNrDQogICAgICogTm90ZTogdGhlIHJlc3VsdCBsYXllciB3aWxsIGNvbnNlcnZlIHRoZSBnaXZlbiBpZA0KICAgICAqIFJldHVybiB0cnVlIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQgb3IgZG9lc24ndCBoYXZlIGEgbGF5ZXIgdW5kZXIgaXQgaW4gdGhlIHN0YWNrDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sZWFuDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlRG93bigkbGF5ZXJJZCkNCiAgICB7DQogICAgICAgIC8vIGlmIHRoZSBsYXllciBleGlzdHMgaW4gZG9jdW1lbnQNCiAgICAgICAgaWYgKCR0aGlzLT5pc0xheWVySW5JbmRleCgkbGF5ZXJJZCkpIHsNCg0KICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQogICAgICAgICAgICAkbGF5ZXJQb3NpdGlvbnMgPSAkdGhpcy0+Z2V0TGF5ZXJQb3NpdGlvbnMoJGxheWVySWQpOw0KICAgICAgICAgICAgJGxheWVyID0gJHRoaXMtPmdldExheWVyKCRsYXllcklkKTsNCiAgICAgICAgICAgICRsYXllcldpZHRoID0gJGxheWVyLT5nZXRXaWR0aCgpOw0KICAgICAgICAgICAgJGxheWVySGVpZ2h0ID0gJGxheWVyLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWCA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXTsNCiAgICAgICAgICAgICRsYXllclBvc2l0aW9uWSA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXTsNCg0KICAgICAgICAgICAgaWYgKCRsYXllckxldmVsID4gMSkgew0KDQogICAgICAgICAgICAgICAgJHVuZGVyTGF5ZXJJZCA9ICR0aGlzLT5sYXllckxldmVsc1skbGF5ZXJMZXZlbCAtIDFdOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyID0gJHRoaXMtPmdldExheWVyKCR1bmRlckxheWVySWQpOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyV2lkdGggPSAkdW5kZXJMYXllci0+Z2V0V2lkdGgoKTsNCiAgICAgICAgICAgICAgICAkdW5kZXJMYXllckhlaWdodCA9ICR1bmRlckxheWVyLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICAgICAkdW5kZXJMYXllclBvc2l0aW9uWCA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skdW5kZXJMYXllcklkXVsneCddOw0KICAgICAgICAgICAgICAgICR1bmRlckxheWVyUG9zaXRpb25ZID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyR1bmRlckxheWVySWRdWyd5J107DQoNCiAgICAgICAgICAgICAgICAkdG90YWxXaWR0aExheWVyID0gJGxheWVyV2lkdGggKyAkbGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgJHRvdGFsSGVpZ2h0TGF5ZXIgPSAkbGF5ZXJIZWlnaHQgKyAkbGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgICAgICAgICAkdG90YWxXaWR0aFVuZGVyTGF5ZXIgPSAkdW5kZXJMYXllcldpZHRoICsgJHVuZGVyTGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgJHRvdGFsSGVpZ2h0VW5kZXJMYXllciA9ICR1bmRlckxheWVySGVpZ2h0ICsgJHVuZGVyTGF5ZXJQb3NpdGlvblk7DQoNCiAgICAgICAgICAgICAgICAkbWluTGF5ZXJQb3NpdGlvblggPSAkbGF5ZXJQb3NpdGlvblg7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGxheWVyUG9zaXRpb25YID4gJHVuZGVyTGF5ZXJQb3NpdGlvblgpIHsNCiAgICAgICAgICAgICAgICAgICAgJG1pbkxheWVyUG9zaXRpb25YID0gJHVuZGVyTGF5ZXJQb3NpdGlvblg7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJG1pbkxheWVyUG9zaXRpb25ZID0gJGxheWVyUG9zaXRpb25ZOw0KDQogICAgICAgICAgICAgICAgaWYgKCRsYXllclBvc2l0aW9uWSA+ICR1bmRlckxheWVyUG9zaXRpb25ZKSB7DQogICAgICAgICAgICAgICAgICAgICRtaW5MYXllclBvc2l0aW9uWSA9ICR1bmRlckxheWVyUG9zaXRpb25ZOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICgkdG90YWxXaWR0aExheWVyID4gJHRvdGFsV2lkdGhVbmRlckxheWVyKSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcFdpZHRoID0gJHRvdGFsV2lkdGhMYXllciAtICRtaW5MYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkbGF5ZXJUbXBXaWR0aCA9ICR0b3RhbFdpZHRoVW5kZXJMYXllciAtICRtaW5MYXllclBvc2l0aW9uWDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoJHRvdGFsSGVpZ2h0TGF5ZXIgPiAkdG90YWxIZWlnaHRVbmRlckxheWVyKSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcEhlaWdodCA9ICR0b3RhbEhlaWdodExheWVyIC0gJG1pbkxheWVyUG9zaXRpb25ZOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICRsYXllclRtcEhlaWdodCA9ICR0b3RhbEhlaWdodFVuZGVyTGF5ZXIgLSAkbWluTGF5ZXJQb3NpdGlvblk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wID0gSW1hZ2VXb3Jrc2hvcDo6aW5pdFZpcmdpbkxheWVyKCRsYXllclRtcFdpZHRoLCAkbGF5ZXJUbXBIZWlnaHQpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkdW5kZXJMYXllciwgJHVuZGVyTGF5ZXJQb3NpdGlvblggLSAkbWluTGF5ZXJQb3NpdGlvblgsICR1bmRlckxheWVyUG9zaXRpb25ZIC0gJG1pbkxheWVyUG9zaXRpb25ZKTsNCiAgICAgICAgICAgICAgICAkbGF5ZXJUbXAtPmFkZExheWVyKDIsICRsYXllciwgJGxheWVyUG9zaXRpb25YIC0gJG1pbkxheWVyUG9zaXRpb25YLCAkbGF5ZXJQb3NpdGlvblkgLSAkbWluTGF5ZXJQb3NpdGlvblkpOw0KDQogICAgICAgICAgICAgICAgLy8gVXBkYXRlIGxheWVycw0KICAgICAgICAgICAgICAgICRsYXllclRtcC0+bWVyZ2VBbGwoKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJzWyR1bmRlckxheWVySWRdID0gY2xvbmUgJGxheWVyVG1wOw0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkdW5kZXJMYXllcklkLCAkbWluTGF5ZXJQb3NpdGlvblgsICRtaW5MYXllclBvc2l0aW9uWCk7DQoNCiAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAkbGF5ZXJUbXAgPSBJbWFnZVdvcmtzaG9wOjppbml0RnJvbVJlc291cmNlVmFyKCR0aGlzLT5pbWFnZSk7DQogICAgICAgICAgICAgICAgJGxheWVyVG1wLT5hZGRMYXllcigxLCAkbGF5ZXIsICRsYXllclBvc2l0aW9uWCwgJGxheWVyUG9zaXRpb25ZKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0UmVzdWx0KCk7IC8vIFVwZGF0ZSBiYWNrZ3JvdW5kIGltYWdlDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHVuc2V0KCRsYXllclRtcCk7DQogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlKCRsYXllcklkKTsgLy8gUmVtb3ZlIHRoZSBtZXJnZWQgbGF5ZXIgZnJvbSB0aGUgc3RhY2sNCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBNZXJnZSBzdWJsYXllcnMgaW4gdGhlIHN0YWNrIG9uIHRoZSBsYXllciBiYWNrZ3JvdW5kDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG1lcmdlQWxsKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5pbWFnZSA9ICR0aGlzLT5nZXRSZXN1bHQoKTsNCiAgICAgICAgJHRoaXMtPmNsZWFyU3RhY2soKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUGFzdGUgYW4gaW1hZ2Ugb24gdGhlIGxheWVyDQogICAgICogWW91IGNhbiBzcGVjaWZ5IHRoZSBwb3NpdGlvbiBsZWZ0IChpbiBwaXhlbHMpIGFuZCB0aGUgcG9zaXRpb24gdG9wIChpbiBwaXhlbHMpIG9mIHRoZSBhZGRlZCBpbWFnZSByZWxhdGl2ZXMgdG8gdGhlIGxheWVyDQogICAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIHNldCBhdCAwIGFuZCAwDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0IFVzZSBvbmUgb2YgYFVOSVRfKmAgY29uc3RhbnRzLCAiVU5JVF9QSVhFTCIgYnkgZGVmYXVsdA0KICAgICAqIEBwYXJhbSByZXNvdXJjZSAkaW1hZ2UNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXN0ZUltYWdlKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJGltYWdlLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDApDQogICAgew0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQoNCiAgICAgICAgICAgICRwb3NpdGlvblggPSByb3VuZCgoJHBvc2l0aW9uWCAvIDEwMCkgKiAkdGhpcy0+d2lkdGgpOw0KICAgICAgICAgICAgJHBvc2l0aW9uWSA9IHJvdW5kKCgkcG9zaXRpb25ZIC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgaW1hZ2Vjb3B5KCR0aGlzLT5pbWFnZSwgJGltYWdlLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAwLCAwLCAkaW1hZ2UtPmdldFdpZHRoKCksICRpbWFnZS0+Z2V0SGVpZ2h0KCkpOw0KICAgIH0NCiAgICANCiAgICAvLyBDaGFuZ2Ugc3VibGF5ZXIgcG9zaXRpb25zDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogQ2hhbmdlIHRoZSBwb3NpdGlvbiBvZiBhIHN1YmxheWVyIGZvciBuZXcgcG9zaXRpb25zDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld1Bvc1kNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld1Bvc1ggPSBudWxsLCAkbmV3UG9zWSA9IG51bGwpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJG5ld1Bvc1ggIT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd4J10gPSAkbmV3UG9zWDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKCRuZXdQb3NZICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneSddID0gJG5ld1Bvc1k7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBBcHBseSBhIHRyYW5zbGF0aW9uIG9uIGEgc3VibGF5ZXIgdGhhdCBjaGFuZ2UgaXRzIHBvc2l0aW9ucw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkYWRkZWRQb3NYDQogICAgICogQHBhcmFtIGludGVnZXIgJGFkZGVkUG9zWQ0KICAgICAqDQogICAgICogQHJldHVybiBtaXhlZCAoYXJyYXkgb2YgbmV3IHBvc2l0aW9ucyBvciBmYWxzZSBpZiBmYWlsKQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBseVRyYW5zbGF0aW9uKCRsYXllcklkLCAkYWRkZWRQb3NYID0gbnVsbCwgJGFkZGVkUG9zWSA9IG51bGwpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgc3VibGF5ZXIgZXhpc3RzIGluIHRoZSBzdGFjaw0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJGFkZGVkUG9zWCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXSArPSAkYWRkZWRQb3NYOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoJGFkZGVkUG9zWSAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSArPSAkYWRkZWRQb3NZOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLy8gUmVtb3Zpbmcgc3VibGF5ZXJzDQogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgDQogICAgLyoqDQogICAgICogRGVsZXRlIGEgbGF5ZXIgKHJldHVybiB0cnVlIGlmIHN1Y2Nlc3MsIGZhbHNlIGlmIG5vIHN1YmxheWVyIGlzIGZvdW5kKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gYm9vbGVhbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJGxheWVySWQpDQogICAgew0KICAgICAgICAvLyBpZiB0aGUgbGF5ZXIgZXhpc3RzIGluIGRvY3VtZW50DQogICAgICAgIGlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7DQoNCiAgICAgICAgICAgICRsYXllclRvRGVsZXRlTGV2ZWwgPSAkdGhpcy0+Z2V0TGF5ZXJMZXZlbCgkbGF5ZXJJZCk7DQoNCiAgICAgICAgICAgIC8vIGRlbGV0ZQ0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmRlbGV0ZSgpOw0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0pOw0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllclRvRGVsZXRlTGV2ZWxdKTsNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF0pOw0KDQogICAgICAgICAgICAvLyBPbmUgb3IgcGx1cmFsIGxheWVycyBhcmUgc3ViIG9mIHRoZSBkZWxldGVkIGxheWVyDQogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygoJGxheWVyVG9EZWxldGVMZXZlbCArIDEpLCAkdGhpcy0+bGF5ZXJMZXZlbHMpKSB7DQoNCiAgICAgICAgICAgICAgICBrc29ydCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KDQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWxzVG1wID0gJHRoaXMtPmxheWVyTGV2ZWxzOw0KDQogICAgICAgICAgICAgICAgJG1heE9sZGVzdExldmVsID0gMTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGF5ZXJMZXZlbHNUbXAgYXMgJGxldmVsVG1wID0+ICRsYXllcklkVG1wKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRsZXZlbFRtcCA+ICRsYXllclRvRGVsZXRlTGV2ZWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1soJGxldmVsVG1wIC0gMSldID0gJGxheWVySWRUbXA7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAkbWF4T2xkZXN0TGV2ZWwrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdW5zZXQoJGxheWVyTGV2ZWxzVG1wKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJMZXZlbHNbJG1heE9sZGVzdExldmVsXSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbC0tOw0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogUmVzZXQgdGhlIGxheWVyIHN0YWNrDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU3RhY2soKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVycyBhcyAkbGF5ZXIpIHsNCiAgICAgICAgICAgICRsYXllci0+ZGVsZXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyUG9zaXRpb25zKTsNCg0KICAgICAgICAkdGhpcy0+bGFzdExheWVySWQgPSAwOw0KICAgICAgICAkdGhpcy0+bGF5ZXJzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPmhpZ2hlc3RMYXllckxldmVsID0gMDsNCiAgICB9DQogICAgDQogICAgLy8gUGVyZm9ybSBhbiBhY3Rpb24NCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdXaWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdIZWlnaHQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqIA0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqIA0KICAgICAqICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbiBjYW4gYmUgaWdub3JlZCB1bmxlc3MgeW91IGNob29zZSBhIG5ldyB3aWR0aCBBTkQgYSBuZXcgaGVpZ2h0IEFORCB0byBjb25zZXJ2ZSBwcm9wb3J0aW9uLg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVJblBpeGVsKCRuZXdXaWR0aCA9IG51bGwsICRuZXdIZWlnaHQgPSBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uID0gZmFsc2UsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gJ01NJykNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemUoc2VsZjo6VU5JVF9QSVhFTCwgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgc3BlY2lmeWluZyBhIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplSW5QZXJjZW50KCRwZXJjZW50V2lkdGggPSBudWxsLCAkcGVyY2VudEhlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZShzZWxmOjpVTklUX1BFUkNFTlQsICRwZXJjZW50V2lkdGgsICRwZXJjZW50SGVpZ2h0LCAkY29udmVyc2VQcm9wb3J0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24pOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1bml0IFVzZSBvbmUgb2YgYFVOSVRfKmAgY29uc3RhbnRzLCAiVU5JVF9QSVhFTCIgYnkgZGVmYXVsdA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcGVyY2VudFdpZHRoDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50SGVpZ2h0DQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKiANCiAgICAgKiAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkcG9zaXRpb24gY2FuIGJlIGlnbm9yZWQgdW5sZXNzIHlvdSBjaG9vc2UgYSBuZXcgd2lkdGggQU5EIGEgbmV3IGhlaWdodCBBTkQgdG8gY29uc2VydmUgcHJvcG9ydGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJG5ld1dpZHRoID0gbnVsbCwgJG5ld0hlaWdodCA9IG51bGwsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTU0nKQ0KICAgIHsNCiAgICAgICAgaWYgKCRuZXdXaWR0aCB8fCAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQogICAgICAgICAgICAgICAgICAgICRuZXdXaWR0aCA9IHJvdW5kKCgkbmV3V2lkdGggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRuZXdIZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgJG5ld0hlaWdodCA9IHJvdW5kKCgkbmV3SGVpZ2h0IC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICAgICBpZiAoJGNvbnZlcnNlUHJvcG9ydGlvbikgeyAvLyBQcm9wb3J0aW9uIGFyZSBjb25zZXJ2ZWQNCg0KICAgICAgICAgICAgICAgIGlmICgkbmV3V2lkdGggJiYgJG5ld0hlaWdodCkgeyAvLyBQcm9wb3J0aW9ucyArICRuZXdXaWR0aCArICRuZXdIZWlnaHQNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0V2lkdGgoKSA+ICR0aGlzLT5nZXRIZWlnaHQoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3V2lkdGgsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldEhlaWdodCgpID4gJG5ld0hlaWdodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdIZWlnaHQsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdIZWlnaHQsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgPiAkbmV3V2lkdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3V2lkdGgsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgIT0gJG5ld1dpZHRoIHx8ICR0aGlzLT5nZXRIZWlnaHQoKSAhPSAkbmV3SGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXllclRtcCA9IEltYWdlV29ya3Nob3A6OmluaXRWaXJnaW5MYXllcigkbmV3V2lkdGgsICRuZXdIZWlnaHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAkbGF5ZXJUbXAtPmFkZExheWVyKDEsICR0aGlzLCByb3VuZCgkcG9zaXRpb25YICogKCRuZXdXaWR0aCAvIDEwMCkpLCByb3VuZCgkcG9zaXRpb25ZICogKCRuZXdIZWlnaHQgLyAxMDApKSwgJHBvc2l0aW9uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPndpZHRoID0gJGxheWVyVG1wLT5nZXRXaWR0aCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmhlaWdodCA9ICRsYXllclRtcC0+Z2V0SGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxheWVyTGV2ZWxzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5sYXllclBvc2l0aW9ucyk7DQogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0SW1hZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVscyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJMZXZlbHMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllclBvc2l0aW9ucyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJQb3NpdGlvbnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnMgPSAkbGF5ZXJUbXAtPmdldExheWVycygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGxheWVyVG1wKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJG5ld1dpZHRoKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkbmV3SGVpZ2h0ID0gcm91bmQoKCR3aWR0aFJlc2l6ZVBlcmNlbnQgLyAxMDApICogJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJHdpZHRoUmVzaXplUGVyY2VudDsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkbmV3SGVpZ2h0KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGhlaWdodFJlc2l6ZVBlcmNlbnQgPSAkbmV3SGVpZ2h0IC8gKCR0aGlzLT5oZWlnaHQgLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkbmV3V2lkdGggPSByb3VuZCgoJGhlaWdodFJlc2l6ZVBlcmNlbnQgLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRoZWlnaHRSZXNpemVQZXJjZW50Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCgkbmV3V2lkdGggJiYgISRuZXdIZWlnaHQpIHx8ICghJG5ld1dpZHRoICYmICRuZXdIZWlnaHQpKSB7IC8vIE5ldyB3aWR0aCBPUiBuZXcgaGVpZ2h0IGlzIGdpdmVuDQoNCiAgICAgICAgICAgICAgICBpZiAoJG5ld1dpZHRoKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICAgICAkaGVpZ2h0UmVzaXplUGVyY2VudCA9IDEwMDsNCiAgICAgICAgICAgICAgICAgICAgJG5ld0hlaWdodCA9ICR0aGlzLT5oZWlnaHQ7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCiAgICAgICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9IDEwMDsNCiAgICAgICAgICAgICAgICAgICAgJG5ld1dpZHRoID0gJHRoaXMtPndpZHRoOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlIHsgLy8gTmV3IHdpZHRoIEFORCBuZXcgaGVpZ2h0IGFyZSBnaXZlbg0KDQogICAgICAgICAgICAgICAgJHdpZHRoUmVzaXplUGVyY2VudCA9ICRuZXdXaWR0aCAvICgkdGhpcy0+d2lkdGggLyAxMDApOw0KICAgICAgICAgICAgICAgICRoZWlnaHRSZXNpemVQZXJjZW50ID0gJG5ld0hlaWdodCAvICgkdGhpcy0+aGVpZ2h0IC8gMTAwKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXllciBwb3NpdGlvbnMgaW4gdGhlIHN0YWNrDQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbikgew0KDQogICAgICAgICAgICAgICAgJG5ld1Bvc1ggPSByb3VuZCgoJHdpZHRoUmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneCddKTsNCiAgICAgICAgICAgICAgICAkbmV3UG9zWSA9IHJvdW5kKCgkaGVpZ2h0UmVzaXplUGVyY2VudCAvIDEwMCkgKiAkbGF5ZXJQb3NpdGlvblsneSddKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJG5ld1Bvc1gsICRuZXdQb3NZKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gUmVzaXplIGxheWVycyBpbiB0aGUgc3RhY2sNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCiAgICAgICAgICAgICAgICAkbGF5ZXItPnJlc2l6ZUluUGVyY2VudCgkd2lkdGhSZXNpemVQZXJjZW50LCAkaGVpZ2h0UmVzaXplUGVyY2VudCk7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxheWVyc1ska2V5XSA9ICRsYXllcjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHRoaXMtPnJlc2l6ZUJhY2tncm91bmQoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0KTsgLy8gUmVzaXplIHRoZSBsYXllcg0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVzaXplIHRoZSBsYXllciBieSBpdHMgbGFyZ2VzdCBzaWRlIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNvbnZlcnNlUHJvcG9ydGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeUxhcmdlc3RTaWRlSW5QaXhlbCgkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZUJ5TGFyZ2VzdFNpZGUoc2VsZjo6VU5JVF9QSVhFTCwgJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIGxhcmdlc3Qgc2lkZSBieSBzcGVjaWZ5aW5nIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoIHBlcmNlbnQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemVCeUxhcmdlc3RTaWRlKHNlbGY6OlVOSVRfUEVSQ0VOVCwgJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIGxhcmdlc3Qgc2lkZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdMYXJnZXN0U2lkZVdpZHRoIHBlcmNlbnQNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TGFyZ2VzdFNpZGUoJHVuaXQgPSBzZWxmOjpVTklUX1BJWEVMLCAkbmV3TGFyZ2VzdFNpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgaWYgKCR1bml0ID09IHNlbGY6OlVOSVRfUEVSQ0VOVCkgew0KICAgICAgICAgICAgJG5ld0xhcmdlc3RTaWRlV2lkdGggPSByb3VuZCgoJG5ld0xhcmdlc3RTaWRlV2lkdGggLyAxMDApICogJHRoaXMtPmdldExhcmdlc3RTaWRlV2lkdGgoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHRoaXMtPmdldFdpZHRoKCkgPiAkdGhpcy0+Z2V0SGVpZ2h0KCkpIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKCRuZXdMYXJnZXN0U2lkZVdpZHRoLCBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdMYXJnZXN0U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2l6ZSB0aGUgbGF5ZXIgYnkgaXRzIG5hcnJvdyBzaWRlIGJ5IHNwZWNpZnlpbmcgcGl4ZWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGgNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TmFycm93U2lkZUluUGl4ZWwoJG5ld05hcnJvd1NpZGVXaWR0aCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnJlc2l6ZUJ5TmFycm93U2lkZShzZWxmOjpVTklUX1BJWEVMLCAkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBuYXJyb3cgc2lkZSBieSBzcGVjaWZ5aW5nIHBlcmNlbnQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGggcGVyY2VudA0KICAgICAqIEBwYXJhbSBib29sZWFuICRjb252ZXJzZVByb3BvcnRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50KCRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZXNpemVCeU5hcnJvd1NpZGUoc2VsZjo6VU5JVF9QRVJDRU5ULCAkbmV3TmFycm93U2lkZVdpZHRoLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGxheWVyIGJ5IGl0cyBuYXJyb3cgc2lkZQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRuZXdOYXJyb3dTaWRlV2lkdGgNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkY29udmVyc2VQcm9wb3J0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUJ5TmFycm93U2lkZSgkdW5pdCA9IHNlbGY6OlVOSVRfUElYRUwsICRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCiAgICAgICAgICAgICRuZXdOYXJyb3dTaWRlV2lkdGggPSByb3VuZCgoJG5ld05hcnJvd1NpZGVXaWR0aCAvIDEwMCkgKiAkdGhpcy0+Z2V0TmFycm93U2lkZVdpZHRoKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRXaWR0aCgpIDwgJHRoaXMtPmdldEhlaWdodCgpKSB7DQogICAgICAgICAgICAkdGhpcy0+cmVzaXplSW5QaXhlbCgkbmV3TmFycm93U2lkZVdpZHRoLCBudWxsLCAkY29udmVyc2VQcm9wb3J0aW9uKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5yZXNpemVJblBpeGVsKG51bGwsICRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24pOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgZG9jdW1lbnQgYnkgc3BlY2lmeWluZyBwaXhlbHMNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3I6IGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKFRoZSBzY3JpcHQgd2lsbCBiZSBsb25nZXIgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BJblBpeGVsKCR3aWR0aCA9IDAsICRoZWlnaHQgPSAwLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JvcChzZWxmOjpVTklUX1BJWEVMLCAkd2lkdGgsICRoZWlnaHQsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgZG9jdW1lbnQgYnkgc3BlY2lmeWluZyBwZXJjZW50DQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRwZXJjZW50V2lkdGgNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBlcmNlbnRIZWlnaHQNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBvc2l0aW9uWFBlcmNlbnQNCiAgICAgKiBAcGFyYW0gZmxvYXQgJHBvc2l0aW9uWVBlcmNlbnQNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wSW5QZXJjZW50KCRwZXJjZW50V2lkdGggPSAwLCAkcGVyY2VudEhlaWdodCA9IDAsICRwb3NpdGlvblhQZXJjZW50ID0gMCwgJHBvc2l0aW9uWVBlcmNlbnQgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNyb3Aoc2VsZjo6VU5JVF9QRVJDRU5ULCAkcGVyY2VudFdpZHRoLCAkcGVyY2VudEhlaWdodCwgJHBvc2l0aW9uWFBlcmNlbnQsICRwb3NpdGlvbllQZXJjZW50LCAkcG9zaXRpb24pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENyb3AgdGhlIGRvY3VtZW50DQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBmbG9hdCAkd2lkdGgNCiAgICAgKiBAcGFyYW0gZmxvYXQgJGhlaWdodA0KICAgICAqIEBwYXJhbSBmbG9hdCAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGZsb2F0ICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJHdpZHRoID0gMCwgJGhlaWdodCA9IDAsICRwb3NpdGlvblggPSAwLCAkcG9zaXRpb25ZID0gMCwgJHBvc2l0aW9uID0gJ0xUJykNCiAgICB7DQogICAgICAgIGlmICgkdW5pdCA9PSBzZWxmOjpVTklUX1BFUkNFTlQpIHsNCg0KICAgICAgICAgICAgJHdpZHRoID0gcm91bmQoKCR3aWR0aCAvIDEwMCkgKiAkdGhpcy0+d2lkdGgpOw0KICAgICAgICAgICAgJGhlaWdodCA9IHJvdW5kKCgkaGVpZ2h0IC8gMTAwKSAqICR0aGlzLT5oZWlnaHQpOw0KDQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgaWYgKCgkd2lkdGggIT0gJHRoaXMtPndpZHRoIHx8ICRwb3NpdGlvblggPT0gMCkgfHwgKCRoZWlnaHQgIT0gJHRoaXMtPmhlaWdodCB8fCAkcG9zaXRpb25ZID09IDApKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRsYXllclRtcCA9IEltYWdlV29ya3Nob3A6OmluaXRWaXJnaW5MYXllcigkd2lkdGgsICRoZWlnaHQpOw0KICAgICAgICAgICAgJGxheWVyQ2xvbmUgPSBJbWFnZVdvcmtzaG9wOjppbml0VmlyZ2luTGF5ZXIoJHRoaXMtPndpZHRoLCAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaW1hZ2VkZXN0cm95KCRsYXllckNsb25lLT5pbWFnZSk7DQogICAgICAgICAgICAkbGF5ZXJDbG9uZS0+aW1hZ2UgPSAkdGhpcy0+aW1hZ2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgICRsYXllclRtcC0+YWRkTGF5ZXIoMSwgJGxheWVyQ2xvbmUsIC0kcG9zaXRpb25YLCAtJHBvc2l0aW9uWSwgJHBvc2l0aW9uKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJG5ld1BvcyA9ICRsYXllclRtcC0+Z2V0TGF5ZXJQb3NpdGlvbnMoKTsNCiAgICAgICAgICAgICRsYXllck5ld1Bvc1ggPSAkbmV3UG9zWzFdWyd4J107DQogICAgICAgICAgICAkbGF5ZXJOZXdQb3NZID0gJG5ld1Bvc1sxXVsneSddOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGxheWVyDQogICAgICAgICAgICAkdGhpcy0+d2lkdGggPSAkbGF5ZXJUbXAtPmdldFdpZHRoKCk7DQogICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJGxheWVyVG1wLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRsYXllclRtcC0+Z2V0UmVzdWx0KCk7DQogICAgICAgICAgICB1bnNldCgkbGF5ZXJUbXApOw0KICAgICAgICAgICAgdW5zZXQoJGxheWVyQ2xvbmUpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAkdGhpcy0+dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckNyb3BwaW5nKCRsYXllck5ld1Bvc1gsICRsYXllck5ld1Bvc1kpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wICgiTFQiKSwgIlJUIi4uLiBieSBzcGVjaWZ5aW5nIGEgc2hpZnQgaW4gcGl4ZWwNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgY2FuIGJlIHNldCB0cmFuc3BhcmVudCAoYnV0IHNjcmlwdCBjb3VsZCBiZSBsb25nIHRvIGV4ZWN1dGUpDQogICAgICogJHBvc2l0aW9uOiBodHRwOi8vcGhwaW1hZ2V3b3Jrc2hvcC5jb20vZG9jLzIyL2Nvcm5lcnMtcG9zaXRpb25zLXNjaGVtYS1vZi1hbi1pbWFnZS5odG1sDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0DQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwb3NpdGlvbg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wTWF4aW11bUluUGl4ZWwoJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmNyb3BNYXhpbXVtKHNlbGY6OlVOSVRfUElYRUwsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wICgiTFQiKSwgIlJUIi4uLiBieSBzcGVjaWZ5aW5nIGEgc2hpZnQgaW4gcGVyY2VudA0KICAgICAqDQogICAgICogJGJhY2tncm91bmRDb2xvciBjYW4gYmUgc2V0IHRyYW5zcGFyZW50IChidXQgc2NyaXB0IGNvdWxkIGJlIGxvbmcgdG8gZXhlY3V0ZSkNCiAgICAgKiAkcG9zaXRpb246IGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbS9kb2MvMjIvY29ybmVycy1wb3NpdGlvbnMtc2NoZW1hLW9mLWFuLWltYWdlLmh0bWwNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YUGVyY2VudA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvbllQZXJjZW50DQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JvcE1heGltdW1JblBlcmNlbnQoJHBvc2l0aW9uWFBlcmNlbnQgPSAwLCAkcG9zaXRpb25ZUGVyY2VudCA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICAkdGhpcy0+Y3JvcE1heGltdW0oc2VsZjo6VU5JVF9QRVJDRU5ULCAkcG9zaXRpb25YUGVyY2VudCwgJHBvc2l0aW9uWVBlcmNlbnQsICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JvcCB0aGUgbWF4aW11bSBwb3NzaWJsZSBmcm9tIGxlZnQgdG9wDQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGNhbiBiZSBzZXQgdHJhbnNwYXJlbnQgKGJ1dCBzY3JpcHQgY291bGQgYmUgbG9uZyB0byBleGVjdXRlKQ0KICAgICAqICRwb3NpdGlvbjogaHR0cDovL3BocGltYWdld29ya3Nob3AuY29tL2RvYy8yMi9jb3JuZXJzLXBvc2l0aW9ucy1zY2hlbWEtb2YtYW4taW1hZ2UuaHRtbA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdW5pdA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICR3aWR0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRoZWlnaHQNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBvc2l0aW9uDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyb3BNYXhpbXVtKCR1bml0ID0gc2VsZjo6VU5JVF9QSVhFTCwgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkcG9zaXRpb24gPSAnTFQnKQ0KICAgIHsNCiAgICAgICAgJG5hcnJvd1NpZGUgPSAkdGhpcy0+Z2V0TmFycm93U2lkZVdpZHRoKCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHVuaXQgPT0gc2VsZjo6VU5JVF9QRVJDRU5UKSB7DQogICAgICAgICAgICAkcG9zaXRpb25YID0gcm91bmQoKCRwb3NpdGlvblggLyAxMDApICogJHRoaXMtPndpZHRoKTsNCiAgICAgICAgICAgICRwb3NpdGlvblkgPSByb3VuZCgoJHBvc2l0aW9uWSAvIDEwMCkgKiAkdGhpcy0+aGVpZ2h0KTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5jcm9wSW5QaXhlbCgkbmFycm93U2lkZSwgJG5hcnJvd1NpZGUsICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUm90YXRlIHRoZSBsYXllciAoaW4gZGVncmVlKQ0KICAgICAqDQogICAgICogQHBhcmFtIGZsb2F0ICRkZWdyZWVzDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgkZGVncmVlcykNCiAgICB7DQogICAgICAgIGlmICgkZGVncmVlcyAhPSAwKSB7DQoNCiAgICAgICAgICAgIGlmICgkZGVncmVlcyA8IC0zNjAgfHwgJGRlZ3JlZXMgPiAzNjApIHsNCiAgICAgICAgICAgICAgICAkZGVncmVlcyA9ICRkZWdyZWVzICUgMzYwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPCAwICYmICRkZWdyZWVzID49IC0zNjApIHsNCiAgICAgICAgICAgICAgICAkZGVncmVlcyA9IDM2MCArICRkZWdyZWVzOw0KICAgICAgICAgICAgfQ0KDQoJCQkvLyBSb3RhdGUgdGhlIGxheWVyIGJhY2tncm91bmQgaW1hZ2UNCiAgICAgICAgICAgICRpbWFnZVJvdGF0ZWQgPSBpbWFnZXJvdGF0ZSgkdGhpcy0+aW1hZ2UsIC0kZGVncmVlcywgLTEpOw0KICAgICAgICAgICAgaW1hZ2VhbHBoYWJsZW5kaW5nKCRpbWFnZVJvdGF0ZWQsIHRydWUpOw0KICAgICAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJGltYWdlUm90YXRlZCwgdHJ1ZSk7DQoNCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5pbWFnZSk7DQoNCiAgICAgICAgICAgICR0aGlzLT5pbWFnZSA9ICRpbWFnZVJvdGF0ZWQ7DQoNCiAgICAgICAgICAgICRvbGRXaWR0aCA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgICRvbGRIZWlnaHQgPSAkdGhpcy0+aGVpZ2h0Ow0KDQogICAgICAgICAgICAkdGhpcy0+d2lkdGggPSBpbWFnZXN4KCR0aGlzLT5pbWFnZSk7DQogICAgICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gaW1hZ2VzeSgkdGhpcy0+aW1hZ2UpOw0KDQogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAgICAgJGxheWVyU2VsZk9sZENlbnRlclBvc2l0aW9uID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICd4JyA9PiAkbGF5ZXItPndpZHRoIC8gMiwNCiAgICAgICAgICAgICAgICAgICAgJ3knID0+ICRsYXllci0+aGVpZ2h0IC8gMiwNCiAgICAgICAgICAgICAgICApOw0KDQogICAgICAgICAgICAgICAgJHNtYWxsSW1hZ2VDZW50ZXIgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ3gnID0+ICRsYXllclNlbGZPbGRDZW50ZXJQb3NpdGlvblsneCddICsgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneCddLA0KICAgICAgICAgICAgICAgICAgICAneScgPT4gJGxheWVyU2VsZk9sZENlbnRlclBvc2l0aW9uWyd5J10gKyAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd5J10sDQogICAgICAgICAgICAgICAgKTsNCg0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5yb3RhdGUoJGRlZ3JlZXMpOw0KDQogICAgICAgICAgICAgICAgJHJvID0gc3FydChwb3coJHNtYWxsSW1hZ2VDZW50ZXJbJ3gnXSwgMikgKyBwb3coJHNtYWxsSW1hZ2VDZW50ZXJbJ3knXSwgMikpOw0KDQogICAgICAgICAgICAgICAgJHRldGEgPSAoYWNvcygkc21hbGxJbWFnZUNlbnRlclsneCddIC8gJHJvKSkgKiAxODAgLyBwaSgpOw0KDQogICAgICAgICAgICAgICAgJGEgPSAkcm8gKiBjb3MoKCR0ZXRhICsgJGRlZ3JlZXMpICogcGkoKSAvIDE4MCk7DQogICAgICAgICAgICAgICAgJGIgPSAkcm8gKiBzaW4oKCR0ZXRhICsgJGRlZ3JlZXMpICogcGkoKSAvIDE4MCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGRlZ3JlZXMgPiAwICYmICRkZWdyZWVzIDw9IDkwKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWCA9ICRhIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT53aWR0aCAvIDIpICsgJG9sZEhlaWdodCAqIHNpbigoJGRlZ3JlZXMgKiBwaSgpKSAvIDE4MCk7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMik7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGRlZ3JlZXMgPiA5MCAmJiAkZGVncmVlcyA8PSAxODApIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMikgKyAkdGhpcy0+d2lkdGg7DQogICAgICAgICAgICAgICAgICAgICRuZXdQb3NpdGlvblkgPSAkYiAtICgkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+aGVpZ2h0IC8gMikgKyAkb2xkSGVpZ2h0ICogKC1jb3MoKCRkZWdyZWVzKSAqIHBpKCkgLyAxODApKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGVncmVlcyA+IDE4MCAmJiAkZGVncmVlcyA8PSAyNzApIHsNCg0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25YID0gJGEgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPndpZHRoIC8gMikgKyAkb2xkV2lkdGggKiAoLWNvcygoJGRlZ3JlZXMpICogcGkoKSAvIDE4MCkpOw0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25ZID0gJGIgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmhlaWdodCAvIDIpICsgJHRoaXMtPmhlaWdodDsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJG5ld1Bvc2l0aW9uWCA9ICRhIC0gKCR0aGlzLT5sYXllcnNbJGxheWVySWRdLT53aWR0aCAvIDIpOw0KICAgICAgICAgICAgICAgICAgICAkbmV3UG9zaXRpb25ZID0gJGIgLSAoJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0tPmhlaWdodCAvIDIpICsgJG9sZFdpZHRoICogKC1zaW4oKCRkZWdyZWVzKSAqIHBpKCkgLyAxODApKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICd4JyA9PiAkbmV3UG9zaXRpb25YLA0KICAgICAgICAgICAgICAgICAgICAneScgPT4gJG5ld1Bvc2l0aW9uWSwNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2hhbmdlIHRoZSBvcGFjaXR5IG9mIHRoZSBsYXllcg0KICAgICAqICRyZWN1cnNpdmU6IGFwcGx5IGl0IG9uIHN1YmxheWVycw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG9wYWNpdHkNCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkcmVjdXJzaXZlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIG9wYWNpdHkoJG9wYWNpdHksICRyZWN1cnNpdmUgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCRyZWN1cnNpdmUpIHsNCg0KICAgICAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllcnMgYXMgJGtleSA9PiAkbGF5ZXIpIHsNCiAgICAgICAgICAgICAgICAkbGF5ZXItPm9wYWNpdHkoJG9wYWNpdHksIHRydWUpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGtleV0gPSAkbGF5ZXI7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkdHJhbnNwYXJlbnRJbWFnZSA9IEltYWdlV29ya3Nob3BMaWI6OmdlbmVyYXRlSW1hZ2UoJHRoaXMtPmdldFdpZHRoKCksICR0aGlzLT5nZXRIZWlnaHQoKSk7DQogICAgICAgIA0KICAgICAgICBJbWFnZVdvcmtzaG9wTGliOjppbWFnZUNvcHlNZXJnZUFscGhhKCR0cmFuc3BhcmVudEltYWdlLCAkdGhpcy0+aW1hZ2UsIDAsIDAsIDAsIDAsICR0aGlzLT5nZXRXaWR0aCgpLCAkdGhpcy0+Z2V0SGVpZ2h0KCksICRvcGFjaXR5KTsNCg0KICAgICAgICB1bnNldCgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdHJhbnNwYXJlbnRJbWFnZTsNCiAgICAgICAgdW5zZXQoJHRyYW5zcGFyZW50SW1hZ2UpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBBcHBseSBhIGZpbHRlciBvbiB0aGUgbGF5ZXINCiAgICAgKiBCZSBjYXJlZnVsOiBzb21lIGZpbHRlcnMgY2FuIGRhbWFnZSB0cmFuc3BhcmVudCBpbWFnZXMsIHVzZSBpdCBzcGFyaW5nbHkgISAoQSBnb29kIHByYXRpY2UgaXMgdG8gdXNlIG1lcmdlQWxsIG9uIHlvdXIgbGF5ZXIgYmVmb3JlIGFwcGx5aW5nIGEgZmlsdGVyKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludCAkZmlsdGVyVHlwZSAoaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5pbWFnZWZpbHRlci5waHApDQogICAgICogQHBhcmFtIGludCAkYXJnMQ0KICAgICAqIEBwYXJhbSBpbnQgJGFyZzINCiAgICAgKiBAcGFyYW0gaW50ICRhcmczDQogICAgICogQHBhcmFtIGludCAkYXJnNA0KICAgICAqIEBwYXJhbSBib29sZWFuICRyZWN1cnNpdmUNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwbHlGaWx0ZXIoJGZpbHRlclR5cGUsICRhcmcxID0gbnVsbCwgJGFyZzIgPSBudWxsLCAkYXJnMyA9IG51bGwsICRhcmc0ID0gbnVsbCwgJHJlY3Vyc2l2ZSA9IGZhbHNlKQ0KICAgIHsNCiAgICAgICAgaWYgKCRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfQ09MT1JJWkUpIHsNCiAgICAgICAgICAgIGltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZSwgJGZpbHRlclR5cGUsICRhcmcxLCAkYXJnMiwgJGFyZzMsICRhcmc0KTsNCiAgICAgICAgfSBlbHNlaWYgKCRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfQlJJR0hUTkVTUyB8fCAkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX0NPTlRSQVNUIHx8ICRmaWx0ZXJUeXBlID09IElNR19GSUxURVJfU01PT1RIKSB7DQogICAgICAgICAgICBpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2UsICRmaWx0ZXJUeXBlLCAkYXJnMSk7DQogICAgICAgIH0gZWxzZWlmICgkZmlsdGVyVHlwZSA9PSBJTUdfRklMVEVSX1BJWEVMQVRFKSB7DQogICAgICAgICAgICBpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2UsICRmaWx0ZXJUeXBlLCAkYXJnMSwgJGFyZzIpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlLCAkZmlsdGVyVHlwZSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHJlY3Vyc2l2ZSkgew0KDQogICAgICAgICAgICAkbGF5ZXJzID0gJHRoaXMtPmxheWVyczsNCg0KICAgICAgICAgICAgZm9yZWFjaCgkbGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5hcHBseUZpbHRlcigkZmlsdGVyVHlwZSwgJGFyZzEsICRhcmcyLCAkYXJnMywgJGFyZzQsIHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIA0KICAgIC8qKg0KICAgICAqIEFwcGx5IGhvcml6b250YWwgb3IgdmVydGljYWwgZmxpcCAoVHJhbnNmb3JtYXRpb24pDQogICAgICogDQogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBmbGlwKCR0eXBlID0gJ2hvcml6b250YWwnKQ0KICAgIHsNCiAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgZm9yZWFjaCAoJGxheWVycyBhcyAka2V5ID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAkbGF5ZXItPmZsaXAoJHR5cGUpOw0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1ska2V5XSA9ICRsYXllcjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgJHRlbXAgPSBJbWFnZVdvcmtzaG9wTGliOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQogICAgICAgIA0KICAgICAgICBpZiAoJHR5cGUgPT0gJ2hvcml6b250YWwnKSB7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGltYWdlY29weXJlc2FtcGxlZCgkdGVtcCwgJHRoaXMtPmltYWdlLCAwLCAwLCAkdGhpcy0+d2lkdGggLSAxLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsIC0kdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgJHRoaXMtPmltYWdlID0gJHRlbXA7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllclBvc2l0aW9ucyBhcyAkbGF5ZXJJZCA9PiAkbGF5ZXJQb3NpdGlvbnMpIHsNCiAgICANCiAgICAgICAgICAgICAgICAkdGhpcy0+Y2hhbmdlUG9zaXRpb24oJGxheWVySWQsICR0aGlzLT53aWR0aCAtICR0aGlzLT5sYXllcnNbJGxheWVySWRdLT5nZXRXaWR0aCgpIC0gJGxheWVyUG9zaXRpb25zWyd4J10sICRsYXllclBvc2l0aW9uc1sneSddKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJ3ZlcnRpY2FsJykgew0KICAgICAgICAgICAgDQogICAgICAgICAgICBpbWFnZWNvcHlyZXNhbXBsZWQoJHRlbXAsICR0aGlzLT5pbWFnZSwgMCwgMCwgMCwgJHRoaXMtPmhlaWdodCAtIDEsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJHRoaXMtPndpZHRoLCAtJHRoaXMtPmhlaWdodCk7DQogICAgICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdGVtcDsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmxheWVyUG9zaXRpb25zIGFzICRsYXllcklkID0+ICRsYXllclBvc2l0aW9ucykgew0KICAgIA0KICAgICAgICAgICAgICAgICR0aGlzLT5jaGFuZ2VQb3NpdGlvbigkbGF5ZXJJZCwgJGxheWVyUG9zaXRpb25zWyd4J10sICR0aGlzLT5oZWlnaHQgLSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+Z2V0SGVpZ2h0KCkgLSAkbGF5ZXJQb3NpdGlvbnNbJ3knXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHVuc2V0KCR0ZW1wKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogQWRkIGEgdGV4dCBvbiB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiB0aGUgbGF5ZXIgdXNpbmcgYSBkZWZhdWx0IGZvbnQgcmVnaXN0ZXJlZCBpbiBHRA0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdGV4dA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250DQogICAgICogQHBhcmFtIHN0cmluZyAkY29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25YDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsaWduDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlVGV4dCgkdGV4dCwgJGZvbnQgPSAxLCAkY29sb3IgPSAnZmZmZmZmJywgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkYWxpZ24gPSAnaG9yaXpvbnRhbCcpDQogICAgew0KICAgICAgICAkUkdCVGV4dENvbG9yID0gSW1hZ2VXb3Jrc2hvcExpYjo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQogICAgICAgICR0ZXh0Q29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltYWdlLCAkUkdCVGV4dENvbG9yWydSJ10sICRSR0JUZXh0Q29sb3JbJ0cnXSwgJFJHQlRleHRDb2xvclsnQiddKTsNCg0KICAgICAgICBpZiAoJGFsaWduID09ICdob3Jpem9udGFsJykgew0KICAgICAgICAgICAgaW1hZ2VzdHJpbmcoJHRoaXMtPmltYWdlLCAkZm9udCwgJHBvc2l0aW9uWCwgJHBvc2l0aW9uWSwgJHRleHQsICR0ZXh0Q29sb3IpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaW1hZ2VzdHJpbmd1cCgkdGhpcy0+aW1hZ2UsICRmb250LCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkdGV4dCwgJHRleHRDb2xvcik7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYSB0ZXh0IG9uIHRoZSBiYWNrZ3JvdW5kIGltYWdlIG9mIHRoZSBsYXllciB1c2luZyBhIGZvbnQgbG9jYWxpemVkIGF0ICRmb250UGF0aA0KICAgICAqIFJldHVybiB0aGUgdGV4dCBjb29yZG9uYXRlcw0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkdGV4dA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250UGF0aA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmb250U2l6ZQ0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbG9yDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFJvdGF0aW9uDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSA9IDEzLCAkY29sb3IgPSAnZmZmZmZmJywgJHBvc2l0aW9uWCA9IDAsICRwb3NpdGlvblkgPSAwLCAkZm9udFJvdGF0aW9uID0gMCkNCiAgICB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZvbnRQYXRoKSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BMYXllckV4Y2VwdGlvbignQ2FuXCd0IGZpbmQgYSBmb250IGZpbGUgYXQgdGhpcyBwYXRoIDogIicuJGZvbnRQYXRoLiciLicsIHN0YXRpYzo6RVJST1JfRk9OVF9OT1RfRk9VTkQpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkUkdCVGV4dENvbG9yID0gSW1hZ2VXb3Jrc2hvcExpYjo6Y29udmVydEhleFRvUkdCKCRjb2xvcik7DQogICAgICAgICR0ZXh0Q29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltYWdlLCAkUkdCVGV4dENvbG9yWydSJ10sICRSR0JUZXh0Q29sb3JbJ0cnXSwgJFJHQlRleHRDb2xvclsnQiddKTsNCg0KICAgICAgICByZXR1cm4gaW1hZ2V0dGZ0ZXh0KCR0aGlzLT5pbWFnZSwgJGZvbnRTaXplLCAkZm9udFJvdGF0aW9uLCAkcG9zaXRpb25YLCAkcG9zaXRpb25ZLCAkdGV4dENvbG9yLCAkZm9udFBhdGgsICR0ZXh0KTsNCiAgICB9DQogICAgDQogICAgLy8gTWFuYWdlIHRoZSByZXN1bHQNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXR1cm4gYSBtZXJnZWQgcmVzb3VyY2UgaW1hZ2UNCiAgICAgKg0KICAgICAqICRiYWNrZ3JvdW5kQ29sb3IgaXMgcmVhbGx5IHVzZWZ1bGwgaWYgeW91IHdhbnQgdG8gc2F2ZSBhIEpQRyBvciBHSUYsIGJlY2F1c2UgdGhlIHRyYW5zcGFyZW5jeSBvZiB0aGUgYmFja2dyb3VuZA0KICAgICAqIHdvdWxkIGJlIHJlbW92ZSBmb3IgYSBjb2xvcmVkIGJhY2tncm91bmQsIHNvIHlvdSBzaG91bGQgY2hvb3NlIGEgY29sb3IgbGlrZSAiZmZmZmZmIiAod2hpdGUpDQogICAgICoNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiYWNrZ3JvdW5kQ29sb3INCiAgICAgKg0KICAgICAqIEByZXR1cm4gcmVzb3VyY2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzdWx0KCRiYWNrZ3JvdW5kQ29sb3IgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJGltYWdlc1RvTWVyZ2UgPSBhcnJheSgpOw0KICAgICAgICBrc29ydCgkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KDQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5sYXllckxldmVscyBhcyAkbGF5ZXJMZXZlbCA9PiAkbGF5ZXJJZCkgew0KDQogICAgICAgICAgICAkaW1hZ2VzVG9NZXJnZVskbGF5ZXJMZXZlbF0gPSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXS0+Z2V0UmVzdWx0KCk7DQoNCiAgICAgICAgICAgIC8vIExheWVyIHBvc2l0aW9ucw0KICAgICAgICAgICAgaWYgKCR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3gnXSAhPSAwIHx8ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSAhPSAwKSB7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJHZpcmdpbkxheW91dEltYWdlVG1wID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQpOw0KICAgICAgICAgICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCR2aXJnaW5MYXlvdXRJbWFnZVRtcCwgJGltYWdlc1RvTWVyZ2VbJGxheWVyTGV2ZWxdLCAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdWyd4J10sICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXSwgMCwgMCk7DQogICAgICAgICAgICAgICAgJGltYWdlc1RvTWVyZ2VbJGxheWVyTGV2ZWxdID0gJHZpcmdpbkxheW91dEltYWdlVG1wOw0KICAgICAgICAgICAgICAgIHVuc2V0KCR2aXJnaW5MYXlvdXRJbWFnZVRtcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAkaXRlcmF0b3IgPSAxOw0KICAgICAgICAkbWVyZ2VkSW1hZ2UgPSAkdGhpcy0+aW1hZ2U7DQogICAgICAgIGtzb3J0KCRpbWFnZXNUb01lcmdlKTsNCg0KICAgICAgICBmb3JlYWNoICgkaW1hZ2VzVG9NZXJnZSBhcyAkaW1hZ2VMZXZlbCA9PiAkaW1hZ2UpIHsNCiAgICAgICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCRtZXJnZWRJbWFnZSwgJGltYWdlKTsNCiAgICAgICAgICAgICRpdGVyYXRvcisrOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkb3BhY2l0eSA9IDEyNzsNCiAgICAgICAgDQogICAgICAgIGlmICgkYmFja2dyb3VuZENvbG9yICYmICRiYWNrZ3JvdW5kQ29sb3IgIT0gJ3RyYW5zcGFyZW50Jykgew0KICAgICAgICAgICAgJG9wYWNpdHkgPSAwOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAkYmFja2dyb3VuZEltYWdlID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRiYWNrZ3JvdW5kQ29sb3IsICRvcGFjaXR5KTsNCiAgICAgICAgSW1hZ2VXb3Jrc2hvcExpYjo6bWVyZ2VUd29JbWFnZXMoJGJhY2tncm91bmRJbWFnZSwgJG1lcmdlZEltYWdlKTsNCiAgICAgICAgJG1lcmdlZEltYWdlID0gJGJhY2tncm91bmRJbWFnZTsNCiAgICAgICAgdW5zZXQoJGJhY2tncm91bmRJbWFnZSk7DQoNCiAgICAgICAgcmV0dXJuICRtZXJnZWRJbWFnZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTYXZlIHRoZSByZXN1bHRpbmcgaW1hZ2UgYXQgdGhlIHNwZWNpZmllZCBwYXRoDQogICAgICoNCiAgICAgKiAkYmFja2dyb3VuZENvbG9yIGlzIHJlYWxseSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIHNhdmUgYSBKUEcgb3IgR0lGLCBiZWNhdXNlIHRoZSB0cmFuc3BhcmVuY3kgb2YgdGhlIGJhY2tncm91bmQNCiAgICAgKiB3b3VsZCBiZSByZW1vdmUgZm9yIGEgY29sb3JlZCBiYWNrZ3JvdW5kLCBzbyB5b3Ugc2hvdWxkIGNob29zZSBhIGNvbG9yIGxpa2UgImZmZmZmZiIgKHdoaXRlKQ0KICAgICAqDQogICAgICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgb3ZlcnJpZGUgIQ0KICAgICAqDQogICAgICogJGltYWdlUXVhbGl0eSBpcyB1c2VsZXNzIGZvciBHSUYNCiAgICAgKg0KICAgICAqIEV4OiAkZm9sZGVyID0gX19ESVJfXy4iLy4uL3dlYi9pbWFnZXMvMjAxMiINCiAgICAgKiAgICAgJGltYWdlTmFtZSA9ICJidXR0ZXJmbHkuanBnIg0KICAgICAqICAgICAkY3JlYXRlRm9sZGVycyA9IHRydWUNCiAgICAgKiAgICAgJGltYWdlUXVhbGl0eSA9IDk1DQogICAgICogICAgICRiYWNrZ3JvdW5kQ29sb3IgPSAiZmZmZmZmIg0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZm9sZGVyDQogICAgICogQHBhcmFtIHN0cmluZyAkaW1hZ2VOYW1lDQogICAgICogQHBhcmFtIGJvb2xlYW4gJGNyZWF0ZUZvbGRlcnMNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiYWNrZ3JvdW5kQ29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaW1hZ2VRdWFsaXR5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoJGZvbGRlciwgJGltYWdlTmFtZSwgJGNyZWF0ZUZvbGRlcnMgPSB0cnVlLCAkYmFja2dyb3VuZENvbG9yID0gbnVsbCwgJGltYWdlUXVhbGl0eSA9IDc1KQ0KICAgIHsNCiAgICAgICAgaWYgKCFpc19maWxlKCRmb2xkZXIpKSB7DQoNCiAgICAgICAgICAgIGlmIChpc19kaXIoJGZvbGRlcikgfHwgJGNyZWF0ZUZvbGRlcnMpIHsNCg0KICAgICAgICAgICAgICAgIC8vIENyZWF0aW5nIHRoZSBmb2xkZXJzIGlmIHRoZXkgZG9uJ3QgZXhpc3QNCiAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigkZm9sZGVyKSAmJiAkY3JlYXRlRm9sZGVycykgew0KICAgICAgICAgICAgICAgICAgICAkb2xkVW1hc2sgPSB1bWFzaygwKTsNCiAgICAgICAgICAgICAgICAgICAgbWtkaXIoJGZvbGRlciwgMDc3NywgdHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgIHVtYXNrKCRvbGRVbWFzayk7DQogICAgICAgICAgICAgICAgICAgIGNobW9kKCRmb2xkZXIsIDA3NzcpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRleHRlbnNpb24gPSBleHBsb2RlKCcuJywgJGltYWdlTmFtZSk7DQogICAgICAgICAgICAgICAgJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIoJGV4dGVuc2lvbltjb3VudCgkZXh0ZW5zaW9uKSAtIDFdKTsNCg0KICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICRmb2xkZXIuJy8nLiRpbWFnZU5hbWU7DQoNCiAgICAgICAgICAgICAgICBpZiAoKCRleHRlbnNpb24gPT0gJ2pwZycgfHwgJGV4dGVuc2lvbiA9PSAnanBlZycgfHwgJGV4dGVuc2lvbiA9PSAnZ2lmJykgJiYgKCEkYmFja2dyb3VuZENvbG9yIHx8ICRiYWNrZ3JvdW5kQ29sb3IgPT0gJ3RyYW5zcGFyZW50JykpIHsNCiAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmRDb2xvciA9ICdmZmZmZmYnOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICRpbWFnZSA9ICR0aGlzLT5nZXRSZXN1bHQoJGJhY2tncm91bmRDb2xvcik7DQoNCiAgICAgICAgICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PSAnanBnJyB8fCAkZXh0ZW5zaW9uID09ICdqcGVnJykgew0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlanBlZygkaW1hZ2UsICRmaWxlbmFtZSwgJGltYWdlUXVhbGl0eSk7DQogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpbWFnZSk7DQoNCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGV4dGVuc2lvbiA9PSAnZ2lmJykgew0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlZ2lmKCRpbWFnZSwgJGZpbGVuYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGltYWdlKTsNCg0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZXh0ZW5zaW9uID09ICdwbmcnKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgJGltYWdlUXVhbGl0eSA9ICRpbWFnZVF1YWxpdHkgLyAxMDsNCiAgICAgICAgICAgICAgICAgICAgJGltYWdlUXVhbGl0eSAtPSAxOw0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlcG5nKCRpbWFnZSwgJGZpbGVuYW1lLCAkaW1hZ2VRdWFsaXR5KTsNCiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGltYWdlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBDaGVja2Vycw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQogICAgLyoqDQogICAgICogQ2hlY2sgaWYgYSBzdWJsYXllciBleGlzdHMgaW4gdGhlIHN0YWNrIGZvciBhIGdpdmVuIGlkDQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBib29sZWFuDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGlzTGF5ZXJJbkluZGV4KCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGxheWVySWQsICR0aGlzLT5sYXllcnMpKSB7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICAvLyBHZXR0ZXIgLyBTZXR0ZXINCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXR1cm4gdGhlIG5hcnJvdyBzaWRlIHdpZHRoIG9mIHRoZSBsYXllcg0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hcnJvd1NpZGVXaWR0aCgpDQogICAgew0KICAgICAgICAkbmFycm93U2lkZVdpZHRoID0gJHRoaXMtPmdldFdpZHRoKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRIZWlnaHQoKSA8ICRuYXJyb3dTaWRlV2lkdGgpIHsNCiAgICAgICAgICAgICRuYXJyb3dTaWRlV2lkdGggPSAkdGhpcy0+Z2V0SGVpZ2h0KCk7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJG5hcnJvd1NpZGVXaWR0aDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm4gdGhlIGxhcmdlc3Qgc2lkZSB3aWR0aCBvZiB0aGUgbGF5ZXINCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXJnZXN0U2lkZVdpZHRoKCkNCiAgICB7DQogICAgICAgICRsYXJnZXN0U2lkZVdpZHRoID0gJHRoaXMtPmdldFdpZHRoKCk7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5nZXRIZWlnaHQoKSA+ICRsYXJnZXN0U2lkZVdpZHRoKSB7DQogICAgICAgICAgICAkbGFyZ2VzdFNpZGVXaWR0aCA9ICR0aGlzLT5nZXRIZWlnaHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkbGFyZ2VzdFNpZGVXaWR0aDsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogR2V0IHRoZSBsZXZlbCBvZiBhIHN1YmxheWVyDQogICAgICogUmV0dXJuIHN1YmxheWVyIGxldmVsIGlmIHN1Y2Nlc3Mgb3IgZmFsc2UgaWYgbGF5ZXIgaXNuJ3QgZm91bmQNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIG1peGVkIChpbnRlZ2VyIG9yIGJvb2xlYW4pDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyTGV2ZWwoJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPmlzTGF5ZXJJbkluZGV4KCRsYXllcklkKSkgeyAvLyBpZiB0aGUgbGF5ZXIgZXhpc3RzIGluIGRvY3VtZW50DQogICAgICAgICAgICByZXR1cm4gYXJyYXlfc2VhcmNoKCRsYXllcklkLCAkdGhpcy0+bGF5ZXJMZXZlbHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBHZXQgYSBzdWJsYXllciBpbiB0aGUgc3RhY2sNCiAgICAgKiBEb24ndCBmb3JnZXQgdG8gdXNlIGNsb25lIG1ldGhvZDogJGIgPSBjbG9uZSAkYS0+Z2V0TGF5ZXIoMyk7DQogICAgICoNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGF5ZXJJZA0KICAgICAqDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyKCRsYXllcklkKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllcnNbJGxheWVySWRdOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBHZXR0ZXIgd2lkdGgNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRXaWR0aCgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPndpZHRoOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEdldHRlciBoZWlnaHQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWlnaHQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWlnaHQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGltYWdlDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHJlc291cmNlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEltYWdlKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aW1hZ2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVycw0KICAgICAqDQogICAgICogQHJldHVybiBhcnJheQ0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXllcnMoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5sYXllcnM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVyTGV2ZWxzDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExheWVyTGV2ZWxzKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bGF5ZXJMZXZlbHM7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxheWVyUG9zaXRpb25zDQogICAgICogDQogICAgICogR2V0IGFsbCB0aGUgcG9zaXRpb25zIG9mIHRoZSBzdWJsYXllcnMsDQogICAgICogb3Igd2hlbiBzcGVjaWZ5aW5nICRsYXllcklkLCBnZXQgdGhlIHBvc2l0aW9uIG9mIHRoaXMgc3VibGF5ZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllcklkDQogICAgICogDQogICAgICogQHJldHVybiBtaXhlZCAoYXJyYXkgb3IgYm9vbGVhbikNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGF5ZXJQb3NpdGlvbnMoJGxheWVySWQgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgaWYgKCEkbGF5ZXJJZCkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmxheWVyUG9zaXRpb25zOw0KICAgICAgICAgICAgDQogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+aXNMYXllckluSW5kZXgoJGxheWVySWQpKSB7IC8vIGlmIHRoZSBzdWJsYXllciBleGlzdHMgaW4gdGhlIHN0YWNrDQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGhpZ2hlc3RMYXllckxldmVsDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEhpZ2hlc3RMYXllckxldmVsKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWw7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogR2V0dGVyIGxhc3RMYXllcklkDQogICAgICoNCiAgICAgKiBAcmV0dXJuIGFycmF5DQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RMYXllcklkKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdExheWVySWQ7DQogICAgfQ0KICAgIA0KICAgIC8vIEludGVybmFscw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KICAgICAqIERlbGV0ZSB0aGUgY3VycmVudCBvYmplY3QNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkNCiAgICB7DQogICAgICAgIGltYWdlZGVzdHJveSgkdGhpcy0+aW1hZ2UpOw0KICAgICAgICAkdGhpcy0+Y2xlYXJTdGFjaygpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBDcmVhdGUgYSBuZXcgYmFja2dyb3VuZCBpbWFnZSB2YXIgZnJvbSB0aGUgb2xkIGJhY2tncm91bmQgaW1hZ2UgdmFyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZU5ld1ZhckZyb21CYWNrZ3JvdW5kSW1hZ2UoKQ0KICAgIHsNCiAgICAgICAgJHZpcmdpbkltYWdlID0gSW1hZ2VXb3Jrc2hvcExpYjo6Z2VuZXJhdGVJbWFnZSgkdGhpcy0+Z2V0V2lkdGgoKSwgJHRoaXMtPmdldEhlaWdodCgpKTsgLy8gTmV3IGJhY2tncm91bmQgaW1hZ2UNCiAgICAgICAgDQogICAgICAgIEltYWdlV29ya3Nob3BMaWI6Om1lcmdlVHdvSW1hZ2VzKCR2aXJnaW5JbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwKTsNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCg0KICAgICAgICAkdGhpcy0+aW1hZ2UgPSAkdmlyZ2luSW1hZ2U7DQogICAgICAgIHVuc2V0KCR2aXJnaW5JbWFnZSk7DQoNCiAgICAgICAgJGxheWVycyA9ICR0aGlzLT5sYXllcnM7DQoNCiAgICAgICAgZm9yZWFjaCgkbGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KICAgICAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0gPSBjbG9uZSAkdGhpcy0+bGF5ZXJzWyRsYXllcklkXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBJbmRleCBhIHN1YmxheWVyIGluIHRoZSBsYXllciBzdGFjaw0KICAgICAqIFJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgc3VibGF5ZXIgaWQgYW5kIGl0cyBmaW5hbCBsZXZlbDoNCiAgICAgKiBhcnJheSgibGF5ZXJMZXZlbCIgPT4gaW50ZWdlciwgImlkIiA9PiBpbnRlZ2VyKQ0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVyTGV2ZWwNCiAgICAgKiBAcGFyYW0gSW1hZ2VXb3Jrc2hvcExheWVyICRsYXllcg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zaXRpb25ZDQogICAgICogQHBhcmFtIHN0cmluZyAkcG9zaXRpb24NCiAgICAgKg0KICAgICAqIEByZXR1cm4gYXJyYXkNCiAgICAgKi8NCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZXhMYXllcigkbGF5ZXJMZXZlbCwgJGxheWVyLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbikNCiAgICB7DQogICAgICAgIC8vIENob29zZSBhbiBpZCBmb3IgdGhlIGFkZGVkIGxheWVyDQogICAgICAgICRsYXllcklkID0gJHRoaXMtPmxhc3RMYXllcklkICsgMTsNCg0KICAgICAgICAvLyBDbG9uZSAkbGF5ZXIgdG8gZHVwbGljYXRlIGltYWdlIHJlc291cmNlIHZhcg0KICAgICAgICAkbGF5ZXIgPSBjbG9uZSAkbGF5ZXI7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBpbiB0aGUgc3RhY2sNCiAgICAgICAgJHRoaXMtPmxheWVyc1skbGF5ZXJJZF0gPSAkbGF5ZXI7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBwb3NpdGlvbnMgaW4gdGhlIG1haW4gbGF5ZXINCiAgICAgICAgJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXSA9IEltYWdlV29ya3Nob3BMaWI6OmNhbGN1bGF0ZVBvc2l0aW9ucygkdGhpcy0+Z2V0V2lkdGgoKSwgJHRoaXMtPmdldEhlaWdodCgpLCAkbGF5ZXItPmdldFdpZHRoKCksICRsYXllci0+Z2V0SGVpZ2h0KCksICRwb3NpdGlvblgsICRwb3NpdGlvblksICRwb3NpdGlvbik7DQoNCiAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXN0TGF5ZXJJZCBvZiB0aGUgd29ya3Nob3ANCiAgICAgICAgJHRoaXMtPmxhc3RMYXllcklkID0gJGxheWVySWQ7DQoNCiAgICAgICAgLy8gQWRkIHRoZSBsYXllciBsZXZlbCBpbiB0aGUgc3RhY2sNCiAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+aW5kZXhMZXZlbEluRG9jdW1lbnQoJGxheWVyTGV2ZWwsICRsYXllcklkKTsNCg0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnbGF5ZXJMZXZlbCcgPT4gJGxheWVyTGV2ZWwsDQogICAgICAgICAgICAnaWQnID0+ICRsYXllcklkLA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEluZGV4IGEgbGF5ZXIgbGV2ZWwgYW5kIHVwZGF0ZSB0aGUgbGF5ZXJzIGxldmVscyBpbiB0aGUgZG9jdW1lbnQNCiAgICAgKiBSZXR1cm4gdGhlIGNvcnJlY3RlZCBsZXZlbCBvZiB0aGUgbGF5ZXINCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRsYXllckxldmVsDQogICAgICogQHBhcmFtIGludGVnZXIgJGxheWVySWQNCiAgICAgKg0KICAgICAqIEByZXR1cm4gaW50ZWdlcg0KICAgICAqLw0KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmRleExldmVsSW5Eb2N1bWVudCgkbGF5ZXJMZXZlbCwgJGxheWVySWQpDQogICAgew0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkbGF5ZXJMZXZlbCwgJHRoaXMtPmxheWVyTGV2ZWxzKSkgeyAvLyBMZXZlbCBhbHJlYWR5IGV4aXN0cw0KIA0KICAgICAgICAgICAga3NvcnQoJHRoaXMtPmxheWVyTGV2ZWxzKTsgLy8gQWxsIGxheWVycyBhZnRlciB0aGlzIGxldmVsIGFuZCB0aGUgbGF5ZXIgd2hpY2ggaGF2ZSB0aGlzIGxldmVsIGFyZSB1cGRhdGVkDQogICAgICAgICAgICAkbGF5ZXJMZXZlbHNUbXAgPSAkdGhpcy0+bGF5ZXJMZXZlbHM7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKCRsYXllckxldmVsc1RtcCBhcyAkbGV2ZWxUbXAgPT4gJGxheWVySWRUbXApIHsNCiAgICAgICAgICAgICAgICBpZiAoJGxldmVsVG1wID49ICRsYXllckxldmVsKSB7DQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYXllckxldmVsc1skbGV2ZWxUbXAgKyAxXSA9ICRsYXllcklkVG1wOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdW5zZXQoJGxheWVyTGV2ZWxzVG1wKTsNCg0KICAgICAgICB9IGVsc2UgeyAvLyBMZXZlbCBpc24ndCB0YWtlbg0KICAgICAgICAgICAgaWYgKCR0aGlzLT5oaWdoZXN0TGF5ZXJMZXZlbCA8ICRsYXllckxldmVsKSB7IC8vIElmIGdpdmVuIGxldmVsIGlzIHRvbyBoaWdoLCBwcm9jZWVkIGFkanVzdGVtZW50DQogICAgICAgICAgICAgICAgJGxheWVyTGV2ZWwgPSAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgKyAxOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPmxheWVyTGV2ZWxzWyRsYXllckxldmVsXSA9ICRsYXllcklkOw0KICAgICAgICAkdGhpcy0+aGlnaGVzdExheWVyTGV2ZWwgPSBtYXgoYXJyYXlfZmxpcCgkdGhpcy0+bGF5ZXJMZXZlbHMpKTsgLy8gVXBkYXRlICRoaWdoZXN0TGF5ZXJMZXZlbA0KDQogICAgICAgIHJldHVybiAkbGF5ZXJMZXZlbDsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogVXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgbGF5ZXJzIGluIHRoZSBzdGFjayBhZnRlciBjcm9wcGluZw0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJHBvc2l0aW9uWA0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvblkNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckNyb3BwaW5nKCRwb3NpdGlvblgsICRwb3NpdGlvblkpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGF5ZXJzIGFzICRsYXllcklkID0+ICRsYXllcikgew0KDQogICAgICAgICAgICAkb2xkTGF5ZXJQb3NYID0gJHRoaXMtPmxheWVyUG9zaXRpb25zWyRsYXllcklkXVsneCddOw0KICAgICAgICAgICAgJG9sZExheWVyUG9zWSA9ICR0aGlzLT5sYXllclBvc2l0aW9uc1skbGF5ZXJJZF1bJ3knXTsNCg0KICAgICAgICAgICAgJG5ld0xheWVyUG9zWCA9ICRvbGRMYXllclBvc1ggKyAkcG9zaXRpb25YOw0KICAgICAgICAgICAgJG5ld0xheWVyUG9zWSA9ICRvbGRMYXllclBvc1kgKyAkcG9zaXRpb25ZOw0KDQogICAgICAgICAgICB1bnNldCgkdGhpcy0+bGF5ZXJQb3NpdGlvbnNbJGxheWVySWRdKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJHRoaXMtPmNoYW5nZVBvc2l0aW9uKCRsYXllcklkLCAkbmV3TGF5ZXJQb3NYLCAkbmV3TGF5ZXJQb3NZKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBSZXNpemUgdGhlIGJhY2tncm91bmQgb2YgYSBsYXllcg0KICAgICAqDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld1dpZHRoDQogICAgICogQHBhcmFtIGludGVnZXIgJG5ld0hlaWdodA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCYWNrZ3JvdW5kKCRuZXdXaWR0aCwgJG5ld0hlaWdodCkNCiAgICB7DQogICAgICAgICRvbGRXaWR0aCA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgJG9sZEhlaWdodCA9ICR0aGlzLT5oZWlnaHQ7DQoNCiAgICAgICAgJHRoaXMtPndpZHRoID0gJG5ld1dpZHRoOw0KICAgICAgICAkdGhpcy0+aGVpZ2h0ID0gJG5ld0hlaWdodDsNCg0KICAgICAgICAkdmlyZ2luTGF5b3V0SW1hZ2UgPSBJbWFnZVdvcmtzaG9wTGliOjpnZW5lcmF0ZUltYWdlKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7DQoNCiAgICAgICAgaW1hZ2Vjb3B5cmVzYW1wbGVkKCR2aXJnaW5MYXlvdXRJbWFnZSwgJHRoaXMtPmltYWdlLCAwLCAwLCAwLCAwLCAkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQsICRvbGRXaWR0aCwgJG9sZEhlaWdodCk7DQoNCiAgICAgICAgdW5zZXQoJHRoaXMtPmltYWdlKTsNCiAgICAgICAgJHRoaXMtPmltYWdlID0gJHZpcmdpbkxheW91dEltYWdlOw0KICAgIH0NCiAgICANCiAgICAvLyBEZXByZWNhdGVkLCBkb24ndCB1c2UgYW55bW9yZQ0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICAgIA0KICAgIC8qKg0KCSAqIEBkZXByZWNhdGVkDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIHJlc2l6ZUluUG91cmNlbnQoJHBlcmNlbnRXaWR0aCA9IG51bGwsICRwZXJjZW50SGVpZ2h0ID0gbnVsbCwgJGNvbnZlcnNlUHJvcG9ydGlvbiA9IGZhbHNlLCAkcG9zaXRpb25YID0gMCwgJHBvc2l0aW9uWSA9IDAsICRwb3NpdGlvbiA9ICdNTScpDQogICAgew0KCQl0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdNZXRob2QgcmVzaXplSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIHJlc2l6ZUluUGVyY2VudCgpLiBVc2UgcmVzaXplSW5QZXJjZW50KCkgaW5zdGVhZC4nLCBzdGF0aWM6Ok1FVEhPRF9ERVBSRUNBVEVEKTsNCiAgICB9DQoJDQoJLyoqDQogICAgICogQGRlcHJlY2F0ZWQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzaXplQnlMYXJnZXN0U2lkZUluUG91cmNlbnQoJG5ld0xhcmdlc3RTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCByZXNpemVCeUxhcmdlc3RTaWRlSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoKS4gVXNlIHJlc2l6ZUJ5TGFyZ2VzdFNpZGVJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KICAgIH0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNpemVCeU5hcnJvd1NpZGVJblBvdXJjZW50KCRuZXdOYXJyb3dTaWRlV2lkdGgsICRjb252ZXJzZVByb3BvcnRpb24gPSBmYWxzZSkNCiAgICB7DQogICAgICAgIHRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCByZXNpemVCeU5hcnJvd1NpZGVJblBvdXJjZW50KCkgd2FzIHJlbmFtZWQgcmVzaXplQnlOYXJyb3dTaWRlSW5QZXJjZW50KCkuIFVzZSByZXNpemVCeU5hcnJvd1NpZGVJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KICAgIH0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wSW5Qb3VyY2VudCgkcGVyY2VudFdpZHRoID0gMCwgJHBlcmNlbnRIZWlnaHQgPSAwLCAkcG9zaXRpb25YUGVyY2VudCA9IDAsICRwb3NpdGlvbllQZXJjZW50ID0gMCwgJHBvc2l0aW9uID0gJ0xUJykNCiAgICB7DQoJCXRocm93IG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXJFeGNlcHRpb24oJ01ldGhvZCBjcm9wSW5Qb3VyY2VudCgpIHdhcyByZW5hbWVkIGNyb3BJblBlcmNlbnQoKS4gVXNlIGNyb3BJblBlcmNlbnQoKSBpbnN0ZWFkLicsIHN0YXRpYzo6TUVUSE9EX0RFUFJFQ0FURUQpOw0KCX0NCgkNCgkvKioNCiAgICAgKiBAZGVwcmVjYXRlZA0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBjcm9wTWF4aW11bUluUG91cmNlbnQoJHBvc2l0aW9uWFBlcmNlbnQgPSAwLCAkcG9zaXRpb25ZUGVyY2VudCA9IDAsICRwb3NpdGlvbiA9ICdMVCcpDQogICAgew0KICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyRXhjZXB0aW9uKCdNZXRob2QgY3JvcE1heGltdW1JblBvdXJjZW50KCkgd2FzIHJlbmFtZWQgY3JvcE1heGltdW1JblBlcmNlbnQoKS4gVXNlIGNyb3BNYXhpbXVtSW5QZXJjZW50KCkgaW5zdGVhZC4nLCBzdGF0aWM6Ok1FVEhPRF9ERVBSRUNBVEVEKTsNCiAgICB9DQp9DQoNCg0KLyoqDQogKiBJbWFnZVdvcmtzaG9wIGNsYXNzDQogKiANCiAqIFVzZSB0aGlzIGNsYXNzIGFzIGEgZmFjdG9yeSB0byBpbml0aWFsaXplIEltYWdlV29ya3Nob3AgbGF5ZXJzDQogKg0KICogQHZlcnNpb24gMi4wLjANCiAqIEBsaW5rIGh0dHA6Ly9waHBpbWFnZXdvcmtzaG9wLmNvbQ0KICogQGF1dGhvciBTeWJpbyAoQ2zDqW1lbnQgR3VpbGxlbWFpbiAvIEBTeWJpbzAxKQ0KICogQGxpY2Vuc2UgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEltYWdlV29ya3Nob3ANCnsNCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXINCiAgICAgKi8NCiAgICBjb25zdCBFUlJPUl9OT1RfQU5fSU1BR0VfRklMRSA9IDE7DQogICAgDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyDQogICAgICovDQogICAgY29uc3QgRVJST1JfSU1BR0VfTk9UX0ZPVU5EID0gMjsNCiAgICANCiAgICAvKioNCiAgICAgKiBJbml0aWFsaXplIGEgbGF5ZXIgZnJvbSBhIGdpdmVuIGltYWdlIHBhdGgNCiAgICAgKiANCiAgICAgKiBGcm9tIGFuIHVwbG9hZCBmb3JtLCB5b3UgY2FuIGdpdmUgdGhlICJ0bXBfbmFtZSIgcGF0aA0KICAgICAqIA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGgNCiAgICAgKiANCiAgICAgKiBAcmV0dXJuIEltYWdlV29ya3Nob3BMYXllcg0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5pdEZyb21QYXRoKCRwYXRoKQ0KICAgIHsNCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSAmJiAhaXNfZGlyKCRwYXRoKSkgew0KICAgICAgICAgICAgDQogICAgICAgICAgICAkaW1hZ2VTaXplSW5mb3MgPSBnZXRJbWFnZVNpemUoJHBhdGgpOw0KICAgICAgICAgICAgJG1pbWVDb250ZW50VHlwZSA9IGV4cGxvZGUoJy8nLCAkaW1hZ2VTaXplSW5mb3NbJ21pbWUnXSk7DQogICAgICAgICAgICAkbWltZUNvbnRlbnRUeXBlID0gJG1pbWVDb250ZW50VHlwZVsxXTsNCg0KICAgICAgICAgICAgc3dpdGNoICgkbWltZUNvbnRlbnRUeXBlKSB7DQogICAgICAgICAgICAgICAgY2FzZSAnanBlZyc6DQogICAgICAgICAgICAgICAgICAgICRpbWFnZSA9IGltYWdlQ3JlYXRlRnJvbUpQRUcoJHBhdGgpOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgY2FzZSAnZ2lmJzoNCiAgICAgICAgICAgICAgICAgICAgJGltYWdlID0gaW1hZ2VDcmVhdGVGcm9tR0lGKCRwYXRoKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgIGNhc2UgJ3BuZyc6DQogICAgICAgICAgICAgICAgICAgICRpbWFnZSA9IGltYWdlQ3JlYXRlRnJvbVBORygkcGF0aCk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW1hZ2VXb3Jrc2hvcEV4Y2VwdGlvbignTm90IGFuIGltYWdlIGZpbGUgKGpwZWcvcG5nL2dpZikgYXQgIicuJHBhdGguJyInLCBzdGF0aWM6OkVSUk9SX05PVF9BTl9JTUFHRV9GSUxFKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXIoJGltYWdlKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdGhyb3cgbmV3IEltYWdlV29ya3Nob3BFeGNlcHRpb24oJ05vIHN1Y2ggZmlsZSBmb3VuZCBhdCAiJy4kcGF0aC4nIicsIHN0YXRpYzo6RVJST1JfSU1BR0VfTk9UX0ZPVU5EKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogSW5pdGlhbGl6ZSBhIHRleHQgbGF5ZXINCiAgICAgKiANCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0DQogICAgICogQHBhcmFtIHN0cmluZyAkZm9udFBhdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZm9udFNpemUNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb250Q29sb3INCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkdGV4dFJvdGF0aW9uDQogICAgICogQHBhcmFtIGludGVnZXIgJGJhY2tncm91bmRDb2xvcg0KICAgICAqIA0KICAgICAqIEByZXR1cm4gSW1hZ2VXb3Jrc2hvcExheWVyDQogICAgICovDQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbml0VGV4dExheWVyKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSA9IDEzLCAkZm9udENvbG9yID0gJ2ZmZmZmZicsICR0ZXh0Um90YXRpb24gPSAwLCAkYmFja2dyb3VuZENvbG9yID0gbnVsbCkNCiAgICB7DQogICAgICAgICR0ZXh0RGltZW5zaW9ucyA9IEltYWdlV29ya3Nob3BMaWI6OmdldFRleHRCb3hEaW1lbnNpb24oJGZvbnRTaXplLCAkdGV4dFJvdGF0aW9uLCAkZm9udFBhdGgsICR0ZXh0KTsNCg0KICAgICAgICAkbGF5ZXIgPSBzdGF0aWM6OmluaXRWaXJnaW5MYXllcigkdGV4dERpbWVuc2lvbnNbJ3dpZHRoJ10sICR0ZXh0RGltZW5zaW9uc1snaGVpZ2h0J10sICRiYWNrZ3JvdW5kQ29sb3IpOw0KICAgICAgICAkbGF5ZXItPndyaXRlKCR0ZXh0LCAkZm9udFBhdGgsICRmb250U2l6ZSwgJGZvbnRDb2xvciwgJHRleHREaW1lbnNpb25zWydsZWZ0J10sICR0ZXh0RGltZW5zaW9uc1sndG9wJ10sICR0ZXh0Um90YXRpb24pOw0KICAgICAgICANCiAgICAgICAgcmV0dXJuICRsYXllcjsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogSW5pdGlhbGl6ZSBhIG5ldyB2aXJnaW4gbGF5ZXINCiAgICAgKiANCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkd2lkdGgNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaGVpZ2h0DQogICAgICogQHBhcmFtIHN0cmluZyAkYmFja2dyb3VuZENvbG9yDQogICAgICogDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wTGF5ZXINCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXRWaXJnaW5MYXllcigkd2lkdGggPSAxMDAsICRoZWlnaHQgPSAxMDAsICRiYWNrZ3JvdW5kQ29sb3IgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJG9wYWNpdHkgPSAwOw0KICAgICAgICANCiAgICAgICAgaWYgKCEkYmFja2dyb3VuZENvbG9yIHx8ICRiYWNrZ3JvdW5kQ29sb3IgPT0gJ3RyYW5zcGFyZW50Jykgew0KICAgICAgICAgICAgJG9wYWNpdHkgPSAxMjc7DQogICAgICAgICAgICAkYmFja2dyb3VuZENvbG9yID0gJ2ZmZmZmZic7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyKEltYWdlV29ya3Nob3BMaWI6OmdlbmVyYXRlSW1hZ2UoJHdpZHRoLCAkaGVpZ2h0LCAkYmFja2dyb3VuZENvbG9yLCAkb3BhY2l0eSkpOw0KICAgIH0NCiAgICANCiAgICAvKioNCiAgICAgKiBJbml0aWFsaXplIGEgbGF5ZXIgZnJvbSBhIHJlc291cmNlIGltYWdlIHZhcg0KICAgICAqIA0KICAgICAqIEBwYXJhbSBccmVzb3VyY2UgJGltYWdlDQogICAgICogDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wTGF5ZXINCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXRGcm9tUmVzb3VyY2VWYXIoJGltYWdlKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIG5ldyBJbWFnZVdvcmtzaG9wTGF5ZXIoJGltYWdlKTsNCiAgICB9DQogICAgDQogICAgLyoqDQogICAgICogSW5pdGlhbGl6ZSBhIGxheWVyIGZyb20gYSBzdHJpbmcgKG9idGFpbnMgd2l0aCBmaWxlX2dldF9jb250ZW50cywgY1VSTC4uLikNCiAgICAgKiANCiAgICAgKiBUaGlzIG5vdCByZWNvbW1hbmRlZCB0byBpbml0aWFsaXplIEpQRUcgc3RyaW5nIHdpdGggdGhpcyBtZXRob2QsIEdEIGRpc3BsYXlzIGJ1Z3MgIQ0KICAgICAqIA0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGltYWdlU3RyaW5nDQogICAgICogDQogICAgICogQHJldHVybiBJbWFnZVdvcmtzaG9wTGF5ZXINCiAgICAgKi8NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXRGcm9tU3RyaW5nKCRpbWFnZVN0cmluZykNCiAgICB7DQogICAgICAgIHJldHVybiBuZXcgSW1hZ2VXb3Jrc2hvcExheWVyKGltYWdlQ3JlYXRlRnJvbVN0cmluZygkaW1hZ2VTdHJpbmcpKTsNCiAgICB9DQp9]]></data>
	</file>
	<file>
	  <filename>/log/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/log/tbLog.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQovLyBDaGVjayBhdXRob3Jpc2F0aW9uDQppZighaXNfb2JqZWN0KGNtc21zKCkpKSBleGl0Ow0KDQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvY2xhc3MudGJVdGlscy5waHAnKTsNCg0KLy8gc2V0dXAgZGlyZWN0b3JpZXMgYW5kL29yIGNoZWNrIGlmIHdyaXRhYmxlDQokZGlycyA9IGFycmF5KCAnbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcycsICdtb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2NzcycsICdtb2R1bGVzL1Rvb2xCb3gvbG9nJywgJ3VwbG9hZHMvVG9vbEJveCcsICd1cGxvYWRzL1Rvb2xCb3gvQXV0b0xpZ2h0Qm94JywgJ3VwbG9hZHMvVG9vbEJveC9DU1YnKTsNCmZvcmVhY2ggKCAkZGlycyBhcyAkZGlyICkNCnsNCglpZiggIWlzX2RpcignLi4vJy4kZGlyKSApDQoJew0KCQlAbWtkaXIoc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAnLi4vJy4kZGlyKSk7DQoJfQ0KCWlmKCAhaXNfd3JpdGFibGUoJy4uLycuJGRpcikgKQ0KCXsNCgkJLy9yZXR1cm4gZXJyb3IgdG8gTW9kdWxlTWFuYWdlcg0KCQkkdG1wID0gbGFuZygnZXJyb3JkaXJlY3Rvcnlub3R3cml0YWJsZScpLiAnID4gJyAuICRkaXI7DQoJCXJldHVybiAkdG1wOw0KCX0NCn0NCg0KDQovLyBHZXQgZGIgaGFuZGxlDQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCR0YkRiKTsNCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJywgJ215c3FsaScgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJyk7DQoNCi8vIENyZWF0ZSB1cmwgcmVkaXJlY3QgdGFibGUNCiRmbGRzID0gJ2lkIEkgS0VZIEFVVE8scGFnZV9pZCBJLHRvdXJsIEMoMjUwKSx1cmwgQygyNTApLHVybF9yZWdleHAgSSgxKSxhY3RpdmUgSSgxKSxub3RlcyBYLGNyZWF0ZWRfZGF0ZSAnLkNNU19BRE9EQl9EVC4nLG1vZGlmaWVkX2RhdGUgJy5DTVNfQURPREJfRFQ7DQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9yZWRpcmVjdCcsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBDcmVhdGUgbG9nIHRhYmxlDQokZmxkcyA9ICdpZCBJIEtFWSBBVVRPLHBhZ2VfaWQgSSxkb21haW4gQygxMDApLHVybCBDKDIwMCkscmVmZXJlciBDKDIwMCksc2VhcmNoZW5naW5lIEMoNTApLGJvdCBDKDUwKSxrZXl3b3JkIEMoMTAwKSxzZXNzaW9uaWQgQyg1MCksdmlzaXR0aW1lICcuQ01TX0FET0RCX0RUOw0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nJywgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIENyZWF0ZSBsb2cgc3VtbWFyeSB0YWJsZQ0KJGZsZHMgPSAnaWQgSSBLRVkgQVVUTyxwZXJpb2QgQyg1KSx2YWx1ZSBJKDQpLHR5cGUgSSgxKSx1cmwgQygyMDApLHZpc2l0cyBJLHBhZ2VfaWQgSSxzZWFyY2hlbmdpbmUgQyg1MCksa2V5d29yZCBDKDEwMCkscmVmZXJlciBDKDIwMCksY3JlYXRlZF9kYXRlICcuQ01TX0FET0RCX0RUOw0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nc3VtJywgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIENyZWF0ZSBlcnJvciAoNDA0KSB0YWJsZQ0KJGZsZHMgPSAnaWQgSSBLRVkgQVVUTyxmcm9tdXJsIEMoMjUwKSx0b3VybCBDKDI1MCksdmlzaXRzIEkoOCksY3JlYXRlZF9kYXRlICcuQ01TX0FET0RCX0RULicsbW9kaWZpZWRfZGF0ZSAnLkNNU19BRE9EQl9EVDsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycycsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBDcmVhdGUgZXJyb3IgKDQwNCkgaWdub3JlIHRhYmxlDQokZmxkcyA9ICdpZCBJIEtFWSBBVVRPLGl1cmwgQygyNTApLGlyZWdleHAgSSgxKSxjcmVhdGVkX2RhdGUgJy5DTVNfQURPREJfRFQuJyxtb2RpZmllZF9kYXRlICcuQ01TX0FET0RCX0RUOw0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzX2lnbm9yZScsICRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBDcmVhdGUgZGVidWcgdGFibGUNCiRmbGRzID0gJ2lkIEkgS0VZIEFVVE8sc2Vzc2lvbl9pZCBDKDI1MCksaXAgQygyNSksZnJvbXVybCBDKDI1MCksdG91cmwgQygyNTApLHN0YXR1cyBDKDI1MCksY3JlYXRlZF9kYXRlICcuQ01TX0FET0RCX0RULicsbW9kaWZpZWRfZGF0ZSAnLkNNU19BRE9EQl9EVDsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2RlYnVnJywgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIFRlbXBsYXRlcw0KJGZsZHMgPSAiDQoJdGVtcGxhdGVpZCBJIEtFWSBBVVRPLA0KCXRlbXBsYXRlIEMoMjU1KSwNCiAgCXZlcnNpb24gQygyMCksDQoJYWJvdXQgWCwNCgl0cGxzZWN0aW9uIEMoMjApLA0KCXNlY3Rpb24gQygyMCksDQoJanF1ZXJ5IEksDQoJanF1ZXJ5X293biBJLA0KCXZpc2libGUgSSwNCglvcHRpb25zIFgyDQoiOw0KDQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcyIsCSRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyB0d2l0dGVyDQokZmxkcyA9ICINCgl0d2l0dGVyaWQgSSBLRVkgQVVUTywNCgloYXNoIEMoMjU1KSwNCglpZCBJOCwNCgljcmVhdGVkX2F0IEMoMzApLA0KCXR3ZGF0ZSBEVCwNCgl1c2VyaWQgSTgsDQoJc2NyZWVubmFtZSBDKDI1NSksDQoJc2NyZWVubmFtZV91cmwgQygyNTUpLA0KCWltZ191cmwgQygyNTUpLA0KCWltZ191cmxfaHR0cHMgQygyNTUpLA0KCWF1dGhvciBDKDI1NSksDQoJc291cmNlIEMoMjU1KSwNCglsb2NhdGlvbiBDKDI1NSksDQoJdGV4dCBYLA0KCXJldHdlZXRfY291bnQgSSwNCglmYXZvcml0ZWQgSSwNCglyZXR3ZWV0X2lkIEMoMjU1KSwNCglyZXR3ZWV0X3R3ZGF0ZSBEVCwNCglyZXR3ZWV0X3VzZXJpZCBJOCwNCglyZXR3ZWV0X3NjcmVlbm5hbWUgQygyNTUpLA0KCXJldHdlZXRfc2NyZWVubmFtZV91cmwgQygyNTUpLA0KCXJldHdlZXRfYXV0aG9yIEMoMjU1KSwNCglyZXR3ZWV0X2ltZ191cmwgQygyNTUpLA0KCXJldHdlZXRfaW1nX2h0dHBzIEMoMjU1KSwNCglyZXR3ZWV0X3NvdXJjZSBDKDI1NSksDQoJcmV0d2VldF9sb2NhdGlvbiBDKDI1NSksDQoJcmV0d2VldF90ZXh0IFgsDQoJanNvbmRhdGEgWA0KIjsNCg0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90b29sYm94X3R3IiwJJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIHR3aXR0ZXINCiRmbGRzID0gIg0KCWhhc2ggQygyNTUpIEtFWSwNCgl0aW1lc3RhbXAgRFQNCiI7DQoNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdG9vbGJveF90d3VwZGF0ZSIsCSRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQoNCi8vIENTVg0KJGZsZHMgPSAiDQoJZmlsZW5yIEkgS0VZIEFVVE8sDQoJZmlsZW5hbWUgQygyNTUpLA0KCXBhdGggWCg1MDApLA0KCWZpbGVzaXplIEk4LA0KCWxhc3R1cGRhdGUgRFQNCiI7DQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Rvb2xib3hfY3N2IiwJJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCg0KLy8gQ2hlY2sgb2xkIE11bHRpRG9tYWlucyBzZXR0aW5ncw0KJG1kX29sZHVybCA9ICR0YkRiLT5HZXRPbmUoJ1NFTEVDVCBzaXRlcHJlZl92YWx1ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidzaXRlcHJlZnMgV0hFUkUgc2l0ZXByZWZfbmFtZSBsaWtlICJNdWx0aURvbWFpbnNfbWFwaV9wcmVmX29sZHVybF91c2UiJywgYXJyYXkoKSk7DQppZiAoISRtZF9vbGR1cmwpICRtZF9vbGR1cmwgPSAwOw0KJG1kXzQwNCA9ICR0YkRiLT5HZXRPbmUoJ1NFTEVDVCBzaXRlcHJlZl92YWx1ZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidzaXRlcHJlZnMgV0hFUkUgc2l0ZXByZWZfbmFtZSBsaWtlICJNdWx0aURvbWFpbnNfbWFwaV9wcmVmX3N0YXRzXzQwNCInLCBhcnJheSgpKTsNCmlmICghJG1kXzQwNCkgJG1kXzQwNCA9IDA7DQoNCg0KLy8gU2V0IHBlcm1pc3Npb24NCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcsICdNYW5hZ2UgVG9vbEJveCcpOw0KDQovLyBQcmVmZXJlbmNlcw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RvbnRfdXNlX2V2ZW50X2hhbmRsZXInLDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N0YXRzX3VzZScsMCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHNfNDA0JywkbWRfNDA0ID8gJG1kXzQwNCA6IDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21heF80MDQnLDEwMCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHNfZGFpbHknLDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N0YXRzX2VtYWlsJywnJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZScsJG1kX29sZHVybCA/ICRtZF9vbGR1cmwgOiAwKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlX2NkYXRlJywwKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdvbGR1cmxfdXNlX21kYXRlJywwKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYXknLGRhdGUoJ1ltZCcpKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtb250aCcsZGF0ZSgnWW0nKSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgneWVhcicsZGF0ZSgnWScpKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWJ1Z191c2UnLDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnLDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltcG9ydF9tdWx0aWRvbWFpbnNfY291bnQnLDApOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbmlmeScsMSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnanNfZm9vdGVyJywxKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfZGVsaW1pdGVyIiwiOyIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoImNzdl9maWxlY2hhcnNldCIsImlzby04ODU5LTEiKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfY21zY2hhcnNldCIsIlVURi04Iik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiYXV0b2xpZ2h0Ym94X3VybHR5cGUiLCJyZWxhdGl2ZSIpOw0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgid21pX3Bvc3giLCIxMCIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoIndtaV9wb3N5IiwiMTAiKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bWlfcG9zIiwiTEIiKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bWlfcmVsc2l6ZSIsIjMwIik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3Bvc3giLCIxMCIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoIndtdF9wb3N5IiwiMTAiKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfcG9zIiwiTEIiKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfc2l6ZSIsIjEyIik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X2NvbG9yIiwiZmZmZmZmIik7DQoNCg0KLy8gc2V0dXAgdGVtcGxhdGVzDQokdGVtcGxhdGVzID0gYXJyYXkoIA0KCQkJCQknYXV0b2xpZ2h0Ym94JyA9PiBhcnJheSgnZmFuY3lib3gnLCdqcXVlcnktbGlnaHRib3gnKSwgDQoJCQkJCSd0d2l0dGVyZmVlZCcgPT4gYXJyYXkoJ3R3aXR0ZXJmZWVkJyksIA0KCQkJCQknc29jaWFsc2hhcmVwcml2YWN5JyA9PiBhcnJheSgnc29jaWFsc2hhcmVwcml2YWN5JykNCgkJCQkJKTsNCgkJCQkJDQpmb3JlYWNoICggJHRlbXBsYXRlcyBhcyAkc2VjdGlvbiA9PiAkdHBsYXJyYXkgKQ0Kew0KCWZvcmVhY2goJHRwbGFycmF5IGFzICR0ZW1wbGF0ZSkgew0KCQkkZm4gPSB0YlV0aWxzOjpnZXRUcGxYTUxGaWxlKCRzZWN0aW9uLCAkdGVtcGxhdGUpOw0KCQlpZiggZmlsZV9leGlzdHMoICRmbiApICkNCgkJew0KCQkJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQoJCQkNCgkJCWlmIChpbl9hcnJheSgkdGVtcGxhdGUsIGFycmF5KCdmYW5jeWJveCcsJ3R3aXR0ZXJmZWVkJykpKQ0KCQkJCSRzZXRDdXJyZW50ID0gdHJ1ZTsNCgkJCWVsc2UJDQoJCQkJJHNldEN1cnJlbnQgPSBmYWxzZTsNCgkJCQ0KCQkJaWYgKCF0YlV0aWxzOjppbXBvcnRUZW1wbGF0ZSgkdGhpcywgJHhtbCwgdHJ1ZSwgJHNldEN1cnJlbnQpKSB7DQoJCQkJJGVycm9yID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7DQoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ107DQoJCQl9DQoJCX0NCgkJZWxzZSB7DQoJCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90cGFyc2V4bWwnKS4nICcuJGZuOw0KCQl9DQoJfQ0KfQ0KDQovLyBFdmVudHMNCiR0aGlzLT5SZWdpc3RlckV2ZW50cygpOw0KDQovLyBXcml0ZSBtZXNzYWdlIHRvIGFkbWluIGxvZw0KJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsNCg0KLy8gRU9G]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KDQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvY2xhc3MudGJVdGlscy5waHAnKTsNCg0KLy8gQ2hlY2sgYXV0aG9yaXNhdGlvbg0KaWYoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsNCg0KLy8gRGVsZXRlIGFsbCB0ZW1wbGF0ZXMNCiRhbGx0ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOw0KZm9yZWFjaCAoJGFsbHRlbXBsYXRlcyBhcyAkdHBsKQ0Kew0KCWVjaG8gJHRwbDsNCgl0YlV0aWxzOjpkZWxldGVUZW1wbGF0ZSgkdGhpcywgJHRwbCk7DQp9DQoNCi8vIGNoYW5nZSBwZXJtaXNzaW9uIG9mIGFsbCBUb29sQm94IGZvbGRlciB0byA3NzcgKHNvIHRoZXkgY2FuIGRlbGV0ZWQgYnkgZnRwKQ0KJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KdGJVdGlsczo6cmVjdXJzaXZlQ2htb2QoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uIi9Ub29sQm94IiwwNzc3LDA3NzcpOw0KdGJVdGlsczo6cmVjdXJzaXZlQ2htb2QoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10uIi9BdXRvTGlnaHRCb3giLDA3NzcsMDc3Nyk7DQoNCg0KLy8gR2V0IERCIGluc3RhbmNlIGFuZCBtYWtlIERCIHNldHRpbmdzDQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCR0YkRiKTsNCg0KLy8gRGVsZXRlIGRiIHRhYmxlcw0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9yZWRpcmVjdCcgKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfbG9nJyApOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF9sb2dzdW0nICk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X2Vycm9ycycgKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZXJyb3JzX2lnbm9yZScgKTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfZGVidWcnICk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90b29sYm94X3RlbXBsYXRlcHJvcHMnICk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIFJlbW92ZSBtb2R1bGUgcGVybWlzc2lvbnMNCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgVG9vbEJveCcpOw0KDQovLyBSZW1vdmUgRXZlbnRzDQokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudFBvc3RSZW5kZXInKTsNCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RWRpdFByZScpOw0KJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ05ld3NBcnRpY2xlQWRkZWQnKTsNCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCdOZXdzQXJ0aWNsZUVkaXRlZCcpOw0KJG9iaiA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgiQ0dCbG9nIik7DQppZiggaXNfb2JqZWN0KCRvYmopICkgIHsNCgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ0dCbG9nQXJ0aWNsZUFkZGVkJyk7DQoJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NHQmxvZ0FydGljbGVFZGl0ZWQnKTsNCn0NCg0KLy8gUmVtb3ZlIG1vZHVsZSBwcmVmZXJlbmNlcw0KJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsNCg0KLy8gcmVtb3ZlIGFsbCB0ZW1wbGF0ZXMNCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOw0KDQovLyByZW1vdmUgY2FjaGUgZmlsZXMNCiRtYXNrID0gIHN0cl9yZXBsYWNlKCIvIixESVJFQ1RPUllfU0VQQVJBVE9SLCRjb25maWdbJ3Jvb3RfcGF0aCddLiIvdG1wL2NhY2hlL1Rvb2xCb3gqIik7DQphcnJheV9tYXAoICJ1bmxpbmsiLCBnbG9iKCAkbWFzayApICk7DQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSANCk1vZHVsZTogVG9vbEJveA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCi8vIENoZWNrIGF1dGhvcmlzYXRpb24NCmlmKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7DQoNCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2xpYi9jbGFzcy50YlV0aWxzLnBocCcpOw0KDQovLyBHZXQgdmVyc2lvbg0KJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOw0KDQovLyBzZXR1cCBkaXJlY3RvcmllcyBhbmQvb3IgY2hlY2sgaWYgd3JpdGFibGUNCiRkaXJzID0gYXJyYXkoICdtb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzJywgJ21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvY3NzJywgJ21vZHVsZXMvVG9vbEJveC9sb2cnLCAndXBsb2Fkcy9Ub29sQm94JywgJ3VwbG9hZHMvVG9vbEJveC9BdXRvTGlnaHRCb3gnLCAndXBsb2Fkcy9Ub29sQm94L0NTVicpOw0KZm9yZWFjaCAoICRkaXJzIGFzICRkaXIgKQ0Kew0KCWlmKCAhaXNfZGlyKCcuLi8nLiRkaXIpICkNCgl7DQoJCUBta2RpcihzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsICcuLi8nLiRkaXIpKTsNCgl9DQoJaWYoICFpc193cml0YWJsZSgnLi4vJy4kZGlyKSApDQoJew0KCQkvL3JldHVybiBlcnJvciB0byBNb2R1bGVNYW5hZ2VyDQoJCSR0bXAgPSBsYW5nKCdlcnJvcmRpcmVjdG9yeW5vdHdyaXRhYmxlJykuICcgPiAnIC4gJGRpcjsNCgkJcmV0dXJuICR0bXA7DQoJfQ0KfQ0KDQovLyBHZXQgZGIgaGFuZGxlDQokdGJEYiA9IGNtc21zKCktPkdldERiKCk7DQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCR0YkRiKTsNCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJywgJ215c3FsaScgPT4gJ0VOR0lORSBNeUlTQU0gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJyk7DQoNCnN3aXRjaCAoJGN1cnJlbnRfdmVyc2lvbikgew0KCWNhc2UgJzEuMCc6DQoJCS8vIENyZWF0ZSBleHRyYSBkb21haW4gdGFibGUNCgkJIyRmbGRzID0gImlkIEkgS0VZIEFVVE8sZG9tYWluX2lkIEksZG9tYWluIEMoMTAwKSxjcmVhdGVkX2RhdGUgIi5DTVNfQURPREJfRFQuIixtb2RpZmllZF9kYXRlICIuQ01TX0FET0RCX0RUOw0KCQkjJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Rvb2xib3hfZXh0cmFkb21haW5zIiwgJGZsZHMsICR0YWJvcHRhcnJheSk7DQoJCSMkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCS8vIFNldCBwcmVmZXJlbmNlIGZvciBkZXZlbG9wbWVudCBkb21haW4NCgkJIyR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXZkb21haW4nLDApOw0KCQkjJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RldmlwJywnJyk7DQoJCS8vIEFkZCBjb2x1bW4gZm9yIGRldmVsb3BtZW50IGRvbWFpbg0KCQkjJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90b29sYm94IiwgImRldmRvbWFpbiBDKDEwMCkiKTsNCgkJIyRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJLy8gU2V0IG5ldyBjdXJyZW50IHZlcnNpb24NCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjAuMSc7DQoJY2FzZSAnMS4wLjEnOg0KCQkvLyBzZXR1cCBkaXJlY3RvcmllcyBhbmQvb3IgY2hlY2sgaWYgd3JpdGFibGUNCgkJJGRpcnMgPSBhcnJheSggJ21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMnLCAnbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MnLCAnbW9kdWxlcy9Ub29sQm94L2xvZycpOw0KCQlmb3JlYWNoICggJGRpcnMgYXMgJGRpciApDQoJCXsNCgkJCWlmKCAhaXNfZGlyKCcuLi8nLiRkaXIpICkNCgkJCXsNCgkJCQlAbWtkaXIoc3RyX3JlcGxhY2UoJy8nLCBESVJFQ1RPUllfU0VQQVJBVE9SLCAnLi4vJy4kZGlyKSk7DQoJCQl9DQoJCQlpZiggIWlzX3dyaXRhYmxlKCcuLi8nLiRkaXIpICkNCgkJCXsNCgkJCQkvL3JldHVybiBlcnJvciB0byBNb2R1bGVNYW5hZ2VyDQoJCQkJJHRtcCA9IGxhbmcoJ2Vycm9yZGlyZWN0b3J5bm90d3JpdGFibGUnKS4gJyA+ICcgLiAkZGlyOw0KCQkJCXJldHVybiAkdG1wOw0KCQkJfQ0KCQl9DQoJCS8vIFNldCBwcmVmZXJlbmNlIGZvciBzb2NpYWwgbWVkaWEgYnV0dG9ucw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc29jaWFsc2hhcmVwcml2YWN5X3VzZScsMCk7DQoJCS8vIFNldCBwcmVmZXJlbmNlIGZvciBkYXRhIGltcG9ydCAoTXVsdGlEb21haW5zKQ0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1wb3J0X211bHRpZG9tYWluc19jb3VudCcsMCk7DQoJCQ0KCQkNCgkJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidUb29sQm94LXRwbC1zb2NpYWxzaGFyZXByaXZhY3ktc29jaWFsc2hhcmVwcml2YWN5LnhtbCc7DQoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQ0KCQl7DQoJCQkkeG1sID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJCWlmICghdGJVdGlsczo6aW1wb3J0VGVtcGxhdGUoJHRoaXMsICR4bWwsIHRydWUpKSB7DQoJCQkJJGVycm9yID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7DQoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ107DQoJCQl9DQoJCX0NCgkJDQoJCQ0KCQkNCgkJLy8gU2V0IG5ldyBjdXJyZW50IHZlcnNpb24NCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjEuMCc7DQoNCgljYXNlICcxLjEuMCc6DQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4xLjEnOw0KCQkNCgljYXNlICcxLjEuMSc6DQoJCS8vIFNldCBwcmVmZXJlbmNlIGZvciBhdXRvbGlnaHRib3gNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnLDApOw0KCQkNCgkJLy8gc2V0dXAgZGlyZWN0b3JpZXMgYW5kL29yIGNoZWNrIGlmIHdyaXRhYmxlDQoJCSRkaXJzID0gYXJyYXkoICdtb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzJywgJ3VwbG9hZHMvQXV0b0xpZ2h0Qm94Jyk7DQoJCWZvcmVhY2ggKCAkZGlycyBhcyAkZGlyICkNCgkJew0KCQkJaWYoICFpc19kaXIoJy4uLycuJGRpcikgKQ0KCQkJew0KCQkJCUBta2RpcihzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsICcuLi8nLiRkaXIpKTsNCgkJCX0NCgkJCWlmKCAhaXNfd3JpdGFibGUoJy4uLycuJGRpcikgKQ0KCQkJew0KCQkJCS8vcmV0dXJuIGVycm9yIHRvIE1vZHVsZU1hbmFnZXINCgkJCQkkdG1wID0gbGFuZygnZXJyb3JkaXJlY3Rvcnlub3R3cml0YWJsZScpLiAnID4gJyAuICRkaXI7DQoJCQkJcmV0dXJuICR0bXA7DQoJCQl9DQoJCX0NCgkJDQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4yLjAnOwkNCgkJDQoJY2FzZSAnMS4yLjAnOg0KDQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4yLjEnOw0KCQkNCgljYXNlICcxLjIuMSc6DQoNCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjIuMic7CQ0KCQkNCgljYXNlICcxLjIuMic6DQoJCQ0KCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KCQkvLyBUZW1wbGF0ZXMNCgkJJGZsZHMgPSAiDQoJCQl0ZW1wbGF0ZWlkIEkgS0VZIEFVVE8sDQoJCQl0ZW1wbGF0ZSBDKDI1NSksDQoJCSAgCXZlcnNpb24gQygyMCksDQoJCQlhYm91dCBYLA0KCQkJc2VjdGlvbiBDKDIwKSwNCgkJCXZpc2libGUgSQ0KCQkiOw0KCQkNCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90b29sYm94X3RlbXBsYXRlcHJvcHMiLAkkZmxkcywgJHRhYm9wdGFycmF5KTsNCgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwkNCg0KCQkkY3VycmVudF92ZXJzaW9uID0gJzEuMi4zJzsJCQ0KCQkNCgljYXNlICcxLjIuMyc6DQoJCQ0KCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcycsJ2pxdWVyeSBJLCBqcXVlcnlfb3duIEknKTsNCgkJJHJldHVybiA9ICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIHNldHVwIG5ldyB0ZW1wbGF0ZXMNCgkJJHNlY3Rpb24gPSAiYXV0b2xpZ2h0Ym94IjsNCgkJJHRlbXBsYXRlcyA9IGFycmF5KCAnZmFuY3lib3gnLCAnanF1ZXJ5LWxpZ2h0Ym94Jyk7DQoJCQ0KCQlmb3JlYWNoICggJHRlbXBsYXRlcyBhcyAkdGVtcGxhdGUgKQ0KCQl7DQoJCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ1Rvb2xCb3gtdHBsLScuJHNlY3Rpb24uJy0nLiR0ZW1wbGF0ZS4nLnhtbCc7DQoJCQlpZiggZmlsZV9leGlzdHMoICRmbiApICkNCgkJCXsNCgkJCQkkeG1sID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJCQlpZiAoIXRiVXRpbHM6OmltcG9ydFRlbXBsYXRlKCR0aGlzLCAkeG1sLCB0cnVlKSkgew0KCQkJCQkkZXJyb3IgPSB0YlV0aWxzOjpnZXRFcnJvcnMoKTsNCgkJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ107DQoJCQkJfQ0KCQkJCWlmICggJHRlbXBsYXRlID09ICdmYW5jeWJveCcgKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfJy4kc2VjdGlvbi4nX2NvbnRlbnRzJywkdGVtcGxhdGVjb2RlKTsNCgkJCQkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfJy4kc2VjdGlvbi4nX3RlbXBsYXRlJywnYWxiXycuJHRlbXBsYXRlKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCQ0KCQkvLyBhZGQgYXV0b2xpZ2h0Ym94IHRlbXBsYXRlIGlmIGxpZ2h0Ym94IHRlbXBsYXRlIGlzIGFjdGl2ZQ0KCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImF1dG9saWdodGJveF9saWdodGJveCIpKSB7DQoJCQkkdGVtcGxhdGUgPSAiYWxiX2N1c3RvbS1qcXVlcnktbGlnaHRib3giOw0KCQkJJGNvbnRlbnRzID0gJHRoaXMtPkdldFRlbXBsYXRlKCdhdXRvbGlnaHRib3gnKTsNCgkJCSRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRPT0xCT1hfU0VQQVJBVE9SLCAkY29udGVudHMpOw0KCQkJJGpxdWVyeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJhdXRvbGlnaHRib3hfanF1ZXJ5Iik7DQoJCQkNCgkJCSR0cGxjb2RlCT0gJGNvbnRlbnRzY29kZVswXTsgDQoJCQkkdHBsY3NzCQk9ICRjb250ZW50c2NvZGVbMV07IA0KCQkJJHRwbGpzCQk9IHN1YnN0cigkY29udGVudHNjb2RlWzJdLDAsLTIpOw0KDQoJCQkkdHBsanMgPSBzdHJfcmVwbGFjZSgibW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvIiwgIm1vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvYWxiX2N1c3RvbS1qcXVlcnktbGlnaHRib3gvIiwgJHRwbGpzKTsNCgkJCQ0KCQkJJG5ld3RwbGpzID0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvYWxiX2N1c3RvbS1qcXVlcnktbGlnaHRib3gvanF1ZXJ5LmxpZ2h0Ym94LmpzIj48L3NjcmlwdD4nOw0KCQkJDQoJCQkvLyBzYXZlIHRlbXBsYXRlDQoJCQkkdGhpcy0+U2V0VGVtcGxhdGUoJHRlbXBsYXRlLCAkdHBsY29kZS5UT09MQk9YX1NFUEFSQVRPUi4kdHBsY3NzLlRPT0xCT1hfU0VQQVJBVE9SLiRuZXd0cGxqcy4nKn0nICk7DQoJCQkNCgkJCS8vIHNhdmUgY3NzLWZpbGUNCgkJCSRoYW5kbGUgPSBmb3BlbignLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvJyAuICR0ZW1wbGF0ZSAuICcuY3NzJywndycpOw0KCQkJZndyaXRlKCRoYW5kbGUsJGNvbnRlbnRzY29kZVsxXSk7DQoJCQlmY2xvc2UoJGhhbmRsZSk7DQoJCQkNCgkJCS8vIHNhdmUgcHJlZiBpbiBkYg0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3Rvb2xib3hfdGVtcGxhdGVwcm9wcw0KCQkJCQkodGVtcGxhdGUsdmVyc2lvbixhYm91dCxzZWN0aW9uLGpxdWVyeSx2aXNpYmxlKQ0KCQkJCQlWQUxVRVMgKD8sPyw/LD8sPywxKSI7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRlbXBsYXRlLCcxLjAnLCcnLCRzZWN0aW9uLCRqcXVlcnkpKTsNCgkJCQ0KCQkJLy8gbW92ZSBmaWxlcw0KCQkJJGRpciA9ICIuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2FsYl9jdXN0b20tanF1ZXJ5LWxpZ2h0Ym94IjsNCgkJCWlmICghaXNfZGlyKCRkaXIpKSBAbWtkaXIoJGRpcik7DQoJCQkNCgkJCWlmKCAhaXNfd3JpdGFibGUoJGRpcikgKQ0KCQkJew0KCQkJCS8vcmV0dXJuIGVycm9yIHRvIE1vZHVsZU1hbmFnZXINCgkJCQkkdG1wID0gbGFuZygnZXJyb3JkaXJlY3Rvcnlub3R3cml0YWJsZScpLiAnID4gJyAuICRkaXI7DQoJCQkJcmV0dXJuICR0bXA7DQoJCQl9DQoJCQkNCgkJCS8vIHNhdmUganMtZmlsZQ0KCQkJJGhhbmRsZSA9IGZvcGVuKCRkaXIuJy9qcXVlcnkubGlnaHRib3guanMnLCd3Jyk7DQoJCQlmd3JpdGUoJGhhbmRsZSwkdHBsanMpOw0KCQkJZmNsb3NlKCRoYW5kbGUpOw0KCQkJdW5saW5rKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2F1dG9saWdodGJveC5qcycpOwkJCQ0KCQkJdW5saW5rKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy9hdXRvbGlnaHRib3guY3NzJyk7CQkJDQoJCQkNCgkJCSRmaWxlcyA9IGFycmF5KA0KCQkJCScuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ltYWdlcy9saWdodGJveC9saWdodGJveC1ibGFuay5naWYnIAkJPT4gJGRpci4nL2xpZ2h0Ym94LWJsYW5rLmdpZicsDQoJCQkJJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvanMvaW1hZ2VzL2xpZ2h0Ym94L2xpZ2h0Ym94LWJsYW5rLmdpZicgCQk9PiAkZGlyLicvbGlnaHRib3gtYmxhbmsuZ2lmJywNCgkJCQknLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvbGlnaHRib3gtZGUtY2xvc2UuZ2lmJwkgCT0+ICRkaXIuJy9saWdodGJveC1kZS1jbG9zZS5naWYnLA0KCQkJCScuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ltYWdlcy9saWdodGJveC9saWdodGJveC1kZS1uZXh0LmdpZicgCQk9PiAkZGlyLicvbGlnaHRib3gtZGUtbmV4dC5naWYnLA0KCQkJCScuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ltYWdlcy9saWdodGJveC9saWdodGJveC1kZS1wcmV2LmdpZicgCQk9PiAkZGlyLicvbGlnaHRib3gtZGUtcHJldi5naWYnLA0KCQkJCScuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ltYWdlcy9saWdodGJveC9saWdodGJveC1lbi1jbG9zZS5naWYnCQk9PiAkZGlyLicvbGlnaHRib3gtZW4tY2xvc2UuZ2lmJywNCgkJCQknLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvbGlnaHRib3gtZW4tbmV4dC5naWYnIAkJPT4gJGRpci4nL2xpZ2h0Ym94LWVuLW5leHQuZ2lmJywNCgkJCQknLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvbGlnaHRib3gtZW4tcHJldi5naWYnIAkJPT4gJGRpci4nL2xpZ2h0Ym94LWVuLXByZXYuZ2lmJywNCgkJCQknLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvbGlnaHRib3gtaWNvLWxvYWRpbmcuZ2lmJyAJPT4gJGRpci4nL2xpZ2h0Ym94LWljby1sb2FkaW5nLmdpZicNCgkJCSk7DQoJCQkNCgkJCWZvcmVhY2goJGZpbGVzIGFzICRvbGQgPT4gJG5ldykgew0KCQkJCWlmIChpc19maWxlKCRvbGQpKSB7DQoJCQkJCWNvcHkoJG9sZCwkbmV3KTsNCgkJCQl9DQoJCQl9DQoJCQkNCgkJCS8vIGRlbGV0ZSBvbGQgbGlnaHRib3ggZmlsZXMNCgkJCXRiVXRpbHM6OmRlbGV0ZUZvbGRlcigiLi4vbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9pbWFnZXMvbGlnaHRib3gvIik7DQoJCQkNCgkJCS8vIHNldCB0ZW1wbGF0ZSBhcyBkZWZhdWx0DQoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF8nLiRzZWN0aW9uLidfdGVtcGxhdGUnLCdhbGJfY3VzdG9tLWpxdWVyeS1saWdodGJveCcpOwkJDQoJCQkNCgkJCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgiYXV0b2xpZ2h0Ym94Iik7DQoJCQkNCgkJCQ0KCQl9DQoJCWVsc2Ugew0KCQkJLy8gZGVsZXRlIG9sZCBsaWdodGJveCBmaWxlcw0KCQkJdGJVdGlsczo6ZGVsZXRlRm9sZGVyKCIuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ltYWdlcy9saWdodGJveC8iKTsNCgkJCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgiYXV0b2xpZ2h0Ym94Iik7DQoJCX0NCg0KCQkkY3VycmVudF92ZXJzaW9uID0gJzEuMi40JzsNCgkJDQoJY2FzZSAnMS4yLjQnOg0KCQ0KCQkvLyB0ZW1wbGF0ZXByb3BzDQoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfdG9vbGJveF90ZW1wbGF0ZXByb3BzJywndHBsc2VjdGlvbiBDKDIwKSwgb3B0aW9ucyBYMicpOw0KCQkkcmV0dXJuID0gJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQkNCgkJLy8gdHdpdHRlcg0KCQkkZmxkcyA9ICINCgkJCXR3aXR0ZXJpZCBJIEtFWSBBVVRPLA0KCQkJaGFzaCBDKDI1NSksDQoJCQlpZCBJOCwNCgkJCWNyZWF0ZWRfYXQgQygzMCksDQoJCQl0d2RhdGUgRFQsDQoJCQl1c2VyaWQgSTgsDQoJCQlzY3JlZW5uYW1lIEMoMjU1KSwNCgkJCXNjcmVlbm5hbWVfdXJsIEMoMjU1KSwNCgkJCWltZ191cmwgQygyNTUpLA0KCQkJaW1nX3VybF9odHRwcyBDKDI1NSksDQoJCQlhdXRob3IgQygyNTUpLA0KCQkJc291cmNlIEMoMjU1KSwNCgkJCWxvY2F0aW9uIEMoMjU1KSwNCgkJCXRleHQgWCwNCgkJCXJldHdlZXRfY291bnQgSSwgICAgICAgICAgICANCgkJCWZhdm9yaXRlZCBJLCAgICAgICAgICAgICAgICANCgkJCXJldHdlZXRfaWQgQygyNTUpLCAgICAgICAgICANCgkJCXJldHdlZXRfdHdkYXRlIERULCAgICAgICAgICAgDQoJCQlyZXR3ZWV0X3VzZXJpZCBJOCwgICAgICAgICAgIA0KCQkJcmV0d2VldF9zY3JlZW5uYW1lIEMoMjU1KSwgICANCgkJCXJldHdlZXRfc2NyZWVubmFtZV91cmwgQygyNTUpLA0KCQkJcmV0d2VldF9hdXRob3IgQygyNTUpLCAgICAgIA0KCQkJcmV0d2VldF9pbWdfdXJsIEMoMjU1KSwgICAgIA0KCQkJcmV0d2VldF9pbWdfaHR0cHMgQygyNTUpLCAgIA0KCQkJcmV0d2VldF9zb3VyY2UgQygyNTUpLCAgICAgIA0KCQkJcmV0d2VldF9sb2NhdGlvbiBDKDI1NSksICAgIA0KCQkJcmV0d2VldF90ZXh0IFgsICAgICAgICAgICAgIA0KCQkJanNvbmRhdGEgWCAgICAgICAgICAgICAgICAgIA0KCQkiOw0KCQkNCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90b29sYm94X3R3IiwJJGZsZHMsICR0YWJvcHRhcnJheSk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIFVwZGF0ZSBUd2l0dGVyDQoJCSRmbGRzID0gIg0KCQkJaGFzaCBDKDI1NSkgS0VZLA0KCQkJdGltZXN0YW1wIERUDQoJCSI7DQoJCQ0KCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Rvb2xib3hfdHd1cGRhdGUiLAkkZmxkcywgJHRhYm9wdGFycmF5KTsNCgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQkNCgkJDQoJCS8vIENTVg0KCQkkZmxkcyA9ICINCgkJCWZpbGVuciBJIEtFWSBBVVRPLA0KCQkJZmlsZW5hbWUgQygyNTUpLA0KCQkJcGF0aCBYKDUwMCksDQoJCQlmaWxlc2l6ZSBJOCwNCgkJCWxhc3R1cGRhdGUgRFQNCgkJIjsNCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90b29sYm94X2NzdiIsCSRmbGRzLCAkdGFib3B0YXJyYXkpOw0KCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCQkJDQoJCSRmbiA9IHRiVXRpbHM6OmdldFRwbFhNTEZpbGUoInR3aXR0ZXJmZWVkIiwgInR3aXR0ZXJmZWVkIik7DQoJCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKQ0KCQl7DQoJCQkkeG1sID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsNCgkJCWlmICghdGJVdGlsczo6aW1wb3J0VGVtcGxhdGUoJHRoaXMsICR4bWwsIHRydWUsIHRydWUpKSB7DQoJCQkJJGVycm9yID0gdGJVdGlsczo6Z2V0RXJyb3JzKCk7DQoJCQkJcmV0dXJuICR0aGlzLT5MYW5nKCRlcnJvclsnbGFuZyddKS4nICcuJGVycm9yWydhZGRpdGlvbmFsJ107DQoJCQl9DQoJCX0NCg0KCQkvLyBBdXRvTGlnaHRCb3ggVm9yZ2FiZXdlcnRlIGFrdHVhbGlzaWVyZW4NCgkJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCB0YlV0aWxzOjpnZXRUcGxYTUxGaWxlKCJhdXRvbGlnaHRib3giLCAiZmFuY3lib3giKSk7DQoJCSRYTUxEYXRhID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVEYXRhRnJvbVhNTCgkeG1sKTsNCgkJJHRlbXBsYXRlY29kZSA9ICRYTUxEYXRhWyd0cGxjb2RlJ10uVE9PTEJPWF9TRVBBUkFUT1IuJFhNTERhdGFbJ3RwbGNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiRYTUxEYXRhWyd0cGxqcyddLiRYTUxEYXRhWyd0cGxtb2JpbGVjb2RlJ10uVE9PTEJPWF9TRVBBUkFUT1IuJFhNTERhdGFbJ3RwbG1vYmlsZWNzcyddLlRPT0xCT1hfU0VQQVJBVE9SLiRYTUxEYXRhWyd0cGxtb2JpbGVqcyddLicqfSc7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2F1dG9saWdodGJveF9jb250ZW50cycsJHRlbXBsYXRlY29kZSk7DQoJCQ0KCQkvLyBTb2NpYWxTaGFyZVByaXZhY3kgYWt0dWFsaXNpZXJlbg0KCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnKSA9PSAwIG9yICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzb2NpYWxzaGFyZXByaXZhY3lfYWR2YW5jZWQnKSA9PSAwKSB7DQoJCQkkZm4gPSB0YlV0aWxzOjpnZXRUcGxYTUxGaWxlKCJzb2NpYWxzaGFyZXByaXZhY3kiLCAic29jaWFsc2hhcmVwcml2YWN5Iik7DQoJCQlpZiggZmlsZV9leGlzdHMoICRmbiApKSB7DQoJCQkJJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7DQoJCQkJaWYgKCF0YlV0aWxzOjppbXBvcnRUZW1wbGF0ZSgkdGhpcywgJHhtbCwgdHJ1ZSwgZmFsc2UpKSB7DQoJCQkJCSRlcnJvciA9IHRiVXRpbHM6OmdldEVycm9ycygpOw0KCQkJCQlyZXR1cm4gJHRoaXMtPkxhbmcoJGVycm9yWydsYW5nJ10pLicgJy4kZXJyb3JbJ2FkZGl0aW9uYWwnXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCS8vIERlbGV0ZSBvbGQgdGVtcGxhdGUgWE1MIGZpbGVzDQoJCWlmIChpc19maWxlKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2F1dG9saWdodGJveC54bWwnKSkgCQlAdW5saW5rKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2F1dG9saWdodGJveC54bWwnKTsNCgkJaWYgKGlzX2ZpbGUoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvc29jaWFsc2hhcmVwcml2YWN5LnhtbCcpKSBAdW5saW5rKCcuLi9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL3NvY2lhbHNoYXJlcHJpdmFjeS54bWwnKTsNCgkJaWYgKGlzX2ZpbGUoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvZWRpdHRlbXBsYXRlLnRwbCcpKSAJCUB1bmxpbmsoJy4uL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvZWRpdHRlbXBsYXRlLnRwbCcpOw0KCQkNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoImNzdl9kZWxpbWl0ZXIiLCI7Iik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfZmlsZWNoYXJzZXQiLCJpc28tODg1OS0xIik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJjc3ZfY21zY2hhcnNldCIsIlVURi04Iik7DQoJCQ0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiYXV0b2xpZ2h0Ym94X3VybHR5cGUiLCJyZWxhdGl2ZSIpOw0KCQkNCgkNCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjMuMCc7DQoJY2FzZSAnMS4zLjAnIDoNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoIndtaV9wb3N4IiwiMTAiKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoIndtaV9wb3N5IiwiMTAiKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoIndtaV9wb3MiLCJMQiIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid21pX3JlbHNpemUiLCIzMCIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3Bvc3giLCIxMCIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3Bvc3kiLCIxMCIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgid210X3BvcyIsIkxCIik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfc2l6ZSIsIjEyIik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ3bXRfY29sb3IiLCJmZmZmZmYiKTsNCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjMuMSc7DQoNCgljYXNlICcxLjMuMScgOg0KCQkkY3VycmVudF92ZXJzaW9uID0gJzEuMy4yJzsNCgkJDQoJY2FzZSAnMS4zLjInIDoNCgkJLy8gUmVuYW1lIHJldHdlZXRfc2NyZWVubmFtZSBhbmQgcmV0d2VldF9zY3JlZW5uYW1lX3VybCBGaWVsZA0KCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Rvb2xib3hfdHcnLCdyZXR3ZWV0X3NjcmVlbm5hbWUgQygyNTUpLCByZXR3ZWV0X3NjcmVlbm5hbWVfdXJsIEMoMjU1KScpOw0KCQkkcmV0dXJuID0gJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQkkY3VycmVudF92ZXJzaW9uID0gJzEuMy4zJzsNCg0KCWNhc2UgJzEuMy4zJyA6DQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4zLjQnOw0KDQoJY2FzZSAnMS4zLjQnIDoNCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcxLjMuNSc7DQoJY2FzZSAnMS4zLjUnIDoNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ29sZHVybF91c2VfY2RhdGUnLDApOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb2xkdXJsX3VzZV9tZGF0ZScsMCk7DQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4zLjYnOw0KCQkNCgljYXNlICcxLjMuNicgOg0KCQkkY3VycmVudF92ZXJzaW9uID0gJzEuMy43JzsJDQoJCQ0KCWNhc2UgJzEuMy43JyA6DQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4zLjgnOwkNCgkJDQoNCn0NCg0KDQoNCi8vIFdyaXRlIG1lc3NhZ2UgdG8gYWRtaW4gbG9nDQokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VwZGF0ZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsNCg0KDQovLyBFT0Y=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBUbyBkZW55IFBIUHMNCjxGaWxlcyB+ICJcLihwaHB8cGhwM3xwaHA0fHBocDV8cGh0bWx8cGx8Y2dpKSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogIGRlbnkgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjwvRmlsZXM+ICANCg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_autolightbox.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCdhdXRvbGlnaHRib3hfdGl0bGUnKX08L2gzPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRtb2QtPkxhbmcoJ2F1dG9saWdodGJveF9kZXNjcmlwdGlvbicpfQo8L2Rpdj4KCnskZm9ybXN0YXJ0fQp7JHRhYnRvfQo8ZmllbGRzZXQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnYXV0b2xpZ2h0Ym94X3Byb21wdF9yZWwnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVsfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnYXV0b2xpZ2h0Ym94X3Byb21wdF9jbGFzcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jbGFzc308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2F1dG9saWdodGJveF9wcm9tcHRfbGlnaHRib3gnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbGlnaHRib3h9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhdXRvbGlnaHRib3hfcHJvbXB0X3VybHR5cGUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXJsdHlwZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+CjwvZGl2PgoKPC9maWVsZHNldD4KeyRmb3JtZW5kfQoKe2lmICRsaWdodGJveF91c2V9IAoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVtYW5hZ2VtZW50Jyl9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JG5ld3RlbXBsYXRlbGlua308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoIGNsYXNzPSJwYWdldzgwIj57JG1vZC0+TGFuZygncHJvbXB0X25hbWUnKX08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2V3MTAiPnskbW9kLT5MYW5nKCdwcm9tcHRfdmVyc2lvbicpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZXcxMCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9hYm91dCcpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnskbW9kLT5MYW5nKCdwcm9tcHRfYWN0aXZlJyl9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+RXhwb3J0PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPnZlcnNpb259PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+YWJvdXR9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZGVmYXVsdH08L3RkPgogICAgIDx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgIDx0ZD57JGVudHJ5LT5jb3B5bGlua308L3RkPgogICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmV4cG9ydH08L3RkPgogICA8L3RyPgp7L2ZvcmVhY2h9CjwvdGFibGU+CjwvZGl2PgoKCgp7KiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXd0ZW1wbGF0ZWxpbmt9PC9wPgo8L2Rpdj4KKn0KeyRmb3Jtc3RhcnRpbXBvcnR9CnskdGFidG99CjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygndGl0bGVfaW1wb3J0eG1sJyl9PC9sZWdlbmQ+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnaW1wb3J0eG1sbm90ZScpfG5sMmJyfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdpbXBvcnR4bWwnKX06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij4KeyRpbXBvcnR4bWx9CjwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdvdmVyd3JpdGUnKX06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij4KeyRvdmVyd3JpdGV9CjwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+Cnskc3VibWl0fQo8L3A+CjwvZGl2PgoKey9pZn0KCjwvZmllbGRzZXQ+CnskZm9ybWVuZGltcG9ydH0KCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_csv.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfY3N2X3RpdGxlJyl9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskbW9kLT5MYW5nKCdjc3ZfZGVzY3JpcHRpb24nKX0KPC9kaXY+CiAKIAo8ZGl2IGlkPSJ0YnBhZ2VfdGFicyI+IAoJPGRpdiBpZD0iZmlsZXMie2lmICR0dGFidG89PSIiIG9yICR0dGFidG89PSJmaWxlcyJ9IGNsYXNzPSJhY3RpdmUiey9pZn0+CgkJeyRtb2QtPkxhbmcoJ2NzdmZpbGVzJyl9Cgk8L2Rpdj4gICAgICAgICAKCTxkaXYgaWQ9InNldHRpbmdzIntpZiAkdHRhYnRvPT0ic2V0dGluZ3MifSBjbGFzcz0iYWN0aXZlInsvaWZ9PgoJCXskbW9kLT5MYW5nKCdzZXR0aW5ncycpfSAgCgk8L2Rpdj4gICAgIAoJPGRpdiBpZD0ic3VtbWFyeSJ7aWYgJHR0YWJ0bz09InN1bW1hcnkifSBjbGFzcz0iYWN0aXZlInsvaWZ9PgoJCXskbW9kLT5MYW5nKCdwcm9tcHRfc3VtbWFyeXRlbXBsYXRlJyl9ICAgCgk8L2Rpdj4gCgk8ZGl2IGlkPSJkZXRhaWwie2lmICR0dGFidG89PSJkZXRhaWwifSBjbGFzcz0iYWN0aXZlInsvaWZ9PgoJCXskbW9kLT5MYW5nKCdwcm9tcHRfZGV0YWlsdGVtcGxhdGUnKX0gIAoJPC9kaXY+Cgk8ZGl2IGlkPSJzZWFyY2gie2lmICR0dGFidG89PSJzZWFyY2gifSBjbGFzcz0iYWN0aXZlInsvaWZ9PgoJCXskbW9kLT5MYW5nKCdzZWFyY2h0ZW1wbGF0ZScpfSAgIAoJPC9kaXY+ICAgCgk8ZGl2IGlkPSJpbXBvcnQie2lmICR0dGFidG89PSJpbXBvcnQifSBjbGFzcz0iYWN0aXZlInsvaWZ9PgoJCXskbW9kLT5MYW5nKCdpbXBvcnR4bWwnKX0gICAKCTwvZGl2PiAgICAgCjwvZGl2PiAgIAo8ZGl2IGNsYXNzPSJjbGVhcmIiPiAgCgoJPGRpdiBpZD0idGJwYWdlX2NvbnRlbnQiPiAKCQk8ZGl2IGlkPSJmaWxlc19jIj4gCgkJRGF0ZWllbgoJCTwvZGl2PgoJCTxkaXYgaWQ9InNldHRpbmdzX2MiPgoJCQl7JGZvcm1zdGFydHNldHRpbmdzfQoJCQl7JGhpZGRlbnNldHRpbmdzfQoJCQk8ZmllbGRzZXQ+CgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kZWxpbWl0ZXInKX06PC9wPgoJCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJ3MzAiPnskZGVsaW1pdGVyfTwvc3Bhbj48L3A+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NoYXJzZXRmaWxlJyl9OjwvcD4KCQkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0idzgwIj57JGZpbGVjaGFyc2V0fTwvc3Bhbj48L3A+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NoYXJzZXRjbXMnKX06PC9wPgoJCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJ3ODAiPnskY21zY2hhcnNldH08L3NwYW4+PC9wPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0YWxsZ2VtZWlufXskcmVzZXRhbGxnZW1laW59PC9wPgoJCQkJPC9kaXY+CgkJCTwvZmllbGRzZXQ+CgkJCXskZm9ybWVuZHNldHRpbmdzfQoJCTwvZGl2PgoJICAKCQk8ZGl2IGlkPSJzdW1tYXJ5X2MiPgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JG5ld3N1bW1hcnl0ZW1wbGF0ZWxpbmt9PC9wPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCQkJICA8dGhlYWQ+CgkJCSAgICA8dHI+CgkJCSAgICAgIDx0aCBjbGFzcz0icGFnZXc4MCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9uYW1lJyl9PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kZWZhdWx0Jyl9PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+RXhwb3J0PC90aD4KCQkJICAgIDwvdHI+CgkJCSAgPC90aGVhZD4KCQkJe2ZvcmVhY2ggZnJvbT0kc3VtbWFyeWl0ZW1zIGl0ZW09ZW50cnl9CgkJCSAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJICAgICA8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCQkgICAgIDx0ZD57JGVudHJ5LT5kZWZhdWx0fTwvdGQ+CgkJCSAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCSAgICAgPHRkPnskZW50cnktPmNvcHlsaW5rfTwvdGQ+CgkJCSAgICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCQkJICAgICA8dGQ+eyRlbnRyeS0+ZXhwb3J0fTwvdGQ+CgkJCSAgIDwvdHI+CgkJCXsvZm9yZWFjaH0KCQkJPC90YWJsZT4KCQkJPC9kaXY+CgkJPC9kaXY+CgkgIAoJCTxkaXYgaWQ9ImRldGFpbF9jIj4KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskbmV3ZGV0YWlsdGVtcGxhdGVsaW5rfTwvcD4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CgkJCSAgPHRoZWFkPgoJCQkgICAgPHRyPgoJCQkgICAgICA8dGggY2xhc3M9InBhZ2V3ODAiPnskbmFtZXByb21wdH08L3RoPgoJCQkgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj57JGRlZmF1bHRwcm9tcHR9PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+RXhwb3J0PC90aD4KCQkJICAgIDwvdHI+CgkJCSAgPC90aGVhZD4KCQkJe2ZvcmVhY2ggZnJvbT0kZGV0YWlsaXRlbXMgaXRlbT1lbnRyeX0KCQkJICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQkgICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJCSAgICAgPHRkPnskZW50cnktPmRlZmF1bHR9PC90ZD4KCQkJICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCQkJICAgICA8dGQ+eyRlbnRyeS0+Y29weWxpbmt9PC90ZD4KCQkJICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJCQkgICAgIDx0ZD57JGVudHJ5LT5leHBvcnR9PC90ZD4KCQkJICAgPC90cj4KCQkJey9mb3JlYWNofQoJCQk8L3RhYmxlPgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQkKCQk8ZGl2IGlkPSJzZWFyY2hfYyI+CgkJCVNlcmFjaAoJCTwvZGl2PiAKCQkKCQk8ZGl2IGlkPSJpbXBvcnRfYyI+CgkJCXskZm9ybXN0YXJ0aW1wb3J0fQoJCQl7JGhpZGRlbmltcG9ydH0KCQkJPGZpZWxkc2V0PgoJCQk8bGVnZW5kPnskbW9kLT5MYW5nKCd0aXRsZV9pbXBvcnR4bWwnKX08L2xlZ2VuZD4KCQkJCgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbW9kLT5MYW5nKCdpbXBvcnR4bWxub3RlJyl8bmwyYnJ9PC9wPgoJCQk8L2Rpdj4KCQkJCgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2ltcG9ydHhtbCcpfTo8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JGltcG9ydHhtbH0KCQkJPC9wPgoJCQk8L2Rpdj4KCQkJCgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ292ZXJ3cml0ZScpfTo8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQl7JG92ZXJ3cml0ZX0KCQkJPC9wPgoJCQk8L2Rpdj4KCQkJCgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJeyRzdWJtaXRpbXBvcnR9CgkJCTwvcD4KCQkJPC9kaXY+CgkJCTwvZmllbGRzZXQ+CgkJCXskZm9ybWVuZGltcG9ydH0KCQk8L2Rpdj4gCgkJCgk8L2Rpdj4KPC9kaXY+CiAKIAoKIA==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_debug.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CnskdGFidG99CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPjxzdHJvbmc+eyRkZWJ1Z19sb2d9PC9zdHJvbmc+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+eyRpZH08L3RoPgoJCQkJPHRoPnskaXB9PC90aD4KCQkJCTx0aD57JGZyb211cmx9PC90aD4KCQkJCTx0aD57JHRvdXJsfTwvdGg+CgkJCQk8dGg+eyRzdGF0dXN9PC90aD4KCQkJCTx0aD57JHRpbWV9PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRkZWJ1Z3MgaXRlbT1lbnRyeX0KICAgICAgICAgICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgoJCQkJPHRkPnskZW50cnktPmlwfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+ZnJvbXVybH08L3RkPgoJCQkJPHRkPnskZW50cnktPnRvdXJsfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+c3RhdHVzfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+Y3JlYXRlZH08L3RkPgoJCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRkZWxldGVhbGxsaW5rfTwvcD4KCTxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+Jm5ic3A7PC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_editredirect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9DQp7JHRhYnRvfQ0KeyRyZWRpcmVjdH0NCjxmaWVsZHNldD4NCjxsZWdlbmQ+eyRyZWRpcmVjdGVkaXR9PC9sZWdlbmQ+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcmVkaXJlY3RpZH06IHskcmVkaXJlY3RpZH08L3A+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jZGF0ZX06IHskY2RhdGV9PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbWRhdGV9OiB7JG1kYXRlfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FjdGl2ZX06PC9wPg0KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWN0aXZlfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VybH06PC9wPg0KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KCQl7JGlucHV0X3VybH08YnIgLz4NCgkJeyRpbnB1dF9yZWdleHB9Jm5ic3A7eyRwcm9tcHRfcmVnZXhwfQ0KCTwvcD4NCjwvZGl2Pg0Ke2lmICR0b3VybCBlcSAnJ30NCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9wYWdlfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wYWdlfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgk8cCBjbGFzcz0icGFnZWlucHV0Ij48YnIgLz57JGFsdGVybmF0aXZlX3VybH08L3A+DQo8L2Rpdj4NCnsvaWZ9DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cmx9OjwvcD4NCiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJsfTwvcD4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X25vdGVzfTo8L3A+DQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRkb21haW5fbm90ZXN9PC9wPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPnskc3VibWl0fXskY2FjaGV9eyRyZXNldH17JGNhbmNlbH08L2Rpdj4NCjwvZmllbGRzZXQ+DQp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_listerrors.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9eyR0YWJ0b317JGlkc30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+PHN0cm9uZz57JG1vZC0+TGFuZygnZXJyb3JsaXN0Jyl9PC9zdHJvbmc+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2lkJyl9PC90aD4KCQkJCTx0aD57JG1vZC0+TGFuZygnZnJvbXVybCcpfTwvdGg+CgkJCQk8dGg+eyRtb2QtPkxhbmcoJ3RvdXJsJyl9PC90aD4KCQkJCTx0aD57JG1vZC0+TGFuZygndG91cmwnKX08L3RoPgoJCQkJPHRoPnskbW9kLT5MYW5nKCdjcmVhdGVkJyl9PC90aD4KCQkJCTx0aD57JG1vZC0+TGFuZygnbW9kaWZpZWQnKX08L3RoPgogICAgICAgICAgICAgICAge2lmICRjaGVja19vbGR1cmw9PScxJ308dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPnsvaWZ9CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIHtmb3JlYWNoIGZyb209JGVycm9yYXJyIGl0ZW09ZW50cnl9CiAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9CiAgICAgICAgICAgIDx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5mcm9tdXJsfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+dG91cmx9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT52aXNpdHN9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5jcmVhdGVkfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+bW9kaWZpZWR9PC90ZD4KICAgICAgICAgICAgICAgIHtpZiAkY2hlY2tfb2xkdXJsPT0nMSd9PHRkPnskZW50cnktPnJlZGlyZWN0bGlua308L3RkPnsvaWZ9CgkJCQk8dGQ+eyRlbnRyeS0+aWdub3JlbGlua308L3RkPgoJCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskZGVsZXRlYWxsbGlua308L3A+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPiZuYnNwOzwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj48c3Ryb25nPnskbW9kLT5MYW5nKCdpZ25vcmVsaXN0Jyl9PC9zdHJvbmc+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ2lkJyl9PC90aD4KCQkJCTx0aD57JG1vZC0+TGFuZygnaXJlZ2V4cCcpfT88L3RoPgoJCQkJPHRoPnskbW9kLT5MYW5nKCdpdXJsJyl9PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRpZ25vcmVzIGl0ZW09ZW50cnl9CiAgICAgICAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9CiAgICAgICAgICAgIDx0ciBjbGFzcz0ieyRyb3djbGFzc30iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRyb3djbGFzc30nOyI+CiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5pcmVnZXhwfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+aXVybH08L3RkPgoJCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CgkJe2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KCQk8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgoJCQk8dGQ+PGVtPnskbW9kLT5MYW5nKCduZXcnKX08L2VtPjwvdGQ+CgkJCTx0ZD57JGlfaXJlZ2V4cH08L3RkPgoJCQk8dGQ+eyRpX2l1cmx9PC90ZD4KCQkJPHRkPiZuYnNwOzwvdGQ+CgkJPC90cj4KICAgIDwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPnskc3VibWl0fTwvZGl2Pgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_listredirects.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXdyZWRpcmVjdGxpbmt9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+eyRpZH08L3RoPgoJCQkJPHRoPnskdXJsfTwvdGg+CgkJCQk8dGg+eyRwYWdlfTwvdGg+CiAgICAgICAgICAgICAgICB7aWYgJHNob3dfY2RhdGU9PScxJ308dGg+eyRwcm9tcHRfY2RhdGV9PC90aD57L2lmfQogICAgICAgICAgICAgICAge2lmICRzaG93X21kYXRlPT0nMSd9PHRoPnskcHJvbXB0X21kYXRlfTwvdGg+ey9pZn0KICAgICAgICAgICAgICAgIDx0aD57JGFjdGl2ZX08L3RoPgogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICAgICAgICAgICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQogICAgICAgICAgICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgogICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmlkfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+dXJsfSZuYnNwO3tpZiAkZW50cnktPnJlZ2V4cH17JGluZm9pY29ufXtlbHNlfTxhIGhyZWY9InskZW50cnktPnZ1cmx9IiB0aXRsZT0ieyR2aWV3fSIgdGFyZ2V0PSJfYmxhbmsiPnskdmlld2ljb259PC9hPnsvaWZ9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5wYWdlfTwvdGQ+CiAgICAgICAgICAgICAgICB7aWYgJHNob3dfY2RhdGU9PScxJ308dGQ+eyRlbnRyeS0+Y2RhdGV9PC90ZD57L2lmfQogICAgICAgICAgICAgICAge2lmICRzaG93X21kYXRlPT0nMSd9PHRkPnskZW50cnktPm1kYXRlfTwvdGQ+ey9pZn0KCQkJCTx0ZD57JGVudHJ5LT5hY3RpdmV9PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgICAgICAgICAgICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXdyZWRpcmVjdGxpbmt9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_main.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjx0YWJsZSBjbGFzcz0iVG9vbEJveE1haW5UYWJsZSI+Cjx0cj4KPHRkIHN0eWxlPSJ3aWR0aDogNTAlIj48aDM+eyRwcm9tcHRfYWN0aXZlfTwvaDM+Cgp7Zm9yZWFjaCBmcm9tPSRhY3RpdmUgaXRlbT0nYSd9CjxkaXYgY2xhc3M9InRiQWN0aXZlIj57JGF9PC9kaXY+CnsvZm9yZWFjaH0KCjwvdGQ+Cjx0ZCBzdHlsZT0id2lkdGg6IDEwcHgiPiZuYnNwOzwvdGQ+Cjx0ZCBzdHlsZT0id2lkdGg6IDUwJSI+PGgzPnskcHJvbXB0X2luYWN0aXZlfTwvaDM+Cntmb3JlYWNoIGZyb209JGluYWN0aXZlIGl0ZW09J2knfQo8ZGl2IGNsYXNzPSJ0YkluYWN0aXZlIj57JGl9PC9kaXY+CnsvZm9yZWFjaH0KPC90ZD4KPC90cj4KPC90YWJsZT4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_moduleops.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZGVzY3JpcHRpb259CjwvZGl2PgogCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGggY2xhc3M9InBhZ2V3ODAiPnskcHJvbXB0X25hbWV9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdldzEwIj57JHByb21wdF92ZXJzaW9ufTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnskcHJvbXB0X3N0YXR1c308L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj57JHByb21wdF9leHBvcnR9PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4Ke2ZvcmVhY2ggZnJvbT0kbW9kdWxlcyBpdGVtPWVudHJ5fQogICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICAgPHRkPnskZW50cnktPm5hbWV9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+dmVyc2lvbn08L3RkPgogICAgIDx0ZD57JGVudHJ5LT5hY3RpdmV9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+eG1sfTwvdGQ+CiAgIDwvdHI+CnsvZm9yZWFjaH0KPC90YWJsZT4KPC9kaXY+CgoKCnskZm9ybXN0YXJ0aW1wb3J0fQp7JGhpZGRlbn0KPGZpZWxkc2V0Pgo8bGVnZW5kPnskdGl0bGVfaW1wb3J0eG1sfTwvbGVnZW5kPgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbXBvcnR4bWxub3RlfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2ltcG9ydHhtbH06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij4KeyRpbXBvcnR4bWx9CjwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X292ZXJ3cml0ZX06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij4KeyRvdmVyd3JpdGV9CjwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+Cnskc3VibWl0fQo8L3A+CjwvZGl2PgoKCgo8L2ZpZWxkc2V0Pgp7JGZvcm1lbmRpbXBvcnR9CgoKCgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CnskdGFidG99Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgo8L2Rpdj4KCjxoMj57JG1vZC0+TGFuZygncHJvbXB0X2dlbmVyYWxfcHJlZnMnKX08L2gyPgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfcHJlZnNfdGl0bGUnKX08L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9taW5pZnknKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9taW5pZnl9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9qYXZhc2NyaXB0X2Zvb3RlcicpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2pzX2Zvb3Rlcn08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZG9udF91c2VfZXZlbnRfaGFuZGxlcicpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnZG9udF91c2VfZXZlbnRfaGFuZGxlcl9oZWxwJyl9PGJyIC8+eyRpbnB1dF9kb250X3VzZV9ldmVudF9oYW5kbGVyfTwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+CjxwPiZuYnNwOzwvcD4KCjxoMj57JG1vZC0+TGFuZygncHJvbXB0X2ltYWdlbWFuaXB1bGF0aW9uX3NvY2lhbHBsdWdpbicpfTwvaDI+Cgo8ZmllbGRzZXQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhdXRvbGlnaHRib3hfdXNlJyl9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYXV0b2xpZ2h0Ym94X3VzZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NvY2lhbHNoYXJlcHJpdmFjeV91c2UnKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zb2NpYWxzaGFyZXByaXZhY3lfdXNlfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0d2l0dGVyZmVlZF91c2UnKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90d2l0dGVyZmVlZF91c2V9PC9wPgo8L2Rpdj4Keyo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY3N2X3VzZScpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Nzdl91c2V9PC9wPgo8L2Rpdj4KKn0KCjwvZmllbGRzZXQ+CjxwPiZuYnNwOzwvcD4KPGgyPnskbW9kLT5MYW5nKCdwcm9tcHRfdHJhY2tpbmdfbG9nZ2luZycpfTwvaDI+CjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygncHJvbXB0X29sZHVybF90aXRsZScpfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnb2xkdXJsX3VzZScpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X29sZHVybF91c2V9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ29sZHVybF91c2VfY2RhdGUnKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9vbGR1cmxfdXNlX2NkYXRlfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdvbGR1cmxfdXNlX21kYXRlJyl9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfb2xkdXJsX3VzZV9tZGF0ZX08L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0Pgo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Byb21wdF9zdGF0c180MDRfdGl0bGUnKX08L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3N0YXRzXzQwNCcpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3N0YXRzXzQwNH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnbWF4XzQwNCcpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnbWF4XzQwNF9oZWxwJyl9PGJyIC8+eyRpbnB1dF9tYXhfNDA0fTwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+Cgo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Byb21wdF9zdGF0c190aXRsZScpfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc3RhdHNfdXNlJyl9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3RhdHNfdXNlfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzdGF0c19kYWlseScpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3N0YXRzX2RhaWx5fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzdGF0c19lbWFpbCcpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnc3RhdHNfZW1haWxfaGVscCcpfTxiciAvPnskaW5wdXRfc3RhdHNfZW1haWx9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfZGVidWdfdGl0bGUnKX08L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2RlYnVnX3VzZScpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlYnVnX3VzZX08L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfdGFpbF90aXRsZScpfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGFpbF91c2UnKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90YWlsX3VzZX08L3A+CjwvZGl2Pgo8L2ZpZWxkc2V0Pgp7Kgo8aDI+eyRtb2QtPkxhbmcoJ2JhY2t1cHJlY292ZXJ5Jyl9PC9oMj4KPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdtb2R1bGVvcHMnKX08L2xlZ2VuZD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ21vZHVsZW9wc191c2UnKX06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9tb2R1bGVvcHNfdXNlfTwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+Cip9CjxwPiZuYnNwOzwvcD4KCntpZiAkbWRfdGFibGVzX2V4aXN0fQo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Byb21wdF9tdWx0aWRvbWFpbl90aXRsZScpfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaW1wb3J0X211bHRpZG9tYWlucycpfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltcG9ydF9tdWx0aWRvbWFpbnN9e2lmICRpbXBvcnRfbXVsdGlkb21haW5zX2NvdW50ID4gMH08YnIgLz48c3BhbiBzdHlsZT0iY29sb3I6cmVkOyI+eyRoZWxwX2ltcG9ydF9tdWx0aWRvbWFpbnN9PC9zcGFuPnsvaWZ9PC9wPgoJe2lmICEkbWRfb2xkfQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2Ryb3BfbXVsdGlkb21haW5zJyl9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Ryb3BfbXVsdGlkb21haW5zfTwvcD4KCXsvaWZ9CjwvZGl2Pgo8L2ZpZWxkc2V0Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_socialshareprivacy.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZGVzY3JpcHRpb259CjwvZGl2Pgp7JGZvcm1zdGFydH0KeyRoaWRkZW59CjxmaWVsZHNldD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2luZm9saW5rfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pbmZvbGlua308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfanF1ZXJ5fTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9qcXVlcnl9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FkdmFuY2VkfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hZHZhbmNlZH08L3A+CjwvZGl2Pgp7aWYgJGFkdmFuY2VkX3VzZX0gCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcHJvbXB0X3RlbXBsYXRlX2luZm99PGJyIC8+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGVtcGxhdGV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZWNzc306PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc21hcnR5dGFnc308YnIgLz57JGlucHV0X3RlbXBsYXRlY3NzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGVqc306PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc21hcnR5dGFnc308YnIgLz57JGlucHV0X3RlbXBsYXRlanN9PC9wPgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmICRhZHZhbmNlZF91c2V9eyRpbXBvcnR0ZW1wbGF0ZWxpbmt9ICAgey9pZn17JGV4cG9ydHRlbXBsYXRlbGlua308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskcmVzZXR9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KeyRmb3JtZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_stats.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCgl7aWYgJG9sZHVybF91c2UgPT0gMX0KCQoJPGgyPnskcmVkaXJlY3R9PC9oMj4KCQoJe2lmICRzdGF0c19kYWlseSA9PSAxfQoJPGgzPnskZGF5c308L2gyPgoJPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgIDx0cj4KCQkJCTx0aD57JHVybH08L3RoPgoJCQkJPHRoPnskcGFnZX08L3RoPgoJCQkJPHRoPnskdmlzaXRzfTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+eyRzZWFyY2hlbmdpbmV9PC90aD4KICAgICAgICAgICAgICAgIDx0aD57JGtleXdvcmR9PC90aD4KICAgICAgICAgICAgICAgIDx0aD57JHJlZmVyZXJ9PC90aD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIHtmb3JlYWNoIGZyb209JGRheXNfcmVkaXJlY3QgaXRlbT1lbnRyeX0KICAgICAgICAgICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCQkJCTx0ZD57JGVudHJ5LT51cmx9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5wYWdlfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+dmlzaXRzfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+c2VhcmNoZW5naW5lfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+a2V5d29yZH08L3RkPgogICAgICAgICAgICAgICAgPHRkPnskZW50cnktPnJlZmVyZXJ9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgoJey9pZn0KCgk8aDM+eyRtb250aHN9PC9oMj4KCTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CgkJCQk8dGg+eyR1cmx9PC90aD4KCQkJCTx0aD57JHBhZ2V9PC90aD4KCQkJCTx0aD57JHZpc2l0c308L3RoPgogICAgICAgICAgICAgICAgPHRoPnskc2VhcmNoZW5naW5lfTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+eyRrZXl3b3JkfTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+eyRyZWZlcmVyfTwvdGg+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRtb250aHNfcmVkaXJlY3QgaXRlbT1lbnRyeX0KICAgICAgICAgICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCQkJCTx0ZD57JGVudHJ5LT51cmx9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5wYWdlfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+dmlzaXRzfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+c2VhcmNoZW5naW5lfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+a2V5d29yZH08L3RkPgogICAgICAgICAgICAgICAgPHRkPnskZW50cnktPnJlZmVyZXJ9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgoKCTxoMz57JHllYXJzfTwvaDI+Cgk8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgPHRyPgoJCQkJPHRoPnskdXJsfTwvdGg+CgkJCQk8dGg+eyRwYWdlfTwvdGg+CgkJCQk8dGg+eyR2aXNpdHN9PC90aD4KICAgICAgICAgICAgICAgIDx0aD57JHNlYXJjaGVuZ2luZX08L3RoPgogICAgICAgICAgICAgICAgPHRoPnska2V5d29yZH08L3RoPgogICAgICAgICAgICAgICAgPHRoPnskcmVmZXJlcn08L3RoPgogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAge2ZvcmVhY2ggZnJvbT0keWVhcnNfcmVkaXJlY3QgaXRlbT1lbnRyeX0KICAgICAgICAgICAge2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIiBhc3NpZ249J3Jvd2NsYXNzJ30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KCQkJCTx0ZD57JGVudHJ5LT51cmx9PC90ZD4KCQkJCTx0ZD57JGVudHJ5LT5wYWdlfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+dmlzaXRzfTwvdGQ+CgkJCQk8dGQ+eyRlbnRyeS0+c2VhcmNoZW5naW5lfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRlbnRyeS0+a2V5d29yZH08L3RkPgogICAgICAgICAgICAgICAgPHRkPnskZW50cnktPnJlZmVyZXJ9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICB7L2ZvcmVhY2h9CiAgICA8L3RhYmxlPgoJCgl7L2lmfQoKPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/admin_tail.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCd0YWlsX3RpdGxlJyl9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskbW9kLT5MYW5nKCd0YWlsX2Rlc2NyaXB0aW9uJyl9CjwvZGl2Pgp7JGZvcm1zdGFydH0KeyR0YWJ0b30KPGZpZWxkc2V0Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RhaWxfcHJvbXB0X2ZpbGVuYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ZpbGV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0YWlsX3Byb21wdF9saW5lcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9saW5lc308L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+CnskZm9ybWVuZH0K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_tbimage.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCd0YmltYWdlJyl9PC9oMz4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskbW9kLT5MYW5nKCd0YmltYWdlX2Rlc2NyaXB0aW9uJyl9CjwvZGl2PgoKPGRpdiBpZD0idGJwYWdlX3RhYnMiPiAKCTxkaXYgaWQ9Im1hbnVhbCJ7aWYgJHR0YWJ0bz09IiIgb3IgJHR0YWJ0bz09Im1hbnVhbCJ9IGNsYXNzPSJhY3RpdmUiey9pZn0+CgkJeyRtb2QtPkxhbmcoJ21hbnVhbCcpfQoJPC9kaXY+ICAKCTxkaXYgaWQ9IndtaSJ7aWYgJHR0YWJ0bz09IndtaSJ9IGNsYXNzPSJhY3RpdmUiey9pZn0+CgkJeyRtb2QtPkxhbmcoJ3dhdGVybWFya2ltYWdlJyl9ICAKCTwvZGl2PiAgICAgCgl7KiAgICAgICAKCTxkaXYgaWQ9IndtdCJ7aWYgJHR0YWJ0bz09IndtdCJ9IGNsYXNzPSJhY3RpdmUiey9pZn0+CgkJeyRtb2QtPkxhbmcoJ3dhdGVybWFya3RleHQnKX0KCTwvZGl2PiAgICAgIAoJKn0gCjwvZGl2PiAgIAo8ZGl2IGNsYXNzPSJjbGVhcmIiPiAgCgo8ZGl2IGlkPSJ0YnBhZ2VfY29udGVudCI+CjxkaXYgaWQ9Im1hbnVhbF9jIj4KCnskbW9kLT5MYW5nKCdoZWxwX3RiaW1hZ2UnKX0KCgo8L2Rpdj4gIAo8ZGl2IGlkPSJ3bWlfYyI+Cnskd21pZm9ybXN0YXJ0fQp7JHdtaWhpZGRlbn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3dtaV9pbWFnZScpfTwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+e2lmICR3bWlfaW1hZ2V9PGltZyBzcmM9Inskd21pX2ltYWdlfSIgLz57ZWxzZX17JG1vZC0+TGFuZygndGJpbWFnZW5vZmlsZScpfXsvaWZ9PGJyIC8+PGJyIC8+eyRpbnB1dHdtaV9pbWFnZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bWlfcmVsc2l6ZScpfTwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dHdtaV9yZWxzaXplfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bXRfcG9zaXRpb24nKX08L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXR3bWlfcG9zfSZuYnNwOyZuYnNwOyZuYnNwO3skbW9kLT5MYW5nKCd3bXRfcG9zeCcpfSZuYnNwOyZuYnNwO3skaW5wdXR3bWlfcG9zeH0mbmJzcDsmbmJzcDsmbmJzcDt7JG1vZC0+TGFuZygnd210X3Bvc3knKX0mbmJzcDsmbmJzcDt7JGlucHV0d21pX3Bvc3l9PGJyIC8+PGJyIC8+eyR0YmltYWdlcG9zaGVscH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgo8L2Rpdj4KCnskZm9ybWVuZH0KPC9kaXY+CnsqCjxkaXYgaWQ9IndtdF9jIj4gCgp7JHdtdGZvcm1zdGFydH0KeyR3bXRoaWRkZW59Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bXRfdGV4dCcpfTwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dHdtdF90ZXh0fTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bXRfZm9udCcpfTwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR3bXRfZm9udH08YnIgLz57JGlucHV0d210X2ZvbnR9ICB7JG1vZC0+TGFuZygnd210X3NpemUnKX0geyRpbnB1dHdtdF9zaXplfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bXRfY29sb3InKX08L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXR3bXRfY29sb3J9ICB7JG1vZC0+TGFuZygnd210X29wYWNpdHknKX0geyRpbnB1dHdtdF9vcGFjaXR5fTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd3bXRfcG9zaXRpb24nKX08L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXR3bXRfcG9zfSZuYnNwOyZuYnNwOyZuYnNwO3skbW9kLT5MYW5nKCd3bXRfcG9zeCcpfSZuYnNwOyZuYnNwO3skaW5wdXR3bXRfcG9zeH0mbmJzcDsmbmJzcDsmbmJzcDt7JG1vZC0+TGFuZygnd210X3Bvc3knKX0mbmJzcDsmbmJzcDt7JGlucHV0d210X3Bvc3l9PGJyIC8+PGJyIC8+eyR0YmltYWdlcG9zaGVscH08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+Cgp7JGZvcm1lbmR9CjwvZGl2PgoqfQo8L2Rpdj4KPC9kaXY+CgoKCgoKCgoJCQoKCiA=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_twitterfeed.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfdHdpdHRlcmZlZWRfdGl0bGUnKX08L2gzPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRtb2QtPkxhbmcoJ3R3aXR0ZXJmZWVkX2Rlc2NyaXB0aW9uJyl9CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfdHdpdHRlcmZlZWRhcGlrZXknKX08L2gzPiAKPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRtb2QtPkxhbmcoJ3R3aXR0ZXJmZWVkX2FwaWRlc2NyaXB0aW9uJyl9PC9wPgo8L2Rpdj4KCnskZm9ybXN0YXJ0fQp7JHRhYnRvfQo8ZmllbGRzZXQ+CgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY29uc3VtZXJrZXknKX06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbnN1bWVya2V5fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NvbnN1bWVyc2VjcmV0Jyl9OjwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb25zdW1lcnNlY3JldH08L3A+CjwvZGl2PgoKe2lmICR0d2l0dGVyZmVlZF9va30KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndG9rZW4nKX06PC9wPgo8cCBjbGFzcz0idGJBY3RpdmUiIHN0eWxlPSJ3aWR0aDogNTAlOyBtaW4td2lkdGg6IDUwMHB4OyIgPnskbW9kLT5MYW5nKCd0b2tlbm9rJyl9PC9wPgo8L2Rpdj4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHR3YnV0dG9ufTwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+CnskZm9ybWVuZH0KCgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8aDM+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZW1hbmFnZW1lbnQnKX08L2gzPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskbmV3dGVtcGxhdGVsaW5rfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGggY2xhc3M9InBhZ2V3ODAiPnskbW9kLT5MYW5nKCdwcm9tcHRfbmFtZScpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPnskbW9kLT5MYW5nKCdwcm9tcHRfZGVmYXVsdCcpfTwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPkV4cG9ydDwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgICA8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgogICAgIDx0ZD57JGVudHJ5LT5kZWZhdWx0fTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmNvcHlsaW5rfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZXhwb3J0fTwvdGQ+CiAgIDwvdHI+CnsvZm9yZWFjaH0KPC90YWJsZT4KPC9kaXY+CgoKCnskZm9ybXN0YXJ0aW1wb3J0fQp7JHRhYnRvfQo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3RpdGxlX2ltcG9ydHhtbCcpfTwvbGVnZW5kPgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtb2QtPkxhbmcoJ2ltcG9ydHhtbG5vdGUnKXxubDJicn08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaW1wb3J0eG1sJyl9OjwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+CnskaW1wb3J0eG1sfQo8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnb3ZlcndyaXRlJyl9OjwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+Cnskb3ZlcndyaXRlfQo8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPgp7JHN1Ym1pdH0KPC9wPgo8L2Rpdj4KCgoKPC9maWVsZHNldD4KeyRmb3JtZW5kaW1wb3J0fQoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/bar-alpha.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/bar-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiPHPmDAMMGBsbw9lMDDgA6RKM////h3POnj1LCzsAAgwAQtYIcFfEyzkAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/bar-pointer.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGhJREFUeNpiLCnK+s+ABNw9AxkZSAA7t69H0c8CIrp7p8IFSouz/xNrKMgwNL0MTOiKQArQbSXGMDgAeRkbgAYFVoxPDws220FOB3kbiHG6EBQ02FzIhMswQl4GqQGpRQeM1I5lgAADAGvJY88rS+siAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/bar.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAA84CAYAAADKKOIFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAASBJREFUeNrs2ssOgjAQheFDF77/8xLI2AEENWIo4CWdn8UXtbMprSdtQSZZki6qBZl6S33+klqpGvJleaBy/2pB6sxnX+fzr1Ut+AS05P2rhTxO3qfOg6L1wasD2TBU3ksN5Nk4fZpoSj5tbWhKSnY2FJX8gHRe8c7WoobDxf/+2znFnxutw8Vf48hfcmtDUZZsaFgvfnGRiWQimUgmxslEjUvF+fJNy1xiaVhAAgCEYojFMQl9H00mAkBslmUjmQgArBN1S8L7py1kIgBEjMN354njphoAIBJr7+KQiQAQk+UxNJkIAOHXict5otg7A0DsOHw4T3xeJ45hCQAQiPX3E7k5ABCSlfcTuTkAEHCdOD93Xk4WyUQACLltzl4FGACT38aTA+sZOgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/map-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1JREFUeNpiPHPmDAM2YGxsjFWciYFEMKqBGMD4//9/rBJnz54dDSX6aQAIMABCtQiAsDRF+wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/map-pointer.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPpJREFUeNqkU7sNgzAQPQWJDegYACp2gFSUrMAEzMEKdBR0ERVVuogKKS0UULAGHzn30AkpUT5WOOn57Lv37POP6NksRswoGD1jFl9I3KJXU0rBBYwyiiKVZZlq21ZN07R5jBFHHjzh7xbYtn1P01Qty3LjZMLwGKb4BHHkwZOF9lJLJNhyhoOZ3wDxHDypYNtCjJJkxU/CfQLwZAvxiZtzGIZkGMaF+x19tw488KFD0+NQZG+kAQ98uQWacapyODpiE3zoUPY4DAMmcUnPXOGPEDd1XWPga4p94TcQX6uqonVdI+47P4QOeOBDd/ieD72ww2/7r1/1EGAAV2NksWTZPHwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/map.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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AIwaHXWjRbcZ9ToAvavek9KUzs6Z1qjZo7500UdH/ToAPWuX4OtL3uLfTVYCM7aec/Xsm6vzT1ejjo66+aJLjtoegJKw9NnLJjX1u8laZj57WfwbVqOOjvrCRR8ftR6/+MXRteLo30LP6/7f1SLH/3v+jte1v71Rs0fdbNEtRq3H3/7tEV7xqd87OMW9v9eo2b93s0W3GLUev/zlMbxE7/+jbxO4iD2z9P7/69cZNXvUzRbdYtR6/N3fHbesmPH/GybK+79Rs/+/2aJbjFqPv//7I+US3/E+Gi9WxjTPB8Co2QG4edEtRq3HP/zDkbrczN8zMEH2lOMBMGr092626Baj1uMf//HoWqBnldH3Fbho0ddlvq8jdTijXgVg0UW3GLUev/rVMXTD6J0v65znmZcZNftlmy26xaj1+Kd/OprvG9nz+sz32XixRl+f8z6Nmv0+N1x0+VHr8c//fHTfObpnqZH3MXhxMybLD4BRswOw0KLLj1qPf/mXY8rDoeY8xGr4It/3vFGzn99w0eVHrcevf310XcIn3uabi9Fz0ee/jVGz32bDRZcftR7/+q9H1xpPvK7xIq7xOqNmv27TRZcetR7/9m9H9yUf/fXgQdiOztZm//rr1xk1e9RNF1161Hr85jdHytER73gfwYueMV//+zBq9vvYdNGlR63Hb397dF3q3rXyVu2epXe+2NsZNXvUjRdddtR6/PDDMXxalJr8soHP1Rnz9r29UbPf58aLLjtqPf7934/wpXvq5QnT3vdyo2a/fPNFlxy1Hr/73dF98PO7X9cx7XOvM2r2616w6HKj1uM//uNIOQn6He9jYNrW35P3Poya/T5esuhSo9bjP//zaL5EkUs+430mTxz5ffH3adTs9/nCRR8ftR7/9V9H96W7++0mT5z7dkbNfruXL/rIqPX4/e+PKZf0/vVunW5eAIyaHYAXLDpt1Hr8938fG62w0V+VUXcIwKePWo8fGQI+U/X1DwIACAAgAMBnBKAc//u0i548efqkp58V3wDAxxIAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQABEAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQACMAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAMCZehwKAAIACAAgAMBnBOAPVwPW4smTp897cisAfDABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQAAEAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAEQABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEAATACCAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgCcqcehACAAgAAAAgB8RADKH64GrMWTJ0+f9/Qz//7D5xIAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQABEAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAAbgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAcKYehwSAAAACAAgA8BkBKD8WoBZPnjx93pNbAeCDCQAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgACIAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAIgA1AAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQABgX7//7Q/lz3/+cwGAT/RnP/+rstLXnACAHwEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAEAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAQABsAAIACAAgAIAAAK9Wj0MCQAAAAQAEAPiEAJSjHPWPz3jy5OnTnn5WfAMAH0sAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAYIcAHL8upf6N8eAjA1D/+sf//PDj018aED7zR4C/+MO3AgYE1wEAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIAAiAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgACAAAgACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAGAEEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEAHhWPQ4FAAEABAAQAOATAlB+LED94zOePHn6tCe3AsAHEwAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAQAEAAAAEABAAEQABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEABAAAABAAQAEAAQAAEAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQAAAAQAEABAAQABAAIwAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAAACAAgAIACAAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAAAIACAAgAIAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAgAAAAgAIACAAwJn/EWAAyihyDzKRI84AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/preview-opacity.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiPHPmDAMSMDY2RuYyMeAFNJVm/P//PzL/7Nmzg8VpAAEGALE5CHQT4Ca/AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/templates/css/colorpicker/ui-colorpicker.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZBJREFUeNqcUz1PAkEUfMst5JTGEArUmBB+AR01rYn/wITCQmuiyTVwl9CQmNAiDX+Fmo4fQAGFMRYqJp563+6su7gaCmGTyWXzZibz3ttjnuedEdEh7XYeeBzHR71e724XdafTueJJklCWZVSv1y+3Ec9msxG0PIoilqYplUolmkwmH6L2bvBShUQgVl/ebDZPoIEWLUiDcrkMgS/wZIgSQ6yxL7jSAFokIFxs24ZBKPC5QWQiAlclIB6GoUxQKBR0Al8R0c6bailSpjh74EIDrZwBhqEMXgVWAi9KmG2YXwQuNHIGOkE+n0fxEbtVMzAPV2ZACu46QRAEpsEzCIvFQqqq1So+1nA4PJ3P5xXtpg2g/ZsAvdN4PJZEsS4gXS6XlW63OxJT/9mvmUA+CM713pnuXbwLIENNkKnf768NHMf5TuD7PsNLtCyLXNe9QJEx9msAqIHTarVoMBhQu92Wd2hZrVa7nk6nt2a8/xykajQaN6xYLJ7ncrnjXX4mMYd7ZMUDOFCr2uYg8upLgAEA1kH3XkbU7HQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/templates/css/jquery.colorpicker.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnVpLWNvbG9ycGlja2VyLA0KLnVpLWRpYWxvZy51aS1jb2xvcnBpY2tlciB7DQoJd2lkdGg6CQkJCQlhdXRvOw0KICAgIHdoaXRlLXNwYWNlOgkJCW5vd3JhcDsNCg0KCS13ZWJraXQtdG91Y2gtY2FsbG91dDoJbm9uZTsNCgktd2Via2l0LXVzZXItc2VsZWN0Oglub25lOw0KCS1raHRtbC11c2VyLXNlbGVjdDoJCW5vbmU7DQoJLW1vei11c2VyLXNlbGVjdDoJCW5vbmU7DQoJLW1zLXVzZXItc2VsZWN0OgkJbm9uZTsNCgl1c2VyLXNlbGVjdDoJCQlub25lOw0KfQ0KDQoudWktY29sb3JwaWNrZXItaW5saW5lIHsNCiAgICBwb3NpdGlvbjoJCQkJc3RhdGljOw0KfQ0KDQoudWktY29sb3JwaWNrZXItYnV0dG9uc2V0IHsNCglmbG9hdDoJCQkJCWxlZnQ7DQoJbWFyZ2luLWxlZnQ6CQkJLjRlbTsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLWJ1dHRvbnNldCAudWktYnV0dG9uIHsNCgltYXJnaW46CQkJCQkuNWVtIDAgLjVlbSAwOw0KCWN1cnNvcjoJCQkJCXBvaW50ZXI7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1idXR0b25wYW5lIHsNCgliYWNrZ3JvdW5kLWltYWdlOgkJbm9uZTsNCgltYXJnaW46CQkJCQkuN2VtIDAgMCAwOw0KCXBhZGRpbmc6CQkJCTAgLjJlbTsNCglib3JkZXItbGVmdDoJCQkwOw0KCWJvcmRlci1yaWdodDoJCQkwOw0KCWJvcmRlci1ib3R0b206CQkJMDsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uIHsNCglmbG9hdDoJCQkJCXJpZ2h0Ow0KCW1hcmdpbjoJCQkJCS41ZW0gLjJlbSAuNGVtOw0KCWN1cnNvcjoJCQkJCXBvaW50ZXI7DQoJcGFkZGluZzoJCQkJLjJlbSAuNmVtIC4zZW0gLjZlbTsNCgl3aWR0aDoJCQkJCWF1dG87DQoJb3ZlcmZsb3c6CQkJCXZpc2libGU7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1jb2xvcnBpY2tlci1jdXJyZW50IHsNCglmbG9hdDoJCQkJCWxlZnQ7DQp9DQoNCi51aS1jb2xvcnBpY2tlciB0YWJsZSB7DQogICAgZm9udC1zaXplOgkJCQkxMDAlOyAvKiBSZXNldCBicm93c2VyIHRhYmxlIGZvbnQtc2l6ZSAqLw0KCW1hcmdpbjoJCQkJCTA7DQp9DQoNCi51aS1jb2xvcnBpY2tlciB0YWJsZSB0ZCB7DQoJdmVydGljYWwtYWxpZ246CQkJdG9wOw0KfQ0KDQoudWktY29sb3JwaWNrZXItcGFkZGluZy1sZWZ0IHsNCglwYWRkaW5nLWxlZnQ6CQkJMTBweDsNCn0NCi51aS1jb2xvcnBpY2tlci1wYWRkaW5nLXRvcCB7DQoJcGFkZGluZy10b3A6CQkJMTBweDsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLWJvcmRlciB7DQoJYm9yZGVyOgkJCQkJMXB4IGluc2V0Ow0KICAgIGRpc3BsYXk6CQkJCWlubGluZS1ibG9jazsNCn0NCg0KLyogQmFyICYgbWFwICovDQoudWktY29sb3JwaWNrZXItbWFwID4gKiwNCi51aS1jb2xvcnBpY2tlci1iYXIgPiAqIHsNCiAgICBwb3NpdGlvbjoJCQkJYWJzb2x1dGU7DQoJY3Vyc29yOgkJCQkJY3Jvc3NoYWlyOw0KfQ0KDQoudWktY29sb3JwaWNrZXItbWFwLXBvaW50ZXIsDQoudWktY29sb3JwaWNrZXItYmFyLXBvaW50ZXIgew0KICAgIHBvc2l0aW9uOgkJCQlhYnNvbHV0ZTsNCn0NCi8qIE1hcCAqLw0KLnVpLWNvbG9ycGlja2VyLW1hcCwNCi51aS1jb2xvcnBpY2tlci1tYXAgPiAqIHsNCiAgICBkaXNwbGF5OgkJCQlibG9jazsNCgl3aWR0aDoJCQkJCTI1NnB4Ow0KCWhlaWdodDoJCQkJCTI1NnB4Ow0KCW92ZXJmbG93OgkJCQloaWRkZW47DQp9DQoNCi51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMSwNCi51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMiB7DQoJYmFja2dyb3VuZDoJCQkJdXJsKGNvbG9ycGlja2VyL21hcC5wbmcpIG5vLXJlcGVhdDsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLW1hcC1sYXllci1hbHBoYSB7DQoJYmFja2dyb3VuZDoJCQkJdXJsKGNvbG9ycGlja2VyL21hcC1vcGFjaXR5LnBuZyk7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1tYXAtcG9pbnRlciB7DQoJZGlzcGxheToJCQkJaW5saW5lLWJsb2NrOw0KCXdpZHRoOgkJCQkJMTVweDsNCgloZWlnaHQ6CQkJCQkxNXB4Ow0KCWJhY2tncm91bmQ6CQkJCXVybChjb2xvcnBpY2tlci9tYXAtcG9pbnRlci5wbmcpIG5vLXJlcGVhdDsNCn0NCg0KLyogQmFyICovDQoudWktY29sb3JwaWNrZXItYmFyLA0KLnVpLWNvbG9ycGlja2VyLWJhciA+ICogew0KICAgIGRpc3BsYXk6CQkJCWJsb2NrOw0KICAgIHdpZHRoOgkJCQkJMjBweDsNCiAgICBoZWlnaHQ6CQkJCQkyNTZweDsNCglvdmVyZmxvdzoJCQkJaGlkZGVuOw0KICAgIGJhY2tncm91bmQtcmVwZWF0OgkJcmVwZWF0LXg7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMSwNCi51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMiwNCi51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMywNCi51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItNCB7DQoJYmFja2dyb3VuZDoJCQkJdXJsKGNvbG9ycGlja2VyL2Jhci5wbmcpIHJlcGVhdC14Ow0KfQ0KDQoudWktY29sb3JwaWNrZXItYmFyLWxheWVyLWFscGhhIHsNCgliYWNrZ3JvdW5kOgkJCQl1cmwoY29sb3JwaWNrZXIvYmFyLW9wYWNpdHkucG5nKTsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci1hbHBoYWJhciB7DQoJYmFja2dyb3VuZDoJCQkJdXJsKGNvbG9ycGlja2VyL2Jhci1hbHBoYS5wbmcpOw0KfQ0KDQoudWktY29sb3JwaWNrZXItYmFyLXBvaW50ZXIgew0KCWRpc3BsYXk6CQkJCWlubGluZS1ibG9jazsNCgl3aWR0aDoJCQkJCTIwcHg7DQoJaGVpZ2h0OgkJCQkJN3B4Ow0KCWJhY2tncm91bmQ6CQkJCXVybChjb2xvcnBpY2tlci9iYXItcG9pbnRlci5wbmcpIG5vLXJlcGVhdDsNCn0NCg0KLyogUHJldmlldyAqLw0KLnVpLWNvbG9ycGlja2VyLXByZXZpZXcgew0KCXRleHQtYWxpZ246CQkJCWNlbnRlcjsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbCB7DQogICAgY3Vyc29yOgkJCQkJcG9pbnRlcjsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbCwNCi51aS1jb2xvcnBpY2tlci1wcmV2aWV3LWN1cnJlbnQgew0KICAgIHdpZHRoOgkJCQkJNTBweDsNCiAgICBoZWlnaHQ6CQkJCQkyMHB4Ow0KICAgIGRpc3BsYXk6CQkJCWlubGluZS1ibG9jazsNCn0NCg0KLnVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbC1hbHBoYSwNCi51aS1jb2xvcnBpY2tlci1wcmV2aWV3LWN1cnJlbnQtYWxwaGEgew0KICAgIHdpZHRoOgkJCQkJNTBweDsNCiAgICBoZWlnaHQ6CQkJCQkyMHB4Ow0KICAgIGRpc3BsYXk6CQkJCWlubGluZS1ibG9jazsNCgliYWNrZ3JvdW5kOgkJCQl1cmwoY29sb3JwaWNrZXIvcHJldmlldy1vcGFjaXR5LnBuZykgcmVwZWF0Ow0KfQ0KDQovKiBJbnB1dHMgKi8NCi51aS1jb2xvcnBpY2tlci1yZ2IgbGFiZWwsDQoudWktY29sb3JwaWNrZXItaHN2IGxhYmVsLA0KLnVpLWNvbG9ycGlja2VyLWhzbCBsYWJlbCwNCi51aS1jb2xvcnBpY2tlci1sYWIgbGFiZWwsDQoudWktY29sb3JwaWNrZXItY215ayBsYWJlbCwNCi51aS1jb2xvcnBpY2tlci1hbHBoYSBsYWJlbCB7DQogICAgd2lkdGg6CQkJCQkxLjVlbTsNCiAgICBkaXNwbGF5OgkJCQlpbmxpbmUtYmxvY2s7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1udW1iZXIgew0KCW1hcmdpbjoJCQkJCS4xZW07DQoJd2lkdGg6CQkJCQk0ZW07DQp9DQoNCi8qIEhleCAqLw0KLnVpLWNvbG9ycGlja2VyLWhleCB7DQoJdGV4dC1hbGlnbjoJCQkJY2VudGVyOw0KfQ0KDQovKiBTd2F0Y2hlcyAqLw0KLnVpLWNvbG9ycGlja2VyLXN3YXRjaGVzIHsNCgl3aWR0aDoJCQkJCTg0cHg7DQoJaGVpZ2h0OgkJCQkJMjU2cHg7DQoJb3ZlcmZsb3c6CQkJCWF1dG87DQoJYmFja2dyb3VuZC1jb2xvcjoJCSNmOGY4Zjg7DQp9DQoNCi51aS1jb2xvcnBpY2tlci1zd2F0Y2ggew0KCWN1cnNvcjoJCQkJCXBvaW50ZXI7DQoJZmxvYXQ6CQkJCQlsZWZ0Ow0KCXdpZHRoOgkJCQkJMTFweDsNCgloZWlnaHQ6CQkJCQkxMXB4Ow0KICAgIGJvcmRlci1yaWdodDoJCQkxcHggc29saWQgYmxhY2s7DQogICAgYm9yZGVyLWJvdHRvbToJCQkxcHggc29saWQgYmxhY2s7DQp9]]></data>
	</file>
	<file>
	  <filename>/templates/css/ToolBoxBackendStyles.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogQmFja2VuZCBTdHlsZXMgVG9vbEJveCBNb2R1bGUgKi8gLyogd3JpdHRlbiBieSBsdWthcyBibGF0dGVyICovDQp0YWJsZS5Ub29sQm94TWFpblRhYmxlIHsNCgl3aWR0aDogMTAwJTsNCn0NCg0KdGFibGUuVG9vbEJveE1haW5UYWJsZSB0ZCB7DQoJdmVydGljYWwtYWxpZ246IHRvcDsNCn0NCg0KDQoudGJBY3RpdmUgew0KCWNvbG9yOiAjZmZmOyAvKiAjMzUzNjM2OyAqLw0KCWJhY2tncm91bmQ6ICMxNDdGREI7IC8qICNGRjg4MDAgI2NjYzsgKi8JDQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQp9DQoNCi50YkluYWN0aXZlIHsNCgljb2xvcjogIzM1MzYzNjsNCgliYWNrZ3JvdW5kOiAjRUJFQUVBOw0KfQ0KDQoudGJBY3RpdmUsIC50YkluYWN0aXZlIHsNCglwYWRkaW5nOiA1cHggMTBweDsNCgltYXJnaW46IDVweCAwOw0KfQ0KDQoudzMwIGlucHV0IHsNCgl3aWR0aDogMzBweCAhaW1wb3J0YW50Ow0KCW1pbi13aWR0aDogMjBweA0KfQ0KDQoudzUwIGlucHV0IHsNCgl3aWR0aDogNTBweCAhaW1wb3J0YW50Ow0KCW1pbi13aWR0aDogMjBweA0KfQ0KDQoudzgwIGlucHV0IHsNCgl3aWR0aDogODBweCAhaW1wb3J0YW50Ow0KCW1pbi13aWR0aDogNTBweA0KfQ0KDQoNCg0KLyoqKiB0YWJzICoqKi8NCiN0YnBhZ2VfdGFicyB7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCgltYXJnaW4tdG9wOiAyMHB4DQp9DQojdGJwYWdlX3RhYnMgZGl2IHsNCgljb2xvcjogIzU4NTg1ODsNCglib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsNCgl0ZXh0LXNoYWRvdzogLTFweCAxcHggMCAjZmZmOw0KCWJhY2tncm91bmQ6ICNkZGQ7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWZsb2F0OiBsZWZ0Ow0KCWN1cnNvcjogcG9pbnRlcjsNCgl3aGl0ZS1zcGFjZTogbm93cmFwOw0KCXBhZGRpbmc6IDExcHg7DQoJbWFyZ2luLXRvcDogMXB4Ow0KCW1hcmdpbi1yaWdodDogMXB4DQp9DQojdGJwYWdlX3RhYnMgZGl2IGltZyB7DQoJaGVpZ2h0OiAxNHB4Ow0KCW1hcmdpbi10b3A6IDJweDsNCgltYXJnaW4tbGVmdDogNXB4Ow0KCW1hcmdpbi1yaWdodDogNXB4DQp9DQojdGJwYWdlX3RhYnMgZGl2OmhvdmVyIHsNCgljb2xvcjogIzE0N2ZkYg0KfQ0KI3RicGFnZV90YWJzIGRpdi5hY3RpdmUgew0KCWNvbG9yOiAjZmZmOw0KCXRleHQtc2hhZG93OiAtMXB4IC0xcHggMCAjMDU0ODgyOw0KCWJhY2tncm91bmQ6ICMxNDdmZGIgLyp1cmwoLi4vLi4vLi4vLi4vdGhlbWVzL09uZUVsZXZlbi9pbWFnZXMvbGF5b3V0L3RhYi1hY3RpdmUucG5nKSBuby1yZXBlYXQgY2VudGVyIGJvdHRvbSovDQp9DQojdGJwYWdlX2NvbnRlbnQgew0KCWJhY2tncm91bmQ6ICNmZmY7DQoJYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7DQoJcGFkZGluZzogMjBweCAxMHB4Ow0KCWJvcmRlcjogMXB4IHNvbGlkICNkZGQ7DQoJYm9yZGVyLXRvcDogM3B4IHNvbGlkICNkZGQNCn0NCg0KDQovKiBUZW1wbGF0ZSBGaWxlcyAqLw0KLmZibWFpbiB7DQoJd2lkdGg6IDQ3MHB4Ow0KCWNvbG9yOiAjMDAwMDAwOw0KCWJvcmRlcjogbm9uZTsNCglwYWRkaW5nOiAwcHg7DQoJdGV4dC1hbGlnbjogbGVmdDsNCgltYXJnaW46IDAgMCAyMHB4IDA7DQp9DQoNCi5mYm1haW4gLmNwYXRoIHsNCglkaXNwbGF5OiBibG9jazsNCglmb250LXdlaWdodDogYm9sZDsNCn0NCg0KLmZibWFpbiAuZmJuYXYgew0KCWRpc3BsYXk6IGJsb2NrOw0KCW1hcmdpbjogNTBweCAwIDIwcHggMDsNCn0NCg0KLmZibWFpbiAuemVpbGVuYm94IHsNCglkaXNwbGF5OiBibG9jazsNCgljb2xvcjogIzAwMDAwMDsNCglwYWRkaW5nOiA4cHggMDsNCgloZWlnaHQ6IDEwcHg7DQp9DQoNCi5mYm1haW4gLmJveHRpdGVsIHsNCgltYXJnaW4tYm90dG9tOiAxMHB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQouZmJtYWluIC5pY29uLC5mYm1haW4gLm5hbWUsLmZibWFpbiAudGl0bGVuYW1lLC5mYm1haW4gLnNpemUsLmZibWFpbiAudHlwZSwuZmJtYWluIC5tb2QsLmZibWFpbiAuYWN0aW9uDQoJew0KCWRpc3BsYXk6IGJsb2NrOw0KCWZsb2F0OiBsZWZ0Ow0KCWNvbG9yOiAjMDAwOw0KCWJhY2tncm91bmQ6IGluaGVyaXQ7DQoJb3ZlcmZsb3c6IG5vbmU7DQoJb3ZlcmZsb3ctWTogbm9uZTsNCn0NCg0KLmZibWFpbiAuaWNvbiB7DQoJd2lkdGg6IDIwcHg7DQp9DQoNCi5mYm1haW4gLm5hbWUgew0KCXdpZHRoOiAzNjBweDsNCn0NCg0KLmZibWFpbiAudGl0bGVuYW1lIHsNCgl3aWR0aDogMzgwcHg7DQp9DQoNCi5mYm1haW4gLnNpemUgew0KCXdpZHRoOiA5MHB4Ow0KCXRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KDQouZmJtYWluIC50eXBlIHsNCgl3aWR0aDogNjVweDsNCgl0ZXh0LWFsaWduOiByaWdodDsNCn0NCg0KLmZibWFpbiAubW9kIHsNCgl3aWR0aDogMTIwcHg7DQoJdGV4dC1hbGlnbjogcmlnaHQ7DQp9DQoNCi5mYm1haW4gLmFjdGlvbiB7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCgl3aWR0aDogMTAwcHg7DQoJdGV4dC1hbGlnbjogbGVmdDsNCglwYWRkaW5nLWxlZnQ6IDE1cHg7DQp9DQoNCi5mYm1haW4gLnR5cGUsLmZibWFpbiAubW9kIHsNCglkaXNwbGF5OiBub25lOw0KfQ0KDQouZmJtYWluIC5taW5pYm94IHsNCglwYWRkaW5nOiAwcHggMCAwcHggMDsNCn0NCg0K]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate_alb.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxoMz57JG1vZC0+TGFuZygndGl0bGVfdGVtcGxhdGUnKX08L2gzPgo8L2Rpdj4KeyRmb3Jtc3RhcnR9eyRoaWRkZW59CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlbmFtZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZW5hbWV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX17JHJlc2V0fTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8aDM+eyRtb2QtPkxhbmcoJ3Byb21wdF9lZGl0dGVtcGxhdGUnKX08L2gzPgo8L2Rpdj4KCntpZiAhJGpxdWVyeV9vd259CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2pxdWVyeScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9qcXVlcnl9PC9wPgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3VzZV9tb2JpbGV0ZW1wbGF0ZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91c2VfbW9iaWxldGVtcGxhdGV9PC9wPgo8L2Rpdj4KCnskbW9kLT5TdGFydFRhYkhlYWRlcnMoKX0KeyRtb2QtPlNldFRhYkhlYWRlcignZGVza3RvcCcsJG1vZC0+TGFuZygnZGVza3RvcHRwbCcpLHRydWUpfQp7JG1vZC0+U2V0VGFiSGVhZGVyKCdtb2JpbGUnLCRtb2QtPkxhbmcoJ21vYmlsZXRwbCcpLGZhbHNlKX0KeyRtb2QtPkVuZFRhYkhlYWRlcnMoKX0KCgp7JG1vZC0+U3RhcnRUYWJDb250ZW50KCl9Cgp7JG1vZC0+U3RhcnRUYWIoJ2Rlc2t0b3AnLCIiKX0KCntpZiAkc2VjdGlvbiAhPSAnYXV0b2xpZ2h0Ym94J30KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlfTwvcD4KPC9kaXY+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlY3NzJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnc21hcnR5dGFncycpfTxiciAvPnskdGVtcGxhdGVjc3N9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlanMnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbW9kLT5MYW5nKCdzbWFydHl0YWdzJyl9PGJyIC8+eyR0ZW1wbGF0ZWpzfTwvcD4KPC9kaXY+Cgp7JG1vZC0+RW5kVGFiKCl9CnskbW9kLT5TdGFydFRhYignbW9iaWxlJywiIil9Cgp7aWYgJHNlY3Rpb24gIT0gJ2F1dG9saWdodGJveCd9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZW1vYmlsZX08L3A+CjwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZWNzcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtb2QtPkxhbmcoJ3NtYXJ0eXRhZ3MnKX08YnIgLz57JHRlbXBsYXRlbW9iaWxlY3NzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZWpzJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnc21hcnR5dGFncycpfTxiciAvPnskdGVtcGxhdGVtb2JpbGVqc308L3A+CjwvZGl2PgoKeyRtb2QtPkVuZFRhYigpfQp7JG1vZC0+RW5kVGFiQ29udGVudCgpfQoKCntpZiAkbW9kZSAhPSAiYWRkIn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxoMz57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlZmlsZXMnKX08L2gzPgo8L2Rpdj4KCgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPGRpdiBjbGFzcz0icGFnZWlucHV0IGZibWFpbiI+Cgk8ZGl2IGNsYXNzPSJ6ZWlsZW5ib3ggYm94dGl0ZWwiPgoJCTxzcGFuIGNsYXNzPSJ0aXRsZW5hbWUiPnskbW9kLT5MYW5nKCdwcm9tcHRfZmlsZScpfTwvc3Bhbj4KCQk8c3BhbiBjbGFzcz0ic2l6ZSI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zaXplJyl9PC9zcGFuPgoJCTxzcGFuIGNsYXNzPSJhY3Rpb24iPnskbW9kLT5MYW5nKCdwcm9tcHRfZGVsZXRlJyl9PC9zcGFuPgoJPC9kaXY+CiAgCTxkaXYgY2xhc3M9Im1pbmlib3giPgogIAl7Zm9yZWFjaCBmcm9tPSR0cGxmaWxlcyBpdGVtPWZpbGV9CgkJPGRpdiBjbGFzcz0iemVpbGVuYm94Ij4KCQkJPHNwYW4gY2xhc3M9Imljb24iPnskZmlsZS0+ZXh0fTwvc3Bhbj4KCQkJPHNwYW4gY2xhc3M9Im5hbWUiPnskZmlsZS0+bGlua308L3NwYW4+CgkJCTxzcGFuIGNsYXNzPSJzaXplIj57JGZpbGUtPnNpemV9PC9zcGFuPgoJCQk8c3BhbiBjbGFzcz0iYWN0aW9uIj57JGZpbGUtPmFjdGlvbn08L3NwYW4+CgkJPC9kaXY+Cgl7L2ZvcmVhY2h9Cgk8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+CjxkaXYgaWQ9ImZpbGUtdXBsb2FkZXIiIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoeyRhZGRmaWxlc2ljb259KSBuby1yZXBlYXQ7Ij57JGFkZGZpbGVzfQoJCTxub3NjcmlwdD4JCQkKCQkJPHA+UGxlYXNlIGVuYWJsZSBKYXZhU2NyaXB0IHRvIHVzZSBmaWxlIHVwbG9hZGVyLjwvcD4KCQkJPCEtLSBvciBwdXQgYSBzaW1wbGUgZm9ybSBmb3IgdXBsb2FkIGhlcmUgLS0+CgkJPC9ub3NjcmlwdD4gICAgICAgICAKCTwvZGl2PgogICAge2xpdGVyYWx9CiAgICA8c2NyaXB0PiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gY3JlYXRlVXBsb2FkZXIoKXsgICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHVwbG9hZGVyID0gbmV3IHFxLkZpbGVVcGxvYWRlcih7CiAgICAgICAgICAgIAl0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InFxLXVwbG9hZGVyIj4nICsgCgkJCSAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icXEtdXBsb2FkLWRyb3AtYXJlYSI+PHNwYW4+WW91ciB0ZXh0IGhlcmU8L3NwYW4+PC9kaXY+JyArCgkJCSAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icXEtdXBsb2FkLWJ1dHRvbiI+ey9saXRlcmFsfXskYWRkZmlsZXN9e2xpdGVyYWx9PC9kaXY+JyArCgkJCSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJxcS11cGxvYWQtbGlzdCI+PC91bD4nICsgCgkJCSAgICAgICAgICAJCSc8L2Rpdj4nLAogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlLXVwbG9hZGVyJyksCiAgICAgICAgICAgICAgICBhY3Rpb246ICd7L2xpdGVyYWx9eyR1cGxvYWRfdXJsfXtsaXRlcmFsfScsCiAgICAgICAgICAgICAgICBhbGxvd2VkRXh0ZW5zaW9uczogWydnaWYnLCdqcGVnJywnanBnJywncG5nJywnanMnLCdjc3MnXSwKICAgICAgICAgICAgICAgIHBhcmFtcyA6eyB7L2xpdGVyYWx9CiAgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlaWQnIDogJ3skdGVtcGxhdGVpZH0nLAogICAgICAgICAgICAgICAgICAgICdzZWN0aW9uJyA6ICd7JHNlY3Rpb259JwogICAgICAgICAgICAgICAge2xpdGVyYWx9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAsCiAgICAgICAgICAgICAgICBkZWJ1ZzogdHJ1ZQogICAgICAgICAgICB9KTsgCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgICAKICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgIC8vIGluIHlvdXIgYXBwIGNyZWF0ZSB1cGxvYWRlciBhcyBzb29uIGFzIHRoZSBET00gaXMgcmVhZHkKICAgICAgICAvLyBkb24ndCB3YWl0IGZvciB0aGUgd2luZG93IHRvIGxvYWQgIAogICAgICAgIHdpbmRvdy5vbmxvYWQgPSBjcmVhdGVVcGxvYWRlcjsgICAgIAogICAgPC9zY3JpcHQ+ICAgIAoKCXsvbGl0ZXJhbH0KPC9kaXY+CjwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfXskYXBwbHl9eyRyZXNldH08L3A+CjwvZGl2PgoKeyRmb3JtZW5kfQoKCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate_csv.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxoMz57JG1vZC0+TGFuZygndGl0bGVfdGVtcGxhdGUnKX08L2gzPgo8L2Rpdj4KeyRmb3Jtc3RhcnR9eyRoaWRkZW59CgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVuYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlbmFtZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fXskcmVzZXR9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3BhcmFtZXRlcicpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGNvZGU+CgkJICAKICA8L2NvZGU+PC9wPgo8L2Rpdj4KCntpZiAhJGpxdWVyeV9vd259CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2pxdWVyeScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9qcXVlcnl9PC9wPgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxoMz57JG1vZC0+TGFuZygncHJvbXB0X2VkaXR0ZW1wbGF0ZScpfTwvaDM+CjwvZGl2PgoKCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RlbXBsYXRlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZWNzcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtb2QtPkxhbmcoJ3NtYXJ0eXRhZ3MnKX08YnIgLz57JHRlbXBsYXRlY3NzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZWpzJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1vZC0+TGFuZygnc21hcnR5dGFncycpfTxiciAvPnskdGVtcGxhdGVqc308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fXskcmVzZXR9PC9wPgo8L2Rpdj4KCnskZm9ybWVuZH0KCgoKCgoKCgo=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate_twf.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxoMz57JG1vZC0+TGFuZygndGl0bGVfdGVtcGxhdGUnKX08L2gzPgo8L2Rpdj4KeyRmb3Jtc3RhcnR9eyRoaWRkZW59CgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVuYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlbmFtZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fXskcmVzZXR9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3BhcmFtZXRlcicpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGNvZGU+CgkJICAmIzAzNjtpdGVtLSZndDt0ZXh0PGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O2RhdGU8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmF3ZGF0ZTxici8+CgkJICAmIzAzNjtpdGVtLSZndDtpbWdfdXJsPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O2ltZ191cmxfaHR0cHM8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7c2NyZWVubmFtZTxici8+CgkJICAmIzAzNjtpdGVtLSZndDtzY3JlZW5uYW1lX3VybDxici8+CgkJICAmIzAzNjtpdGVtLSZndDthdXRob3I8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7c291cmNlPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O2xvY2F0aW9uPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfY291bnQ8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmV0d2VldF9zY3JlZW5uYW1lPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfYXV0aG9yPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O2Zhdm9yaXRlZDxici8+CgkJICAmIzAzNjtpdGVtLSZndDtkYXRlX2xpbms8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7cmVwbHlfbGluazxici8+CgkJICAmIzAzNjtpdGVtLSZndDtyZXR3ZWV0X2xpbms8YnIvPgoJCSAgJiMwMzY7aXRlbS0mZ3Q7ZmF2b3JpdGVfbGluazxici8+CgkJICAmIzAzNjtpdGVtLSZndDtyZXBseV9yYXdsaW5rPGJyLz4KCQkgICYjMDM2O2l0ZW0tJmd0O3JldHdlZXRfcmF3bGluazxici8+CgkJICAmIzAzNjtpdGVtLSZndDtmYXZvcml0ZV9yYXdsaW5rCiAgPC9jb2RlPjwvcD4KPC9kaXY+Cgp7aWYgISRqcXVlcnlfb3dufQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9qcXVlcnknKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfanF1ZXJ5fTwvcD4KPC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8aDM+eyRtb2QtPkxhbmcoJ3Byb21wdF9lZGl0dGVtcGxhdGUnKX08L2gzPgo8L2Rpdj4KCgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVjc3MnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbW9kLT5MYW5nKCdzbWFydHl0YWdzJyl9PGJyIC8+eyR0ZW1wbGF0ZWNzc308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVqcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRtb2QtPkxhbmcoJ3NtYXJ0eXRhZ3MnKX08YnIgLz57JHRlbXBsYXRlanN9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9eyRhcHBseX17JHJlc2V0fTwvcD4KPC9kaXY+Cgp7JGZvcm1lbmR9CgoKCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/edittplabout.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fQp7JGhpZGRlbn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlbmFtZX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdGVtcGxhdGVuYW1lfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdmVyc2lvbn06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmVyc2lvbn08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2Fib3V0fTo8L3A+CiAgPGRpdiBjbGFzcz0icGFnZWlucHV0Ij57JGFib3V0fTwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/importtemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9DQp7JHRhYnRvfQ0KPGZpZWxkc2V0Pg0KPGxlZ2VuZD57JHRpdGxlX2ltcG9ydHhtbH08L2xlZ2VuZD4NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW1wb3J0eG1sbm90ZX08L3A+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCjxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfaW1wb3J0eG1sfTo8L3A+DQo8cCBjbGFzcz0icGFnZWlucHV0Ij4NCnskaW1wb3J0eG1sfQ0KPC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQo8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X292ZXJ3cml0ZX06PC9wPg0KPHAgY2xhc3M9InBhZ2VpbnB1dCI+DQp7JG92ZXJ3cml0ZX0NCjwvcD4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQo8cCBjbGFzcz0icGFnZWlucHV0Ij4NCnskc3VibWl0fQ0KPC9wPg0KPC9kaXY+DQoNCjwvZmllbGRzZXQ+DQp7JGZvcm1lbmR9DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPg0K]]></data>
	</file>
	<file>
	  <filename>/templates/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/js/fileuploader/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/js/fileuploader/fileuploader.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoucXEtdXBsb2FkZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6IDEwMCU7fQoKLnFxLXVwbG9hZC1idXR0b24gewogICAgZGlzcGxheTpibG9jazsgCiAgICB3aWR0aDogMTA1cHg7IHBhZGRpbmc6IDdweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgICAgCiAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtjb2xvcjojZmZmOwp9Ci5xcS11cGxvYWQtYnV0dG9uLWhvdmVyIHtiYWNrZ3JvdW5kOiNjYzAwMDA7fQoucXEtdXBsb2FkLWJ1dHRvbi1mb2N1cyB7b3V0bGluZToxcHggZG90dGVkIGJsYWNrO30KCiovCi5xcS11cGxvYWQtYnV0dG9uIHsKCW1hcmdpbi1sZWZ0OiAzMHB4OwoJY3Vyc29yOiBwb2ludGVyOwoJaGVpZ2h0OiAzMHB4Owp9CgoucXEtdXBsb2FkLWJ1dHRvbi1ob3ZlciB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCWN1cnNvcjogcG9pbnRlcjsKfQoKLnFxLXVwbG9hZC1kcm9wLWFyZWEgewogICAgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBtaW4taGVpZ2h0OiA3MHB4OyB6LWluZGV4OjI7CiAgICBiYWNrZ3JvdW5kOiNGRjk3OTc7IHRleHQtYWxpZ246Y2VudGVyOyAKfQoucXEtdXBsb2FkLWRyb3AtYXJlYSBzcGFuIHsKICAgIGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDUwJTsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDotOHB4OyBmb250LXNpemU6MTZweDsKfQoucXEtdXBsb2FkLWRyb3AtYXJlYS1hY3RpdmUge2JhY2tncm91bmQ6I0ZGNzE3MTt9CgoucXEtdXBsb2FkLWxpc3Qge21hcmdpbjoxNXB4IDM1cHg7IHBhZGRpbmc6MDsgbGlzdC1zdHlsZTpkaXNjO30KLnFxLXVwbG9hZC1saXN0IGxpIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbGluZS1oZWlnaHQ6MTVweDsgZm9udC1zaXplOjEycHg7fQoucXEtdXBsb2FkLWZpbGUsIC5xcS11cGxvYWQtc3Bpbm5lciwgLnFxLXVwbG9hZC1zaXplLCAucXEtdXBsb2FkLWNhbmNlbCwgLnFxLXVwbG9hZC1mYWlsZWQtdGV4dCB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLnFxLXVwbG9hZC1maWxlIHt9Ci5xcS11cGxvYWQtc3Bpbm5lciB7ZGlzcGxheTppbmxpbmUtYmxvY2s7IGJhY2tncm91bmQ6IHVybCgibG9hZGluZy5naWYiKTsgd2lkdGg6MTVweDsgaGVpZ2h0OjE1cHg7IHZlcnRpY2FsLWFsaWduOnRleHQtYm90dG9tO30KLnFxLXVwbG9hZC1zaXplLC5xcS11cGxvYWQtY2FuY2VsIHtmb250LXNpemU6MTFweDt9CgoucXEtdXBsb2FkLWZhaWxlZC10ZXh0IHtkaXNwbGF5Om5vbmU7fQoucXEtdXBsb2FkLWZhaWwgLnFxLXVwbG9hZC1mYWlsZWQtdGV4dCB7ZGlzcGxheTppbmxpbmU7fQ==]]></data>
	</file>
	<file>
	  <filename>/templates/js/fileuploader/fileuploader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGh0dHA6Ly9naXRodWIuY29tL3ZhbHVtcy9maWxlLXVwbG9hZGVyCiAqIAogKiBNdWx0aXBsZSBmaWxlIHVwbG9hZCBjb21wb25lbnQgd2l0aCBwcm9ncmVzcy1iYXIsIGRyYWctYW5kLWRyb3AuIAogKiDCqSAyMDEwIEFuZHJldyBWYWx1bXMgKCBhbmRyZXcoYXQpdmFsdW1zLmNvbSApIAogKiAKICogTGljZW5zZWQgdW5kZXIgR05VIEdQTCAyIG9yIGxhdGVyIGFuZCBHTlUgTEdQTCAyIG9yIGxhdGVyLCBzZWUgbGljZW5zZS50eHQuCiAqLyAgICAKCi8vCi8vIEhlbHBlciBmdW5jdGlvbnMKLy8KCnZhciBxcSA9IHFxIHx8IHt9OwoKLyoqCiAqIEFkZHMgYWxsIG1pc3NpbmcgcHJvcGVydGllcyBmcm9tIHNlY29uZCBvYmogdG8gZmlyc3Qgb2JqCiAqLyAKcXEuZXh0ZW5kID0gZnVuY3Rpb24oZmlyc3QsIHNlY29uZCl7CiAgICBmb3IgKHZhciBwcm9wIGluIHNlY29uZCl7CiAgICAgICAgZmlyc3RbcHJvcF0gPSBzZWNvbmRbcHJvcF07CiAgICB9Cn07ICAKCi8qKgogKiBTZWFyY2hlcyBmb3IgYSBnaXZlbiBlbGVtZW50IGluIHRoZSBhcnJheSwgcmV0dXJucyAtMSBpZiBpdCBpcyBub3QgcHJlc2VudC4KICogQHBhcmFtIHtOdW1iZXJ9IFtmcm9tXSBUaGUgaW5kZXggYXQgd2hpY2ggdG8gYmVnaW4gdGhlIHNlYXJjaAogKi8KcXEuaW5kZXhPZiA9IGZ1bmN0aW9uKGFyciwgZWx0LCBmcm9tKXsKICAgIGlmIChhcnIuaW5kZXhPZikgcmV0dXJuIGFyci5pbmRleE9mKGVsdCwgZnJvbSk7CiAgICAKICAgIGZyb20gPSBmcm9tIHx8IDA7CiAgICB2YXIgbGVuID0gYXJyLmxlbmd0aDsgICAgCiAgICAKICAgIGlmIChmcm9tIDwgMCkgZnJvbSArPSBsZW47ICAKCiAgICBmb3IgKDsgZnJvbSA8IGxlbjsgZnJvbSsrKXsgIAogICAgICAgIGlmIChmcm9tIGluIGFyciAmJiBhcnJbZnJvbV0gPT09IGVsdCl7ICAKICAgICAgICAgICAgcmV0dXJuIGZyb207CiAgICAgICAgfQogICAgfSAgCiAgICByZXR1cm4gLTE7ICAKfTsgCiAgICAKcXEuZ2V0VW5pcXVlSWQgPSAoZnVuY3Rpb24oKXsKICAgIHZhciBpZCA9IDA7CiAgICByZXR1cm4gZnVuY3Rpb24oKXsgcmV0dXJuIGlkKys7IH07Cn0pKCk7CgovLwovLyBFdmVudHMKCnFxLmF0dGFjaCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHR5cGUsIGZuKXsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpewogICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBmbiwgZmFsc2UpOwogICAgfSBlbHNlIGlmIChlbGVtZW50LmF0dGFjaEV2ZW50KXsKICAgICAgICBlbGVtZW50LmF0dGFjaEV2ZW50KCdvbicgKyB0eXBlLCBmbik7CiAgICB9Cn07CnFxLmRldGFjaCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHR5cGUsIGZuKXsKICAgIGlmIChlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpewogICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBmbiwgZmFsc2UpOwogICAgfSBlbHNlIGlmIChlbGVtZW50LmF0dGFjaEV2ZW50KXsKICAgICAgICBlbGVtZW50LmRldGFjaEV2ZW50KCdvbicgKyB0eXBlLCBmbik7CiAgICB9Cn07CgpxcS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKGUpewogICAgaWYgKGUucHJldmVudERlZmF1bHQpewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0gZWxzZXsKICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICB9Cn07CgovLwovLyBOb2RlIG1hbmlwdWxhdGlvbnMKCi8qKgogKiBJbnNlcnQgbm9kZSBhIGJlZm9yZSBub2RlIGIuCiAqLwpxcS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihhLCBiKXsKICAgIGIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgYik7Cn07CnFxLnJlbW92ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpewogICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwp9OwoKcXEuY29udGFpbnMgPSBmdW5jdGlvbihwYXJlbnQsIGRlc2NlbmRhbnQpeyAgICAgICAKICAgIC8vIGNvbXBhcmVwb3NpdGlvbiByZXR1cm5zIGZhbHNlIGluIHRoaXMgY2FzZQogICAgaWYgKHBhcmVudCA9PSBkZXNjZW5kYW50KSByZXR1cm4gdHJ1ZTsKICAgIAogICAgaWYgKHBhcmVudC5jb250YWlucyl7CiAgICAgICAgcmV0dXJuIHBhcmVudC5jb250YWlucyhkZXNjZW5kYW50KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICEhKGRlc2NlbmRhbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocGFyZW50KSAmIDgpOwogICAgfQp9OwoKLyoqCiAqIENyZWF0ZXMgYW5kIHJldHVybnMgZWxlbWVudCBmcm9tIGh0bWwgc3RyaW5nCiAqIFVzZXMgaW5uZXJIVE1MIHRvIGNyZWF0ZSBhbiBlbGVtZW50CiAqLwpxcS50b0VsZW1lbnQgPSAoZnVuY3Rpb24oKXsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIHJldHVybiBmdW5jdGlvbihodG1sKXsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICB2YXIgZWxlbWVudCA9IGRpdi5maXJzdENoaWxkOwogICAgICAgIGRpdi5yZW1vdmVDaGlsZChlbGVtZW50KTsKICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgIH07Cn0pKCk7CgovLwovLyBOb2RlIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMKCi8qKgogKiBTZXRzIHN0eWxlcyBmb3IgYW4gZWxlbWVudC4KICogRml4ZXMgb3BhY2l0eSBpbiBJRTYtOC4KICovCnFxLmNzcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIHN0eWxlcyl7CiAgICBpZiAoc3R5bGVzLm9wYWNpdHkgIT0gbnVsbCl7CiAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LnN0eWxlLm9wYWNpdHkgIT0gJ3N0cmluZycgJiYgdHlwZW9mKGVsZW1lbnQuZmlsdGVycykgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICBzdHlsZXMuZmlsdGVyID0gJ2FscGhhKG9wYWNpdHk9JyArIE1hdGgucm91bmQoMTAwICogc3R5bGVzLm9wYWNpdHkpICsgJyknOwogICAgICAgIH0KICAgIH0KICAgIHFxLmV4dGVuZChlbGVtZW50LnN0eWxlLCBzdHlsZXMpOwp9OwpxcS5oYXNDbGFzcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUpewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICcoIHwkKScpOwogICAgcmV0dXJuIHJlLnRlc3QoZWxlbWVudC5jbGFzc05hbWUpOwp9OwpxcS5hZGRDbGFzcyA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUpewogICAgaWYgKCFxcS5oYXNDbGFzcyhlbGVtZW50LCBuYW1lKSl7CiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gJyAnICsgbmFtZTsKICAgIH0KfTsKcXEucmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lKXsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJyhefCApJyArIG5hbWUgKyAnKCB8JCknKTsKICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWUucmVwbGFjZShyZSwgJyAnKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpOwp9OwpxcS5zZXRUZXh0ID0gZnVuY3Rpb24oZWxlbWVudCwgdGV4dCl7CiAgICBlbGVtZW50LmlubmVyVGV4dCA9IHRleHQ7CiAgICBlbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKfTsKCi8vCi8vIFNlbGVjdGluZyBlbGVtZW50cwoKcXEuY2hpbGRyZW4gPSBmdW5jdGlvbihlbGVtZW50KXsKICAgIHZhciBjaGlsZHJlbiA9IFtdLAogICAgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7CgogICAgd2hpbGUgKGNoaWxkKXsKICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT0gMSl7CiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpOwogICAgICAgIH0KICAgICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nOwogICAgfQoKICAgIHJldHVybiBjaGlsZHJlbjsKfTsKCnFxLmdldEJ5Q2xhc3MgPSBmdW5jdGlvbihlbGVtZW50LCBjbGFzc05hbWUpewogICAgaWYgKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCl7CiAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBjbGFzc05hbWUpOwogICAgfQoKICAgIHZhciByZXN1bHQgPSBbXTsKICAgIHZhciBjYW5kaWRhdGVzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgdmFyIGxlbiA9IGNhbmRpZGF0ZXMubGVuZ3RoOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspewogICAgICAgIGlmIChxcS5oYXNDbGFzcyhjYW5kaWRhdGVzW2ldLCBjbGFzc05hbWUpKXsKICAgICAgICAgICAgcmVzdWx0LnB1c2goY2FuZGlkYXRlc1tpXSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfTsKCi8qKgogKiBvYmoydXJsKCkgdGFrZXMgYSBqc29uLW9iamVjdCBhcyBhcmd1bWVudCBhbmQgZ2VuZXJhdGVzCiAqIGEgcXVlcnlzdHJpbmcuIHByZXR0eSBtdWNoIGxpa2UgalF1ZXJ5LnBhcmFtKCkKICogCiAqIGhvdyB0byB1c2U6CiAqCiAqICAgIGBxcS5vYmoydXJsKHthOidiJyxjOidkJ30sJ2h0dHA6Ly9hbnkudXJsL3VwbG9hZD9vdGhlclBhcmFtPXZhbHVlJyk7YAogKgogKiB3aWxsIHJlc3VsdCBpbjoKICoKICogICAgYGh0dHA6Ly9hbnkudXJsL3VwbG9hZD9vdGhlclBhcmFtPXZhbHVlJmE9YiZjPWRgCiAqCiAqIEBwYXJhbSAgT2JqZWN0IEpTT04tT2JqZWN0CiAqIEBwYXJhbSAgU3RyaW5nIGN1cnJlbnQgcXVlcnlzdHJpbmctcGFydAogKiBAcmV0dXJuIFN0cmluZyBlbmNvZGVkIHF1ZXJ5c3RyaW5nCiAqLwpxcS5vYmoydXJsID0gZnVuY3Rpb24ob2JqLCB0ZW1wLCBwcmVmaXhEb25lKXsKICAgIHZhciB1cmlzdHJpbmdzID0gW10sCiAgICAgICAgcHJlZml4ID0gJyYnLAogICAgICAgIGFkZCA9IGZ1bmN0aW9uKG5leHRPYmosIGkpewogICAgICAgICAgICB2YXIgbmV4dFRlbXAgPSB0ZW1wIAogICAgICAgICAgICAgICAgPyAoL1xbXF0kLy50ZXN0KHRlbXApKSAvLyBwcmV2ZW50IGRvdWJsZS1lbmNvZGluZwogICAgICAgICAgICAgICAgICAgPyB0ZW1wCiAgICAgICAgICAgICAgICAgICA6IHRlbXArJ1snK2krJ10nCiAgICAgICAgICAgICAgICA6IGk7CiAgICAgICAgICAgIGlmICgobmV4dFRlbXAgIT0gJ3VuZGVmaW5lZCcpICYmIChpICE9ICd1bmRlZmluZWQnKSkgeyAgCiAgICAgICAgICAgICAgICB1cmlzdHJpbmdzLnB1c2goCiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBuZXh0T2JqID09PSAnb2JqZWN0JykgCiAgICAgICAgICAgICAgICAgICAgICAgID8gcXEub2JqMnVybChuZXh0T2JqLCBuZXh0VGVtcCwgdHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgOiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5leHRPYmopID09PSAnW29iamVjdCBGdW5jdGlvbl0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBlbmNvZGVVUklDb21wb25lbnQobmV4dFRlbXApICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KG5leHRPYmooKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZW5jb2RlVVJJQ29tcG9uZW50KG5leHRUZW1wKSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChuZXh0T2JqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9OyAKCiAgICBpZiAoIXByZWZpeERvbmUgJiYgdGVtcCkgewogICAgICBwcmVmaXggPSAoL1w/Ly50ZXN0KHRlbXApKSA/ICgvXD8kLy50ZXN0KHRlbXApKSA/ICcnIDogJyYnIDogJz8nOwogICAgICB1cmlzdHJpbmdzLnB1c2godGVtcCk7CiAgICAgIHVyaXN0cmluZ3MucHVzaChxcS5vYmoydXJsKG9iaikpOwogICAgfSBlbHNlIGlmICgoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XScpICYmICh0eXBlb2Ygb2JqICE9ICd1bmRlZmluZWQnKSApIHsKICAgICAgICAvLyB3ZSB3b250IHVzZSBhIGZvci1pbi1sb29wIG9uIGFuIGFycmF5IChwZXJmb3JtYW5jZSkKICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgKytpKXsKICAgICAgICAgICAgYWRkKG9ialtpXSwgaSk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgodHlwZW9mIG9iaiAhPSAndW5kZWZpbmVkJykgJiYgKG9iaiAhPT0gbnVsbCkgJiYgKHR5cGVvZiBvYmogPT09ICJvYmplY3QiKSl7CiAgICAgICAgLy8gZm9yIGFueXRoaW5nIGVsc2UgYnV0IGEgc2NhbGFyLCB3ZSB3aWxsIHVzZSBmb3ItaW4tbG9vcAogICAgICAgIGZvciAodmFyIGkgaW4gb2JqKXsKICAgICAgICAgICAgYWRkKG9ialtpXSwgaSk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICB1cmlzdHJpbmdzLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHRlbXApICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KG9iaikpOwogICAgfQoKICAgIHJldHVybiB1cmlzdHJpbmdzLmpvaW4ocHJlZml4KQogICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXiYvLCAnJykKICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyUyMC9nLCAnKycpOyAKfTsKCi8vCi8vCi8vIFVwbG9hZGVyIENsYXNzZXMKLy8KLy8KCnZhciBxcSA9IHFxIHx8IHt9OwogICAgCi8qKgogKiBDcmVhdGVzIHVwbG9hZCBidXR0b24sIHZhbGlkYXRlcyB1cGxvYWQsIGJ1dCBkb2Vzbid0IGNyZWF0ZSBmaWxlIGxpc3Qgb3IgZGQuIAogKi8KcXEuRmlsZVVwbG9hZGVyQmFzaWMgPSBmdW5jdGlvbihvKXsKICAgIHRoaXMuX29wdGlvbnMgPSB7CiAgICAgICAgLy8gc2V0IHRvIHRydWUgdG8gc2VlIHRoZSBzZXJ2ZXIgcmVzcG9uc2UKICAgICAgICBkZWJ1ZzogZmFsc2UsCiAgICAgICAgYWN0aW9uOiAnL3NlcnZlci91cGxvYWQnLAogICAgICAgIHBhcmFtczoge30sCiAgICAgICAgYnV0dG9uOiBudWxsLAogICAgICAgIG11bHRpcGxlOiB0cnVlLAogICAgICAgIG1heENvbm5lY3Rpb25zOiAzLAogICAgICAgIC8vIHZhbGlkYXRpb24gICAgICAgIAogICAgICAgIGFsbG93ZWRFeHRlbnNpb25zOiBbXSwgICAgICAgICAgICAgICAKICAgICAgICBzaXplTGltaXQ6IDAsICAgCiAgICAgICAgbWluU2l6ZUxpbWl0OiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgLy8gZXZlbnRzCiAgICAgICAgLy8gcmV0dXJuIGZhbHNlIHRvIGNhbmNlbCBzdWJtaXQKICAgICAgICBvblN1Ym1pdDogZnVuY3Rpb24oaWQsIGZpbGVOYW1lKXt9LAogICAgICAgIG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSwgbG9hZGVkLCB0b3RhbCl7fSwKICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbihpZCwgZmlsZU5hbWUsIHJlc3BvbnNlSlNPTil7fSwKICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24oaWQsIGZpbGVOYW1lKXt9LAogICAgICAgIC8vIG1lc3NhZ2VzICAgICAgICAgICAgICAgIAogICAgICAgIG1lc3NhZ2VzOiB7CiAgICAgICAgICAgIHR5cGVFcnJvcjogIntmaWxlfSBoYXMgaW52YWxpZCBleHRlbnNpb24uIE9ubHkge2V4dGVuc2lvbnN9IGFyZSBhbGxvd2VkLiIsCiAgICAgICAgICAgIHNpemVFcnJvcjogIntmaWxlfSBpcyB0b28gbGFyZ2UsIG1heGltdW0gZmlsZSBzaXplIGlzIHtzaXplTGltaXR9LiIsCiAgICAgICAgICAgIG1pblNpemVFcnJvcjogIntmaWxlfSBpcyB0b28gc21hbGwsIG1pbmltdW0gZmlsZSBzaXplIGlzIHttaW5TaXplTGltaXR9LiIsCiAgICAgICAgICAgIGVtcHR5RXJyb3I6ICJ7ZmlsZX0gaXMgZW1wdHksIHBsZWFzZSBzZWxlY3QgZmlsZXMgYWdhaW4gd2l0aG91dCBpdC4iLAogICAgICAgICAgICBvbkxlYXZlOiAiVGhlIGZpbGVzIGFyZSBiZWluZyB1cGxvYWRlZCwgaWYgeW91IGxlYXZlIG5vdyB0aGUgdXBsb2FkIHdpbGwgYmUgY2FuY2VsbGVkLiIgICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHNob3dNZXNzYWdlOiBmdW5jdGlvbihtZXNzYWdlKXsKICAgICAgICAgICAgYWxlcnQobWVzc2FnZSk7CiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgfTsKICAgIHFxLmV4dGVuZCh0aGlzLl9vcHRpb25zLCBvKTsKICAgICAgICAKICAgIC8vIG51bWJlciBvZiBmaWxlcyBiZWluZyB1cGxvYWRlZAogICAgdGhpcy5fZmlsZXNJblByb2dyZXNzID0gMDsKICAgIHRoaXMuX2hhbmRsZXIgPSB0aGlzLl9jcmVhdGVVcGxvYWRIYW5kbGVyKCk7IAogICAgCiAgICBpZiAodGhpcy5fb3B0aW9ucy5idXR0b24peyAKICAgICAgICB0aGlzLl9idXR0b24gPSB0aGlzLl9jcmVhdGVVcGxvYWRCdXR0b24odGhpcy5fb3B0aW9ucy5idXR0b24pOwogICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgIHRoaXMuX3ByZXZlbnRMZWF2ZUluUHJvZ3Jlc3MoKTsgICAgICAgICAKfTsKICAgCnFxLkZpbGVVcGxvYWRlckJhc2ljLnByb3RvdHlwZSA9IHsKICAgIHNldFBhcmFtczogZnVuY3Rpb24ocGFyYW1zKXsKICAgICAgICB0aGlzLl9vcHRpb25zLnBhcmFtcyA9IHBhcmFtczsKICAgIH0sCiAgICBnZXRJblByb2dyZXNzOiBmdW5jdGlvbigpewogICAgICAgIHJldHVybiB0aGlzLl9maWxlc0luUHJvZ3Jlc3M7ICAgICAgICAgCiAgICB9LAogICAgX2NyZWF0ZVVwbG9hZEJ1dHRvbjogZnVuY3Rpb24oZWxlbWVudCl7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIAogICAgICAgIHJldHVybiBuZXcgcXEuVXBsb2FkQnV0dG9uKHsKICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCwKICAgICAgICAgICAgbXVsdGlwbGU6IHRoaXMuX29wdGlvbnMubXVsdGlwbGUgJiYgcXEuVXBsb2FkSGFuZGxlclhoci5pc1N1cHBvcnRlZCgpLAogICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oaW5wdXQpewogICAgICAgICAgICAgICAgc2VsZi5fb25JbnB1dENoYW5nZShpbnB1dCk7CiAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgIH0pOyAgICAgICAgICAgCiAgICB9LCAgICAKICAgIF9jcmVhdGVVcGxvYWRIYW5kbGVyOiBmdW5jdGlvbigpewogICAgICAgIHZhciBzZWxmID0gdGhpcywKICAgICAgICAgICAgaGFuZGxlckNsYXNzOyAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYocXEuVXBsb2FkSGFuZGxlclhoci5pc1N1cHBvcnRlZCgpKXsgICAgICAgICAgIAogICAgICAgICAgICBoYW5kbGVyQ2xhc3MgPSAnVXBsb2FkSGFuZGxlclhocic7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaGFuZGxlckNsYXNzID0gJ1VwbG9hZEhhbmRsZXJGb3JtJzsKICAgICAgICB9CgogICAgICAgIHZhciBoYW5kbGVyID0gbmV3IHFxW2hhbmRsZXJDbGFzc10oewogICAgICAgICAgICBkZWJ1ZzogdGhpcy5fb3B0aW9ucy5kZWJ1ZywKICAgICAgICAgICAgYWN0aW9uOiB0aGlzLl9vcHRpb25zLmFjdGlvbiwgICAgICAgICAKICAgICAgICAgICAgbWF4Q29ubmVjdGlvbnM6IHRoaXMuX29wdGlvbnMubWF4Q29ubmVjdGlvbnMsICAgCiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSwgbG9hZGVkLCB0b3RhbCl7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc2VsZi5fb25Qcm9ncmVzcyhpZCwgZmlsZU5hbWUsIGxvYWRlZCwgdG90YWwpOwogICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vblByb2dyZXNzKGlkLCBmaWxlTmFtZSwgbG9hZGVkLCB0b3RhbCk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSwgICAgICAgICAgICAKICAgICAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oaWQsIGZpbGVOYW1lLCByZXN1bHQpewogICAgICAgICAgICAgICAgc2VsZi5fb25Db21wbGV0ZShpZCwgZmlsZU5hbWUsIHJlc3VsdCk7CiAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9uQ29tcGxldGUoaWQsIGZpbGVOYW1lLCByZXN1bHQpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24oaWQsIGZpbGVOYW1lKXsKICAgICAgICAgICAgICAgIHNlbGYuX29uQ2FuY2VsKGlkLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9uQ2FuY2VsKGlkLCBmaWxlTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIGhhbmRsZXI7CiAgICB9LCAgICAKICAgIF9wcmV2ZW50TGVhdmVJblByb2dyZXNzOiBmdW5jdGlvbigpewogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAKICAgICAgICBxcS5hdHRhY2god2luZG93LCAnYmVmb3JldW5sb2FkJywgZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGlmICghc2VsZi5fZmlsZXNJblByb2dyZXNzKXtyZXR1cm47fQogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgLy8gZm9yIGllLCBmZgogICAgICAgICAgICBlLnJldHVyblZhbHVlID0gc2VsZi5fb3B0aW9ucy5tZXNzYWdlcy5vbkxlYXZlOwogICAgICAgICAgICAvLyBmb3Igd2Via2l0CiAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zLm1lc3NhZ2VzLm9uTGVhdmU7ICAgICAgICAgICAgIAogICAgICAgIH0pOyAgICAgICAgCiAgICB9LCAgICAKICAgIF9vblN1Ym1pdDogZnVuY3Rpb24oaWQsIGZpbGVOYW1lKXsKICAgICAgICB0aGlzLl9maWxlc0luUHJvZ3Jlc3MrKzsgIAogICAgfSwKICAgIF9vblByb2dyZXNzOiBmdW5jdGlvbihpZCwgZmlsZU5hbWUsIGxvYWRlZCwgdG90YWwpeyAgICAgICAgCiAgICB9LAogICAgX29uQ29tcGxldGU6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSwgcmVzdWx0KXsKICAgICAgICB0aGlzLl9maWxlc0luUHJvZ3Jlc3MtLTsgICAgICAgICAgICAgICAgIAogICAgICAgIGlmIChyZXN1bHQuZXJyb3IpewogICAgICAgICAgICB0aGlzLl9vcHRpb25zLnNob3dNZXNzYWdlKHJlc3VsdC5lcnJvcik7CiAgICAgICAgfSAgICAgICAgICAgICAKICAgIH0sCiAgICBfb25DYW5jZWw6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSl7CiAgICAgICAgdGhpcy5fZmlsZXNJblByb2dyZXNzLS07ICAgICAgICAKICAgIH0sCiAgICBfb25JbnB1dENoYW5nZTogZnVuY3Rpb24oaW5wdXQpewogICAgICAgIGlmICh0aGlzLl9oYW5kbGVyIGluc3RhbmNlb2YgcXEuVXBsb2FkSGFuZGxlclhocil7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl91cGxvYWRGaWxlTGlzdChpbnB1dC5maWxlcyk7ICAgICAgICAgICAgICAgICAgIAogICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy5fdmFsaWRhdGVGaWxlKGlucHV0KSl7ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgICAgIHRoaXMuX2J1dHRvbi5yZXNldCgpOyAgIAogICAgfSwgIAogICAgX3VwbG9hZEZpbGVMaXN0OiBmdW5jdGlvbihmaWxlcyl7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGZpbGVzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKCAhdGhpcy5fdmFsaWRhdGVGaWxlKGZpbGVzW2ldKSl7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGZpbGVzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShmaWxlc1tpXSk7ICAgICAgICAKICAgICAgICB9ICAgICAgICAKICAgIH0sICAgICAgIAogICAgX3VwbG9hZEZpbGU6IGZ1bmN0aW9uKGZpbGVDb250YWluZXIpeyAgICAgIAogICAgICAgIHZhciBpZCA9IHRoaXMuX2hhbmRsZXIuYWRkKGZpbGVDb250YWluZXIpOwogICAgICAgIHZhciBmaWxlTmFtZSA9IHRoaXMuX2hhbmRsZXIuZ2V0TmFtZShpZCk7CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMub25TdWJtaXQoaWQsIGZpbGVOYW1lKSAhPT0gZmFsc2UpewogICAgICAgICAgICB0aGlzLl9vblN1Ym1pdChpZCwgZmlsZU5hbWUpOwogICAgICAgICAgICB0aGlzLl9oYW5kbGVyLnVwbG9hZChpZCwgdGhpcy5fb3B0aW9ucy5wYXJhbXMpOwogICAgICAgIH0KICAgIH0sICAgICAgCiAgICBfdmFsaWRhdGVGaWxlOiBmdW5jdGlvbihmaWxlKXsKICAgICAgICB2YXIgbmFtZSwgc2l6ZTsKICAgICAgICAKICAgICAgICBpZiAoZmlsZS52YWx1ZSl7CiAgICAgICAgICAgIC8vIGl0IGlzIGEgZmlsZSBpbnB1dCAgICAgICAgICAgIAogICAgICAgICAgICAvLyBnZXQgaW5wdXQgdmFsdWUgYW5kIHJlbW92ZSBwYXRoIHRvIG5vcm1hbGl6ZQogICAgICAgICAgICBuYW1lID0gZmlsZS52YWx1ZS5yZXBsYWNlKC8uKihcL3xcXCkvLCAiIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gZml4IG1pc3NpbmcgcHJvcGVydGllcyBpbiBTYWZhcmkKICAgICAgICAgICAgbmFtZSA9IGZpbGUuZmlsZU5hbWUgIT0gbnVsbCA/IGZpbGUuZmlsZU5hbWUgOiBmaWxlLm5hbWU7CiAgICAgICAgICAgIHNpemUgPSBmaWxlLmZpbGVTaXplICE9IG51bGwgPyBmaWxlLmZpbGVTaXplIDogZmlsZS5zaXplOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICBpZiAoISB0aGlzLl9pc0FsbG93ZWRFeHRlbnNpb24obmFtZSkpeyAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lcnJvcigndHlwZUVycm9yJywgbmFtZSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlIGlmIChzaXplID09PSAwKXsgICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5fZXJyb3IoJ2VtcHR5RXJyb3InLCBuYW1lKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIH0gZWxzZSBpZiAoc2l6ZSAmJiB0aGlzLl9vcHRpb25zLnNpemVMaW1pdCAmJiBzaXplID4gdGhpcy5fb3B0aW9ucy5zaXplTGltaXQpeyAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lcnJvcignc2l6ZUVycm9yJywgbmFtZSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlIGlmIChzaXplICYmIHNpemUgPCB0aGlzLl9vcHRpb25zLm1pblNpemVMaW1pdCl7CiAgICAgICAgICAgIHRoaXMuX2Vycm9yKCdtaW5TaXplRXJyb3InLCBuYW1lKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgCiAgICB9LAogICAgX2Vycm9yOiBmdW5jdGlvbihjb2RlLCBmaWxlTmFtZSl7CiAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLl9vcHRpb25zLm1lc3NhZ2VzW2NvZGVdOyAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gcihuYW1lLCByZXBsYWNlbWVudCl7IG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UobmFtZSwgcmVwbGFjZW1lbnQpOyB9CiAgICAgICAgCiAgICAgICAgcigne2ZpbGV9JywgdGhpcy5fZm9ybWF0RmlsZU5hbWUoZmlsZU5hbWUpKTsgICAgICAgIAogICAgICAgIHIoJ3tleHRlbnNpb25zfScsIHRoaXMuX29wdGlvbnMuYWxsb3dlZEV4dGVuc2lvbnMuam9pbignLCAnKSk7CiAgICAgICAgcigne3NpemVMaW1pdH0nLCB0aGlzLl9mb3JtYXRTaXplKHRoaXMuX29wdGlvbnMuc2l6ZUxpbWl0KSk7CiAgICAgICAgcigne21pblNpemVMaW1pdH0nLCB0aGlzLl9mb3JtYXRTaXplKHRoaXMuX29wdGlvbnMubWluU2l6ZUxpbWl0KSk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fb3B0aW9ucy5zaG93TWVzc2FnZShtZXNzYWdlKTsgICAgICAgICAgICAgICAgCiAgICB9LAogICAgX2Zvcm1hdEZpbGVOYW1lOiBmdW5jdGlvbihuYW1lKXsKICAgICAgICBpZiAobmFtZS5sZW5ndGggPiAzMyl7CiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIDE5KSArICcuLi4nICsgbmFtZS5zbGljZSgtMTMpOyAgICAKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5hbWU7CiAgICB9LAogICAgX2lzQWxsb3dlZEV4dGVuc2lvbjogZnVuY3Rpb24oZmlsZU5hbWUpewogICAgICAgIHZhciBleHQgPSAoLTEgIT09IGZpbGVOYW1lLmluZGV4T2YoJy4nKSkgPyBmaWxlTmFtZS5yZXBsYWNlKC8uKlsuXS8sICcnKS50b0xvd2VyQ2FzZSgpIDogJyc7CiAgICAgICAgdmFyIGFsbG93ZWQgPSB0aGlzLl9vcHRpb25zLmFsbG93ZWRFeHRlbnNpb25zOwogICAgICAgIAogICAgICAgIGlmICghYWxsb3dlZC5sZW5ndGgpe3JldHVybiB0cnVlO30gICAgICAgIAogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxhbGxvd2VkLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKGFsbG93ZWRbaV0udG9Mb3dlckNhc2UoKSA9PSBleHQpeyByZXR1cm4gdHJ1ZTt9ICAgIAogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LCAgICAKICAgIF9mb3JtYXRTaXplOiBmdW5jdGlvbihieXRlcyl7CiAgICAgICAgdmFyIGkgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICBkbyB7CiAgICAgICAgICAgIGJ5dGVzID0gYnl0ZXMgLyAxMDI0OwogICAgICAgICAgICBpKys7ICAKICAgICAgICB9IHdoaWxlIChieXRlcyA+IDk5KTsKICAgICAgICAKICAgICAgICByZXR1cm4gTWF0aC5tYXgoYnl0ZXMsIDAuMSkudG9GaXhlZCgxKSArIFsna0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInXVtpXTsgICAgICAgICAgCiAgICB9Cn07CiAgICAKICAgICAgIAovKioKICogQ2xhc3MgdGhhdCBjcmVhdGVzIHVwbG9hZCB3aWRnZXQgd2l0aCBkcmFnLWFuZC1kcm9wIGFuZCBmaWxlIGxpc3QKICogQGluaGVyaXRzIHFxLkZpbGVVcGxvYWRlckJhc2ljCiAqLwpxcS5GaWxlVXBsb2FkZXIgPSBmdW5jdGlvbihvKXsKICAgIC8vIGNhbGwgcGFyZW50IGNvbnN0cnVjdG9yCiAgICBxcS5GaWxlVXBsb2FkZXJCYXNpYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgCiAgICAvLyBhZGRpdGlvbmFsIG9wdGlvbnMgICAgCiAgICBxcS5leHRlbmQodGhpcy5fb3B0aW9ucywgewogICAgICAgIGVsZW1lbnQ6IG51bGwsCiAgICAgICAgLy8gaWYgc2V0LCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBxcS11cGxvYWQtbGlzdCBpbiB0ZW1wbGF0ZQogICAgICAgIGxpc3RFbGVtZW50OiBudWxsLAogICAgICAgICAgICAgICAgCiAgICAgICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJxcS11cGxvYWRlciI+JyArIAogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InFxLXVwbG9hZC1kcm9wLWFyZWEiPjxzcGFuPkRyb3AgZmlsZXMgaGVyZSB0byB1cGxvYWQ8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icXEtdXBsb2FkLWJ1dHRvbiI+VXBsb2FkIGEgZmlsZTwvZGl2PicgKwogICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0icXEtdXBsb2FkLWxpc3QiPjwvdWw+JyArIAogICAgICAgICAgICAgJzwvZGl2PicsCgogICAgICAgIC8vIHRlbXBsYXRlIGZvciBvbmUgaXRlbSBpbiBmaWxlIGxpc3QKICAgICAgICBmaWxlVGVtcGxhdGU6ICc8bGk+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InFxLXVwbG9hZC1maWxlIj48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InFxLXVwbG9hZC1zcGlubmVyIj48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InFxLXVwbG9hZC1zaXplIj48L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGEgY2xhc3M9InFxLXVwbG9hZC1jYW5jZWwiIGhyZWY9IiMiPkNhbmNlbDwvYT4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0icXEtdXBsb2FkLWZhaWxlZC10ZXh0Ij5GYWlsZWQ8L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xpPicsICAgICAgICAKICAgICAgICAKICAgICAgICBjbGFzc2VzOiB7CiAgICAgICAgICAgIC8vIHVzZWQgdG8gZ2V0IGVsZW1lbnRzIGZyb20gdGVtcGxhdGVzCiAgICAgICAgICAgIGJ1dHRvbjogJ3FxLXVwbG9hZC1idXR0b24nLAogICAgICAgICAgICBkcm9wOiAncXEtdXBsb2FkLWRyb3AtYXJlYScsCiAgICAgICAgICAgIGRyb3BBY3RpdmU6ICdxcS11cGxvYWQtZHJvcC1hcmVhLWFjdGl2ZScsCiAgICAgICAgICAgIGxpc3Q6ICdxcS11cGxvYWQtbGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBmaWxlOiAncXEtdXBsb2FkLWZpbGUnLAogICAgICAgICAgICBzcGlubmVyOiAncXEtdXBsb2FkLXNwaW5uZXInLAogICAgICAgICAgICBzaXplOiAncXEtdXBsb2FkLXNpemUnLAogICAgICAgICAgICBjYW5jZWw6ICdxcS11cGxvYWQtY2FuY2VsJywKCiAgICAgICAgICAgIC8vIGFkZGVkIHRvIGxpc3QgaXRlbSB3aGVuIHVwbG9hZCBjb21wbGV0ZXMKICAgICAgICAgICAgLy8gdXNlZCBpbiBjc3MgdG8gaGlkZSBwcm9ncmVzcyBzcGlubmVyCiAgICAgICAgICAgIHN1Y2Nlc3M6ICdxcS11cGxvYWQtc3VjY2VzcycsCiAgICAgICAgICAgIGZhaWw6ICdxcS11cGxvYWQtZmFpbCcKICAgICAgICB9CiAgICB9KTsKICAgIC8vIG92ZXJ3cml0ZSBvcHRpb25zIHdpdGggdXNlciBzdXBwbGllZCAgICAKICAgIHFxLmV4dGVuZCh0aGlzLl9vcHRpb25zLCBvKTsgICAgICAgCgogICAgdGhpcy5fZWxlbWVudCA9IHRoaXMuX29wdGlvbnMuZWxlbWVudDsKICAgIHRoaXMuX2VsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fb3B0aW9ucy50ZW1wbGF0ZTsgICAgICAgIAogICAgdGhpcy5fbGlzdEVsZW1lbnQgPSB0aGlzLl9vcHRpb25zLmxpc3RFbGVtZW50IHx8IHRoaXMuX2ZpbmQodGhpcy5fZWxlbWVudCwgJ2xpc3QnKTsKICAgIAogICAgdGhpcy5fY2xhc3NlcyA9IHRoaXMuX29wdGlvbnMuY2xhc3NlczsKICAgICAgICAKICAgIHRoaXMuX2J1dHRvbiA9IHRoaXMuX2NyZWF0ZVVwbG9hZEJ1dHRvbih0aGlzLl9maW5kKHRoaXMuX2VsZW1lbnQsICdidXR0b24nKSk7ICAgICAgICAKICAgIAogICAgdGhpcy5fYmluZENhbmNlbEV2ZW50KCk7CiAgICB0aGlzLl9zZXR1cERyYWdEcm9wKCk7Cn07CgovLyBpbmhlcml0IGZyb20gQmFzaWMgVXBsb2FkZXIKcXEuZXh0ZW5kKHFxLkZpbGVVcGxvYWRlci5wcm90b3R5cGUsIHFxLkZpbGVVcGxvYWRlckJhc2ljLnByb3RvdHlwZSk7CgpxcS5leHRlbmQocXEuRmlsZVVwbG9hZGVyLnByb3RvdHlwZSwgewogICAgLyoqCiAgICAgKiBHZXRzIG9uZSBvZiB0aGUgZWxlbWVudHMgbGlzdGVkIGluIHRoaXMuX29wdGlvbnMuY2xhc3NlcwogICAgICoqLwogICAgX2ZpbmQ6IGZ1bmN0aW9uKHBhcmVudCwgdHlwZSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICB2YXIgZWxlbWVudCA9IHFxLmdldEJ5Q2xhc3MocGFyZW50LCB0aGlzLl9vcHRpb25zLmNsYXNzZXNbdHlwZV0pWzBdOyAgICAgICAgCiAgICAgICAgaWYgKCFlbGVtZW50KXsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbGVtZW50IG5vdCBmb3VuZCAnICsgdHlwZSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBlbGVtZW50OwogICAgfSwKICAgIF9zZXR1cERyYWdEcm9wOiBmdW5jdGlvbigpewogICAgICAgIHZhciBzZWxmID0gdGhpcywKICAgICAgICAgICAgZHJvcEFyZWEgPSB0aGlzLl9maW5kKHRoaXMuX2VsZW1lbnQsICdkcm9wJyk7ICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgIHZhciBkeiA9IG5ldyBxcS5VcGxvYWREcm9wWm9uZSh7CiAgICAgICAgICAgIGVsZW1lbnQ6IGRyb3BBcmVhLAogICAgICAgICAgICBvbkVudGVyOiBmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgIHFxLmFkZENsYXNzKGRyb3BBcmVhLCBzZWxmLl9jbGFzc2VzLmRyb3BBY3RpdmUpOwogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25MZWF2ZTogZnVuY3Rpb24oZSl7CiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBvbkxlYXZlTm90RGVzY2VuZGFudHM6IGZ1bmN0aW9uKGUpewogICAgICAgICAgICAgICAgcXEucmVtb3ZlQ2xhc3MoZHJvcEFyZWEsIHNlbGYuX2NsYXNzZXMuZHJvcEFjdGl2ZSk7ICAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25Ecm9wOiBmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgIGRyb3BBcmVhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBxcS5yZW1vdmVDbGFzcyhkcm9wQXJlYSwgc2VsZi5fY2xhc3Nlcy5kcm9wQWN0aXZlKTsKICAgICAgICAgICAgICAgIHNlbGYuX3VwbG9hZEZpbGVMaXN0KGUuZGF0YVRyYW5zZmVyLmZpbGVzKTsgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAgICAgICAgIAogICAgICAgIGRyb3BBcmVhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CgogICAgICAgIHFxLmF0dGFjaChkb2N1bWVudCwgJ2RyYWdlbnRlcicsIGZ1bmN0aW9uKGUpeyAgICAgCiAgICAgICAgICAgIGlmICghZHouX2lzVmFsaWRGaWxlRHJhZyhlKSkgcmV0dXJuOyAKICAgICAgICAgICAgCiAgICAgICAgICAgIGRyb3BBcmVhLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOyAgICAgICAgICAgIAogICAgICAgIH0pOyAgICAgICAgICAgICAgICAgCiAgICAgICAgcXEuYXR0YWNoKGRvY3VtZW50LCAnZHJhZ2xlYXZlJywgZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGlmICghZHouX2lzVmFsaWRGaWxlRHJhZyhlKSkgcmV0dXJuOyAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTsKICAgICAgICAgICAgLy8gb25seSBmaXJlIHdoZW4gbGVhdmluZyBkb2N1bWVudCBvdXQKICAgICAgICAgICAgaWYgKCAhIHJlbGF0ZWRUYXJnZXQgfHwgcmVsYXRlZFRhcmdldC5ub2RlTmFtZSA9PSAiSFRNTCIpeyAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZHJvcEFyZWEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfSk7ICAgICAgICAgICAgICAgIAogICAgfSwKICAgIF9vblN1Ym1pdDogZnVuY3Rpb24oaWQsIGZpbGVOYW1lKXsKICAgICAgICBxcS5GaWxlVXBsb2FkZXJCYXNpYy5wcm90b3R5cGUuX29uU3VibWl0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgdGhpcy5fYWRkVG9MaXN0KGlkLCBmaWxlTmFtZSk7ICAKICAgIH0sCiAgICBfb25Qcm9ncmVzczogZnVuY3Rpb24oaWQsIGZpbGVOYW1lLCBsb2FkZWQsIHRvdGFsKXsKICAgICAgICBxcS5GaWxlVXBsb2FkZXJCYXNpYy5wcm90b3R5cGUuX29uUHJvZ3Jlc3MuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCiAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9nZXRJdGVtQnlGaWxlSWQoaWQpOwogICAgICAgIHZhciBzaXplID0gdGhpcy5fZmluZChpdGVtLCAnc2l6ZScpOwogICAgICAgIHNpemUuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnOwogICAgICAgIAogICAgICAgIHZhciB0ZXh0OyAKICAgICAgICBpZiAobG9hZGVkICE9IHRvdGFsKXsKICAgICAgICAgICAgdGV4dCA9IE1hdGgucm91bmQobG9hZGVkIC8gdG90YWwgKiAxMDApICsgJyUgZnJvbSAnICsgdGhpcy5fZm9ybWF0U2l6ZSh0b3RhbCk7CiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICB0ZXh0ID0gdGhpcy5fZm9ybWF0U2l6ZSh0b3RhbCk7CiAgICAgICAgfSAgICAgICAgICAKICAgICAgICAKICAgICAgICBxcS5zZXRUZXh0KHNpemUsIHRleHQpOyAgICAgICAgIAogICAgfSwKICAgIF9vbkNvbXBsZXRlOiBmdW5jdGlvbihpZCwgZmlsZU5hbWUsIHJlc3VsdCl7CiAgICAgICAgcXEuRmlsZVVwbG9hZGVyQmFzaWMucHJvdG90eXBlLl9vbkNvbXBsZXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgogICAgICAgIC8vIG1hcmsgY29tcGxldGVkCiAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9nZXRJdGVtQnlGaWxlSWQoaWQpOyAgICAgICAgICAgICAgICAKICAgICAgICBxcS5yZW1vdmUodGhpcy5fZmluZChpdGVtLCAnY2FuY2VsJykpOwogICAgICAgIHFxLnJlbW92ZSh0aGlzLl9maW5kKGl0ZW0sICdzcGlubmVyJykpOwogICAgICAgIAogICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcyl7CiAgICAgICAgICAgIHFxLmFkZENsYXNzKGl0ZW0sIHRoaXMuX2NsYXNzZXMuc3VjY2Vzcyk7ICAgIAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHFxLmFkZENsYXNzKGl0ZW0sIHRoaXMuX2NsYXNzZXMuZmFpbCk7CiAgICAgICAgfSAgICAgICAgIAogICAgfSwKICAgIF9hZGRUb0xpc3Q6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSl7CiAgICAgICAgdmFyIGl0ZW0gPSBxcS50b0VsZW1lbnQodGhpcy5fb3B0aW9ucy5maWxlVGVtcGxhdGUpOyAgICAgICAgICAgICAgICAKICAgICAgICBpdGVtLnFxRmlsZUlkID0gaWQ7CgogICAgICAgIHZhciBmaWxlRWxlbWVudCA9IHRoaXMuX2ZpbmQoaXRlbSwgJ2ZpbGUnKTsgICAgICAgIAogICAgICAgIHFxLnNldFRleHQoZmlsZUVsZW1lbnQsIHRoaXMuX2Zvcm1hdEZpbGVOYW1lKGZpbGVOYW1lKSk7CiAgICAgICAgdGhpcy5fZmluZChpdGVtLCAnc2l6ZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7ICAgICAgICAKCiAgICAgICAgdGhpcy5fbGlzdEVsZW1lbnQuYXBwZW5kQ2hpbGQoaXRlbSk7CiAgICB9LAogICAgX2dldEl0ZW1CeUZpbGVJZDogZnVuY3Rpb24oaWQpewogICAgICAgIHZhciBpdGVtID0gdGhpcy5fbGlzdEVsZW1lbnQuZmlyc3RDaGlsZDsgICAgICAgIAogICAgICAgIAogICAgICAgIC8vIHRoZXJlIGNhbid0IGJlIHR4dCBub2RlcyBpbiBkeW5hbWljYWxseSBjcmVhdGVkIGxpc3QKICAgICAgICAvLyBhbmQgd2UgY2FuICB1c2UgbmV4dFNpYmxpbmcKICAgICAgICB3aGlsZSAoaXRlbSl7ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpdGVtLnFxRmlsZUlkID09IGlkKSByZXR1cm4gaXRlbTsgICAgICAgICAgICAKICAgICAgICAgICAgaXRlbSA9IGl0ZW0ubmV4dFNpYmxpbmc7CiAgICAgICAgfSAgICAgICAgICAKICAgIH0sCiAgICAvKioKICAgICAqIGRlbGVnYXRlIGNsaWNrIGV2ZW50IGZvciBjYW5jZWwgbGluayAKICAgICAqKi8KICAgIF9iaW5kQ2FuY2VsRXZlbnQ6IGZ1bmN0aW9uKCl7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgICBsaXN0ID0gdGhpcy5fbGlzdEVsZW1lbnQ7ICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgcXEuYXR0YWNoKGxpc3QsICdjbGljaycsIGZ1bmN0aW9uKGUpeyAgICAgICAgICAgIAogICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAocXEuaGFzQ2xhc3ModGFyZ2V0LCBzZWxmLl9jbGFzc2VzLmNhbmNlbCkpeyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHFxLnByZXZlbnREZWZhdWx0KGUpOwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGFyZ2V0LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVyLmNhbmNlbChpdGVtLnFxRmlsZUlkKTsKICAgICAgICAgICAgICAgIHFxLnJlbW92ZShpdGVtKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSAgICAKfSk7CiAgICAKcXEuVXBsb2FkRHJvcFpvbmUgPSBmdW5jdGlvbihvKXsKICAgIHRoaXMuX29wdGlvbnMgPSB7CiAgICAgICAgZWxlbWVudDogbnVsbCwgIAogICAgICAgIG9uRW50ZXI6IGZ1bmN0aW9uKGUpe30sCiAgICAgICAgb25MZWF2ZTogZnVuY3Rpb24oZSl7fSwgIAogICAgICAgIC8vIGlzIG5vdCBmaXJlZCB3aGVuIGxlYXZpbmcgZWxlbWVudCBieSBob3ZlcmluZyBkZXNjZW5kYW50cyAgIAogICAgICAgIG9uTGVhdmVOb3REZXNjZW5kYW50czogZnVuY3Rpb24oZSl7fSwgICAKICAgICAgICBvbkRyb3A6IGZ1bmN0aW9uKGUpe30gICAgICAgICAgICAgICAgICAgICAgIAogICAgfTsKICAgIHFxLmV4dGVuZCh0aGlzLl9vcHRpb25zLCBvKTsgCiAgICAKICAgIHRoaXMuX2VsZW1lbnQgPSB0aGlzLl9vcHRpb25zLmVsZW1lbnQ7CiAgICAKICAgIHRoaXMuX2Rpc2FibGVEcm9wT3V0c2lkZSgpOwogICAgdGhpcy5fYXR0YWNoRXZlbnRzKCk7ICAgCn07CgpxcS5VcGxvYWREcm9wWm9uZS5wcm90b3R5cGUgPSB7CiAgICBfZGlzYWJsZURyb3BPdXRzaWRlOiBmdW5jdGlvbihlKXsKICAgICAgICAvLyBydW4gb25seSBvbmNlIGZvciBhbGwgaW5zdGFuY2VzCiAgICAgICAgaWYgKCFxcS5VcGxvYWREcm9wWm9uZS5kcm9wT3V0c2lkZURpc2FibGVkICl7CgogICAgICAgICAgICBxcS5hdHRhY2goZG9jdW1lbnQsICdkcmFnb3ZlcicsIGZ1bmN0aW9uKGUpewogICAgICAgICAgICAgICAgaWYgKGUuZGF0YVRyYW5zZmVyKXsKICAgICAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBxcS5VcGxvYWREcm9wWm9uZS5kcm9wT3V0c2lkZURpc2FibGVkID0gdHJ1ZTsgCiAgICAgICAgfSAgICAgICAgCiAgICB9LAogICAgX2F0dGFjaEV2ZW50czogZnVuY3Rpb24oKXsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgcXEuYXR0YWNoKHNlbGYuX2VsZW1lbnQsICdkcmFnb3ZlcicsIGZ1bmN0aW9uKGUpewogICAgICAgICAgICBpZiAoIXNlbGYuX2lzVmFsaWRGaWxlRHJhZyhlKSkgcmV0dXJuOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGVmZmVjdCA9IGUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQ7CiAgICAgICAgICAgIGlmIChlZmZlY3QgPT0gJ21vdmUnIHx8IGVmZmVjdCA9PSAnbGlua01vdmUnKXsKICAgICAgICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7IC8vIGZvciBGRiAob25seSBtb3ZlIGFsbG93ZWQpICAgIAogICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknOyAvLyBmb3IgQ2hyb21lCiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgcXEuYXR0YWNoKHNlbGYuX2VsZW1lbnQsICdkcmFnZW50ZXInLCBmdW5jdGlvbihlKXsKICAgICAgICAgICAgaWYgKCFzZWxmLl9pc1ZhbGlkRmlsZURyYWcoZSkpIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub25FbnRlcihlKTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBxcS5hdHRhY2goc2VsZi5fZWxlbWVudCwgJ2RyYWdsZWF2ZScsIGZ1bmN0aW9uKGUpewogICAgICAgICAgICBpZiAoIXNlbGYuX2lzVmFsaWRGaWxlRHJhZyhlKSkgcmV0dXJuOwogICAgICAgICAgICAKICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vbkxlYXZlKGUpOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTsgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRvIG5vdCBmaXJlIHdoZW4gbW92aW5nIGEgbW91c2Ugb3ZlciBhIGRlc2NlbmRhbnQKICAgICAgICAgICAgaWYgKHFxLmNvbnRhaW5zKHRoaXMsIHJlbGF0ZWRUYXJnZXQpKSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBzZWxmLl9vcHRpb25zLm9uTGVhdmVOb3REZXNjZW5kYW50cyhlKTsgCiAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAKICAgICAgICBxcS5hdHRhY2goc2VsZi5fZWxlbWVudCwgJ2Ryb3AnLCBmdW5jdGlvbihlKXsKICAgICAgICAgICAgaWYgKCFzZWxmLl9pc1ZhbGlkRmlsZURyYWcoZSkpIHJldHVybjsKICAgICAgICAgICAgCiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vbkRyb3AoZSk7CiAgICAgICAgfSk7ICAgICAgICAgIAogICAgfSwKICAgIF9pc1ZhbGlkRmlsZURyYWc6IGZ1bmN0aW9uKGUpewogICAgICAgIHZhciBkdCA9IGUuZGF0YVRyYW5zZmVyLAogICAgICAgICAgICAvLyBkbyBub3QgY2hlY2sgZHQudHlwZXMuY29udGFpbnMgaW4gd2Via2l0LCBiZWNhdXNlIGl0IGNyYXNoZXMgc2FmYXJpIDQgICAgICAgICAgICAKICAgICAgICAgICAgaXNXZWJraXQgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkFwcGxlV2ViS2l0IikgPiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgLy8gZHQuZWZmZWN0QWxsb3dlZCBpcyBub25lIGluIFNhZmFyaSA1CiAgICAgICAgLy8gZHQudHlwZXMuY29udGFpbnMgY2hlY2sgaXMgZm9yIGZpcmVmb3ggICAgICAgICAgICAKICAgICAgICByZXR1cm4gZHQgJiYgZHQuZWZmZWN0QWxsb3dlZCAhPSAnbm9uZScgJiYgCiAgICAgICAgICAgIChkdC5maWxlcyB8fCAoIWlzV2Via2l0ICYmIGR0LnR5cGVzLmNvbnRhaW5zICYmIGR0LnR5cGVzLmNvbnRhaW5zKCdGaWxlcycpKSk7CiAgICAgICAgCiAgICB9ICAgICAgICAKfTsgCgpxcS5VcGxvYWRCdXR0b24gPSBmdW5jdGlvbihvKXsKICAgIHRoaXMuX29wdGlvbnMgPSB7CiAgICAgICAgZWxlbWVudDogbnVsbCwgIAogICAgICAgIC8vIGlmIHNldCB0byB0cnVlIGFkZHMgbXVsdGlwbGUgYXR0cmlidXRlIHRvIGZpbGUgaW5wdXQgICAgICAKICAgICAgICBtdWx0aXBsZTogZmFsc2UsCiAgICAgICAgLy8gbmFtZSBhdHRyaWJ1dGUgb2YgZmlsZSBpbnB1dAogICAgICAgIG5hbWU6ICdmaWxlJywKICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oaW5wdXQpe30sCiAgICAgICAgaG92ZXJDbGFzczogJ3FxLXVwbG9hZC1idXR0b24taG92ZXInLAogICAgICAgIGZvY3VzQ2xhc3M6ICdxcS11cGxvYWQtYnV0dG9uLWZvY3VzJyAgICAgICAgICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICBxcS5leHRlbmQodGhpcy5fb3B0aW9ucywgbyk7CiAgICAgICAgCiAgICB0aGlzLl9lbGVtZW50ID0gdGhpcy5fb3B0aW9ucy5lbGVtZW50OwogICAgCiAgICAvLyBtYWtlIGJ1dHRvbiBzdWl0YWJsZSBjb250YWluZXIgZm9yIGlucHV0CiAgICBxcS5jc3ModGhpcy5fZWxlbWVudCwgewogICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLAogICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJywKICAgICAgICAvLyBNYWtlIHN1cmUgYnJvd3NlIGJ1dHRvbiBpcyBpbiB0aGUgcmlnaHQgc2lkZQogICAgICAgIC8vIGluIEludGVybmV0IEV4cGxvcmVyCiAgICAgICAgZGlyZWN0aW9uOiAnbHRyJwogICAgfSk7ICAgCiAgICAKICAgIHRoaXMuX2lucHV0ID0gdGhpcy5fY3JlYXRlSW5wdXQoKTsKfTsKCnFxLlVwbG9hZEJ1dHRvbi5wcm90b3R5cGUgPSB7CiAgICAvKiByZXR1cm5zIGZpbGUgaW5wdXQgZWxlbWVudCAqLyAgICAKICAgIGdldElucHV0OiBmdW5jdGlvbigpewogICAgICAgIHJldHVybiB0aGlzLl9pbnB1dDsKICAgIH0sCiAgICAvKiBjbGVhbnMvcmVjcmVhdGVzIHRoZSBmaWxlIGlucHV0ICovCiAgICByZXNldDogZnVuY3Rpb24oKXsKICAgICAgICBpZiAodGhpcy5faW5wdXQucGFyZW50Tm9kZSl7CiAgICAgICAgICAgIHFxLnJlbW92ZSh0aGlzLl9pbnB1dCk7ICAgIAogICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgcXEucmVtb3ZlQ2xhc3ModGhpcy5fZWxlbWVudCwgdGhpcy5fb3B0aW9ucy5mb2N1c0NsYXNzKTsKICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2NyZWF0ZUlucHV0KCk7CiAgICB9LCAgICAKICAgIF9jcmVhdGVJbnB1dDogZnVuY3Rpb24oKXsgICAgICAgICAgICAgICAgCiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5tdWx0aXBsZSl7CiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCAibXVsdGlwbGUiKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiZmlsZSIpOwogICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsIHRoaXMuX29wdGlvbnMubmFtZSk7CiAgICAgICAgCiAgICAgICAgcXEuY3NzKGlucHV0LCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLAogICAgICAgICAgICAvLyBpbiBPcGVyYSBvbmx5ICdicm93c2UnIGJ1dHRvbgogICAgICAgICAgICAvLyBpcyBjbGlja2FibGUgYW5kIGl0IGlzIGxvY2F0ZWQgYXQKICAgICAgICAgICAgLy8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGlucHV0CiAgICAgICAgICAgIHJpZ2h0OiAwLAogICAgICAgICAgICB0b3A6IDAsCiAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdBcmlhbCcsCiAgICAgICAgICAgIC8vIDQgcGVyc29ucyByZXBvcnRlZCB0aGlzLCB0aGUgbWF4IHZhbHVlcyB0aGF0IHdvcmtlZCBmb3IgdGhlbSB3ZXJlIDI0MywgMjM2LCAyMzYsIDExOAogICAgICAgICAgICBmb250U2l6ZTogJzExOHB4JywKICAgICAgICAgICAgbWFyZ2luOiAwLAogICAgICAgICAgICBwYWRkaW5nOiAwLAogICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJywKICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoaW5wdXQpOwoKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgcXEuYXR0YWNoKGlucHV0LCAnY2hhbmdlJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vbkNoYW5nZShpbnB1dCk7CiAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAKICAgICAgICBxcS5hdHRhY2goaW5wdXQsICdtb3VzZW92ZXInLCBmdW5jdGlvbigpewogICAgICAgICAgICBxcS5hZGRDbGFzcyhzZWxmLl9lbGVtZW50LCBzZWxmLl9vcHRpb25zLmhvdmVyQ2xhc3MpOwogICAgICAgIH0pOwogICAgICAgIHFxLmF0dGFjaChpbnB1dCwgJ21vdXNlb3V0JywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgcXEucmVtb3ZlQ2xhc3Moc2VsZi5fZWxlbWVudCwgc2VsZi5fb3B0aW9ucy5ob3ZlckNsYXNzKTsKICAgICAgICB9KTsKICAgICAgICBxcS5hdHRhY2goaW5wdXQsICdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHFxLmFkZENsYXNzKHNlbGYuX2VsZW1lbnQsIHNlbGYuX29wdGlvbnMuZm9jdXNDbGFzcyk7CiAgICAgICAgfSk7CiAgICAgICAgcXEuYXR0YWNoKGlucHV0LCAnYmx1cicsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHFxLnJlbW92ZUNsYXNzKHNlbGYuX2VsZW1lbnQsIHNlbGYuX29wdGlvbnMuZm9jdXNDbGFzcyk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIElFIGFuZCBPcGVyYSwgdW5mb3J0dW5hdGVseSBoYXZlIDIgdGFiIHN0b3BzIG9uIGZpbGUgaW5wdXQKICAgICAgICAvLyB3aGljaCBpcyB1bmFjY2VwdGFibGUgaW4gb3VyIGNhc2UsIGRpc2FibGUga2V5Ym9hcmQgYWNjZXNzCiAgICAgICAgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCl7CiAgICAgICAgICAgIC8vIGl0IGlzIElFIG9yIE9wZXJhCiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndGFiSW5kZXgnLCAiLTEiKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpbnB1dDsgICAgICAgICAgICAKICAgIH0gICAgICAgIAp9OwoKLyoqCiAqIENsYXNzIGZvciB1cGxvYWRpbmcgZmlsZXMsIHVwbG9hZGluZyBpdHNlbGYgaXMgaGFuZGxlZCBieSBjaGlsZCBjbGFzc2VzCiAqLwpxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QgPSBmdW5jdGlvbihvKXsKICAgIHRoaXMuX29wdGlvbnMgPSB7CiAgICAgICAgZGVidWc6IGZhbHNlLAogICAgICAgIGFjdGlvbjogJy91cGxvYWQucGhwJywKICAgICAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHVwbG9hZHMgICAgICAgIAogICAgICAgIG1heENvbm5lY3Rpb25zOiA5OTksCiAgICAgICAgb25Qcm9ncmVzczogZnVuY3Rpb24oaWQsIGZpbGVOYW1lLCBsb2FkZWQsIHRvdGFsKXt9LAogICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSwgcmVzcG9uc2Upe30sCiAgICAgICAgb25DYW5jZWw6IGZ1bmN0aW9uKGlkLCBmaWxlTmFtZSl7fQogICAgfTsKICAgIHFxLmV4dGVuZCh0aGlzLl9vcHRpb25zLCBvKTsgICAgCiAgICAKICAgIHRoaXMuX3F1ZXVlID0gW107CiAgICAvLyBwYXJhbXMgZm9yIGZpbGVzIGluIHF1ZXVlCiAgICB0aGlzLl9wYXJhbXMgPSBbXTsKfTsKcXEuVXBsb2FkSGFuZGxlckFic3RyYWN0LnByb3RvdHlwZSA9IHsKICAgIGxvZzogZnVuY3Rpb24oc3RyKXsKICAgICAgICBpZiAodGhpcy5fb3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSkgY29uc29sZS5sb2coJ1t1cGxvYWRlcl0gJyArIHN0cik7ICAgICAgICAKICAgIH0sCiAgICAvKioKICAgICAqIEFkZHMgZmlsZSBvciBmaWxlIGlucHV0IHRvIHRoZSBxdWV1ZQogICAgICogQHJldHVybnMgaWQKICAgICAqKi8gICAgCiAgICBhZGQ6IGZ1bmN0aW9uKGZpbGUpe30sCiAgICAvKioKICAgICAqIFNlbmRzIHRoZSBmaWxlIGlkZW50aWZpZWQgYnkgaWQgYW5kIGFkZGl0aW9uYWwgcXVlcnkgcGFyYW1zIHRvIHRoZSBzZXJ2ZXIKICAgICAqLwogICAgdXBsb2FkOiBmdW5jdGlvbihpZCwgcGFyYW1zKXsKICAgICAgICB2YXIgbGVuID0gdGhpcy5fcXVldWUucHVzaChpZCk7CgogICAgICAgIHZhciBjb3B5ID0ge307ICAgICAgICAKICAgICAgICBxcS5leHRlbmQoY29weSwgcGFyYW1zKTsKICAgICAgICB0aGlzLl9wYXJhbXNbaWRdID0gY29weTsgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgLy8gaWYgdG9vIG1hbnkgYWN0aXZlIHVwbG9hZHMsIHdhaXQuLi4KICAgICAgICBpZiAobGVuIDw9IHRoaXMuX29wdGlvbnMubWF4Q29ubmVjdGlvbnMpeyAgICAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl91cGxvYWQoaWQsIHRoaXMuX3BhcmFtc1tpZF0pOwogICAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIENhbmNlbHMgZmlsZSB1cGxvYWQgYnkgaWQKICAgICAqLwogICAgY2FuY2VsOiBmdW5jdGlvbihpZCl7CiAgICAgICAgdGhpcy5fY2FuY2VsKGlkKTsKICAgICAgICB0aGlzLl9kZXF1ZXVlKGlkKTsKICAgIH0sCiAgICAvKioKICAgICAqIENhbmNlbGxzIGFsbCB1cGxvYWRzCiAgICAgKi8KICAgIGNhbmNlbEFsbDogZnVuY3Rpb24oKXsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fcXVldWUubGVuZ3RoOyBpKyspewogICAgICAgICAgICB0aGlzLl9jYW5jZWwodGhpcy5fcXVldWVbaV0pOwogICAgICAgIH0KICAgICAgICB0aGlzLl9xdWV1ZSA9IFtdOwogICAgfSwKICAgIC8qKgogICAgICogUmV0dXJucyBuYW1lIG9mIHRoZSBmaWxlIGlkZW50aWZpZWQgYnkgaWQKICAgICAqLwogICAgZ2V0TmFtZTogZnVuY3Rpb24oaWQpe30sCiAgICAvKioKICAgICAqIFJldHVybnMgc2l6ZSBvZiB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5IGlkCiAgICAgKi8gICAgICAgICAgCiAgICBnZXRTaXplOiBmdW5jdGlvbihpZCl7fSwKICAgIC8qKgogICAgICogUmV0dXJucyBpZCBvZiBmaWxlcyBiZWluZyB1cGxvYWRlZCBvcgogICAgICogd2FpdGluZyBmb3IgdGhlaXIgdHVybgogICAgICovCiAgICBnZXRRdWV1ZTogZnVuY3Rpb24oKXsKICAgICAgICByZXR1cm4gdGhpcy5fcXVldWU7CiAgICB9LAogICAgLyoqCiAgICAgKiBBY3R1YWwgdXBsb2FkIG1ldGhvZAogICAgICovCiAgICBfdXBsb2FkOiBmdW5jdGlvbihpZCl7fSwKICAgIC8qKgogICAgICogQWN0dWFsIGNhbmNlbCBtZXRob2QKICAgICAqLwogICAgX2NhbmNlbDogZnVuY3Rpb24oaWQpe30sICAgICAKICAgIC8qKgogICAgICogUmVtb3ZlcyBlbGVtZW50IGZyb20gcXVldWUsIHN0YXJ0cyB1cGxvYWQgb2YgbmV4dAogICAgICovCiAgICBfZGVxdWV1ZTogZnVuY3Rpb24oaWQpewogICAgICAgIHZhciBpID0gcXEuaW5kZXhPZih0aGlzLl9xdWV1ZSwgaWQpOwogICAgICAgIHRoaXMuX3F1ZXVlLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgIAogICAgICAgIHZhciBtYXggPSB0aGlzLl9vcHRpb25zLm1heENvbm5lY3Rpb25zOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLl9xdWV1ZS5sZW5ndGggPj0gbWF4ICYmIGkgPCBtYXgpewogICAgICAgICAgICB2YXIgbmV4dElkID0gdGhpcy5fcXVldWVbbWF4LTFdOwogICAgICAgICAgICB0aGlzLl91cGxvYWQobmV4dElkLCB0aGlzLl9wYXJhbXNbbmV4dElkXSk7CiAgICAgICAgfQogICAgfSAgICAgICAgCn07CgovKioKICogQ2xhc3MgZm9yIHVwbG9hZGluZyBmaWxlcyB1c2luZyBmb3JtIGFuZCBpZnJhbWUKICogQGluaGVyaXRzIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdAogKi8KcXEuVXBsb2FkSGFuZGxlckZvcm0gPSBmdW5jdGlvbihvKXsKICAgIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgCiAgICB0aGlzLl9pbnB1dHMgPSB7fTsKfTsKLy8gQGluaGVyaXRzIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdApxcS5leHRlbmQocXEuVXBsb2FkSGFuZGxlckZvcm0ucHJvdG90eXBlLCBxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QucHJvdG90eXBlKTsKCnFxLmV4dGVuZChxcS5VcGxvYWRIYW5kbGVyRm9ybS5wcm90b3R5cGUsIHsKICAgIGFkZDogZnVuY3Rpb24oZmlsZUlucHV0KXsKICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ3FxZmlsZScpOwogICAgICAgIHZhciBpZCA9ICdxcS11cGxvYWQtaGFuZGxlci1pZnJhbWUnICsgcXEuZ2V0VW5pcXVlSWQoKTsgICAgICAgCiAgICAgICAgCiAgICAgICAgdGhpcy5faW5wdXRzW2lkXSA9IGZpbGVJbnB1dDsKICAgICAgICAKICAgICAgICAvLyByZW1vdmUgZmlsZSBpbnB1dCBmcm9tIERPTQogICAgICAgIGlmIChmaWxlSW5wdXQucGFyZW50Tm9kZSl7CiAgICAgICAgICAgIHFxLnJlbW92ZShmaWxlSW5wdXQpOwogICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgIHJldHVybiBpZDsKICAgIH0sCiAgICBnZXROYW1lOiBmdW5jdGlvbihpZCl7CiAgICAgICAgLy8gZ2V0IGlucHV0IHZhbHVlIGFuZCByZW1vdmUgcGF0aCB0byBub3JtYWxpemUKICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRzW2lkXS52YWx1ZS5yZXBsYWNlKC8uKihcL3xcXCkvLCAiIik7CiAgICB9LCAgICAKICAgIF9jYW5jZWw6IGZ1bmN0aW9uKGlkKXsKICAgICAgICB0aGlzLl9vcHRpb25zLm9uQ2FuY2VsKGlkLCB0aGlzLmdldE5hbWUoaWQpKTsKICAgICAgICAKICAgICAgICBkZWxldGUgdGhpcy5faW5wdXRzW2lkXTsgICAgICAgIAoKICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgIGlmIChpZnJhbWUpewogICAgICAgICAgICAvLyB0byBjYW5jZWwgcmVxdWVzdCBzZXQgc3JjIHRvIHNvbWV0aGluZyBlbHNlCiAgICAgICAgICAgIC8vIHdlIHVzZSBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7IiBiZWNhdXNlIGl0IGRvZXNuJ3QKICAgICAgICAgICAgLy8gdHJpZ2dlciBpZTYgcHJvbXB0IG9uIGh0dHBzCiAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsICdqYXZhc2NyaXB0OmZhbHNlOycpOwoKICAgICAgICAgICAgcXEucmVtb3ZlKGlmcmFtZSk7CiAgICAgICAgfQogICAgfSwgICAgIAogICAgX3VwbG9hZDogZnVuY3Rpb24oaWQsIHBhcmFtcyl7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgdmFyIGlucHV0ID0gdGhpcy5faW5wdXRzW2lkXTsKICAgICAgICAKICAgICAgICBpZiAoIWlucHV0KXsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmaWxlIHdpdGggcGFzc2VkIGlkIHdhcyBub3QgYWRkZWQsIG9yIGFscmVhZHkgdXBsb2FkZWQgb3IgY2FuY2VsbGVkJyk7CiAgICAgICAgfSAgICAgICAgICAgICAgICAKCiAgICAgICAgdmFyIGZpbGVOYW1lID0gdGhpcy5nZXROYW1lKGlkKTsKICAgICAgICAgICAgICAgIAogICAgICAgIHZhciBpZnJhbWUgPSB0aGlzLl9jcmVhdGVJZnJhbWUoaWQpOwogICAgICAgIHZhciBmb3JtID0gdGhpcy5fY3JlYXRlRm9ybShpZnJhbWUsIHBhcmFtcyk7CiAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChpbnB1dCk7CgogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLl9hdHRhY2hMb2FkRXZlbnQoaWZyYW1lLCBmdW5jdGlvbigpeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBzZWxmLmxvZygnaWZyYW1lIGxvYWRlZCcpOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gc2VsZi5fZ2V0SWZyYW1lQ29udGVudEpTT04oaWZyYW1lKTsKCiAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub25Db21wbGV0ZShpZCwgZmlsZU5hbWUsIHJlc3BvbnNlKTsKICAgICAgICAgICAgc2VsZi5fZGVxdWV1ZShpZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBkZWxldGUgc2VsZi5faW5wdXRzW2lkXTsKICAgICAgICAgICAgLy8gdGltZW91dCBhZGRlZCB0byBmaXggYnVzeSBzdGF0ZSBpbiBGRjMuNgogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICBxcS5yZW1vdmUoaWZyYW1lKTsKICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgfSk7CgogICAgICAgIGZvcm0uc3VibWl0KCk7ICAgICAgICAKICAgICAgICBxcS5yZW1vdmUoZm9ybSk7ICAgICAgICAKICAgICAgICAKICAgICAgICByZXR1cm4gaWQ7CiAgICB9LCAKICAgIF9hdHRhY2hMb2FkRXZlbnQ6IGZ1bmN0aW9uKGlmcmFtZSwgY2FsbGJhY2spewogICAgICAgIHFxLmF0dGFjaChpZnJhbWUsICdsb2FkJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgLy8gd2hlbiB3ZSByZW1vdmUgaWZyYW1lIGZyb20gZG9tCiAgICAgICAgICAgIC8vIHRoZSByZXF1ZXN0IHN0b3BzLCBidXQgaW4gSUUgbG9hZAogICAgICAgICAgICAvLyBldmVudCBmaXJlcwogICAgICAgICAgICBpZiAoIWlmcmFtZS5wYXJlbnROb2RlKXsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gZml4aW5nIE9wZXJhIDEwLjUzCiAgICAgICAgICAgIGlmIChpZnJhbWUuY29udGVudERvY3VtZW50ICYmCiAgICAgICAgICAgICAgICBpZnJhbWUuY29udGVudERvY3VtZW50LmJvZHkgJiYKICAgICAgICAgICAgICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPT0gImZhbHNlIil7CiAgICAgICAgICAgICAgICAvLyBJbiBPcGVyYSBldmVudCBpcyBmaXJlZCBzZWNvbmQgdGltZQogICAgICAgICAgICAgICAgLy8gd2hlbiBib2R5LmlubmVySFRNTCBjaGFuZ2VkIGZyb20gZmFsc2UKICAgICAgICAgICAgICAgIC8vIHRvIHNlcnZlciByZXNwb25zZSBhcHByb3guIGFmdGVyIDEgc2VjCiAgICAgICAgICAgICAgICAvLyB3aGVuIHdlIHVwbG9hZCBmaWxlIHdpdGggaWZyYW1lCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBSZXR1cm5zIGpzb24gb2JqZWN0IHJlY2VpdmVkIGJ5IGlmcmFtZSBmcm9tIHNlcnZlci4KICAgICAqLwogICAgX2dldElmcmFtZUNvbnRlbnRKU09OOiBmdW5jdGlvbihpZnJhbWUpewogICAgICAgIC8vIGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50IC0gZm9yIElFPDcKICAgICAgICB2YXIgZG9jID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudCA/IGlmcmFtZS5jb250ZW50RG9jdW1lbnQ6IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LAogICAgICAgICAgICByZXNwb25zZTsKICAgICAgICAKICAgICAgICB0aGlzLmxvZygiY29udmVydGluZyBpZnJhbWUncyBpbm5lckhUTUwgdG8gSlNPTiIpOwogICAgICAgIHRoaXMubG9nKCJpbm5lckhUTUwgPSAiICsgZG9jLmJvZHkuaW5uZXJIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmVzcG9uc2UgPSBldmFsKCIoIiArIGRvYy5ib2R5LmlubmVySFRNTCArICIpIik7CiAgICAgICAgfSBjYXRjaChlcnIpewogICAgICAgICAgICByZXNwb25zZSA9IHt9OwogICAgICAgIH0gICAgICAgIAoKICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBDcmVhdGVzIGlmcmFtZSB3aXRoIHVuaXF1ZSBuYW1lCiAgICAgKi8KICAgIF9jcmVhdGVJZnJhbWU6IGZ1bmN0aW9uKGlkKXsKICAgICAgICAvLyBXZSBjYW4ndCB1c2UgZm9sbG93aW5nIGNvZGUgYXMgdGhlIG5hbWUgYXR0cmlidXRlCiAgICAgICAgLy8gd29uJ3QgYmUgcHJvcGVybHkgcmVnaXN0ZXJlZCBpbiBJRTYsIGFuZCBuZXcgd2luZG93CiAgICAgICAgLy8gb24gZm9ybSBzdWJtaXQgd2lsbCBvcGVuCiAgICAgICAgLy8gdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgIC8vIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCBpZCk7CgogICAgICAgIHZhciBpZnJhbWUgPSBxcS50b0VsZW1lbnQoJzxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OmZhbHNlOyIgbmFtZT0iJyArIGlkICsgJyIgLz4nKTsKICAgICAgICAvLyBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7IiByZW1vdmVzIGllNiBwcm9tcHQgb24gaHR0cHMKCiAgICAgICAgaWZyYW1lLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7CgogICAgICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKCiAgICAgICAgcmV0dXJuIGlmcmFtZTsKICAgIH0sCiAgICAvKioKICAgICAqIENyZWF0ZXMgZm9ybSwgdGhhdCB3aWxsIGJlIHN1Ym1pdHRlZCB0byBpZnJhbWUKICAgICAqLwogICAgX2NyZWF0ZUZvcm06IGZ1bmN0aW9uKGlmcmFtZSwgcGFyYW1zKXsKICAgICAgICAvLyBXZSBjYW4ndCB1c2UgdGhlIGZvbGxvd2luZyBjb2RlIGluIElFNgogICAgICAgIC8vIHZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOwogICAgICAgIC8vIGZvcm0uc2V0QXR0cmlidXRlKCdtZXRob2QnLCAncG9zdCcpOwogICAgICAgIC8vIGZvcm0uc2V0QXR0cmlidXRlKCdlbmN0eXBlJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsKICAgICAgICAvLyBCZWNhdXNlIGluIHRoaXMgY2FzZSBmaWxlIHdvbid0IGJlIGF0dGFjaGVkIHRvIHJlcXVlc3QKICAgICAgICB2YXIgZm9ybSA9IHFxLnRvRWxlbWVudCgnPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48L2Zvcm0+Jyk7CgogICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHFxLm9iajJ1cmwocGFyYW1zLCB0aGlzLl9vcHRpb25zLmFjdGlvbik7CgogICAgICAgIGZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCBxdWVyeVN0cmluZyk7CiAgICAgICAgZm9ybS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsIGlmcmFtZS5uYW1lKTsKICAgICAgICBmb3JtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKCiAgICAgICAgcmV0dXJuIGZvcm07CiAgICB9Cn0pOwoKLyoqCiAqIENsYXNzIGZvciB1cGxvYWRpbmcgZmlsZXMgdXNpbmcgeGhyCiAqIEBpbmhlcml0cyBxcS5VcGxvYWRIYW5kbGVyQWJzdHJhY3QKICovCnFxLlVwbG9hZEhhbmRsZXJYaHIgPSBmdW5jdGlvbihvKXsKICAgIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoKICAgIHRoaXMuX2ZpbGVzID0gW107CiAgICB0aGlzLl94aHJzID0gW107CiAgICAKICAgIC8vIGN1cnJlbnQgbG9hZGVkIHNpemUgaW4gYnl0ZXMgZm9yIGVhY2ggZmlsZSAKICAgIHRoaXMuX2xvYWRlZCA9IFtdOwp9OwoKLy8gc3RhdGljIG1ldGhvZApxcS5VcGxvYWRIYW5kbGVyWGhyLmlzU3VwcG9ydGVkID0gZnVuY3Rpb24oKXsKICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICBpbnB1dC50eXBlID0gJ2ZpbGUnOyAgICAgICAgCiAgICAKICAgIHJldHVybiAoCiAgICAgICAgJ211bHRpcGxlJyBpbiBpbnB1dCAmJgogICAgICAgIHR5cGVvZiBGaWxlICE9ICJ1bmRlZmluZWQiICYmCiAgICAgICAgdHlwZW9mIChuZXcgWE1MSHR0cFJlcXVlc3QoKSkudXBsb2FkICE9ICJ1bmRlZmluZWQiICk7ICAgICAgIAp9OwoKLy8gQGluaGVyaXRzIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdApxcS5leHRlbmQocXEuVXBsb2FkSGFuZGxlclhoci5wcm90b3R5cGUsIHFxLlVwbG9hZEhhbmRsZXJBYnN0cmFjdC5wcm90b3R5cGUpCgpxcS5leHRlbmQocXEuVXBsb2FkSGFuZGxlclhoci5wcm90b3R5cGUsIHsKICAgIC8qKgogICAgICogQWRkcyBmaWxlIHRvIHRoZSBxdWV1ZQogICAgICogUmV0dXJucyBpZCB0byB1c2Ugd2l0aCB1cGxvYWQsIGNhbmNlbAogICAgICoqLyAgICAKICAgIGFkZDogZnVuY3Rpb24oZmlsZSl7CiAgICAgICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKXsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXNzZWQgb2JqIGluIG5vdCBhIEZpbGUgKGluIHFxLlVwbG9hZEhhbmRsZXJYaHIpJyk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzLnB1c2goZmlsZSkgLSAxOyAgICAgICAgCiAgICB9LAogICAgZ2V0TmFtZTogZnVuY3Rpb24oaWQpeyAgICAgICAgCiAgICAgICAgdmFyIGZpbGUgPSB0aGlzLl9maWxlc1tpZF07CiAgICAgICAgLy8gZml4IG1pc3NpbmcgbmFtZSBpbiBTYWZhcmkgNAogICAgICAgIHJldHVybiBmaWxlLmZpbGVOYW1lICE9IG51bGwgPyBmaWxlLmZpbGVOYW1lIDogZmlsZS5uYW1lOyAgICAgICAKICAgIH0sCiAgICBnZXRTaXplOiBmdW5jdGlvbihpZCl7CiAgICAgICAgdmFyIGZpbGUgPSB0aGlzLl9maWxlc1tpZF07CiAgICAgICAgcmV0dXJuIGZpbGUuZmlsZVNpemUgIT0gbnVsbCA/IGZpbGUuZmlsZVNpemUgOiBmaWxlLnNpemU7CiAgICB9LCAgICAKICAgIC8qKgogICAgICogUmV0dXJucyB1cGxvYWRlZCBieXRlcyBmb3IgZmlsZSBpZGVudGlmaWVkIGJ5IGlkIAogICAgICovICAgIAogICAgZ2V0TG9hZGVkOiBmdW5jdGlvbihpZCl7CiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlZFtpZF0gfHwgMDsgCiAgICB9LAogICAgLyoqCiAgICAgKiBTZW5kcyB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5IGlkIGFuZCBhZGRpdGlvbmFsIHF1ZXJ5IHBhcmFtcyB0byB0aGUgc2VydmVyCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIG5hbWUtdmFsdWUgc3RyaW5nIHBhaXJzCiAgICAgKi8gICAgCiAgICBfdXBsb2FkOiBmdW5jdGlvbihpZCwgcGFyYW1zKXsKICAgICAgICB2YXIgZmlsZSA9IHRoaXMuX2ZpbGVzW2lkXSwKICAgICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZShpZCksCiAgICAgICAgICAgIHNpemUgPSB0aGlzLmdldFNpemUoaWQpOwogICAgICAgICAgICAgICAgCiAgICAgICAgdGhpcy5fbG9hZGVkW2lkXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgdmFyIHhociA9IHRoaXMuX3hocnNbaWRdID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0gZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpewogICAgICAgICAgICAgICAgc2VsZi5fbG9hZGVkW2lkXSA9IGUubG9hZGVkOwogICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vblByb2dyZXNzKGlkLCBuYW1lLCBlLmxvYWRlZCwgZS50b3RhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQpewogICAgICAgICAgICAgICAgc2VsZi5fb25Db21wbGV0ZShpZCwgeGhyKTsgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgLy8gYnVpbGQgcXVlcnkgc3RyaW5nCiAgICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHt9OwogICAgICAgIHBhcmFtc1sncXFmaWxlJ10gPSBuYW1lOwogICAgICAgIHZhciBxdWVyeVN0cmluZyA9IHFxLm9iajJ1cmwocGFyYW1zLCB0aGlzLl9vcHRpb25zLmFjdGlvbik7CgogICAgICAgIHhoci5vcGVuKCJQT1NUIiwgcXVlcnlTdHJpbmcsIHRydWUpOwogICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwgIlhNTEh0dHBSZXF1ZXN0Iik7CiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoIlgtRmlsZS1OYW1lIiwgZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpKTsKICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgICAgIHhoci5zZW5kKGZpbGUpOwogICAgfSwKICAgIF9vbkNvbXBsZXRlOiBmdW5jdGlvbihpZCwgeGhyKXsKICAgICAgICAvLyB0aGUgcmVxdWVzdCB3YXMgYWJvcnRlZC9jYW5jZWxsZWQKICAgICAgICBpZiAoIXRoaXMuX2ZpbGVzW2lkXSkgcmV0dXJuOwogICAgICAgIAogICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXROYW1lKGlkKTsKICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShpZCk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fb3B0aW9ucy5vblByb2dyZXNzKGlkLCBuYW1lLCBzaXplLCBzaXplKTsKICAgICAgICAgICAgICAgIAogICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCl7CiAgICAgICAgICAgIHRoaXMubG9nKCJ4aHIgLSBzZXJ2ZXIgcmVzcG9uc2UgcmVjZWl2ZWQiKTsKICAgICAgICAgICAgdGhpcy5sb2coInJlc3BvbnNlVGV4dCA9ICIgKyB4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciByZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZXZhbCgiKCIgKyB4aHIucmVzcG9uc2VUZXh0ICsgIikiKTsKICAgICAgICAgICAgfSBjYXRjaChlcnIpewogICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7fTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5vbkNvbXBsZXRlKGlkLCBuYW1lLCByZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9vcHRpb25zLm9uQ29tcGxldGUoaWQsIG5hbWUsIHt9KTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICB0aGlzLl9maWxlc1tpZF0gPSBudWxsOwogICAgICAgIHRoaXMuX3hocnNbaWRdID0gbnVsbDsgICAgCiAgICAgICAgdGhpcy5fZGVxdWV1ZShpZCk7ICAgICAgICAgICAgICAgICAgICAKICAgIH0sCiAgICBfY2FuY2VsOiBmdW5jdGlvbihpZCl7CiAgICAgICAgdGhpcy5fb3B0aW9ucy5vbkNhbmNlbChpZCwgdGhpcy5nZXROYW1lKGlkKSk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZmlsZXNbaWRdID0gbnVsbDsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5feGhyc1tpZF0pewogICAgICAgICAgICB0aGlzLl94aHJzW2lkXS5hYm9ydCgpOwogICAgICAgICAgICB0aGlzLl94aHJzW2lkXSA9IG51bGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICB9CiAgICB9Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/templates/js/fileuploader/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhDwAPAKUAAEQ+PKSmpHx6fNTW1FxaXOzu7ExOTIyOjGRmZMTCxPz6/ERGROTi5Pz29JyanGxubMzKzIyKjGReXPT29FxWVGxmZExGROzq7ERCRLy6vISChNze3FxeXPTy9FROTJSSlMTGxPz+/OTm5JyenNTOzGxqbExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBgAhACwAAAAADwAPAAAGd8CQcEgsChuTZMNIDFgsC1Nn9GEwDwDAoqMBWEDFiweA2YoiZevwA9BkDAUhW0MkADYhiEJYwJj2QhYGTBwAE0MUGGp5IR1+RBEAEUMVDg4AAkQMJhgfFyEIWRgDRSALABKgWQ+HRQwaCCEVC7R0TEITHbmtt0xBACH5BAkGACYALAAAAAAPAA8AhUQ+PKSmpHRydNTW1FxWVOzu7MTCxIyKjExKTOTi5LSytHx+fPz6/ERGROTe3GxqbNTS1JyWlFRSVKympNze3FxeXPT29MzKzFROTOzq7ISGhERCRHx6fNza3FxaXPTy9MTGxJSSlExOTOTm5LS2tISChPz+/ExGRJyenKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ6QJNQeIkUhsjkp+EhMZLITKgBAGigQgiiCtiAKJdkBgNYgDYLhmDjQIbKwgfF9C4hPYC5KSMsbBBIJyJYFQAWQwQbI0J8Jh8nDUgHAAcmDA+LKAAcSAkIEhYTAAEoGxsdSSAKIyJcGyRYJiQbVRwDsVkPXrhDDCQBSUEAIfkECQYAEAAsAAAAAA8ADwCFRD48pKKkdHZ01NLUXFpc7OrsTE5MlJKU9Pb03N7cREZExMbEhIKEbGpsXFZUVFZU/P78tLa0fH583NrcZGJk9PL0VE5MnJ6c/Pb05ObkTEZEREJErKqsfHp81NbUXF5c7O7slJaU5OLkzMrMjIaEdG5sVFJU/Pr8TEpMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABndAiHA4DICISCIllBQWQgSNY6NJJAcoAMCw0XaQBQtAYj0ANgcE0SwZlgSe04hI2FiFAyEFRdQYmh8AakIOJhgQHhVCFQoaRAsVGSQWihAXAF9EHFkNEBUXGxsTSBxaGx9dGxFJGKgKAAoSEydNIwoFg01DF7oQQQAh+QQJBgAYACwAAAAADwAPAIVEPjykoqR0cnTU0tRUUlSMiozs6uxMSkx8fnzc3txcXlyUlpT09vRcWlxMRkS0trR8enzc2txcVlSUkpRUTkyMhoTk5uScnpz8/vxEQkR8dnTU1tRUVlSMjoz08vRMTkyEgoTk4uRkYmSclpT8+vy8urwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGc0CMcEgsGo9Gw6LhkHRCmICFODgAAJ8M4FDJTIUGCgCRwIQKV+9wMiaWtIAvRqOACiMKwucjJzFIJEN+gEQiHAQcJUMeBROCBFcLRBcAEESQAB0GGB4XGRkbghwCnxkiWhkPRRMMCSAfABkIoUhCDLW4Q0EAIfkECQYAGQAsAAAAAA8ADwCFRD48pKKkdHJ01NLU7OrsXFZUjIqMvLq8TEpM3N7c9Pb0lJaUxMbErK6sfH58bGpsVFJUTEZE3Nrc9PL0XF5clJKUxMLEVE5M5Obk/P78nJ6ctLa0hIaEREJE1NbU7O7sXFpcjI6MvL68TE5M5OLk/Pr8nJqczM7MtLK0hIKEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnPAjHBILBqPRsICFCmESMcBAgAYdQAIi9HzSCUyJEOnAx0GBqUSsQJwYFAZyTiFGZZEgHGlJKACQBIZEwJXVR8iYwANE0MTAVMNGSISHAAhRSUYC2pCJFMhH4IaEAdGDGMdFFcdG0cJKSNYDoFIQgqctblBADs=]]></data>
	</file>
	<file>
	  <filename>/templates/js/jquery.colorpicker.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lypqc2xpbnQgZGV2ZWw6IHRydWUsIGJpdHdpc2U6IHRydWUsIHJlZ2V4cDogdHJ1ZSwgYnJvd3NlcjogdHJ1ZSwgY29uZnVzaW9uOiB0cnVlLCB1bnBhcmFtOiB0cnVlLCBlcWVxOiB0cnVlLCB3aGl0ZTogdHJ1ZSwgbm9tZW46IHRydWUsIHBsdXNwbHVzOiB0cnVlLCBtYXhlcnI6IDUwLCBpbmRlbnQ6IDQgKi8NCi8qZ2xvYmFscyBqUXVlcnksQ29sb3IgKi8NCg0KLyoNCiAqIENvbG9yUGlja2VyDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDExLTIwMTIgTWFydGlqbiBXLiB2YW4gZGVyIExlZQ0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVC4NCiAqDQogKiBGdWxsLWZlYXR1cmVkIGNvbG9ycGlja2VyIGZvciBqUXVlcnlVSSB3aXRoIGZ1bGwgdGhlbWluZyBzdXBwb3J0Lg0KICogTW9zdCBpbWFnZXMgZnJvbSBqUGlja2VyIGJ5IENocmlzdG9waGVyIFQuIFRpbGxtYW4uDQogKiBTb3VyY2Vjb2RlIGNyZWF0ZWQgZnJvbSBzY3JhdGNoIGJ5IE1hcnRpam4gVy4gdmFuIGRlciBMZWUuDQogKi8NCg0KKGZ1bmN0aW9uICgkKSB7DQoJInVzZSBzdHJpY3QiOw0KDQoJJC5jb2xvcnBpY2tlciA9IG5ldyBmdW5jdGlvbigpIHsNCgkJdGhpcy5yZWdpb25hbCA9IFtdOw0KCQl0aGlzLnJlZ2lvbmFsWycnXSA9CXsNCgkJCW9rOgkJCQknT0snLA0KCQkJY2FuY2VsOgkJCSdDYW5jZWwnLA0KCQkJbm9uZToJCQknTm9uZScsDQoJCQlidXR0b246CQkJJ0NvbG9yJywNCgkJCXRpdGxlOgkJCSdQaWNrIGEgY29sb3InLA0KCQkJdHJhbnNwYXJlbnQ6CSdUcmFuc3BhcmVudCcsDQoJCQloc3ZIOgkJCSdIJywNCgkJCWhzdlM6CQkJJ1MnLA0KCQkJaHN2VjoJCQknVicsDQoJCQlyZ2JSOgkJCSdSJywNCgkJCXJnYkc6CQkJJ0cnLA0KCQkJcmdiQjoJCQknQicsDQoJCQlsYWJMOgkJCSdMJywNCgkJCWxhYkE6CQkJJ2EnLA0KCQkJbGFiQjoJCQknYicsDQoJCQloc2xIOgkJCSdIJywNCgkJCWhzbFM6CQkJJ1MnLA0KCQkJaHNsTDoJCQknTCcsDQoJCQljbXlrQzoJCQknQycsDQoJCQljbXlrTToJCQknTScsDQoJCQljbXlrWToJCQknWScsDQoJCQljbXlrSzoJCQknSycsDQoJCQlhbHBoYUE6CQkJJ0EnDQoJCX07DQoJfTsNCg0KCXZhciBfY29sb3JwaWNrZXJfaW5kZXggPSAwLA0KDQoJCV9jb250YWluZXJfcG9wdXAgPSAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXIgdWktY29sb3JwaWNrZXItZGlhbG9nIHVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4nLA0KDQoJCV9jb250YWluZXJfaW5saW5lID0gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyIHVpLWNvbG9ycGlja2VyLWlubGluZSB1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiPjwvZGl2PicsDQoNCgkJX3BhcnRzX2xpc3RzID0gew0KCQkJJ2Z1bGwnOgkJCVsnaGVhZGVyJywgJ21hcCcsICdiYXInLCAnaGV4JywgJ2hzdicsICdyZ2InLCAnYWxwaGEnLCAnbGFiJywgJ2NteWsnLCAncHJldmlldycsICdzd2F0Y2hlcycsICdmb290ZXInXSwNCgkJCSdwb3B1cCc6CQlbJ21hcCcsICdiYXInLCAnaGV4JywgJ2hzdicsICdyZ2InLCAnYWxwaGEnLCAncHJldmlldycsICdmb290ZXInXSwNCgkJCSdkcmFnZ2FibGUnOglbJ2hlYWRlcicsICdtYXAnLCAnYmFyJywgJ2hleCcsICdoc3YnLCAncmdiJywgJ2FscGhhJywgJ3ByZXZpZXcnLCAnZm9vdGVyJ10sDQoJCQknaW5saW5lJzoJCVsnbWFwJywgJ2JhcicsICdoZXgnLCAnaHN2JywgJ3JnYicsICdhbHBoYScsICdwcmV2aWV3J10NCgkJfSwNCg0KCQlfaW50VG9IZXggPSBmdW5jdGlvbiAoZGVjKSB7DQoJCQl2YXIgcmVzdWx0ID0gTWF0aC5yb3VuZChkZWMpLnRvU3RyaW5nKDE2KTsNCgkJCWlmIChyZXN1bHQubGVuZ3RoID09PSAxKSB7DQoJCQkJcmVzdWx0ID0gKCcwJyArIHJlc3VsdCk7DQoJCQl9DQoJCQlyZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCk7DQoJCX0sDQoNCgkJX2Zvcm1hdHMgPSB7DQoJCQknI0hFWCc6CQlmdW5jdGlvbihjb2xvcikgew0KCQkJCQkJCXJldHVybiBfZm9ybWF0Q29sb3IoJyNyeGd4YngnLCBjb2xvcik7DQoJCQkJCQl9DQoJCSwJJyNIRVgzJzoJZnVuY3Rpb24oY29sb3IpIHsNCgkJCQkJCQl2YXIgaGV4MyA9IF9mb3JtYXRzLkhFWDMoY29sb3IpOw0KCQkJCQkJCXJldHVybiBoZXgzID09PSBmYWxzZT8gZmFsc2UgOiAnIycraGV4MzsNCgkJCQkJCX0NCgkJLAknSEVYJzoJCWZ1bmN0aW9uKGNvbG9yKSB7DQoJCQkJCQkJcmV0dXJuIF9mb3JtYXRDb2xvcigncnhneGJ4JywgY29sb3IpOw0KCQkJCQkJfQ0KCQksCSdIRVgzJzoJCWZ1bmN0aW9uKGNvbG9yKSB7DQoJCQkJCQkJdmFyIHJnYiA9IGNvbG9yLmdldFJHQigpLA0KCQkJCQkJCQlyID0gTWF0aC5yb3VuZChyZ2IuciAqIDI1NSksDQoJCQkJCQkJCWcgPSBNYXRoLnJvdW5kKHJnYi5nICogMjU1KSwNCgkJCQkJCQkJYiA9IE1hdGgucm91bmQocmdiLmIgKiAyNTUpOw0KDQoJCQkJCQkJaWYgKCgociA+Pj4gNCkgPT0gKHIgJj0gMHhmKSkNCgkJCQkJCQkgJiYgKChnID4+PiA0KSA9PSAoZyAmPSAweGYpKQ0KCQkJCQkJCSAmJiAoKGIgPj4+IDQpID09IChiICY9IDB4ZikpKSB7DQoJCQkJCQkJCXJldHVybiByLnRvU3RyaW5nKDE2KStnLnRvU3RyaW5nKDE2KStiLnRvU3RyaW5nKDE2KTsNCgkJCQkJCQl9DQoJCQkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCQkJfQ0KCQksCSdSR0InOgkJZnVuY3Rpb24oY29sb3IpIHsNCgkJCQkJCQlyZXR1cm4gY29sb3IuZ2V0QWxwaGEoKSA+PSAxDQoJCQkJCQkJCQk/IF9mb3JtYXRDb2xvcigncmdiKHJkLGdkLGJkKScsIGNvbG9yKQ0KCQkJCQkJCQkJOiBmYWxzZTsNCgkJCQkJCX0NCgkJLAknUkdCQSc6CQlmdW5jdGlvbihjb2xvcikgew0KCQkJCQkJCXJldHVybiBfZm9ybWF0Q29sb3IoJ3JnYmEocmQsZ2QsYmQsYWYpJywgY29sb3IpOw0KCQkJCQkJfQ0KCQksCSdSR0IlJzoJZnVuY3Rpb24oY29sb3IpIHsNCgkJCQkJCQlyZXR1cm4gY29sb3IuZ2V0QWxwaGEoKSA+PSAxDQoJCQkJCQkJCQk/IF9mb3JtYXRDb2xvcigncmdiKHJwJSxncCUsYnAlKScsIGNvbG9yKQ0KCQkJCQkJCQkJOiBmYWxzZTsNCgkJCQkJCX0NCgkJLAknUkdCQSUnOglmdW5jdGlvbihjb2xvcikgew0KCQkJCQkJCXJldHVybiBfZm9ybWF0Q29sb3IoJ3JnYmEocnAlLGdwJSxicCUsYWYpJywgY29sb3IpOw0KCQkJCQkJfQ0KCQksCSdIU0wnOgkJZnVuY3Rpb24oY29sb3IpIHsNCgkJCQkJCQlyZXR1cm4gY29sb3IuZ2V0QWxwaGEoKSA+PSAxDQoJCQkJCQkJCQk/IF9mb3JtYXRDb2xvcignaHNsKGhkLHNkLHZkKScsIGNvbG9yKQ0KCQkJCQkJCQkJOiBmYWxzZTsNCgkJCQkJCX0NCgkJLAknSFNMQSc6CQlmdW5jdGlvbihjb2xvcikgew0KCQkJCQkJCXJldHVybiBfZm9ybWF0Q29sb3IoJ2hzbGEoaGQsc2QsdmQsYWYpJywgY29sb3IpOw0KCQkJCQkJfQ0KCQksCSdIU0wlJzoJZnVuY3Rpb24oY29sb3IpIHsNCgkJCQkJCQlyZXR1cm4gY29sb3IuZ2V0QWxwaGEoKSA+PSAxDQoJCQkJCQkJCQk/IF9mb3JtYXRDb2xvcignaHNsKGhwJSxzcCUsdnAlKScsIGNvbG9yKQ0KCQkJCQkJCQkJOiBmYWxzZTsNCgkJCQkJCX0NCgkJLAknSFNMQSUnOglmdW5jdGlvbihjb2xvcikgew0KCQkJCQkJCXJldHVybiBfZm9ybWF0Q29sb3IoJ2hzbGEoaHAlLHNwJSx2cCUsYWYpJywgY29sb3IpOw0KCQkJCQkJfQ0KCQksCSdOQU1FJzoJCWZ1bmN0aW9uKGNvbG9yKSB7DQoJCQkJCQkJcmV0dXJuIF9jbG9zZXN0TmFtZShjb2xvcik7DQoJCQkJCQl9DQoJCSwJJ0VYQUNUJzoJZnVuY3Rpb24oY29sb3IpIHsJCS8vQHRvZG8gZXhwZXJpbWVudGFsLiBJbXBsZW1lbnQgYSBnb29kIGZhbGxiYWNrIGxpc3QNCgkJCQkJCQlyZXR1cm4gX2V4YWN0TmFtZShjb2xvcik7DQoJCQkJCQl9DQoJCX0sDQoNCgkJX2Zvcm1hdENvbG9yID0gZnVuY3Rpb24gKGZvcm1hdHMsIGNvbG9yKSB7DQoJCQl2YXIgdGhhdAkJPSB0aGlzLA0KCQkJCXRleHQJCT0gbnVsbCwNCgkJCQl0eXBlcwkJPSB7CSd4JzoJZnVuY3Rpb24odikge3JldHVybiBfaW50VG9IZXgodiAqIDI1NSk7fQ0KCQkJCQkJCSwJJ2QnOglmdW5jdGlvbih2KSB7cmV0dXJuIE1hdGgucm91bmQodiAqIDI1NSk7fQ0KCQkJCQkJCSwJJ2YnOglmdW5jdGlvbih2KSB7cmV0dXJuIHY7fQ0KCQkJCQkJCSwJJ3AnOglmdW5jdGlvbih2KSB7cmV0dXJuIHYgKiAxMDA7fQ0KCQkJCQkJCX0sDQoJCQkJY2hhbm5lbHMJPSBjb2xvci5nZXRDaGFubmVscygpOw0KDQoJCQlpZiAoISQuaXNBcnJheShmb3JtYXRzKSkgew0KCQkJCWZvcm1hdHMgPSBbZm9ybWF0c107DQoJCQl9DQoNCgkJCSQuZWFjaChmb3JtYXRzLCBmdW5jdGlvbihpbmRleCwgZm9ybWF0KSB7DQoJCQkJaWYgKF9mb3JtYXRzW2Zvcm1hdF0pIHsNCgkJCQkJdGV4dCA9IF9mb3JtYXRzW2Zvcm1hdF0oY29sb3IpOw0KCQkJCQlyZXR1cm4gKHRleHQgPT09IGZhbHNlKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQl0ZXh0ID0gZm9ybWF0LnJlcGxhY2UoL1xcP1thcmdiaHN2Y215a0xBQl1beGRmcF0vZywgZnVuY3Rpb24obSkgew0KCQkJCQkJaWYgKG0ubWF0Y2goL15cXC8pKSB7DQoJCQkJCQkJcmV0dXJuIG0uc2xpY2UoMSk7DQoJCQkJCQl9DQoJCQkJCQlyZXR1cm4gdHlwZXNbbS5jaGFyQXQoMSldKGNoYW5uZWxzW20uY2hhckF0KDApXSk7DQoJCQkJCX0pOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfSk7DQoNCgkJCXJldHVybiB0ZXh0Ow0KCQl9LA0KDQoJCV9jb2xvcnMgPSB7DQoJCQknYmxhY2snOgkJCQl7cjogMCwgZzogMCwgYjogMH0sDQoJCQknZGltZ3JheSc6CQkJCXtyOiAwLjQxMTc2NDcwNTg4MjM1MjksIGc6IDAuNDExNzY0NzA1ODgyMzUyOSwgYjogMC40MTE3NjQ3MDU4ODIzNTI5fSwNCgkJCSdncmF5JzoJCQkJCXtyOiAwLjUwMTk2MDc4NDMxMzcyNTUsIGc6IDAuNTAxOTYwNzg0MzEzNzI1NSwgYjogMC41MDE5NjA3ODQzMTM3MjU1fSwNCgkJCSdkYXJrZ3JheSc6CQkJCXtyOiAwLjY2Mjc0NTA5ODAzOTIxNTcsIGc6IDAuNjYyNzQ1MDk4MDM5MjE1NywgYjogMC42NjI3NDUwOTgwMzkyMTU3fSwNCgkJCSdzaWx2ZXInOgkJCQl7cjogMC43NTI5NDExNzY0NzA1ODgyLCBnOiAwLjc1Mjk0MTE3NjQ3MDU4ODIsIGI6IDAuNzUyOTQxMTc2NDcwNTg4Mn0sDQoJCQknbGlnaHRncmV5JzoJCQl7cjogMC44Mjc0NTA5ODAzOTIxNTY4LCBnOiAwLjgyNzQ1MDk4MDM5MjE1NjgsIGI6IDAuODI3NDUwOTgwMzkyMTU2OH0sDQoJCQknZ2FpbnNib3JvJzoJCQl7cjogMC44NjI3NDUwOTgwMzkyMTU3LCBnOiAwLjg2Mjc0NTA5ODAzOTIxNTcsIGI6IDAuODYyNzQ1MDk4MDM5MjE1N30sDQoJCQknd2hpdGVzbW9rZSc6CQkJe3I6IDAuOTYwNzg0MzEzNzI1NDkwMiwgZzogMC45NjA3ODQzMTM3MjU0OTAyLCBiOiAwLjk2MDc4NDMxMzcyNTQ5MDJ9LA0KCQkJJ3doaXRlJzoJCQkJe3I6IDEsIGc6IDEsIGI6IDF9LA0KCQkJJ3Jvc3licm93bic6CQkJe3I6IDAuNzM3MjU0OTAxOTYwNzg0NCwgZzogMC41NjA3ODQzMTM3MjU0OTAyLCBiOiAwLjU2MDc4NDMxMzcyNTQ5MDJ9LA0KCQkJJ2luZGlhbnJlZCc6CQkJe3I6IDAuODAzOTIxNTY4NjI3NDUxLCBnOiAwLjM2MDc4NDMxMzcyNTQ5MDIsIGI6IDAuMzYwNzg0MzEzNzI1NDkwMn0sDQoJCQknYnJvd24nOgkJCQl7cjogMC42NDcwNTg4MjM1Mjk0MTE4LCBnOiAwLjE2NDcwNTg4MjM1Mjk0MTE3LCBiOiAwLjE2NDcwNTg4MjM1Mjk0MTE3fSwNCgkJCSdmaXJlYnJpY2snOgkJCXtyOiAwLjY5ODAzOTIxNTY4NjI3NDUsIGc6IDAuMTMzMzMzMzMzMzMzMzMzMzMsIGI6IDAuMTMzMzMzMzMzMzMzMzMzMzN9LA0KCQkJJ2xpZ2h0Y29yYWwnOgkJCXtyOiAwLjk0MTE3NjQ3MDU4ODIzNTMsIGc6IDAuNTAxOTYwNzg0MzEzNzI1NSwgYjogMC41MDE5NjA3ODQzMTM3MjU1fSwNCgkJCSdtYXJvb24nOgkJCQl7cjogMC41MDE5NjA3ODQzMTM3MjU1LCBnOiAwLCBiOiAwfSwNCgkJCSdkYXJrcmVkJzoJCQkJe3I6IDAuNTQ1MDk4MDM5MjE1Njg2MiwgZzogMCwgYjogMH0sDQoJCQkncmVkJzoJCQkJCXtyOiAxLCBnOiAwLCBiOiAwfSwNCgkJCSdzbm93JzoJCQkJCXtyOiAxLCBnOiAwLjk4MDM5MjE1Njg2Mjc0NTEsIGI6IDAuOTgwMzkyMTU2ODYyNzQ1MX0sDQoJCQknc2FsbW9uJzoJCQkJe3I6IDAuOTgwMzkyMTU2ODYyNzQ1MSwgZzogMC41MDE5NjA3ODQzMTM3MjU1LCBiOiAwLjQ0NzA1ODgyMzUyOTQxMTh9LA0KCQkJJ21pc3R5cm9zZSc6CQkJe3I6IDEsIGc6IDAuODk0MTE3NjQ3MDU4ODIzNiwgYjogMC44ODIzNTI5NDExNzY0NzA2fSwNCgkJCSd0b21hdG8nOgkJCQl7cjogMSwgZzogMC4zODgyMzUyOTQxMTc2NDcwNywgYjogMC4yNzg0MzEzNzI1NDkwMTk2fSwNCgkJCSdkYXJrc2FsbW9uJzoJCQl7cjogMC45MTM3MjU0OTAxOTYwNzg0LCBnOiAwLjU4ODIzNTI5NDExNzY0NzEsIGI6IDAuNDc4NDMxMzcyNTQ5MDE5NjN9LA0KCQkJJ29yYW5nZXJlZCc6CQkJe3I6IDEsIGc6IDAuMjcwNTg4MjM1Mjk0MTE3NjMsIGI6IDB9LA0KCQkJJ2NvcmFsJzoJCQkJe3I6IDEsIGc6IDAuNDk4MDM5MjE1Njg2Mjc0NSwgYjogMC4zMTM3MjU0OTAxOTYwNzg0fSwNCgkJCSdsaWdodHNhbG1vbic6CQkJe3I6IDEsIGc6IDAuNjI3NDUwOTgwMzkyMTU2OSwgYjogMC40Nzg0MzEzNzI1NDkwMTk2M30sDQoJCQknc2llbm5hJzoJCQkJe3I6IDAuNjI3NDUwOTgwMzkyMTU2OSwgZzogMC4zMjE1Njg2Mjc0NTA5ODA0LCBiOiAwLjE3NjQ3MDU4ODIzNTI5NDEzfSwNCgkJCSdzZWFzaGVsbCc6CQkJCXtyOiAxLCBnOiAwLjk2MDc4NDMxMzcyNTQ5MDIsIGI6IDAuOTMzMzMzMzMzMzMzMzMzM30sDQoJCQknY2hvY29sYXRlJzoJCQl7cjogMC44MjM1Mjk0MTE3NjQ3MDU4LCBnOiAwLjQxMTc2NDcwNTg4MjM1MjksIGI6IDAuMTE3NjQ3MDU4ODIzNTI5NDF9LA0KCQkJJ3NhZGRsZWJyb3duJzoJCQl7cjogMC41NDUwOTgwMzkyMTU2ODYyLCBnOiAwLjI3MDU4ODIzNTI5NDExNzYzLCBiOiAwLjA3NDUwOTgwMzkyMTU2ODYzfSwNCgkJCSdzYW5keWJyb3duJzoJCQl7cjogMC45NTY4NjI3NDUwOTgwMzkzLCBnOiAwLjY0MzEzNzI1NDkwMTk2MDgsIGI6IDAuMzc2NDcwNTg4MjM1Mjk0MX0sDQoJCQkncGVhY2hwdWZmJzoJCQl7cjogMSwgZzogMC44NTQ5MDE5NjA3ODQzMTM3LCBiOiAwLjcyNTQ5MDE5NjA3ODQzMTN9LA0KCQkJJ3BlcnUnOgkJCQkJe3I6IDAuODAzOTIxNTY4NjI3NDUxLCBnOiAwLjUyMTU2ODYyNzQ1MDk4MDQsIGI6IDAuMjQ3MDU4ODIzNTI5NDExNzh9LA0KCQkJJ2xpbmVuJzoJCQkJe3I6IDAuOTgwMzkyMTU2ODYyNzQ1MSwgZzogMC45NDExNzY0NzA1ODgyMzUzLCBiOiAwLjkwMTk2MDc4NDMxMzcyNTV9LA0KCQkJJ2RhcmtvcmFuZ2UnOgkJCXtyOiAxLCBnOiAwLjU0OTAxOTYwNzg0MzEzNzMsIGI6IDB9LA0KCQkJJ2Jpc3F1ZSc6CQkJCXtyOiAxLCBnOiAwLjg5NDExNzY0NzA1ODgyMzYsIGI6IDAuNzY4NjI3NDUwOTgwMzkyMn0sDQoJCQknYnVybHl3b29kJzoJCQl7cjogMC44NzA1ODgyMzUyOTQxMTc3LCBnOiAwLjcyMTU2ODYyNzQ1MDk4MDQsIGI6IDAuNTI5NDExNzY0NzA1ODgyNH0sDQoJCQkndGFuJzoJCQkJCXtyOiAwLjgyMzUyOTQxMTc2NDcwNTgsIGc6IDAuNzA1ODgyMzUyOTQxMTc2NSwgYjogMC41NDkwMTk2MDc4NDMxMzczfSwNCgkJCSdhbnRpcXVld2hpdGUnOgkJCXtyOiAwLjk4MDM5MjE1Njg2Mjc0NTEsIGc6IDAuOTIxNTY4NjI3NDUwOTgwMywgYjogMC44NDMxMzcyNTQ5MDE5NjA4fSwNCgkJCSduYXZham93aGl0ZSc6CQkJe3I6IDEsIGc6IDAuODcwNTg4MjM1Mjk0MTE3NywgYjogMC42Nzg0MzEzNzI1NDkwMTk2fSwNCgkJCSdibGFuY2hlZGFsbW9uZCc6CQl7cjogMSwgZzogMC45MjE1Njg2Mjc0NTA5ODAzLCBiOiAwLjgwMzkyMTU2ODYyNzQ1MX0sDQoJCQkncGFwYXlhd2hpcCc6CQkJe3I6IDEsIGc6IDAuOTM3MjU0OTAxOTYwNzg0MywgYjogMC44MzUyOTQxMTc2NDcwNTg5fSwNCgkJCSdvcmFuZ2UnOgkJCQl7cjogMSwgZzogMC42NDcwNTg4MjM1Mjk0MTE4LCBiOiAwfSwNCgkJCSdtb2NjYXNpbic6CQkJCXtyOiAxLCBnOiAwLjg5NDExNzY0NzA1ODgyMzYsIGI6IDAuNzA5ODAzOTIxNTY4NjI3NX0sDQoJCQknd2hlYXQnOgkJCQl7cjogMC45NjA3ODQzMTM3MjU0OTAyLCBnOiAwLjg3MDU4ODIzNTI5NDExNzcsIGI6IDAuNzAxOTYwNzg0MzEzNzI1NH0sDQoJCQknb2xkbGFjZSc6CQkJCXtyOiAwLjk5MjE1Njg2Mjc0NTA5ODEsIGc6IDAuOTYwNzg0MzEzNzI1NDkwMiwgYjogMC45MDE5NjA3ODQzMTM3MjU1fSwNCgkJCSdmbG9yYWx3aGl0ZSc6CQkJe3I6IDEsIGc6IDAuOTgwMzkyMTU2ODYyNzQ1MSwgYjogMC45NDExNzY0NzA1ODgyMzUzfSwNCgkJCSdnb2xkZW5yb2QnOgkJCXtyOiAwLjg1NDkwMTk2MDc4NDMxMzcsIGc6IDAuNjQ3MDU4ODIzNTI5NDExOCwgYjogMC4xMjU0OTAxOTYwNzg0MzEzN30sDQoJCQknZGFya2dvbGRlbnJvZCc6CQl7cjogMC43MjE1Njg2Mjc0NTA5ODA0LCBnOiAwLjUyNTQ5MDE5NjA3ODQzMTQsIGI6IDAuMDQzMTM3MjU0OTAxOTYwNzg0fSwNCgkJCSdjb3Juc2lsayc6CQkJCXtyOiAxLCBnOiAwLjk3MjU0OTAxOTYwNzg0MzEsIGI6IDAuODYyNzQ1MDk4MDM5MjE1N30sDQoJCQknZ29sZCc6CQkJCQl7cjogMSwgZzogMC44NDMxMzcyNTQ5MDE5NjA4LCBiOiAwfSwNCgkJCSdwYWxlZ29sZGVucm9kJzoJCXtyOiAwLjkzMzMzMzMzMzMzMzMzMzMsIGc6IDAuOTA5ODAzOTIxNTY4NjI3NCwgYjogMC42NjY2NjY2NjY2NjY2NjY2fSwNCgkJCSdraGFraSc6CQkJCXtyOiAwLjk0MTE3NjQ3MDU4ODIzNTMsIGc6IDAuOTAxOTYwNzg0MzEzNzI1NSwgYjogMC41NDkwMTk2MDc4NDMxMzczfSwNCgkJCSdsZW1vbmNoaWZmb24nOgkJCXtyOiAxLCBnOiAwLjk4MDM5MjE1Njg2Mjc0NTEsIGI6IDAuODAzOTIxNTY4NjI3NDUxfSwNCgkJCSdkYXJra2hha2knOgkJCXtyOiAwLjc0MTE3NjQ3MDU4ODIzNTMsIGc6IDAuNzE3NjQ3MDU4ODIzNTI5NCwgYjogMC40MTk2MDc4NDMxMzcyNTQ5fSwNCgkJCSdiZWlnZSc6CQkJCXtyOiAwLjk2MDc4NDMxMzcyNTQ5MDIsIGc6IDAuOTYwNzg0MzEzNzI1NDkwMiwgYjogMC44NjI3NDUwOTgwMzkyMTU3fSwNCgkJCSdsaWdodGdvbGRlbnJvZHllbGxvdyc6CXtyOiAwLjk4MDM5MjE1Njg2Mjc0NTEsIGc6IDAuOTgwMzkyMTU2ODYyNzQ1MSwgYjogMC44MjM1Mjk0MTE3NjQ3MDU4fSwNCgkJCSdvbGl2ZSc6CQkJCXtyOiAwLjUwMTk2MDc4NDMxMzcyNTUsIGc6IDAuNTAxOTYwNzg0MzEzNzI1NSwgYjogMH0sDQoJCQkneWVsbG93JzoJCQkJe3I6IDEsIGc6IDEsIGI6IDB9LA0KCQkJJ2xpZ2h0eWVsbG93JzoJCQl7cjogMSwgZzogMSwgYjogMC44Nzg0MzEzNzI1NDkwMTk2fSwNCgkJCSdpdm9yeSc6CQkJCXtyOiAxLCBnOiAxLCBiOiAwLjk0MTE3NjQ3MDU4ODIzNTN9LA0KCQkJJ29saXZlZHJhYic6CQkJe3I6IDAuNDE5NjA3ODQzMTM3MjU0OSwgZzogMC41NTY4NjI3NDUwOTgwMzkyLCBiOiAwLjEzNzI1NDkwMTk2MDc4NDMzfSwNCgkJCSd5ZWxsb3dncmVlbic6CQkJe3I6IDAuNjAzOTIxNTY4NjI3NDUwOSwgZzogMC44MDM5MjE1Njg2Mjc0NTEsIGI6IDAuMTk2MDc4NDMxMzcyNTQ5MDJ9LA0KCQkJJ2RhcmtvbGl2ZWdyZWVuJzoJCXtyOiAwLjMzMzMzMzMzMzMzMzMzMzMsIGc6IDAuNDE5NjA3ODQzMTM3MjU0OSwgYjogMC4xODQzMTM3MjU0OTAxOTYxfSwNCgkJCSdncmVlbnllbGxvdyc6CQkJe3I6IDAuNjc4NDMxMzcyNTQ5MDE5NiwgZzogMSwgYjogMC4xODQzMTM3MjU0OTAxOTYxfSwNCgkJCSdsYXduZ3JlZW4nOgkJCXtyOiAwLjQ4NjI3NDUwOTgwMzkyMTU2LCBnOiAwLjk4ODIzNTI5NDExNzY0NzEsIGI6IDB9LA0KCQkJJ2NoYXJ0cmV1c2UnOgkJCXtyOiAwLjQ5ODAzOTIxNTY4NjI3NDUsIGc6IDEsIGI6IDB9LA0KCQkJJ2RhcmtzZWFncmVlbic6CQkJe3I6IDAuNTYwNzg0MzEzNzI1NDkwMiwgZzogMC43MzcyNTQ5MDE5NjA3ODQ0LCBiOiAwLjU2MDc4NDMxMzcyNTQ5MDJ9LA0KCQkJJ2ZvcmVzdGdyZWVuJzoJCQl7cjogMC4xMzMzMzMzMzMzMzMzMzMzMywgZzogMC41NDUwOTgwMzkyMTU2ODYyLCBiOiAwLjEzMzMzMzMzMzMzMzMzMzMzfSwNCgkJCSdsaW1lZ3JlZW4nOgkJCXtyOiAwLjE5NjA3ODQzMTM3MjU0OTAyLCBnOiAwLjgwMzkyMTU2ODYyNzQ1MSwgYjogMC4xOTYwNzg0MzEzNzI1NDkwMn0sDQoJCQknbGlnaHRncmVlbic6CQkJe3I6IDAuNTY0NzA1ODgyMzUyOTQxMiwgZzogMC45MzMzMzMzMzMzMzMzMzMzLCBiOiAwLjU2NDcwNTg4MjM1Mjk0MTJ9LA0KCQkJJ3BhbGVncmVlbic6CQkJe3I6IDAuNTk2MDc4NDMxMzcyNTQ5LCBnOiAwLjk4NDMxMzcyNTQ5MDE5NiwgYjogMC41OTYwNzg0MzEzNzI1NDl9LA0KCQkJJ2RhcmtncmVlbic6CQkJe3I6IDAsIGc6IDAuMzkyMTU2ODYyNzQ1MDk4MDMsIGI6IDB9LA0KCQkJJ2dyZWVuJzoJCQkJe3I6IDAsIGc6IDAuNTAxOTYwNzg0MzEzNzI1NSwgYjogMH0sDQoJCQknbGltZSc6CQkJCQl7cjogMCwgZzogMSwgYjogMH0sDQoJCQknaG9uZXlkZXcnOgkJCQl7cjogMC45NDExNzY0NzA1ODgyMzUzLCBnOiAxLCBiOiAwLjk0MTE3NjQ3MDU4ODIzNTN9LA0KCQkJJ21lZGl1bXNlYWdyZWVuJzoJCXtyOiAwLjIzNTI5NDExNzY0NzA1ODgyLCBnOiAwLjcwMTk2MDc4NDMxMzcyNTQsIGI6IDAuNDQzMTM3MjU0OTAxOTYwNzZ9LA0KCQkJJ3NlYWdyZWVuJzoJCQkJe3I6IDAuMTgwMzkyMTU2ODYyNzQ1MSwgZzogMC41NDUwOTgwMzkyMTU2ODYyLCBiOiAwLjM0MTE3NjQ3MDU4ODIzNTN9LA0KCQkJJ3NwcmluZ2dyZWVuJzoJCQl7cjogMCwgZzogMSwgYjogMC40OTgwMzkyMTU2ODYyNzQ1fSwNCgkJCSdtaW50Y3JlYW0nOgkJCXtyOiAwLjk2MDc4NDMxMzcyNTQ5MDIsIGc6IDEsIGI6IDAuOTgwMzkyMTU2ODYyNzQ1MX0sDQoJCQknbWVkaXVtc3ByaW5nZ3JlZW4nOgl7cjogMCwgZzogMC45ODAzOTIxNTY4NjI3NDUxLCBiOiAwLjYwMzkyMTU2ODYyNzQ1MDl9LA0KCQkJJ21lZGl1bWFxdWFtYXJpbmUnOgkJe3I6IDAuNCwgZzogMC44MDM5MjE1Njg2Mjc0NTEsIGI6IDAuNjY2NjY2NjY2NjY2NjY2Nn0sDQoJCQknYXF1YW1hcmluZSc6CQkJe3I6IDAuNDk4MDM5MjE1Njg2Mjc0NSwgZzogMSwgYjogMC44MzEzNzI1NDkwMTk2MDc5fSwNCgkJCSd0dXJxdW9pc2UnOgkJCXtyOiAwLjI1MDk4MDM5MjE1Njg2Mjc0LCBnOiAwLjg3ODQzMTM3MjU0OTAxOTYsIGI6IDAuODE1Njg2Mjc0NTA5ODAzOX0sDQoJCQknbGlnaHRzZWFncmVlbic6CQl7cjogMC4xMjU0OTAxOTYwNzg0MzEzNywgZzogMC42OTgwMzkyMTU2ODYyNzQ1LCBiOiAwLjY2NjY2NjY2NjY2NjY2NjZ9LA0KCQkJJ21lZGl1bXR1cnF1b2lzZSc6CQl7cjogMC4yODIzNTI5NDExNzY0NzA2LCBnOiAwLjgxOTYwNzg0MzEzNzI1NDksIGI6IDAuOH0sDQoJCQknZGFya3NsYXRlZ3JheSc6CQl7cjogMC4xODQzMTM3MjU0OTAxOTYxLCBnOiAwLjMwOTgwMzkyMTU2ODYyNzQ2LCBiOiAwLjMwOTgwMzkyMTU2ODYyNzQ2fSwNCgkJCSdwYWxldHVycXVvaXNlJzoJCXtyOiAwLjY4NjI3NDUwOTgwMzkyMTYsIGc6IDAuOTMzMzMzMzMzMzMzMzMzMywgYjogMC45MzMzMzMzMzMzMzMzMzMzfSwNCgkJCSd0ZWFsJzoJCQkJCXtyOiAwLCBnOiAwLjUwMTk2MDc4NDMxMzcyNTUsIGI6IDAuNTAxOTYwNzg0MzEzNzI1NX0sDQoJCQknZGFya2N5YW4nOgkJCQl7cjogMCwgZzogMC41NDUwOTgwMzkyMTU2ODYyLCBiOiAwLjU0NTA5ODAzOTIxNTY4NjJ9LA0KCQkJJ2Rhcmt0dXJxdW9pc2UnOgkJe3I6IDAsIGc6IDAuODA3ODQzMTM3MjU0OTAyLCBiOiAwLjgxOTYwNzg0MzEzNzI1NDl9LA0KCQkJJ2FxdWEnOgkJCQkJe3I6IDAsIGc6IDEsIGI6IDF9LA0KCQkJJ2N5YW4nOgkJCQkJe3I6IDAsIGc6IDEsIGI6IDF9LA0KCQkJJ2xpZ2h0Y3lhbic6CQkJe3I6IDAuODc4NDMxMzcyNTQ5MDE5NiwgZzogMSwgYjogMX0sDQoJCQknYXp1cmUnOgkJCQl7cjogMC45NDExNzY0NzA1ODgyMzUzLCBnOiAxLCBiOiAxfSwNCgkJCSdjYWRldGJsdWUnOgkJCXtyOiAwLjM3MjU0OTAxOTYwNzg0MzE1LCBnOiAwLjYxOTYwNzg0MzEzNzI1NDksIGI6IDAuNjI3NDUwOTgwMzkyMTU2OX0sDQoJCQkncG93ZGVyYmx1ZSc6CQkJe3I6IDAuNjkwMTk2MDc4NDMxMzcyNSwgZzogMC44Nzg0MzEzNzI1NDkwMTk2LCBiOiAwLjkwMTk2MDc4NDMxMzcyNTV9LA0KCQkJJ2xpZ2h0Ymx1ZSc6CQkJe3I6IDAuNjc4NDMxMzcyNTQ5MDE5NiwgZzogMC44NDcwNTg4MjM1Mjk0MTE4LCBiOiAwLjkwMTk2MDc4NDMxMzcyNTV9LA0KCQkJJ2RlZXBza3libHVlJzoJCQl7cjogMCwgZzogMC43NDkwMTk2MDc4NDMxMzczLCBiOiAxfSwNCgkJCSdza3libHVlJzoJCQkJe3I6IDAuNTI5NDExNzY0NzA1ODgyNCwgZzogMC44MDc4NDMxMzcyNTQ5MDIsIGI6IDAuOTIxNTY4NjI3NDUwOTgwM30sDQoJCQknbGlnaHRza3libHVlJzoJCQl7cjogMC41Mjk0MTE3NjQ3MDU4ODI0LCBnOiAwLjgwNzg0MzEzNzI1NDkwMiwgYjogMC45ODAzOTIxNTY4NjI3NDUxfSwNCgkJCSdzdGVlbGJsdWUnOgkJCXtyOiAwLjI3NDUwOTgwMzkyMTU2ODY1LCBnOiAwLjUwOTgwMzkyMTU2ODYyNzQsIGI6IDAuNzA1ODgyMzUyOTQxMTc2NX0sDQoJCQknYWxpY2VibHVlJzoJCQl7cjogMC45NDExNzY0NzA1ODgyMzUzLCBnOiAwLjk3MjU0OTAxOTYwNzg0MzEsIGI6IDF9LA0KCQkJJ2RvZGdlcmJsdWUnOgkJCXtyOiAwLjExNzY0NzA1ODgyMzUyOTQxLCBnOiAwLjU2NDcwNTg4MjM1Mjk0MTIsIGI6IDF9LA0KCQkJJ3NsYXRlZ3JheSc6CQkJe3I6IDAuNDM5MjE1Njg2Mjc0NTA5OCwgZzogMC41MDE5NjA3ODQzMTM3MjU1LCBiOiAwLjU2NDcwNTg4MjM1Mjk0MTJ9LA0KCQkJJ2xpZ2h0c2xhdGVncmF5JzoJCXtyOiAwLjQ2NjY2NjY2NjY2NjY2NjcsIGc6IDAuNTMzMzMzMzMzMzMzMzMzMywgYjogMC42fSwNCgkJCSdsaWdodHN0ZWVsYmx1ZSc6CQl7cjogMC42OTAxOTYwNzg0MzEzNzI1LCBnOiAwLjc2ODYyNzQ1MDk4MDM5MjIsIGI6IDAuODcwNTg4MjM1Mjk0MTE3N30sDQoJCQknY29ybmZsb3dlcmJsdWUnOgkJe3I6IDAuMzkyMTU2ODYyNzQ1MDk4MDMsIGc6IDAuNTg0MzEzNzI1NDkwMTk2MSwgYjogMC45Mjk0MTE3NjQ3MDU4ODI0fSwNCgkJCSdyb3lhbGJsdWUnOgkJCXtyOiAwLjI1NDkwMTk2MDc4NDMxMzcsIGc6IDAuNDExNzY0NzA1ODgyMzUyOSwgYjogMC44ODIzNTI5NDExNzY0NzA2fSwNCgkJCSdtaWRuaWdodGJsdWUnOgkJCXtyOiAwLjA5ODAzOTIxNTY4NjI3NDUxLCBnOiAwLjA5ODAzOTIxNTY4NjI3NDUxLCBiOiAwLjQzOTIxNTY4NjI3NDUwOTh9LA0KCQkJJ2xhdmVuZGVyJzoJCQkJe3I6IDAuOTAxOTYwNzg0MzEzNzI1NSwgZzogMC45MDE5NjA3ODQzMTM3MjU1LCBiOiAwLjk4MDM5MjE1Njg2Mjc0NTF9LA0KCQkJJ25hdnknOgkJCQkJe3I6IDAsIGc6IDAsIGI6IDAuNTAxOTYwNzg0MzEzNzI1NX0sDQoJCQknZGFya2JsdWUnOgkJCQl7cjogMCwgZzogMCwgYjogMC41NDUwOTgwMzkyMTU2ODYyfSwNCgkJCSdtZWRpdW1ibHVlJzoJCQl7cjogMCwgZzogMCwgYjogMC44MDM5MjE1Njg2Mjc0NTF9LA0KCQkJJ2JsdWUnOgkJCQkJe3I6IDAsIGc6IDAsIGI6IDF9LA0KCQkJJ2dob3N0d2hpdGUnOgkJCXtyOiAwLjk3MjU0OTAxOTYwNzg0MzEsIGc6IDAuOTcyNTQ5MDE5NjA3ODQzMSwgYjogMX0sDQoJCQknZGFya3NsYXRlYmx1ZSc6CQl7cjogMC4yODIzNTI5NDExNzY0NzA2LCBnOiAwLjIzOTIxNTY4NjI3NDUwOTgxLCBiOiAwLjU0NTA5ODAzOTIxNTY4NjJ9LA0KCQkJJ3NsYXRlYmx1ZSc6CQkJe3I6IDAuNDE1Njg2Mjc0NTA5ODAzOTQsIGc6IDAuMzUyOTQxMTc2NDcwNTg4MjYsIGI6IDAuODAzOTIxNTY4NjI3NDUxfSwNCgkJCSdtZWRpdW1zbGF0ZWJsdWUnOgkJe3I6IDAuNDgyMzUyOTQxMTc2NDcwNiwgZzogMC40MDc4NDMxMzcyNTQ5MDE5NiwgYjogMC45MzMzMzMzMzMzMzMzMzMzfSwNCgkJCSdtZWRpdW1wdXJwbGUnOgkJCXtyOiAwLjU3NjQ3MDU4ODIzNTI5NDEsIGc6IDAuNDM5MjE1Njg2Mjc0NTA5OCwgYjogMC44NTg4MjM1Mjk0MTE3NjQ3fSwNCgkJCSdibHVldmlvbGV0JzoJCQl7cjogMC41NDExNzY0NzA1ODgyMzUzLCBnOiAwLjE2ODYyNzQ1MDk4MDM5MjE3LCBiOiAwLjg4NjI3NDUwOTgwMzkyMTV9LA0KCQkJJ2luZGlnbyc6CQkJCXtyOiAwLjI5NDExNzY0NzA1ODgyMzU0LCBnOiAwLCBiOiAwLjUwOTgwMzkyMTU2ODYyNzR9LA0KCQkJJ2RhcmtvcmNoaWQnOgkJCXtyOiAwLjYsIGc6IDAuMTk2MDc4NDMxMzcyNTQ5MDIsIGI6IDAuOH0sDQoJCQknZGFya3Zpb2xldCc6CQkJe3I6IDAuNTgwMzkyMTU2ODYyNzQ1MSwgZzogMCwgYjogMC44Mjc0NTA5ODAzOTIxNTY4fSwNCgkJCSdtZWRpdW1vcmNoaWQnOgkJCXtyOiAwLjcyOTQxMTc2NDcwNTg4MjMsIGc6IDAuMzMzMzMzMzMzMzMzMzMzMywgYjogMC44Mjc0NTA5ODAzOTIxNTY4fSwNCgkJCSd0aGlzdGxlJzoJCQkJe3I6IDAuODQ3MDU4ODIzNTI5NDExOCwgZzogMC43NDkwMTk2MDc4NDMxMzczLCBiOiAwLjg0NzA1ODgyMzUyOTQxMTh9LA0KCQkJJ3BsdW0nOgkJCQkJe3I6IDAuODY2NjY2NjY2NjY2NjY2NywgZzogMC42Mjc0NTA5ODAzOTIxNTY5LCBiOiAwLjg2NjY2NjY2NjY2NjY2Njd9LA0KCQkJJ3Zpb2xldCc6CQkJCXtyOiAwLjkzMzMzMzMzMzMzMzMzMzMsIGc6IDAuNTA5ODAzOTIxNTY4NjI3NCwgYjogMC45MzMzMzMzMzMzMzMzMzMzfSwNCgkJCSdwdXJwbGUnOgkJCQl7cjogMC41MDE5NjA3ODQzMTM3MjU1LCBnOiAwLCBiOiAwLjUwMTk2MDc4NDMxMzcyNTV9LA0KCQkJJ2RhcmttYWdlbnRhJzoJCQl7cjogMC41NDUwOTgwMzkyMTU2ODYyLCBnOiAwLCBiOiAwLjU0NTA5ODAzOTIxNTY4NjJ9LA0KCQkJJ21hZ2VudGEnOgkJCQl7cjogMSwgZzogMCwgYjogMX0sDQoJCQknZnVjaHNpYSc6CQkJCXtyOiAxLCBnOiAwLCBiOiAxfSwNCgkJCSdvcmNoaWQnOgkJCQl7cjogMC44NTQ5MDE5NjA3ODQzMTM3LCBnOiAwLjQzOTIxNTY4NjI3NDUwOTgsIGI6IDAuODM5MjE1Njg2Mjc0NTA5OH0sDQoJCQknbWVkaXVtdmlvbGV0cmVkJzoJCXtyOiAwLjc4MDM5MjE1Njg2Mjc0NTEsIGc6IDAuMDgyMzUyOTQxMTc2NDcwNTksIGI6IDAuNTIxNTY4NjI3NDUwOTgwNH0sDQoJCQknZGVlcHBpbmsnOgkJCQl7cjogMSwgZzogMC4wNzg0MzEzNzI1NDkwMTk2LCBiOiAwLjU3NjQ3MDU4ODIzNTI5NDF9LA0KCQkJJ2hvdHBpbmsnOgkJCQl7cjogMSwgZzogMC40MTE3NjQ3MDU4ODIzNTI5LCBiOiAwLjcwNTg4MjM1Mjk0MTE3NjV9LA0KCQkJJ3BhbGV2aW9sZXRyZWQnOgkJe3I6IDAuODU4ODIzNTI5NDExNzY0NywgZzogMC40MzkyMTU2ODYyNzQ1MDk4LCBiOiAwLjU3NjQ3MDU4ODIzNTI5NDF9LA0KCQkJJ2xhdmVuZGVyYmx1c2gnOgkJe3I6IDEsIGc6IDAuOTQxMTc2NDcwNTg4MjM1MywgYjogMC45NjA3ODQzMTM3MjU0OTAyfSwNCgkJCSdjcmltc29uJzoJCQkJe3I6IDAuODYyNzQ1MDk4MDM5MjE1NywgZzogMC4wNzg0MzEzNzI1NDkwMTk2LCBiOiAwLjIzNTI5NDExNzY0NzA1ODgyfSwNCgkJCSdwaW5rJzoJCQkJCXtyOiAxLCBnOiAwLjc1Mjk0MTE3NjQ3MDU4ODIsIGI6IDAuNzk2MDc4NDMxMzcyNTQ5fSwNCgkJCSdsaWdodHBpbmsnOgkJCXtyOiAxLCBnOiAwLjcxMzcyNTQ5MDE5NjA3ODQsIGI6IDAuNzU2ODYyNzQ1MDk4MDM5Mn0NCgkJfSwNCg0KCQlfZXhhY3ROYW1lID0gZnVuY3Rpb24oY29sb3IpIHsNCgkJCXZhciBuYW1lCT0gZmFsc2U7DQoNCgkJCSQuZWFjaChfY29sb3JzLCBmdW5jdGlvbihuLCBjb2xvcl9iKSB7DQoJCQkJaWYgKGNvbG9yLmVxdWFscyhuZXcgQ29sb3IoY29sb3JfYi5yLCBjb2xvcl9iLmcsIGNvbG9yX2IuYikpKSB7DQoJCQkJCW5hbWUgPSBuOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfSk7DQoNCgkJCXJldHVybiBuYW1lOw0KCQl9LA0KDQoJCV9jbG9zZXN0TmFtZSA9IGZ1bmN0aW9uKGNvbG9yKSB7DQoJCQl2YXIgcmdiCQkJPSBjb2xvci5nZXRSR0IoKSwNCgkJCQlkaXN0YW5jZQk9IG51bGwsDQoJCQkJbmFtZQkJPSBmYWxzZSwNCgkJCQlkOw0KDQoJCQkkLmVhY2goX2NvbG9ycywgZnVuY3Rpb24obiwgY29sb3JfYikgew0KCQkJCWQgPSBjb2xvci5kaXN0YW5jZShuZXcgQ29sb3IoY29sb3JfYi5yLCBjb2xvcl9iLmcsIGNvbG9yX2IuYikpOw0KCQkJCWlmIChkIDwgZGlzdGFuY2UgfHwgZGlzdGFuY2UgPT09IG51bGwpIHsNCgkJCQkJbmFtZSA9IG47DQoJCQkJCWlmIChkID09IDApIHsNCgkJCQkJCXJldHVybiBmYWxzZTsJLy8gY2FuJ3QgZ2V0IG11Y2ggY2xvc2VyIHRoYW4gMA0KCQkJCQl9DQoJCQkJCWRpc3RhbmNlID0gZDsNCgkJCQl9DQoJCQl9KTsNCg0KCQkJcmV0dXJuIG5hbWU7DQoJCX0sDQoNCiAgICAgICAgX3BhcnNlSGV4ID0gZnVuY3Rpb24oY29sb3IpIHsNCiAgICAgICAgICAgIHZhciBjLA0KICAgICAgICAgICAgICAgIG07DQoNCiAgICAgICAgICAgIC8vIHsjfXJyZ2diYg0KICAgICAgICAgICAgbSA9IC9eIz8oW2EtZkEtRjAtOV17MSw2fSkkLy5leGVjKGNvbG9yKTsNCiAgICAgICAgICAgIGlmIChtKSB7DQogICAgICAgICAgICAgICAgYyA9IHBhcnNlSW50KG1bMV0sIDE2KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yKA0KCQkJCQkoKGMgPj4gMTYpICYgMHhGRikgLyAyNTUsDQogICAgICAgICAgICAgICAgICAgICgoYyA+PiAgOCkgJiAweEZGKSAvIDI1NSwNCiAgICAgICAgICAgICAgICAgICAgKGMgJiAweEZGKSAvIDI1NQ0KCQkJCSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfcGFyc2VDb2xvciA9IGZ1bmN0aW9uKGNvbG9yKSB7DQogICAgICAgICAgICB2YXIgbmFtZSA9ICQudHJpbShjb2xvcikudG9Mb3dlckNhc2UoKSwNCiAgICAgICAgICAgICAgICBtOw0KDQogICAgICAgICAgICBpZiAoY29sb3IgPT0gJycpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChfY29sb3JzW25hbWVdKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcihfY29sb3JzW25hbWVdLnIsIF9jb2xvcnNbbmFtZV0uZywgX2NvbG9yc1tuYW1lXS5iKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gcmdiYShyLGcsYixhKQ0KICAgICAgICAgICAgbSA9IC9ecmdiYT9cKFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqKD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkkLy5leGVjKGNvbG9yKTsNCiAgICAgICAgICAgIGlmIChtKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcigNCiAgICAgICAgICAgICAgICAgICAgbVsxXSAvIDI1NSwNCiAgICAgICAgICAgICAgICAgICAgbVsyXSAvIDI1NSwNCiAgICAgICAgICAgICAgICAgICAgbVszXSAvIDI1NSwNCiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChtWzRdKQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGhzbGEocixnLGIsYSkNCiAgICAgICAgICAgIG0gPSAvXmhzbGE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKig/OixccyooXGQrKD86XC5cZCspPylccyopP1wpJC8uZXhlYyhjb2xvcik7DQogICAgICAgICAgICBpZiAobSkgew0KCQkJCXJldHVybiAobmV3IENvbG9yKCkpLnNldEhTTCgNCgkJCQkJbVsxXSAvIDI1NSwNCgkJCQkJbVsyXSAvIDI1NSwNCgkJCQkJbVszXSAvIDI1NSkuc2V0QWxwaGEocGFyc2VGbG9hdChtWzRdKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIHJnYmEociUsZyUsYiUsYSUpDQogICAgICAgICAgICBtID0gL15yZ2JhP1woXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKSQvLmV4ZWMoY29sb3IpOw0KICAgICAgICAgICAgaWYgKG0pIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yKA0KICAgICAgICAgICAgICAgICAgICBtWzFdIC8gMTAwLA0KICAgICAgICAgICAgICAgICAgICBtWzJdIC8gMTAwLA0KICAgICAgICAgICAgICAgICAgICBtWzNdIC8gMTAwLA0KICAgICAgICAgICAgICAgICAgICBtWzRdIC8gMTAwDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gaHNsYShyJSxnJSxiJSxhJSkNCiAgICAgICAgICAgIG0gPSAvXmhzbGE/XChccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQrKD86XC5cZCspPylccyopP1wpJC8uZXhlYyhjb2xvcik7DQogICAgICAgICAgICBpZiAobSkgew0KCQkJCXJldHVybiAobmV3IENvbG9yKCkpLnNldEhTTCgNCgkJCQkJbVsxXSAvIDEwMCwNCgkJCQkJbVsyXSAvIDEwMCwNCgkJCQkJbVszXSAvIDEwMCkuc2V0QWxwaGEobVs0XSAvIDEwMCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vICNycmdnYmINCiAgICAgICAgICAgIG0gPSAvXiMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkkLy5leGVjKGNvbG9yKTsNCiAgICAgICAgICAgIGlmIChtKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcigNCiAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQobVsxXSwgMTYpIC8gMjU1LA0KICAgICAgICAgICAgICAgICAgICBwYXJzZUludChtWzJdLCAxNikgLyAyNTUsDQogICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KG1bM10sIDE2KSAvIDI1NQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vICNyZ2INCiAgICAgICAgICAgIG0gPSAvXiMoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkkLy5leGVjKGNvbG9yKTsNCiAgICAgICAgICAgIGlmIChtKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvcigNCiAgICAgICAgICAgICAgICAgICBwYXJzZUludChtWzFdICsgbVsxXSwgMTYpIC8gMjU1LA0KICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KG1bMl0gKyBtWzJdLCAxNikgLyAyNTUsDQogICAgICAgICAgICAgICAgICAgcGFyc2VJbnQobVszXSArIG1bM10sIDE2KSAvIDI1NQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBfcGFyc2VIZXgoY29sb3IpOw0KICAgICAgICB9LA0KDQoJCV9sYXlvdXRUYWJsZSA9IGZ1bmN0aW9uKGxheW91dCwgY2FsbGJhY2spIHsNCgkJCXZhciBiaXRtYXAsDQoJCQkJeCwNCgkJCQl5LA0KCQkJCXdpZHRoLCBoZWlnaHQsDQoJCQkJY29sdW1ucywgcm93cywNCgkJCQlpbmRleCwNCgkJCQljZWxsLA0KCQkJCWh0bWwsDQoJCQkJdywNCgkJCQloLA0KCQkJCWNvbHNwYW4sDQoJCQkJd2Fsa2VkOw0KDQoJCQlsYXlvdXQuc29ydChmdW5jdGlvbihhLCBiKSB7DQoJCQkJaWYgKGEucG9zWzFdID09IGIucG9zWzFdKSB7DQoJCQkJCXJldHVybiBhLnBvc1swXSAtIGIucG9zWzBdOw0KCQkJCX0NCgkJCQlyZXR1cm4gYS5wb3NbMV0gLSBiLnBvc1sxXTsNCgkJCX0pOw0KDQoJCQkvLyBEZXRlcm1pbmUgZGltZW5zaW9ucyBvZiB0aGUgdGFibGUNCgkJCXdpZHRoID0gMDsNCgkJCWhlaWdodCA9IDA7DQoJCQkkLmVhY2ggKGxheW91dCwgZnVuY3Rpb24oaW5kZXgsIHBhcnQpIHsNCgkJCQl3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBwYXJ0LnBvc1swXSArIHBhcnQucG9zWzJdKTsNCgkJCQloZWlnaHQgPSBNYXRoLm1heChoZWlnaHQsIHBhcnQucG9zWzFdICsgcGFydC5wb3NbM10pOw0KCQkJfSk7DQoNCgkJCS8vIEluaXRpYWxpemUgYml0bWFwDQoJCQliaXRtYXAgPSBbXTsNCgkJCWZvciAoeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7DQoJCQkJYml0bWFwLnB1c2goW10pOw0KCQkJfQ0KDQoJCQkvLyBNYXJrIHJvd3MgYW5kIGNvbHVtbnMgd2hpY2ggaGF2ZSBsYXlvdXQgYXNzaWduZWQNCgkJCXJvd3MJPSBbXTsNCgkJCWNvbHVtbnMgPSBbXTsNCgkJCSQuZWFjaChsYXlvdXQsIGZ1bmN0aW9uKGluZGV4LCBwYXJ0KSB7DQoJCQkJLy8gbWFyayBjb2x1bW5zDQoJCQkJZm9yICh4ID0gMDsgeCA8IHBhcnQucG9zWzJdOyB4ICs9IDEpIHsNCgkJCQkJY29sdW1uc1twYXJ0LnBvc1swXSArIHhdID0gdHJ1ZTsNCgkJCQl9DQoJCQkJZm9yICh5ID0gMDsgeSA8IHBhcnQucG9zWzNdOyB5ICs9IDEpIHsNCgkJCQkJcm93c1twYXJ0LnBvc1sxXSArIHldID0gdHJ1ZTsNCgkJCQl9DQoJCQl9KTsNCg0KCQkJLy8gR2VuZXJhdGUgdGhlIHRhYmxlDQoJCQlodG1sID0gJyc7DQoJCQljZWxsID0gbGF5b3V0W2luZGV4ID0gMF07DQoJCQlmb3IgKHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsNCgkJCQlodG1sICs9ICc8dHI+JzsNCgkJCQlmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgpIHsNCgkJCQkJaWYgKHR5cGVvZiBjZWxsICE9PSAndW5kZWZpbmVkJyAmJiB4ID09IGNlbGwucG9zWzBdICYmIHkgPT0gY2VsbC5wb3NbMV0pIHsNCgkJCQkJCS8vIENyZWF0ZSBhICJyZWFsIiBjZWxsDQoJCQkJCQlodG1sICs9IGNhbGxiYWNrKGNlbGwsIHgsIHkpOw0KDQoJCQkJCQlmb3IgKGggPSAwOyBoIDwgY2VsbC5wb3NbM107IGggKz0xKSB7DQoJCQkJCQkJZm9yICh3ID0gMDsgdyA8IGNlbGwucG9zWzJdOyB3ICs9MSkgew0KCQkJCQkJCQliaXRtYXBbeCArIHddW3kgKyBoXSA9IHRydWU7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KDQoJCQkJCQl4ICs9IGNlbGwucG9zWzJdOw0KCQkJCQkJY2VsbCA9IGxheW91dFsrK2luZGV4XTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCS8vIEZpbGwgaW4gdGhlIGdhcHMNCgkJCQkJCWNvbHNwYW4gPSAwOw0KCQkJCQkJd2Fsa2VkID0gZmFsc2U7DQoNCgkJCQkJCXdoaWxlICh4IDwgd2lkdGggJiYgYml0bWFwW3hdW3ldID09PSB1bmRlZmluZWQgJiYgKGNlbGwgPT09IHVuZGVmaW5lZCB8fCB5IDwgY2VsbC5wb3NbMV0gfHwgKHkgPT0gY2VsbC5wb3NbMV0gJiYgeCA8IGNlbGwucG9zWzBdKSkpIHsNCgkJCQkJCQlpZiAoY29sdW1uc1t4XSA9PT0gdHJ1ZSkgew0KCQkJCQkJCQljb2xzcGFuICs9IDE7DQoJCQkJCQkJfQ0KCQkJCQkJCXdhbGtlZCA9IHRydWU7DQoJCQkJCQkJeCArPSAxOw0KCQkJCQkJfQ0KDQoJCQkJCQlpZiAoY29sc3BhbiA+IDApIHsNCgkJCQkJCQlodG1sICs9ICc8dGQgY29sc3Bhbj0iJytjb2xzcGFuKyciPjwvdGQ+JzsNCgkJCQkJCX0gZWxzZSBpZiAoIXdhbGtlZCkgew0KCQkJCQkJCXggKz0gMTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQlodG1sICs9ICc8L3RyPic7DQoJCQl9DQoNCgkJCXJldHVybiAnPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj48dGJvZHk+JyArIGh0bWwgKyAnPC90Ym9keT48L3RhYmxlPic7DQoJCX0sDQoNCiAgICAgICAgX3BhcnRzID0gew0KICAgICAgICAgICAgaGVhZGVyOiBmdW5jdGlvbiAoaW5zdCkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0CT0gdGhpcywNCiAgICAgICAgICAgICAgICAgICAgZQkJPSBudWxsLA0KICAgICAgICAgICAgICAgICAgICBfaHRtbAk9ZnVuY3Rpb24oKSB7DQoJCQkJCQl2YXIgdGl0bGUgPSBpbnN0Lm9wdGlvbnMudGl0bGUgfHwgaW5zdC5fZ2V0UmVnaW9uYWwoJ3RpdGxlJyksDQoJCQkJCQkJaHRtbCA9ICc8c3BhbiBjbGFzcz0idWktZGlhbG9nLXRpdGxlIj4nICsgdGl0bGUgKyAnPC9zcGFuPic7DQoNCgkJCQkJCWlmICghaW5zdC5pbmxpbmUgJiYgaW5zdC5vcHRpb25zLnNob3dDbG9zZUJ1dHRvbikgew0KCQkJCQkJCWh0bWwgKz0gJzxhIGhyZWY9IiMiIGNsYXNzPSJ1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgdWktY29ybmVyLWFsbCIgcm9sZT0iYnV0dG9uIj4nDQoJCQkJCQkJCSsgJzxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI+Y2xvc2U8L3NwYW4+PC9hPic7DQoJCQkJCQl9DQoNCgkJCQkJCXJldHVybiAnPGRpdiBjbGFzcz0idWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCB1aS1oZWxwZXItY2xlYXJmaXgiPicgKyBodG1sICsgJzwvZGl2Pic7DQoJCQkJCX07DQoNCiAgICAgICAgICAgICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9ICQoX2h0bWwoKSkucHJlcGVuZFRvKGluc3QuZGlhbG9nKTsNCg0KICAgICAgICAgICAgICAgICAgICB2YXIgY2xvc2UgPSAkKCcudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlJywgZSk7DQogICAgICAgICAgICAgICAgICAgIGluc3QuX2hvdmVyYWJsZShjbG9zZSk7DQogICAgICAgICAgICAgICAgICAgIGluc3QuX2ZvY3VzYWJsZShjbG9zZSk7DQogICAgICAgICAgICAgICAgICAgIGNsb3NlLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5jbG9zZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KCQkJCQlpZiAoIWluc3QuaW5saW5lICYmIGluc3Qub3B0aW9ucy5kcmFnZ2FibGUpIHsNCgkJCQkJCWluc3QuZGlhbG9nLmRyYWdnYWJsZSh7DQoJCQkJCQkJaGFuZGxlOiBlDQoJCQkJCQl9KTsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBtYXA6IGZ1bmN0aW9uIChpbnN0KSB7DQogICAgICAgICAgICAgICAgdmFyIHRoYXQJPSB0aGlzLA0KICAgICAgICAgICAgICAgICAgICBlCQk9IG51bGwsDQoJCQkJCW1vdXNlbW92ZV90aW1lb3V0ID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgX21vdXNlZG93biwgX21vdXNldXAsIF9tb3VzZW1vdmUsIF9odG1sOw0KDQogICAgICAgICAgICAgICAgX21vdXNlZG93biA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3Qub3BlbmVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICB2YXIgZGl2CQk9ICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItcG9pbnRlcicsIGUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0CT0gZGl2Lm9mZnNldCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgJPSBkaXYud2lkdGgoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodAk9IGRpdi5oZWlnaHQoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHgJCT0gZXZlbnQucGFnZVggLSBvZmZzZXQubGVmdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHkJCT0gZXZlbnQucGFnZVkgLSBvZmZzZXQudG9wOw0KDQogICAgICAgICAgICAgICAgICAgIGlmICh4ID49IDAgJiYgeCA8IHdpZHRoICYmIHkgPj0gMCAmJiB5IDwgaGVpZ2h0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQoJCQkJCQllLnVuYmluZCgnbW91c2Vkb3duJywgX21vdXNlZG93bik7DQogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5iaW5kKCdtb3VzZXVwJywgX21vdXNldXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuYmluZCgnbW91c2Vtb3ZlJywgX21vdXNlbW92ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBfbW91c2Vtb3ZlKGV2ZW50KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBfbW91c2V1cCA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZXVwJywgX21vdXNldXApOw0KICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS51bmJpbmQoJ21vdXNlbW92ZScsIF9tb3VzZW1vdmUpOw0KICAgICAgICAgICAgICAgICAgICBlLmJpbmQoJ21vdXNlZG93bicsIF9tb3VzZWRvd24pOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBfbW91c2Vtb3ZlID0gZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOw0KICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KDQogICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5wYWdlWCA9PT0gdGhhdC54ICYmIGV2ZW50LnBhZ2VZID09PSB0aGF0LnkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB0aGF0LnggPSBldmVudC5wYWdlWDsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC55ID0gZXZlbnQucGFnZVk7DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRpdiA9ICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItcG9pbnRlcicsIGUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gZGl2Lm9mZnNldCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBkaXYud2lkdGgoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGRpdi5oZWlnaHQoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBldmVudC5wYWdlWCAtIG9mZnNldC5sZWZ0LA0KICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGV2ZW50LnBhZ2VZIC0gb2Zmc2V0LnRvcDsNCg0KICAgICAgICAgICAgICAgICAgICB4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeCAvIHdpZHRoLCAxKSk7DQogICAgICAgICAgICAgICAgICAgIHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih5IC8gaGVpZ2h0LCAxKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJwcmV0IHZhbHVlcw0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGluc3QubW9kZSkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlICdoJzoNCgkJCQkJCWluc3QuY29sb3Iuc2V0SFNWKG51bGwsIHgsIDEgLSB5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoNCgkJCQkJCWluc3QuY29sb3Iuc2V0SFNWKHgsIG51bGwsIDEgLSB5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOg0KCQkJCQkJaW5zdC5jb2xvci5zZXRIU1YoeCwgMSAtIHksIG51bGwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6DQoJCQkJCQlpbnN0LmNvbG9yLnNldFJHQihudWxsLCAxIC0geSwgeCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzoNCgkJCQkJCWluc3QuY29sb3Iuc2V0UkdCKDEgLSB5LCBudWxsLCB4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOg0KCQkJCQkJaW5zdC5jb2xvci5zZXRSR0IoeCwgMSAtIHksIG51bGwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgX2h0bWwgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLW1hcCB1aS1jb2xvcnBpY2tlci1ib3JkZXIiPicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc8c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItbWFwLWxheWVyLTEiPiZuYnNwOzwvc3Bhbj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLW1hcC1sYXllci0yIj4mbmJzcDs8L3NwYW4+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGluc3Qub3B0aW9ucy5hbHBoYSA/ICc8c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItbWFwLWxheWVyLWFscGhhIj4mbmJzcDs8L3NwYW4+JyA6ICcnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxzcGFuIGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItcG9pbnRlciI+PHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLW1hcC1wb2ludGVyIj48L3NwYW4+PC9zcGFuPjwvZGl2Pic7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnN0Lm1vZGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTEnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgMCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTEnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTI2MHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMicsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtNTIwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6DQogICAgICAgICAgICAgICAgICAgICAgICAkKGUpLmNzcygnYmFja2dyb3VuZC1jb2xvcicsICdibGFjaycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1hcC1sYXllci0xJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC03ODBweCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdyJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMScsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMTA0MHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMicsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMTMwMHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2cnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1hcC1sYXllci0xJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0xNTYwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1hcC1sYXllci0yJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0xODIwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTEnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTIwODBweCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTIzNDBweCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB0aGF0LnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZGl2ID0gJCgnLnVpLWNvbG9ycGlja2VyLW1hcC1sYXllci1wb2ludGVyJywgZSksDQogICAgICAgICAgICAgICAgICAgICAgICB4ID0gMCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAwOw0KDQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5tb2RlKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2gnOg0KICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGluc3QuY29sb3IuZ2V0SFNWKCkucyAqIGRpdi53aWR0aCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgeSA9ICgxIC0gaW5zdC5jb2xvci5nZXRIU1YoKS52KSAqIGRpdi53aWR0aCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChlKS5jc3MoJ2JhY2tncm91bmQtY29sb3InLCBpbnN0LmNvbG9yLmNvcHkoKS5ub3JtYWxpemUoKS50b0NTUygpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3MnOg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBpbnN0LmNvbG9yLmdldEhTVigpLmggKiBkaXYud2lkdGgoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAoMSAtIGluc3QuY29sb3IuZ2V0SFNWKCkudikgKiBkaXYud2lkdGgoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tYXAtbGF5ZXItMicsIGUpLmNzcygnb3BhY2l0eScsIDEgLSBpbnN0LmNvbG9yLmdldEhTVigpLnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6DQogICAgICAgICAgICAgICAgICAgICAgICB4ID0gaW5zdC5jb2xvci5nZXRIU1YoKS5oICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldEhTVigpLnMpICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTEnLCBlKS5jc3MoJ29wYWNpdHknLCBpbnN0LmNvbG9yLmdldEhTVigpLnYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6DQogICAgICAgICAgICAgICAgICAgICAgICB4ID0gaW5zdC5jb2xvci5nZXRSR0IoKS5iICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLmcpICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5jc3MoJ29wYWNpdHknLCBpbnN0LmNvbG9yLmdldFJHQigpLnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZyc6DQogICAgICAgICAgICAgICAgICAgICAgICB4ID0gaW5zdC5jb2xvci5nZXRSR0IoKS5iICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLnIpICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5jc3MoJ29wYWNpdHknLCBpbnN0LmNvbG9yLmdldFJHQigpLmcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6DQogICAgICAgICAgICAgICAgICAgICAgICB4ID0gaW5zdC5jb2xvci5nZXRSR0IoKS5yICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLmcpICogZGl2LndpZHRoKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLTInLCBlKS5jc3MoJ29wYWNpdHknLCBpbnN0LmNvbG9yLmdldFJHQigpLmIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdC5vcHRpb25zLmFscGhhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLWxheWVyLWFscGhhJywgZSkuY3NzKCdvcGFjaXR5JywgMSAtIGluc3QuY29sb3IuZ2V0QWxwaGEoKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbWFwLXBvaW50ZXInLCBlKS5jc3Moew0KICAgICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnOiB4IC0gNywNCiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnOiB5IC0gNw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBlID0gJChfaHRtbCgpKS5hcHBlbmRUbygkKCcudWktY29sb3JwaWNrZXItbWFwLWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgZS5iaW5kKCdtb3VzZWRvd24nLCBfbW91c2Vkb3duKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgYmFyOiBmdW5jdGlvbiAoaW5zdCkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0CQk9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGUJCQk9IG51bGwsDQogICAgICAgICAgICAgICAgICAgIF9tb3VzZWRvd24sIF9tb3VzZXVwLCBfbW91c2Vtb3ZlLCBfaHRtbDsNCg0KICAgICAgICAgICAgICAgIF9tb3VzZWRvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0Lm9wZW5lZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRpdgkJPSAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLXBvaW50ZXInLCBlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldAk9IGRpdi5vZmZzZXQoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoCT0gZGl2LndpZHRoKCksDQogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQJPSBkaXYuaGVpZ2h0KCksDQogICAgICAgICAgICAgICAgICAgICAgICB4CQk9IGV2ZW50LnBhZ2VYIC0gb2Zmc2V0LmxlZnQsDQogICAgICAgICAgICAgICAgICAgICAgICB5CQk9IGV2ZW50LnBhZ2VZIC0gb2Zmc2V0LnRvcDsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoeCA+PSAwICYmIHggPCB3aWR0aCAmJiB5ID49IDAgJiYgeSA8IGhlaWdodCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZS51bmJpbmQoJ21vdXNlZG93bicsIF9tb3VzZWRvd24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkuYmluZCgnbW91c2V1cCcsIF9tb3VzZXVwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmJpbmQoJ21vdXNlbW92ZScsIF9tb3VzZW1vdmUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgX21vdXNlbW92ZShldmVudCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgX21vdXNldXAgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7DQogICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnVuYmluZCgnbW91c2V1cCcsIF9tb3VzZXVwKTsNCiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZW1vdmUnLCBfbW91c2Vtb3ZlKTsNCiAgICAgICAgICAgICAgICAgICAgZS5iaW5kKCdtb3VzZWRvd24nLCBfbW91c2Vkb3duKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgX21vdXNlbW92ZSA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsNCiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQucGFnZVkgPT09IHRoYXQueSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHRoYXQueSA9IGV2ZW50LnBhZ2VZOw0KDQogICAgICAgICAgICAgICAgICAgIHZhciBkaXYgPSAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLXBvaW50ZXInLCBlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAgPSBkaXYub2Zmc2V0KCksDQogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgID0gZGl2LmhlaWdodCgpLA0KICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGV2ZW50LnBhZ2VZIC0gb2Zmc2V0LnRvcDsNCg0KICAgICAgICAgICAgICAgICAgICB5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oeSAvIGhlaWdodCwgMSkpOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIGludGVycHJldCB2YWx1ZXMNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnN0Lm1vZGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCc6DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldEhTVigxIC0geSwgbnVsbCwgbnVsbCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3Iuc2V0SFNWKG51bGwsIDEgLSB5LCBudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3YnOg0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5jb2xvci5zZXRIU1YobnVsbCwgbnVsbCwgMSAtIHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldFJHQigxIC0geSwgbnVsbCwgbnVsbCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3Iuc2V0UkdCKG51bGwsIDEgLSB5LCBudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOg0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5jb2xvci5zZXRSR0IobnVsbCwgbnVsbCwgMSAtIHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldEFscGhhKDEgLSB5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaW5zdC5fY2hhbmdlKCk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIF9odG1sID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1iYXIgdWktY29sb3JwaWNrZXItYm9yZGVyIj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLWJhci1sYXllci0xIj4mbmJzcDs8L3NwYW4+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxzcGFuIGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMiI+Jm5ic3A7PC9zcGFuPicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc8c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItYmFyLWxheWVyLTMiPiZuYnNwOzwvc3Bhbj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLWJhci1sYXllci00Ij4mbmJzcDs8L3NwYW4+JzsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdC5vcHRpb25zLmFscGhhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItYmFyLWxheWVyLWFscGhhIj4mbmJzcDs8L3NwYW4+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxzcGFuIGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItYWxwaGFiYXIiPiZuYnNwOzwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnPHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLWJhci1sYXllci1wb2ludGVyIj48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItYmFyLXBvaW50ZXIiPjwvc3Bhbj48L3NwYW4+PC9kaXY+JzsNCg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5tb2RlKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2gnOg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLWFscGhhJywgZSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci1hbHBoYWJhcicsIGUpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2EnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci1hbHBoYScsIGUpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItYWxwaGFiYXInLCBlKS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5zdC5tb2RlKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2gnOg0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0xJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIDAnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0zJywgZSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci00JywgZSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTEnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTI2MHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMicsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtNTIwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0zJywgZSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci00JywgZSkuaGlkZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAndic6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTEnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTUyMHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMicsIGUpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMycsIGUpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItNCcsIGUpLmhpZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InOg0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0xJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0xNTYwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0xMzAwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0zJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC03ODBweCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTQnLCBlKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJzAgLTEwNDBweCcsICdvcGFjaXR5JzogJyd9KS5zaG93KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdnJzoNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMScsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMjYwMHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMicsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMjM0MHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMycsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMTgyMHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItNCcsIGUpLmNzcyh7J2JhY2tncm91bmQtcG9zaXRpb24nOiAnMCAtMjA4MHB4JywgJ29wYWNpdHknOiAnJ30pLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InOg0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0xJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0zNjQwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0zMzgwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0zJywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0yODYwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci00JywgZSkuY3NzKHsnYmFja2dyb3VuZC1wb3NpdGlvbic6ICcwIC0zMTIwcHgnLCAnb3BhY2l0eSc6ICcnfSkuc2hvdygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTEnLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTInLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTMnLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTQnLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB0aGF0LnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZGl2ID0gJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci1wb2ludGVyJywgZSksDQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gMDsNCg0KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGluc3QubW9kZSkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlICdoJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAoMSAtIGluc3QuY29sb3IuZ2V0SFNWKCkuaCkgKiBkaXYuaGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAoMSAtIGluc3QuY29sb3IuZ2V0SFNWKCkucykgKiBkaXYuaGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTInLCBlKS5jc3MoJ29wYWNpdHknLCAxIC0gaW5zdC5jb2xvci5nZXRIU1YoKS52KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoZSkuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgaW5zdC5jb2xvci5jb3B5KCkubm9ybWFsaXplKCkudG9DU1MoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgICAgICBjYXNlICd2JzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAoMSAtIGluc3QuY29sb3IuZ2V0SFNWKCkudikgKiBkaXYuaGVpZ2h0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKGUpLmNzcygnYmFja2dyb3VuZC1jb2xvcicsIGluc3QuY29sb3IuY29weSgpLm5vcm1hbGl6ZSgpLnRvQ1NTKCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLnIpICogZGl2LmhlaWdodCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuY3NzKCdvcGFjaXR5JywgTWF0aC5tYXgoMCwgKGluc3QuY29sb3IuZ2V0UkdCKCkuYiAtIGluc3QuY29sb3IuZ2V0UkdCKCkuZykpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMycsIGUpLmNzcygnb3BhY2l0eScsIE1hdGgubWF4KDAsIChpbnN0LmNvbG9yLmdldFJHQigpLmcgLSBpbnN0LmNvbG9yLmdldFJHQigpLmIpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTQnLCBlKS5jc3MoJ29wYWNpdHknLCBNYXRoLm1pbihpbnN0LmNvbG9yLmdldFJHQigpLmIsIGluc3QuY29sb3IuZ2V0UkdCKCkuZykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZyc6DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLmcpICogZGl2LmhlaWdodCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuY3NzKCdvcGFjaXR5JywgTWF0aC5tYXgoMCwgKGluc3QuY29sb3IuZ2V0UkdCKCkuYiAtIGluc3QuY29sb3IuZ2V0UkdCKCkucikpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMycsIGUpLmNzcygnb3BhY2l0eScsIE1hdGgubWF4KDAsIChpbnN0LmNvbG9yLmdldFJHQigpLnIgLSBpbnN0LmNvbG9yLmdldFJHQigpLmIpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTQnLCBlKS5jc3MoJ29wYWNpdHknLCBNYXRoLm1pbihpbnN0LmNvbG9yLmdldFJHQigpLnIsIGluc3QuY29sb3IuZ2V0UkdCKCkuYikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYic6DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldFJHQigpLmIpICogZGl2LmhlaWdodCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWJhci1sYXllci0yJywgZSkuY3NzKCdvcGFjaXR5JywgTWF0aC5tYXgoMCwgKGluc3QuY29sb3IuZ2V0UkdCKCkuciAtIGluc3QuY29sb3IuZ2V0UkdCKCkuZykpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1iYXItbGF5ZXItMycsIGUpLmNzcygnb3BhY2l0eScsIE1hdGgubWF4KDAsIChpbnN0LmNvbG9yLmdldFJHQigpLmcgLSBpbnN0LmNvbG9yLmdldFJHQigpLnIpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLTQnLCBlKS5jc3MoJ29wYWNpdHknLCBNYXRoLm1pbihpbnN0LmNvbG9yLmdldFJHQigpLnIsIGluc3QuY29sb3IuZ2V0UkdCKCkuZykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYSc6DQogICAgICAgICAgICAgICAgICAgICAgICB5ID0gKDEgLSBpbnN0LmNvbG9yLmdldEFscGhhKCkpICogZGl2LmhlaWdodCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJChlKS5jc3MoJ2JhY2tncm91bmQtY29sb3InLCBpbnN0LmNvbG9yLmNvcHkoKS5ub3JtYWxpemUoKS50b0NTUygpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QubW9kZSAhPT0gJ2EnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLWxheWVyLWFscGhhJywgZSkuY3NzKCdvcGFjaXR5JywgMSAtIGluc3QuY29sb3IuZ2V0QWxwaGEoKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYmFyLXBvaW50ZXInLCBlKS5jc3MoJ3RvcCcsIHkgLSAzKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBlID0gJChfaHRtbCgpKS5hcHBlbmRUbygkKCcudWktY29sb3JwaWNrZXItYmFyLWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgZS5iaW5kKCdtb3VzZWRvd24nLCBfbW91c2Vkb3duKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgcHJldmlldzogZnVuY3Rpb24gKGluc3QpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGUgPSBudWxsLA0KICAgICAgICAgICAgICAgICAgICBfaHRtbDsNCg0KICAgICAgICAgICAgICAgIF9odG1sID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLXByZXZpZXcgdWktY29sb3JwaWNrZXItYm9yZGVyIj4nDQogICAgICAgICAgICAgICAgICAgICAgICArICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1wcmV2aWV3LWluaXRpYWwiPjxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbC1hbHBoYSI+PC9kaXY+PC9kaXY+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgKyAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItcHJldmlldy1jdXJyZW50Ij48ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1wcmV2aWV3LWN1cnJlbnQtYWxwaGEiPjwvZGl2PjwvZGl2PicNCiAgICAgICAgICAgICAgICAgICAgICAgICsgJzwvZGl2Pic7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9ICQoX2h0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLXByZXZpZXctY29udGFpbmVyJywgaW5zdC5kaWFsb2cpKTsNCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItcHJldmlldy1pbml0aWFsJywgZSkuY2xpY2soZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5jb2xvciA9IGluc3QuY3VycmVudENvbG9yLmNvcHkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX2NoYW5nZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3Qub3B0aW9ucy5hbHBoYSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbC1hbHBoYSwgLnVpLWNvbG9ycGlja2VyLXByZXZpZXctY3VycmVudC1hbHBoYScsIGUpLnNob3coKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1wcmV2aWV3LWluaXRpYWwtYWxwaGEsIC51aS1jb2xvcnBpY2tlci1wcmV2aWV3LWN1cnJlbnQtYWxwaGEnLCBlKS5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItcHJldmlldy1pbml0aWFsJywgZSkuY3NzKCdiYWNrZ3JvdW5kLWNvbG9yJywgaW5zdC5jdXJyZW50Q29sb3IudG9DU1MoKSkuYXR0cigndGl0bGUnLCBpbnN0LmN1cnJlbnRDb2xvci50b0hleCgpKTsNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXByZXZpZXctaW5pdGlhbC1hbHBoYScsIGUpLmNzcygnb3BhY2l0eScsIDEgLSBpbnN0LmN1cnJlbnRDb2xvci5nZXRBbHBoYSgpKTsNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXByZXZpZXctY3VycmVudCcsIGUpLmNzcygnYmFja2dyb3VuZC1jb2xvcicsIGluc3QuY29sb3IudG9DU1MoKSkuYXR0cigndGl0bGUnLCBpbnN0LmNvbG9yLnRvSGV4KCkpOw0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItcHJldmlldy1jdXJyZW50LWFscGhhJywgZSkuY3NzKCdvcGFjaXR5JywgMSAtIGluc3QuY29sb3IuZ2V0QWxwaGEoKSk7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIGhzdjogZnVuY3Rpb24gKGluc3QpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGUgPSBudWxsLA0KICAgICAgICAgICAgICAgICAgICBfaHRtbDsNCg0KICAgICAgICAgICAgICAgIF9odG1sID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICcnOw0KDQogICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Lm9wdGlvbnMuaHN2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9CSc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1oc3YtaCI+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1tb2RlIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImgiLz48bGFiZWw+JyArIGluc3QuX2dldFJlZ2lvbmFsKCdoc3ZIJykgKyAnPC9sYWJlbD48aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLW51bWJlciIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMzYwIiBzaXplPSIxMCIvPjxzcGFuIGNsYXNzPSJ1aS1jb2xvcnBpY2tlci11bml0Ij4mZGVnOzwvc3Bhbj48L2Rpdj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItaHN2LXMiPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbW9kZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJzIi8+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnaHN2UycpICsgJzwvbGFiZWw+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1udW1iZXIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc2l6ZT0iMTAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItaHN2LXYiPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbW9kZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJ2Ii8+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnaHN2VicpICsgJzwvbGFiZWw+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1udW1iZXIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjEwMCIgc2l6ZT0iMTAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1oc3YiPicgKyBodG1sICsgJzwvZGl2Pic7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9ICQoX2h0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLWhzdi1jb250YWluZXInLCBpbnN0LmRpYWxvZykpOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tb2RlJywgZSkuY2xpY2soZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5tb2RlID0gJCh0aGlzKS52YWwoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX3VwZGF0ZUFsbFBhcnRzKCk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1udW1iZXInLCBlKS5iaW5kKCdjaGFuZ2Uga2V5dXAnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldEhTVigNCgkJCQkJCQkkKCcudWktY29sb3JwaWNrZXItaHN2LWggLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLnZhbCgpIC8gMzYwLA0KCQkJCQkJCSQoJy51aS1jb2xvcnBpY2tlci1oc3YtcyAudWktY29sb3JwaWNrZXItbnVtYmVyJywgZSkudmFsKCkgLyAxMDAsDQoJCQkJCQkJJCgnLnVpLWNvbG9ycGlja2VyLWhzdi12IC51aS1jb2xvcnBpY2tlci1udW1iZXInLCBlKS52YWwoKSAvIDEwMA0KCQkJCQkJKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX2NoYW5nZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50ID0gZnVuY3Rpb24gKCkgew0KCQkJCQl2YXIgaHN2ID0gaW5zdC5jb2xvci5nZXRIU1YoKTsNCgkJCQkJaHN2LmggKj0gMzYwOw0KCQkJCQloc3YucyAqPSAxMDA7DQoJCQkJCWhzdi52ICo9IDEwMDsNCg0KICAgICAgICAgICAgICAgICAgICAkLmVhY2goaHN2LCBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7DQoJCQkJCQl2YXIgaW5wdXQgPSAkKCcudWktY29sb3JwaWNrZXItaHN2LScgKyBpbmRleCArICcgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC52YWwoKSAhPT0gdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC52YWwodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tb2RlJywgZSkuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnLCAkKHRoaXMpLnZhbCgpID09PSBpbnN0Lm1vZGUpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50KCk7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIHJnYjogZnVuY3Rpb24gKGluc3QpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGUgPSBudWxsLA0KICAgICAgICAgICAgICAgICAgICBfaHRtbDsNCg0KICAgICAgICAgICAgICAgIF9odG1sID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICcnOw0KDQogICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Lm9wdGlvbnMucmdiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1yZ2ItciI+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1tb2RlIiB0eXBlPSJyYWRpbyIgdmFsdWU9InIiLz48bGFiZWw+JyArIGluc3QuX2dldFJlZ2lvbmFsKCdyZ2JSJykgKyAnPC9sYWJlbD48aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLW51bWJlciIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMjU1Ii8+PC9kaXY+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLXJnYi1nIj48aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLW1vZGUiIHR5cGU9InJhZGlvIiB2YWx1ZT0iZyIvPjxsYWJlbD4nICsgaW5zdC5fZ2V0UmVnaW9uYWwoJ3JnYkcnKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIyNTUiLz48L2Rpdj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItcmdiLWIiPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbW9kZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJiIi8+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgncmdiQicpICsgJzwvbGFiZWw+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1udW1iZXIiIHR5cGU9Im51bWJlciIgbWluPSIwIiBtYXg9IjI1NSIvPjwvZGl2Pic7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLXJnYiI+JyArIGh0bWwgKyAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBlID0gJChfaHRtbCgpKS5hcHBlbmRUbygkKCcudWktY29sb3JwaWNrZXItcmdiLWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1vZGUnLCBlKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Lm1vZGUgPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fdXBkYXRlQWxsUGFydHMoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLmJpbmQoJ2NoYW5nZSBrZXl1cCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3Iuc2V0UkdCKA0KCQkJCQkJCSQoJy51aS1jb2xvcnBpY2tlci1yZ2ItciAudWktY29sb3JwaWNrZXItbnVtYmVyJywgZSkudmFsKCkgLyAyNTUsDQoJCQkJCQkJJCgnLnVpLWNvbG9ycGlja2VyLXJnYi1nIC51aS1jb2xvcnBpY2tlci1udW1iZXInLCBlKS52YWwoKSAvIDI1NSwNCgkJCQkJCQkkKCcudWktY29sb3JwaWNrZXItcmdiLWIgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLnZhbCgpIC8gMjU1DQoJCQkJCQkpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKGluc3QuY29sb3IuZ2V0UkdCKCksIGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHsNCgkJCQkJCXZhciBpbnB1dCA9ICQoJy51aS1jb2xvcnBpY2tlci1yZ2ItJyArIGluZGV4ICsgJyAudWktY29sb3JwaWNrZXItbnVtYmVyJywgZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgKiAyNTUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbCgpICE9PSB2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbCh2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1vZGUnLCBlKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignY2hlY2tlZCcsICQodGhpcykudmFsKCkgPT09IGluc3QubW9kZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgbGFiOiBmdW5jdGlvbiAoaW5zdCkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCiAgICAgICAgICAgICAgICAgICAgcGFydCA9IG51bGwsDQogICAgICAgICAgICAgICAgICAgIGh0bWwgPSBmdW5jdGlvbiAoKSB7DQoJCQkJCQl2YXIgaHRtbCA9ICcnOw0KDQoJCQkJCQlpZiAoaW5zdC5vcHRpb25zLmhzdikgew0KCQkJCQkJCWh0bWwgKz0JJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWxhYi1sIj48bGFiZWw+JyArIGluc3QuX2dldFJlZ2lvbmFsKCdsYWJMJykgKyAnPC9sYWJlbD48aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLW51bWJlciIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIi8+PC9kaXY+Jw0KCQkJCQkJCQkrICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1sYWItYSI+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnbGFiQScpICsgJzwvbGFiZWw+PGlucHV0IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1udW1iZXIiIHR5cGU9Im51bWJlciIgbWluPSItMTI4IiBtYXg9IjEyNyIvPjwvZGl2PicNCgkJCQkJCQkJKyAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItbGFiLWIiPjxsYWJlbD4nICsgaW5zdC5fZ2V0UmVnaW9uYWwoJ2xhYkInKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iLTEyOCIgbWF4PSIxMjciLz48L2Rpdj4nOw0KCQkJCQkJfQ0KDQoJCQkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWxhYiI+JyArIGh0bWwgKyAnPC9kaXY+JzsNCgkJCQkJfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIHsNCgkJCQkJdmFyIGRhdGEgPSAwOw0KDQogICAgICAgICAgICAgICAgICAgIHBhcnQgPSAkKGh0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLWxhYi1jb250YWluZXInLCBpbnN0LmRpYWxvZykpOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1udW1iZXInLCBwYXJ0KS5vbignY2hhbmdlIGtleXVwJywgZnVuY3Rpb24gKGV2ZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldExBQigNCgkJCQkJCQlwYXJzZUludCgkKCcudWktY29sb3JwaWNrZXItbGFiLWwgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIHBhcnQpLnZhbCgpLCAxMCkgLyAxMDAsDQoJCQkJCQkJKHBhcnNlSW50KCQoJy51aS1jb2xvcnBpY2tlci1sYWItYSAudWktY29sb3JwaWNrZXItbnVtYmVyJywgcGFydCkudmFsKCksIDEwKSArIDEyOCkgLyAyNTUsDQoJCQkJCQkJKHBhcnNlSW50KCQoJy51aS1jb2xvcnBpY2tlci1sYWItYiAudWktY29sb3JwaWNrZXItbnVtYmVyJywgcGFydCkudmFsKCksIDEwKSArIDEyOCkgLyAyNTUNCgkJCQkJCSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCA9IGZ1bmN0aW9uICgpIHsNCgkJCQkJdmFyIGxhYiA9IGluc3QuY29sb3IuZ2V0TEFCKCk7DQoJCQkJCWxhYi5sICo9IDEwMDsNCgkJCQkJbGFiLmEgPSAobGFiLmEgKiAyNTUpIC0gMTI4Ow0KCQkJCQlsYWIuYiA9IChsYWIuYiAqIDI1NSkgLSAxMjg7DQoNCiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKGxhYiwgZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkgew0KCQkJCQkJdmFyIGlucHV0ID0gJCgnLnVpLWNvbG9ycGlja2VyLWxhYi0nICsgaW5kZXggKyAnIC51aS1jb2xvcnBpY2tlci1udW1iZXInLCBwYXJ0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQudmFsKCkgIT09IHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBjbXlrOiBmdW5jdGlvbiAoaW5zdCkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCiAgICAgICAgICAgICAgICAgICAgcGFydCA9IG51bGwsDQogICAgICAgICAgICAgICAgICAgIGh0bWwgPSBmdW5jdGlvbiAoKSB7DQoJCQkJCQl2YXIgaHRtbCA9ICcnOw0KDQoJCQkJCQlpZiAoaW5zdC5vcHRpb25zLmhzdikgew0KCQkJCQkJCWh0bWwgKz0JJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWNteWstYyI+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnY215a0MnKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nDQoJCQkJCQkJCSsgJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWNteWstbSI+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnY215a00nKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nDQoJCQkJCQkJCSsgJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWNteWsteSI+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnY215a1knKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nDQoJCQkJCQkJCSsgJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWNteWstayI+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnY215a0snKSArICc8L2xhYmVsPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbnVtYmVyIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSIxMDAiLz48c3BhbiBjbGFzcz0idWktY29sb3JwaWNrZXItdW5pdCI+JTwvc3Bhbj48L2Rpdj4nOw0KCQkJCQkJfQ0KDQoJCQkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWNteWsiPicgKyBodG1sICsgJzwvZGl2Pic7DQoJCQkJCX07DQoNCiAgICAgICAgICAgICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHBhcnQgPSAkKGh0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLWNteWstY29udGFpbmVyJywgaW5zdC5kaWFsb2cpKTsNCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItbnVtYmVyJywgcGFydCkub24oJ2NoYW5nZSBrZXl1cCcsIGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5jb2xvci5zZXRDTVlLKA0KCQkJCQkJCXBhcnNlSW50KCQoJy51aS1jb2xvcnBpY2tlci1jbXlrLWMgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIHBhcnQpLnZhbCgpLCAxMCkgLyAxMDAsDQoJCQkJCQkJcGFyc2VJbnQoJCgnLnVpLWNvbG9ycGlja2VyLWNteWstbSAudWktY29sb3JwaWNrZXItbnVtYmVyJywgcGFydCkudmFsKCksIDEwKSAvIDEwMCwNCgkJCQkJCQlwYXJzZUludCgkKCcudWktY29sb3JwaWNrZXItY215ay15IC51aS1jb2xvcnBpY2tlci1udW1iZXInLCBwYXJ0KS52YWwoKSwgMTApIC8gMTAwLA0KCQkJCQkJCXBhcnNlSW50KCQoJy51aS1jb2xvcnBpY2tlci1jbXlrLWsgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIHBhcnQpLnZhbCgpLCAxMCkgLyAxMDANCgkJCQkJCSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKGluc3QuY29sb3IuZ2V0Q01ZSygpLCBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7DQoJCQkJCQl2YXIgaW5wdXQgPSAkKCcudWktY29sb3JwaWNrZXItY215ay0nICsgaW5kZXggKyAnIC51aS1jb2xvcnBpY2tlci1udW1iZXInLCBwYXJ0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAqIDEwMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQudmFsKCkgIT09IHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBhbHBoYTogZnVuY3Rpb24gKGluc3QpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGUgPSBudWxsLA0KICAgICAgICAgICAgICAgICAgICBfaHRtbDsNCg0KICAgICAgICAgICAgICAgIF9odG1sID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICcnOw0KDQogICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Lm9wdGlvbnMuYWxwaGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9InVpLWNvbG9ycGlja2VyLWEiPjxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItbW9kZSIgbmFtZT0ibW9kZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJhIi8+PGxhYmVsPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgnYWxwaGFBJykgKyAnPC9sYWJlbD48aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLW51bWJlciIgdHlwZT0ibnVtYmVyIiBtaW49IjAiIG1heD0iMTAwIi8+PHNwYW4gY2xhc3M9InVpLWNvbG9ycGlja2VyLXVuaXQiPiU8L3NwYW4+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItYWxwaGEiPicgKyBodG1sICsgJzwvZGl2Pic7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgZSA9ICQoX2h0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLWFscGhhLWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW1vZGUnLCBlKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Lm1vZGUgPSAkKHRoaXMpLnZhbCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fdXBkYXRlQWxsUGFydHMoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLmJpbmQoJ2NoYW5nZSBrZXl1cCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3Iuc2V0QWxwaGEoJCgnLnVpLWNvbG9ycGlja2VyLWEgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLnZhbCgpIC8gMTAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX2NoYW5nZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1tb2RlJywgZSkuZWFjaChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnLCAkKHRoaXMpLnZhbCgpID09PSBpbnN0Lm1vZGUpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBhaW50KCk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCA9IGZ1bmN0aW9uICgpIHsNCgkJCQkJdmFyIGlucHV0ID0gJCgnLnVpLWNvbG9ycGlja2VyLWEgLnVpLWNvbG9ycGlja2VyLW51bWJlcicsIGUpLA0KCQkJCQkJdmFsdWUgPSBNYXRoLnJvdW5kKGluc3QuY29sb3IuZ2V0QWxwaGEoKSAqIDEwMCk7DQoJCQkJCWlmICghaW5wdXQuaXMoJzpmb2N1cycpICYmIGlucHV0LnZhbCgpICE9PSB2YWx1ZSkgew0KCQkJCQkJaW5wdXQudmFsKHZhbHVlKTsNCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9LA0KDQogICAgICAgICAgICBoZXg6IGZ1bmN0aW9uIChpbnN0KSB7DQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgICAgICBlID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgX2h0bWw7DQoNCiAgICAgICAgICAgICAgICBfaHRtbCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnJzsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdC5vcHRpb25zLmFscGhhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8aW5wdXQgY2xhc3M9InVpLWNvbG9ycGlja2VyLWhleC1hbHBoYSIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyIiBzaXplPSIyIi8+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxpbnB1dCBjbGFzcz0idWktY29sb3JwaWNrZXItaGV4LWlucHV0IiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjYiIHNpemU9IjYiLz4nOw0KDQogICAgICAgICAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItaGV4Ij48bGFiZWw+IzwvbGFiZWw+JyArIGh0bWwgKyAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBlID0gJChfaHRtbCgpKS5hcHBlbmRUbygkKCcudWktY29sb3JwaWNrZXItaGV4LWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0IGhlcmUgbWFrZXMgdGhlIGludmFsaWQgaW5wdXQgZGlzYXBwZWFyIGZhc3Rlcg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItaGV4LWlucHV0JywgZSkuYmluZCgnY2hhbmdlIGtleWRvd24ga2V5dXAnLCBmdW5jdGlvbiAoYSwgYiwgYykgew0KCQkJCQkJaWYgKC9bXmEtZkEtRjAtOV0vLnRlc3QoJCh0aGlzKS52YWwoKSkpIHsNCgkJCQkJCQkkKHRoaXMpLnZhbCgkKHRoaXMpLnZhbCgpLnJlcGxhY2UoL1teYS1mQS1GMC05XS8sICcnKSk7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1oZXgtaW5wdXQnLCBlKS5iaW5kKCdjaGFuZ2Uga2V5dXAnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBlYXQgaGVyZSBtYWtlcyBzdXJlIHRoYXQgdGhlIGludmFsaWQgaW5wdXQgZG9lc24ndCBnZXQgcGFyc2VkDQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yID0gX3BhcnNlSGV4KCQodGhpcykudmFsKCkpLnNldEFscGhhKGluc3QuY29sb3IuZ2V0QWxwaGEoKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWhleC1hbHBoYScsIGUpLmJpbmQoJ2NoYW5nZSBrZXlkb3duIGtleXVwJywgZnVuY3Rpb24gKCkgew0KCQkJCQkJaWYgKC9bXmEtZkEtRjAtOV0vLnRlc3QoJCh0aGlzKS52YWwoKSkpIHsNCgkJCQkJCQkkKHRoaXMpLnZhbCgkKHRoaXMpLnZhbCgpLnJlcGxhY2UoL1teYS1mQS1GMC05XS8sICcnKSk7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1oZXgtYWxwaGEnLCBlKS5iaW5kKCdjaGFuZ2Uga2V5dXAnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yLnNldEFscGhhKHBhcnNlSW50KCQoJy51aS1jb2xvcnBpY2tlci1oZXgtYWxwaGEnLCBlKS52YWwoKSwgMTYpIC8gMjU1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX2NoYW5nZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCgpOw0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB0aGlzLnJlcGFpbnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICghJCgnLnVpLWNvbG9ycGlja2VyLWhleC1pbnB1dCcsIGUpLmlzKCc6Zm9jdXMnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWhleC1pbnB1dCcsIGUpLnZhbChpbnN0LmNvbG9yLnRvSGV4KHRydWUpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghJCgnLnVpLWNvbG9ycGlja2VyLWhleC1hbHBoYScsIGUpLmlzKCc6Zm9jdXMnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLWhleC1hbHBoYScsIGUpLnZhbChfaW50VG9IZXgoaW5zdC5jb2xvci5nZXRBbHBoYSgpICogMjU1KSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgc3dhdGNoZXM6IGZ1bmN0aW9uIChpbnN0KSB7DQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgaHRtbCA9IGZ1bmN0aW9uICgpIHsNCgkJCQkJCXZhciBodG1sID0gJyc7DQoNCgkJCQkJCSQuZWFjaChpbnN0Lm9wdGlvbnMuc3dhdGNoZXMsIGZ1bmN0aW9uIChuYW1lLCBjb2xvcikgew0KCQkJCQkJCXZhciBjID0gbmV3IENvbG9yKGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpLA0KCQkJCQkJCQljc3MgPSBjLnRvQ1NTKCk7DQoJCQkJCQkJaHRtbCArPSAnPGRpdiBjbGFzcz0idWktY29sb3JwaWNrZXItc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogJyArIGNzcyArICciIHRpdGxlPSInICsgbmFtZSArICciPjwvZGl2Pic7DQoJCQkJCQl9KTsNCg0KCQkJCQkJcmV0dXJuICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1zd2F0Y2hlcyB1aS1jb2xvcnBpY2tlci1ib3JkZXIiPicgKyBodG1sICsgJzwvZGl2Pic7DQoJCQkJCX07DQoNCiAgICAgICAgICAgICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHBhcnQgPSAkKGh0bWwoKSkuYXBwZW5kVG8oJCgnLnVpLWNvbG9ycGlja2VyLXN3YXRjaGVzLWNvbnRhaW5lcicsIGluc3QuZGlhbG9nKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXN3YXRjaCcsIHBhcnQpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3IJPSBfcGFyc2VDb2xvcigkKHRoaXMpLmNzcygnYmFja2dyb3VuZC1jb2xvcicpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX2NoYW5nZSgpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgZm9vdGVyOiBmdW5jdGlvbiAoaW5zdCkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCgkJCQkJcGFydCA9IG51bGwsDQoJCQkJCWlkX3RyYW5zcGFyZW50ID0gJ3VpLWNvbG9ycGlja2VyLXNwZWNpYWwtdHJhbnNwYXJlbnQtJytfY29sb3JwaWNrZXJfaW5kZXgsDQoJCQkJCWlkX25vbmUgPSAndWktY29sb3JwaWNrZXItc3BlY2lhbC1ub25lLScrX2NvbG9ycGlja2VyX2luZGV4LA0KICAgICAgICAgICAgICAgICAgICBodG1sID0gZnVuY3Rpb24gKCkgew0KCQkJCQkJdmFyIGh0bWwgPSAnJzsNCg0KCQkJCQkJaWYgKGluc3Qub3B0aW9ucy5hbHBoYSB8fCAoIWluc3QuaW5saW5lICYmIGluc3Qub3B0aW9ucy5zaG93Tm9uZUJ1dHRvbikpIHsNCgkJCQkJCQlodG1sICs9ICc8ZGl2IGNsYXNzPSJ1aS1jb2xvcnBpY2tlci1idXR0b25zZXQiPic7DQoNCgkJCQkJCQlpZiAoaW5zdC5vcHRpb25zLmFscGhhKSB7DQoJCQkJCQkJCWh0bWwgKz0gJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0idWktY29sb3JwaWNrZXItc3BlY2lhbCIgaWQ9IicraWRfdHJhbnNwYXJlbnQrJyIgY2xhc3M9InVpLWNvbG9ycGlja2VyLXNwZWNpYWwtdHJhbnNwYXJlbnQiLz48bGFiZWwgZm9yPSInK2lkX3RyYW5zcGFyZW50KyciPicgKyBpbnN0Ll9nZXRSZWdpb25hbCgndHJhbnNwYXJlbnQnKSArICc8L2xhYmVsPic7DQoJCQkJCQkJfQ0KCQkJCQkJCWlmICghaW5zdC5pbmxpbmUgJiYgaW5zdC5vcHRpb25zLnNob3dOb25lQnV0dG9uKSB7DQoJCQkJCQkJCWh0bWwgKz0gJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0idWktY29sb3JwaWNrZXItc3BlY2lhbCIgaWQ9IicraWRfbm9uZSsnIiBjbGFzcz0idWktY29sb3JwaWNrZXItc3BlY2lhbC1ub25lIj48bGFiZWwgZm9yPSInK2lkX25vbmUrJyI+JyArIGluc3QuX2dldFJlZ2lvbmFsKCdub25lJykgKyAnPC9sYWJlbD4nOw0KCQkJCQkJCX0NCgkJCQkJCQlodG1sICs9ICc8L2Rpdj4nOw0KCQkJCQkJfQ0KDQoJCQkJCQlpZiAoIWluc3QuaW5saW5lKSB7DQoJCQkJCQkJaHRtbCArPSAnPGRpdiBjbGFzcz0idWktZGlhbG9nLWJ1dHRvbnNldCI+JzsNCgkJCQkJCQlpZiAoaW5zdC5vcHRpb25zLnNob3dDYW5jZWxCdXR0b24pIHsNCgkJCQkJCQkJaHRtbCArPSAnPGJ1dHRvbiBjbGFzcz0idWktY29sb3JwaWNrZXItY2FuY2VsIj4nICsgaW5zdC5fZ2V0UmVnaW9uYWwoJ2NhbmNlbCcpICsgJzwvYnV0dG9uPic7DQoJCQkJCQkJfQ0KCQkJCQkJCWh0bWwgKz0gJzxidXR0b24gY2xhc3M9InVpLWNvbG9ycGlja2VyLW9rIj4nICsgaW5zdC5fZ2V0UmVnaW9uYWwoJ29rJykgKyAnPC9idXR0b24+JzsNCgkJCQkJCQlodG1sICs9ICc8L2Rpdj4nOw0KCQkJCQkJfQ0KDQoJCQkJCQlyZXR1cm4gJzxkaXYgY2xhc3M9InVpLWRpYWxvZy1idXR0b25wYW5lIHVpLXdpZGdldC1jb250ZW50Ij4nICsgaHRtbCArICc8L2Rpdj4nOw0KCQkJCQl9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gJChodG1sKCkpLmFwcGVuZFRvKGluc3QuZGlhbG9nKTsNCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItb2snLCBwYXJ0KS5idXR0b24oKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICQoJy51aS1jb2xvcnBpY2tlci1jYW5jZWwnLCBwYXJ0KS5idXR0b24oKS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0LmNvbG9yID0gaW5zdC5jdXJyZW50Q29sb3IuY29weSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fY2hhbmdlKGluc3QuY29sb3Iuc2V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy9pbnN0Ll9nZXRSZWdpb25hbCgndHJhbnNwYXJlbnQnKQ0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItYnV0dG9uc2V0JywgcGFydCkuYnV0dG9uc2V0KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXNwZWNpYWwtY29sb3InLCBwYXJ0KS5jbGljayhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnIycraWRfbm9uZSwgcGFydCkuY2xpY2soZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fY2hhbmdlKGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgJCgnIycraWRfdHJhbnNwYXJlbnQsIHBhcnQpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuY29sb3Iuc2V0QWxwaGEoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnN0Ll9jaGFuZ2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHRoaXMucmVwYWludCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0LmNvbG9yLnNldCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnVpLWNvbG9ycGlja2VyLXNwZWNpYWwtbm9uZScsIHBhcnQpLmF0dHIoJ2NoZWNrZWQnLCB0cnVlKS5idXR0b24oICJyZWZyZXNoIiApOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc3QuY29sb3IuZ2V0QWxwaGEoKSA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItc3BlY2lhbC10cmFuc3BhcmVudCcsIHBhcnQpLmF0dHIoJ2NoZWNrZWQnLCB0cnVlKS5idXR0b24oICJyZWZyZXNoIiApOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJCgnaW5wdXQnLCBwYXJ0KS5hdHRyKCdjaGVja2VkJywgZmFsc2UpLmJ1dHRvbiggInJlZnJlc2giICk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAkKCcudWktY29sb3JwaWNrZXItY2FuY2VsJywgcGFydCkuYnV0dG9uKGluc3QuY2hhbmdlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnKTsNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7fTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBDb2xvciA9IGZ1bmN0aW9uICgpIHsNCgkJCXZhciBzcGFjZXMgPSB7CXJnYjoJe3I6IDAsIGc6IDAsIGI6IDB9LA0KCQkJCQkJCWhzdjoJe2g6IDAsIHM6IDAsIHY6IDB9LA0KCQkJCQkJCWhzbDoJe2g6IDAsIHM6IDAsIGw6IDB9LA0KCQkJCQkJCWxhYjoJe2w6IDAsIGE6IDAsIGI6IDB9LA0KCQkJCQkJCWNteWs6CXtjOiAwLCBtOiAwLCB5OiAwLCBrOiAxfQ0KCQkJCQkJfSwNCgkJCQlhID0gMSwNCgkJCQlhcmdzID0gYXJndW1lbnRzLA0KCQkJCV9jbGlwID0gZnVuY3Rpb24odikgew0KCQkJCQlpZiAoaXNOYU4odikgfHwgdiA9PT0gbnVsbCkgew0KCQkJCQkJcmV0dXJuIDA7DQoJCQkJCX0NCgkJCQkJaWYgKHR5cGVvZiB2ID09ICdzdHJpbmcnKSB7DQoJCQkJCQl2ID0gcGFyc2VJbnQodiwgMTApOw0KCQkJCQl9DQoJCQkJCXJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbih2LCAxKSk7DQoJCQkJfSwNCgkJCQlfaGV4aWZ5ID0gZnVuY3Rpb24gKG51bWJlcikgew0KCQkJCQl2YXIgZGlnaXRzID0gJzAxMjM0NTY3ODlhYmNkZWYnLA0KCQkJCQkJbHNkID0gbnVtYmVyICUgMTYsDQoJCQkJCQltc2QgPSAobnVtYmVyIC0gbHNkKSAvIDE2LA0KCQkJCQkJaGV4aWZpZWQgPSBkaWdpdHMuY2hhckF0KG1zZCkgKyBkaWdpdHMuY2hhckF0KGxzZCk7DQoJCQkJCXJldHVybiBoZXhpZmllZDsNCgkJCQl9LA0KCQkJCV9yZ2JfdG9feHl6ID0gZnVuY3Rpb24ocmdiKSB7DQoJCQkJCXZhciByID0gKHJnYi5yID4gMC4wNDA0NSkgPyBNYXRoLnBvdygocmdiLnIgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSA6IHJnYi5yIC8gMTIuOTIsDQoJCQkJCQlnID0gKHJnYi5nID4gMC4wNDA0NSkgPyBNYXRoLnBvdygocmdiLmcgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSA6IHJnYi5nIC8gMTIuOTIsDQoJCQkJCQliID0gKHJnYi5iID4gMC4wNDA0NSkgPyBNYXRoLnBvdygocmdiLmIgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSA6IHJnYi5iIC8gMTIuOTI7DQoNCgkJCQkJcmV0dXJuIHsNCgkJCQkJCXg6IHIgKiAwLjQxMjQgKyBnICogMC4zNTc2ICsgYiAqIDAuMTgwNSwNCgkJCQkJCXk6IHIgKiAwLjIxMjYgKyBnICogMC43MTUyICsgYiAqIDAuMDcyMiwNCgkJCQkJCXo6IHIgKiAwLjAxOTMgKyBnICogMC4xMTkyICsgYiAqIDAuOTUwNQ0KCQkJCQl9Ow0KCQkJCX0sDQoJCQkJX3h5el90b19yZ2IgPSBmdW5jdGlvbih4eXopIHsNCgkJCQkJdmFyIHJnYiA9IHsNCgkJCQkJCXI6IHh5ei54ICogIDMuMjQwNiArIHh5ei55ICogLTEuNTM3MiArIHh5ei56ICogLTAuNDk4NiwNCgkJCQkJCWc6IHh5ei54ICogLTAuOTY4OSArIHh5ei55ICogIDEuODc1OCArIHh5ei56ICogIDAuMDQxNSwNCgkJCQkJCWI6IHh5ei54ICogIDAuMDU1NyArIHh5ei55ICogLTAuMjA0MCArIHh5ei56ICogIDEuMDU3MA0KCQkJCQl9Ow0KDQoJCQkJCXJnYi5yID0gKHJnYi5yID4gMC4wMDMxMzA4KSA/IDEuMDU1ICogTWF0aC5wb3cocmdiLnIsICgxIC8gMi40KSkgLSAwLjA1NSA6IDEyLjkyICogcmdiLnI7DQoJCQkJCXJnYi5nID0gKHJnYi5nID4gMC4wMDMxMzA4KSA/IDEuMDU1ICogTWF0aC5wb3cocmdiLmcsICgxIC8gMi40KSkgLSAwLjA1NSA6IDEyLjkyICogcmdiLmc7DQoJCQkJCXJnYi5iID0gKHJnYi5iID4gMC4wMDMxMzA4KSA/IDEuMDU1ICogTWF0aC5wb3cocmdiLmIsICgxIC8gMi40KSkgLSAwLjA1NSA6IDEyLjkyICogcmdiLmI7DQoNCgkJCQkJcmV0dXJuIHJnYjsNCgkJCQl9LA0KCQkJCV9yZ2JfdG9faHN2ID0gZnVuY3Rpb24ocmdiKSB7DQoJCQkJCXZhciBtaW5WYWwgPSBNYXRoLm1pbihyZ2IuciwgcmdiLmcsIHJnYi5iKSwNCgkJCQkJCW1heFZhbCA9IE1hdGgubWF4KHJnYi5yLCByZ2IuZywgcmdiLmIpLA0KCQkJCQkJZGVsdGEgPSBtYXhWYWwgLSBtaW5WYWwsDQoJCQkJCQlkZWxfUiwgZGVsX0csIGRlbF9CLA0KCQkJCQkJaHN2ID0gew0KCQkJCQkJCWg6IDAsDQoJCQkJCQkJczogMCwNCgkJCQkJCQl2OiBtYXhWYWwNCgkJCQkJCX07DQoNCgkJCQkJaWYgKGRlbHRhID09PSAwKSB7DQoJCQkJCQloc3YuaCA9IDA7DQoJCQkJCQloc3YucyA9IDA7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQloc3YucyA9IGRlbHRhIC8gbWF4VmFsOw0KDQoJCQkJCQlkZWxfUiA9ICgoKG1heFZhbCAtIHJnYi5yKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7DQoJCQkJCQlkZWxfRyA9ICgoKG1heFZhbCAtIHJnYi5nKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7DQoJCQkJCQlkZWxfQiA9ICgoKG1heFZhbCAtIHJnYi5iKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7DQoNCgkJCQkJCWlmIChyZ2IuciA9PT0gbWF4VmFsKSB7DQoJCQkJCQkJaHN2LmggPSBkZWxfQiAtIGRlbF9HOw0KCQkJCQkJfSBlbHNlIGlmIChyZ2IuZyA9PT0gbWF4VmFsKSB7DQoJCQkJCQkJaHN2LmggPSAoMSAvIDMpICsgZGVsX1IgLSBkZWxfQjsNCgkJCQkJCX0gZWxzZSBpZiAocmdiLmIgPT09IG1heFZhbCkgew0KCQkJCQkJCWhzdi5oID0gKDIgLyAzKSArIGRlbF9HIC0gZGVsX1I7DQoJCQkJCQl9DQoNCgkJCQkJCWlmIChoc3YuaCA8IDApIHsNCgkJCQkJCQloc3YuaCArPSAxOw0KCQkJCQkJfSBlbHNlIGlmIChoc3YuaCA+IDEpIHsNCgkJCQkJCQloc3YuaCAtPSAxOw0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJcmV0dXJuIGhzdjsNCgkJCQl9LA0KCQkJCV9oc3ZfdG9fcmdiID0gZnVuY3Rpb24oaHN2KSB7DQoJCQkJCXZhciByZ2IgPSB7DQoJCQkJCQkJcjogMCwNCgkJCQkJCQlnOiAwLA0KCQkJCQkJCWI6IDANCgkJCQkJCX0sDQoJCQkJCQl2YXJfaCwNCgkJCQkJCXZhcl9pLA0KCQkJCQkJdmFyXzEsDQoJCQkJCQl2YXJfMiwNCgkJCQkJCXZhcl8zOw0KDQoJCQkJCWlmIChoc3YucyA9PT0gMCkgew0KCQkJCQkJcmdiLnIgPSByZ2IuZyA9IHJnYi5iID0gaHN2LnY7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQl2YXJfaCA9IGhzdi5oID09PSAxID8gMCA6IGhzdi5oICogNjsNCgkJCQkJCXZhcl9pID0gTWF0aC5mbG9vcih2YXJfaCk7DQoJCQkJCQl2YXJfMSA9IGhzdi52ICogKDEgLSBoc3Yucyk7DQoJCQkJCQl2YXJfMiA9IGhzdi52ICogKDEgLSBoc3YucyAqICh2YXJfaCAtIHZhcl9pKSk7DQoJCQkJCQl2YXJfMyA9IGhzdi52ICogKDEgLSBoc3YucyAqICgxIC0gKHZhcl9oIC0gdmFyX2kpKSk7DQoNCgkJCQkJCWlmICh2YXJfaSA9PT0gMCkgew0KCQkJCQkJCXJnYi5yID0gaHN2LnY7DQoJCQkJCQkJcmdiLmcgPSB2YXJfMzsNCgkJCQkJCQlyZ2IuYiA9IHZhcl8xOw0KCQkJCQkJfSBlbHNlIGlmICh2YXJfaSA9PT0gMSkgew0KCQkJCQkJCXJnYi5yID0gdmFyXzI7DQoJCQkJCQkJcmdiLmcgPSBoc3YudjsNCgkJCQkJCQlyZ2IuYiA9IHZhcl8xOw0KCQkJCQkJfSBlbHNlIGlmICh2YXJfaSA9PT0gMikgew0KCQkJCQkJCXJnYi5yID0gdmFyXzE7DQoJCQkJCQkJcmdiLmcgPSBoc3YudjsNCgkJCQkJCQlyZ2IuYiA9IHZhcl8zOw0KCQkJCQkJfSBlbHNlIGlmICh2YXJfaSA9PT0gMykgew0KCQkJCQkJCXJnYi5yID0gdmFyXzE7DQoJCQkJCQkJcmdiLmcgPSB2YXJfMjsNCgkJCQkJCQlyZ2IuYiA9IGhzdi52Ow0KCQkJCQkJfSBlbHNlIGlmICh2YXJfaSA9PT0gNCkgew0KCQkJCQkJCXJnYi5yID0gdmFyXzM7DQoJCQkJCQkJcmdiLmcgPSB2YXJfMTsNCgkJCQkJCQlyZ2IuYiA9IGhzdi52Ow0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlyZ2IuciA9IGhzdi52Ow0KCQkJCQkJCXJnYi5nID0gdmFyXzE7DQoJCQkJCQkJcmdiLmIgPSB2YXJfMjsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCXJldHVybiByZ2I7DQoJCQkJfSwNCgkJCQlfcmdiX3RvX2hzbCA9IGZ1bmN0aW9uKHJnYikgew0KCQkJCQl2YXIgbWluVmFsID0gTWF0aC5taW4ocmdiLnIsIHJnYi5nLCByZ2IuYiksDQoJCQkJCQltYXhWYWwgPSBNYXRoLm1heChyZ2IuciwgcmdiLmcsIHJnYi5iKSwNCgkJCQkJCWRlbHRhID0gbWF4VmFsIC0gbWluVmFsLA0KCQkJCQkJZGVsX1IsIGRlbF9HLCBkZWxfQiwNCgkJCQkJCWhzbCA9IHsNCgkJCQkJCQloOiAwLA0KCQkJCQkJCXM6IDAsDQoJCQkJCQkJbDogKG1heFZhbCArIG1pblZhbCkgLyAyDQoJCQkJCQl9Ow0KDQoJCQkJCWlmIChkZWx0YSA9PT0gMCkgew0KCQkJCQkJaHNsLmggPSAwOw0KCQkJCQkJaHNsLnMgPSAwOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJaHNsLnMgPSBoc2wubCA8IDAuNSA/IGRlbHRhIC8gKG1heFZhbCArIG1pblZhbCkgOiBkZWx0YSAvICgyIC0gbWF4VmFsIC0gbWluVmFsKTsNCg0KCQkJCQkJZGVsX1IgPSAoKChtYXhWYWwgLSByZ2IucikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhOw0KCQkJCQkJZGVsX0cgPSAoKChtYXhWYWwgLSByZ2IuZykgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhOw0KCQkJCQkJZGVsX0IgPSAoKChtYXhWYWwgLSByZ2IuYikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhOw0KDQoJCQkJCQlpZiAocmdiLnIgPT09IG1heFZhbCkgew0KCQkJCQkJCWhzbC5oID0gZGVsX0IgLSBkZWxfRzsNCgkJCQkJCX0gZWxzZSBpZiAocmdiLmcgPT09IG1heFZhbCkgew0KCQkJCQkJCWhzbC5oID0gKDEgLyAzKSArIGRlbF9SIC0gZGVsX0I7DQoJCQkJCQl9IGVsc2UgaWYgKHJnYi5iID09PSBtYXhWYWwpIHsNCgkJCQkJCQloc2wuaCA9ICgyIC8gMykgKyBkZWxfRyAtIGRlbF9SOw0KCQkJCQkJfQ0KDQoJCQkJCQlpZiAoaHNsLmggPCAwKSB7DQoJCQkJCQkJaHNsLmggKz0gMTsNCgkJCQkJCX0gZWxzZSBpZiAoaHNsLmggPiAxKSB7DQoJCQkJCQkJaHNsLmggLT0gMTsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJCQkJCXJldHVybiBoc2w7DQoJCQkJfSwNCgkJCQlfaHNsX3RvX3JnYiA9IGZ1bmN0aW9uKGhzbCkgew0KCQkJCQl2YXIgdmFyXzEsDQoJCQkJCQl2YXJfMiwNCgkJCQkJCWh1ZV90b19yZ2IJPSBmdW5jdGlvbih2MSwgdjIsIHZIKSB7DQoJCQkJCQkJCQkJaWYgKHZIIDwgMCkgew0KCQkJCQkJCQkJCQl2SCArPSAxOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQlpZiAodkggPiAxKSB7DQoJCQkJCQkJCQkJCXZIIC09IDE7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWlmICgoNiAqIHZIKSA8IDEpIHsNCgkJCQkJCQkJCQkJcmV0dXJuIHYxICsgKHYyIC0gdjEpICogNiAqIHZIOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQlpZiAoKDIgKiB2SCkgPCAxKSB7DQoJCQkJCQkJCQkJCXJldHVybiB2MjsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJaWYgKCgzICogdkgpIDwgMikgew0KCQkJCQkJCQkJCQlyZXR1cm4gdjEgKyAodjIgLSB2MSkgKiAoKDIgLyAzKSAtIHZIKSAqIDY7DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCXJldHVybiB2MTsNCgkJCQkJCQkJCX07DQoNCgkJCQkJaWYgKGhzbC5zID09PSAwKSB7DQoJCQkJCQlyZXR1cm4gew0KCQkJCQkJCXI6IGhzbC5sLA0KCQkJCQkJCWc6IGhzbC5sLA0KCQkJCQkJCWI6IGhzbC5sDQoJCQkJCQl9Ow0KCQkJCQl9DQoNCgkJCQkJdmFyXzIgPSAoaHNsLmwgPCAwLjUpID8gaHNsLmwgKiAoMSArIGhzbC5zKSA6IChoc2wubCArIGhzbC5zKSAtIChoc2wucyAqIGhzbC5sKTsNCgkJCQkJdmFyXzEgPSAyICogaHNsLmwgLSB2YXJfMjsNCg0KCQkJCQlyZXR1cm4gew0KCQkJCQkJcjogaHVlX3RvX3JnYih2YXJfMSwgdmFyXzIsIGhzbC5oICsgKDEgLyAzKSksDQoJCQkJCQlnOiBodWVfdG9fcmdiKHZhcl8xLCB2YXJfMiwgaHNsLmgpLA0KCQkJCQkJYjogaHVlX3RvX3JnYih2YXJfMSwgdmFyXzIsIGhzbC5oIC0gKDEgLyAzKSkNCgkJCQkJfTsNCgkJCQl9LA0KCQkJCV94eXpfdG9fbGFiID0gZnVuY3Rpb24oeHl6KSB7DQoJCQkJCS8vIENJRS1MKmFiIEQ2NSAxOTMxDQoJCQkJCXZhciB4ID0geHl6LnggLyAwLjk1MDQ3LA0KCQkJCQkJeSA9IHh5ei55LA0KCQkJCQkJeiA9IHh5ei56IC8gMS4wODg4MzsNCg0KCQkJCQl4ID0gKHggPiAwLjAwODg1NikgPyBNYXRoLnBvdyh4LCAoMS8zKSkgOiAoNy43ODcgKiB4KSArICgxNi8xMTYpOw0KCQkJCQl5ID0gKHkgPiAwLjAwODg1NikgPyBNYXRoLnBvdyh5LCAoMS8zKSkgOiAoNy43ODcgKiB5KSArICgxNi8xMTYpOw0KCQkJCQl6ID0gKHogPiAwLjAwODg1NikgPyBNYXRoLnBvdyh6LCAoMS8zKSkgOiAoNy43ODcgKiB6KSArICgxNi8xMTYpOw0KDQoJCQkJCXJldHVybiB7DQoJCQkJCQlsOiAoKDExNiAqIHkpIC0gMTYpIC8gMTAwLAkvLyBbMCwxMDBdDQoJCQkJCQlhOiAoKDUwMCAqICh4IC0geSkpICsgMTI4KSAvIDI1NSwJLy8gWy0xMjgsMTI3XQ0KCQkJCQkJYjogKCgyMDAgKiAoeSAtIHopKQkrIDEyOCkgLyAyNTUJLy8gWy0xMjgsMTI3XQ0KCQkJCQl9Ow0KCQkJCX0sDQoJCQkJX2xhYl90b194eXogPSBmdW5jdGlvbihsYWIpIHsNCgkJCQkJdmFyIGxhYjIgPSB7DQoJCQkJCQkJbDogbGFiLmwgKiAxMDAsDQoJCQkJCQkJYTogKGxhYi5hICogMjU1KSAtIDEyOCwNCgkJCQkJCQliOiAobGFiLmIgKiAyNTUpIC0gMTI4DQoJCQkJCQl9LA0KCQkJCQkJeHl6ID0gew0KCQkJCQkJCXg6IDAsDQoJCQkJCQkJeTogKGxhYjIubCArIDE2KSAvIDExNiwNCgkJCQkJCQl6OiAwDQoJCQkJCQl9Ow0KDQoJCQkJCXh5ei54ID0gbGFiMi5hIC8gNTAwICsgeHl6Lnk7DQoJCQkJCXh5ei56ID0geHl6LnkgLSBsYWIyLmIgLyAyMDA7DQoNCgkJCQkJeHl6LnggPSAoTWF0aC5wb3coeHl6LngsIDMpID4gMC4wMDg4NTYpID8gTWF0aC5wb3coeHl6LngsIDMpIDogKHh5ei54IC0gMTYgLyAxMTYpIC8gNy43ODc7DQoJCQkJCXh5ei55ID0gKE1hdGgucG93KHh5ei55LCAzKSA+IDAuMDA4ODU2KSA/IE1hdGgucG93KHh5ei55LCAzKSA6ICh4eXoueSAtIDE2IC8gMTE2KSAvIDcuNzg3Ow0KCQkJCQl4eXoueiA9IChNYXRoLnBvdyh4eXoueiwgMykgPiAwLjAwODg1NikgPyBNYXRoLnBvdyh4eXoueiwgMykgOiAoeHl6LnogLSAxNiAvIDExNikgLyA3Ljc4NzsNCg0KCQkJCQl4eXoueCAqPSAwLjk1MDQ3Ow0KCQkJCQl4eXoueSAqPSAxOw0KCQkJCQl4eXoueiAqPSAxLjA4ODgzOw0KDQoJCQkJCXJldHVybiB4eXo7DQoJCQkJfSwNCgkJCQlfcmdiX3RvX2NteSA9IGZ1bmN0aW9uKHJnYikgew0KCQkJCQlyZXR1cm4gew0KCQkJCQkJYzogMSAtIChyZ2IuciksDQoJCQkJCQltOiAxIC0gKHJnYi5nKSwNCgkJCQkJCXk6IDEgLSAocmdiLmIpDQoJCQkJCX07DQoJCQkJfSwNCgkJCQlfY215X3RvX3JnYiA9IGZ1bmN0aW9uKGNteSkgew0KCQkJCQlyZXR1cm4gew0KCQkJCQkJcjogMSAtIChjbXkuYyksDQoJCQkJCQlnOiAxIC0gKGNteS5tKSwNCgkJCQkJCWI6IDEgLSAoY215LnkpDQoJCQkJCX07DQoJCQkJfSwNCgkJCQlfY215X3RvX2NteWsgPSBmdW5jdGlvbihjbXkpIHsNCgkJCQkJdmFyIEsgPSAxOw0KDQoJCQkJCWlmIChjbXkuYyA8IEspIHsNCgkJCQkJCUsgPSBjbXkuYzsNCgkJCQkJfQ0KCQkJCQlpZiAoY215Lm0gPCBLKSB7DQoJCQkJCQlLID0gY215Lm07DQoJCQkJCX0NCgkJCQkJaWYgKGNteS55IDwgSykgew0KCQkJCQkJSyA9IGNteS55Ow0KCQkJCQl9DQoNCgkJCQkJaWYgKEsgPT0gMSkgew0KCQkJCQkJcmV0dXJuIHsNCgkJCQkJCQljOiAwLA0KCQkJCQkJCW06IDAsDQoJCQkJCQkJeTogMCwNCgkJCQkJCQlrOiAxDQoJCQkJCQl9Ow0KCQkJCQl9DQoNCgkJCQkJcmV0dXJuIHsNCgkJCQkJCWM6IChjbXkuYyAtIEspIC8gKDEgLSBLKSwNCgkJCQkJCW06IChjbXkubSAtIEspIC8gKDEgLSBLKSwNCgkJCQkJCXk6IChjbXkueSAtIEspIC8gKDEgLSBLKSwNCgkJCQkJCWs6IEsNCgkJCQkJfTsNCgkJCQl9LA0KCQkJCV9jbXlrX3RvX2NteSA9IGZ1bmN0aW9uKGNteWspIHsNCgkJCQkJcmV0dXJuIHsNCgkJCQkJCWM6IGNteWsuYyAqICgxIC0gY215ay5rKSArIGNteWsuaywNCgkJCQkJCW06IGNteWsubSAqICgxIC0gY215ay5rKSArIGNteWsuaywNCgkJCQkJCXk6IGNteWsueSAqICgxIC0gY215ay5rKSArIGNteWsuaw0KCQkJCQl9Ow0KCQkJCX07DQoNCgkJCXRoaXMuc2V0ID0gdHJ1ZTsNCg0KCQkJdGhpcy5zZXRBbHBoYSA9IGZ1bmN0aW9uKF9hKSB7DQoJCQkJaWYgKF9hICE9PSBudWxsKSB7DQoJCQkJCWEgPSBfY2xpcChfYSk7DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHRoaXM7DQoJCQl9Ow0KDQoJCQl0aGlzLmdldEFscGhhID0gZnVuY3Rpb24oKSB7DQoJCQkJcmV0dXJuIGE7DQoJCQl9Ow0KDQoJCQl0aGlzLnNldFJHQiA9IGZ1bmN0aW9uKHIsIGcsIGIpIHsNCgkJCQlzcGFjZXMgPSB7cmdiOiB0aGlzLmdldFJHQigpfTsNCgkJCQlpZiAociAhPT0gbnVsbCkgew0KCQkJCQlzcGFjZXMucmdiLnIgPSBfY2xpcChyKTsNCgkJCQl9DQoJCQkJaWYgKGcgIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLnJnYi5nID0gX2NsaXAoZyk7DQoJCQkJfQ0KCQkJCWlmIChiICE9PSBudWxsKSB7DQoJCQkJCXNwYWNlcy5yZ2IuYiA9IF9jbGlwKGIpOw0KCQkJCX0NCg0KCQkJCXJldHVybiB0aGlzOw0KCQkJfTsNCg0KCQkJdGhpcy5zZXRIU1YgPSBmdW5jdGlvbihoLCBzLCB2KSB7DQoJCQkJc3BhY2VzID0ge2hzdjogdGhpcy5nZXRIU1YoKX07DQoJCQkJaWYgKGggIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLmhzdi5oID0gX2NsaXAoaCk7DQoJCQkJfQ0KCQkJCWlmIChzICE9PSBudWxsKQl7DQoJCQkJCXNwYWNlcy5oc3YucyA9IF9jbGlwKHMpOw0KCQkJCX0NCgkJCQlpZiAodiAhPT0gbnVsbCkJew0KCQkJCQlzcGFjZXMuaHN2LnYgPSBfY2xpcCh2KTsNCgkJCQl9DQoNCgkJCQlyZXR1cm4gdGhpczsNCgkJCX07DQoNCgkJCXRoaXMuc2V0SFNMID0gZnVuY3Rpb24oaCwgcywgbCkgew0KCQkJCXNwYWNlcyA9IHtoc2w6IHRoaXMuZ2V0SFNMKCl9Ow0KCQkJCWlmIChoICE9PSBudWxsKQl7DQoJCQkJCXNwYWNlcy5oc2wuaCA9IF9jbGlwKGgpOw0KCQkJCX0NCgkJCQlpZiAocyAhPT0gbnVsbCkgew0KCQkJCQlzcGFjZXMuaHNsLnMgPSBfY2xpcChzKTsNCgkJCQl9DQoJCQkJaWYgKGwgIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLmhzbC5sID0gX2NsaXAobCk7DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHRoaXM7DQoJCQl9Ow0KDQoJCQl0aGlzLnNldExBQiA9IGZ1bmN0aW9uKGwsIGEsIGIpIHsNCgkJCQlzcGFjZXMgPSB7bGFiOiB0aGlzLmdldExBQigpfTsNCgkJCQlpZiAobCAhPT0gbnVsbCkgew0KCQkJCQlzcGFjZXMubGFiLmwgPSBfY2xpcChsKTsNCgkJCQl9DQoJCQkJaWYgKGEgIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLmxhYi5hID0gX2NsaXAoYSk7DQoJCQkJfQ0KCQkJCWlmIChiICE9PSBudWxsKSB7DQoJCQkJCXNwYWNlcy5sYWIuYiA9IF9jbGlwKGIpOw0KCQkJCX0NCg0KCQkJCXJldHVybiB0aGlzOw0KCQkJfTsNCg0KCQkJdGhpcy5zZXRDTVlLID0gZnVuY3Rpb24oYywgbSwgeSwgaykgew0KCQkJCXNwYWNlcyA9IHtjbXlrOiB0aGlzLmdldENNWUsoKX07DQoJCQkJaWYgKGMgIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLmNteWsuYyA9IF9jbGlwKGMpOw0KCQkJCX0NCgkJCQlpZiAobSAhPT0gbnVsbCkgew0KCQkJCQlzcGFjZXMuY215ay5tID0gX2NsaXAobSk7DQoJCQkJfQ0KCQkJCWlmICh5ICE9PSBudWxsKSB7DQoJCQkJCXNwYWNlcy5jbXlrLnkgPSBfY2xpcCh5KTsNCgkJCQl9DQoJCQkJaWYgKGsgIT09IG51bGwpIHsNCgkJCQkJc3BhY2VzLmNteWsuayA9IF9jbGlwKGspOw0KCQkJCX0NCg0KCQkJCXJldHVybiB0aGlzOw0KCQkJfTsNCg0KCQkJdGhpcy5nZXRSR0IgPSBmdW5jdGlvbigpIHsNCgkJCQlpZiAoIXNwYWNlcy5yZ2IpIHsNCgkJCQkJc3BhY2VzLnJnYgk9IHNwYWNlcy5sYWIgPwlfeHl6X3RvX3JnYihfbGFiX3RvX3h5eihzcGFjZXMubGFiKSkNCgkJCQkJCQkJOiBzcGFjZXMuaHN2ID8JX2hzdl90b19yZ2Ioc3BhY2VzLmhzdikNCgkJCQkJCQkJOiBzcGFjZXMuaHNsID8JX2hzbF90b19yZ2Ioc3BhY2VzLmhzbCkNCgkJCQkJCQkJOiBzcGFjZXMuY215ayA/CV9jbXlfdG9fcmdiKF9jbXlrX3RvX2NteShzcGFjZXMuY215aykpDQoJCQkJCQkJCToge3I6IDAsIGc6IDAsIGI6IDB9Ow0KCQkJCQlzcGFjZXMucmdiLnIgPSBfY2xpcChzcGFjZXMucmdiLnIpOw0KCQkJCQlzcGFjZXMucmdiLmcgPSBfY2xpcChzcGFjZXMucmdiLmcpOw0KCQkJCQlzcGFjZXMucmdiLmIgPSBfY2xpcChzcGFjZXMucmdiLmIpOw0KCQkJCX0NCgkJCQlyZXR1cm4gJC5leHRlbmQoe30sIHNwYWNlcy5yZ2IpOw0KCQkJfTsNCg0KCQkJdGhpcy5nZXRIU1YgPSBmdW5jdGlvbigpIHsNCgkJCQlpZiAoIXNwYWNlcy5oc3YpIHsNCgkJCQkJc3BhY2VzLmhzdgk9IHNwYWNlcy5sYWIgPyBfcmdiX3RvX2hzdih0aGlzLmdldFJHQigpKQ0KCQkJCQkJCQk6IHNwYWNlcy5yZ2IgPwlfcmdiX3RvX2hzdihzcGFjZXMucmdiKQ0KCQkJCQkJCQk6IHNwYWNlcy5oc2wgPwlfcmdiX3RvX2hzdih0aGlzLmdldFJHQigpKQ0KCQkJCQkJCQk6IHNwYWNlcy5jbXlrID8JX3JnYl90b19oc3YodGhpcy5nZXRSR0IoKSkNCgkJCQkJCQkJOiB7aDogMCwgczogMCwgdjogMH07DQoJCQkJCXNwYWNlcy5oc3YuaCA9IF9jbGlwKHNwYWNlcy5oc3YuaCk7DQoJCQkJCXNwYWNlcy5oc3YucyA9IF9jbGlwKHNwYWNlcy5oc3Yucyk7DQoJCQkJCXNwYWNlcy5oc3YudiA9IF9jbGlwKHNwYWNlcy5oc3Yudik7DQoJCQkJfQ0KCQkJCXJldHVybiAkLmV4dGVuZCh7fSwgc3BhY2VzLmhzdik7DQoJCQl9Ow0KDQoJCQl0aGlzLmdldEhTTCA9IGZ1bmN0aW9uKCkgew0KCQkJCWlmICghc3BhY2VzLmhzbCkgew0KCQkJCQlzcGFjZXMuaHNsCT0gc3BhY2VzLnJnYiA/CV9yZ2JfdG9faHNsKHNwYWNlcy5yZ2IpDQoJCQkJCQkJCTogc3BhY2VzLmhzdiA/CV9yZ2JfdG9faHNsKHRoaXMuZ2V0UkdCKCkpDQoJCQkJCQkJCTogc3BhY2VzLmNteWsgPwlfcmdiX3RvX2hzbCh0aGlzLmdldFJHQigpKQ0KCQkJCQkJCQk6IHNwYWNlcy5oc3YgPwlfcmdiX3RvX2hzbCh0aGlzLmdldFJHQigpKQ0KCQkJCQkJCQk6IHtoOiAwLCBzOiAwLCBsOiAwfTsNCgkJCQkJc3BhY2VzLmhzbC5oID0gX2NsaXAoc3BhY2VzLmhzbC5oKTsNCgkJCQkJc3BhY2VzLmhzbC5zID0gX2NsaXAoc3BhY2VzLmhzbC5zKTsNCgkJCQkJc3BhY2VzLmhzbC5sID0gX2NsaXAoc3BhY2VzLmhzbC5sKTsNCgkJCQl9DQoJCQkJcmV0dXJuICQuZXh0ZW5kKHt9LCBzcGFjZXMuaHNsKTsNCgkJCX07DQoNCgkJCXRoaXMuZ2V0Q01ZSyA9IGZ1bmN0aW9uKCkgew0KCQkJCWlmICghc3BhY2VzLmNteWspIHsNCgkJCQkJc3BhY2VzLmNteWsJPSBzcGFjZXMucmdiID8JX2NteV90b19jbXlrKF9yZ2JfdG9fY215KHNwYWNlcy5yZ2IpKQ0KCQkJCQkJCQk6IHNwYWNlcy5oc3YgPwlfY215X3RvX2NteWsoX3JnYl90b19jbXkodGhpcy5nZXRSR0IoKSkpDQoJCQkJCQkJCTogc3BhY2VzLmhzbCA/CV9jbXlfdG9fY215ayhfcmdiX3RvX2NteSh0aGlzLmdldFJHQigpKSkNCgkJCQkJCQkJOiBzcGFjZXMubGFiID8JX2NteV90b19jbXlrKF9yZ2JfdG9fY215KHRoaXMuZ2V0UkdCKCkpKQ0KCQkJCQkJCQk6IHtjOiAwLCBtOiAwLCB5OiAwLCBrOiAxfTsNCgkJCQkJc3BhY2VzLmNteWsuYyA9IF9jbGlwKHNwYWNlcy5jbXlrLmMpOw0KCQkJCQlzcGFjZXMuY215ay5tID0gX2NsaXAoc3BhY2VzLmNteWsubSk7DQoJCQkJCXNwYWNlcy5jbXlrLnkgPSBfY2xpcChzcGFjZXMuY215ay55KTsNCgkJCQkJc3BhY2VzLmNteWsuayA9IF9jbGlwKHNwYWNlcy5jbXlrLmspOw0KCQkJCX0NCgkJCQlyZXR1cm4gJC5leHRlbmQoe30sIHNwYWNlcy5jbXlrKTsNCgkJCX07DQoNCgkJCXRoaXMuZ2V0TEFCID0gZnVuY3Rpb24oKSB7DQoJCQkJaWYgKCFzcGFjZXMubGFiKSB7DQoJCQkJCXNwYWNlcy5sYWIJPSBzcGFjZXMucmdiID8JX3h5el90b19sYWIoX3JnYl90b194eXooc3BhY2VzLnJnYikpDQoJCQkJCQkJCTogc3BhY2VzLmhzdiA/CV94eXpfdG9fbGFiKF9yZ2JfdG9feHl6KHRoaXMuZ2V0UkdCKCkpKQ0KCQkJCQkJCQk6IHNwYWNlcy5oc2wgPwlfeHl6X3RvX2xhYihfcmdiX3RvX3h5eih0aGlzLmdldFJHQigpKSkNCgkJCQkJCQkJOiBzcGFjZXMuY215ayA/CV94eXpfdG9fbGFiKF9yZ2JfdG9feHl6KHRoaXMuZ2V0UkdCKCkpKQ0KCQkJCQkJCQk6IHtsOiAwLCBhOiAwLCBiOiAwfTsNCgkJCQkJc3BhY2VzLmxhYi5sID0gX2NsaXAoc3BhY2VzLmxhYi5sKTsNCgkJCQkJc3BhY2VzLmxhYi5hID0gX2NsaXAoc3BhY2VzLmxhYi5hKTsNCgkJCQkJc3BhY2VzLmxhYi5iID0gX2NsaXAoc3BhY2VzLmxhYi5iKTsNCgkJCQl9DQoJCQkJcmV0dXJuICQuZXh0ZW5kKHt9LCBzcGFjZXMubGFiKTsNCgkJCX07DQoNCgkJCXRoaXMuZ2V0Q2hhbm5lbHMgPSBmdW5jdGlvbigpIHsNCgkJCQlyZXR1cm4gew0KCQkJCQlyOgl0aGlzLmdldFJHQigpLnIsDQoJCQkJCWc6CXRoaXMuZ2V0UkdCKCkuZywNCgkJCQkJYjoJdGhpcy5nZXRSR0IoKS5iLA0KCQkJCQlhOgl0aGlzLmdldEFscGhhKCksDQoJCQkJCWg6CXRoaXMuZ2V0SFNWKCkuaCwNCgkJCQkJczoJdGhpcy5nZXRIU1YoKS5zLA0KCQkJCQl2Ogl0aGlzLmdldEhTVigpLnYsDQoJCQkJCWM6CXRoaXMuZ2V0Q01ZSygpLmMsDQoJCQkJCW06CXRoaXMuZ2V0Q01ZSygpLm0sDQoJCQkJCXk6CXRoaXMuZ2V0Q01ZSygpLnksDQoJCQkJCWs6CXRoaXMuZ2V0Q01ZSygpLmssDQoJCQkJCUw6CXRoaXMuZ2V0TEFCKCkubCwNCgkJCQkJQToJdGhpcy5nZXRMQUIoKS5hLA0KCQkJCQlCOgl0aGlzLmdldExBQigpLmINCgkJCQl9Ow0KCQkJfTsNCgkJCQ0KCQkJdGhpcy5nZXRTcGFjZXMgPSBmdW5jdGlvbigpIHsNCgkJCQlyZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHNwYWNlcyk7DQoJCQl9Ow0KCQkJDQoJCQl0aGlzLnNldFNwYWNlcyA9IGZ1bmN0aW9uKG5ld19zcGFjZXMpIHsNCgkJCQlzcGFjZXMgPSBuZXdfc3BhY2VzOw0KCQkJCXJldHVybiB0aGlzOw0KCQkJfTsNCgkJCQ0KCQkJdGhpcy5kaXN0YW5jZSA9IGZ1bmN0aW9uKGNvbG9yKSB7DQoJCQkJdmFyIHNwYWNlCT0gJ2xhYicsDQoJCQkJCWdldHRlcgk9ICdnZXQnK3NwYWNlLnRvVXBwZXJDYXNlKCksDQoJCQkJCWEgPSB0aGlzW2dldHRlcl0oKSwNCgkJCQkJYiA9IGNvbG9yW2dldHRlcl0oKSwNCgkJCQkJZGlzdGFuY2UgPSAwLA0KCQkJCQljaGFubmVsOw0KDQoJCQkJZm9yIChjaGFubmVsIGluIGEpIHsNCgkJCQkJZGlzdGFuY2UgKz0gTWF0aC5wb3coYVtjaGFubmVsXSAtIGJbY2hhbm5lbF0sIDIpOw0KCQkJCX0NCg0KCQkJCXJldHVybiBkaXN0YW5jZTsNCgkJCX07DQoNCgkJCXRoaXMuZXF1YWxzID0gZnVuY3Rpb24oY29sb3IpIHsNCgkJCQl2YXIgYSA9IHRoaXMuZ2V0UkdCKCksDQoJCQkJCWIgPSBjb2xvci5nZXRSR0IoKTsNCg0KCQkJCXJldHVybiB0aGlzLmdldEFscGhhKCkgPT0gY29sb3IuZ2V0QWxwaGEoKQ0KCQkJCQkmJiBhLnIgPT0gYi5yDQoJCQkJCSYmIGEuZyA9PSBiLmcNCgkJCQkJJiYgYS5iID09IGIuYjsNCgkJCX07DQoNCgkJCXRoaXMubGltaXQgPSBmdW5jdGlvbihzdGVwcykgew0KCQkJCXN0ZXBzIC09IDE7DQoJCQkJdmFyIHJnYiA9IHRoaXMuZ2V0UkdCKCk7DQoJCQkJdGhpcy5zZXRSR0IoDQoJCQkJCU1hdGgucm91bmQocmdiLnIgKiBzdGVwcykgLyBzdGVwcywNCgkJCQkJTWF0aC5yb3VuZChyZ2IuZyAqIHN0ZXBzKSAvIHN0ZXBzLA0KCQkJCQlNYXRoLnJvdW5kKHJnYi5iICogc3RlcHMpIC8gc3RlcHMNCgkJCQkpOw0KCQkJfTsNCg0KCQkJdGhpcy50b0hleCA9IGZ1bmN0aW9uKCkgew0KCQkJCXZhciByZ2IgPSB0aGlzLmdldFJHQigpOw0KCQkJCXJldHVybiBfaGV4aWZ5KHJnYi5yICogMjU1KSArIF9oZXhpZnkocmdiLmcgKiAyNTUpICsgX2hleGlmeShyZ2IuYiAqIDI1NSk7DQoJCQl9Ow0KDQoJCQl0aGlzLnRvQ1NTID0gZnVuY3Rpb24oKSB7DQoJCQkJcmV0dXJuICcjJyArIHRoaXMudG9IZXgoKTsNCgkJCX07DQoNCgkJCXRoaXMubm9ybWFsaXplID0gZnVuY3Rpb24oKSB7DQoJCQkJdGhpcy5zZXRIU1YobnVsbCwgMSwgMSk7DQoJCQkJcmV0dXJuIHRoaXM7DQoJCQl9Ow0KDQoJCQl0aGlzLmNvcHkgPSBmdW5jdGlvbigpIHsNCgkJCQl2YXIgc3BhY2VzID0gdGhpcy5nZXRTcGFjZXMoKSwNCgkJCQkJYSA9IHRoaXMuZ2V0QWxwaGEoKTsNCgkJCQlyZXR1cm4gbmV3IENvbG9yKHNwYWNlcywgYSk7DQoJCQl9Ow0KDQoJCQkvLyBDb25zdHJ1Y3QNCgkJCWlmIChhcmdzLmxlbmd0aCA9PSAyKSB7DQoJCQkJdGhpcy5zZXRTcGFjZXMoYXJnc1swXSk7DQoJCQkJdGhpcy5zZXRBbHBoYShhcmdzWzFdID09PSAwID8gMCA6IGFyZ3NbMV0gfHwgMSk7DQoJCQl9DQoJCQlpZiAoYXJncy5sZW5ndGggPiAyKSB7DQoJCQkJdGhpcy5zZXRSR0IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7DQoJCQkJdGhpcy5zZXRBbHBoYShhcmdzWzNdID09PSAwID8gMCA6IGFyZ3NbM10gfHwgMSk7DQoJCQl9DQoJCX07DQoNCgkkLndpZGdldCgidmFuZGVybGVlLmNvbG9ycGlja2VyIiwgew0KCQlvcHRpb25zOiB7DQoJCQlhbHBoYToJCQkJZmFsc2UsCQkvLyBTaG93IGFscGhhIGNvbnRyb2xzIGFuZCBtb2RlDQoJCQlhbHRBbHBoYToJCQl0cnVlLAkJLy8gY2hhbmdlIG9wYWNpdHkgb2YgYWx0RmllbGQgYXMgd2VsbD8NCgkJCWFsdEZpZWxkOgkJCScnLAkJCS8vIHNlbGVjdG9yIGZvciBET00gZWxlbWVudHMgd2hpY2ggY2hhbmdlIGJhY2tncm91bmQgY29sb3Igb24gY2hhbmdlLg0KCQkJYWx0T25DaGFuZ2U6CQl0cnVlLAkJLy8gdHJ1ZSB0byB1cGRhdGUgb24gZWFjaCBjaGFuZ2UsIGZhbHNlIHRvIHVwZGF0ZSBvbmx5IG9uIGNsb3NlLg0KCQkJYWx0UHJvcGVydGllczoJCSdiYWNrZ3JvdW5kLWNvbG9yJywJLy8gY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYW55IG9mICdiYWNrZ3JvdW5kLWNvbG9yJywgJ2NvbG9yJywgJ2JvcmRlci1jb2xvcicsICdvdXRsaW5lLWNvbG9yJw0KCQkJYXV0b09wZW46CQkJZmFsc2UsCQkvLyBPcGVuIGRpYWxvZyBhdXRvbWF0aWNhbGx5IHVwb24gY3JlYXRpb24NCgkJCWJ1dHRvbkNvbG9yaXplOgkJZmFsc2UsDQoJCQlidXR0b25JbWFnZToJCSdpbWFnZXMvdWktY29sb3JwaWNrZXIucG5nJywNCgkJCWJ1dHRvbkltYWdlT25seToJZmFsc2UsDQoJCQlidXR0b25UZXh0OgkJCW51bGwsCQkvLyBUZXh0IG9uIHRoZSBidXR0b24gYW5kL29yIHRpdGxlIG9mIGJ1dHRvbiBpbWFnZS4NCgkJCWNsb3NlT25Fc2NhcGU6CQl0cnVlLAkJLy8gQ2xvc2UgdGhlIGRpYWxvZyB3aGVuIHRoZSBlc2NhcGUga2V5IGlzIHByZXNzZWQuDQoJCQljbG9zZU9uT3V0c2lkZToJCXRydWUsCQkvLyBDbG9zZSB0aGUgZGlhbG9nIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSB0aGUgZGlhbG9nIChub3QgZm9yIGlubGluZSkNCgkJCWNvbG9yOgkJCQknIzAwRkYwMCcsCS8vIEluaXRpYWwgY29sb3IgKGZvciBpbmxpbmUgb25seSkNCgkJCWNvbG9yRm9ybWF0OgkJJ0hFWCcsCQkvLyBGb3JtYXQgc3RyaW5nIGZvciBvdXRwdXQgY29sb3IgZm9ybWF0DQoJCQlkcmFnZ2FibGU6CQkJdHJ1ZSwJCS8vIE1ha2UgcG9wdXAgZGlhbG9nIGRyYWdnYWJsZSBpZiBoZWFkZXIgaXMgdmlzaWJsZS4NCgkJCWR1cmF0aW9uOgkJCSdmYXN0JywNCgkJCWhzdjoJCQkJdHJ1ZSwJCS8vIFNob3cgSFNWIGNvbnRyb2xzIGFuZCBtb2Rlcw0KCQkJaW5saW5lOgkJCQl0cnVlLAkJLy8gU2hvdyBhbnkgZGl2cyBhcyBpbmxpbmUgYnkgZGVmYXVsdA0KCQkJbGF5b3V0OiB7DQoJCQkJbWFwOgkJWzAsIDAsIDEsIDVdLAkvLyBMZWZ0LCBUb3AsIFdpZHRoLCBIZWlnaHQgKGluIHRhYmxlIGNlbGxzKS4NCgkJCQliYXI6CQlbMSwgMCwgMSwgNV0sDQoJCQkJcHJldmlldzoJWzIsIDAsIDEsIDFdLA0KCQkJCWhzdjoJCVsyLCAxLCAxLCAxXSwNCgkJCQlyZ2I6CQlbMiwgMiwgMSwgMV0sDQoJCQkJYWxwaGE6CQlbMiwgMywgMSwgMV0sDQoJCQkJaGV4OgkJWzIsIDQsIDEsIDFdLA0KCQkJCWxhYjoJCVszLCAxLCAxLCAxXSwNCgkJCQljbXlrOgkJWzMsIDIsIDEsIDJdLA0KCQkJCXN3YXRjaGVzOglbNCwgMCwgMSwgNV0NCgkJCX0sDQoJCQlsaW1pdDoJCQkJJycsCQkJLy8gTGltaXQgY29sb3IgInJlc29sdXRpb24iOiAnJywgJ3dlYnNhZmUnLCAnbmliYmxlJywgJ2JpbmFyeScsICduYW1lJw0KCQkJbW9kYWw6CQkJCWZhbHNlLAkJLy8gTW9kYWwgZGlhbG9nPw0KCQkJbW9kZToJCQkJJ2gnLAkJLy8gSW5pdGlhbCBlZGl0aW5nIG1vZGUsIGgsIHMsIHYsIHIsIGcsIGIgb3IgYQ0KCQkJcGFydHM6CQkJCScnLAkJCS8vIGxlYXZlIGVtcHR5IGZvciBhdXRvbWF0aWMgc2VsZWN0aW9uDQoJCQlyZWdpb25hbDoJCQknJywNCgkJCXJnYjoJCQkJdHJ1ZSwJCS8vIFNob3cgUkdCIGNvbnRyb2xzIGFuZCBtb2Rlcw0KCQkJc2hvd0FuaW06CQkJJ2ZhZGVJbicsDQoJCQlzaG93Q2FuY2VsQnV0dG9uOgl0cnVlLA0KCQkJc2hvd05vbmVCdXR0b246CQlmYWxzZSwNCgkJCXNob3dDbG9zZUJ1dHRvbjoJdHJ1ZSwNCgkJCXNob3dPbjoJCQkJJ2ZvY3VzJywJLy8gJ2ZvY3VzJywgJ2J1dHRvbicsICdib3RoJw0KCQkJc2hvd09wdGlvbnM6CQl7fSwNCgkJCXN3YXRjaGVzOgkJCW51bGwsDQoJCQl0aXRsZToJCQkJbnVsbCwNCg0KCQkJY2xvc2U6ICAgICAgICAgICAgICBudWxsLA0KCQkJaW5pdDoJCQkJbnVsbCwNCgkJCXNlbGVjdDogICAgICAgICAgICAgbnVsbCwNCgkJCW9wZW46ICAgICAgICAgICAgICAgbnVsbA0KCQl9LA0KDQoJCV9jcmVhdGU6IGZ1bmN0aW9uICgpIHsNCgkJCXZhciB0aGF0ID0gdGhpcywNCgkJCQl0ZXh0Ow0KDQoJCQkrK19jb2xvcnBpY2tlcl9pbmRleDsNCg0KCQkJdGhhdC53aWRnZXRFdmVudFByZWZpeCA9ICdjb2xvcic7DQoNCgkJCXRoYXQub3BlbmVkCQk9IGZhbHNlOw0KCQkJdGhhdC5nZW5lcmF0ZWQJPSBmYWxzZTsNCgkJCXRoYXQuaW5saW5lCQk9IGZhbHNlOw0KCQkJdGhhdC5jaGFuZ2VkCT0gZmFsc2U7DQoNCgkJCXRoYXQuZGlhbG9nCQk9IG51bGw7DQoJCQl0aGF0LmJ1dHRvbgkJPSBudWxsOw0KCQkJdGhhdC5pbWFnZQkJPSBudWxsOw0KCQkJdGhhdC5vdmVybGF5CT0gbnVsbDsNCg0KCQkJdGhhdC5tb2RlCQk9IHRoYXQub3B0aW9ucy5tb2RlOw0KDQoJCQlpZiAodGhhdC5vcHRpb25zLnN3YXRjaGVzID09PSBudWxsKSB7DQoJCQkJdGhhdC5vcHRpb25zLnN3YXRjaGVzID0gX2NvbG9yczsNCgkJCX0NCg0KCQkJaWYgKHRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnIHx8ICF0aGF0Lm9wdGlvbnMuaW5saW5lKSB7DQoJCQkJdGhhdC5fc2V0Q29sb3IodGhhdC5lbGVtZW50LnZhbCgpKTsNCg0KCQkJCXRoaXMuX2NhbGxiYWNrKCdpbml0Jyk7DQoNCgkJCQkkKCdib2R5JykuYXBwZW5kKF9jb250YWluZXJfcG9wdXApOw0KCQkJCXRoYXQuZGlhbG9nID0gJCgnLnVpLWNvbG9ycGlja2VyOmxhc3QnKTsNCg0KCQkJCS8vIENsaWNrIG91dHNpZGUvaW5zaWRlDQoJCQkJJChkb2N1bWVudCkubW91c2Vkb3duKGZ1bmN0aW9uIChldmVudCkgew0KCQkJCQlpZiAoIXRoYXQub3BlbmVkIHx8IGV2ZW50LnRhcmdldCA9PT0gdGhhdC5lbGVtZW50WzBdIHx8IHRoYXQub3ZlcmxheSkgew0KCQkJCQkJcmV0dXJuOw0KCQkJCQl9DQoNCgkJCQkJLy8gQ2hlY2sgaWYgY2xpY2tlZCBvbiBhbnkgcGFydCBvZiBkaWFsb2cNCgkJCQkJaWYgKHRoYXQuZGlhbG9nLmlzKGV2ZW50LnRhcmdldCkgfHwgdGhhdC5kaWFsb2cuaGFzKGV2ZW50LnRhcmdldCkubGVuZ3RoID4gMCkgew0KCQkJCQkJdGhhdC5lbGVtZW50LmJsdXIoKTsJLy8gaW5zaWRlIHdpbmRvdyENCgkJCQkJCXJldHVybjsNCgkJCQkJfQ0KDQoJCQkJCS8vIENoZWNrIGlmIGNsaWNrZWQgb24gYnV0dG9uDQoJCQkJCXZhciBwLA0KCQkJCQkJcGFyZW50cyA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCk7DQoJCQkJCWZvciAocCA9IDA7IHAgPD0gcGFyZW50cy5sZW5ndGg7ICsrcCkgew0KCQkJCQkJaWYgKHRoYXQuYnV0dG9uICE9PSBudWxsICYmIHBhcmVudHNbcF0gPT09IHRoYXQuYnV0dG9uWzBdKSB7DQoJCQkJCQkJcmV0dXJuOw0KCQkJCQkJfQ0KCQkJCQl9DQoNCgkJCQkJLy8gbm8gY2xvc2VPbk91dHNpZGUNCgkJCQkJaWYgKCF0aGF0Lm9wdGlvbnMuY2xvc2VPbk91dHNpZGUpIHsNCgkJCQkJCXJldHVybjsNCgkJCQkJfQ0KDQoJCQkJCXRoYXQuY2xvc2UoKTsNCgkJCQl9KTsNCg0KCQkJCSQoZG9jdW1lbnQpLmtleWRvd24oZnVuY3Rpb24gKGV2ZW50KSB7DQoJCQkJCWlmIChldmVudC5rZXlDb2RlID09IDI3ICYmIHRoYXQub3BlbmVkICYmIHRoYXQub3B0aW9ucy5jbG9zZU9uRXNjYXBlKSB7DQoJCQkJCQl0aGF0LmNsb3NlKCk7DQoJCQkJCX0NCgkJCQl9KTsNCg0KCQkJCWlmICh0aGF0Lm9wdGlvbnMuc2hvd09uID09PSAnZm9jdXMnIHx8IHRoYXQub3B0aW9ucy5zaG93T24gPT09ICdib3RoJykgew0KCQkJCQl0aGF0LmVsZW1lbnQub24oJ2ZvY3VzIGNsaWNrJywgZnVuY3Rpb24gKCkgew0KCQkJCQkJdGhhdC5vcGVuKCk7DQoJCQkJCX0pOw0KCQkJCX0NCgkJCQlpZiAodGhhdC5vcHRpb25zLnNob3dPbiA9PT0gJ2J1dHRvbicgfHwgdGhhdC5vcHRpb25zLnNob3dPbiA9PT0gJ2JvdGgnKSB7DQoJCQkJCWlmICh0aGF0Lm9wdGlvbnMuYnV0dG9uSW1hZ2UgIT09ICcnKSB7DQoJCQkJCQl0ZXh0ID0gdGhhdC5vcHRpb25zLmJ1dHRvblRleHQgfHwgdGhhdC5fZ2V0UmVnaW9uYWwoJ2J1dHRvbicpOw0KDQoJCQkJCQl0aGF0LmltYWdlID0gJCgnPGltZy8+JykuYXR0cih7DQoJCQkJCQkJJ3NyYyc6CQl0aGF0Lm9wdGlvbnMuYnV0dG9uSW1hZ2UsDQoJCQkJCQkJJ2FsdCc6CQl0ZXh0LA0KCQkJCQkJCSd0aXRsZSc6CXRleHQNCgkJCQkJCX0pOw0KDQoJCQkJCQl0aGF0Ll9zZXRJbWFnZUJhY2tncm91bmQoKTsNCgkJCQkJfQ0KDQoJCQkJCWlmICh0aGF0Lm9wdGlvbnMuYnV0dG9uSW1hZ2VPbmx5ICYmIHRoYXQuaW1hZ2UpIHsNCgkJCQkJCXRoYXQuYnV0dG9uID0gdGhhdC5pbWFnZTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXRoYXQuYnV0dG9uID0gJCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iPjwvYnV0dG9uPicpLmh0bWwodGhhdC5pbWFnZSB8fCB0aGF0Lm9wdGlvbnMuYnV0dG9uVGV4dCkuYnV0dG9uKCk7DQoJCQkJCQl0aGF0LmltYWdlID0gdGhhdC5pbWFnZSA/ICQoJ2ltZycsIHRoYXQuYnV0dG9uKS5maXJzdCgpIDogbnVsbDsNCgkJCQkJfQ0KCQkJCQl0aGF0LmJ1dHRvbi5pbnNlcnRBZnRlcih0aGF0LmVsZW1lbnQpLmNsaWNrKGZ1bmN0aW9uICgpIHsNCgkJCQkJCXRoYXRbdGhhdC5vcGVuZWQgPyAnY2xvc2UnIDogJ29wZW4nXSgpOw0KCQkJCQl9KTsNCgkJCQl9DQoNCgkJCQlpZiAodGhhdC5vcHRpb25zLmF1dG9PcGVuKSB7DQoJCQkJCXRoYXQub3BlbigpOw0KCQkJCX0NCg0KCQkJCXRoYXQuZWxlbWVudC5rZXlkb3duKGZ1bmN0aW9uIChldmVudCkgew0KCQkJCQlpZiAoZXZlbnQua2V5Q29kZSA9PT0gOSkgew0KCQkJCQkJdGhhdC5jbG9zZSgpOw0KCQkJCQl9DQoJCQkJfSkua2V5dXAoZnVuY3Rpb24gKGV2ZW50KSB7DQoJCQkJCXZhciBjb2xvciA9IF9wYXJzZUNvbG9yKHRoYXQuZWxlbWVudC52YWwoKSk7DQoJCQkJCWlmICghdGhhdC5jb2xvci5lcXVhbHMoY29sb3IpKSB7DQoJCQkJCQl0aGF0LmNvbG9yID0gY29sb3I7DQoJCQkJCQl0aGF0Ll9jaGFuZ2UoKTsNCgkJCQkJfQ0KCQkJCX0pOw0KCQkJfSBlbHNlIHsNCgkJCQl0aGF0LmlubGluZSA9IHRydWU7DQoNCgkJCQkkKHRoaXMuZWxlbWVudCkuaHRtbChfY29udGFpbmVyX2lubGluZSk7DQoJCQkJdGhhdC5kaWFsb2cgPSAkKCcudWktY29sb3JwaWNrZXInLCB0aGlzLmVsZW1lbnQpOw0KDQoJCQkJdGhhdC5fZ2VuZXJhdGUoKTsNCg0KCQkJCXRoYXQub3BlbmVkID0gdHJ1ZTsNCgkJCX0NCg0KCQkJcmV0dXJuIHRoaXM7DQoJCX0sDQoNCgkJX3NldE9wdGlvbjogZnVuY3Rpb24oa2V5LCB2YWx1ZSl7DQoJCQl2YXIgdGhhdCA9IHRoaXM7DQoNCgkJCXN3aXRjaCAoa2V5KSB7DQoJCQljYXNlICJkaXNhYmxlZCI6DQoJCQkJaWYgKHZhbHVlKSB7DQoJCQkJCXRoYXQuZGlhbG9nLmFkZENsYXNzKCd1aS1jb2xvcnBpY2tlci1kaXNhYmxlZCcpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCXRoYXQuZGlhbG9nLnJlbW92ZUNsYXNzKCd1aS1jb2xvcnBpY2tlci1kaXNhYmxlZCcpOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJCX0NCg0KCQkJJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhhdCwgYXJndW1lbnRzKTsNCgkJfSwNCg0KCQkvKiBzZXRCYWNrZ3JvdW5kICovDQoJCV9zZXRJbWFnZUJhY2tncm91bmQ6IGZ1bmN0aW9uKCkgew0KCQkJaWYgKHRoaXMuaW1hZ2UgJiYgdGhpcy5vcHRpb25zLmJ1dHRvbkNvbG9yaXplKSB7DQoJCQkJdGhpcy5pbWFnZS5jc3MoJ2JhY2tncm91bmQtY29sb3InLCB0aGlzLmNvbG9yLnNldD8gX2Zvcm1hdENvbG9yKCdSR0JBJywgdGhpcy5jb2xvcikgOiAnJyk7DQoJCQl9DQoJCX0sDQoNCgkJLyoqDQoJCSAqIElmIGFuIGFsdGVybmF0ZSBmaWVsZCBpcyBzcGVjaWZpZWQsIHNldCBpdCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29sb3IuDQoJCSAqLw0KCQlfc2V0QWx0RmllbGQ6IGZ1bmN0aW9uICgpIHsNCgkJCWlmICh0aGlzLm9wdGlvbnMuYWx0T25DaGFuZ2UgJiYgdGhpcy5vcHRpb25zLmFsdEZpZWxkICYmIHRoaXMub3B0aW9ucy5hbHRQcm9wZXJ0aWVzKSB7DQoJCQkJdmFyIGluZGV4LA0KCQkJCQlwcm9wZXJ0eSwNCgkJCQkJcHJvcGVydGllcyA9IHRoaXMub3B0aW9ucy5hbHRQcm9wZXJ0aWVzLnNwbGl0KCcsJyk7DQoNCgkJCQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPD0gcHJvcGVydGllcy5sZW5ndGg7ICsraW5kZXgpIHsNCgkJCQkJcHJvcGVydHkgPSAkLnRyaW0ocHJvcGVydGllc1tpbmRleF0pOw0KCQkJCQlzd2l0Y2ggKHByb3BlcnR5KSB7DQoJCQkJCQljYXNlICdjb2xvcic6DQoJCQkJCQljYXNlICdiYWNrZ3JvdW5kLWNvbG9yJzoNCgkJCQkJCWNhc2UgJ291dGxpbmUtY29sb3InOg0KCQkJCQkJY2FzZSAnYm9yZGVyLWNvbG9yJzoNCgkJCQkJCQkkKHRoaXMub3B0aW9ucy5hbHRGaWVsZCkuY3NzKHByb3BlcnR5LCB0aGlzLmNvbG9yLnNldD8gdGhpcy5jb2xvci50b0NTUygpIDogJycpOw0KCQkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKHRoaXMub3B0aW9ucy5hbHRBbHBoYSkgew0KCQkJCQkkKHRoaXMub3B0aW9ucy5hbHRGaWVsZCkuY3NzKCdvcGFjaXR5JywgdGhpcy5jb2xvci5zZXQ/IHRoaXMuY29sb3IuZ2V0QWxwaGEoKSA6ICcnKTsNCgkJCQl9DQoJCQl9DQoJCX0sDQoNCgkJX3NldENvbG9yOiBmdW5jdGlvbih0ZXh0KSB7DQoJCQl0aGlzLmNvbG9yCQkJPSBfcGFyc2VDb2xvcih0ZXh0KTsNCgkJCXRoaXMuY3VycmVudENvbG9yCT0gdGhpcy5jb2xvci5jb3B5KCk7DQoNCgkJCXRoaXMuX3NldEltYWdlQmFja2dyb3VuZCgpOw0KCQkJdGhpcy5fc2V0QWx0RmllbGQoKTsNCgkJfSwNCg0KCQlzZXRDb2xvcjogZnVuY3Rpb24odGV4dCkgew0KCQkJdGhpcy5fc2V0Q29sb3IodGV4dCk7DQoJCQl0aGlzLl9jaGFuZ2UodGhpcy5jb2xvci5zZXQpOw0KCQl9LA0KDQoJCV9nZW5lcmF0ZTogZnVuY3Rpb24gKCkgew0KCQkJdmFyIHRoYXQgPSB0aGlzLA0KCQkJCWluZGV4LA0KCQkJCXBhcnQsDQoJCQkJcGFydHNfbGlzdCwNCgkJCQlsYXlvdXRfcGFydHM7DQoNCgkJCS8vIFNldCBjb2xvciBiYXNlZCBvbiBlbGVtZW50Pw0KCQkJdGhhdC5fc2V0Q29sb3IodGhhdC5pbmxpbmU/IHRoYXQub3B0aW9ucy5jb2xvciA6IHRoYXQuZWxlbWVudC52YWwoKSk7DQoNCgkJCS8vIERldGVybWluZSB0aGUgcGFydHMgdG8gaW5jbHVkZSBpbiB0aGlzIGNvbG9ycGlja2VyDQoJCQlpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5wYXJ0cyA9PT0gJ3N0cmluZycpIHsNCgkJCQlpZiAoX3BhcnRzX2xpc3RzW3RoYXQub3B0aW9ucy5wYXJ0c10pIHsNCgkJCQkJcGFydHNfbGlzdCA9IF9wYXJ0c19saXN0c1t0aGF0Lm9wdGlvbnMucGFydHNdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCS8vIGF1dG9tYXRpYw0KCQkJCQlwYXJ0c19saXN0ID0gX3BhcnRzX2xpc3RzW3RoYXQuaW5saW5lID8gJ2lubGluZScgOiAncG9wdXAnXTsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCXBhcnRzX2xpc3QgPSB0aGF0Lm9wdGlvbnMucGFydHM7DQoJCQl9DQoNCgkJCS8vIEFkZCBhbnkgcGFydHMgdG8gdGhlIGludGVybmFsIHBhcnRzIGxpc3QNCgkJCXRoYXQucGFydHMgPSB7fTsNCgkJCSQuZWFjaChwYXJ0c19saXN0LCBmdW5jdGlvbihpbmRleCwgcGFydCkgew0KCQkJCWlmIChfcGFydHNbcGFydF0pIHsNCgkJCQkJdGhhdC5wYXJ0c1twYXJ0XSA9IG5ldyBfcGFydHNbcGFydF0odGhhdCk7DQoJCQkJfQ0KCQkJfSk7DQoNCgkJCWlmICghdGhhdC5nZW5lcmF0ZWQpIHsNCgkJCQlsYXlvdXRfcGFydHMgPSBbXTsNCg0KCQkJCSQuZWFjaCh0aGF0Lm9wdGlvbnMubGF5b3V0LCBmdW5jdGlvbihwYXJ0LCBwb3MpIHsNCgkJCQkJaWYgKHRoYXQucGFydHNbcGFydF0pIHsNCgkJCQkJCWxheW91dF9wYXJ0cy5wdXNoKHsNCgkJCQkJCQkncGFydCc6IHBhcnQsDQoJCQkJCQkJJ3Bvcyc6ICBwb3MNCgkJCQkJCX0pOw0KCQkJCQl9DQoJCQkJfSk7DQoNCgkJCQkkKF9sYXlvdXRUYWJsZShsYXlvdXRfcGFydHMsIGZ1bmN0aW9uKGNlbGwsIHgsIHkpIHsNCgkJCQkJdmFyIGNsYXNzZXMgPSBbJ3VpLWNvbG9ycGlja2VyLScgKyBjZWxsLnBhcnQgKyAnLWNvbnRhaW5lciddOw0KDQoJCQkJCWlmICh4ID4gMCkgew0KCQkJCQkJY2xhc3Nlcy5wdXNoKCd1aS1jb2xvcnBpY2tlci1wYWRkaW5nLWxlZnQnKTsNCgkJCQkJfQ0KDQoJCQkJCWlmICh5ID4gMCkgew0KCQkJCQkJY2xhc3Nlcy5wdXNoKCd1aS1jb2xvcnBpY2tlci1wYWRkaW5nLXRvcCcpOw0KCQkJCQl9DQoNCgkJCQkJcmV0dXJuICc8dGQgIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIicNCgkJCQkJCSsgKGNlbGwucG9zWzJdID4gMSA/ICcgY29sc3Bhbj0iJyArIGNlbGwucG9zWzJdICsgJyInIDogJycpDQoJCQkJCQkrIChjZWxsLnBvc1szXSA+IDEgPyAnIHJvd3NwYW49IicgKyBjZWxsLnBvc1szXSArICciJyA6ICcnKQ0KCQkJCQkJKyAnIHZhbGlnbj0idG9wIj48L3RkPic7DQoJCQkJfSkpLmFwcGVuZFRvKHRoYXQuZGlhbG9nKS5hZGRDbGFzcygndWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQnKTsNCg0KCQkJCXRoYXQuX2luaXRBbGxQYXJ0cygpOw0KCQkJCXRoYXQuX3VwZGF0ZUFsbFBhcnRzKCk7DQoJCQkJdGhhdC5nZW5lcmF0ZWQgPSB0cnVlOw0KCQkJfQ0KCQl9LA0KDQoJCV9lZmZlY3RHZW5lcmljOiBmdW5jdGlvbiAoZWxlbWVudCwgc2hvdywgc2xpZGUsIGZhZGUsIGNhbGxiYWNrKSB7DQoJCQl2YXIgdGhhdCA9IHRoaXM7DQoNCgkJCWlmICgkLmVmZmVjdHMgJiYgJC5lZmZlY3RzW3RoYXQub3B0aW9ucy5zaG93QW5pbV0pIHsNCgkJCQllbGVtZW50W3Nob3ddKHRoYXQub3B0aW9ucy5zaG93QW5pbSwgdGhhdC5vcHRpb25zLnNob3dPcHRpb25zLCB0aGF0Lm9wdGlvbnMuZHVyYXRpb24sIGNhbGxiYWNrKTsNCgkJCX0gZWxzZSB7DQoJCQkJZWxlbWVudFsodGhhdC5vcHRpb25zLnNob3dBbmltID09PSAnc2xpZGVEb3duJyA/DQoJCQkJCQkJCXNsaWRlDQoJCQkJCQkJOgkodGhhdC5vcHRpb25zLnNob3dBbmltID09PSAnZmFkZUluJyA/DQoJCQkJCQkJCQlmYWRlDQoJCQkJCQkJCToJc2hvdykpXSgodGhhdC5vcHRpb25zLnNob3dBbmltID8gdGhhdC5vcHRpb25zLmR1cmF0aW9uIDogbnVsbCksIGNhbGxiYWNrKTsNCgkJCQlpZiAoIXRoYXQub3B0aW9ucy5zaG93QW5pbSB8fCAhdGhhdC5vcHRpb25zLmR1cmF0aW9uKSB7DQoJCQkJCWNhbGxiYWNrKCk7DQoJCQkJfQ0KCQkJfQ0KCQl9LA0KDQoJCV9lZmZlY3RTaG93OiBmdW5jdGlvbihlbGVtZW50LCBjYWxsYmFjaykgew0KCQkJdGhpcy5fZWZmZWN0R2VuZXJpYyhlbGVtZW50LCAnc2hvdycsICdzbGlkZURvd24nLCAnZmFkZUluJywgY2FsbGJhY2spOw0KCQl9LA0KDQoJCV9lZmZlY3RIaWRlOiBmdW5jdGlvbihlbGVtZW50LCBjYWxsYmFjaykgew0KCQkJdGhpcy5fZWZmZWN0R2VuZXJpYyhlbGVtZW50LCAnaGlkZScsICdzbGlkZVVwJywgJ2ZhZGVPdXQnLCBjYWxsYmFjayk7DQoJCX0sDQoNCgkJb3BlbjogZnVuY3Rpb24oKSB7DQoJCQl2YXIgdGhhdCA9IHRoaXMsDQoJCQkJb2Zmc2V0LA0KCQkJCWJvdHRvbSwNCgkJCQlyaWdodCwNCgkJCQloZWlnaHQsDQoJCQkJd2lkdGgsDQoJCQkJeCwNCgkJCQl5LA0KCQkJCXpJbmRleDsNCg0KCQkJaWYgKCF0aGF0Lm9wZW5lZCkgew0KCQkJCXRoYXQuX2dlbmVyYXRlKCk7DQoNCgkJCQlvZmZzZXQJPSB0aGF0LmVsZW1lbnQub2Zmc2V0KCk7DQoJCQkJYm90dG9tCT0gJCh3aW5kb3cpLmhlaWdodCgpICsgJCh3aW5kb3cpLnNjcm9sbFRvcCgpOw0KCQkJCXJpZ2h0CT0gJCh3aW5kb3cpLndpZHRoKCkgKyAkKHdpbmRvdykuc2Nyb2xsTGVmdCgpOw0KCQkJCWhlaWdodAk9IHRoYXQuZGlhbG9nLm91dGVySGVpZ2h0KCk7DQoJCQkJd2lkdGgJPSB0aGF0LmRpYWxvZy5vdXRlcldpZHRoKCk7DQoJCQkJeAkJPSBvZmZzZXQubGVmdDsNCgkJCQl5CQk9IG9mZnNldC50b3AgKyB0aGF0LmVsZW1lbnQub3V0ZXJIZWlnaHQoKTsNCg0KCQkJCWlmICh4ICsgd2lkdGggPiByaWdodCkgew0KCQkJCQl4ID0gTWF0aC5tYXgoMCwgcmlnaHQgLSB3aWR0aCk7DQoJCQkJfQ0KDQoJCQkJaWYgKHkgKyBoZWlnaHQgPiBib3R0b20pIHsNCgkJCQkJaWYgKG9mZnNldC50b3AgLSBoZWlnaHQgPj0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpKSB7DQoJCQkJCQl5ID0gb2Zmc2V0LnRvcCAtIGhlaWdodDsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXkgPSBNYXRoLm1heCgwLCBib3R0b20gLSBoZWlnaHQpOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJdGhhdC5kaWFsb2cuY3NzKHsnbGVmdCc6IHgsICd0b3AnOiB5fSk7DQoNCgkJCQkvLyBBdXRvbWF0aWNhbGx5IGZpbmQgaGlnaGVzdCB6LWluZGV4Lg0KCQkJCXpJbmRleCA9IDA7DQoJCQkJJCh0aGF0LmVsZW1lbnRbMF0pLnBhcmVudHMoKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCQl2YXIgeiA9ICQodGhpcykuY3NzKCd6LWluZGV4Jyk7DQoJCQkJCWlmICgodHlwZW9mKHopID09PSAnbnVtYmVyJyB8fCB0eXBlb2YoeikgPT09ICdzdHJpbmcnKSAmJiB6ICE9PSAnJyAmJiAhaXNOYU4oeikpIHsNCgkJCQkJCXpJbmRleCA9IHo7DQoJCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJCX0NCgkJCQl9KTsNCg0KCQkJCS8vQHRvZG8gekluZGV4T2Zmc2V0IG9wdGlvbiwgdG8gcmFpc2UgYWJvdmUgb3RoZXIgZWxlbWVudHM/DQoJCQkJdGhhdC5kaWFsb2cuY3NzKCd6LWluZGV4JywgekluZGV4ICs9IDIpOw0KDQoJCQkJdGhhdC5vdmVybGF5ID0gdGhhdC5vcHRpb25zLm1vZGFsID8gbmV3ICQudWkuZGlhbG9nLm92ZXJsYXkodGhhdCkgOiBudWxsOw0KDQoJCQkJdGhhdC5fZWZmZWN0U2hvdyh0aGlzLmRpYWxvZyk7DQoJCQkJdGhhdC5vcGVuZWQgPSB0cnVlOw0KCQkJCXRoYXQuX2NhbGxiYWNrKCdvcGVuJywgdHJ1ZSk7DQoNCgkJCQkvLyBXaXRob3V0IHdhaXRpbmcgZm9yIGRvbXJlYWR5IHRoZSB3aWR0aCBvZiB0aGUgbWFwIGlzIDAgYW5kIHdlDQoJCQkJLy8gd2luZCB1cCB3aXRoIHRoZSBjdXJzb3Igc3R1Y2sgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyDQoJCQkJJChmdW5jdGlvbigpIHsNCgkJCQkJdGhhdC5fcmVwYWludEFsbFBhcnRzKCk7DQoJCQkJfSk7DQoJCQl9DQoJCX0sDQoNCgkJY2xvc2U6IGZ1bmN0aW9uICgpIHsNCgkJCXZhciB0aGF0ID0gdGhpczsNCg0KCQkJdGhhdC5jdXJyZW50Q29sb3IJPSB0aGF0LmNvbG9yLmNvcHkoKTsNCgkJCXRoYXQuY2hhbmdlZAkJPSBmYWxzZTsNCg0KCQkJLy8gdGVhciBkb3duIHRoZSBpbnRlcmZhY2UNCgkJCXRoYXQuX2VmZmVjdEhpZGUodGhhdC5kaWFsb2csIGZ1bmN0aW9uICgpIHsNCgkJCQl0aGF0LmRpYWxvZy5lbXB0eSgpOw0KCQkJCXRoYXQuZ2VuZXJhdGVkCT0gZmFsc2U7DQoNCgkJCQl0aGF0Lm9wZW5lZAkJPSBmYWxzZTsNCgkJCQl0aGF0Ll9jYWxsYmFjaygnY2xvc2UnLCB0cnVlKTsNCgkJCX0pOw0KDQoJCQlpZiAodGhhdC5vdmVybGF5KSB7DQoJCQkJdGhhdC5vdmVybGF5LmRlc3Ryb3koKTsNCgkJCX0NCgkJfSwNCg0KCQlkZXN0cm95OiBmdW5jdGlvbigpIHsNCgkJCXRoaXMuZWxlbWVudC51bmJpbmQoKTsNCg0KCQkJaWYgKHRoaXMuaW1hZ2UgIT09IG51bGwpIHsNCgkJCQl0aGlzLmltYWdlLnJlbW92ZSgpOw0KCQkJfQ0KDQoJCQlpZiAodGhpcy5idXR0b24gIT09IG51bGwpIHsNCgkJCQl0aGlzLmJ1dHRvbi5yZW1vdmUoKTsNCgkJCX0NCg0KCQkJaWYgKHRoaXMuZGlhbG9nICE9PSBudWxsKSB7DQoJCQkJdGhpcy5kaWFsb2cucmVtb3ZlKCk7DQoJCQl9DQoNCgkJCWlmICh0aGlzLm92ZXJsYXkpIHsNCgkJCQl0aGlzLm92ZXJsYXkuZGVzdHJveSgpOw0KCQkJfQ0KCQl9LA0KDQoJCV9jYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBzcGFjZXMpIHsNCgkJCXZhciB0aGF0ID0gdGhpcywNCgkJCQlkYXRhLA0KCQkJCWxhYjsNCg0KCQkJaWYgKHRoYXQuY29sb3Iuc2V0KSB7DQoJCQkJZGF0YSA9IHsNCgkJCQkJZm9ybWF0dGVkOiBfZm9ybWF0Q29sb3IodGhhdC5vcHRpb25zLmNvbG9yRm9ybWF0LCB0aGF0LmNvbG9yKQ0KCQkJCX07DQoNCgkJCQlsYWIgPSB0aGF0LmNvbG9yLmdldExBQigpOw0KCQkJCWxhYi5hID0gKGxhYi5hICogMikgLSAxOw0KCQkJCWxhYi5iID0gKGxhYi5iICogMikgLSAxOw0KDQoJCQkJaWYgKHNwYWNlcyA9PT0gdHJ1ZSkgew0KCQkJCQlkYXRhLmEJCT0gdGhhdC5jb2xvci5nZXRBbHBoYSgpOw0KCQkJCQlkYXRhLnJnYgk9IHRoYXQuY29sb3IuZ2V0UkdCKCk7DQoJCQkJCWRhdGEuaHN2CT0gdGhhdC5jb2xvci5nZXRIU1YoKTsNCgkJCQkJZGF0YS5jbXlrCT0gdGhhdC5jb2xvci5nZXRDTVlLKCk7DQoJCQkJCWRhdGEuaHNsCT0gdGhhdC5jb2xvci5nZXRIU0woKTsNCgkJCQkJZGF0YS5sYWIJPSBsYWI7DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIHRoYXQuX3RyaWdnZXIoY2FsbGJhY2ssIG51bGwsIGRhdGEpOw0KCQkJfSBlbHNlIHsNCgkJCQlyZXR1cm4gdGhhdC5fdHJpZ2dlcihjYWxsYmFjaywgbnVsbCwgew0KCQkJCQlmb3JtYXR0ZWQ6ICcnDQoJCQkJfSk7DQoJCQl9DQoJCX0sDQoNCgkJX2luaXRBbGxQYXJ0czogZnVuY3Rpb24gKCkgew0KCQkJJC5lYWNoKHRoaXMucGFydHMsIGZ1bmN0aW9uIChpbmRleCwgcGFydCkgew0KCQkJCWlmIChwYXJ0LmluaXQpIHsNCgkJCQkJcGFydC5pbml0KCk7DQoJCQkJfQ0KCQkJfSk7DQoJCX0sDQoNCgkJX3VwZGF0ZUFsbFBhcnRzOiBmdW5jdGlvbiAoKSB7DQoJCQkkLmVhY2godGhpcy5wYXJ0cywgZnVuY3Rpb24gKGluZGV4LCBwYXJ0KSB7DQoJCQkJaWYgKHBhcnQudXBkYXRlKSB7DQoJCQkJCXBhcnQudXBkYXRlKCk7DQoJCQkJfQ0KCQkJfSk7DQoJCX0sDQoNCgkJX3JlcGFpbnRBbGxQYXJ0czogZnVuY3Rpb24gKCkgew0KCQkJJC5lYWNoKHRoaXMucGFydHMsIGZ1bmN0aW9uIChpbmRleCwgcGFydCkgew0KCQkJCWlmIChwYXJ0LnJlcGFpbnQpIHsNCgkJCQkJcGFydC5yZXBhaW50KCk7DQoJCQkJfQ0KCQkJfSk7DQoJCX0sDQoNCgkJX2NoYW5nZTogZnVuY3Rpb24gKHNldCAvKiA9IHRydWUgKi8pIHsNCgkJCXRoaXMuY29sb3Iuc2V0ID0gKHNldCAhPT0gZmFsc2UpOw0KDQoJCQl0aGlzLmNoYW5nZWQgPSB0cnVlOw0KDQoJCQkvLyBMaW1pdCBjb2xvciBwYWxldHRlDQoJCQlzd2l0Y2ggKHRoaXMub3B0aW9ucy5saW1pdCkgew0KCQkJCWNhc2UgJ3dlYnNhZmUnOg0KCQkJCQl0aGlzLmNvbG9yLmxpbWl0KDYpOw0KCQkJCQlicmVhazsNCg0KCQkJCWNhc2UgJ25pYmJsZSc6DQoJCQkJCXRoaXMuY29sb3IubGltaXQoMTYpOw0KCQkJCQlicmVhazsNCg0KCQkJCWNhc2UgJ2JpbmFyeSc6DQoJCQkJCXRoaXMuY29sb3IubGltaXQoMik7DQoJCQkJCWJyZWFrOw0KDQoJCQkJY2FzZSAnbmFtZSc6DQoJCQkJCXZhciBuYW1lID0gX2Nsb3Nlc3ROYW1lKHRoaXMuY29sb3IpOw0KCQkJCQl0aGlzLmNvbG9yLnNldFJHQihfY29sb3JzW25hbWVdLnIsIF9jb2xvcnNbbmFtZV0uZywgX2NvbG9yc1tuYW1lXS5iKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoNCgkJCS8vIHVwZGF0ZSBpbnB1dCBlbGVtZW50IGNvbnRlbnQNCgkJCWlmICghdGhpcy5pbmxpbmUpIHsNCgkJCQlpZiAoIXRoaXMuY29sb3Iuc2V0KSB7DQoJCQkJCXRoaXMuZWxlbWVudC52YWwoJycpOw0KCQkJCX0gZWxzZSBpZiAoIXRoaXMuY29sb3IuZXF1YWxzKF9wYXJzZUNvbG9yKHRoaXMuZWxlbWVudC52YWwoKSkpKSB7DQoJCQkJCXRoaXMuZWxlbWVudC52YWwoX2Zvcm1hdENvbG9yKHRoaXMub3B0aW9ucy5jb2xvckZvcm1hdCwgdGhpcy5jb2xvcikpOw0KCQkJCX0NCg0KCQkJCXRoaXMuX3NldEltYWdlQmFja2dyb3VuZCgpOw0KCQkJCXRoaXMuX3NldEFsdEZpZWxkKCk7DQoJCQl9DQoNCgkJCWlmICh0aGlzLm9wZW5lZCkgew0KCQkJCXRoaXMuX3JlcGFpbnRBbGxQYXJ0cygpOw0KCQkJfQ0KDQoJCQkvLyBjYWxsYmFjaw0KCQkJdGhpcy5fY2FsbGJhY2soJ3NlbGVjdCcpOw0KCQl9LA0KDQoJCS8vIFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJ5IGpRdWVyeVVJIDEuOSB3aWRnZXQNCgkJX2hvdmVyYWJsZTogZnVuY3Rpb24gKGUpIHsNCgkJCWUuaG92ZXIoZnVuY3Rpb24gKCkgew0KCQkJCWUuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIik7DQoJCQl9LCBmdW5jdGlvbiAoKSB7DQoJCQkJZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKTsNCgkJCX0pOw0KCQl9LA0KDQoJCS8vIFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJ5IGpRdWVyeVVJIDEuOSB3aWRnZXQNCgkJX2ZvY3VzYWJsZTogZnVuY3Rpb24gKGUpIHsNCgkJCWUuZm9jdXMoZnVuY3Rpb24gKCkgew0KCQkJCWUuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIik7DQoJCQl9KS5ibHVyKGZ1bmN0aW9uICgpIHsNCgkJCQllLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpOw0KCQkJfSk7DQoJCX0sDQoNCgkJX2dldFJlZ2lvbmFsOiBmdW5jdGlvbihuYW1lKSB7DQoJCQlyZXR1cm4gJC5jb2xvcnBpY2tlci5yZWdpb25hbFt0aGlzLm9wdGlvbnMucmVnaW9uYWxdW25hbWVdICE9PSB1bmRlZmluZWQgPw0KCQkJCSQuY29sb3JwaWNrZXIucmVnaW9uYWxbdGhpcy5vcHRpb25zLnJlZ2lvbmFsXVtuYW1lXSA6ICQuY29sb3JwaWNrZXIucmVnaW9uYWxbJyddW25hbWVdOw0KICAgICAgICB9DQoJfSk7DQp9KGpRdWVyeSkpOw==]]></data>
	</file>
	<file>
	  <filename>/templates/js/jquery.periodicalupdater.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqDQoqIFBlcmlvZGljYWxVcGRhdGVyIC0galF1ZXJ5IHBsdWdpbiBmb3IgdGltZWQsIGRlY2F5aW5nIGFqYXggY2FsbHMNCioNCiogaHR0cDovL3d3dy4zNjBpbm5vdmF0ZS5jby51ay9ibG9nLzIwMDkvMDMvcGVyaW9kaWNhbHVwZGF0ZXItZm9yLWpxdWVyeS8NCiogaHR0cDovL2VuZnJhbmNoaXNlZG1pbmQuY29tL2Jsb2cvcG9zdHMvanF1ZXJ5LXBlcmlvZGljYWx1cGRhdGVyLWFqYXgtcG9sbGluZy8NCioNCiogQ29weXJpZ2h0IChjKSAyMDA5IGJ5IHRoZSBmb2xsb3dpbmc6DQoqIEZyYW5rIFdoaXRlIChodHRwOi8vY3VzdG9tY29kZS5pbmZvKQ0KKiBSb2JlcnQgRmlzY2hlciAoaHR0cDovL3Ntb2tlanVtcGVyaXQuY29tKQ0KKiAzNjBpbm5vdmF0ZSAoaHR0cDovL3d3dy4zNjBpbm5vdmF0ZS5jby51aykNCioNCiogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXM6DQoqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQoqIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbA0KKg0KKi8NCg0KKGZ1bmN0aW9uKCQpIHsNCiAgICB2YXIgcHVfbG9nID0gZnVuY3Rpb24obXNnKSB7DQogICAgICB0cnkgew0KICAgICAgICBjb25zb2xlLmxvZyhtc2cpOw0KICAgICAgfSBjYXRjaChlcnIpIHt9DQogICAgfQ0KDQogICAgLy8gTm93IGJhY2sgdG8gb3VyIHJlZ3VsYXJseSBzY2hlZHVsZWQgd29yaw0KICAgICQuUGVyaW9kaWNhbFVwZGF0ZXIgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMsIGNhbGxiYWNrLCBhdXRvU3RvcENhbGxiYWNrKXsNCiAgICAgIHZhciBzZXR0aW5ncyA9IGpRdWVyeS5leHRlbmQodHJ1ZSwgew0KICAgICAgICAgIHVybDogdXJsLCAvLyBVUkwgb2YgYWpheCByZXF1ZXN0DQogICAgICAgICAgY2FjaGU6IGZhbHNlLCAvLyBCeSBkZWZhdWx0LCBkb24ndCBhbGxvdyBjYWNoaW5nDQogICAgICAgICAgbWV0aG9kOiAnR0VUJywgLy8gbWV0aG9kOyBnZXQgb3IgcG9zdA0KICAgICAgICAgIGRhdGE6ICcnLCAvLyBhcnJheSBvZiB2YWx1ZXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBwYWdlIC0gZS5nLiB7bmFtZTogIkpvaG4iLCBncmVldGluZzogImhlbGxvIn0NCiAgICAgICAgICBtaW5UaW1lb3V0OiAxMDAwLCAvLyBzdGFydGluZyB2YWx1ZSBmb3IgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzDQogICAgICAgICAgbWF4VGltZW91dDogODAwMCwgLy8gbWF4aW11bSBsZW5ndGggb2YgdGltZSBiZXR3ZWVuIHJlcXVlc3RzDQogICAgICAgICAgbXVsdGlwbGllcjogMiwgLy8gaWYgc2V0IHRvIDIsIHRpbWVySW50ZXJ2YWwgd2lsbCBkb3VibGUgZWFjaCB0aW1lIHRoZSByZXNwb25zZSBoYXNuJ3QgY2hhbmdlZCAodXAgdG8gbWF4VGltZW91dCkNCiAgICAgICAgICBtYXhDYWxsczogMCwgLy8gbWF4aW11bSBudW1iZXIgb2YgY2FsbHMuIDAgPSBubyBsaW1pdC4NCiAgICAgICAgICBhdXRvU3RvcDogMCAvLyBhdXRvbWF0aWNhbGx5IHN0b3AgcmVxdWVzdHMgYWZ0ZXIgdGhpcyBtYW55IHJldHVybnMgb2YgdGhlIHNhbWUgZGF0YS4gMCA9IGRpc2FibGVkDQogICAgICAgIH0sIG9wdGlvbnMpOw0KDQogICAgICAgIC8vIHNldCBzb21lIGluaXRpYWwgdmFsdWVzLCB0aGVuIGJlZ2luDQogICAgICAgIHZhciB0aW1lciA9IG51bGw7DQogICAgICAgIHZhciB0aW1lckludGVydmFsID0gc2V0dGluZ3MubWluVGltZW91dDsNCiAgICAgICAgdmFyIG1heENhbGxzID0gc2V0dGluZ3MubWF4Q2FsbHM7DQogICAgICAgIHZhciBhdXRvU3RvcCA9IHNldHRpbmdzLmF1dG9TdG9wOw0KICAgICAgICB2YXIgY2FsbHMgPSAwOw0KICAgICAgICB2YXIgbm9DaGFuZ2UgPSAwOw0KICAgICAgICB2YXIgb3JpZ2luYWxNYXhDYWxscyA9IG1heENhbGxzOw0KDQogICAgICAgIHZhciByZXNldF90aW1lciA9IGZ1bmN0aW9uKGludGVydmFsKSB7DQogICAgICAgICAgaWYgKHRpbWVyICE9IG51bGwpIHsNCiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7DQogICAgICAgICAgfQ0KICAgICAgICAgIHRpbWVySW50ZXJ2YWwgPSBpbnRlcnZhbDsNCiAgICAgICAgICBwdV9sb2coJ3Jlc2V0dGluZyB0aW1lciB0byAnKyB0aW1lckludGVydmFsICsnLicpOw0KICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChnZXRkYXRhLCB0aW1lckludGVydmFsKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEZ1bmN0aW9uIHRvIGJvb3N0IHRoZSB0aW1lcg0KICAgICAgICB2YXIgYm9vc3RQZXJpb2QgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgICBpZihzZXR0aW5ncy5tdWx0aXBsaWVyID49IDEpIHsNCiAgICAgICAgICAgIGJlZm9yZSA9IHRpbWVySW50ZXJ2YWw7DQogICAgICAgICAgICB0aW1lckludGVydmFsID0gdGltZXJJbnRlcnZhbCAqIHNldHRpbmdzLm11bHRpcGxpZXI7DQoNCiAgICAgICAgICAgIGlmKHRpbWVySW50ZXJ2YWwgPiBzZXR0aW5ncy5tYXhUaW1lb3V0KSB7DQogICAgICAgICAgICAgIHRpbWVySW50ZXJ2YWwgPSBzZXR0aW5ncy5tYXhUaW1lb3V0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYWZ0ZXIgPSB0aW1lckludGVydmFsOw0KICAgICAgICAgICAgcHVfbG9nKCdhZGp1c3RpbmcgdGltZXIgZnJvbSAnKyBiZWZvcmUgKycgdG8gJysgYWZ0ZXIgKycuJyk7DQogICAgICAgICAgICByZXNldF90aW1lcih0aW1lckludGVydmFsKTsNCiAgICAgICAgICB9DQogICAgICAgIH07DQoNCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBzZXR0aW5ncyBmb3IgJC5hamF4IGJhc2VkIG9uIHNldHRpbmdzDQogICAgICAgIHZhciBhamF4U2V0dGluZ3MgPSBqUXVlcnkuZXh0ZW5kKHRydWUsIHt9LCBzZXR0aW5ncyk7DQogICAgICAgIGlmKHNldHRpbmdzLnR5cGUgJiYgIWFqYXhTZXR0aW5ncy5kYXRhVHlwZSkgYWpheFNldHRpbmdzLmRhdGFUeXBlID0gc2V0dGluZ3MudHlwZTsNCiAgICAgICAgaWYoc2V0dGluZ3Muc2VuZERhdGEpIGFqYXhTZXR0aW5ncy5kYXRhID0gc2V0dGluZ3Muc2VuZERhdGE7DQogICAgICAgIGFqYXhTZXR0aW5ncy50eXBlID0gc2V0dGluZ3MubWV0aG9kOyAvLyAndHlwZScgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBqUXVlcnkuIFdobyBrbmV3Pw0KICAgICAgICBhamF4U2V0dGluZ3MuaWZNb2RpZmllZCA9IHRydWU7DQoNCiAgICAgICAgdmFyIGhhbmRsZSA9IHsNCgkJCQlyZXN0YXJ0OiBmdW5jdGlvbigpIHsNCgkJCQltYXhDYWxscyA9IG9yaWdpbmFsTWF4Q2FsbHM7DQoJCQkJY2FsbHMgPSAwOw0KCQkJCXJlc2V0X3RpbWVyKHRpbWVySW50ZXJ2YWwpOw0KCQkJCXJldHVybjsNCgkJCQl9LA0KICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgbWF4Q2FsbHMgPSAtMTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICB9DQogICAgICAgIH07DQoNCiAgICAgICAgLy8gQ3JlYXRlIHRoZSBmdW5jdGlvbiB0byBnZXQgZGF0YQ0KICAgICAgICAvLyBUT0RPIEl0J2QgYmUgbmljZSB0byBkbyB0aGUgb3B0aW9ucy5kYXRhIGNoZWNrIG9uY2UgKGEgbGEgYm9vc3RQZXJpb2QpDQogICAgICAgIGZ1bmN0aW9uIGdldGRhdGEoKSB7DQogICAgICAgICAgdmFyIHRvU2VuZCA9IGpRdWVyeS5leHRlbmQodHJ1ZSwge30sIGFqYXhTZXR0aW5ncyk7IC8vIGpRdWVyeSBzY3Jld3Mgd2l0aCB3aGF0IHlvdSBwYXNzIGluDQogICAgICAgICAgaWYodHlwZW9mKG9wdGlvbnMuZGF0YSkgPT0gJ2Z1bmN0aW9uJykgew0KICAgICAgICAgICAgdG9TZW5kLmRhdGEgPSBvcHRpb25zLmRhdGEoKTsNCiAgICAgICAgICAgIGlmKHRvU2VuZC5kYXRhKSB7DQogICAgICAgICAgICAgIC8vIEhhbmRsZSB0cmFuc2Zvcm1hdGlvbnMgKG9ubHkgc3RyaW5ncyBhbmQgb2JqZWN0cyBhcmUgdW5kZXJzdG9vZCkNCiAgICAgICAgICAgICAgaWYodHlwZW9mKHRvU2VuZC5kYXRhKSA9PSAibnVtYmVyIikgew0KICAgICAgICAgICAgICAgIHRvU2VuZC5kYXRhID0gdG9TZW5kLmRhdGEudG9TdHJpbmcoKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCg0KICAgICAgICAgIGlmKG1heENhbGxzID09IDApIHsNCiAgICAgICAgICAgICQuYWpheCh0b1NlbmQpOw0KICAgICAgICAgIH0gZWxzZSBpZihtYXhDYWxscyA+IDAgJiYgY2FsbHMgPCBtYXhDYWxscykgew0KICAgICAgICAgICAgJC5hamF4KHRvU2VuZCk7DQogICAgICAgICAgICBjYWxscysrOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEltcGxlbWVudCB0aGUgdHJpY2t5IGJlaGluZCBsb2dpYw0KICAgICAgICB2YXIgcmVtb3RlRGF0YSA9IG51bGw7DQogICAgICAgIHZhciBwcmV2RGF0YSA9IG51bGw7DQoNCiAgICAgICAgYWpheFNldHRpbmdzLnN1Y2Nlc3MgPSBmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgcHVfbG9nKCJTdWNjZXNzZnVsIHJ1biEgKEluICdzdWNjZXNzJykiKTsNCiAgICAgICAgICByZW1vdGVEYXRhID0gZGF0YTsNCiAgICAgICAgICAvLyB0aW1lckludGVydmFsID0gc2V0dGluZ3MubWluVGltZW91dDsNCiAgICAgICAgfTsNCg0KICAgICAgICBhamF4U2V0dGluZ3MuY29tcGxldGUgPSBmdW5jdGlvbih4aHIsIHN1Y2Nlc3MpIHsNCiAgICAgICAgICAvL3B1X2xvZygiU3RhdHVzIG9mIGNhbGw6ICIgKyBzdWNjZXNzICsgIiAoSW4gJ2NvbXBsZXRlJykiKTsNCiAgICAgICAgICBpZihtYXhDYWxscyA9PSAtMSkgcmV0dXJuOw0KICAgICAgICAgIGlmKHN1Y2Nlc3MgPT0gInN1Y2Nlc3MiIHx8IHN1Y2Nlc3MgPT0gIm5vdG1vZGlmaWVkIikgew0KICAgICAgICAgICAgdmFyIHJhd0RhdGEgPSAkLnRyaW0oeGhyLnJlc3BvbnNlVGV4dCk7DQogICAgICAgICAgICBpZihyYXdEYXRhID09ICdTVE9QX0FKQVhfQ0FMTFMnKSB7DQoJCQkJCQkJaGFuZGxlLnN0b3AoKTsNCiAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYocHJldkRhdGEgPT0gcmF3RGF0YSkgew0KICAgICAgICAgICAgICBpZihhdXRvU3RvcCA+IDApIHsNCiAgICAgICAgICAgICAgICBub0NoYW5nZSsrOw0KICAgICAgICAgICAgICAgIGlmKG5vQ2hhbmdlID09IGF1dG9TdG9wKSB7DQoJCQkJCQkJCQloYW5kbGUuc3RvcCgpOw0KICAgICAgICAgICAgICAgICAgaWYoYXV0b1N0b3BDYWxsYmFjaykgYXV0b1N0b3BDYWxsYmFjayhub0NoYW5nZSk7DQogICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIGJvb3N0UGVyaW9kKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBub0NoYW5nZSA9IDA7DQogICAgICAgICAgICAgIHJlc2V0X3RpbWVyKHNldHRpbmdzLm1pblRpbWVvdXQpOw0KICAgICAgICAgICAgICBwcmV2RGF0YSA9IHJhd0RhdGE7DQogICAgICAgICAgICAgIGlmKHJlbW90ZURhdGEgPT0gbnVsbCkgcmVtb3RlRGF0YSA9IHJhd0RhdGE7DQogICAgICAgICAgICAgIC8vIGpRdWVyeSAxLjQrICQuYWpheCgpIGF1dG9tYXRpY2FsbHkgY29udmVydHMgImRhdGEiIGludG8gYSBKUyBPYmplY3QgZm9yICJ0eXBlOmpzb24iIHJlcXVlc3RzIG5vdw0KICAgICAgICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIDEuNCsgYW5kIHByZTEuNCBqUXVlcnkgb25seSB0cnkgdG8gcGFyc2UgYWN0dWFsIHN0cmluZ3MsIHNraXAgd2hlbiByZW1vdGVEYXRhIGlzIGFscmVhZHkgYW4gT2JqZWN0DQogICAgICAgICAgICAgIGlmKChhamF4U2V0dGluZ3MuZGF0YVR5cGUgPT09ICdqc29uJykgJiYgKHR5cGVvZihyZW1vdGVEYXRhKSA9PT0gJ3N0cmluZycpICYmIChzdWNjZXNzID09ICJzdWNjZXNzIikpIHsNCiAgICAgICAgICAgICAgICByZW1vdGVEYXRhID0gSlNPTi5wYXJzZShyZW1vdGVEYXRhKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBpZihzZXR0aW5ncy5zdWNjZXNzKSB7IHNldHRpbmdzLnN1Y2Nlc3MocmVtb3RlRGF0YSwgc3VjY2VzcywgeGhyLCBoYW5kbGUpOyB9DQogICAgICAgICAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjayhyZW1vdGVEYXRhLCBzdWNjZXNzLCB4aHIsIGhhbmRsZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIHJlbW90ZURhdGEgPSBudWxsOw0KICAgICAgICB9DQoNCg0KICAgICAgIAkgYWpheFNldHRpbmdzLmVycm9yID0gZnVuY3Rpb24gKHhociwgdGV4dFN0YXR1cykgew0KICAgICAgICAgIC8vcHVfbG9nKCJFcnJvciBtZXNzYWdlOiAiICsgdGV4dFN0YXR1cyArICIgKEluICdlcnJvcicpIik7DQogICAgICAgICAgaWYodGV4dFN0YXR1cyAhPSAibm90bW9kaWZpZWQiKSB7DQogICAgICAgICAgICBwcmV2RGF0YSA9IG51bGw7DQogICAgICAgICAgICByZXNldF90aW1lcihzZXR0aW5ncy5taW5UaW1lb3V0KTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYoc2V0dGluZ3MuZXJyb3IpIHsgc2V0dGluZ3MuZXJyb3IoeGhyLCB0ZXh0U3RhdHVzKTsgfQ0KICAgICAgICB9Ow0KDQogICAgICAgIC8vIE1ha2UgdGhlIGZpcnN0IGNhbGwNCiAgICAgICAgJChmdW5jdGlvbigpIHsgcmVzZXRfdGltZXIodGltZXJJbnRlcnZhbCk7IH0pOw0KDQogICAgICAgIHJldHVybiBoYW5kbGU7DQogICAgfTsNCn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/templates/js/jquery.socialshareprivacy.fix.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpxdWVyeS5zb2NpYWxzaGFyZXByaXZhY3kuanMgfCAyIEtsaWNrcyBmdWVyIG1laHIgRGF0ZW5zY2h1dHoNCiAqDQogKiBodHRwOi8vd3d3LmhlaXNlLmRlL2V4dHJhcy9zb2NpYWxzaGFyZXByaXZhY3kvDQogKiBodHRwOi8vd3d3LmhlaXNlLmRlL2N0L2FydGlrZWwvMi1LbGlja3MtZnVlci1tZWhyLURhdGVuc2NodXR6LTEzMzM4NzkuaHRtbA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAxMSBIaWxrbyBIb2x3ZWcsIFNlYmFzdGlhbiBIaWxiaWcsIE5pY29sYXMgSGVpcmluZ2hvZmYsIEp1ZXJnZW4gU2NobWlkdCwNCiAqIEhlaXNlIFplaXRzY2hyaWZ0ZW4gVmVybGFnIEdtYkggJiBDby4gS0csIGh0dHA6Ly93d3cuaGVpc2UuZGUNCiAqDQogKiBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHANCiAqDQogKiBTcHJlYWQgdGhlIHdvcmQsIGxpbmsgdG8gdXMgaWYgeW91IGNhbi4NCiAqLw0KKGZ1bmN0aW9uICgkKSB7DQoNCiAgICAidXNlIHN0cmljdCI7DQoNCgkvKg0KCSAqIGhlbHBlciBmdW5jdGlvbnMNCgkgKi8gDQoNCiAgICAvLyBhYmJyZXZpYXRlIGF0IGxhc3QgYmxhbmsgYmVmb3JlIGxlbmd0aCBhbmQgYWRkICJcdTIwMjYiIChob3Jpem9udGFsIGVsbGlwc2lzKQ0KICAgIGZ1bmN0aW9uIGFiYnJldmlhdGVUZXh0KHRleHQsIGxlbmd0aCkgew0KICAgICAgICB2YXIgYWJicmV2aWF0ZWQgPSBkZWNvZGVVUklDb21wb25lbnQodGV4dCk7DQogICAgICAgIGlmIChhYmJyZXZpYXRlZC5sZW5ndGggPD0gbGVuZ3RoKSB7DQogICAgICAgICAgICByZXR1cm4gdGV4dDsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBsYXN0V2hpdGVzcGFjZUluZGV4ID0gYWJicmV2aWF0ZWQuc3Vic3RyaW5nKDAsIGxlbmd0aCAtIDEpLmxhc3RJbmRleE9mKCcgJyk7DQogICAgICAgIGFiYnJldmlhdGVkID0gZW5jb2RlVVJJQ29tcG9uZW50KGFiYnJldmlhdGVkLnN1YnN0cmluZygwLCBsYXN0V2hpdGVzcGFjZUluZGV4KSkgKyAiXHUyMDI2IjsNCg0KICAgICAgICByZXR1cm4gYWJicmV2aWF0ZWQ7DQogICAgfQ0KDQogICAgLy8gcmV0dXJucyBjb250ZW50IG9mIDxtZXRhIG5hbWU9IiIgY29udGVudD0iIj4gdGFncyBvciAnJyBpZiBlbXB0eS9ub24gZXhpc3RhbnQNCiAgICBmdW5jdGlvbiBnZXRNZXRhKG5hbWUpIHsNCiAgICAgICAgdmFyIG1ldGFDb250ZW50ID0gJCgnbWV0YVtuYW1lPSInICsgbmFtZSArICciXScpLmF0dHIoJ2NvbnRlbnQnKTsNCiAgICAgICAgcmV0dXJuIG1ldGFDb250ZW50IHx8ICcnOw0KICAgIH0NCiAgICANCiAgICAvLyBjcmVhdGUgdHdlZXQgdGV4dCBmcm9tIGNvbnRlbnQgb2YgPG1ldGEgbmFtZT0iREMudGl0bGUiPiBhbmQgPG1ldGEgbmFtZT0iREMuY3JlYXRvciI+DQogICAgLy8gZmFsbGJhY2sgdG8gY29udGVudCBvZiA8dGl0bGU+IHRhZw0KICAgIGZ1bmN0aW9uIGdldFR3ZWV0VGV4dCgpIHsNCiAgICAgICAgdmFyIHRpdGxlID0gZ2V0TWV0YSgnREMudGl0bGUnKTsNCiAgICAgICAgdmFyIGNyZWF0b3IgPSBnZXRNZXRhKCdEQy5jcmVhdG9yJyk7DQoNCiAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCA+IDAgJiYgY3JlYXRvci5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICB0aXRsZSArPSAnIC0gJyArIGNyZWF0b3I7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aXRsZSA9ICQoJ3RpdGxlJykudGV4dCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0aXRsZSk7DQogICAgfQ0KDQogICAgLy8gYnVpbGQgVVJJIGZyb20gcmVsPSJjYW5vbmljYWwiIG9yIGRvY3VtZW50LmxvY2F0aW9uDQogICAgZnVuY3Rpb24gZ2V0VVJJKCkgew0KICAgICAgICB2YXIgdXJpID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjsNCiAgICAgICAgdmFyIGNhbm9uaWNhbCA9ICQoImxpbmtbcmVsPWNhbm9uaWNhbF0iKS5hdHRyKCJocmVmIik7DQoNCiAgICAgICAgaWYgKGNhbm9uaWNhbCAmJiBjYW5vbmljYWwubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgaWYgKGNhbm9uaWNhbC5pbmRleE9mKCJodHRwIikgPCAwKSB7DQogICAgICAgICAgICAgICAgY2Fub25pY2FsID0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgKyAiLy8iICsgZG9jdW1lbnQubG9jYXRpb24uaG9zdCArIGNhbm9uaWNhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVyaSA9IGNhbm9uaWNhbDsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB1cmk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY29va2llU2V0KG5hbWUsIHZhbHVlLCBkYXlzLCBwYXRoLCBkb21haW4pIHsNCiAgICAgICAgdmFyIGV4cGlyZXMgPSBuZXcgRGF0ZSgpOw0KICAgICAgICBleHBpcmVzLnNldFRpbWUoZXhwaXJlcy5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTsNCiAgICAgICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgZXhwaXJlcy50b1VUQ1N0cmluZygpICsgJzsgcGF0aD0nICsgcGF0aCArICc7IGRvbWFpbj0nICsgZG9tYWluOw0KICAgIH0NCiAgICBmdW5jdGlvbiBjb29raWVEZWwobmFtZSwgdmFsdWUsIHBhdGgsIGRvbWFpbikgew0KICAgICAgICB2YXIgZXhwaXJlcyA9IG5ldyBEYXRlKCk7DQogICAgICAgIGV4cGlyZXMuc2V0VGltZShleHBpcmVzLmdldFRpbWUoKSAtIDEwMCk7DQogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAnPScgKyB2YWx1ZSArICc7IGV4cGlyZXM9JyArIGV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7IHBhdGg9JyArIHBhdGggKyAnOyBkb21haW49JyArIGRvbWFpbjsNCiAgICB9DQoNCiAgICAvLyBleHRlbmQganF1ZXJ5IHdpdGggb3VyIHBsdWdpbiBmdW5jdGlvbg0KICAgICQuZm4uc29jaWFsU2hhcmVQcml2YWN5ID0gZnVuY3Rpb24gKHNldHRpbmdzKSB7DQogICAgICAgIHZhciBkZWZhdWx0cyA9IHsNCiAgICAgICAgICAgICdzZXJ2aWNlcycgOiB7DQogICAgICAgICAgICAgICAgJ2ZhY2Vib29rJyA6IHsNCiAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cycgICAgICAgICAgICA6ICdvbicsDQogICAgICAgICAgICAgICAgICAgICdkdW1teV9pbWcnICAgICAgICAgOiAnc29jaWFsc2hhcmVwcml2YWN5L2ltYWdlcy9kdW1teV9mYWNlYm9vay5wbmcnLA0KICAgICAgICAgICAgICAgICAgICAndHh0X2luZm8nICAgICAgICAgIDogJzIgS2xpY2tzIGYmdXVtbDtyIG1laHIgRGF0ZW5zY2h1dHo6IEVyc3Qgd2VubiBTaWUgaGllciBrbGlja2VuLCB3aXJkIGRlciBCdXR0b24gYWt0aXYgdW5kIFNpZSBrJm91bWw7bm5lbiBJaHJlIEVtcGZlaGx1bmcgYW4gRmFjZWJvb2sgc2VuZGVuLiBTY2hvbiBiZWltIEFrdGl2aWVyZW4gd2VyZGVuIERhdGVuIGFuIERyaXR0ZSAmdXVtbDtiZXJ0cmFnZW4gJm5kYXNoOyBzaWVoZSZuYnNwOzxlbT5pPC9lbT4uJywNCiAgICAgICAgICAgICAgICAgICAgJ3R4dF9mYl9vZmYnICAgICAgICA6ICduaWNodCBtaXQgRmFjZWJvb2sgdmVyYnVuZGVuJywNCiAgICAgICAgICAgICAgICAgICAgJ3R4dF9mYl9vbicgICAgICAgICA6ICdtaXQgRmFjZWJvb2sgdmVyYnVuZGVuJywNCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1hX29wdGlvbicgICAgICA6ICdvbicsDQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5X25hbWUnICAgICAgOiAnRmFjZWJvb2snLA0KICAgICAgICAgICAgICAgICAgICAncmVmZXJyZXJfdHJhY2snICAgIDogJycsDQogICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZScgICAgICAgICAgOiAnZGVfREUnLA0KICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJyAgICAgICAgICAgIDogJ3JlY29tbWVuZCcNCiAgICAgICAgICAgICAgICB9LCANCiAgICAgICAgICAgICAgICAndHdpdHRlcicgOiB7DQogICAgICAgICAgICAgICAgICAgICdzdGF0dXMnICAgICAgICAgICAgOiAnb24nLCANCiAgICAgICAgICAgICAgICAgICAgJ2R1bW15X2ltZycgICAgICAgICA6ICdzb2NpYWxzaGFyZXByaXZhY3kvaW1hZ2VzL2R1bW15X3R3aXR0ZXIucG5nJywNCiAgICAgICAgICAgICAgICAgICAgJ3R4dF9pbmZvJyAgICAgICAgICA6ICcyIEtsaWNrcyBmJnV1bWw7ciBtZWhyIERhdGVuc2NodXR6OiBFcnN0IHdlbm4gU2llIGhpZXIga2xpY2tlbiwgd2lyZCBkZXIgQnV0dG9uIGFrdGl2IHVuZCBTaWUgayZvdW1sO25uZW4gSWhyZSBFbXBmZWhsdW5nIGFuIFR3aXR0ZXIgc2VuZGVuLiBTY2hvbiBiZWltIEFrdGl2aWVyZW4gd2VyZGVuIERhdGVuIGFuIERyaXR0ZSAmdXVtbDtiZXJ0cmFnZW4gJm5kYXNoOyBzaWVoZSZuYnNwOzxlbT5pPC9lbT4uJywNCiAgICAgICAgICAgICAgICAgICAgJ3R4dF90d2l0dGVyX29mZicgICA6ICduaWNodCBtaXQgVHdpdHRlciB2ZXJidW5kZW4nLA0KICAgICAgICAgICAgICAgICAgICAndHh0X3R3aXR0ZXJfb24nICAgIDogJ21pdCBUd2l0dGVyIHZlcmJ1bmRlbicsDQogICAgICAgICAgICAgICAgICAgICdwZXJtYV9vcHRpb24nICAgICAgOiAnb24nLA0KICAgICAgICAgICAgICAgICAgICAnZGlzcGxheV9uYW1lJyAgICAgIDogJ1R3aXR0ZXInLA0KICAgICAgICAgICAgICAgICAgICAncmVmZXJyZXJfdHJhY2snICAgIDogJycsIA0KICAgICAgICAgICAgICAgICAgICAndHdlZXRfdGV4dCcgICAgICAgIDogZ2V0VHdlZXRUZXh0LA0KICAgICAgICAgICAgICAgICAgICAnbGFuZ3VhZ2UnICAgICAgICAgIDogJ2VuJw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgJ2dwbHVzJyA6IHsNCiAgICAgICAgICAgICAgICAgICAgJ3N0YXR1cycgICAgICAgICAgICA6ICdvbicsDQogICAgICAgICAgICAgICAgICAgICdkdW1teV9pbWcnICAgICAgICAgOiAnc29jaWFsc2hhcmVwcml2YWN5L2ltYWdlcy9kdW1teV9ncGx1cy5wbmcnLA0KICAgICAgICAgICAgICAgICAgICAndHh0X2luZm8nICAgICAgICAgIDogJzIgS2xpY2tzIGYmdXVtbDtyIG1laHIgRGF0ZW5zY2h1dHo6IEVyc3Qgd2VubiBTaWUgaGllciBrbGlja2VuLCB3aXJkIGRlciBCdXR0b24gYWt0aXYgdW5kIFNpZSBrJm91bWw7bm5lbiBJaHJlIEVtcGZlaGx1bmcgYW4gR29vZ2xlKyBzZW5kZW4uIFNjaG9uIGJlaW0gQWt0aXZpZXJlbiB3ZXJkZW4gRGF0ZW4gYW4gRHJpdHRlICZ1dW1sO2JlcnRyYWdlbiAmbmRhc2g7IHNpZWhlJm5ic3A7PGVtPmk8L2VtPi4nLA0KICAgICAgICAgICAgICAgICAgICAndHh0X2dwbHVzX29mZicgICAgIDogJ25pY2h0IG1pdCBHb29nbGUrIHZlcmJ1bmRlbicsDQogICAgICAgICAgICAgICAgICAgICd0eHRfZ3BsdXNfb24nICAgICAgOiAnbWl0IEdvb2dsZSsgdmVyYnVuZGVuJywNCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1hX29wdGlvbicgICAgICA6ICdvbicsDQogICAgICAgICAgICAgICAgICAgICdkaXNwbGF5X25hbWUnICAgICAgOiAnR29vZ2xlKycsDQogICAgICAgICAgICAgICAgICAgICdyZWZlcnJlcl90cmFjaycgICAgOiAnJywNCiAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlJyAgICAgICAgICA6ICdkZScNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgJ2luZm9fbGluaycgICAgICAgICA6ICdodHRwOi8vd3d3LmhlaXNlLmRlL2N0L2FydGlrZWwvMi1LbGlja3MtZnVlci1tZWhyLURhdGVuc2NodXR6LTEzMzM4NzkuaHRtbCcsDQogICAgICAgICAgICAndHh0X2hlbHAnICAgICAgICAgIDogJ1dlbm4gU2llIGRpZXNlIEZlbGRlciBkdXJjaCBlaW5lbiBLbGljayBha3RpdmllcmVuLCB3ZXJkZW4gSW5mb3JtYXRpb25lbiBhbiBGYWNlYm9vaywgVHdpdHRlciBvZGVyIEdvb2dsZSBpbiBkaWUgVVNBICZ1dW1sO2JlcnRyYWdlbiB1bmQgdW50ZXIgVW1zdCZhdW1sO25kZW4gYXVjaCBkb3J0IGdlc3BlaWNoZXJ0LiBOJmF1bWw7aGVyZXMgZXJmYWhyZW4gU2llIGR1cmNoIGVpbmVuIEtsaWNrIGF1ZiBkYXMmbmJzcDs8ZW0+aTwvZW0+LicsDQogICAgICAgICAgICAnc2V0dGluZ3NfcGVybWEnICAgIDogJ0RhdWVyaGFmdCBha3RpdmllcmVuIHVuZCBEYXRlbiZ1dW1sO2JlciZzaHk7dHJhZ3VuZyB6dXN0aW1tZW46JywNCiAgICAgICAgICAgICdjb29raWVfcGF0aCcgICAgICAgOiAnLycsDQogICAgICAgICAgICAnY29va2llX2RvbWFpbicgICAgIDogZG9jdW1lbnQubG9jYXRpb24uaG9zdCwNCiAgICAgICAgICAgICdjb29raWVfZXhwaXJlcycgICAgOiAnMzY1JywNCiAgICAgICAgICAgICdjc3NfcGF0aCcgICAgICAgICAgOiAnc29jaWFsc2hhcmVwcml2YWN5L3NvY2lhbHNoYXJlcHJpdmFjeS5jc3MnLA0KICAgICAgICAgICAgJ3VyaScgICAgICAgICAgICAgICA6IGdldFVSSQ0KICAgICAgICB9Ow0KDQogICAgICAgIC8vIFN0YW5kYXJkd2VydGUgZGVzIFBsdWctSW5ncyBtaXQgZGVuIHZvbSBVc2VyIGFuZ2VnZWJlbmVuIE9wdGlvbmVuIHVlYmVyc2NocmVpYmVuDQogICAgICAgIHZhciBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwgZGVmYXVsdHMsIHNldHRpbmdzKTsNCg0KICAgICAgICB2YXIgZmFjZWJvb2tfb24gPSAob3B0aW9ucy5zZXJ2aWNlcy5mYWNlYm9vay5zdGF0dXMgPT09ICdvbicpOw0KICAgICAgICB2YXIgdHdpdHRlcl9vbiAgPSAob3B0aW9ucy5zZXJ2aWNlcy50d2l0dGVyLnN0YXR1cyAgPT09ICdvbicpOw0KICAgICAgICB2YXIgZ3BsdXNfb24gICAgPSAob3B0aW9ucy5zZXJ2aWNlcy5ncGx1cy5zdGF0dXMgICAgPT09ICdvbicpOw0KDQogICAgICAgIC8vIGNoZWNrIGlmIGF0IGxlYXN0IG9uZSBzZXJ2aWNlIGlzICJvbiINCiAgICAgICAgaWYgKCFmYWNlYm9va19vbiAmJiAhdHdpdHRlcl9vbiAmJiAhZ3BsdXNfb24pIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIGluc2VydCBzdHlsZXNoZWV0IGludG8gZG9jdW1lbnQgYW5kIHByZXBlbmQgdGFyZ2V0IGVsZW1lbnQNCiAgICAgICAgaWYgKG9wdGlvbnMuY3NzX3BhdGgubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgLy8gSUUgZml4IChub2V0aWcgZnVlciBJRSA8IDkgLSB3aXJkIGhpZXIgYWJlciBmdWVyIGFsbGUgSUUgZ2VtYWNodCkNCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVTdHlsZVNoZWV0KSB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlU3R5bGVTaGVldChvcHRpb25zLmNzc19wYXRoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJCgnaGVhZCcpLmFwcGVuZCgnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJyArIG9wdGlvbnMuY3NzX3BhdGggKyAnIiAvPicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7DQoNCiAgICAgICAgICAgICQodGhpcykucHJlcGVuZCgnPHVsIGNsYXNzPSJzb2NpYWxfc2hhcmVfcHJpdmFjeV9hcmVhIj48L3VsPicpOw0KICAgICAgICAgICAgdmFyIGNvbnRleHQgPSAkKCcuc29jaWFsX3NoYXJlX3ByaXZhY3lfYXJlYScsIHRoaXMpOw0KDQogICAgICAgICAgICAvLyBjYW5vbmljYWwgdXJpIHRoYXQgd2lsbCBiZSBzaGFyZWQNCiAgICAgICAgICAgIHZhciB1cmkgPSBvcHRpb25zLnVyaTsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgdXJpID09PSAnZnVuY3Rpb24nKSB7DQogICAgICAgICAgICAgICAgdXJpID0gdXJpKGNvbnRleHQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gRmFjZWJvb2sNCiAgICAgICAgICAgIC8vDQogICAgICAgICAgICBpZiAoZmFjZWJvb2tfb24pIHsNCiAgICAgICAgICAgICAgICB2YXIgZmJfZW5jX3VyaSA9IGVuY29kZVVSSUNvbXBvbmVudCh1cmkgKyBvcHRpb25zLnNlcnZpY2VzLmZhY2Vib29rLnJlZmVycmVyX3RyYWNrKTsNCiAgICAgICAgICAgICAgICB2YXIgZmJfY29kZSA9ICc8aWZyYW1lIHNyYz0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vcGx1Z2lucy9saWtlLnBocD9sb2NhbGU9JyArIG9wdGlvbnMuc2VydmljZXMuZmFjZWJvb2subGFuZ3VhZ2UgKyAnJmFtcDtocmVmPScgKyBmYl9lbmNfdXJpICsgJyZhbXA7c2VuZD1mYWxzZSZhbXA7bGF5b3V0PWJ1dHRvbl9jb3VudCZhbXA7d2lkdGg9MTIwJmFtcDtzaG93X2ZhY2VzPWZhbHNlJmFtcDthY3Rpb249JyArIG9wdGlvbnMuc2VydmljZXMuZmFjZWJvb2suYWN0aW9uICsgJyZhbXA7Y29sb3JzY2hlbWU9bGlnaHQmYW1wO2ZvbnQmYW1wO2hlaWdodD0yMSIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6bm9uZTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxNDVweDsgaGVpZ2h0OjIxcHg7IiBhbGxvd1RyYW5zcGFyZW5jeT0idHJ1ZSI+PC9pZnJhbWU+JzsNCiAgICAgICAgICAgICAgICB2YXIgZmJfZHVtbXlfYnRuID0gJzxpbWcgc3JjPSInICsgb3B0aW9ucy5zZXJ2aWNlcy5mYWNlYm9vay5kdW1teV9pbWcgKyAnIiBhbHQ9IkZhY2Vib29rICZxdW90O0xpa2UmcXVvdDstRHVtbXkiIGNsYXNzPSJmYl9saWtlX3ByaXZhY3lfZHVtbXkiIC8+JzsNCg0KICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kKCc8bGkgY2xhc3M9ImZhY2Vib29rIGhlbHBfaW5mbyI+PHNwYW4gY2xhc3M9ImluZm8iPicgKyBvcHRpb25zLnNlcnZpY2VzLmZhY2Vib29rLnR4dF9pbmZvICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0ic3dpdGNoIG9mZiI+JyArIG9wdGlvbnMuc2VydmljZXMuZmFjZWJvb2sudHh0X2ZiX29mZiArICc8L3NwYW4+PGRpdiBjbGFzcz0iZmJfbGlrZSBkdW1teV9idG4iPicgKyBmYl9kdW1teV9idG4gKyAnPC9kaXY+PC9saT4nKTsNCg0KICAgICAgICAgICAgICAgIHZhciAkY29udGFpbmVyX2ZiID0gJCgnbGkuZmFjZWJvb2snLCBjb250ZXh0KTsNCg0KICAgICAgICAgICAgICAgICQoJ2xpLmZhY2Vib29rIGRpdi5mYl9saWtlIGltZy5mYl9saWtlX3ByaXZhY3lfZHVtbXksbGkuZmFjZWJvb2sgc3Bhbi5zd2l0Y2gnLCBjb250ZXh0KS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGFpbmVyX2ZiLmZpbmQoJ3NwYW4uc3dpdGNoJykuaGFzQ2xhc3MoJ29mZicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX2ZiLmFkZENsYXNzKCdpbmZvX29mZicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9mYi5maW5kKCdzcGFuLnN3aXRjaCcpLmFkZENsYXNzKCdvbicpLnJlbW92ZUNsYXNzKCdvZmYnKS5odG1sKG9wdGlvbnMuc2VydmljZXMuZmFjZWJvb2sudHh0X2ZiX29uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfZmIuZmluZCgnaW1nLmZiX2xpa2VfcHJpdmFjeV9kdW1teScpLnJlcGxhY2VXaXRoKGZiX2NvZGUpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9mYi5yZW1vdmVDbGFzcygnaW5mb19vZmYnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfZmIuZmluZCgnc3Bhbi5zd2l0Y2gnKS5hZGRDbGFzcygnb2ZmJykucmVtb3ZlQ2xhc3MoJ29uJykuaHRtbChvcHRpb25zLnNlcnZpY2VzLmZhY2Vib29rLnR4dF9mYl9vZmYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9mYi5maW5kKCcuZmJfbGlrZScpLmh0bWwoZmJfZHVtbXlfYnRuKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gVHdpdHRlcg0KICAgICAgICAgICAgLy8NCiAgICAgICAgICAgIGlmICh0d2l0dGVyX29uKSB7DQogICAgICAgICAgICAgICAgdmFyIHRleHQgPSBvcHRpb25zLnNlcnZpY2VzLnR3aXR0ZXIudHdlZXRfdGV4dDsNCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy8gMTIwIGlzIHRoZSBtYXggY2hhcmFjdGVyIGNvdW50IGxlZnQgYWZ0ZXIgdHdpdHRlcnMgYXV0b21hdGljIHVybCBzaG9ydGVuaW5nIHdpdGggdC5jbw0KICAgICAgICAgICAgICAgIHRleHQgPSBhYmJyZXZpYXRlVGV4dCh0ZXh0LCAnMTIwJyk7DQoNCiAgICAgICAgICAgICAgICB2YXIgdHdpdHRlcl9lbmNfdXJpID0gZW5jb2RlVVJJQ29tcG9uZW50KHVyaSArIG9wdGlvbnMuc2VydmljZXMudHdpdHRlci5yZWZlcnJlcl90cmFjayk7DQogICAgICAgICAgICAgICAgdmFyIHR3aXR0ZXJfY291bnRfdXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHVyaSk7DQogICAgICAgICAgICAgICAgdmFyIHR3aXR0ZXJfY29kZSA9ICc8aWZyYW1lIGFsbG93dHJhbnNwYXJlbmN5PSJ0cnVlIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyIgc3JjPSJodHRwOi8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy90d2VldF9idXR0b24uaHRtbD91cmw9JyArIHR3aXR0ZXJfZW5jX3VyaSArICcmYW1wO2NvdW50dXJsPScgKyB0d2l0dGVyX2NvdW50X3VybCArICcmYW1wO3RleHQ9JyArIHRleHQgKyAnJmFtcDtjb3VudD1ob3Jpem9udGFsJmFtcDtsYW5nPScgKyBvcHRpb25zLnNlcnZpY2VzLnR3aXR0ZXIubGFuZ3VhZ2UgKyAnIiBzdHlsZT0id2lkdGg6MTMwcHg7IGhlaWdodDoyNXB4OyI+PC9pZnJhbWU+JzsNCiAgICAgICAgICAgICAgICB2YXIgdHdpdHRlcl9kdW1teV9idG4gPSAnPGltZyBzcmM9IicgKyBvcHRpb25zLnNlcnZpY2VzLnR3aXR0ZXIuZHVtbXlfaW1nICsgJyIgYWx0PSImcXVvdDtUd2VldCB0aGlzJnF1b3Q7LUR1bW15IiBjbGFzcz0idHdlZXRfdGhpc19kdW1teSIgLz4nOw0KDQogICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmQoJzxsaSBjbGFzcz0idHdpdHRlciBoZWxwX2luZm8iPjxzcGFuIGNsYXNzPSJpbmZvIj4nICsgb3B0aW9ucy5zZXJ2aWNlcy50d2l0dGVyLnR4dF9pbmZvICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0ic3dpdGNoIG9mZiI+JyArIG9wdGlvbnMuc2VydmljZXMudHdpdHRlci50eHRfdHdpdHRlcl9vZmYgKyAnPC9zcGFuPjxkaXYgY2xhc3M9InR3ZWV0IGR1bW15X2J0biI+JyArIHR3aXR0ZXJfZHVtbXlfYnRuICsgJzwvZGl2PjwvbGk+Jyk7DQoNCiAgICAgICAgICAgICAgICB2YXIgJGNvbnRhaW5lcl90dyA9ICQoJ2xpLnR3aXR0ZXInLCBjb250ZXh0KTsNCg0KICAgICAgICAgICAgICAgICQoJ2xpLnR3aXR0ZXIgZGl2LnR3ZWV0IGltZyxsaS50d2l0dGVyIHNwYW4uc3dpdGNoJywgY29udGV4dCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoJGNvbnRhaW5lcl90dy5maW5kKCdzcGFuLnN3aXRjaCcpLmhhc0NsYXNzKCdvZmYnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90dy5hZGRDbGFzcygnaW5mb19vZmYnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfdHcuZmluZCgnc3Bhbi5zd2l0Y2gnKS5hZGRDbGFzcygnb24nKS5yZW1vdmVDbGFzcygnb2ZmJykuaHRtbChvcHRpb25zLnNlcnZpY2VzLnR3aXR0ZXIudHh0X3R3aXR0ZXJfb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90dy5maW5kKCdpbWcudHdlZXRfdGhpc19kdW1teScpLnJlcGxhY2VXaXRoKHR3aXR0ZXJfY29kZSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX3R3LnJlbW92ZUNsYXNzKCdpbmZvX29mZicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90dy5maW5kKCdzcGFuLnN3aXRjaCcpLmFkZENsYXNzKCdvZmYnKS5yZW1vdmVDbGFzcygnb24nKS5odG1sKG9wdGlvbnMuc2VydmljZXMudHdpdHRlci50eHRfdHdpdHRlcl9vZmYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90dy5maW5kKCcudHdlZXQnKS5odG1sKHR3aXR0ZXJfZHVtbXlfYnRuKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gR29vZ2xlKw0KICAgICAgICAgICAgLy8NCiAgICAgICAgICAgIGlmIChncGx1c19vbikgew0KICAgICAgICAgICAgICAgIC8vIGZ1ZXIgRysgd2lyZCBkaWUgVVJMIG5pY2h0IGVuY29kZWQsIGRhIGRhcyB6dSBlaW5lbSBGZWhsZXIgZnVlaHJ0DQogICAgICAgICAgICAgICAgdmFyIGdwbHVzX3VyaSA9IHVyaSArIG9wdGlvbnMuc2VydmljZXMuZ3BsdXMucmVmZXJyZXJfdHJhY2s7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgLy8gd2UgdXNlIHRoZSBHb29nbGUrICJhc3luY2hyb25vdXMiIGNvZGUsIHN0YW5kYXJkIGNvZGUgaXMgZmxha3kgaWYgaW5zZXJ0ZWQgaW50byBkb20gYWZ0ZXIgbG9hZA0KICAgICAgICAgICAgICAgIHZhciBncGx1c19jb2RlID0gJzxkaXYgY2xhc3M9ImctcGx1c29uZSIgZGF0YS1zaXplPSJtZWRpdW0iIGRhdGEtaHJlZj0iJyArIGdwbHVzX3VyaSArICciPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij53aW5kb3cuX19fZ2NmZyA9IHtsYW5nOiAiJyArIG9wdGlvbnMuc2VydmljZXMuZ3BsdXMubGFuZ3VhZ2UgKyAnIn07IChmdW5jdGlvbigpIHsgdmFyIHBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7IHBvLnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsgcG8uYXN5bmMgPSB0cnVlOyBwby5zcmMgPSAiaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvcGx1c29uZS5qcyI7IHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHBvLCBzKTsgfSkoKTsgPC9zY3JpcHQ+JzsNCiAgICAgICAgICAgICAgICB2YXIgZ3BsdXNfZHVtbXlfYnRuID0gJzxpbWcgc3JjPSInICsgb3B0aW9ucy5zZXJ2aWNlcy5ncGx1cy5kdW1teV9pbWcgKyAnIiBhbHQ9IiZxdW90O0dvb2dsZSsxJnF1b3Q7LUR1bW15IiBjbGFzcz0iZ3BsdXNfb25lX2R1bW15IiAvPic7DQoNCiAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZCgnPGxpIGNsYXNzPSJncGx1cyBoZWxwX2luZm8iPjxzcGFuIGNsYXNzPSJpbmZvIj4nICsgb3B0aW9ucy5zZXJ2aWNlcy5ncGx1cy50eHRfaW5mbyArICc8L3NwYW4+PHNwYW4gY2xhc3M9InN3aXRjaCBvZmYiPicgKyBvcHRpb25zLnNlcnZpY2VzLmdwbHVzLnR4dF9ncGx1c19vZmYgKyAnPC9zcGFuPjxkaXYgY2xhc3M9ImdwbHVzb25lIGR1bW15X2J0biI+JyArIGdwbHVzX2R1bW15X2J0biArICc8L2Rpdj48L2xpPicpOw0KDQogICAgICAgICAgICAgICAgdmFyICRjb250YWluZXJfZ3BsdXMgPSAkKCdsaS5ncGx1cycsIGNvbnRleHQpOw0KDQogICAgICAgICAgICAgICAgJCgnbGkuZ3BsdXMgZGl2LmdwbHVzb25lIGltZyxsaS5ncGx1cyBzcGFuLnN3aXRjaCcsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250YWluZXJfZ3BsdXMuZmluZCgnc3Bhbi5zd2l0Y2gnKS5oYXNDbGFzcygnb2ZmJykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfZ3BsdXMuYWRkQ2xhc3MoJ2luZm9fb2ZmJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX2dwbHVzLmZpbmQoJ3NwYW4uc3dpdGNoJykuYWRkQ2xhc3MoJ29uJykucmVtb3ZlQ2xhc3MoJ29mZicpLmh0bWwob3B0aW9ucy5zZXJ2aWNlcy5ncGx1cy50eHRfZ3BsdXNfb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9ncGx1cy5maW5kKCdpbWcuZ3BsdXNfb25lX2R1bW15JykucmVwbGFjZVdpdGgoZ3BsdXNfY29kZSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX2dwbHVzLnJlbW92ZUNsYXNzKCdpbmZvX29mZicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9ncGx1cy5maW5kKCdzcGFuLnN3aXRjaCcpLmFkZENsYXNzKCdvZmYnKS5yZW1vdmVDbGFzcygnb24nKS5odG1sKG9wdGlvbnMuc2VydmljZXMuZ3BsdXMudHh0X2dwbHVzX29mZik7DQogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX2dwbHVzLmZpbmQoJy5ncGx1c29uZScpLmh0bWwoZ3BsdXNfZHVtbXlfYnRuKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gRGVyIEluZm8vU2V0dGluZ3MtQmVyZWljaCB3aXJkIGVpbmdlYnVuZGVuDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgY29udGV4dC5hcHBlbmQoJzxsaSBjbGFzcz0ic2V0dGluZ3NfaW5mbyI+PGRpdiBjbGFzcz0ic2V0dGluZ3NfaW5mb19tZW51IG9mZiBwZXJtYV9vcHRpb25fb2ZmIj48YSBocmVmPSInICsgb3B0aW9ucy5pbmZvX2xpbmsgKyAnIj48c3BhbiBjbGFzcz0iaGVscF9pbmZvIGljb24iPjxzcGFuIGNsYXNzPSJpbmZvIj4nICsgb3B0aW9ucy50eHRfaGVscCArICc8L3NwYW4+PC9zcGFuPjwvYT48L2Rpdj48L2xpPicpOw0KDQogICAgICAgICAgICAvLyBJbmZvLU92ZXJsYXlzIG1pdCBsZWljaHRlciBWZXJ6b2VnZXJ1bmcgZWluYmxlbmRlbg0KICAgICAgICAgICAgJCgnLmhlbHBfaW5mbzpub3QoLmluZm9fb2ZmKScsIGNvbnRleHQpLm9uKCdtb3VzZWVudGVyJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHZhciAkaW5mb193cmFwcGVyID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICB2YXIgdGltZW91dF9pZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgJCgkaW5mb193cmFwcGVyKS5hZGRDbGFzcygnZGlzcGxheScpOyB9LCA1MDApOw0KICAgICAgICAgICAgICAgICQodGhpcykuZGF0YSgndGltZW91dF9pZCcsIHRpbWVvdXRfaWQpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAkKCcuaGVscF9pbmZvJywgY29udGV4dCkub24oJ21vdXNlbGVhdmUnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgdmFyIHRpbWVvdXRfaWQgPSAkKHRoaXMpLmRhdGEoJ3RpbWVvdXRfaWQnKTsNCiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRfaWQpOw0KICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdkaXNwbGF5JykpIHsNCiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnZGlzcGxheScpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICB2YXIgZmFjZWJvb2tfcGVybWEgPSAob3B0aW9ucy5zZXJ2aWNlcy5mYWNlYm9vay5wZXJtYV9vcHRpb24gPT09ICdvbicpOw0KICAgICAgICAgICAgdmFyIHR3aXR0ZXJfcGVybWEgID0gKG9wdGlvbnMuc2VydmljZXMudHdpdHRlci5wZXJtYV9vcHRpb24gID09PSAnb24nKTsNCiAgICAgICAgICAgIHZhciBncGx1c19wZXJtYSAgICA9IChvcHRpb25zLnNlcnZpY2VzLmdwbHVzLnBlcm1hX29wdGlvbiAgICA9PT0gJ29uJyk7DQoNCiAgICAgICAgICAgIC8vIE1lbnVlIHp1bSBkYXVlcmhhZnRlbiBFaW5ibGVuZGVuIGRlciBha3RpdmVuIERpZW5zdGUgdmlhIENvb2tpZSBlaW5iaW5kZW4NCiAgICAgICAgICAgIC8vIERpZSBJRTcgd2lyZCBoaWVyIGF1c2dlbm9tbWVuLCBkYSBlciBrZWluIEpTT04ga2FubiB1bmQgZGllIENvb2tpZXMgaGllciB1ZWJlciBKU09OLVN0cnVrdHVyIGFiZ2ViaWxkZXQgd2VyZGVuDQogICAgICAgICAgICBpZiAoKChmYWNlYm9va19vbiAmJiBmYWNlYm9va19wZXJtYSkNCiAgICAgICAgICAgICAgICB8fCAodHdpdHRlcl9vbiAmJiB0d2l0dGVyX3Blcm1hKQ0KICAgICAgICAgICAgICAgIHx8IChncGx1c19vbiAmJiBncGx1c19wZXJtYSkpDQogICAgICAgICAgICAgICAgICAgICYmIHdpbmRvdy5KU09OICYmIHdpbmRvdy5KU09OLnBhcnNlKSB7DQoNCiAgICAgICAgICAgICAgICAvLyBDb29raWVzIGFicnVmZW4NCiAgICAgICAgICAgICAgICB2YXIgY29va2llX2xpc3QgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTsNCiAgICAgICAgICAgICAgICB2YXIgY29va2llcyA9ICd7JzsNCiAgICAgICAgICAgICAgICB2YXIgaSA9IDA7DQogICAgICAgICAgICAgICAgZm9yICg7IGkgPCBjb29raWVfbGlzdC5sZW5ndGg7IGkgKz0gMSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZm9vID0gY29va2llX2xpc3RbaV0uc3BsaXQoJz0nKTsNCiAgICAgICAgICAgICAgICAgICAgY29va2llcyArPSAnIicgKyAkLnRyaW0oZm9vWzBdKSArICciOiInICsgJC50cmltKGZvb1sxXSkgKyAnIic7DQogICAgICAgICAgICAgICAgICAgIGlmIChpIDwgY29va2llX2xpc3QubGVuZ3RoIC0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY29va2llcyArPSAnLCc7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY29va2llcyArPSAnfSc7DQogICAgICAgICAgICAgICAgY29va2llcyA9IEpTT04ucGFyc2UoY29va2llcyk7DQoNCiAgICAgICAgICAgICAgICAvLyBDb250YWluZXIgZGVmaW5pZXJlbg0KICAgICAgICAgICAgICAgIHZhciAkY29udGFpbmVyX3NldHRpbmdzX2luZm8gPSAkKCdsaS5zZXR0aW5nc19pbmZvJywgY29udGV4dCk7DQoNCiAgICAgICAgICAgICAgICAvLyBLbGFzc2UgZW50ZmVybmVuLCBkaWUgZGFzIGktSWNvbiBhbGxlaW5lIGZvcm1hdGllcnQsIGRhIFBlcm1hLU9wdGlvbmVuIGVpbmdlYmxlbmRldCB3ZXJkZW4NCiAgICAgICAgICAgICAgICAkY29udGFpbmVyX3NldHRpbmdzX2luZm8uZmluZCgnLnNldHRpbmdzX2luZm9fbWVudScpLnJlbW92ZUNsYXNzKCdwZXJtYV9vcHRpb25fb2ZmJyk7DQoNCiAgICAgICAgICAgICAgICAvLyBQZXJtYS1PcHRpb25lbi1JY29uICguc2V0dGluZ3MpIHVuZCBGb3JtdWxhciAobm9jaCB2ZXJzdGVja3QpIGVpbmJpbmRlbg0KICAgICAgICAgICAgICAgICRjb250YWluZXJfc2V0dGluZ3NfaW5mby5maW5kKCcuc2V0dGluZ3NfaW5mb19tZW51JykuYXBwZW5kKCc8c3BhbiBjbGFzcz0ic2V0dGluZ3MiPkVpbnN0ZWxsdW5nZW48L3NwYW4+PGZvcm0+PGZpZWxkc2V0PjxsZWdlbmQ+JyArIG9wdGlvbnMuc2V0dGluZ3NfcGVybWEgKyAnPC9sZWdlbmQ+PC9maWVsZHNldD48L2Zvcm0+Jyk7DQoNCg0KICAgICAgICAgICAgICAgIC8vIERpZSBEaWVuc3RlIG1pdCA8aW5wdXQ+IHVuZCA8bGFiZWw+LCBzb3dpZSBjaGVja2VkLVN0YXR1cyBsYXV0IENvb2tpZSwgc2NocmVpYmVuDQogICAgICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsNCiAgICAgICAgICAgICAgICBpZiAoZmFjZWJvb2tfb24gJiYgZmFjZWJvb2tfcGVybWEpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcm1hX3N0YXR1c19mYWNlYm9vayA9IGNvb2tpZXMuc29jaWFsU2hhcmVQcml2YWN5X2ZhY2Vib29rID09PSAncGVybWFfb24nID8gY2hlY2tlZCA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX3NldHRpbmdzX2luZm8uZmluZCgnZm9ybSBmaWVsZHNldCcpLmFwcGVuZCgNCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InBlcm1hX3N0YXR1c19mYWNlYm9vayIgaWQ9InBlcm1hX3N0YXR1c19mYWNlYm9vayInDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwZXJtYV9zdGF0dXNfZmFjZWJvb2sgKyAnIC8+PGxhYmVsIGZvcj0icGVybWFfc3RhdHVzX2ZhY2Vib29rIj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvcHRpb25zLnNlcnZpY2VzLmZhY2Vib29rLmRpc3BsYXlfbmFtZSArICc8L2xhYmVsPicNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAodHdpdHRlcl9vbiAmJiB0d2l0dGVyX3Blcm1hKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBwZXJtYV9zdGF0dXNfdHdpdHRlciA9IGNvb2tpZXMuc29jaWFsU2hhcmVQcml2YWN5X3R3aXR0ZXIgPT09ICdwZXJtYV9vbicgPyBjaGVja2VkIDogJyc7DQogICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfc2V0dGluZ3NfaW5mby5maW5kKCdmb3JtIGZpZWxkc2V0JykuYXBwZW5kKA0KICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icGVybWFfc3RhdHVzX3R3aXR0ZXIiIGlkPSJwZXJtYV9zdGF0dXNfdHdpdHRlciInDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwZXJtYV9zdGF0dXNfdHdpdHRlciArICcgLz48bGFiZWwgZm9yPSJwZXJtYV9zdGF0dXNfdHdpdHRlciI+Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgb3B0aW9ucy5zZXJ2aWNlcy50d2l0dGVyLmRpc3BsYXlfbmFtZSArICc8L2xhYmVsPicNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoZ3BsdXNfb24gJiYgZ3BsdXNfcGVybWEpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcm1hX3N0YXR1c19ncGx1cyA9IGNvb2tpZXMuc29jaWFsU2hhcmVQcml2YWN5X2dwbHVzID09PSAncGVybWFfb24nID8gY2hlY2tlZCA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX3NldHRpbmdzX2luZm8uZmluZCgnZm9ybSBmaWVsZHNldCcpLmFwcGVuZCgNCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InBlcm1hX3N0YXR1c19ncGx1cyIgaWQ9InBlcm1hX3N0YXR1c19ncGx1cyInDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwZXJtYV9zdGF0dXNfZ3BsdXMgKyAnIC8+PGxhYmVsIGZvcj0icGVybWFfc3RhdHVzX2dwbHVzIj4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBvcHRpb25zLnNlcnZpY2VzLmdwbHVzLmRpc3BsYXlfbmFtZSArICc8L2xhYmVsPicNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBDdXJzb3IgYXVmIFBvaW50ZXIgc2V0emVuIGZ1ZXIgZGFzIFphaG5yYWQNCiAgICAgICAgICAgICAgICAkY29udGFpbmVyX3NldHRpbmdzX2luZm8uZmluZCgnc3Bhbi5zZXR0aW5ncycpLmNzcygnY3Vyc29yJywgJ3BvaW50ZXInKTsNCg0KICAgICAgICAgICAgICAgIC8vIEVpbnN0ZWxsdW5ncy1NZW51ZSBiZWkgbW91c2VvdmVyIGVpbi0vYXVzYmxlbmRlbg0KICAgICAgICAgICAgICAgICQoJGNvbnRhaW5lcl9zZXR0aW5nc19pbmZvLmZpbmQoJ3NwYW4uc2V0dGluZ3MnKSwgY29udGV4dCkub24oJ21vdXNlZW50ZXInLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciB0aW1lb3V0X2lkID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkY29udGFpbmVyX3NldHRpbmdzX2luZm8uZmluZCgnLnNldHRpbmdzX2luZm9fbWVudScpLnJlbW92ZUNsYXNzKCdvZmYnKS5hZGRDbGFzcygnb24nKTsgfSwgNTAwKTsNCiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRhKCd0aW1lb3V0X2lkJywgdGltZW91dF9pZCk7DQogICAgICAgICAgICAgICAgfSk7IA0KICAgICAgICAgICAgICAgICQoJGNvbnRhaW5lcl9zZXR0aW5nc19pbmZvLCBjb250ZXh0KS5vbignbW91c2VsZWF2ZScsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVvdXRfaWQgPSAkKHRoaXMpLmRhdGEoJ3RpbWVvdXRfaWQnKTsNCiAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0X2lkKTsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9zZXR0aW5nc19pbmZvLmZpbmQoJy5zZXR0aW5nc19pbmZvX21lbnUnKS5yZW1vdmVDbGFzcygnb24nKS5hZGRDbGFzcygnb2ZmJyk7DQogICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAvLyBLbGljay1JbnRlcmFrdGlvbiBhdWYgPGlucHV0PiB1bSBEaWVuc3RlIGRhdWVyaGFmdCBlaW4tIG9kZXIgYXVzenVzY2hhbHRlbiAoQ29va2llIHdpcmQgZ2VzZXR6dCBvZGVyIGdlbG9lc2NodCkNCiAgICAgICAgICAgICAgICAkKCRjb250YWluZXJfc2V0dGluZ3NfaW5mby5maW5kKCdmaWVsZHNldCBpbnB1dCcpKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsaWNrID0gZXZlbnQudGFyZ2V0LmlkOw0KICAgICAgICAgICAgICAgICAgICB2YXIgc2VydmljZSA9IGNsaWNrLnN1YnN0cihjbGljay5sYXN0SW5kZXhPZignXycpICsgMSwgY2xpY2subGVuZ3RoKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvb2tpZV9uYW1lID0gJ3NvY2lhbFNoYXJlUHJpdmFjeV8nICsgc2VydmljZTsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBldmVudC50YXJnZXQuaWQgKyAnOmNoZWNrZWQnKS5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZVNldChjb29raWVfbmFtZSwgJ3Blcm1hX29uJywgb3B0aW9ucy5jb29raWVfZXhwaXJlcywgb3B0aW9ucy5jb29raWVfcGF0aCwgb3B0aW9ucy5jb29raWVfZG9tYWluKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2Zvcm0gZmllbGRzZXQgbGFiZWxbZm9yPScgKyBjbGljayArICddJywgY29udGV4dCkuYWRkQ2xhc3MoJ2NoZWNrZWQnKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZURlbChjb29raWVfbmFtZSwgJ3Blcm1hX29uJywgb3B0aW9ucy5jb29raWVfcGF0aCwgb3B0aW9ucy5jb29raWVfZG9tYWluKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2Zvcm0gZmllbGRzZXQgbGFiZWxbZm9yPScgKyBjbGljayArICddJywgY29udGV4dCkucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgLy8gRGllbnN0ZSBhdXRvbWF0aXNjaCBlaW5iaW5kZW4sIHdlbm4gZW50c3ByZWNoZW5kZXMgQ29va2llIHZvcmhhbmRlbiBpc3QNCiAgICAgICAgICAgICAgICBpZiAoZmFjZWJvb2tfb24gJiYgZmFjZWJvb2tfcGVybWEgJiYgY29va2llcy5zb2NpYWxTaGFyZVByaXZhY3lfZmFjZWJvb2sgPT09ICdwZXJtYV9vbicpIHsNCiAgICAgICAgICAgICAgICAgICAgJCgnbGkuZmFjZWJvb2sgc3Bhbi5zd2l0Y2gnLCBjb250ZXh0KS5jbGljaygpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAodHdpdHRlcl9vbiAmJiB0d2l0dGVyX3Blcm1hICYmIGNvb2tpZXMuc29jaWFsU2hhcmVQcml2YWN5X3R3aXR0ZXIgPT09ICdwZXJtYV9vbicpIHsNCiAgICAgICAgICAgICAgICAgICAgJCgnbGkudHdpdHRlciBzcGFuLnN3aXRjaCcsIGNvbnRleHQpLmNsaWNrKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChncGx1c19vbiAmJiBncGx1c19wZXJtYSAmJiBjb29raWVzLnNvY2lhbFNoYXJlUHJpdmFjeV9ncGx1cyA9PT0gJ3Blcm1hX29uJykgew0KICAgICAgICAgICAgICAgICAgICAkKCdsaS5ncGx1cyBzcGFuLnN3aXRjaCcsIGNvbnRleHQpLmNsaWNrKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsgLy8gdGhpcy5lYWNoKGZ1bmN0aW9uICgpDQogICAgfTsgICAgICAvLyAkLmZuLnNvY2lhbFNoYXJlUHJpdmFjeSA9IGZ1bmN0aW9uIChzZXR0aW5ncykgew0KfShqUXVlcnkpKTsNCg0K]]></data>
	</file>
	<file>
	  <filename>/templates/js/jquery.socialshareprivacy.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGcoaixoKXt2YXIgaz1kZWNvZGVVUklDb21wb25lbnQoaik7aWYoay5sZW5ndGg8PWgpe3JldHVybiBqfXZhciBpPWsuc3Vic3RyaW5nKDAsaC0xKS5sYXN0SW5kZXhPZigiICIpO2s9ZW5jb2RlVVJJQ29tcG9uZW50KGsuc3Vic3RyaW5nKDAsaSkpKyJcdTIwMjYiO3JldHVybiBrfWZ1bmN0aW9uIGEoaSl7dmFyIGg9ZignbWV0YVtuYW1lPSInK2krJyJdJykuYXR0cigiY29udGVudCIpO3JldHVybiBofHwiIn1mdW5jdGlvbiBiKCl7dmFyIGk9YSgiREMudGl0bGUiKTt2YXIgaD1hKCJEQy5jcmVhdG9yIik7aWYoaS5sZW5ndGg+MCYmaC5sZW5ndGg+MCl7aSs9IiAtICIraH1lbHNle2k9ZigidGl0bGUiKS50ZXh0KCl9cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChpKX1mdW5jdGlvbiBlKCl7dmFyIGk9ZG9jdW1lbnQubG9jYXRpb24uaHJlZjt2YXIgaD1mKCJsaW5rW3JlbD1jYW5vbmljYWxdIikuYXR0cigiaHJlZiIpO2lmKGgmJmgubGVuZ3RoPjApe2lmKGguaW5kZXhPZigiaHR0cCIpPDApe2g9ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wrIi8vIitkb2N1bWVudC5sb2NhdGlvbi5ob3N0K2h9aT1ofXJldHVybiBpfWZ1bmN0aW9uIGMoaSxrLG0sbCxqKXt2YXIgaD1uZXcgRGF0ZSgpO2guc2V0VGltZShoLmdldFRpbWUoKSsobSoyNCo2MCo2MCoxMDAwKSk7ZG9jdW1lbnQuY29va2llPWkrIj0iK2srIjsgZXhwaXJlcz0iK2gudG9VVENTdHJpbmcoKSsiOyBwYXRoPSIrbCsiOyBkb21haW49IitqfWZ1bmN0aW9uIGQoaSxrLGwsail7dmFyIGg9bmV3IERhdGUoKTtoLnNldFRpbWUoaC5nZXRUaW1lKCktMTAwKTtkb2N1bWVudC5jb29raWU9aSsiPSIraysiOyBleHBpcmVzPSIraC50b1VUQ1N0cmluZygpKyI7IHBhdGg9IitsKyI7IGRvbWFpbj0iK2p9Zi5mbi5zb2NpYWxTaGFyZVByaXZhY3k9ZnVuY3Rpb24oaSl7dmFyIG09e3NlcnZpY2VzOntmYWNlYm9vazp7c3RhdHVzOiJvbiIsZHVtbXlfaW1nOiJzb2NpYWxzaGFyZXByaXZhY3kvaW1hZ2VzL2R1bW15X2ZhY2Vib29rLnBuZyIsdHh0X2luZm86IjIgS2xpY2tzIGYmdXVtbDtyIG1laHIgRGF0ZW5zY2h1dHo6IEVyc3Qgd2VubiBTaWUgaGllciBrbGlja2VuLCB3aXJkIGRlciBCdXR0b24gYWt0aXYgdW5kIFNpZSBrJm91bWw7bm5lbiBJaHJlIEVtcGZlaGx1bmcgYW4gRmFjZWJvb2sgc2VuZGVuLiBTY2hvbiBiZWltIEFrdGl2aWVyZW4gd2VyZGVuIERhdGVuIGFuIERyaXR0ZSAmdXVtbDtiZXJ0cmFnZW4gJm5kYXNoOyBzaWVoZSZuYnNwOzxlbT5pPC9lbT4uIix0eHRfZmJfb2ZmOiJuaWNodCBtaXQgRmFjZWJvb2sgdmVyYnVuZGVuIix0eHRfZmJfb246Im1pdCBGYWNlYm9vayB2ZXJidW5kZW4iLHBlcm1hX29wdGlvbjoib24iLGRpc3BsYXlfbmFtZToiRmFjZWJvb2siLHJlZmVycmVyX3RyYWNrOiIiLGxhbmd1YWdlOiJkZV9ERSIsYWN0aW9uOiJyZWNvbW1lbmQifSx0d2l0dGVyOntzdGF0dXM6Im9uIixkdW1teV9pbWc6InNvY2lhbHNoYXJlcHJpdmFjeS9pbWFnZXMvZHVtbXlfdHdpdHRlci5wbmciLHR4dF9pbmZvOiIyIEtsaWNrcyBmJnV1bWw7ciBtZWhyIERhdGVuc2NodXR6OiBFcnN0IHdlbm4gU2llIGhpZXIga2xpY2tlbiwgd2lyZCBkZXIgQnV0dG9uIGFrdGl2IHVuZCBTaWUgayZvdW1sO25uZW4gSWhyZSBFbXBmZWhsdW5nIGFuIFR3aXR0ZXIgc2VuZGVuLiBTY2hvbiBiZWltIEFrdGl2aWVyZW4gd2VyZGVuIERhdGVuIGFuIERyaXR0ZSAmdXVtbDtiZXJ0cmFnZW4gJm5kYXNoOyBzaWVoZSZuYnNwOzxlbT5pPC9lbT4uIix0eHRfdHdpdHRlcl9vZmY6Im5pY2h0IG1pdCBUd2l0dGVyIHZlcmJ1bmRlbiIsdHh0X3R3aXR0ZXJfb246Im1pdCBUd2l0dGVyIHZlcmJ1bmRlbiIscGVybWFfb3B0aW9uOiJvbiIsZGlzcGxheV9uYW1lOiJUd2l0dGVyIixyZWZlcnJlcl90cmFjazoiIix0d2VldF90ZXh0OmIsbGFuZ3VhZ2U6ImVuIn0sZ3BsdXM6e3N0YXR1czoib24iLGR1bW15X2ltZzoic29jaWFsc2hhcmVwcml2YWN5L2ltYWdlcy9kdW1teV9ncGx1cy5wbmciLHR4dF9pbmZvOiIyIEtsaWNrcyBmJnV1bWw7ciBtZWhyIERhdGVuc2NodXR6OiBFcnN0IHdlbm4gU2llIGhpZXIga2xpY2tlbiwgd2lyZCBkZXIgQnV0dG9uIGFrdGl2IHVuZCBTaWUgayZvdW1sO25uZW4gSWhyZSBFbXBmZWhsdW5nIGFuIEdvb2dsZSsgc2VuZGVuLiBTY2hvbiBiZWltIEFrdGl2aWVyZW4gd2VyZGVuIERhdGVuIGFuIERyaXR0ZSAmdXVtbDtiZXJ0cmFnZW4gJm5kYXNoOyBzaWVoZSZuYnNwOzxlbT5pPC9lbT4uIix0eHRfZ3BsdXNfb2ZmOiJuaWNodCBtaXQgR29vZ2xlKyB2ZXJidW5kZW4iLHR4dF9ncGx1c19vbjoibWl0IEdvb2dsZSsgdmVyYnVuZGVuIixwZXJtYV9vcHRpb246Im9uIixkaXNwbGF5X25hbWU6Ikdvb2dsZSsiLHJlZmVycmVyX3RyYWNrOiIiLGxhbmd1YWdlOiJkZSJ9fSxpbmZvX2xpbms6Imh0dHA6Ly93d3cuaGVpc2UuZGUvY3QvYXJ0aWtlbC8yLUtsaWNrcy1mdWVyLW1laHItRGF0ZW5zY2h1dHotMTMzMzg3OS5odG1sIix0eHRfaGVscDoiV2VubiBTaWUgZGllc2UgRmVsZGVyIGR1cmNoIGVpbmVuIEtsaWNrIGFrdGl2aWVyZW4sIHdlcmRlbiBJbmZvcm1hdGlvbmVuIGFuIEZhY2Vib29rLCBUd2l0dGVyIG9kZXIgR29vZ2xlIGluIGRpZSBVU0EgJnV1bWw7YmVydHJhZ2VuIHVuZCB1bnRlciBVbXN0JmF1bWw7bmRlbiBhdWNoIGRvcnQgZ2VzcGVpY2hlcnQuIE4mYXVtbDtoZXJlcyBlcmZhaHJlbiBTaWUgZHVyY2ggZWluZW4gS2xpY2sgYXVmIGRhcyZuYnNwOzxlbT5pPC9lbT4uIixzZXR0aW5nc19wZXJtYToiRGF1ZXJoYWZ0IGFrdGl2aWVyZW4gdW5kIERhdGVuJnV1bWw7YmVyJnNoeTt0cmFndW5nIHp1c3RpbW1lbjoiLGNvb2tpZV9wYXRoOiIvIixjb29raWVfZG9tYWluOmRvY3VtZW50LmxvY2F0aW9uLmhvc3QsY29va2llX2V4cGlyZXM6IjM2NSIsY3NzX3BhdGg6InNvY2lhbHNoYXJlcHJpdmFjeS9zb2NpYWxzaGFyZXByaXZhY3kuY3NzIix1cmk6ZX07dmFyIGg9Zi5leHRlbmQodHJ1ZSxtLGkpO3ZhciBsPShoLnNlcnZpY2VzLmZhY2Vib29rLnN0YXR1cz09PSJvbiIpO3ZhciBqPShoLnNlcnZpY2VzLnR3aXR0ZXIuc3RhdHVzPT09Im9uIik7dmFyIGs9KGguc2VydmljZXMuZ3BsdXMuc3RhdHVzPT09Im9uIik7aWYoIWwmJiFqJiYhayl7cmV0dXJufWlmKGguY3NzX3BhdGgubGVuZ3RoPjApe2lmKGRvY3VtZW50LmNyZWF0ZVN0eWxlU2hlZXQpe2RvY3VtZW50LmNyZWF0ZVN0eWxlU2hlZXQoaC5jc3NfcGF0aCl9ZWxzZXtmKCJoZWFkIikuYXBwZW5kKCc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInK2guY3NzX3BhdGgrJyIgLz4nKX19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykucHJlcGVuZCgnPHVsIGNsYXNzPSJzb2NpYWxfc2hhcmVfcHJpdmFjeV9hcmVhIj48L3VsPicpO3ZhciBxPWYoIi5zb2NpYWxfc2hhcmVfcHJpdmFjeV9hcmVhIix0aGlzKTt2YXIgdT1oLnVyaTtpZih0eXBlb2YgdT09PSJmdW5jdGlvbiIpe3U9dShxKX1pZihsKXt2YXIgSD1lbmNvZGVVUklDb21wb25lbnQodStoLnNlcnZpY2VzLmZhY2Vib29rLnJlZmVycmVyX3RyYWNrKTt2YXIgbj0nPGlmcmFtZSBzcmM9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvbGlrZS5waHA/bG9jYWxlPScraC5zZXJ2aWNlcy5mYWNlYm9vay5sYW5ndWFnZSsiJmFtcDtocmVmPSIrSCsiJmFtcDtzZW5kPWZhbHNlJmFtcDtsYXlvdXQ9YnV0dG9uX2NvdW50JmFtcDt3aWR0aD0xMjAmYW1wO3Nob3dfZmFjZXM9ZmFsc2UmYW1wO2FjdGlvbj0iK2guc2VydmljZXMuZmFjZWJvb2suYWN0aW9uKycmYW1wO2NvbG9yc2NoZW1lPWxpZ2h0JmFtcDtmb250JmFtcDtoZWlnaHQ9MjEiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOm5vbmU7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTQ1cHg7IGhlaWdodDoyMXB4OyIgYWxsb3dUcmFuc3BhcmVuY3k9InRydWUiPjwvaWZyYW1lPic7dmFyIE09JzxpbWcgc3JjPSInK2guc2VydmljZXMuZmFjZWJvb2suZHVtbXlfaW1nKyciIGFsdD0iRmFjZWJvb2sgJnF1b3Q7TGlrZSZxdW90Oy1EdW1teSIgY2xhc3M9ImZiX2xpa2VfcHJpdmFjeV9kdW1teSIgLz4nO3EuYXBwZW5kKCc8bGkgY2xhc3M9ImZhY2Vib29rIGhlbHBfaW5mbyI+PHNwYW4gY2xhc3M9ImluZm8iPicraC5zZXJ2aWNlcy5mYWNlYm9vay50eHRfaW5mbysnPC9zcGFuPjxzcGFuIGNsYXNzPSJzd2l0Y2ggb2ZmIj4nK2guc2VydmljZXMuZmFjZWJvb2sudHh0X2ZiX29mZisnPC9zcGFuPjxkaXYgY2xhc3M9ImZiX2xpa2UgZHVtbXlfYnRuIj4nK00rIjwvZGl2PjwvbGk+Iik7dmFyIHA9ZigibGkuZmFjZWJvb2siLHEpO2YoImxpLmZhY2Vib29rIGRpdi5mYl9saWtlIGltZy5mYl9saWtlX3ByaXZhY3lfZHVtbXksbGkuZmFjZWJvb2sgc3Bhbi5zd2l0Y2giLHEpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZihwLmZpbmQoInNwYW4uc3dpdGNoIikuaGFzQ2xhc3MoIm9mZiIpKXtwLmFkZENsYXNzKCJpbmZvX29mZiIpO3AuZmluZCgic3Bhbi5zd2l0Y2giKS5hZGRDbGFzcygib24iKS5yZW1vdmVDbGFzcygib2ZmIikuaHRtbChoLnNlcnZpY2VzLmZhY2Vib29rLnR4dF9mYl9vbik7cC5maW5kKCJpbWcuZmJfbGlrZV9wcml2YWN5X2R1bW15IikucmVwbGFjZVdpdGgobil9ZWxzZXtwLnJlbW92ZUNsYXNzKCJpbmZvX29mZiIpO3AuZmluZCgic3Bhbi5zd2l0Y2giKS5hZGRDbGFzcygib2ZmIikucmVtb3ZlQ2xhc3MoIm9uIikuaHRtbChoLnNlcnZpY2VzLmZhY2Vib29rLnR4dF9mYl9vZmYpO3AuZmluZCgiLmZiX2xpa2UiKS5odG1sKE0pfX0pfWlmKGope3ZhciBBPWguc2VydmljZXMudHdpdHRlci50d2VldF90ZXh0O2lmKHR5cGVvZiBBPT09ImZ1bmN0aW9uIil7QT1BKCl9QT1nKEEsIjEyMCIpO3ZhciBHPWVuY29kZVVSSUNvbXBvbmVudCh1K2guc2VydmljZXMudHdpdHRlci5yZWZlcnJlcl90cmFjayk7dmFyIEI9ZW5jb2RlVVJJQ29tcG9uZW50KHUpO3ZhciB5PSc8aWZyYW1lIGFsbG93dHJhbnNwYXJlbmN5PSJ0cnVlIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyIgc3JjPSJodHRwOi8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy90d2VldF9idXR0b24uaHRtbD91cmw9JytHKyImYW1wO2NvdW50dXJsPSIrQisiJmFtcDt0ZXh0PSIrQSsiJmFtcDtjb3VudD1ob3Jpem9udGFsJmFtcDtsYW5nPSIraC5zZXJ2aWNlcy50d2l0dGVyLmxhbmd1YWdlKyciIHN0eWxlPSJ3aWR0aDoxMzBweDsgaGVpZ2h0OjI1cHg7Ij48L2lmcmFtZT4nO3ZhciBDPSc8aW1nIHNyYz0iJytoLnNlcnZpY2VzLnR3aXR0ZXIuZHVtbXlfaW1nKyciIGFsdD0iJnF1b3Q7VHdlZXQgdGhpcyZxdW90Oy1EdW1teSIgY2xhc3M9InR3ZWV0X3RoaXNfZHVtbXkiIC8+JztxLmFwcGVuZCgnPGxpIGNsYXNzPSJ0d2l0dGVyIGhlbHBfaW5mbyI+PHNwYW4gY2xhc3M9ImluZm8iPicraC5zZXJ2aWNlcy50d2l0dGVyLnR4dF9pbmZvKyc8L3NwYW4+PHNwYW4gY2xhc3M9InN3aXRjaCBvZmYiPicraC5zZXJ2aWNlcy50d2l0dGVyLnR4dF90d2l0dGVyX29mZisnPC9zcGFuPjxkaXYgY2xhc3M9InR3ZWV0IGR1bW15X2J0biI+JytDKyI8L2Rpdj48L2xpPiIpO3ZhciB4PWYoImxpLnR3aXR0ZXIiLHEpO2YoImxpLnR3aXR0ZXIgZGl2LnR3ZWV0IGltZyxsaS50d2l0dGVyIHNwYW4uc3dpdGNoIixxKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoeC5maW5kKCJzcGFuLnN3aXRjaCIpLmhhc0NsYXNzKCJvZmYiKSl7eC5hZGRDbGFzcygiaW5mb19vZmYiKTt4LmZpbmQoInNwYW4uc3dpdGNoIikuYWRkQ2xhc3MoIm9uIikucmVtb3ZlQ2xhc3MoIm9mZiIpLmh0bWwoaC5zZXJ2aWNlcy50d2l0dGVyLnR4dF90d2l0dGVyX29uKTt4LmZpbmQoImltZy50d2VldF90aGlzX2R1bW15IikucmVwbGFjZVdpdGgoeSl9ZWxzZXt4LnJlbW92ZUNsYXNzKCJpbmZvX29mZiIpO3guZmluZCgic3Bhbi5zd2l0Y2giKS5hZGRDbGFzcygib2ZmIikucmVtb3ZlQ2xhc3MoIm9uIikuaHRtbChoLnNlcnZpY2VzLnR3aXR0ZXIudHh0X3R3aXR0ZXJfb2ZmKTt4LmZpbmQoIi50d2VldCIpLmh0bWwoQyl9fSl9aWYoayl7dmFyIHQ9dStoLnNlcnZpY2VzLmdwbHVzLnJlZmVycmVyX3RyYWNrO3ZhciBzPSc8ZGl2IGNsYXNzPSJnLXBsdXNvbmUiIGRhdGEtc2l6ZT0ibWVkaXVtIiBkYXRhLWhyZWY9IicrdCsnIj48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+d2luZG93Ll9fX2djZmcgPSB7bGFuZzogIicraC5zZXJ2aWNlcy5ncGx1cy5sYW5ndWFnZSsnIn07IChmdW5jdGlvbigpIHsgdmFyIHBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7IHBvLnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsgcG8uYXN5bmMgPSB0cnVlOyBwby5zcmMgPSAiaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvcGx1c29uZS5qcyI7IHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHBvLCBzKTsgfSkoKTsgPFwvc2NyaXB0Pic7dmFyIEw9JzxpbWcgc3JjPSInK2guc2VydmljZXMuZ3BsdXMuZHVtbXlfaW1nKyciIGFsdD0iJnF1b3Q7R29vZ2xlKzEmcXVvdDstRHVtbXkiIGNsYXNzPSJncGx1c19vbmVfZHVtbXkiIC8+JztxLmFwcGVuZCgnPGxpIGNsYXNzPSJncGx1cyBoZWxwX2luZm8iPjxzcGFuIGNsYXNzPSJpbmZvIj4nK2guc2VydmljZXMuZ3BsdXMudHh0X2luZm8rJzwvc3Bhbj48c3BhbiBjbGFzcz0ic3dpdGNoIG9mZiI+JytoLnNlcnZpY2VzLmdwbHVzLnR4dF9ncGx1c19vZmYrJzwvc3Bhbj48ZGl2IGNsYXNzPSJncGx1c29uZSBkdW1teV9idG4iPicrTCsiPC9kaXY+PC9saT4iKTt2YXIgRD1mKCJsaS5ncGx1cyIscSk7ZigibGkuZ3BsdXMgZGl2LmdwbHVzb25lIGltZyxsaS5ncGx1cyBzcGFuLnN3aXRjaCIscSkub24oImNsaWNrIixmdW5jdGlvbigpe2lmKEQuZmluZCgic3Bhbi5zd2l0Y2giKS5oYXNDbGFzcygib2ZmIikpe0QuYWRkQ2xhc3MoImluZm9fb2ZmIik7RC5maW5kKCJzcGFuLnN3aXRjaCIpLmFkZENsYXNzKCJvbiIpLnJlbW92ZUNsYXNzKCJvZmYiKS5odG1sKGguc2VydmljZXMuZ3BsdXMudHh0X2dwbHVzX29uKTtELmZpbmQoImltZy5ncGx1c19vbmVfZHVtbXkiKS5yZXBsYWNlV2l0aChzKX1lbHNle0QucmVtb3ZlQ2xhc3MoImluZm9fb2ZmIik7RC5maW5kKCJzcGFuLnN3aXRjaCIpLmFkZENsYXNzKCJvZmYiKS5yZW1vdmVDbGFzcygib24iKS5odG1sKGguc2VydmljZXMuZ3BsdXMudHh0X2dwbHVzX29mZik7RC5maW5kKCIuZ3BsdXNvbmUiKS5odG1sKEwpfX0pfXEuYXBwZW5kKCc8bGkgY2xhc3M9InNldHRpbmdzX2luZm8iPjxkaXYgY2xhc3M9InNldHRpbmdzX2luZm9fbWVudSBvZmYgcGVybWFfb3B0aW9uX29mZiI+PGEgaHJlZj0iJytoLmluZm9fbGluaysnIj48c3BhbiBjbGFzcz0iaGVscF9pbmZvIGljb24iPjxzcGFuIGNsYXNzPSJpbmZvIj4nK2gudHh0X2hlbHArIjwvc3Bhbj48L3NwYW4+PC9hPjwvZGl2PjwvbGk+Iik7ZigiLmhlbHBfaW5mbzpub3QoLmluZm9fb2ZmKSIscSkub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7dmFyIFA9Zih0aGlzKTt2YXIgUT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2YoUCkuYWRkQ2xhc3MoImRpc3BsYXkiKX0sNTAwKTtmKHRoaXMpLmRhdGEoInRpbWVvdXRfaWQiLFEpfSk7ZigiLmhlbHBfaW5mbyIscSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7dmFyIFA9Zih0aGlzKS5kYXRhKCJ0aW1lb3V0X2lkIik7d2luZG93LmNsZWFyVGltZW91dChQKTtpZihmKHRoaXMpLmhhc0NsYXNzKCJkaXNwbGF5Iikpe2YodGhpcykucmVtb3ZlQ2xhc3MoImRpc3BsYXkiKX19KTt2YXIgRT0oaC5zZXJ2aWNlcy5mYWNlYm9vay5wZXJtYV9vcHRpb249PT0ib24iKTt2YXIgST0oaC5zZXJ2aWNlcy50d2l0dGVyLnBlcm1hX29wdGlvbj09PSJvbiIpO3ZhciBPPShoLnNlcnZpY2VzLmdwbHVzLnBlcm1hX29wdGlvbj09PSJvbiIpO2lmKCgobCYmRSl8fChqJiZJKXx8KGsmJk8pKSYmd2luZG93LkpTT04mJndpbmRvdy5KU09OLnBhcnNlKXt2YXIgSz1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKTt2YXIgcj0ieyI7dmFyIEY9MDtmb3IoO0Y8Sy5sZW5ndGg7Ris9MSl7dmFyIEo9S1tGXS5zcGxpdCgiPSIpO3IrPSciJytmLnRyaW0oSlswXSkrJyI6IicrZi50cmltKEpbMV0pKyciJztpZihGPEsubGVuZ3RoLTEpe3IrPSIsIn19cis9In0iO3I9SlNPTi5wYXJzZShyKTt2YXIgdj1mKCJsaS5zZXR0aW5nc19pbmZvIixxKTt2LmZpbmQoIi5zZXR0aW5nc19pbmZvX21lbnUiKS5yZW1vdmVDbGFzcygicGVybWFfb3B0aW9uX29mZiIpO3YuZmluZCgiLnNldHRpbmdzX2luZm9fbWVudSIpLmFwcGVuZCgnPHNwYW4gY2xhc3M9InNldHRpbmdzIj5FaW5zdGVsbHVuZ2VuPC9zcGFuPjxmb3JtPjxmaWVsZHNldD48bGVnZW5kPicraC5zZXR0aW5nc19wZXJtYSsiPC9sZWdlbmQ+PC9maWVsZHNldD48L2Zvcm0+Iik7dmFyIHc9JyBjaGVja2VkPSJjaGVja2VkIic7aWYobCYmRSl7dmFyIG89ci5zb2NpYWxTaGFyZVByaXZhY3lfZmFjZWJvb2s9PT0icGVybWFfb24iP3c6IiI7di5maW5kKCJmb3JtIGZpZWxkc2V0IikuYXBwZW5kKCc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InBlcm1hX3N0YXR1c19mYWNlYm9vayIgaWQ9InBlcm1hX3N0YXR1c19mYWNlYm9vayInK28rJyAvPjxsYWJlbCBmb3I9InBlcm1hX3N0YXR1c19mYWNlYm9vayI+JytoLnNlcnZpY2VzLmZhY2Vib29rLmRpc3BsYXlfbmFtZSsiPC9sYWJlbD4iKX1pZihqJiZJKXt2YXIgTj1yLnNvY2lhbFNoYXJlUHJpdmFjeV90d2l0dGVyPT09InBlcm1hX29uIj93OiIiO3YuZmluZCgiZm9ybSBmaWVsZHNldCIpLmFwcGVuZCgnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJwZXJtYV9zdGF0dXNfdHdpdHRlciIgaWQ9InBlcm1hX3N0YXR1c190d2l0dGVyIicrTisnIC8+PGxhYmVsIGZvcj0icGVybWFfc3RhdHVzX3R3aXR0ZXIiPicraC5zZXJ2aWNlcy50d2l0dGVyLmRpc3BsYXlfbmFtZSsiPC9sYWJlbD4iKX1pZihrJiZPKXt2YXIgej1yLnNvY2lhbFNoYXJlUHJpdmFjeV9ncGx1cz09PSJwZXJtYV9vbiI/dzoiIjt2LmZpbmQoImZvcm0gZmllbGRzZXQiKS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icGVybWFfc3RhdHVzX2dwbHVzIiBpZD0icGVybWFfc3RhdHVzX2dwbHVzIicreisnIC8+PGxhYmVsIGZvcj0icGVybWFfc3RhdHVzX2dwbHVzIj4nK2guc2VydmljZXMuZ3BsdXMuZGlzcGxheV9uYW1lKyI8L2xhYmVsPiIpfXYuZmluZCgic3Bhbi5zZXR0aW5ncyIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpO2Yodi5maW5kKCJzcGFuLnNldHRpbmdzIikscSkub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7dmFyIFA9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmZpbmQoIi5zZXR0aW5nc19pbmZvX21lbnUiKS5yZW1vdmVDbGFzcygib2ZmIikuYWRkQ2xhc3MoIm9uIil9LDUwMCk7Zih0aGlzKS5kYXRhKCJ0aW1lb3V0X2lkIixQKX0pO2YodixxKS5vbigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXt2YXIgUD1mKHRoaXMpLmRhdGEoInRpbWVvdXRfaWQiKTt3aW5kb3cuY2xlYXJUaW1lb3V0KFApO3YuZmluZCgiLnNldHRpbmdzX2luZm9fbWVudSIpLnJlbW92ZUNsYXNzKCJvbiIpLmFkZENsYXNzKCJvZmYiKX0pO2Yodi5maW5kKCJmaWVsZHNldCBpbnB1dCIpKS5vbigiY2xpY2siLGZ1bmN0aW9uKFIpe3ZhciBRPVIudGFyZ2V0LmlkO3ZhciBQPVEuc3Vic3RyKFEubGFzdEluZGV4T2YoIl8iKSsxLFEubGVuZ3RoKTt2YXIgUz0ic29jaWFsU2hhcmVQcml2YWN5XyIrUDtpZihmKCIjIitSLnRhcmdldC5pZCsiOmNoZWNrZWQiKS5sZW5ndGgpe2MoUywicGVybWFfb24iLGguY29va2llX2V4cGlyZXMsaC5jb29raWVfcGF0aCxoLmNvb2tpZV9kb21haW4pO2YoImZvcm0gZmllbGRzZXQgbGFiZWxbZm9yPSIrUSsiXSIscSkuYWRkQ2xhc3MoImNoZWNrZWQiKX1lbHNle2QoUywicGVybWFfb24iLGguY29va2llX3BhdGgsaC5jb29raWVfZG9tYWluKTtmKCJmb3JtIGZpZWxkc2V0IGxhYmVsW2Zvcj0iK1ErIl0iLHEpLnJlbW92ZUNsYXNzKCJjaGVja2VkIil9fSk7aWYobCYmRSYmci5zb2NpYWxTaGFyZVByaXZhY3lfZmFjZWJvb2s9PT0icGVybWFfb24iKXtmKCJsaS5mYWNlYm9vayBzcGFuLnN3aXRjaCIscSkuY2xpY2soKX1pZihqJiZJJiZyLnNvY2lhbFNoYXJlUHJpdmFjeV90d2l0dGVyPT09InBlcm1hX29uIil7ZigibGkudHdpdHRlciBzcGFuLnN3aXRjaCIscSkuY2xpY2soKX1pZihrJiZPJiZyLnNvY2lhbFNoYXJlUHJpdmFjeV9ncGx1cz09PSJwZXJtYV9vbiIpe2YoImxpLmdwbHVzIHNwYW4uc3dpdGNoIixxKS5jbGljaygpfX19KX19KGpRdWVyeSkpOw==]]></data>
	</file>
	<file>
	  <filename>/templates/js/ToolBoxBackendJS.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gQUNUSVZBVEUgQSBUQUINCmZ1bmN0aW9uIHRiQWN0aXZhdGV0YWIoaW5kZXgpIHsNCgl2YXIgY29udGFpbmVyID0galF1ZXJ5KCcjdGJuYXZ0X3RhYnMnKTsNCglpZihjb250YWluZXIubGVuZ3RoID09PSAwKQ0KCXsNCgkJY29udGFpbmVyID0galF1ZXJ5KCcjdGJwYWdlX3RhYnMnKTsNCgl9DQoJY29udGFpbmVyLmZpbmQoJ2RpdjplcSgnICsgaW5kZXggKyAnKScpLm1vdXNlZG93bigpOw0KfQ0KDQpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHsNCg0KCS8vIElOSVQgVG9vbEJveCBOQVYgVEFCUw0KCXZhciB0YWJzID0gJCgnI3RibmF2dF90YWJzLCAjdGJwYWdlX3RhYnMnKS5maW5kKCdkaXYnKTsNCgl0YWJzLm1vdXNlZG93bihmdW5jdGlvbigpew0KCQl0YWJzLmVhY2goZnVuY3Rpb24oKXsNCgkJCSQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOw0KCQkJJCgnIycgKyAkKHRoaXMpLmF0dHIoJ2lkJykgKyAnX2MnKS5oaWRlKCk7DQoJCX0pOw0KCQkkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTsNCgkJJCgnIycgKyAkKHRoaXMpLmF0dHIoJ2lkJykgKyAnX2MnKS5zaG93KCk7DQoJCXJldHVybiB0cnVlOw0KCX0pOw0KCWlmKHRhYnMuZmlsdGVyKCcuYWN0aXZlJykubW91c2Vkb3duKCkubGVuZ3RoID09PSAwKXsNCgkJdGJBY3RpdmF0ZXRhYigwKTsNCgl9DQoJDQp9KTs=]]></data>
	</file>
	<file>
	  <filename>/templates/logUpdater.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskbW9kLT5MYW5nKCd0YWlsX3RpdGxlJyl9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fQp7JHRhYnRvfQp7JGxvZ0ZpbGV9CnskaGFzaH0KeyRrZXl9CnskbGluZXN9CjxmaWVsZHNldD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0YWlsX3Byb21wdF9sb2cnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbG9nfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KeyRmb3JtZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/stats_email.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CntpZiAkb2xkdXJsX3VzZX0KPGJyIC8+PGJyIC8+CjxoMj5VUkxzPC9oMj4KPHRhYmxlIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMyIgYm9yZGVyPSIxIiBiZ2NvbG9yPSIjYWFhYWFhIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCBiZ2NvbG9yPSIjY2NjY2NjIj57JHVybH08L3RoPgoJCQk8dGggYmdjb2xvcj0iI2NjY2NjYyI+eyRwYWdlfTwvdGg+CgkJCTx0aCBiZ2NvbG9yPSIjY2NjY2NjIj57JHZpc2l0c308L3RoPgoJCQk8dGggYmdjb2xvcj0iI2NjY2NjYyI+eyRzZWFyY2hlbmdpbmV9PC90aD4KCQkJPHRoIGJnY29sb3I9IiNjY2NjY2MiPnska2V5d29yZH08L3RoPgoJCQk8dGggYmdjb2xvcj0iI2NjY2NjYyI+eyRyZWZlcmVyfTwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgl7Zm9yZWFjaCBmcm9tPSR1cmxzIGl0ZW09ZW50cnl9CgkJe2N5Y2xlIHZhbHVlcz0iZWVlZWVlLGRkZGRkZCIgYXNzaWduPSdyb3djbGFzcyd9CgkJPHRyPgoJCQk8dGQgYmdjb2xvcj0iI3skcm93Y2xhc3N9Ij57JGVudHJ5LnVybH08L3RkPgoJCQk8dGQgYmdjb2xvcj0iI3skcm93Y2xhc3N9Ij57JGVudHJ5LnBhZ2V9PC90ZD4KCQkJPHRkIGJnY29sb3I9IiN7JHJvd2NsYXNzfSI+eyRlbnRyeS52aXNpdHN9PC90ZD4KCQkJPHRkIGJnY29sb3I9IiN7JHJvd2NsYXNzfSI+eyRlbnRyeS5zZWFyY2hlbmdpbmV9PC90ZD4KCQkJPHRkIGJnY29sb3I9IiN7JHJvd2NsYXNzfSI+eyRlbnRyeS5rZXl3b3JkfTwvdGQ+CgkJCTx0ZCBiZ2NvbG9yPSIjeyRyb3djbGFzc30iPnskZW50cnkucmVmZXJlcn08L3RkPgoJCTwvdHI+Cgl7L2ZvcmVhY2h9CjwvdGFibGU+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/ToolBox-tpl-autolightbox-fancybox.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHRvb2xib3h0cGw+Cgk8bmFtZT5hbGJfZmFuY3lib3g8L25hbWU+Cgk8dmVyc2lvbj4yLjEuMzwvdmVyc2lvbj4KCTx0b29sYm94dmVyc2lvbj4xLjMuMzwvdG9vbGJveHZlcnNpb24+Cgk8YWJvdXQ+VkdocGN5QlViMjlzUW05NElFRjFkRzlNYVdkb2RFSnZlQ0IwWlcxd2JHRjBaU0IxYzJWeklIUm9aU0JtWVc1amVVSnZlQ0J6ZVhOMFpXMGdkbVZ5YzJsdmJpQXlMakV1TXp4aWNpQXZQaUE4WW5JZ0x6NGdSRzlqZFcxbGJuUmhkR2x2YmlCbWIzSWdaWGgwY21FZ2IzQjBhVzl1Y3lCallXNGdZbVVnWm05MWJtUWdZWFFnUEdFZ2FISmxaajBpYUhSMGNEb3ZMM2QzZHk1bVlXNWplV0p2ZUM1dVpYUXZJaUIwWVhKblpYUTlJbDlpYkdGdWF5SStkM2QzTG1aaGJtTjVZbTk0TG01bGREd3ZZVDQ4WW5JZ0x6NGdQR0p5SUM4K0lFWnBiR1Z6SUhSb1lYUWdZMjl0WlNCM2FYUm9JRVpoYm1ONVltOTRJR0Z5WlNCemRHOXlaV1FnYVc0Z2JXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabUZ1WTNsaWIzZ3ZQR0p5SUM4K0lEeGljaUF2UGlCbVlXNWplVUp2ZUNCM1lYTWdZblZwYkhRZ2RYTnBibWNnZEdobElEeGhJR2h5WldZOUltaDBkSEE2THk5cWNYVmxjbmt1WTI5dElpQjBZWEpuWlhROUlsOWliR0Z1YXlJK2FsRjFaWEo1UEM5aFBpQnNhV0p5WVhKNUxpQm1ZVzVqZVVKdmVDQnNhV05sYm5ObFpDQjFibVJsY2lBOFlTQm9jbVZtUFNKb2RIUndPaTh2WTNKbFlYUnBkbVZqYjIxdGIyNXpMbTl5Wnk5c2FXTmxibk5sY3k5aWVTMXVZeTh6TGpBdklpQjBZWEpuWlhROUlsOWliR0Z1YXlJK1EzSmxZWFJwZG1VZ1EyOXRiVzl1Y3lCQmRIUnlhV0oxZEdsdmJpMU9iMjVEYjIxdFpYSmphV0ZzSURNdU1Ed3ZZVDRnYkdsalpXNXpaUzRnUEdKeUlDOCtJRVp2Y2lCamIyMWxjbU5wWVd3Z2RYTmxJSFpwYzJsMElIUm9aWEpsSUR4aElHaHlaV1k5SW1oMGRIQTZMeTl6YVhSbGN5NW1ZWE4wYzNCeWFXNW5MbU52YlM5bVlXNWplV0Z3Y0hNdmNISnZaSFZqZEM5emRHOXlaU0lnZEdGeVoyVjBQU0pmYzJWc1ppSSthRzl0WlhCaFoyVXVQQzloUGc9PTwvYWJvdXQ+Cgk8c2VjdGlvbj5hdXRvbGlnaHRib3g8L3NlY3Rpb24+Cgk8dHBsc2VjdGlvbj48L3RwbHNlY3Rpb24+Cgk8anF1ZXJ5PjE8L2pxdWVyeT4KCTxqcXVlcnlfb3duPjA8L2pxdWVyeV9vd24+Cgk8b3B0aW9ucz5ZVG94T250ek9qRTRPaUoxYzJWZmJXOWlhV3hsZEdWdGNHeGhkR1VpTzNNNk1Ub2lNU0k3ZlE9PTwvb3B0aW9ucz4KCTx0cGxjb2RlPjwvdHBsY29kZT4KCTx0cGxjc3M+THlvZ1ptRnVZM2xDYjNnZ2RqSXVNUzR6SUdaaGJtTjVZWEJ3Y3k1amIyMGdmQ0JtWVc1amVXRndjSE11WTI5dEwyWmhibU41WW05NEx5TnNhV05sYm5ObElDb3ZEUW91Wm1GdVkzbGliM2d0ZDNKaGNDd05DaTVtWVc1amVXSnZlQzF6YTJsdUxBMEtMbVpoYm1ONVltOTRMVzkxZEdWeUxBMEtMbVpoYm1ONVltOTRMV2x1Ym1WeUxBMEtMbVpoYm1ONVltOTRMV2x0WVdkbExBMEtMbVpoYm1ONVltOTRMWGR5WVhBZ2FXWnlZVzFsTEEwS0xtWmhibU41WW05NExYZHlZWEFnYjJKcVpXTjBMQTBLTG1aaGJtTjVZbTk0TFc1aGRpd05DaTVtWVc1amVXSnZlQzF1WVhZZ2MzQmhiaXdOQ2k1bVlXNWplV0p2ZUMxMGJYQU5DbnNOQ2dsd1lXUmthVzVuT2lBd093MEtDVzFoY21kcGJqb2dNRHNOQ2dsaWIzSmtaWEk2SURBN0RRb0piM1YwYkdsdVpUb2dibTl1WlRzTkNnbDJaWEowYVdOaGJDMWhiR2xuYmpvZ2RHOXdPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RkM0poY0NCN0RRb0pjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLQ1hSdmNEb2dNRHNOQ2dsc1pXWjBPaUF3T3cwS0NYb3RhVzVrWlhnNklEZ3dNakE3RFFwOURRb05DaTVtWVc1amVXSnZlQzF6YTJsdUlIc05DZ2x3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3RFFvSlltRmphMmR5YjNWdVpEb2dJMlk1WmpsbU9Uc05DZ2xqYjJ4dmNqb2dJelEwTkRzTkNnbDBaWGgwTFhOb1lXUnZkem9nYm05dVpUc05DZ2t0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEUndlRHNOQ2drZ0lDQXRiVzk2TFdKdmNtUmxjaTF5WVdScGRYTTZJRFJ3ZURzTkNna2dJQ0FnSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURSd2VEc05DbjBOQ2cwS0xtWmhibU41WW05NExXOXdaVzVsWkNCN0RRb0plaTFwYm1SbGVEb2dPREF6TURzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFc5d1pXNWxaQ0F1Wm1GdVkzbGliM2d0YzJ0cGJpQjdEUW9KTFhkbFltdHBkQzFpYjNndGMyaGhaRzkzT2lBd0lERXdjSGdnTWpWd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU5TazdEUW9KSUNBZ0xXMXZlaTFpYjNndGMyaGhaRzkzT2lBd0lERXdjSGdnTWpWd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU5TazdEUW9KSUNBZ0lDQWdJQ0JpYjNndGMyaGhaRzkzT2lBd0lERXdjSGdnTWpWd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU5TazdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMXZkWFJsY2l3Z0xtWmhibU41WW05NExXbHVibVZ5SUhzTkNnbHdiM05wZEdsdmJqb2djbVZzWVhScGRtVTdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMXBibTVsY2lCN0RRb0piM1psY21ac2IzYzZJR2hwWkdSbGJqc05DbjBOQ2cwS0xtWmhibU41WW05NExYUjVjR1V0YVdaeVlXMWxJQzVtWVc1amVXSnZlQzFwYm01bGNpQjdEUW9KTFhkbFltdHBkQzF2ZG1WeVpteHZkeTF6WTNKdmJHeHBibWM2SUhSdmRXTm9PdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RaWEp5YjNJZ2V3MEtDV052Ykc5eU9pQWpORFEwT3cwS0NXWnZiblE2SURFMGNIZ3ZNakJ3ZUNBaVNHVnNkbVYwYVdOaElFNWxkV1VpTEVobGJIWmxkR2xqWVN4QmNtbGhiQ3h6WVc1ekxYTmxjbWxtT3cwS0NXMWhjbWRwYmpvZ01Ec05DZ2x3WVdSa2FXNW5PaUF4TlhCNE93MEtDWGRvYVhSbExYTndZV05sT2lCdWIzZHlZWEE3RFFwOURRb05DaTVtWVc1amVXSnZlQzFwYldGblpTd2dMbVpoYm1ONVltOTRMV2xtY21GdFpTQjdEUW9KWkdsemNHeGhlVG9nWW14dlkyczdEUW9KZDJsa2RHZzZJREV3TUNVN0RRb0phR1ZwWjJoME9pQXhNREFsT3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0YVcxaFoyVWdldzBLQ1cxaGVDMTNhV1IwYURvZ01UQXdKVHNOQ2dsdFlYZ3RhR1ZwWjJoME9pQXhNREFsT3cwS2ZRMEtEUW9qWm1GdVkzbGliM2d0Ykc5aFpHbHVaeXdnTG1aaGJtTjVZbTk0TFdOc2IzTmxMQ0F1Wm1GdVkzbGliM2d0Y0hKbGRpQnpjR0Z1TENBdVptRnVZM2xpYjNndGJtVjRkQ0J6Y0dGdUlIc05DZ2xpWVdOclozSnZkVzVrTFdsdFlXZGxPaUIxY213b0oxdGJjbTl2ZEY5MWNteGRYUzl0YjJSMWJHVnpMMVJ2YjJ4Q2IzZ3ZkR1Z0Y0d4aGRHVnpMMkZzWWw5bVlXNWplV0p2ZUM5bVlXNWplV0p2ZUY5emNISnBkR1V1Y0c1bkp5azdEUXA5RFFvTkNpTm1ZVzVqZVdKdmVDMXNiMkZrYVc1bklIc05DZ2x3YjNOcGRHbHZiam9nWm1sNFpXUTdEUW9KZEc5d09pQTFNQ1U3RFFvSmJHVm1kRG9nTlRBbE93MEtDVzFoY21kcGJpMTBiM0E2SUMweU1uQjRPdzBLQ1cxaGNtZHBiaTFzWldaME9pQXRNakp3ZURzTkNnbGlZV05yWjNKdmRXNWtMWEJ2YzJsMGFXOXVPaUF3SUMweE1EaHdlRHNOQ2dsdmNHRmphWFI1T2lBd0xqZzdEUW9KWTNWeWMyOXlPaUJ3YjJsdWRHVnlPdzBLQ1hvdGFXNWtaWGc2SURnd05qQTdEUXA5RFFvTkNpTm1ZVzVqZVdKdmVDMXNiMkZrYVc1bklHUnBkaUI3RFFvSmQybGtkR2c2SURRMGNIZzdEUW9KYUdWcFoyaDBPaUEwTkhCNE93MEtDV0poWTJ0bmNtOTFibVE2SUhWeWJDZ25XMXR5YjI5MFgzVnliRjFkTDIxdlpIVnNaWE12Vkc5dmJFSnZlQzkwWlcxd2JHRjBaWE12WVd4aVgyWmhibU41WW05NEwyWmhibU41WW05NFgyeHZZV1JwYm1jdVoybG1KeWtnWTJWdWRHVnlJR05sYm5SbGNpQnVieTF5WlhCbFlYUTdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMWpiRzl6WlNCN0RRb0pjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLQ1hSdmNEb2dMVEU0Y0hnN0RRb0pjbWxuYUhRNklDMHhPSEI0T3cwS0NYZHBaSFJvT2lBek5uQjRPdzBLQ1dobGFXZG9kRG9nTXpad2VEc05DZ2xqZFhKemIzSTZJSEJ2YVc1MFpYSTdEUW9KZWkxcGJtUmxlRG9nT0RBME1Ec05DbjBOQ2cwS0xtWmhibU41WW05NExXNWhkaUI3RFFvSmNHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtDWFJ2Y0RvZ01Ec05DZ2wzYVdSMGFEb2dOREFsT3cwS0NXaGxhV2RvZERvZ01UQXdKVHNOQ2dsamRYSnpiM0k2SUhCdmFXNTBaWEk3RFFvSmRHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPdzBLQ1dKaFkydG5jbTkxYm1RNklIUnlZVzV6Y0dGeVpXNTBJSFZ5YkNnbllteGhibXN1WjJsbUp5azdJQzhxSUdobGJIQnpJRWxGSUNvdkRRb0pMWGRsWW10cGRDMTBZWEF0YUdsbmFHeHBaMmgwTFdOdmJHOXlPaUJ5WjJKaEtEQXNNQ3d3TERBcE93MEtDWG90YVc1a1pYZzZJRGd3TkRBN0RRcDlEUW9OQ2k1bVlXNWplV0p2ZUMxd2NtVjJJSHNOQ2dsc1pXWjBPaUF3T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0Ym1WNGRDQjdEUW9KY21sbmFIUTZJREE3RFFwOURRb05DaTVtWVc1amVXSnZlQzF1WVhZZ2MzQmhiaUI3RFFvSmNHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtDWFJ2Y0RvZ05UQWxPdzBLQ1hkcFpIUm9PaUF6Tm5CNE93MEtDV2hsYVdkb2REb2dNelJ3ZURzTkNnbHRZWEpuYVc0dGRHOXdPaUF0TVRod2VEc05DZ2xqZFhKemIzSTZJSEJ2YVc1MFpYSTdEUW9KZWkxcGJtUmxlRG9nT0RBME1Ec05DZ2wyYVhOcFltbHNhWFI1T2lCb2FXUmtaVzQ3RFFwOURRb05DaTVtWVc1amVXSnZlQzF3Y21WMklITndZVzRnZXcwS0NXeGxablE2SURFd2NIZzdEUW9KWW1GamEyZHliM1Z1WkMxd2IzTnBkR2x2YmpvZ01DQXRNelp3ZURzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFc1bGVIUWdjM0JoYmlCN0RRb0pjbWxuYUhRNklERXdjSGc3RFFvSlltRmphMmR5YjNWdVpDMXdiM05wZEdsdmJqb2dNQ0F0TnpKd2VEc05DbjBOQ2cwS0xtWmhibU41WW05NExXNWhkanBvYjNabGNpQnpjR0Z1SUhzTkNnbDJhWE5wWW1sc2FYUjVPaUIyYVhOcFlteGxPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RkRzF3SUhzTkNnbHdiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdEUW9KZEc5d09pQXRPVGs1T1Rsd2VEc05DZ2xzWldaME9pQXRPVGs1T1Rsd2VEc05DZ2wyYVhOcFltbHNhWFI1T2lCb2FXUmtaVzQ3RFFvSmJXRjRMWGRwWkhSb09pQTVPVGs1T1hCNE93MEtDVzFoZUMxb1pXbG5hSFE2SURrNU9UazVjSGc3RFFvSmIzWmxjbVpzYjNjNklIWnBjMmxpYkdVZ0lXbHRjRzl5ZEdGdWREc05DbjBOQ2cwS0x5b2dUM1psY214aGVTQm9aV3h3WlhJZ0tpOE5DZzBLTG1aaGJtTjVZbTk0TFd4dlkyc2dldzBLQ1c5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3RFFwOURRb05DaTVtWVc1amVXSnZlQzF2ZG1WeWJHRjVJSHNOQ2dsd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN0RRb0pkRzl3T2lBd093MEtDV3hsWm5RNklEQTdEUW9KYjNabGNtWnNiM2M2SUdocFpHUmxianNOQ2dsa2FYTndiR0Y1T2lCdWIyNWxPdzBLQ1hvdGFXNWtaWGc2SURnd01UQTdEUW9KWW1GamEyZHliM1Z1WkRvZ2RYSnNLQ2RiVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabUZ1WTNsaWIzZ3ZabUZ1WTNsaWIzaGZiM1psY214aGVTNXdibWNuS1RzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFc5MlpYSnNZWGt0Wm1sNFpXUWdldzBLQ1hCdmMybDBhVzl1T2lCbWFYaGxaRHNOQ2dsaWIzUjBiMjA2SURBN0RRb0pjbWxuYUhRNklEQTdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMXNiMk5ySUM1bVlXNWplV0p2ZUMxdmRtVnliR0Y1SUhzTkNnbHZkbVZ5Wm14dmR6b2dZWFYwYnpzTkNnbHZkbVZ5Wm14dmR5MTVPaUJ6WTNKdmJHdzdEUXA5RFFvTkNpOHFJRlJwZEd4bElHaGxiSEJsY2lBcUx3MEtEUW91Wm1GdVkzbGliM2d0ZEdsMGJHVWdldzBLQ1hacGMybGlhV3hwZEhrNklHaHBaR1JsYmpzTkNnbG1iMjUwT2lCdWIzSnRZV3dnTVROd2VDOHlNSEI0SUNKSVpXeDJaWFJwWTJFZ1RtVjFaU0lzU0dWc2RtVjBhV05oTEVGeWFXRnNMSE5oYm5NdGMyVnlhV1k3RFFvSmNHOXphWFJwYjI0NklISmxiR0YwYVhabE93MEtDWFJsZUhRdGMyaGhaRzkzT2lCdWIyNWxPdzBLQ1hvdGFXNWtaWGc2SURnd05UQTdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMXZjR1Z1WldRZ0xtWmhibU41WW05NExYUnBkR3hsSUhzTkNnbDJhWE5wWW1sc2FYUjVPaUIyYVhOcFlteGxPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RkR2wwYkdVdFpteHZZWFF0ZDNKaGNDQjdEUW9KY0c5emFYUnBiMjQ2SUdGaWMyOXNkWFJsT3cwS0NXSnZkSFJ2YlRvZ01Ec05DZ2x5YVdkb2REb2dOVEFsT3cwS0NXMWhjbWRwYmkxaWIzUjBiMjA2SUMwek5YQjRPdzBLQ1hvdGFXNWtaWGc2SURnd05UQTdEUW9KZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0ZEdsMGJHVXRabXh2WVhRdGQzSmhjQ0F1WTJocGJHUWdldzBLQ1dScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6c05DZ2x0WVhKbmFXNHRjbWxuYUhRNklDMHhNREFsT3cwS0NYQmhaR1JwYm1jNklESndlQ0F5TUhCNE93MEtDV0poWTJ0bmNtOTFibVE2SUhSeVlXNXpjR0Z5Wlc1ME95QXZLaUJHWVd4c1ltRmpheUJtYjNJZ2QyVmlJR0p5YjNkelpYSnpJSFJvWVhRZ1pHOWxjMjRuZENCemRYQndiM0owSUZKSFFtRWdLaThOQ2dsaVlXTnJaM0p2ZFc1a09pQnlaMkpoS0RBc0lEQXNJREFzSURBdU9DazdEUW9KTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQXhOWEI0T3cwS0NTQWdJQzF0YjNvdFltOXlaR1Z5TFhKaFpHbDFjem9nTVRWd2VEc05DZ2tnSUNBZ0lDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklERTFjSGc3RFFvSmRHVjRkQzF6YUdGa2IzYzZJREFnTVhCNElESndlQ0FqTWpJeU93MEtDV052Ykc5eU9pQWpSa1pHT3cwS0NXWnZiblF0ZDJWcFoyaDBPaUJpYjJ4a093MEtDV3hwYm1VdGFHVnBaMmgwT2lBeU5IQjRPdzBLQ1hkb2FYUmxMWE53WVdObE9pQnViM2R5WVhBN0RRcDlEUW9OQ2k1bVlXNWplV0p2ZUMxMGFYUnNaUzF2ZFhSemFXUmxMWGR5WVhBZ2V3MEtDWEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHNOQ2dsdFlYSm5hVzR0ZEc5d09pQXhNSEI0T3cwS0NXTnZiRzl5T2lBalptWm1PdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RkR2wwYkdVdGFXNXphV1JsTFhkeVlYQWdldzBLQ1hCaFpHUnBibWN0ZEc5d09pQXhNSEI0T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0ZEdsMGJHVXRiM1psY2kxM2NtRndJSHNOQ2dsd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN0RRb0pZbTkwZEc5dE9pQXdPdzBLQ1d4bFpuUTZJREE3RFFvSlkyOXNiM0k2SUNObVptWTdEUW9KY0dGa1pHbHVaem9nTVRCd2VEc05DZ2xpWVdOclozSnZkVzVrT2lBak1EQXdPdzBLQ1dKaFkydG5jbTkxYm1RNklISm5ZbUVvTUN3Z01Dd2dNQ3dnTGpncE93MEtmUTBLRFFvalptRnVZM2xpYjNndGRHaDFiV0p6SUhzTkNnbHdiM05wZEdsdmJqb2dabWw0WldRN0RRb0piR1ZtZERvZ01Ec05DZ2wzYVdSMGFEb2dNVEF3SlRzTkNnbHZkbVZ5Wm14dmR6b2dhR2xrWkdWdU93MEtDWG90YVc1a1pYZzZJRGd3TlRBN0RRcDlEUW9OQ2lObVlXNWplV0p2ZUMxMGFIVnRZbk11WW05MGRHOXRJSHNOQ2dsaWIzUjBiMjA2SURKd2VEc05DbjBOQ2cwS0kyWmhibU41WW05NExYUm9kVzFpY3k1MGIzQWdldzBLQ1hSdmNEb2dNbkI0T3cwS2ZRMEtEUW9qWm1GdVkzbGliM2d0ZEdoMWJXSnpJSFZzSUhzTkNnbHdiM05wZEdsdmJqb2djbVZzWVhScGRtVTdEUW9KYkdsemRDMXpkSGxzWlRvZ2JtOXVaVHNOQ2dsdFlYSm5hVzQ2SURBN0RRb0pjR0ZrWkdsdVp6b2dNRHNOQ24wTkNnMEtJMlpoYm1ONVltOTRMWFJvZFcxaWN5QjFiQ0JzYVNCN0RRb0pabXh2WVhRNklHeGxablE3RFFvSmNHRmtaR2x1WnpvZ01YQjRPdzBLQ1c5d1lXTnBkSGs2SURBdU5Uc05DbjBOQ2cwS0kyWmhibU41WW05NExYUm9kVzFpY3lCMWJDQnNhUzVoWTNScGRtVWdldzBLQ1c5d1lXTnBkSGs2SURBdU56VTdEUW9KY0dGa1pHbHVaem9nTURzTkNnbGliM0prWlhJNklERndlQ0J6YjJ4cFpDQWpabVptT3cwS2ZRMEtEUW9qWm1GdVkzbGliM2d0ZEdoMWJXSnpJSFZzSUd4cE9taHZkbVZ5SUhzTkNnbHZjR0ZqYVhSNU9pQXhPdzBLZlEwS0RRb2pabUZ1WTNsaWIzZ3RkR2gxYldKeklIVnNJR3hwSUdFZ2V3MEtDV1JwYzNCc1lYazZJR0pzYjJOck93MEtDWEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHNOQ2dsdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1T3cwS0NXSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTXlNakk3RFFvSlltRmphMmR5YjNWdVpEb2dJekV4TVRzTkNnbHZkWFJzYVc1bE9pQnViMjVsT3cwS2ZRMEtEUW9qWm1GdVkzbGliM2d0ZEdoMWJXSnpJSFZzSUd4cElHbHRaeUI3RFFvSlpHbHpjR3hoZVRvZ1lteHZZMnM3RFFvSmNHOXphWFJwYjI0NklISmxiR0YwYVhabE93MEtDV0p2Y21SbGNqb2dNRHNOQ2dsd1lXUmthVzVuT2lBd093MEs8L3RwbGNzcz4KCTx0cGxqcz5QSE5qY21sd2RDQjBlWEJsUFNKMFpYaDBMMnBoZG1GelkzSnBjSFFpSUhOeVl6MGlXMXR5YjI5MFgzVnliRjFkTDIxdlpIVnNaWE12Vkc5dmJFSnZlQzkwWlcxd2JHRjBaWE12WVd4aVgyWmhibU41WW05NEwycHhkV1Z5ZVM1dGIzVnpaWGRvWldWc0xUTXVNQzQyTG5CaFkyc3Vhbk1pUGp3dmMyTnlhWEIwUGcwS1BITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaVcxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOTBaVzF3YkdGMFpYTXZZV3hpWDJaaGJtTjVZbTk0TDJweGRXVnllUzVtWVc1amVXSnZlQzV3WVdOckxtcHpJajQ4TDNOamNtbHdkRDROQ2p4elkzSnBjSFFnZEhsd1pUMGlkR1Y0ZEM5cVlYWmhjMk55YVhCMElpQnpjbU05SWx0YmNtOXZkRjkxY214ZFhTOXRiMlIxYkdWekwxUnZiMnhDYjNndmRHVnRjR3hoZEdWekwyRnNZbDltWVc1amVXSnZlQzlxY1hWbGNua3VabUZ1WTNsaWIzZ3RkR2gxYldKekxtcHpJajQ4TDNOamNtbHdkRDROQ2p4elkzSnBjSFFnZEhsd1pUMGlkR1Y0ZEM5cVlYWmhjMk55YVhCMElqNE5DbXBSZFdWeWVTaGtiMk4xYldWdWRDa3VjbVZoWkhrb1puVnVZM1JwYjI0b0tTQjdEUW9KSkNnbllTNWhkWFJ2YkdsbmFIUmliM2duS1M1aGRIUnlLSHNuWkdGMFlTMW1ZVzVqZVdKdmVDMW5jbTkxY0NjNkluUm9kVzFpSW4wcExtWmhibU41WW05NEtIc05DZ2tKY0hKbGRrVm1abVZqZENBNklDZHViMjVsSnl3TkNna0pibVY0ZEVWbVptVmpkQ0E2SUNkdWIyNWxKeXdOQ2cwS0NRbGpiRzl6WlVKMGJpQWdPaUJtWVd4elpTd05DZ2tKWVhKeWIzZHpJQ0FnSURvZ2RISjFaU3dOQ2drSmJtVjRkRU5zYVdOcklEb2dkSEoxWlN3TkNna0phR1ZzY0dWeWN5QTZJSHNOQ2drSkNYUnBkR3hsQ1RvZ2V5QjBlWEJsSURvZ0oybHVjMmxrWlNjZ2ZTd05DZ2tKQ1hSb2RXMWljeUE2SUhzTkNna0pDUWwzYVdSMGFDQWdPaUExTUN3TkNna0pDUWxvWldsbmFIUWdPaUExTUEwS0NRa0pmUTBLQ1FsOURRb0pmU2s3RFFwOUtUc05Dand2YzJOeWFYQjBQZz09PC90cGxqcz4KCTx0cGxtb2JpbGVjb2RlPjwvdHBsbW9iaWxlY29kZT4KCTx0cGxtb2JpbGVjc3M+THlvZ2JXOWlhV3hsSUhSb1pXMWxJQ292RFFvdktpQm1ZVzVqZVVKdmVDQjJNaTR4TGpNZ1ptRnVZM2xoY0hCekxtTnZiU0I4SUdaaGJtTjVZWEJ3Y3k1amIyMHZabUZ1WTNsaWIzZ3ZJMnhwWTJWdWMyVWdLaThOQ2k1bVlXNWplV0p2ZUMxM2NtRndMQTBLTG1aaGJtTjVZbTk0TFhOcmFXNHNEUW91Wm1GdVkzbGliM2d0YjNWMFpYSXNEUW91Wm1GdVkzbGliM2d0YVc1dVpYSXNEUW91Wm1GdVkzbGliM2d0YVcxaFoyVXNEUW91Wm1GdVkzbGliM2d0ZDNKaGNDQnBabkpoYldVc0RRb3VabUZ1WTNsaWIzZ3RkM0poY0NCdlltcGxZM1FzRFFvdVptRnVZM2xpYjNndGJtRjJMQTBLTG1aaGJtTjVZbTk0TFc1aGRpQnpjR0Z1TEEwS0xtWmhibU41WW05NExYUnRjQTBLZXcwS0NYQmhaR1JwYm1jNklEQTdEUW9KYldGeVoybHVPaUF3T3cwS0NXSnZjbVJsY2pvZ01Ec05DZ2x2ZFhSc2FXNWxPaUJ1YjI1bE93MEtDWFpsY25ScFkyRnNMV0ZzYVdkdU9pQjBiM0E3RFFwOURRb05DaTVtWVc1amVXSnZlQzEzY21Gd0lIc05DZ2x3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3RFFvSmRHOXdPaUF3T3cwS0NXeGxablE2SURBN0RRb0plaTFwYm1SbGVEb2dPREF5TURzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFhOcmFXNGdldzBLQ1hCdmMybDBhVzl1T2lCeVpXeGhkR2wyWlRzTkNnbGlZV05yWjNKdmRXNWtPaUFqWmpsbU9XWTVPdzBLQ1dOdmJHOXlPaUFqTkRRME93MEtDWFJsZUhRdGMyaGhaRzkzT2lCdWIyNWxPdzBLQ1MxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOSEI0T3cwS0NTQWdJQzF0YjNvdFltOXlaR1Z5TFhKaFpHbDFjem9nTkhCNE93MEtDU0FnSUNBZ0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ05IQjRPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RiM0JsYm1Wa0lIc05DZ2w2TFdsdVpHVjRPaUE0TURNd093MEtmUTBLRFFvdVptRnVZM2xpYjNndGIzQmxibVZrSUM1bVlXNWplV0p2ZUMxemEybHVJSHNOQ2drdGQyVmlhMmwwTFdKdmVDMXphR0ZrYjNjNklEQWdNVEJ3ZUNBeU5YQjRJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNDFLVHNOQ2drZ0lDQXRiVzk2TFdKdmVDMXphR0ZrYjNjNklEQWdNVEJ3ZUNBeU5YQjRJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNDFLVHNOQ2drZ0lDQWdJQ0FnSUdKdmVDMXphR0ZrYjNjNklEQWdNVEJ3ZUNBeU5YQjRJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNDFLVHNOQ24wTkNnMEtMbVpoYm1ONVltOTRMVzkxZEdWeUxDQXVabUZ1WTNsaWIzZ3RhVzV1WlhJZ2V3MEtDWEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHNOQ24wTkNnMEtMbVpoYm1ONVltOTRMV2x1Ym1WeUlIc05DZ2x2ZG1WeVpteHZkem9nYUdsa1pHVnVPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RkSGx3WlMxcFpuSmhiV1VnTG1aaGJtTjVZbTk0TFdsdWJtVnlJSHNOQ2drdGQyVmlhMmwwTFc5MlpYSm1iRzkzTFhOamNtOXNiR2x1WnpvZ2RHOTFZMmc3RFFwOURRb05DaTVtWVc1amVXSnZlQzFsY25KdmNpQjdEUW9KWTI5c2IzSTZJQ00wTkRRN0RRb0pabTl1ZERvZ01UUndlQzh5TUhCNElDSklaV3gyWlhScFkyRWdUbVYxWlNJc1NHVnNkbVYwYVdOaExFRnlhV0ZzTEhOaGJuTXRjMlZ5YVdZN0RRb0piV0Z5WjJsdU9pQXdPdzBLQ1hCaFpHUnBibWM2SURFMWNIZzdEUW9KZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0RzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFdsdFlXZGxMQ0F1Wm1GdVkzbGliM2d0YVdaeVlXMWxJSHNOQ2dsa2FYTndiR0Y1T2lCaWJHOWphenNOQ2dsM2FXUjBhRG9nTVRBd0pUc05DZ2xvWldsbmFIUTZJREV3TUNVN0RRcDlEUW9OQ2k1bVlXNWplV0p2ZUMxcGJXRm5aU0I3RFFvSmJXRjRMWGRwWkhSb09pQXhNREFsT3cwS0NXMWhlQzFvWldsbmFIUTZJREV3TUNVN0RRcDlEUW9OQ2lObVlXNWplV0p2ZUMxc2IyRmthVzVuTENBdVptRnVZM2xpYjNndFkyeHZjMlVzSUM1bVlXNWplV0p2ZUMxd2NtVjJJSE53WVc0c0lDNW1ZVzVqZVdKdmVDMXVaWGgwSUhOd1lXNGdldzBLQ1dKaFkydG5jbTkxYm1RdGFXMWhaMlU2SUhWeWJDZ25XMXR5YjI5MFgzVnliRjFkTDIxdlpIVnNaWE12Vkc5dmJFSnZlQzkwWlcxd2JHRjBaWE12WVd4aVgyWmhibU41WW05NEwyWmhibU41WW05NFgzTndjbWwwWlM1d2JtY25LVHNOQ24wTkNnMEtJMlpoYm1ONVltOTRMV3h2WVdScGJtY2dldzBLQ1hCdmMybDBhVzl1T2lCbWFYaGxaRHNOQ2dsMGIzQTZJRFV3SlRzTkNnbHNaV1owT2lBMU1DVTdEUW9KYldGeVoybHVMWFJ2Y0RvZ0xUSXljSGc3RFFvSmJXRnlaMmx1TFd4bFpuUTZJQzB5TW5CNE93MEtDV0poWTJ0bmNtOTFibVF0Y0c5emFYUnBiMjQ2SURBZ0xURXdPSEI0T3cwS0NXOXdZV05wZEhrNklEQXVPRHNOQ2dsamRYSnpiM0k2SUhCdmFXNTBaWEk3RFFvSmVpMXBibVJsZURvZ09EQTJNRHNOQ24wTkNnMEtJMlpoYm1ONVltOTRMV3h2WVdScGJtY2daR2wySUhzTkNnbDNhV1IwYURvZ05EUndlRHNOQ2dsb1pXbG5hSFE2SURRMGNIZzdEUW9KWW1GamEyZHliM1Z1WkRvZ2RYSnNLQ2RiVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabUZ1WTNsaWIzZ3ZabUZ1WTNsaWIzaGZiRzloWkdsdVp5NW5hV1luS1NCalpXNTBaWElnWTJWdWRHVnlJRzV2TFhKbGNHVmhkRHNOQ24wTkNnMEtMbVpoYm1ONVltOTRMV05zYjNObElIc05DZ2x3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3RFFvSmRHOXdPaUF0TVRod2VEc05DZ2x5YVdkb2REb2dMVEU0Y0hnN0RRb0pkMmxrZEdnNklETTJjSGc3RFFvSmFHVnBaMmgwT2lBek5uQjRPdzBLQ1dOMWNuTnZjam9nY0c5cGJuUmxjanNOQ2dsNkxXbHVaR1Y0T2lBNE1EUXdPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RibUYySUhzTkNnbHdiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdEUW9KZEc5d09pQXdPdzBLQ1hkcFpIUm9PaUF3SlRzTkNnbG9aV2xuYUhRNklERXdNQ1U3RFFvSlkzVnljMjl5T2lCd2IybHVkR1Z5T3cwS0NYUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaVHNOQ2dsaVlXTnJaM0p2ZFc1a09pQjBjbUZ1YzNCaGNtVnVkQ0IxY213b0oySnNZVzVyTG1kcFppY3BPeUF2S2lCb1pXeHdjeUJKUlNBcUx3MEtDUzEzWldKcmFYUXRkR0Z3TFdocFoyaHNhV2RvZEMxamIyeHZjam9nY21kaVlTZ3dMREFzTUN3d0tUc05DZ2w2TFdsdVpHVjRPaUE0TURRd093MEtmUTBLRFFvdVptRnVZM2xpYjNndGNISmxkaUI3RFFvSmJHVm1kRG9nTURzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFc1bGVIUWdldzBLQ1hKcFoyaDBPaUF3T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0Ym1GMklITndZVzRnZXcwS0NYQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUc05DZ2wwYjNBNklEVXdKVHNOQ2dsM2FXUjBhRG9nTXpad2VEc05DZ2xvWldsbmFIUTZJRE0wY0hnN0RRb0piV0Z5WjJsdUxYUnZjRG9nTFRFNGNIZzdEUW9KWTNWeWMyOXlPaUJ3YjJsdWRHVnlPdzBLQ1hvdGFXNWtaWGc2SURnd05EQTdEUW9KZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0Y0hKbGRpQnpjR0Z1SUhzTkNnbHNaV1owT2lBeE1IQjRPdzBLQ1dKaFkydG5jbTkxYm1RdGNHOXphWFJwYjI0NklEQWdMVE0yY0hnN0RRcDlEUW9OQ2k1bVlXNWplV0p2ZUMxdVpYaDBJSE53WVc0Z2V3MEtDWEpwWjJoME9pQXhNSEI0T3cwS0NXSmhZMnRuY205MWJtUXRjRzl6YVhScGIyNDZJREFnTFRjeWNIZzdEUXA5RFFvTkNpNW1ZVzVqZVdKdmVDMXVZWFk2YUc5MlpYSWdjM0JoYmlCN0RRb0pkbWx6YVdKcGJHbDBlVG9nZG1semFXSnNaVHNOQ24wTkNnMEtMbVpoYm1ONVltOTRMWFJ0Y0NCN0RRb0pjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLQ1hSdmNEb2dMVGs1T1RrNWNIZzdEUW9KYkdWbWREb2dMVGs1T1RrNWNIZzdEUW9KZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1T3cwS0NXMWhlQzEzYVdSMGFEb2dPVGs1T1Rsd2VEc05DZ2x0WVhndGFHVnBaMmgwT2lBNU9UazVPWEI0T3cwS0NXOTJaWEptYkc5M09pQjJhWE5wWW14bElDRnBiWEJ2Y25SaGJuUTdEUXA5RFFvTkNpOHFJRTkyWlhKc1lYa2dhR1ZzY0dWeUlDb3ZEUW9OQ2k1bVlXNWplV0p2ZUMxc2IyTnJJSHNOQ2dsdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1T3cwS2ZRMEtEUW91Wm1GdVkzbGliM2d0YjNabGNteGhlU0I3RFFvSmNHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtDWFJ2Y0RvZ01Ec05DZ2xzWldaME9pQXdPdzBLQ1c5MlpYSm1iRzkzT2lCb2FXUmtaVzQ3RFFvSlpHbHpjR3hoZVRvZ2JtOXVaVHNOQ2dsNkxXbHVaR1Y0T2lBNE1ERXdPdzBLQ1dKaFkydG5jbTkxYm1RNklIVnliQ2duVzF0eWIyOTBYM1Z5YkYxZEwyMXZaSFZzWlhNdlZHOXZiRUp2ZUM5MFpXMXdiR0YwWlhNdllXeGlYMlpoYm1ONVltOTRMMlpoYm1ONVltOTRYMjkyWlhKc1lYa3VjRzVuSnlrN0RRcDlEUW9OQ2k1bVlXNWplV0p2ZUMxdmRtVnliR0Y1TFdacGVHVmtJSHNOQ2dsd2IzTnBkR2x2YmpvZ1ptbDRaV1E3RFFvSlltOTBkRzl0T2lBd093MEtDWEpwWjJoME9pQXdPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RiRzlqYXlBdVptRnVZM2xpYjNndGIzWmxjbXhoZVNCN0RRb0piM1psY21ac2IzYzZJR0YxZEc4N0RRb0piM1psY21ac2IzY3RlVG9nYzJOeWIyeHNPdzBLZlEwS0RRb3ZLaUJVYVhSc1pTQm9aV3h3WlhJZ0tpOE5DZzBLTG1aaGJtTjVZbTk0TFhScGRHeGxJSHNOQ2dsMmFYTnBZbWxzYVhSNU9pQm9hV1JrWlc0N0RRb0pabTl1ZERvZ2JtOXliV0ZzSURFemNIZ3ZNakJ3ZUNBaVNHVnNkbVYwYVdOaElFNWxkV1VpTEVobGJIWmxkR2xqWVN4QmNtbGhiQ3h6WVc1ekxYTmxjbWxtT3cwS0NYQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUc05DZ2wwWlhoMExYTm9ZV1J2ZHpvZ2JtOXVaVHNOQ2dsNkxXbHVaR1Y0T2lBNE1EVXdPdzBLZlEwS0RRb3VabUZ1WTNsaWIzZ3RiM0JsYm1Wa0lDNW1ZVzVqZVdKdmVDMTBhWFJzWlNCN0RRb0pkbWx6YVdKcGJHbDBlVG9nZG1semFXSnNaVHNOQ24wTkNnMEtMbVpoYm1ONVltOTRMWFJwZEd4bExXWnNiMkYwTFhkeVlYQWdldzBLQ1hCdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzTkNnbGliM1IwYjIwNklEQTdEUW9KY21sbmFIUTZJRFV3SlRzTkNnbHRZWEpuYVc0dFltOTBkRzl0T2lBdE16VndlRHNOQ2dsNkxXbHVaR1Y0T2lBNE1EVXdPdzBLQ1hSbGVIUXRZV3hwWjI0NklHTmxiblJsY2pzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFhScGRHeGxMV1pzYjJGMExYZHlZWEFnTG1Ob2FXeGtJSHNOQ2dsa2FYTndiR0Y1T2lCcGJteHBibVV0WW14dlkyczdEUW9KYldGeVoybHVMWEpwWjJoME9pQXRNVEF3SlRzTkNnbHdZV1JrYVc1bk9pQXljSGdnTWpCd2VEc05DZ2xpWVdOclozSnZkVzVrT2lCMGNtRnVjM0JoY21WdWREc2dMeW9nUm1Gc2JHSmhZMnNnWm05eUlIZGxZaUJpY205M2MyVnljeUIwYUdGMElHUnZaWE51SjNRZ2MzVndjRzl5ZENCU1IwSmhJQ292RFFvSlltRmphMmR5YjNWdVpEb2djbWRpWVNnd0xDQXdMQ0F3TENBd0xqZ3BPdzBLQ1MxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dNVFZ3ZURzTkNna2dJQ0F0Ylc5NkxXSnZjbVJsY2kxeVlXUnBkWE02SURFMWNIZzdEUW9KSUNBZ0lDQWdJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQXhOWEI0T3cwS0NYUmxlSFF0YzJoaFpHOTNPaUF3SURGd2VDQXljSGdnSXpJeU1qc05DZ2xqYjJ4dmNqb2dJMFpHUmpzTkNnbG1iMjUwTFhkbGFXZG9kRG9nWW05c1pEc05DZ2xzYVc1bExXaGxhV2RvZERvZ01qUndlRHNOQ2dsM2FHbDBaUzF6Y0dGalpUb2dibTkzY21Gd093MEtmUTBLRFFvdVptRnVZM2xpYjNndGRHbDBiR1V0YjNWMGMybGtaUzEzY21Gd0lIc05DZ2x3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3RFFvSmJXRnlaMmx1TFhSdmNEb2dNVEJ3ZURzTkNnbGpiMnh2Y2pvZ0kyWm1aanNOQ24wTkNnMEtMbVpoYm1ONVltOTRMWFJwZEd4bExXbHVjMmxrWlMxM2NtRndJSHNOQ2dsd1lXUmthVzVuTFhSdmNEb2dNVEJ3ZURzTkNuME5DZzBLTG1aaGJtTjVZbTk0TFhScGRHeGxMVzkyWlhJdGQzSmhjQ0I3RFFvSmNHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtDV0p2ZEhSdmJUb2dNRHNOQ2dsc1pXWjBPaUF3T3cwS0NXTnZiRzl5T2lBalptWm1PdzBLQ1hCaFpHUnBibWM2SURFd2NIZzdEUW9KWW1GamEyZHliM1Z1WkRvZ0l6QXdNRHNOQ2dsaVlXTnJaM0p2ZFc1a09pQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DbjBOQ2cwS0kyWmhibU41WW05NExYUm9kVzFpY3lCN0RRb0pjRzl6YVhScGIyNDZJR1pwZUdWa093MEtDV3hsWm5RNklEQTdEUW9KZDJsa2RHZzZJREV3TUNVN0RRb0piM1psY21ac2IzYzZJR2hwWkdSbGJqc05DZ2w2TFdsdVpHVjRPaUE0TURVd093MEtmUTBLRFFvalptRnVZM2xpYjNndGRHaDFiV0p6TG1KdmRIUnZiU0I3RFFvSlltOTBkRzl0T2lBeWNIZzdEUXA5RFFvTkNpTm1ZVzVqZVdKdmVDMTBhSFZ0WW5NdWRHOXdJSHNOQ2dsMGIzQTZJREp3ZURzTkNuME5DZzBLSTJaaGJtTjVZbTk0TFhSb2RXMWljeUIxYkNCN0RRb0pjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPdzBLQ1d4cGMzUXRjM1I1YkdVNklHNXZibVU3RFFvSmJXRnlaMmx1T2lBd093MEtDWEJoWkdScGJtYzZJREE3RFFwOURRb05DaU5tWVc1amVXSnZlQzEwYUhWdFluTWdkV3dnYkdrZ2V3MEtDV1pzYjJGME9pQnNaV1owT3cwS0NYQmhaR1JwYm1jNklERndlRHNOQ2dsdmNHRmphWFI1T2lBd0xqVTdEUXA5RFFvTkNpTm1ZVzVqZVdKdmVDMTBhSFZ0WW5NZ2RXd2diR2t1WVdOMGFYWmxJSHNOQ2dsdmNHRmphWFI1T2lBd0xqYzFPdzBLQ1hCaFpHUnBibWM2SURBN0RRb0pZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJMlptWmpzTkNuME5DZzBLSTJaaGJtTjVZbTk0TFhSb2RXMWljeUIxYkNCc2FUcG9iM1psY2lCN0RRb0piM0JoWTJsMGVUb2dNVHNOQ24wTkNnMEtJMlpoYm1ONVltOTRMWFJvZFcxaWN5QjFiQ0JzYVNCaElIc05DZ2xrYVhOd2JHRjVPaUJpYkc5amF6c05DZ2x3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3RFFvSmIzWmxjbVpzYjNjNklHaHBaR1JsYmpzTkNnbGliM0prWlhJNklERndlQ0J6YjJ4cFpDQWpNakl5T3cwS0NXSmhZMnRuY205MWJtUTZJQ014TVRFN0RRb0piM1YwYkdsdVpUb2dibTl1WlRzTkNuME5DZzBLSTJaaGJtTjVZbTk0TFhSb2RXMWljeUIxYkNCc2FTQnBiV2NnZXcwS0NXUnBjM0JzWVhrNklHSnNiMk5yT3cwS0NYQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUc05DZ2xpYjNKa1pYSTZJREE3RFFvSmNHRmtaR2x1WnpvZ01Ec05DZz09PC90cGxtb2JpbGVjc3M+Cgk8dHBsbW9iaWxlanM+UEhOamNtbHdkQ0IwZVhCbFBTSjBaWGgwTDJwaGRtRnpZM0pwY0hRaUlITnlZejBpVzF0eWIyOTBYM1Z5YkYxZEwyMXZaSFZzWlhNdlZHOXZiRUp2ZUM5MFpXMXdiR0YwWlhNdllXeGlYMlpoYm1ONVltOTRMMnB4ZFdWeWVTNTBiM1ZqYUZOM2FYQmxMbTFwYmk1cWN5SStQQzl6WTNKcGNIUStEUW84YzJOeWFYQjBJSFI1Y0dVOUluUmxlSFF2YW1GMllYTmpjbWx3ZENJZ2MzSmpQU0piVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabUZ1WTNsaWIzZ3ZhbkYxWlhKNUxtWmhibU41WW05NExuQmhZMnN1YW5NaVBqd3ZjMk55YVhCMFBnMEtQSE5qY21sd2RDQjBlWEJsUFNKMFpYaDBMMnBoZG1GelkzSnBjSFFpUGcwS2FsRjFaWEo1S0dSdlkzVnRaVzUwS1M1eVpXRmtlU2htZFc1amRHbHZiaWdwSUhzTkNna2tLQ2RoTG1GMWRHOXNhV2RvZEdKdmVDY3BMbUYwZEhJb2V5ZGtZWFJoTFdaaGJtTjVZbTk0TFdkeWIzVndKem9pWVd4aVoyRnNiR1Z5ZVNKOUtTNW1ZVzVqZVdKdmVDaDdEUW9KQ1dOc2IzTmxRblJ1SUNBNklIUnlkV1VzRFFvSkNXRnljbTkzY3lBZ0lDQTZJR1poYkhObExBMEtDUWxvWld4d1pYSnpJRG9nZXcwS0NRa0pkR2wwYkdVSk9pQjdJSFI1Y0dVZ09pQW5hVzV6YVdSbEp5QjlMQTBLQ1FsOURRb0pmU2s3RFFwOUtUc05DaVFvWkc5amRXMWxiblFwTG5OM2FYQmxLSHNOQ2lBZ0lDQnpkMmx3WlV4bFpuUTZJR1oxYm1OMGFXOXVLQ2tnZXcwS0lDQWdJQ0FnSUNBa0xtWmhibU41WW05NExtNWxlSFFvS1RzTkNpQWdJQ0I5TEEwS0lDQWdJSE4zYVhCbFVtbG5hSFE2SUdaMWJtTjBhVzl1S0NrZ2V3MEtJQ0FnSUNBZ0lDQWtMbVpoYm1ONVltOTRMbkJ5WlhZb0tUc05DaUFnSUNCOUxBMEtJQ0FnSUhSeWFXZG5aWEpQYmxSdmRXTm9SVzVrT21aaGJITmxEUXA5S1RzTkNqd3ZjMk55YVhCMFBnPT08L3RwbG1vYmlsZWpzPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vYmxhbmsuZ2lmPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtSMGxHT0RsaEFRQUJBSUFBQVAvLy93QUFBQ0g1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlDUkFFQU93PT1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9mYW5jeWJveF9sb2FkaW5nLmdpZjwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbUjBsR09EbGhHQUFZQVBjSUFEbzZPa1ZGUlRRME5Nbkp5ZFBUMDR5TWpDOHZMN3k4dkIwZEhYbDVlWDUrZnU3dTdsSlNVcUdob1EwTkRTc3JLNjJ0cmVYbDVaU1VsTUxDd2hnWUdLZW5wN1MwdEx1N3UvWDE5ZnI2K2tORFE1eWNuQklTRWdRRUJGdGJXN0d4c1JjWEZ6QXdNQ01qSTJabVpvYUdoa3RMUzgzTnpRb0tDbHhjWEUxTlRjN096aFFVRkdWbFpRVUZCVlJVVkc5dmJ4a1pHWldWbGVibTV0emMzTlRVMU9MaTRqRXhNVmxaV1VCQVFKNmVuaVltSnFLaW9wcWFtb2VIaDYrdnI4UER3d2tKQ1Q4L1A1T1RrdzhQRHlrcEtSQVFFQ0VoSVltSmlZaUlpQ1FrSkYxZFhTMHRMU0FnSUxDd3NBZ0lDQkVSRVRNek00V0ZoYjI5dlNvcUtnc0xDNk9qbzcrL3Y1bVptZlQwOVBuNStUZzRPTGEydHJxNnV0RFEwQ0lpSXAyZG5hdXJxd3dNREQwOVBVZEhSNjZ1cmtSRVJFeE1UTlhWMWVIaDRaYVdsaE1URTl2YjI4L1B6enc4UEtDZ29CWVdGcXlzckw2K3ZscGFXbTV1YnArZm4wWkdSc0RBd0p1Ym16NCtQZzRPRGprNU9aQ1FrQVlHQmljbkp5d3NMREl5TW5oNGVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL2kxTllXUmxJR0o1SUV0eVlYTnBiV2x5WVNCT1pXcGphR1YyWVNBb2QzZDNMbXh2WVdScGJtWnZMbTVsZENrQUlma0VCUW9BQ0FBc0FBQUFBQmdBR0FBQUIvK0FDSUtEaEFnMk5vV0ppVUF0Z2tNSEIwT0treXM4TDQ0cUtwSUlNRWFOa3dnckJ6UUdDRU9aa2tBMlJKK2dMakpDTGFlYW5BSkZsQ3VDUURzMUFVQ29SUUk2Z3kydExRVStLVUFJQURNeFFEYzNMVVkya2kxRlJFYkVMRDhFTVFKQUtjT0RRTGRBT2dJMk1JVkVQU29EQVpORGgwYkxpUzA0UjlxS1FFYTNoVUFDTXJJSFNsQXhRVWFFOEZpWUkwakJJZ2FJU0NUU0w4YU9IQmh4UENRU2tZaU9WRU9BaEd3MXFkSEJSRU04VGVyM2J4RTFHeTBMRmFGSFVCQU1HOElraFNSMHpSUTZkWVNNRUNuU1NKVzJJcmVvYlZxUmpXY3JkTGM0eXJLeEQ4SEpSRE8xdFpDSTBGWkJxMFJzTE52S3l0UXFrdmVNckJNVWNWQW50RjhJZFJENStsWGsxMEFBSWZrRUJRb0FCZ0FzQUFBQUFCZ0FHQUFBQi8rQUJvS0RoQzFMRDRTSmlvSXRUb0pPVFJBT2pDMkxpUVVzZ2c1U1VwTUdDUlVVbG9NUUU0aWJuUVpRRVNxaW93WXBCRkV0cUE0dERSbEtsazlQanhJcUdrNmNUaWtZVFk2TENodkJCZ0lEU0U0TURFNE5DeHFDVHc5TWhFcE5VbEZMVGdGSmhBOE10RWxRVUJTVmcwa0tGeFlBdStwTXlJb0FDZ2lXVGt5ZWhRYmF0WHMxcUpLVEpBOFNMdWsxNnNtaGhFbWNPRWp5OEFIRFhROFBUV3BSYVNCQmo0bWViTFBVZ3NuRlJFNFFxRHRKNkFrVUFmWVNVVkNYWkpJdFFoSU5UQlFBWlFVaEpnczFRZG5HeXdBVEtCdFhhQ09aUkVDdkIwdG9DU0JIME1BVG1JSVNDbUlpd0NkQnFNaTA2bHl5cENvVFZ5MFN0cU13c3VvZ3NXNEdGem01WnlrUUFDSDVCQVVLQUFJQUxBQUFBQUFZQUJnQUFBZi9nQUtDZzRRQ1UwbUZpWWtkSFlKVURRMVVqbzJLZ3h3S0hvSmhaR1JoZ2k5WElKV0NIRjlraUp0Z25nWTBYS0tqQW1OV0NRSlVaR0NTTVRJdWxZeU9TRnhhdHJnQk5aR0NNRENFWGxNY2dqWmJDVlJqWTFReE13QUNZUjVkVlpMSU5qWkpZUjFpQ0lSVDFXSWZXVElKbEk0SVdqYWVpZ3dMV0EwMmxXRmUzNGxUcXFTQU40Z1NRVVVHQjFHWndwQ2hzMUVjREV5Uk9JWEtRb1lTSDFiaTBGRGlQMWlMSUNMNFNJZ0tnbnFKd3NpanR6R2N2MEl3RElnakYrWWpGVTloa21neDhFcVFGd01Qdzlqd0lvQ0RNd1FHNm5Fa1dwQ2dGazhNaTJvaDVFc1JCeTFFTzBRVjRFV0x4bDRUdnpGc1JFWGl3VUlkdkNnVG9IWEtJQmhlQzg3Q1N1SVdKQ3lMSUFNQkFDSDVCQVVLQUFBQUxBSUFBQUFXQUJjQUFBZmVnQUNDZzRNaUlvU0lpWWdTQllxS0hTSXdnZzQ1VjFTQ0l3VWNqaDFUSVpkVWxaZFRFeEJxamdCcUFvZVVWeDBkSkFSbXFJSTZJUTZobGpoc0VvU25BSWVERGlFaUhUZzRIVWdEQWdCVUxoT3VnaUVoT2c0ZEhCMkVJbVZVQWxVUlp5K1hnaUlDdDQ1bWEyaHBENGtPd1lvNmFXV0oyYlNDVkZRT0hBNE9BQThBMjlHNndhWWdHeXNQcGt3Uk9OQWdtd2toQk5tanBhOWZQMElPSktHQzRROFJsWElDT2lxYUJpOVZDQUhWcnJrRDRFQ0hPWTA2SHZ4eUlFQWp1WE9wcHBRY1pHc1RJV3IzQUt4S0pDTGlQWWFJa01hanRaT1dEa1FUQndVQ0FDSDVCQVVLQUFFQUxBSUFBQUFXQUJjQUFBZlJnQUdDZzROVVZJU0lpWWhUU1lNZGlvZ1VnMU5UandGS0NwQ0pIWlNEUGp3Y21xR1RsUjBLRjJXYUFSMUpJUndkRDFOVWJSYzlneXNybWdnZEhLOEtGZytDWmhaSWdoUWhBbzBCRG9lRENBQlVJVEVFUHl5V2dpR3FaUU1xU0ZPcWlpSTliZUNxRHVmTUFaU2RxZ3cvRnhjL0Z1dFR3ZTN3OE1EbGtNMkRJdGVJSHV3d0EzQlFDRmVRR0N6QXNpT0VKVWtCbEswaTFNRkJoeklXc3NoSThFakVnMUVCUWlBUWxFdlFJU3BLVkZUb0o0Z1ZJa3NpQmxHQVNLaWtJSHUzd0lWd3NDK1JDSnFSZWdwS2txUWdva0FBSWZrRUJRb0FBQUFzQUFBQUFCZ0FHQUFBQjh1QUFJS0RoQUJBUUlXSmlva2RpNDZGUzRNVUlvMlBnZzZDUzFPTlFKcVZsb29pQWh5Z2hWT0NIQ0ZKZzIra2p5S0VJa3VZUUhWMENwYWZoZzRkSVVoeEVIS0ZpSlpCVzF3SnE0N0VpUWdKV282Nml4MkhEb2VHVTlsVGtZOHBFTjl3YmxOQTJwcVdKZC9mNG9MU3k0ZEExb211aTFNeGRZdk1qaWt6YURIY3BZS211QUNpcFVxRU0zTWdGWUlGZ0VNSE53c0NHSEpoSWtZN1FwZ0dwY0FBZ2RpYk40dEFEanBseUUwR1lhVVFkZGdtS0VRRUV4UUFadG9rS0VHVm1BQTdKQ0ZwS0Y5S240a0NBUUFoK1FRRkNnQUJBQ3dBQUFBQUdBQVlBQUFIMFlBQmdvT0VBVlJVaFltS2hBK0xqb0l3Z3crTmtJK1NJWWdCazRKVUJwU1BLNHlmbG91Ymd4MkNIYWlNbGdhREhBWWloSkdFSElXWkRra0NJYUdFbVk4Y0lTRWl2NHJGaEIwaURxU1dWQTdPaUZTVGs2NlBaWGZZYmtMRTA2YU9BSGM4UEhmYnpMNkhWQjNIQVE3RWl5SklBSXVaQnN1S1pRTUVQYU1CdElQUGhKS2tvQklpQmdFN0xBcU5pdFhoeGcwcU1XYklvNUxDUndGU0RsU29vRktteGc1N0szb2xFcGxSaFlNT1FtUzRJUFVneExLU3l3elFPQ0RTRVMwSEJFd0tlc0hESDBZN2R1eXBNemRJbUtWQUFDSDVCQVVLQUNrQUxBQUFBQUFZQUJnQUFBYXR3SlJ3U0V5ZFRzV2tjc2xVVXBiUEp0R1JSRXFGbktzMjZSQnNtYUVteGREc1pJVWhBNmhvVFozTFN3NmlyWHdQTzE4bC9jb3hQUHdQUjNrY2Z3K0dlMWQ0VFJ3aWlFSUlDVXlPUlFBV0Z3cEpJQVpoUWd3UFJDSUJIUVlrQnhBb1JXUkNHZ3NOSnd3TUp5UURYaWNCRzVoNkh4Z2xKd2NISnhvRUVsWWNka1FlR1EwZERyOG5IU1FFSlZJVUpoR2NFd2RDRHhNUWEwd1VGWkZDdjBNakJjZEpIVlluSHg5dGlsOS9Va0VBSWZrRUJRb0FBQUFzQUFBQUFCZ0FHQUFBQjltQUFJS0RoQUJVVklXSmlvdU1pVjZOU1kyRWlJVlVENUtFajRXYW1BQ2NneHdoalo5RElaOWVJVU9ERDU4QW9nQkRIVU9VZzdGRFNRSWhGSld0aVVNUEFsNjBoVVBDaTFTOW5ZVWRnc3lHRDlEUW1OSFFWTTdLZ3RGSnFzdVlIZGVFSFNrN2w0b2RYdHpMSVR0WUN3eUxvYWJESFFreVdSOTRWQ1dSZ3doNEhWUnc2UnBFcFVJWEQ0aTB6SWloTHdXOUxhODRzQ0pFWVplaEhUVUNVQUVEaDRxV0EwZ29mVnZFUUVZTWdCeXRKYkFTUU5LYkF6UXVEUUVEQmxFU09GODROSHB6NVlXZ21XQzRlVkRRaVJLVkhUdUdZUnZFajFFZ0FDSDVCQVVLQUFBQUxBQUFBQUFZQUJnQUFBZmpnQUNDZzRRQVFFQ0ZpWXFETFVrUGk0c3RJb2t0Z3lLVmtJSTJlUUNZZ2tBMkQ1NlprNHdBSWdKcWtaNUpOaHllZVRhRUxhT2xnckdUcXFjR25KYUZCcmNBZWFNdG5IbXRzb1ZBSWpiSmlyRTJJb2lLSEREVGxMYUVlZHZibVlXWU5uWXE0eW8zM2dZUDZROUFCbGJrNWQ2RDZNYmNlZGVRbzdNQmFVbVJJcjJKREtSQnM4WU1wR2JTWnIwNEU2R0tIaUFCc2dIaElFelRMQjUyWENBU01BQkpDeHc0V3NEWVJDaWJMa05wVklUa2tRTklySDZDYUMweWM4WWpFSmFjVUZITXBBYUNuVThzRWJFVHhiUEFDS0E1ZXFtNTVBMElKaUI3MHR5TFZ5amJva0FBSWZrRUJRb0FBUUFzQUFBQUFCZ0FHQUFBQi9lQUFZS0RoQUZVVklXSmlvUkVSSXVMZklXTmtZT1VrRVFoaUh5TmdsUitSSmFQaEg1K2xDRWNpeFFVZ3lJaFladEVWR0VoZlpSOGxud1ZYUjVoQWJPQ3FJS3VnNDZWQ1RKWkgySjhZWWlWcUdGOUFpRXJoU0U3V0FzTWk3TUNJczZGZkdZN3hZbWhoR0hwemVDUGZGU1VmaDhYY2ZUYm9wOUVuNTRmOVBXaUFZMEM5bEszN2wrQVcrY09pa0VpWWhFVkJMMFVFZW1oWWtDWlJ5RkNmQ1BFaDhXUExqRUVVQUdBZ0pBc1g5SkNjQ3pnd3d3aVB4WVM4T0dBQ3NHd0FDdktDVnBSelZDUE9BQUFPdUpBcTFKQ1FXWGl5T1R6NmVnaURqeDhGSnRrcUtrb0RnbzhDSUkxYUlVSXAwWUg5ZEZwTU5HaGY0RUFBQ0g1QkFVS0FBQUFMQUFBQUFBWUFCZ0FBQWovQUFFSUhFZ1F3SWtUQlJNbTVJTlFZSjgrQ2lNQ29GQWh3Y0FwVXdneWtTaVFnb2tJZndSaTVHTndTVWFPQUZCa3FJSnd5aEtCVFA0VWlmam1qY0F3VFRDazRJTlJZRWlKVitLNFFCaGtRUlUrUldiR0hGaGt5c2FCYzg1RXFLTGxCQU9JQTAvTVBOSG56eDhLQlpla1FUT2pSTVFpWHBtRWlSZ2dEZGFFSjlRcVBFZ1hwVUErZUFGTXFRSUJEaHdJWmlVV01ZbXhEOWNxZmlFQTVqZ1lJMGFFZE92YWxhZ0ZFSUtJY1djcTdKT0F5NVlnRWNQOEVjQ2s0VUE1RU9JZytZUFVOQUNrQTcwV1ZFQW5BT1EvVEpBcS9RbmdqVk9DUld3Ni9MUFdKWjh3QWlZRFFOc0hyMHVZQWpSTDVMbWs0Zk9TSjZjekFTdHlDc21KVDVYckNIMHJudUJCbEFFQkFEcz1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9mYW5jeWJveF9vdmVybGF5LnBuZzwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTJacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwQ01FTTRORGd6UWpsRFJUTkZNVEV4T0RFNE5VVkRPVGRGUTBJMFJEZ3hSU0lnZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBHUkVVNU9FVkNRekF6TWpZeE1VVXlPVGc1T1VSRE1EbERSVEpETVRjMFJTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEcEdSRVU1T0VWQ1FqQXpNall4TVVVeU9UZzVPVVJETURsRFJUSkRNVGMwUlNJZ2VHMXdPa055WldGMGIzSlViMjlzUFNKQlpHOWlaU0JRYUc5MGIzTm9iM0FnUTFNMklDaFhhVzVrYjNkektTSStJRHg0YlhCTlRUcEVaWEpwZG1Wa1JuSnZiU0J6ZEZKbFpqcHBibk4wWVc1alpVbEVQU0o0YlhBdWFXbGtPa0l4UXpnME9ETkNPVU5GTTBVeE1URTRNVGcxUlVNNU4wVkRRalJFT0RGRklpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09rSXdRemcwT0ROQ09VTkZNMFV4TVRFNE1UZzFSVU01TjBWRFFqUkVPREZGSWk4K0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBOFAzaHdZV05yWlhRZ1pXNWtQU0p5SWo4K3MzWVJBUUFBQUJ0SlJFRlVlTnBpRk9EaDJjQkFCR0JpSUJLTUtxU09Rb0FBQXdCb2tRRHM1Ri84RkFBQUFBQkpSVTVFcmtKZ2dnPT1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9mYW5jeWJveF9zcHJpdGUucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ3dBQUFDWUNBTUFBQUNvQWZ0UUFBQUF2VkJNVkVVQUFBQUFBQUFBQUFBT0RnNEFBQUFBQUFBQUFBRE56YzBCQVFIWjJka0RBd01IQndjQUFBRGYzOThDQWdJL1B6OEJBUUVBQUFDQ2dvSWNIQnpsNWVVQUFBQy92Ny94OGZFR0JnWm5aMmNBQUFEczdPd0dCZ2I0K1BnL1B6L0p5Y21lbnA1bloyZjM5L2VEZzRNQUFBRFEwTkQ0K1BpdXJxN2EydHI4L1B6czdPd0FBQUQ1K2ZuOS9mM2UzdDRBQUFELy8vOU9UazdCd2NFMU5UV3NyS3lOalkyY25KeDZlbnBkWFYxb2FHZ3NMQ3k2dXJvaUlpTE96czVCUVVGdDNQQ05BQUFBTDNSU1RsTUFBUU1JRFJJWkhTTW5MVHBFU0ZOVlhXbHBiRzE1ZW4rSGlaQ1dvYUdzc3JPMnZzREZ5ZFBVM3VMNCtmcjkvWXd2NnhzQUFBUVZTVVJCVkhoZTdKWmJjNkpNR0lRWEFVT1FFTWkzdU1Za3Jtb3BaZ3FzNXVqWi8vK3p2cGROek1zTWxsaTFOM3VSdnRDYnB6bzlJK25taHlxTjlPTzZHTlE2SGExU0cwbWNyaHNrWGU5MHJ2S0U2a2JYN3I5TUY0dnAyODg3bmZCcnFQVzB4SmVtRDR3MzJlN2pISWoyNjAyU2JOWjdRZmdkMHpKTHRnS2kyQjArdFNzRTNoOHUwUlg3SEdHZkhXcks5b2lJYnJLNjlTaVFIeFRsaU81Vld0UDByck5FZW1ob2o2bXVhWXF4Mlh1R3lKcndiZ1VLb2hoYjNoSUZNNndDQzdabTQrTTVaczVmcEtOaVRZbmRFT1VIREZSWUNlQURMdkdpeTdEdEw3RTUvMTJnSlBhY2FsUGxxRWMyZW9GQWRtQ2EyVU9HeU9ob1V1UWd3bzdQeEN3Sk1HWFlHY1FNbHlDVlgzRGNoQ2tHczNWNmgwaUZneVVTWnN1UzZRUUxHYVlEaHVlVUh4aGYzUnB6T3FCOGRSTWN6ODRsZjVGUzlBMU5naTJQUW04UEY3UkJaT25FeXFGblNDL0JLWDZiSFFtdWNwQjEzbVJ6Q0p0VHNQVW93bHBsMTRpZjJKaWZVWGN3Z2VxZEEyT0xuMUMrUGRzYnpDS2tXMGEzS2VLeGJiQXhGNEZKOUVnQWFYR3F5Rk9SQXVMWk5ya01aTm9OS25OUzlQRTVkcGx0Rm9makI0UEpYSUFrNXJQL0hNdTRVa21tN1hqRWt3TGZjMnlUNjZ0Sms3bHAyVDJIMUxNdGsyd1ZWc1dwY0UwU2xXNERiZUxFL3hHM2VSdmZRdjdGcHR3NEt2cEROUktMdDEvM3JadHkveGJqclBlZjErNUQwMThJVFl0dGtpVHJmQVVzcm16SzNSVElUL3dvSHhIM0RhWmw5aDJyUkgyYVgweWRhWWIxQlZLMXpOZEEzMlJ2Tm43RGtWbW1veWVWSnZZQk1jZGw1VmcyL2xXMHpwU2JVTklLVDEyS0xWOHdWanNtTnZHVzYzZmVVM3FqODZ2ZUdRbUFBMWU1cXpiU3ROWmRtVlRsUnp6YlNqRys0K3Q0dTFpcWp4eGpSNnBjemFpTkJDQ1ZYb0d4MjVYN21VTkdnSkJITS9Rc1hXcCtkazRVNXhKalg0RVhTTTdBQ2NDeG5ubm0yekk4cnhWb0ZnTXIvbFV3VXB5TlB2WVZ4L2VSZmFVU1F6a3pMV3hFT1ZoaXd5bkNBZDJHdkNtLzJicXVCUEVvK0x4bkR2MFlYZHlmRk9IUVArOEVWL2tZMGVuU29yeHlpdG9MeHh3aWFiRFJxREltV0YySkpWQkllVk5FazJIZ3NER243dmtoY1B5NjdsTU9pQkdGNEFHUzN0WDh5WXFBZmI1ZUYva1JpTVBYNGNEakVETGQ4d2V6SlQ0bHd0SHJNSEJ0Ymc2VjlvTGhZRFlMdzNBMmVTVmJuMGVsU2RNQ2VjRmcrRWUwS3E3ZGxmdExYU0NyUnhORThsekg3aHAwTnUzcXBIUXR5N1p0cTJzYWJIdnRwYi9TTGF1aXNWVHllMU8rTjJVYmJ4aHUyeFNBcTZ4MVV3b0FXZnVtOFAzR3U1Wk5ZYVVBMmphRkpZQ29mVlBZT1duWkZENFRjTHB4VTFaQW5OMjRLUm5meFEyYnNoRUUvVnViOHIwcDM1dmkvdDllSFJvQkRNTlFESlV2TUxrT2tETU0rOEQ3YjljUitrT0tMUHk0anVvam5RZUFrV1dWQXlMTExJTlZkb3ZqNDROOExPcWkvM0RqeG8wYk41WnZkYldKdXdIaHJ3MklMWWRxQndEVDJmRUVYdHJaRm1WY0NXTGlBQUFBQUVsRlRrU3VRbUNDXV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vanF1ZXJ5LmZhbmN5Ym94LXRodW1icy5qczwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbSUM4cUlRb2dLaUJVYUhWdFltNWhhV3dnYUdWc2NHVnlJR1p2Y2lCbVlXNWplVUp2ZUFvZ0tpQjJaWEp6YVc5dU9pQXhMakF1TnlBb1RXOXVMQ0F3TVNCUFkzUWdNakF4TWlrS0lDb2dRSEpsY1hWcGNtVnpJR1poYm1ONVFtOTRJSFl5TGpBZ2IzSWdiR0YwWlhJS0lDb0tJQ29nVlhOaFoyVTZDaUFxSUNBZ0lDQWtLQ0l1Wm1GdVkzbGliM2dpS1M1bVlXNWplV0p2ZUNoN0NpQXFJQ0FnSUNBZ0lDQWdhR1ZzY0dWeWN5QTZJSHNLSUNvZ0lDQWdJQ0FnSUNBZ0lDQWdkR2gxYldKek9pQjdDaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IzYVdSMGFDQWdPaUExTUN3S0lDb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxhV2RvZENBNklEVXdDaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lIMEtJQ29nSUNBZ0lDQWdJQ0I5Q2lBcUlDQWdJQ0I5S1RzS0lDb0tJQ292Q2lobWRXNWpkR2x2YmlBb0pDa2dld29KTHk5VGFHOXlkR04xZENCbWIzSWdabUZ1WTNsQ2IzZ2diMkpxWldOMENnbDJZWElnUmlBOUlDUXVabUZ1WTNsaWIzZzdDZ29KTHk5QlpHUWdhR1ZzY0dWeUlHOWlhbVZqZEFvSlJpNW9aV3h3WlhKekxuUm9kVzFpY3lBOUlIc0tDUWxrWldaaGRXeDBjeUE2SUhzS0NRa0pkMmxrZEdnZ0lDQWdPaUExTUN3Z0lDQWdJQ0FnTHk4Z2RHaDFiV0p1WVdsc0lIZHBaSFJvQ2drSkNXaGxhV2RvZENBZ0lEb2dOVEFzSUNBZ0lDQWdJQzh2SUhSb2RXMWlibUZwYkNCb1pXbG5hSFFLQ1FrSmNHOXphWFJwYjI0Z09pQW5ZbTkwZEc5dEp5d2dMeThnSjNSdmNDY2diM0lnSjJKdmRIUnZiU2NLQ1FrSmMyOTFjbU5sSUNBZ09pQm1kVzVqZEdsdmJpQW9JR2wwWlcwZ0tTQjdJQ0F2THlCbWRXNWpkR2x2YmlCMGJ5QnZZblJoYVc0Z2RHaGxJRlZTVENCdlppQjBhR1VnZEdoMWJXSnVZV2xzSUdsdFlXZGxDZ2tKQ1FsMllYSWdhSEpsWmpzS0Nna0pDUWxwWmlBb2FYUmxiUzVsYkdWdFpXNTBLU0I3Q2drSkNRa0phSEpsWmlBOUlDUW9hWFJsYlM1bGJHVnRaVzUwS1M1bWFXNWtLQ2RwYldjbktTNWhkSFJ5S0NkemNtTW5LVHNLQ1FrSkNYMEtDZ2tKQ1FscFppQW9JV2h5WldZZ0ppWWdhWFJsYlM1MGVYQmxJRDA5UFNBbmFXMWhaMlVuSUNZbUlHbDBaVzB1YUhKbFppa2dld29KQ1FrSkNXaHlaV1lnUFNCcGRHVnRMbWh5WldZN0Nna0pDUWw5Q2dvSkNRa0pjbVYwZFhKdUlHaHlaV1k3Q2drSkNYMEtDUWw5TEFvS0NRbDNjbUZ3SUNBNklHNTFiR3dzQ2drSmJHbHpkQ0FnT2lCdWRXeHNMQW9KQ1hkcFpIUm9JRG9nTUN3S0Nna0phVzVwZERvZ1puVnVZM1JwYjI0Z0tHOXdkSE1zSUc5aWFpa2dld29KQ1FsMllYSWdkR2hoZENBOUlIUm9hWE1zQ2drSkNRbHNhWE4wTEFvSkNRa0pkR2gxYldKWGFXUjBhQ0FnUFNCdmNIUnpMbmRwWkhSb0xBb0pDUWtKZEdoMWJXSklaV2xuYUhRZ1BTQnZjSFJ6TG1obGFXZG9kQ3dLQ1FrSkNYUm9kVzFpVTI5MWNtTmxJRDBnYjNCMGN5NXpiM1Z5WTJVN0Nnb0pDUWt2TDBKMWFXeGtJR3hwYzNRZ2MzUnlkV04wZFhKbENna0pDV3hwYzNRZ1BTQW5KenNLQ2drSkNXWnZjaUFvZG1GeUlHNGdQU0F3T3lCdUlEd2diMkpxTG1keWIzVndMbXhsYm1kMGFEc2diaXNyS1NCN0Nna0pDUWxzYVhOMElDczlJQ2M4YkdrK1BHRWdjM1I1YkdVOUluZHBaSFJvT2ljZ0t5QjBhSFZ0WWxkcFpIUm9JQ3NnSjNCNE8yaGxhV2RvZERvbklDc2dkR2gxYldKSVpXbG5hSFFnS3lBbmNIZzdJaUJvY21WbVBTSnFZWFpoYzJOeWFYQjBPbXBSZFdWeWVTNW1ZVzVqZVdKdmVDNXFkVzF3ZEc4b0p5QXJJRzRnS3lBbktUc2lQand2WVQ0OEwyeHBQaWM3Q2drSkNYMEtDZ2tKQ1hSb2FYTXVkM0poY0NBOUlDUW9KenhrYVhZZ2FXUTlJbVpoYm1ONVltOTRMWFJvZFcxaWN5SStQQzlrYVhZK0p5a3VZV1JrUTJ4aGMzTW9iM0IwY3k1d2IzTnBkR2x2YmlrdVlYQndaVzVrVkc4b0oySnZaSGtuS1RzS0NRa0pkR2hwY3k1c2FYTjBJRDBnSkNnblBIVnNQaWNnS3lCc2FYTjBJQ3NnSnp3dmRXdytKeWt1WVhCd1pXNWtWRzhvZEdocGN5NTNjbUZ3S1RzS0Nna0pDUzh2VEc5aFpDQmxZV05vSUhSb2RXMWlibUZwYkFvSkNRa2tMbVZoWTJnb2IySnFMbWR5YjNWd0xDQm1kVzVqZEdsdmJpQW9hU2tnZXdvSkNRa0pkbUZ5SUdoeVpXWWdQU0IwYUhWdFlsTnZkWEpqWlNnZ2IySnFMbWR5YjNWd1d5QnBJRjBnS1RzS0Nna0pDUWxwWmlBb0lXaHlaV1lwSUhzS0NRa0pDUWx5WlhSMWNtNDdDZ2tKQ1FsOUNnb0pDUWtKSkNnaVBHbHRaeUF2UGlJcExteHZZV1FvWm5WdVkzUnBiMjRnS0NrZ2V3b0pDUWtKQ1haaGNpQjNhV1IwYUNBZ1BTQjBhR2x6TG5kcFpIUm9MQW9KQ1FrSkNRbG9aV2xuYUhRZ1BTQjBhR2x6TG1obGFXZG9kQ3dLQ1FrSkNRa0pkMmxrZEdoU1lYUnBieXdnYUdWcFoyaDBVbUYwYVc4c0lIQmhjbVZ1ZERzS0Nna0pDUWtKYVdZZ0tDRjBhR0YwTG14cGMzUWdmSHdnSVhkcFpIUm9JSHg4SUNGb1pXbG5hSFFwSUhzS0NRa0pDUWtKY21WMGRYSnVPd29KQ1FrSkNYMEtDZ2tKQ1FrSkx5OURZV3hqZFd4aGRHVWdkR2gxYldKdVlXbHNJSGRwWkhSb0wyaGxhV2RvZENCaGJtUWdZMlZ1ZEdWeUlHbDBDZ2tKQ1FrSmQybGtkR2hTWVhScGJ5QWdQU0IzYVdSMGFDQXZJSFJvZFcxaVYybGtkR2c3Q2drSkNRa0phR1ZwWjJoMFVtRjBhVzhnUFNCb1pXbG5hSFFnTHlCMGFIVnRZa2hsYVdkb2REc0tDZ2tKQ1FrSmNHRnlaVzUwSUQwZ2RHaGhkQzVzYVhOMExtTm9hV3hrY21WdUtDa3VaWEVvYVNrdVptbHVaQ2duWVNjcE93b0tDUWtKQ1FscFppQW9kMmxrZEdoU1lYUnBieUErUFNBeElDWW1JR2hsYVdkb2RGSmhkR2x2SUQ0OUlERXBJSHNLQ1FrSkNRa0phV1lnS0hkcFpIUm9VbUYwYVc4Z1BpQm9aV2xuYUhSU1lYUnBieWtnZXdvSkNRa0pDUWtKZDJsa2RHZ2dJRDBnVFdGMGFDNW1iRzl2Y2loM2FXUjBhQ0F2SUdobGFXZG9kRkpoZEdsdktUc0tDUWtKQ1FrSkNXaGxhV2RvZENBOUlIUm9kVzFpU0dWcFoyaDBPd29LQ1FrSkNRa0pmU0JsYkhObElIc0tDUWtKQ1FrSkNYZHBaSFJvSUNBOUlIUm9kVzFpVjJsa2RHZzdDZ2tKQ1FrSkNRbG9aV2xuYUhRZ1BTQk5ZWFJvTG1ac2IyOXlLR2hsYVdkb2RDQXZJSGRwWkhSb1VtRjBhVzhwT3dvSkNRa0pDUWw5Q2drSkNRa0pmUW9LQ1FrSkNRa2tLSFJvYVhNcExtTnpjeWg3Q2drSkNRa0pDWGRwWkhSb0lDQTZJSGRwWkhSb0xBb0pDUWtKQ1Fsb1pXbG5hSFFnT2lCb1pXbG5hSFFzQ2drSkNRa0pDWFJ2Y0NBZ0lDQTZJRTFoZEdndVpteHZiM0lvZEdoMWJXSklaV2xuYUhRZ0x5QXlJQzBnYUdWcFoyaDBJQzhnTWlrc0Nna0pDUWtKQ1d4bFpuUWdJQ0E2SUUxaGRHZ3VabXh2YjNJb2RHaDFiV0pYYVdSMGFDQXZJRElnTFNCM2FXUjBhQ0F2SURJcENna0pDUWtKZlNrN0Nnb0pDUWtKQ1hCaGNtVnVkQzUzYVdSMGFDaDBhSFZ0WWxkcFpIUm9LUzVvWldsbmFIUW9kR2gxYldKSVpXbG5hSFFwT3dvS0NRa0pDUWtrS0hSb2FYTXBMbWhwWkdVb0tTNWhjSEJsYm1SVWJ5aHdZWEpsYm5RcExtWmhaR1ZKYmlnek1EQXBPd29LQ1FrSkNYMHBMbUYwZEhJb0ozTnlZeWNzSUdoeVpXWXBPd29KQ1FsOUtUc0tDZ2tKQ1M4dlUyVjBJR2x1YVhScFlXd2dkMmxrZEdnS0NRa0pkR2hwY3k1M2FXUjBhQ0E5SUhSb2FYTXViR2x6ZEM1amFHbHNaSEpsYmlncExtVnhLREFwTG05MWRHVnlWMmxrZEdnb2RISjFaU2s3Q2dvSkNRbDBhR2x6TG14cGMzUXVkMmxrZEdnb2RHaHBjeTUzYVdSMGFDQXFJQ2h2WW1vdVozSnZkWEF1YkdWdVozUm9JQ3NnTVNrcExtTnpjeWduYkdWbWRDY3NJRTFoZEdndVpteHZiM0lvSkNoM2FXNWtiM2NwTG5kcFpIUm9LQ2tnS2lBd0xqVWdMU0FvYjJKcUxtbHVaR1Y0SUNvZ2RHaHBjeTUzYVdSMGFDQXJJSFJvYVhNdWQybGtkR2dnS2lBd0xqVXBLU2s3Q2drSmZTd0tDZ2tKWW1WbWIzSmxURzloWkRvZ1puVnVZM1JwYjI0Z0tHOXdkSE1zSUc5aWFpa2dld29KQ1FrdkwxSmxiVzkyWlNCelpXeG1JR2xtSUdkaGJHeGxjbmtnWkc4Z2JtOTBJR2hoZG1VZ1lYUWdiR1ZoYzNRZ2RIZHZJR2wwWlcxekNna0pDV2xtSUNodlltb3VaM0p2ZFhBdWJHVnVaM1JvSUR3Z01pa2dld29KQ1FrSmIySnFMbWhsYkhCbGNuTXVkR2gxYldKeklEMGdabUZzYzJVN0Nnb0pDUWtKY21WMGRYSnVPd29KQ1FsOUNnb0pDUWt2TDBsdVkzSmxZWE5sSUdKdmRIUnZiU0J0WVhKbmFXNGdkRzhnWjJsMlpTQnpjR0ZqWlNCbWIzSWdkR2gxYldKekNna0pDVzlpYWk1dFlYSm5hVzViSUc5d2RITXVjRzl6YVhScGIyNGdQVDA5SUNkMGIzQW5JRDhnTUNBNklESWdYU0FyUFNBb0tHOXdkSE11YUdWcFoyaDBLU0FySURFMUtUc0tDUWw5TEFvS0NRbGhablJsY2xOb2IzYzZJR1oxYm1OMGFXOXVJQ2h2Y0hSekxDQnZZbW9wSUhzS0NRa0pMeTlEYUdWamF5QnBaaUJsZUdsemRITWdZVzVrSUdOeVpXRjBaU0J2Y2lCMWNHUmhkR1VnYkdsemRBb0pDUWxwWmlBb2RHaHBjeTVzYVhOMEtTQjdDZ2tKQ1FsMGFHbHpMbTl1VlhCa1lYUmxLRzl3ZEhNc0lHOWlhaWs3Q2dvSkNRbDlJR1ZzYzJVZ2V3b0pDUWtKZEdocGN5NXBibWwwS0c5d2RITXNJRzlpYWlrN0Nna0pDWDBLQ2drSkNTOHZVMlYwSUdGamRHbDJaU0JsYkdWdFpXNTBDZ2tKQ1hSb2FYTXViR2x6ZEM1amFHbHNaSEpsYmlncExuSmxiVzkyWlVOc1lYTnpLQ2RoWTNScGRtVW5LUzVsY1Nodlltb3VhVzVrWlhncExtRmtaRU5zWVhOektDZGhZM1JwZG1VbktUc0tDUWw5TEFvS0NRa3ZMME5sYm5SbGNpQnNhWE4wQ2drSmIyNVZjR1JoZEdVNklHWjFibU4wYVc5dUlDaHZjSFJ6TENCdlltb3BJSHNLQ1FrSmFXWWdLSFJvYVhNdWJHbHpkQ2tnZXdvSkNRa0pkR2hwY3k1c2FYTjBMbk4wYjNBb2RISjFaU2t1WVc1cGJXRjBaU2g3Q2drSkNRa0pKMnhsWm5Rbk9pQk5ZWFJvTG1ac2IyOXlLQ1FvZDJsdVpHOTNLUzUzYVdSMGFDZ3BJQ29nTUM0MUlDMGdLRzlpYWk1cGJtUmxlQ0FxSUhSb2FYTXVkMmxrZEdnZ0t5QjBhR2x6TG5kcFpIUm9JQ29nTUM0MUtTa0tDUWtKQ1gwc0lERTFNQ2s3Q2drSkNYMEtDUWw5TEFvS0NRbGlaV1p2Y21WRGJHOXpaVG9nWm5WdVkzUnBiMjRnS0NrZ2V3b0pDUWxwWmlBb2RHaHBjeTUzY21Gd0tTQjdDZ2tKQ1FsMGFHbHpMbmR5WVhBdWNtVnRiM1psS0NrN0Nna0pDWDBLQ2drSkNYUm9hWE11ZDNKaGNDQWdQU0J1ZFd4c093b0pDUWwwYUdsekxteHBjM1FnSUQwZ2JuVnNiRHNLQ1FrSmRHaHBjeTUzYVdSMGFDQTlJREE3Q2drSmZRb0pmUW9LZlNocVVYVmxjbmtwS1RzPV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2pxdWVyeS5mYW5jeWJveC5wYWNrLmpzPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtMeW9oSUdaaGJtTjVRbTk0SUhZeUxqRXVNeUJtWVc1amVXRndjSE11WTI5dElId2dabUZ1WTNsaGNIQnpMbU52YlM5bVlXNWplV0p2ZUM4amJHbGpaVzV6WlNBcUx3b29ablZ1WTNScGIyNG9RaXg0TEdZc2NTbDdkbUZ5SUhJOVppaENLU3h0UFdZb2VDa3NZajFtTG1aaGJtTjVZbTk0UFdaMWJtTjBhVzl1S0NsN1lpNXZjR1Z1TG1Gd2NHeDVLSFJvYVhNc1lYSm5kVzFsYm5SektYMHNkVDF1ZFd4c0xHNDllQzVqY21WaGRHVlViM1ZqYUNFOVBYRXNjejFtZFc1amRHbHZiaWhoS1h0eVpYUjFjbTRnWVNZbVlTNW9ZWE5QZDI1UWNtOXdaWEowZVNZbVlTQnBibk4wWVc1alpXOW1JR1o5TEhBOVpuVnVZM1JwYjI0b1lTbDdjbVYwZFhKdUlHRW1KaUp6ZEhKcGJtY2lQVDA5Wmk1MGVYQmxLR0VwZlN4RlBXWjFibU4wYVc5dUtHRXBlM0psZEhWeWJpQndLR0VwSmlZd1BHRXVhVzVrWlhoUFppZ2lKU0lwZlN4clBXWjFibU4wYVc5dUtHRXNaQ2w3ZG1GeUlHVTljR0Z5YzJWSmJuUW9ZU3d4TUNsOGZEQTdaQ1ltUlNoaEtTWW1LR1VxUFdJdVoyVjBWbWxsZDNCdmNuUW9LVnRrWFM4eE1EQXBPM0psZEhWeWJpQk5ZWFJvTG1ObGFXd29aU2w5TEhZOVpuVnVZM1JwYjI0b1lTeGlLWHR5WlhSMWNtNGdheWhoTEdJcEt5SndlQ0o5TzJZdVpYaDBaVzVrS0dJc2UzWmxjbk5wYjI0NklqSXVNUzR6SWl4a1pXWmhkV3gwY3pwN2NHRmtaR2x1WnpveE5TeHRZWEpuYVc0Nk1qQXNkMmxrZEdnNk9EQXdMR2hsYVdkb2REbzJNREFzYldsdVYybGtkR2c2TVRBd0xHMXBia2hsYVdkb2REb3hNREFzQ20xaGVGZHBaSFJvT2prNU9Ua3NiV0Y0U0dWcFoyaDBPams1T1Rrc1lYVjBiMU5wZW1VNklUQXNZWFYwYjBobGFXZG9kRG9oTVN4aGRYUnZWMmxrZEdnNklURXNZWFYwYjFKbGMybDZaVG9oTUN4aGRYUnZRMlZ1ZEdWeU9pRnVMR1pwZEZSdlZtbGxkem9oTUN4aGMzQmxZM1JTWVhScGJ6b2hNU3gwYjNCU1lYUnBiem93TGpVc2JHVm1kRkpoZEdsdk9qQXVOU3h6WTNKdmJHeHBibWM2SW1GMWRHOGlMSGR5WVhCRFUxTTZJaUlzWVhKeWIzZHpPaUV3TEdOc2IzTmxRblJ1T2lFd0xHTnNiM05sUTJ4cFkyczZJVEVzYm1WNGRFTnNhV05yT2lFeExHMXZkWE5sVjJobFpXdzZJVEFzWVhWMGIxQnNZWGs2SVRFc2NHeGhlVk53WldWa09qTkZNeXh3Y21Wc2IyRmtPak1zYlc5a1lXdzZJVEVzYkc5dmNEb2hNQ3hoYW1GNE9udGtZWFJoVkhsd1pUb2lhSFJ0YkNJc2FHVmhaR1Z5Y3pwN0lsZ3RabUZ1WTNsQ2IzZ2lPaUV3Zlgwc2FXWnlZVzFsT250elkzSnZiR3hwYm1jNkltRjFkRzhpTEhCeVpXeHZZV1E2SVRCOUxITjNaanA3ZDIxdlpHVTZJblJ5WVc1emNHRnlaVzUwSWl4aGJHeHZkMloxYkd4elkzSmxaVzQ2SW5SeWRXVWlMR0ZzYkc5M2MyTnlhWEIwWVdOalpYTnpPaUpoYkhkaGVYTWlmU3hyWlhsek9udHVaWGgwT25zeE16b2liR1ZtZENJc016UTZJblZ3SWl3ek9Ub2liR1ZtZENJc05EQTZJblZ3SW4wc0NuQnlaWFk2ZXpnNkluSnBaMmgwSWl3ek16b2laRzkzYmlJc016YzZJbkpwWjJoMElpd3pPRG9pWkc5M2JpSjlMR05zYjNObE9sc3lOMTBzY0d4aGVUcGJNekpkTEhSdloyZHNaVHBiTnpCZGZTeGthWEpsWTNScGIyNDZlMjVsZUhRNklteGxablFpTEhCeVpYWTZJbkpwWjJoMEluMHNjMk55YjJ4c1QzVjBjMmxrWlRvaE1DeHBibVJsZURvd0xIUjVjR1U2Ym5Wc2JDeG9jbVZtT201MWJHd3NZMjl1ZEdWdWREcHVkV3hzTEhScGRHeGxPbTUxYkd3c2RIQnNPbnQzY21Gd09pYzhaR2wySUdOc1lYTnpQU0ptWVc1amVXSnZlQzEzY21Gd0lpQjBZV0pKYm1SbGVEMGlMVEVpUGp4a2FYWWdZMnhoYzNNOUltWmhibU41WW05NExYTnJhVzRpUGp4a2FYWWdZMnhoYzNNOUltWmhibU41WW05NExXOTFkR1Z5SWo0OFpHbDJJR05zWVhOelBTSm1ZVzVqZVdKdmVDMXBibTVsY2lJK1BDOWthWFkrUEM5a2FYWStQQzlrYVhZK1BDOWthWFkrSnl4cGJXRm5aVG9uUEdsdFp5QmpiR0Z6Y3owaVptRnVZM2xpYjNndGFXMWhaMlVpSUhOeVl6MGllMmh5WldaOUlpQmhiSFE5SWlJZ0x6NG5MR2xtY21GdFpUb25QR2xtY21GdFpTQnBaRDBpWm1GdVkzbGliM2d0Wm5KaGJXVjdjbTVrZlNJZ2JtRnRaVDBpWm1GdVkzbGliM2d0Wm5KaGJXVjdjbTVrZlNJZ1kyeGhjM005SW1aaGJtTjVZbTk0TFdsbWNtRnRaU0lnWm5KaGJXVmliM0prWlhJOUlqQWlJSFp6Y0dGalpUMGlNQ0lnYUhOd1lXTmxQU0l3SWlCM1pXSnJhWFJCYkd4dmQwWjFiR3hUWTNKbFpXNGdiVzk2WVd4c2IzZG1kV3hzYzJOeVpXVnVJR0ZzYkc5M1JuVnNiRk5qY21WbGJpY3JDaWhtTG1KeWIzZHpaWEl1YlhOcFpUOG5JR0ZzYkc5M2RISmhibk53WVhKbGJtTjVQU0owY25WbElpYzZJaUlwS3lJK1BDOXBabkpoYldVK0lpeGxjbkp2Y2pvblBIQWdZMnhoYzNNOUltWmhibU41WW05NExXVnljbTl5SWo1VWFHVWdjbVZ4ZFdWemRHVmtJR052Ym5SbGJuUWdZMkZ1Ym05MElHSmxJR3h2WVdSbFpDNDhZbkl2UGxCc1pXRnpaU0IwY25rZ1lXZGhhVzRnYkdGMFpYSXVQQzl3UGljc1kyeHZjMlZDZEc0Nkp6eGhJSFJwZEd4bFBTSkRiRzl6WlNJZ1kyeGhjM005SW1aaGJtTjVZbTk0TFdsMFpXMGdabUZ1WTNsaWIzZ3RZMnh2YzJVaUlHaHlaV1k5SW1waGRtRnpZM0pwY0hRNk95SStQQzloUGljc2JtVjRkRG9uUEdFZ2RHbDBiR1U5SWs1bGVIUWlJR05zWVhOelBTSm1ZVzVqZVdKdmVDMXVZWFlnWm1GdVkzbGliM2d0Ym1WNGRDSWdhSEpsWmowaWFtRjJZWE5qY21sd2REbzdJajQ4YzNCaGJqNDhMM053WVc0K1BDOWhQaWNzY0hKbGRqb25QR0VnZEdsMGJHVTlJbEJ5WlhacGIzVnpJaUJqYkdGemN6MGlabUZ1WTNsaWIzZ3RibUYySUdaaGJtTjVZbTk0TFhCeVpYWWlJR2h5WldZOUltcGhkbUZ6WTNKcGNIUTZPeUkrUEhOd1lXNCtQQzl6Y0dGdVBqd3ZZVDRuZlN4dmNHVnVSV1ptWldOME9pSm1ZV1JsSWl4dmNHVnVVM0JsWldRNk1qVXdMRzl3Wlc1RllYTnBibWM2SW5OM2FXNW5JaXdLYjNCbGJrOXdZV05wZEhrNklUQXNiM0JsYmsxbGRHaHZaRG9pZW05dmJVbHVJaXhqYkc5elpVVm1abVZqZERvaVptRmtaU0lzWTJ4dmMyVlRjR1ZsWkRveU5UQXNZMnh2YzJWRllYTnBibWM2SW5OM2FXNW5JaXhqYkc5elpVOXdZV05wZEhrNklUQXNZMnh2YzJWTlpYUm9iMlE2SW5wdmIyMVBkWFFpTEc1bGVIUkZabVpsWTNRNkltVnNZWE4wYVdNaUxHNWxlSFJUY0dWbFpEb3lOVEFzYm1WNGRFVmhjMmx1WnpvaWMzZHBibWNpTEc1bGVIUk5aWFJvYjJRNkltTm9ZVzVuWlVsdUlpeHdjbVYyUldabVpXTjBPaUpsYkdGemRHbGpJaXh3Y21WMlUzQmxaV1E2TWpVd0xIQnlaWFpGWVhOcGJtYzZJbk4zYVc1bklpeHdjbVYyVFdWMGFHOWtPaUpqYUdGdVoyVlBkWFFpTEdobGJIQmxjbk02ZTI5MlpYSnNZWGs2SVRBc2RHbDBiR1U2SVRCOUxHOXVRMkZ1WTJWc09tWXVibTl2Y0N4aVpXWnZjbVZNYjJGa09tWXVibTl2Y0N4aFpuUmxja3h2WVdRNlppNXViMjl3TEdKbFptOXlaVk5vYjNjNlppNXViMjl3TEdGbWRHVnlVMmh2ZHpwbUxtNXZiM0FzWW1WbWIzSmxRMmhoYm1kbE9tWXVibTl2Y0N4aVpXWnZjbVZEYkc5elpUcG1MbTV2YjNBc1lXWjBaWEpEYkc5elpUcG1MbTV2YjNCOUxHZHliM1Z3T250OUxHOXdkSE02ZTMwc2NISmxkbWx2ZFhNNmJuVnNiQ3hqYjIxcGJtYzZiblZzYkN4amRYSnlaVzUwT201MWJHd3NDbWx6UVdOMGFYWmxPaUV4TEdselQzQmxiam9oTVN4cGMwOXdaVzVsWkRvaE1TeDNjbUZ3T201MWJHd3NjMnRwYmpwdWRXeHNMRzkxZEdWeU9tNTFiR3dzYVc1dVpYSTZiblZzYkN4d2JHRjVaWEk2ZTNScGJXVnlPbTUxYkd3c2FYTkJZM1JwZG1VNklURjlMR0ZxWVhoTWIyRmtPbTUxYkd3c2FXMW5VSEpsYkc5aFpEcHVkV3hzTEhSeVlXNXphWFJwYjI1ek9udDlMR2hsYkhCbGNuTTZlMzBzYjNCbGJqcG1kVzVqZEdsdmJpaGhMR1FwZTJsbUtHRW1KaWhtTG1selVHeGhhVzVQWW1wbFkzUW9aQ2w4ZkNoa1BYdDlLU3doTVNFOVBXSXVZMnh2YzJVb0lUQXBLU2x5WlhSMWNtNGdaaTVwYzBGeWNtRjVLR0VwZkh3b1lUMXpLR0VwUDJZb1lTa3VaMlYwS0NrNlcyRmRLU3htTG1WaFkyZ29ZU3htZFc1amRHbHZiaWhsTEdNcGUzWmhjaUJxUFh0OUxHY3NhQ3hwTEd3c2F6c2liMkpxWldOMElqMDlQV1l1ZEhsd1pTaGpLU1ltS0dNdWJtOWtaVlI1Y0dVbUppaGpQV1lvWXlrcExITW9ZeWsvS0dvOWUyaHlaV1k2WXk1a1lYUmhLQ0ptWVc1amVXSnZlQzFvY21WbUlpbDhmR011WVhSMGNpZ2lhSEpsWmlJcExIUnBkR3hsT21NdVpHRjBZU2dpWm1GdVkzbGliM2d0ZEdsMGJHVWlLWHg4WXk1aGRIUnlLQ0owYVhSc1pTSXBMR2x6Ukc5dE9pRXdMR1ZzWlcxbGJuUTZZMzBzWmk1dFpYUmhaR0YwWVNZbVppNWxlSFJsYm1Rb0lUQXNDbW9zWXk1dFpYUmhaR0YwWVNncEtTazZhajFqS1R0blBXUXVhSEpsWm54OGFpNW9jbVZtZkh3b2NDaGpLVDlqT201MWJHd3BPMmc5WkM1MGFYUnNaU0U5UFhFL1pDNTBhWFJzWlRwcUxuUnBkR3hsZkh3aUlqdHNQU2hwUFdRdVkyOXVkR1Z1ZEh4OGFpNWpiMjUwWlc1MEtUOGlhSFJ0YkNJNlpDNTBlWEJsZkh4cUxuUjVjR1U3SVd3bUptb3VhWE5FYjIwbUppaHNQV011WkdGMFlTZ2labUZ1WTNsaWIzZ3RkSGx3WlNJcExHeDhmQ2hzUFNoc1BXTXVjSEp2Y0NnaVkyeGhjM01pS1M1dFlYUmphQ2d2Wm1GdVkzbGliM2hjTGloY2R5c3BMeWtwUDJ4Yk1WMDZiblZzYkNrcE8zQW9aeWttSmloc2ZId29ZaTVwYzBsdFlXZGxLR2NwUDJ3OUltbHRZV2RsSWpwaUxtbHpVMWRHS0djcFAydzlJbk4zWmlJNklpTWlQVDA5Wnk1amFHRnlRWFFvTUNrL2JEMGlhVzVzYVc1bElqcHdLR01wSmlZb2JEMGlhSFJ0YkNJc2FUMWpLU2tzSW1GcVlYZ2lQVDA5YkNZbUtHczlaeTV6Y0d4cGRDZ3ZYSE1yTHl3eUtTeG5QV3N1YzJocFpuUW9LU3hyUFdzdWMyaHBablFvS1NrcE8ybDhmQ2dpYVc1c2FXNWxJajA5UFd3L1p6OXBQV1lvY0NobktUOW5MbkpsY0d4aFkyVW9MeTRxS0Q4OUkxdGVYSE5kS3lRcEx5d2lJaWs2WnlrNmFpNXBjMFJ2YlNZbUtHazlZeWs2SW1oMGJXd2lQVDA5YkQ5cFBXYzZJV3dtSmlnaFp5WW1DbW91YVhORWIyMHBKaVlvYkQwaWFXNXNhVzVsSWl4cFBXTXBLVHRtTG1WNGRHVnVaQ2hxTEh0b2NtVm1PbWNzZEhsd1pUcHNMR052Ym5SbGJuUTZhU3gwYVhSc1pUcG9MSE5sYkdWamRHOXlPbXQ5S1R0aFcyVmRQV3A5S1N4aUxtOXdkSE05Wmk1bGVIUmxibVFvSVRBc2UzMHNZaTVrWldaaGRXeDBjeXhrS1N4a0xtdGxlWE1oUFQxeEppWW9ZaTV2Y0hSekxtdGxlWE05WkM1clpYbHpQMll1WlhoMFpXNWtLSHQ5TEdJdVpHVm1ZWFZzZEhNdWEyVjVjeXhrTG10bGVYTXBPaUV4S1N4aUxtZHliM1Z3UFdFc1lpNWZjM1JoY25Rb1lpNXZjSFJ6TG1sdVpHVjRLWDBzWTJGdVkyVnNPbVoxYm1OMGFXOXVLQ2w3ZG1GeUlHRTlZaTVqYjIxcGJtYzdZU1ltSVRFaFBUMWlMblJ5YVdkblpYSW9JbTl1UTJGdVkyVnNJaWttSmloaUxtaHBaR1ZNYjJGa2FXNW5LQ2tzWWk1aGFtRjRURzloWkNZbVlpNWhhbUY0VEc5aFpDNWhZbTl5ZENncExHSXVZV3BoZUV4dllXUTliblZzYkN4aUxtbHRaMUJ5Wld4dllXUW1KaWhpTG1sdFoxQnlaV3h2WVdRdWIyNXNiMkZrUFdJdWFXMW5VSEpsYkc5aFpDNXZibVZ5Y205eVBXNTFiR3dwTEdFdWQzSmhjQ1ltWVM1M2NtRndMbk4wYjNBb0lUQXNJVEFwTG5SeWFXZG5aWElvSW05dVVtVnpaWFFpS1M1eVpXMXZkbVVvS1N4aUxtTnZiV2x1WnoxdWRXeHNMR0l1WTNWeWNtVnVkSHg4Q21JdVgyRm1kR1Z5V205dmJVOTFkQ2hoS1NsOUxHTnNiM05sT21aMWJtTjBhVzl1S0dFcGUySXVZMkZ1WTJWc0tDazdJVEVoUFQxaUxuUnlhV2RuWlhJb0ltSmxabTl5WlVOc2IzTmxJaWttSmloaUxuVnVZbWx1WkVWMlpXNTBjeWdwTEdJdWFYTkJZM1JwZG1VbUppZ2hZaTVwYzA5d1pXNThmQ0V3UFQwOVlUOG9aaWdpTG1aaGJtTjVZbTk0TFhkeVlYQWlLUzV6ZEc5d0tDRXdLUzUwY21sbloyVnlLQ0p2YmxKbGMyVjBJaWt1Y21WdGIzWmxLQ2tzWWk1ZllXWjBaWEphYjI5dFQzVjBLQ2twT2loaUxtbHpUM0JsYmoxaUxtbHpUM0JsYm1Wa1BTRXhMR0l1YVhORGJHOXphVzVuUFNFd0xHWW9JaTVtWVc1amVXSnZlQzFwZEdWdExDQXVabUZ1WTNsaWIzZ3RibUYySWlrdWNtVnRiM1psS0Nrc1lpNTNjbUZ3TG5OMGIzQW9JVEFzSVRBcExuSmxiVzkyWlVOc1lYTnpLQ0ptWVc1amVXSnZlQzF2Y0dWdVpXUWlLU3hpTG5SeVlXNXphWFJwYjI1elcySXVZM1Z5Y21WdWRDNWpiRzl6WlUxbGRHaHZaRjBvS1NrcEtYMHNjR3hoZVRwbWRXNWpkR2x2YmloaEtYdDJZWElnWkQxbWRXNWpkR2x2YmlncGUyTnNaV0Z5VkdsdFpXOTFkQ2hpTG5Cc1lYbGxjaTUwYVcxbGNpbDlMR1U5Wm5WdVkzUnBiMjRvS1h0a0tDazdZaTVqZFhKeVpXNTBKaVppTG5Cc1lYbGxjaTVwYzBGamRHbDJaU1ltS0dJdWNHeGhlV1Z5TG5ScGJXVnlQUXB6WlhSVWFXMWxiM1YwS0dJdWJtVjRkQ3hpTG1OMWNuSmxiblF1Y0d4aGVWTndaV1ZrS1NsOUxHTTlablZ1WTNScGIyNG9LWHRrS0NrN1ppZ2lZbTlrZVNJcExuVnVZbWx1WkNnaUxuQnNZWGxsY2lJcE8ySXVjR3hoZVdWeUxtbHpRV04wYVhabFBTRXhPMkl1ZEhKcFoyZGxjaWdpYjI1UWJHRjVSVzVrSWlsOU8ybG1LQ0V3UFQwOVlYeDhJV0l1Y0d4aGVXVnlMbWx6UVdOMGFYWmxKaVloTVNFOVBXRXBlMmxtS0dJdVkzVnljbVZ1ZENZbUtHSXVZM1Z5Y21WdWRDNXNiMjl3Zkh4aUxtTjFjbkpsYm5RdWFXNWtaWGc4WWk1bmNtOTFjQzVzWlc1bmRHZ3RNU2twWWk1d2JHRjVaWEl1YVhOQlkzUnBkbVU5SVRBc1ppZ2lZbTlrZVNJcExtSnBibVFvZXlKaFpuUmxjbE5vYjNjdWNHeGhlV1Z5SUc5dVZYQmtZWFJsTG5Cc1lYbGxjaUk2WlN3aWIyNURZVzVqWld3dWNHeGhlV1Z5SUdKbFptOXlaVU5zYjNObExuQnNZWGxsY2lJNll5d2lZbVZtYjNKbFRHOWhaQzV3YkdGNVpYSWlPbVI5S1N4bEtDa3NZaTUwY21sbloyVnlLQ0p2YmxCc1lYbFRkR0Z5ZENJcGZXVnNjMlVnWXlncGZTeHVaWGgwT21aMWJtTjBhVzl1S0dFcGUzWmhjaUJrUFdJdVkzVnljbVZ1ZER0a0ppWW9jQ2hoS1h4OEtHRTlaQzVrYVhKbFkzUnBiMjR1Ym1WNGRDa3NZaTVxZFcxd2RHOG9aQzVwYm1SbGVDc3hMR0VzSW01bGVIUWlLU2w5TEFwd2NtVjJPbVoxYm1OMGFXOXVLR0VwZTNaaGNpQmtQV0l1WTNWeWNtVnVkRHRrSmlZb2NDaGhLWHg4S0dFOVpDNWthWEpsWTNScGIyNHVjSEpsZGlrc1lpNXFkVzF3ZEc4b1pDNXBibVJsZUMweExHRXNJbkJ5WlhZaUtTbDlMR3AxYlhCMGJ6cG1kVzVqZEdsdmJpaGhMR1FzWlNsN2RtRnlJR005WWk1amRYSnlaVzUwTzJNbUppaGhQV3NvWVNrc1lpNWthWEpsWTNScGIyNDlaSHg4WXk1a2FYSmxZM1JwYjI1YllUNDlZeTVwYm1SbGVEOGlibVY0ZENJNkluQnlaWFlpWFN4aUxuSnZkWFJsY2oxbGZId2lhblZ0Y0hSdklpeGpMbXh2YjNBbUppZ3dQbUVtSmloaFBXTXVaM0p2ZFhBdWJHVnVaM1JvSzJFbFl5NW5jbTkxY0M1c1pXNW5kR2dwTEdFbFBXTXVaM0p2ZFhBdWJHVnVaM1JvS1N4akxtZHliM1Z3VzJGZElUMDljU1ltS0dJdVkyRnVZMlZzS0Nrc1lpNWZjM1JoY25Rb1lTa3BLWDBzY21Wd2IzTnBkR2x2YmpwbWRXNWpkR2x2YmloaExHUXBlM1poY2lCbFBXSXVZM1Z5Y21WdWRDeGpQV1UvWlM1M2NtRndPbTUxYkd3c2FqdGpKaVlvYWoxaUxsOW5aWFJRYjNOcGRHbHZiaWhrS1N4aEppWWljMk55YjJ4c0lqMDlQV0V1ZEhsd1pUOG9aR1ZzWlhSbElHb3VjRzl6YVhScGIyNHNZeTV6ZEc5d0tDRXdMQ0V3S1M1aGJtbHRZWFJsS0dvc01qQXdLU2s2S0dNdVkzTnpLR29wTEdVdWNHOXpQV1l1WlhoMFpXNWtLSHQ5TEFwbExtUnBiU3hxS1NrcGZTeDFjR1JoZEdVNlpuVnVZM1JwYjI0b1lTbDdkbUZ5SUdROVlTWW1ZUzUwZVhCbExHVTlJV1I4ZkNKdmNtbGxiblJoZEdsdmJtTm9ZVzVuWlNJOVBUMWtPMlVtSmloamJHVmhjbFJwYldWdmRYUW9kU2tzZFQxdWRXeHNLVHRpTG1selQzQmxiaVltSVhVbUppaDFQWE5sZEZScGJXVnZkWFFvWm5WdVkzUnBiMjRvS1h0MllYSWdZejFpTG1OMWNuSmxiblE3WXlZbUlXSXVhWE5EYkc5emFXNW5KaVlvWWk1M2NtRndMbkpsYlc5MlpVTnNZWE56S0NKbVlXNWplV0p2ZUMxMGJYQWlLU3dvWlh4OElteHZZV1FpUFQwOVpIeDhJbkpsYzJsNlpTSTlQVDFrSmlaakxtRjFkRzlTWlhOcGVtVXBKaVppTGw5elpYUkVhVzFsYm5OcGIyNG9LU3dpYzJOeWIyeHNJajA5UFdRbUptTXVZMkZ1VTJoeWFXNXJmSHhpTG5KbGNHOXphWFJwYjI0b1lTa3NZaTUwY21sbloyVnlLQ0p2YmxWd1pHRjBaU0lwTEhVOWJuVnNiQ2w5TEdVbUppRnVQekE2TXpBd0tTbDlMSFJ2WjJkc1pUcG1kVzVqZEdsdmJpaGhLWHRpTG1selQzQmxiaVltS0dJdVkzVnljbVZ1ZEM1bWFYUlViMVpwWlhjOUltSnZiMnhsWVc0aVBUMDlaaTUwZVhCbEtHRXBQMkU2SVdJdVkzVnljbVZ1ZEM1bWFYUlViMVpwWlhjc2JpWW1LR0l1ZDNKaGNDNXlaVzF2ZG1WQmRIUnlLQ0p6ZEhsc1pTSXBMbUZrWkVOc1lYTnpLQ0ptWVc1amVXSnZlQzEwYlhBaUtTd0tZaTUwY21sbloyVnlLQ0p2YmxWd1pHRjBaU0lwS1N4aUxuVndaR0YwWlNncEtYMHNhR2xrWlV4dllXUnBibWM2Wm5WdVkzUnBiMjRvS1h0dExuVnVZbWx1WkNnaUxteHZZV1JwYm1jaUtUdG1LQ0lqWm1GdVkzbGliM2d0Ykc5aFpHbHVaeUlwTG5KbGJXOTJaU2dwZlN4emFHOTNURzloWkdsdVp6cG1kVzVqZEdsdmJpZ3BlM1poY2lCaExHUTdZaTVvYVdSbFRHOWhaR2x1WnlncE8yRTlaaWduUEdScGRpQnBaRDBpWm1GdVkzbGliM2d0Ykc5aFpHbHVaeUkrUEdScGRqNDhMMlJwZGo0OEwyUnBkajRuS1M1amJHbGpheWhpTG1OaGJtTmxiQ2t1WVhCd1pXNWtWRzhvSW1KdlpIa2lLVHR0TG1KcGJtUW9JbXRsZVdSdmQyNHViRzloWkdsdVp5SXNablZ1WTNScGIyNG9ZU2w3YVdZb01qYzlQVDBvWVM1M2FHbGphSHg4WVM1clpYbERiMlJsS1NsaExuQnlaWFpsYm5SRVpXWmhkV3gwS0Nrc1lpNWpZVzVqWld3b0tYMHBPMkl1WkdWbVlYVnNkSE11Wm1sNFpXUjhmQ2hrUFdJdVoyVjBWbWxsZDNCdmNuUW9LU3hoTG1OemN5aDdjRzl6YVhScGIyNDZJbUZpYzI5c2RYUmxJaXgwYjNBNk1DNDFLbVF1YUN0a0xua3NiR1ZtZERvd0xqVXFaQzUzSzJRdWVIMHBLWDBzWjJWMFZtbGxkM0J2Y25RNlpuVnVZM1JwYjI0b0tYdDJZWElnWVQxaUxtTjFjbkpsYm5RbUptSXVZM1Z5Y21WdWRDNXNiMk5yWldSOGZBb2hNU3hrUFh0NE9uSXVjMk55YjJ4c1RHVm1kQ2dwTEhrNmNpNXpZM0p2Ykd4VWIzQW9LWDA3WVQ4b1pDNTNQV0ZiTUYwdVkyeHBaVzUwVjJsa2RHZ3NaQzVvUFdGYk1GMHVZMnhwWlc1MFNHVnBaMmgwS1Rvb1pDNTNQVzRtSmtJdWFXNXVaWEpYYVdSMGFEOUNMbWx1Ym1WeVYybGtkR2c2Y2k1M2FXUjBhQ2dwTEdRdWFEMXVKaVpDTG1sdWJtVnlTR1ZwWjJoMFAwSXVhVzV1WlhKSVpXbG5hSFE2Y2k1b1pXbG5hSFFvS1NrN2NtVjBkWEp1SUdSOUxIVnVZbWx1WkVWMlpXNTBjenBtZFc1amRHbHZiaWdwZTJJdWQzSmhjQ1ltY3loaUxuZHlZWEFwSmlaaUxuZHlZWEF1ZFc1aWFXNWtLQ0l1Wm1JaUtUdHRMblZ1WW1sdVpDZ2lMbVppSWlrN2NpNTFibUpwYm1Rb0lpNW1ZaUlwZlN4aWFXNWtSWFpsYm5Sek9tWjFibU4wYVc5dUtDbDdkbUZ5SUdFOVlpNWpkWEp5Wlc1MExHUTdZU1ltS0hJdVltbHVaQ2dpYjNKcFpXNTBZWFJwYjI1amFHRnVaMlV1Wm1JaUt5aHVQeUlpT2lJZ2NtVnphWHBsTG1aaUlpa3JLR0V1WVhWMGIwTmxiblJsY2lZbUlXRXViRzlqYTJWa1B5SWdjMk55YjJ4c0xtWmlJam9pSWlrc1lpNTFjR1JoZEdVcExDaGtQV0V1YTJWNWN5a21KbTB1WW1sdVpDZ2lhMlY1Wkc5M2JpNW1ZaUlzWm5WdVkzUnBiMjRvWlNsN2RtRnlJR005WlM1M2FHbGphSHg4WlM1clpYbERiMlJsTEdvOUNtVXVkR0Z5WjJWMGZIeGxMbk55WTBWc1pXMWxiblE3YVdZb01qYzlQVDFqSmlaaUxtTnZiV2x1WnlseVpYUjFjbTRoTVRzaFpTNWpkSEpzUzJWNUppWW9JV1V1WVd4MFMyVjVKaVloWlM1emFHbG1kRXRsZVNZbUlXVXViV1YwWVV0bGVTWW1LQ0ZxZkh3aGFpNTBlWEJsSmlZaFppaHFLUzVwY3lnaVcyTnZiblJsYm5SbFpHbDBZV0pzWlYwaUtTa3BKaVptTG1WaFkyZ29aQ3htZFc1amRHbHZiaWhrTEdvcGUybG1LREU4WVM1bmNtOTFjQzVzWlc1bmRHZ21KbXBiWTEwaFBUMXhLWEpsZEhWeWJpQmlXMlJkS0dwYlkxMHBMR1V1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LU3doTVR0cFppZ3RNVHhtTG1sdVFYSnlZWGtvWXl4cUtTbHlaWFIxY200Z1lsdGtYU2dwTEdVdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1N3aE1YMHBmU2tzWmk1bWJpNXRiM1Z6Wlhkb1pXVnNKaVpoTG0xdmRYTmxWMmhsWld3bUptSXVkM0poY0M1aWFXNWtLQ0p0YjNWelpYZG9aV1ZzTG1aaUlpeG1kVzVqZEdsdmJpaGtMR01zYWl4bktYdG1iM0lvZG1GeUlHZzlaaWhrTG5SaGNtZGxkSHg4Ym5Wc2JDa3NhVDBoTVR0b0xteGxibWQwYUNZbUlXa21KaUZvTG1sektDSXVabUZ1WTNsaWIzZ3RjMnRwYmlJcEppWWhhQzVwY3lnaUxtWmhibU41WW05NExYZHlZWEFpS1RzcGFUMW9XekJkSmlZaEtHaGJNRjB1YzNSNWJHVXViM1psY21ac2IzY21KZ29pYUdsa1pHVnVJajA5UFdoYk1GMHVjM1I1YkdVdWIzWmxjbVpzYjNjcEppWW9hRnN3WFM1amJHbGxiblJYYVdSMGFDWW1hRnN3WFM1elkzSnZiR3hYYVdSMGFENW9XekJkTG1Oc2FXVnVkRmRwWkhSb2ZIeG9XekJkTG1Oc2FXVnVkRWhsYVdkb2RDWW1hRnN3WFM1elkzSnZiR3hJWldsbmFIUSthRnN3WFM1amJHbGxiblJJWldsbmFIUXBMR2c5Wmlob0tTNXdZWEpsYm5Rb0tUdHBaaWd3SVQwOVl5WW1JV2ttSmpFOFlpNW5jbTkxY0M1c1pXNW5kR2dtSmlGaExtTmhibE5vY21sdWF5bDdhV1lvTUR4bmZId3dQR29wWWk1d2NtVjJLREE4Wno4aVpHOTNiaUk2SW14bFpuUWlLVHRsYkhObElHbG1LREErWjN4OE1ENXFLV0l1Ym1WNGRDZ3dQbWMvSW5Wd0lqb2ljbWxuYUhRaUtUdGtMbkJ5WlhabGJuUkVaV1poZFd4MEtDbDlmU2twZlN4MGNtbG5aMlZ5T21aMWJtTjBhVzl1S0dFc1pDbDdkbUZ5SUdVc1l6MWtmSHhpTG1OdmJXbHVaM3g4WWk1amRYSnlaVzUwTzJsbUtHTXBlMll1YVhOR2RXNWpkR2x2YmloalcyRmRLU1ltS0dVOVkxdGhYUzVoY0hCc2VTaGpMRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLR0Z5WjNWdFpXNTBjeXd4S1NrcE8ybG1LQ0V4UFQwOVpTbHlaWFIxY200aE1UdGpMbWhsYkhCbGNuTW1KbVl1WldGamFDaGpMbWhsYkhCbGNuTXNablZ1WTNScGIyNG9aQ3dLWlNsN1pTWW1LR0l1YUdWc2NHVnljMXRrWFNZbVppNXBjMFoxYm1OMGFXOXVLR0l1YUdWc2NHVnljMXRrWFZ0aFhTa3BKaVlvWlQxbUxtVjRkR1Z1WkNnaE1DeDdmU3hpTG1obGJIQmxjbk5iWkYwdVpHVm1ZWFZzZEhNc1pTa3NZaTVvWld4d1pYSnpXMlJkVzJGZEtHVXNZeWtwZlNrN1ppNWxkbVZ1ZEM1MGNtbG5aMlZ5S0dFcklpNW1ZaUlwZlgwc2FYTkpiV0ZuWlRwbWRXNWpkR2x2YmloaEtYdHlaWFIxY200Z2NDaGhLU1ltWVM1dFlYUmphQ2d2S0Y1a1lYUmhPbWx0WVdkbFhDOHVLaXdwZkNoY0xpaHFjQ2hsZkdkOFpXY3BmR2RwWm54d2JtZDhZbTF3ZkhkbFluQXBLQ2hjUDN3aktTNHFLVDhrS1M5cEtYMHNhWE5UVjBZNlpuVnVZM1JwYjI0b1lTbDdjbVYwZFhKdUlIQW9ZU2ttSm1FdWJXRjBZMmdvTDF3dUtITjNaaWtvS0Z3L2ZDTXBMaW9wUHlRdmFTbDlMRjl6ZEdGeWREcG1kVzVqZEdsdmJpaGhLWHQyWVhJZ1pEMTdmU3hsTEdNc1lUMXJLR0VwTzJVOVlpNW5jbTkxY0Z0aFhYeDhiblZzYkR0cFppZ2haU2x5WlhSMWNtNGhNVHRrUFdZdVpYaDBaVzVrS0NFd0xIdDlMR0l1YjNCMGN5eGxLVHRsUFdRdWJXRnlaMmx1TzJNOVpDNXdZV1JrYVc1bk95SnVkVzFpWlhJaVBUMDlaaTUwZVhCbEtHVXBKaVlvWkM1dFlYSm5hVzQ5VzJVc1pTeGxMR1ZkS1RzaWJuVnRZbVZ5SWowOVBXWXVkSGx3WlNoaktTWW1DaWhrTG5CaFpHUnBibWM5VzJNc1l5eGpMR05kS1R0a0xtMXZaR0ZzSmlabUxtVjRkR1Z1WkNnaE1DeGtMSHRqYkc5elpVSjBiam9oTVN4amJHOXpaVU5zYVdOck9pRXhMRzVsZUhSRGJHbGphem9oTVN4aGNuSnZkM002SVRFc2JXOTFjMlZYYUdWbGJEb2hNU3hyWlhsek9tNTFiR3dzYUdWc2NHVnljenA3YjNabGNteGhlVHA3WTJ4dmMyVkRiR2xqYXpvaE1YMTlmU2s3WkM1aGRYUnZVMmw2WlNZbUtHUXVZWFYwYjFkcFpIUm9QV1F1WVhWMGIwaGxhV2RvZEQwaE1DazdJbUYxZEc4aVBUMDlaQzUzYVdSMGFDWW1LR1F1WVhWMGIxZHBaSFJvUFNFd0tUc2lZWFYwYnlJOVBUMWtMbWhsYVdkb2RDWW1LR1F1WVhWMGIwaGxhV2RvZEQwaE1DazdaQzVuY205MWNEMWlMbWR5YjNWd08yUXVhVzVrWlhnOVlUdGlMbU52YldsdVp6MWtPMmxtS0NFeFBUMDlZaTUwY21sbloyVnlLQ0ppWldadmNtVk1iMkZrSWlrcFlpNWpiMjFwYm1jOWJuVnNiRHRsYkhObGUyTTlaQzUwZVhCbE8yVTlaQzVvY21WbU8ybG1LQ0ZqS1hKbGRIVnliaUJpTG1OdmJXbHVaejF1ZFd4c0xHSXVZM1Z5Y21WdWRDWW1ZaTV5YjNWMFpYSW1KaUpxZFcxd2RHOGlJVDA5WWk1eWIzVjBaWEkvS0dJdVkzVnljbVZ1ZEM1cGJtUmxlRDFoTEdKYllpNXliM1YwWlhKZEtHSXVaR2x5WldOMGFXOXVLU2s2SVRFN1lpNXBjMEZqZEdsMlpUMEtJVEE3YVdZb0ltbHRZV2RsSWowOVBXTjhmQ0p6ZDJZaVBUMDlZeWxrTG1GMWRHOUlaV2xuYUhROVpDNWhkWFJ2VjJsa2RHZzlJVEVzWkM1elkzSnZiR3hwYm1jOUluWnBjMmxpYkdVaU95SnBiV0ZuWlNJOVBUMWpKaVlvWkM1aGMzQmxZM1JTWVhScGJ6MGhNQ2s3SW1sbWNtRnRaU0k5UFQxakppWnVKaVlvWkM1elkzSnZiR3hwYm1jOUluTmpjbTlzYkNJcE8yUXVkM0poY0QxbUtHUXVkSEJzTG5keVlYQXBMbUZrWkVOc1lYTnpLQ0ptWVc1amVXSnZlQzBpS3lodVB5SnRiMkpwYkdVaU9pSmtaWE5yZEc5d0lpa3JJaUJtWVc1amVXSnZlQzEwZVhCbExTSXJZeXNpSUdaaGJtTjVZbTk0TFhSdGNDQWlLMlF1ZDNKaGNFTlRVeWt1WVhCd1pXNWtWRzhvWkM1d1lYSmxiblI4ZkNKaWIyUjVJaWs3Wmk1bGVIUmxibVFvWkN4N2MydHBianBtS0NJdVptRnVZM2xpYjNndGMydHBiaUlzWkM1M2NtRndLU3h2ZFhSbGNqcG1LQ0l1Wm1GdVkzbGliM2d0YjNWMFpYSWlMR1F1ZDNKaGNDa3NhVzV1WlhJNlppZ2lMbVpoYm1ONVltOTRMV2x1Ym1WeUlpeGtMbmR5WVhBcGZTazdaaTVsWVdOb0tGc2lWRzl3SWl3aVVtbG5hSFFpTENKQ2IzUjBiMjBpTENKTVpXWjBJbDBzWm5WdVkzUnBiMjRvWVN4aUtYdGtMbk5yYVc0dVkzTnpLQ0p3WVdSa2FXNW5JaXRpTEhZb1pDNXdZV1JrYVc1blcyRmRLU2w5S1R0aUxuUnlhV2RuWlhJb0ltOXVVbVZoWkhraUtUc0thV1lvSW1sdWJHbHVaU0k5UFQxamZId2lhSFJ0YkNJOVBUMWpLWHRwWmlnaFpDNWpiMjUwWlc1MGZId2haQzVqYjI1MFpXNTBMbXhsYm1kMGFDbHlaWFIxY200Z1lpNWZaWEp5YjNJb0ltTnZiblJsYm5RaUtYMWxiSE5sSUdsbUtDRmxLWEpsZEhWeWJpQmlMbDlsY25KdmNpZ2lhSEpsWmlJcE95SnBiV0ZuWlNJOVBUMWpQMkl1WDJ4dllXUkpiV0ZuWlNncE9pSmhhbUY0SWowOVBXTS9ZaTVmYkc5aFpFRnFZWGdvS1RvaWFXWnlZVzFsSWowOVBXTS9ZaTVmYkc5aFpFbG1jbUZ0WlNncE9tSXVYMkZtZEdWeVRHOWhaQ2dwZlgwc1gyVnljbTl5T21aMWJtTjBhVzl1S0dFcGUyWXVaWGgwWlc1a0tHSXVZMjl0YVc1bkxIdDBlWEJsT2lKb2RHMXNJaXhoZFhSdlYybGtkR2c2SVRBc1lYVjBiMGhsYVdkb2REb2hNQ3h0YVc1WGFXUjBhRG93TEcxcGJraGxhV2RvZERvd0xITmpjbTlzYkdsdVp6b2libThpTEdoaGMwVnljbTl5T21Fc1kyOXVkR1Z1ZERwaUxtTnZiV2x1Wnk1MGNHd3VaWEp5YjNKOUtUdGlMbDloWm5SbGNreHZZV1FvS1gwc1gyeHZZV1JKYldGblpUcG1kVzVqZEdsdmJpZ3BlM1poY2lCaFBXSXVhVzFuVUhKbGJHOWhaRDF1WlhjZ1NXMWhaMlU3WVM1dmJteHZZV1E5Wm5WdVkzUnBiMjRvS1h0MGFHbHpMbTl1Ykc5aFpEMTBhR2x6TG05dVpYSnliM0k5Ym5Wc2JEdGlMbU52YldsdVp5NTNhV1IwYUQwS2RHaHBjeTUzYVdSMGFEdGlMbU52YldsdVp5NW9aV2xuYUhROWRHaHBjeTVvWldsbmFIUTdZaTVmWVdaMFpYSk1iMkZrS0NsOU8yRXViMjVsY25KdmNqMW1kVzVqZEdsdmJpZ3BlM1JvYVhNdWIyNXNiMkZrUFhSb2FYTXViMjVsY25KdmNqMXVkV3hzTzJJdVgyVnljbTl5S0NKcGJXRm5aU0lwZlR0aExuTnlZejFpTG1OdmJXbHVaeTVvY21WbU95RXdJVDA5WVM1amIyMXdiR1YwWlNZbVlpNXphRzkzVEc5aFpHbHVaeWdwZlN4ZmJHOWhaRUZxWVhnNlpuVnVZM1JwYjI0b0tYdDJZWElnWVQxaUxtTnZiV2x1Wnp0aUxuTm9iM2RNYjJGa2FXNW5LQ2s3WWk1aGFtRjRURzloWkQxbUxtRnFZWGdvWmk1bGVIUmxibVFvZTMwc1lTNWhhbUY0TEh0MWNtdzZZUzVvY21WbUxHVnljbTl5T21aMWJtTjBhVzl1S0dFc1pTbDdZaTVqYjIxcGJtY21KaUpoWW05eWRDSWhQVDFsUDJJdVgyVnljbTl5S0NKaGFtRjRJaXhoS1RwaUxtaHBaR1ZNYjJGa2FXNW5LQ2w5TEhOMVkyTmxjM002Wm5WdVkzUnBiMjRvWkN4bEtYc2ljM1ZqWTJWemN5STlQVDFsSmlZb1lTNWpiMjUwWlc1MFBXUXNZaTVmWVdaMFpYSk1iMkZrS0NrcGZYMHBLWDBzWDJ4dllXUkpabkpoYldVNlpuVnVZM1JwYjI0b0tYdDJZWElnWVQxaUxtTnZiV2x1Wnl4a1BXWW9ZUzUwY0d3dWFXWnlZVzFsTG5KbGNHeGhZMlVvTDF4N2NtNWtYSDB2Wnl3S0tHNWxkeUJFWVhSbEtTNW5aWFJVYVcxbEtDa3BLUzVoZEhSeUtDSnpZM0p2Ykd4cGJtY2lMRzQvSW1GMWRHOGlPbUV1YVdaeVlXMWxMbk5qY205c2JHbHVaeWt1WVhSMGNpZ2ljM0pqSWl4aExtaHlaV1lwTzJZb1lTNTNjbUZ3S1M1aWFXNWtLQ0p2YmxKbGMyVjBJaXhtZFc1amRHbHZiaWdwZTNSeWVYdG1LSFJvYVhNcExtWnBibVFvSW1sbWNtRnRaU0lwTG1ocFpHVW9LUzVoZEhSeUtDSnpjbU1pTENJdkwyRmliM1YwT21Kc1lXNXJJaWt1Wlc1a0tDa3VaVzF3ZEhrb0tYMWpZWFJqYUNoaEtYdDlmU2s3WVM1cFpuSmhiV1V1Y0hKbGJHOWhaQ1ltS0dJdWMyaHZkMHh2WVdScGJtY29LU3hrTG05dVpTZ2liRzloWkNJc1puVnVZM1JwYjI0b0tYdG1LSFJvYVhNcExtUmhkR0VvSW5KbFlXUjVJaXd4S1R0dWZIeG1LSFJvYVhNcExtSnBibVFvSW14dllXUXVabUlpTEdJdWRYQmtZWFJsS1R0bUtIUm9hWE1wTG5CaGNtVnVkSE1vSWk1bVlXNWplV0p2ZUMxM2NtRndJaWt1ZDJsa2RHZ29JakV3TUNVaUtTNXlaVzF2ZG1WRGJHRnpjeWdpWm1GdVkzbGliM2d0ZEcxd0lpa3VjMmh2ZHlncE8ySXVYMkZtZEdWeVRHOWhaQ2dwZlNrcE8yRXVZMjl1ZEdWdWREMWtMbUZ3Y0dWdVpGUnZLR0V1YVc1dVpYSXBPMkV1YVdaeVlXMWxMbkJ5Wld4dllXUjhmR0l1WDJGbWRHVnlURzloWkNncGZTeGZjSEpsYkc5aFpFbHRZV2RsY3pwbWRXNWpkR2x2YmlncGUzWmhjaUJoUFFwaUxtZHliM1Z3TEdROVlpNWpkWEp5Wlc1MExHVTlZUzVzWlc1bmRHZ3NZejFrTG5CeVpXeHZZV1EvVFdGMGFDNXRhVzRvWkM1d2NtVnNiMkZrTEdVdE1TazZNQ3htTEdjN1ptOXlLR2M5TVR0blBEMWpPMmNyUFRFcFpqMWhXeWhrTG1sdVpHVjRLMmNwSldWZExDSnBiV0ZuWlNJOVBUMW1MblI1Y0dVbUptWXVhSEpsWmlZbUtDaHVaWGNnU1cxaFoyVXBMbk55WXoxbUxtaHlaV1lwZlN4ZllXWjBaWEpNYjJGa09tWjFibU4wYVc5dUtDbDdkbUZ5SUdFOVlpNWpiMjFwYm1jc1pEMWlMbU4xY25KbGJuUXNaU3hqTEdvc1p5eG9PMkl1YUdsa1pVeHZZV1JwYm1jb0tUdHBaaWhoSmlZaE1TRTlQV0l1YVhOQlkzUnBkbVVwYVdZb0lURTlQVDFpTG5SeWFXZG5aWElvSW1GbWRHVnlURzloWkNJc1lTeGtLU2xoTG5keVlYQXVjM1J2Y0NnaE1Da3VkSEpwWjJkbGNpZ2liMjVTWlhObGRDSXBMbkpsYlc5MlpTZ3BMR0l1WTI5dGFXNW5QVzUxYkd3N1pXeHpaWHRrSmlZb1lpNTBjbWxuWjJWeUtDSmlaV1p2Y21WRGFHRnVaMlVpTEdRcExHUXVkM0poY0M1emRHOXdLQ0V3S1M1eVpXMXZkbVZEYkdGemN5Z2labUZ1WTNsaWIzZ3RiM0JsYm1Wa0lpa3VabWx1WkNnaUxtWmhibU41WW05NExXbDBaVzBzSUM1bVlXNWplV0p2ZUMxdVlYWWlLUzV5WlcxdmRtVW9LU2s3WWk1MWJtSnBibVJGZG1WdWRITW9LVHNLWlQxaExtTnZiblJsYm5RN1l6MWhMblI1Y0dVN2FqMWhMbk5qY205c2JHbHVaenRtTG1WNGRHVnVaQ2hpTEh0M2NtRndPbUV1ZDNKaGNDeHphMmx1T21FdWMydHBiaXh2ZFhSbGNqcGhMbTkxZEdWeUxHbHVibVZ5T21FdWFXNXVaWElzWTNWeWNtVnVkRHBoTEhCeVpYWnBiM1Z6T21SOUtUdG5QV0V1YUhKbFpqdHpkMmwwWTJnb1l5bDdZMkZ6WlNBaWFXNXNhVzVsSWpwallYTmxJQ0poYW1GNElqcGpZWE5sSUNKb2RHMXNJanBoTG5ObGJHVmpkRzl5UDJVOVppZ2lQR1JwZGo0aUtTNW9kRzFzS0dVcExtWnBibVFvWVM1elpXeGxZM1J2Y2lrNmN5aGxLU1ltS0dVdVpHRjBZU2dpWm1GdVkzbGliM2d0Y0d4aFkyVm9iMnhrWlhJaUtYeDhaUzVrWVhSaEtDSm1ZVzVqZVdKdmVDMXdiR0ZqWldodmJHUmxjaUlzWmlnblBHUnBkaUJqYkdGemN6MGlabUZ1WTNsaWIzZ3RjR3hoWTJWb2IyeGtaWElpUGp3dlpHbDJQaWNwTG1sdWMyVnlkRUZtZEdWeUtHVXBMbWhwWkdVb0tTa3NaVDFsTG5Ob2IzY29LUzVrWlhSaFkyZ29LU3hoTG5keVlYQXVZbWx1WkNnaWIyNVNaWE5sZENJc1puVnVZM1JwYjI0b0tYdG1LSFJvYVhNcExtWnBibVFvWlNrdWJHVnVaM1JvSmlabExtaHBaR1VvS1M1eVpYQnNZV05sUVd4c0tHVXVaR0YwWVNnaVptRnVZM2xpYjNndGNHeGhZMlZvYjJ4a1pYSWlLU2t1WkdGMFlTZ2labUZ1WTNsaWIzZ3RjR3hoWTJWb2IyeGtaWElpTEFvaE1TbDlLU2s3WW5KbFlXczdZMkZ6WlNBaWFXMWhaMlVpT21VOVlTNTBjR3d1YVcxaFoyVXVjbVZ3YkdGalpTZ2llMmh5WldaOUlpeG5LVHRpY21WaGF6dGpZWE5sSUNKemQyWWlPbVU5Snp4dlltcGxZM1FnYVdROUltWmhibU41WW05NExYTjNaaUlnWTJ4aGMzTnBaRDBpWTJ4emFXUTZSREkzUTBSQ05rVXRRVVUyUkMweE1XTm1MVGsyUWpndE5EUTBOVFV6TlRRd01EQXdJaUIzYVdSMGFEMGlNVEF3SlNJZ2FHVnBaMmgwUFNJeE1EQWxJajQ4Y0dGeVlXMGdibUZ0WlQwaWJXOTJhV1VpSUhaaGJIVmxQU0luSzJjckp5SStQQzl3WVhKaGJUNG5MR2c5SWlJc1ppNWxZV05vS0dFdWMzZG1MR1oxYm1OMGFXOXVLR0VzWWlsN1pTczlKenh3WVhKaGJTQnVZVzFsUFNJbksyRXJKeUlnZG1Gc2RXVTlJaWNyWWlzbklqNDhMM0JoY21GdFBpYzdhQ3M5SWlBaUsyRXJKejBpSnl0aUt5Y2lKMzBwTEdVclBTYzhaVzFpWldRZ2MzSmpQU0luSzJjckp5SWdkSGx3WlQwaVlYQndiR2xqWVhScGIyNHZlQzF6YUc5amEzZGhkbVV0Wm14aGMyZ2lJSGRwWkhSb1BTSXhNREFsSWlCb1pXbG5hSFE5SWpFd01DVWlKeXRvS3lJK1BDOWxiV0psWkQ0OEwyOWlhbVZqZEQ0aWZTZ2hjeWhsS1h4OElXVXVjR0Z5Wlc1MEtDa3VhWE1vWVM1cGJtNWxjaWtwSmlaaExtbHVibVZ5TG1Gd2NHVnVaQ2hsS1R0aUxuUnlhV2RuWlhJb0ltSmxabTl5WlZOb2IzY2lLVHNLWVM1cGJtNWxjaTVqYzNNb0ltOTJaWEptYkc5M0lpd2llV1Z6SWowOVBXby9Jbk5qY205c2JDSTZJbTV2SWowOVBXby9JbWhwWkdSbGJpSTZhaWs3WWk1ZmMyVjBSR2x0Wlc1emFXOXVLQ2s3WWk1eVpYQnZjMmwwYVc5dUtDazdZaTVwYzA5d1pXNDlJVEU3WWk1amIyMXBibWM5Ym5Wc2JEdGlMbUpwYm1SRmRtVnVkSE1vS1R0cFppaGlMbWx6VDNCbGJtVmtLWHRwWmloa0xuQnlaWFpOWlhSb2IyUXBZaTUwY21GdWMybDBhVzl1YzF0a0xuQnlaWFpOWlhSb2IyUmRLQ2w5Wld4elpTQm1LQ0l1Wm1GdVkzbGliM2d0ZDNKaGNDSXBMbTV2ZENoaExuZHlZWEFwTG5OMGIzQW9JVEFwTG5SeWFXZG5aWElvSW05dVVtVnpaWFFpS1M1eVpXMXZkbVVvS1R0aUxuUnlZVzV6YVhScGIyNXpXMkl1YVhOUGNHVnVaV1EvWVM1dVpYaDBUV1YwYUc5a09tRXViM0JsYmsxbGRHaHZaRjBvS1R0aUxsOXdjbVZzYjJGa1NXMWhaMlZ6S0NsOWZTeGZjMlYwUkdsdFpXNXphVzl1T21aMWJtTjBhVzl1S0NsN2RtRnlJR0U5WWk1blpYUldhV1YzY0c5eWRDZ3BMR1E5TUN4bFBTRXhMR005SVRFc1pUMWlMbmR5WVhBc2FqMWlMbk5yYVc0c1p6MWlMbWx1Ym1WeUxHZzlZaTVqZFhKeVpXNTBMR005YUM1M2FXUjBhQ3hwUFdndWFHVnBaMmgwTEd3OWFDNXRhVzVYYVdSMGFDeDBQV2d1YldsdVNHVnBaMmgwTEcwOWFDNXRZWGhYYVdSMGFDd0tiajFvTG0xaGVFaGxhV2RvZEN4eVBXZ3VjMk55YjJ4c2FXNW5MSEE5YUM1elkzSnZiR3hQZFhSemFXUmxQMmd1YzJOeWIyeHNZbUZ5VjJsa2RHZzZNQ3gzUFdndWJXRnlaMmx1TEhrOWF5aDNXekZkSzNkYk0xMHBMSEU5YXloM1d6QmRLM2RiTWwwcExIZ3NlaXh6TEVNc1FTeEdMRUlzUkN4MU8yVXVZV1JrS0dvcExtRmtaQ2huS1M1M2FXUjBhQ2dpWVhWMGJ5SXBMbWhsYVdkb2RDZ2lZWFYwYnlJcExuSmxiVzkyWlVOc1lYTnpLQ0ptWVc1amVXSnZlQzEwYlhBaUtUdDNQV3NvYWk1dmRYUmxjbGRwWkhSb0tDRXdLUzFxTG5kcFpIUm9LQ2twTzNnOWF5aHFMbTkxZEdWeVNHVnBaMmgwS0NFd0tTMXFMbWhsYVdkb2RDZ3BLVHQ2UFhrcmR6dHpQWEVyZUR0RFBVVW9ZeWsvS0dFdWR5MTZLU3ByS0dNcEx6RXdNRHBqTzBFOVJTaHBLVDhvWVM1b0xYTXBLbXNvYVNrdk1UQXdPbWs3YVdZb0ltbG1jbUZ0WlNJOVBUMW9MblI1Y0dVcGUybG1LSFU5YUM1amIyNTBaVzUwTEdndVlYVjBiMGhsYVdkb2RDWW1NVDA5UFhVdVpHRjBZU2dpY21WaFpIa2lLU2wwY25sN2RWc3dYUzVqYjI1MFpXNTBWMmx1Wkc5M0xtUnZZM1Z0Wlc1MExteHZZMkYwYVc5dUppWW9aeTUzYVdSMGFDaERLUzVvWldsbmFIUW9PVGs1T1Nrc1JqMTFMbU52Ym5SbGJuUnpLQ2t1Wm1sdVpDZ2lZbTlrZVNJcExIQW1Ka1l1WTNOektDSnZkbVZ5Wm14dmR5MTRJaXdLSW1ocFpHUmxiaUlwTEVFOVJpNW9aV2xuYUhRb0tTbDlZMkYwWTJnb1J5bDdmWDFsYkhObElHbG1LR2d1WVhWMGIxZHBaSFJvZkh4b0xtRjFkRzlJWldsbmFIUXBaeTVoWkdSRGJHRnpjeWdpWm1GdVkzbGliM2d0ZEcxd0lpa3NhQzVoZFhSdlYybGtkR2g4ZkdjdWQybGtkR2dvUXlrc2FDNWhkWFJ2U0dWcFoyaDBmSHhuTG1obGFXZG9kQ2hCS1N4b0xtRjFkRzlYYVdSMGFDWW1LRU05Wnk1M2FXUjBhQ2dwS1N4b0xtRjFkRzlJWldsbmFIUW1KaWhCUFdjdWFHVnBaMmgwS0NrcExHY3VjbVZ0YjNabFEyeGhjM01vSW1aaGJtTjVZbTk0TFhSdGNDSXBPMk05YXloREtUdHBQV3NvUVNrN1JEMURMMEU3YkQxcktFVW9iQ2svYXloc0xDSjNJaWt0ZWpwc0tUdHRQV3NvUlNodEtUOXJLRzBzSW5jaUtTMTZPbTBwTzNROWF5aEZLSFFwUDJzb2RDd2lhQ0lwTFhNNmRDazdiajFyS0VVb2Jpay9heWh1TENKb0lpa3RjenB1S1R0R1BXMDdRajF1TzJndVptbDBWRzlXYVdWM0ppWW9iVDFOWVhSb0xtMXBiaWhoTG5jdGVpeHRLU3h1UFUxaGRHZ3ViV2x1S0dFdWFDMXpMRzRwS1R0NlBXRXVkeTE1TzNFOVlTNW9MWEU3YUM1aGMzQmxZM1JTWVhScGJ6OG9ZejV0SmlZb1l6MXRMR2s5YXloakwwUXBLU3hwUG00bUppaHBQVzRzWXoxcktHa3FSQ2twTEdNOGJDWW1LR005YkN4cFBXc29ZeTlFS1Nrc2FUeDBKaVlLS0drOWRDeGpQV3NvYVNwRUtTa3BPaWhqUFUxaGRHZ3ViV0Y0S0d3c1RXRjBhQzV0YVc0b1l5eHRLU2tzYUM1aGRYUnZTR1ZwWjJoMEppWWlhV1p5WVcxbElpRTlQV2d1ZEhsd1pTWW1LR2N1ZDJsa2RHZ29ZeWtzYVQxbkxtaGxhV2RvZENncEtTeHBQVTFoZEdndWJXRjRLSFFzVFdGMGFDNXRhVzRvYVN4dUtTa3BPMmxtS0dndVptbDBWRzlXYVdWM0tXbG1LR2N1ZDJsa2RHZ29ZeWt1YUdWcFoyaDBLR2twTEdVdWQybGtkR2dvWXl0M0tTeGhQV1V1ZDJsa2RHZ29LU3g1UFdVdWFHVnBaMmgwS0Nrc2FDNWhjM0JsWTNSU1lYUnBieWxtYjNJb095aGhQbnA4ZkhrK2NTa21KaWhqUG13bUptaytkQ2ttSmlFb01UazhaQ3NyS1RzcGFUMU5ZWFJvTG0xaGVDaDBMRTFoZEdndWJXbHVLRzRzYVMweE1Da3BMR005YXlocEtrUXBMR004YkNZbUtHTTliQ3hwUFdzb1l5OUVLU2tzWXo1dEppWW9ZejF0TEdrOWF5aGpMMFFwS1N4bkxuZHBaSFJvS0dNcExtaGxhV2RvZENocEtTeGxMbmRwWkhSb0tHTXJkeWtzWVQxbExuZHBaSFJvS0Nrc2VUMWxMbWhsYVdkb2RDZ3BPMlZzYzJVZ1l6MU5ZWFJvTG0xaGVDaHNMRTFoZEdndWJXbHVLR01zWXkwb1lTMTZLU2twTEdrOVRXRjBhQzV0WVhnb2RDeE5ZWFJvTG0xcGJpaHBMR2t0S0hrdGNTa3BLVHR3SmlZb0ltRjFkRzhpUFQwOWNpWW1hVHhCSmlaakszY3JDbkE4ZWlrbUppaGpLejF3S1R0bkxuZHBaSFJvS0dNcExtaGxhV2RvZENocEtUdGxMbmRwWkhSb0tHTXJkeWs3WVQxbExuZHBaSFJvS0NrN2VUMWxMbWhsYVdkb2RDZ3BPMlU5S0dFK2VueDhlVDV4S1NZbVl6NXNKaVpwUG5RN1l6MW9MbUZ6Y0dWamRGSmhkR2x2UDJNOFJpWW1hVHhDSmlaalBFTW1KbWs4UVRvb1l6eEdmSHhwUEVJcEppWW9ZenhEZkh4cFBFRXBPMll1WlhoMFpXNWtLR2dzZTJScGJUcDdkMmxrZEdnNmRpaGhLU3hvWldsbmFIUTZkaWg1S1gwc2IzSnBaMWRwWkhSb09rTXNiM0pwWjBobGFXZG9kRHBCTEdOaGJsTm9jbWx1YXpwbExHTmhia1Y0Y0dGdVpEcGpMSGRRWVdSa2FXNW5PbmNzYUZCaFpHUnBibWM2ZUN4M2NtRndVM0JoWTJVNmVTMXFMbTkxZEdWeVNHVnBaMmgwS0NFd0tTeHphMmx1VTNCaFkyVTZhaTVvWldsbmFIUW9LUzFwZlNrN0lYVW1KaWhvTG1GMWRHOUlaV2xuYUhRbUptaytkQ1ltYVR4dUppWWhZeWttSm1jdWFHVnBaMmgwS0NKaGRYUnZJaWw5TEY5blpYUlFiM05wZEdsdmJqcG1kVzVqZEdsdmJpaGhLWHQyWVhJZ1pEMWlMbU4xY25KbGJuUXNaVDFpTG1kbGRGWnBaWGR3YjNKMEtDa3NZejFrTG0xaGNtZHBiaXhtUFdJdWQzSmhjQzUzYVdSMGFDZ3BLMk5iTVYwclkxc3pYU3huUFdJdWQzSmhjQzVvWldsbmFIUW9LU3RqV3pCZEsyTmJNbDBzWXoxN2NHOXphWFJwYjI0NkltRmljMjlzZFhSbElpd0tkRzl3T21OYk1GMHNiR1ZtZERwald6TmRmVHRrTG1GMWRHOURaVzUwWlhJbUptUXVabWw0WldRbUppRmhKaVpuUEQxbExtZ21KbVk4UFdVdWR6OWpMbkJ2YzJsMGFXOXVQU0ptYVhobFpDSTZaQzVzYjJOclpXUjhmQ2hqTG5SdmNDczlaUzU1TEdNdWJHVm1kQ3M5WlM1NEtUdGpMblJ2Y0QxMktFMWhkR2d1YldGNEtHTXVkRzl3TEdNdWRHOXdLeWhsTG1ndFp5a3FaQzUwYjNCU1lYUnBieWtwTzJNdWJHVm1kRDEyS0UxaGRHZ3ViV0Y0S0dNdWJHVm1kQ3hqTG14bFpuUXJLR1V1ZHkxbUtTcGtMbXhsWm5SU1lYUnBieWtwTzNKbGRIVnliaUJqZlN4ZllXWjBaWEphYjI5dFNXNDZablZ1WTNScGIyNG9LWHQyWVhJZ1lUMWlMbU4xY25KbGJuUTdZU1ltS0dJdWFYTlBjR1Z1UFdJdWFYTlBjR1Z1WldROUlUQXNZaTUzY21Gd0xtTnpjeWdpYjNabGNtWnNiM2NpTENKMmFYTnBZbXhsSWlrdVlXUmtRMnhoYzNNb0ltWmhibU41WW05NExXOXdaVzVsWkNJcExHSXVkWEJrWVhSbEtDa3NLR0V1WTJ4dmMyVkRiR2xqYTN4OFlTNXVaWGgwUTJ4cFkyc21KakU4WWk1bmNtOTFjQzVzWlc1bmRHZ3BKaVppTG1sdWJtVnlMbU56Y3lnaVkzVnljMjl5SWl3aWNHOXBiblJsY2lJcExtSnBibVFvSW1Oc2FXTnJMbVppSWl4bWRXNWpkR2x2Ymloa0tYc2haaWhrTG5SaGNtZGxkQ2t1YVhNb0ltRWlLU1ltSVdZb1pDNTBZWEpuWlhRcExuQmhjbVZ1ZENncExtbHpLQ0poSWlrbUpnb29aQzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BMR0piWVM1amJHOXpaVU5zYVdOclB5SmpiRzl6WlNJNkltNWxlSFFpWFNncEtYMHBMR0V1WTJ4dmMyVkNkRzRtSm1Zb1lTNTBjR3d1WTJ4dmMyVkNkRzRwTG1Gd2NHVnVaRlJ2S0dJdWMydHBiaWt1WW1sdVpDaHVQeUowYjNWamFITjBZWEowTG1aaUlqb2lZMnhwWTJzdVptSWlMR1oxYm1OMGFXOXVLR0VwZTJFdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1R0aUxtTnNiM05sS0NsOUtTeGhMbUZ5Y205M2N5WW1NVHhpTG1keWIzVndMbXhsYm1kMGFDWW1LQ2hoTG14dmIzQjhmREE4WVM1cGJtUmxlQ2ttSm1Zb1lTNTBjR3d1Y0hKbGRpa3VZWEJ3Wlc1a1ZHOG9ZaTV2ZFhSbGNpa3VZbWx1WkNnaVkyeHBZMnN1Wm1JaUxHSXVjSEpsZGlrc0tHRXViRzl2Y0h4OFlTNXBibVJsZUR4aUxtZHliM1Z3TG14bGJtZDBhQzB4S1NZbVppaGhMblJ3YkM1dVpYaDBLUzVoY0hCbGJtUlVieWhpTG05MWRHVnlLUzVpYVc1a0tDSmpiR2xqYXk1bVlpSXNZaTV1WlhoMEtTa3NZaTUwY21sbloyVnlLQ0poWm5SbGNsTm9iM2NpS1N3aFlTNXNiMjl3SmlaaExtbHVaR1Y0UFQwOVlTNW5jbTkxY0M1c1pXNW5kR2d0TVQ5aUxuQnNZWGtvSVRFcE9tSXViM0IwY3k1aGRYUnZVR3hoZVNZbUlXSXVjR3hoZVdWeUxtbHpRV04wYVhabEppWW9ZaTV2Y0hSekxtRjFkRzlRYkdGNVBRb2hNU3hpTG5Cc1lYa29LU2twZlN4ZllXWjBaWEphYjI5dFQzVjBPbVoxYm1OMGFXOXVLR0VwZTJFOVlYeDhZaTVqZFhKeVpXNTBPMllvSWk1bVlXNWplV0p2ZUMxM2NtRndJaWt1ZEhKcFoyZGxjaWdpYjI1U1pYTmxkQ0lwTG5KbGJXOTJaU2dwTzJZdVpYaDBaVzVrS0dJc2UyZHliM1Z3T250OUxHOXdkSE02ZTMwc2NtOTFkR1Z5T2lFeExHTjFjbkpsYm5RNmJuVnNiQ3hwYzBGamRHbDJaVG9oTVN4cGMwOXdaVzVsWkRvaE1TeHBjMDl3Wlc0NklURXNhWE5EYkc5emFXNW5PaUV4TEhkeVlYQTZiblZzYkN4emEybHVPbTUxYkd3c2IzVjBaWEk2Ym5Wc2JDeHBibTVsY2pwdWRXeHNmU2s3WWk1MGNtbG5aMlZ5S0NKaFpuUmxja05zYjNObElpeGhLWDE5S1R0aUxuUnlZVzV6YVhScGIyNXpQWHRuWlhSUGNtbG5VRzl6YVhScGIyNDZablZ1WTNScGIyNG9LWHQyWVhJZ1lUMWlMbU4xY25KbGJuUXNaRDFoTG1Wc1pXMWxiblFzWlQxaExtOXlhV2NzWXoxN2ZTeG1QVFV3TEdjOU5UQXNhRDFoTG1oUVlXUmthVzVuTEdrOVlTNTNVR0ZrWkdsdVp5eHNQV0l1WjJWMFZtbGxkM0J2Y25Rb0tUc2haU1ltS0dFdWFYTkViMjBtSm1RdWFYTW9JanAyYVhOcFlteGxJaWtwSmlZb1pUMWtMbVpwYm1Rb0ltbHRaenBtYVhKemRDSXBMR1V1YkdWdVozUm9mSHdvWlQxa0tTazdjeWhsS1Q4b1l6MWxMbTltWm5ObGRDZ3BMQXBsTG1sektDSnBiV2NpS1NZbUtHWTlaUzV2ZFhSbGNsZHBaSFJvS0Nrc1p6MWxMbTkxZEdWeVNHVnBaMmgwS0NrcEtUb29ZeTUwYjNBOWJDNTVLeWhzTG1ndFp5a3FZUzUwYjNCU1lYUnBieXhqTG14bFpuUTliQzU0S3loc0xuY3RaaWtxWVM1c1pXWjBVbUYwYVc4cE8ybG1LQ0ptYVhobFpDSTlQVDFpTG5keVlYQXVZM056S0NKd2IzTnBkR2x2YmlJcGZIeGhMbXh2WTJ0bFpDbGpMblJ2Y0MwOWJDNTVMR011YkdWbWRDMDliQzU0TzNKbGRIVnliaUJqUFh0MGIzQTZkaWhqTG5SdmNDMW9LbUV1ZEc5d1VtRjBhVzhwTEd4bFpuUTZkaWhqTG14bFpuUXRhU3BoTG14bFpuUlNZWFJwYnlrc2QybGtkR2c2ZGlobUsya3BMR2hsYVdkb2REcDJLR2NyYUNsOWZTeHpkR1Z3T21aMWJtTjBhVzl1S0dFc1pDbDdkbUZ5SUdVc1l5eG1QV1F1Y0hKdmNEdGpQV0l1WTNWeWNtVnVkRHQyWVhJZ1p6MWpMbmR5WVhCVGNHRmpaU3hvUFdNdWMydHBibE53WVdObE8ybG1LQ0ozYVdSMGFDSTlQVDFtZkh3aWFHVnBaMmgwSWowOVBXWXBaVDFrTG1WdVpEMDlQV1F1YzNSaGNuUS9NVG9vWVMxa0xuTjBZWEowS1M4b1pDNWxibVF0WkM1emRHRnlkQ2tzWWk1cGMwTnNiM05wYm1jbUppaGxQVEV0WlNrc1l6MGlkMmxrZEdnaVBUMDlaajlqTG5kUVlXUmthVzVuT21NdWFGQmhaR1JwYm1jc1l6MWhMV01zWWk1emEybHVXMlpkS0dzb0luZHBaSFJvSWowOVBRcG1QMk02WXkxbkttVXBLU3hpTG1sdWJtVnlXMlpkS0dzb0luZHBaSFJvSWowOVBXWS9ZenBqTFdjcVpTMW9LbVVwS1gwc2VtOXZiVWx1T21aMWJtTjBhVzl1S0NsN2RtRnlJR0U5WWk1amRYSnlaVzUwTEdROVlTNXdiM01zWlQxaExtOXdaVzVGWm1abFkzUXNZejBpWld4aGMzUnBZeUk5UFQxbExHbzlaaTVsZUhSbGJtUW9lMjl3WVdOcGRIazZNWDBzWkNrN1pHVnNaWFJsSUdvdWNHOXphWFJwYjI0N1l6OG9aRDEwYUdsekxtZGxkRTl5YVdkUWIzTnBkR2x2YmlncExHRXViM0JsYms5d1lXTnBkSGttSmloa0xtOXdZV05wZEhrOU1DNHhLU2s2SW1aaFpHVWlQVDA5WlNZbUtHUXViM0JoWTJsMGVUMHdMakVwTzJJdWQzSmhjQzVqYzNNb1pDa3VZVzVwYldGMFpTaHFMSHRrZFhKaGRHbHZiam9pYm05dVpTSTlQVDFsUHpBNllTNXZjR1Z1VTNCbFpXUXNaV0Z6YVc1bk9tRXViM0JsYmtWaGMybHVaeXh6ZEdWd09tTS9kR2hwY3k1emRHVndPbTUxYkd3c1kyOXRjR3hsZEdVNllpNWZZV1owWlhKYWIyOXRTVzU5S1gwc2VtOXZiVTkxZERwbWRXNWpkR2x2YmlncGUzWmhjaUJoUFdJdVkzVnljbVZ1ZEN4a1BXRXVZMnh2YzJWRlptWmxZM1FzWlQwaVpXeGhjM1JwWXlJOVBUMWtMR005ZTI5d1lXTnBkSGs2TUM0eGZUdGxKaVlvWXoxMGFHbHpMbWRsZEU5eWFXZFFiM05wZEdsdmJpZ3BMR0V1WTJ4dmMyVlBjR0ZqYVhSNUppWUtLR011YjNCaFkybDBlVDB3TGpFcEtUdGlMbmR5WVhBdVlXNXBiV0YwWlNoakxIdGtkWEpoZEdsdmJqb2libTl1WlNJOVBUMWtQekE2WVM1amJHOXpaVk53WldWa0xHVmhjMmx1WnpwaExtTnNiM05sUldGemFXNW5MSE4wWlhBNlpUOTBhR2x6TG5OMFpYQTZiblZzYkN4amIyMXdiR1YwWlRwaUxsOWhablJsY2xwdmIyMVBkWFI5S1gwc1kyaGhibWRsU1c0NlpuVnVZM1JwYjI0b0tYdDJZWElnWVQxaUxtTjFjbkpsYm5Rc1pEMWhMbTVsZUhSRlptWmxZM1FzWlQxaExuQnZjeXhqUFh0dmNHRmphWFI1T2pGOUxHWTlZaTVrYVhKbFkzUnBiMjRzWnp0bExtOXdZV05wZEhrOU1DNHhPeUpsYkdGemRHbGpJajA5UFdRbUppaG5QU0prYjNkdUlqMDlQV1o4ZkNKMWNDSTlQVDFtUHlKMGIzQWlPaUpzWldaMElpd2laRzkzYmlJOVBUMW1mSHdpY21sbmFIUWlQVDA5Wmo4b1pWdG5YVDEyS0dzb1pWdG5YU2t0TWpBd0tTeGpXMmRkUFNJclBUSXdNSEI0SWlrNktHVmJaMTA5ZGlocktHVmJaMTBwS3pJd01Da3NZMXRuWFQwaUxUMHlNREJ3ZUNJcEtUc2libTl1WlNJOVBUMWtQMkl1WDJGbWRHVnlXbTl2YlVsdUtDazZZaTUzY21Gd0xtTnpjeWhsS1M1aGJtbHRZWFJsS0dNc2UyUjFjbUYwYVc5dU9tRXVibVY0ZEZOd1pXVmtMR1ZoYzJsdVp6cGhMbTVsZUhSRllYTnBibWNzWTI5dGNHeGxkR1U2Wm5WdVkzUnBiMjRvS1h0elpYUlVhVzFsYjNWMEtHSXVYMkZtZEdWeVdtOXZiVWx1TEFveU1DbDlmU2w5TEdOb1lXNW5aVTkxZERwbWRXNWpkR2x2YmlncGUzWmhjaUJoUFdJdWNISmxkbWx2ZFhNc1pEMWhMbkJ5WlhaRlptWmxZM1FzWlQxN2IzQmhZMmwwZVRvd0xqRjlMR005WWk1a2FYSmxZM1JwYjI0N0ltVnNZWE4wYVdNaVBUMDlaQ1ltS0dWYkltUnZkMjRpUFQwOVkzeDhJblZ3SWowOVBXTS9JblJ2Y0NJNklteGxablFpWFQwb0luVndJajA5UFdOOGZDSnNaV1owSWowOVBXTS9JaTBpT2lJcklpa3JJajB5TURCd2VDSXBPMkV1ZDNKaGNDNWhibWx0WVhSbEtHVXNlMlIxY21GMGFXOXVPaUp1YjI1bElqMDlQV1EvTURwaExuQnlaWFpUY0dWbFpDeGxZWE5wYm1jNllTNXdjbVYyUldGemFXNW5MR052YlhCc1pYUmxPbVoxYm1OMGFXOXVLQ2w3WmloMGFHbHpLUzUwY21sbloyVnlLQ0p2YmxKbGMyVjBJaWt1Y21WdGIzWmxLQ2w5ZlNsOWZUdGlMbWhsYkhCbGNuTXViM1psY214aGVUMTdaR1ZtWVhWc2RITTZlMk5zYjNObFEyeHBZMnM2SVRBc2MzQmxaV1JQZFhRNk1qQXdMSE5vYjNkRllYSnNlVG9oTUN4amMzTTZlMzBzYkc5amEyVmtPaUZ1TEdacGVHVmtPaUV3ZlN4dmRtVnliR0Y1T201MWJHd3NabWw0WldRNklURXNZM0psWVhSbE9tWjFibU4wYVc5dUtHRXBlMkU5Wmk1bGVIUmxibVFvZTMwc2RHaHBjeTVrWldaaGRXeDBjeXhoS1R0MGFHbHpMbTkyWlhKc1lYa21KblJvYVhNdVkyeHZjMlVvS1RzS2RHaHBjeTV2ZG1WeWJHRjVQV1lvSnp4a2FYWWdZMnhoYzNNOUltWmhibU41WW05NExXOTJaWEpzWVhraVBqd3ZaR2wyUGljcExtRndjR1Z1WkZSdktDSmliMlI1SWlrN2RHaHBjeTVtYVhobFpEMGhNVHRoTG1acGVHVmtKaVppTG1SbFptRjFiSFJ6TG1acGVHVmtKaVlvZEdocGN5NXZkbVZ5YkdGNUxtRmtaRU5zWVhOektDSm1ZVzVqZVdKdmVDMXZkbVZ5YkdGNUxXWnBlR1ZrSWlrc2RHaHBjeTVtYVhobFpEMGhNQ2w5TEc5d1pXNDZablZ1WTNScGIyNG9ZU2w3ZG1GeUlHUTlkR2hwY3l4aFBXWXVaWGgwWlc1a0tIdDlMSFJvYVhNdVpHVm1ZWFZzZEhNc1lTazdkR2hwY3k1dmRtVnliR0Y1UDNSb2FYTXViM1psY214aGVTNTFibUpwYm1Rb0lpNXZkbVZ5YkdGNUlpa3VkMmxrZEdnb0ltRjFkRzhpS1M1b1pXbG5hSFFvSW1GMWRHOGlLVHAwYUdsekxtTnlaV0YwWlNoaEtUdDBhR2x6TG1acGVHVmtmSHdvY2k1aWFXNWtLQ0p5WlhOcGVtVXViM1psY214aGVTSXNaaTV3Y205NGVTaDBhR2x6TG5Wd1pHRjBaU3gwYUdsektTa3NkR2hwY3k1MWNHUmhkR1VvS1NrN1lTNWpiRzl6WlVOc2FXTnJKaVowYUdsekxtOTJaWEpzWVhrdVltbHVaQ2dpWTJ4cFkyc3ViM1psY214aGVTSXNablZ1WTNScGIyNG9ZU2w3WmloaExuUmhjbWRsZENrdWFHRnpRMnhoYzNNb0ltWmhibU41WW05NExXOTJaWEpzWVhraUtTWW1DaWhpTG1selFXTjBhWFpsUDJJdVkyeHZjMlVvS1Rwa0xtTnNiM05sS0NrcGZTazdkR2hwY3k1dmRtVnliR0Y1TG1OemN5aGhMbU56Y3lrdWMyaHZkeWdwZlN4amJHOXpaVHBtZFc1amRHbHZiaWdwZTJZb0lpNW1ZVzVqZVdKdmVDMXZkbVZ5YkdGNUlpa3VjbVZ0YjNabEtDazdjaTUxYm1KcGJtUW9JbkpsYzJsNlpTNXZkbVZ5YkdGNUlpazdkR2hwY3k1dmRtVnliR0Y1UFc1MWJHdzdJVEVoUFQxMGFHbHpMbTFoY21kcGJpWW1LR1lvSW1KdlpIa2lLUzVqYzNNb0ltMWhjbWRwYmkxeWFXZG9kQ0lzZEdocGN5NXRZWEpuYVc0cExIUm9hWE11YldGeVoybHVQU0V4S1R0MGFHbHpMbVZzSmlaMGFHbHpMbVZzTG5KbGJXOTJaVU5zWVhOektDSm1ZVzVqZVdKdmVDMXNiMk5ySWlsOUxIVndaR0YwWlRwbWRXNWpkR2x2YmlncGUzWmhjaUJoUFNJeE1EQWxJaXhpTzNSb2FYTXViM1psY214aGVTNTNhV1IwYUNoaEtTNW9aV2xuYUhRb0lqRXdNQ1VpS1R0bUxtSnliM2R6WlhJdWJYTnBaVDhvWWoxTllYUm9MbTFoZUNoNExtUnZZM1Z0Wlc1MFJXeGxiV1Z1ZEM1dlptWnpaWFJYYVdSMGFDeDRMbUp2WkhrdWIyWm1jMlYwVjJsa2RHZ3BMRzB1ZDJsa2RHZ29LVDVpSmlZb1lUMXRMbmRwWkhSb0tDa3BLVHB0TG5kcFpIUm9LQ2srY2k1M2FXUjBhQ2dwSmlZb1lUMXRMbmRwWkhSb0tDa3BPM1JvYVhNdWIzWmxjbXhoZVM1M2FXUjBhQ2hoS1M1b1pXbG5hSFFvYlM1b1pXbG5hSFFvS1NsOUxBcHZibEpsWVdSNU9tWjFibU4wYVc5dUtHRXNZaWw3WmlnaUxtWmhibU41WW05NExXOTJaWEpzWVhraUtTNXpkRzl3S0NFd0xDRXdLVHQwYUdsekxtOTJaWEpzWVhsOGZDaDBhR2x6TG0xaGNtZHBiajF0TG1obGFXZG9kQ2dwUG5JdWFHVnBaMmgwS0NsOGZDSnpZM0p2Ykd3aVBUMDlaaWdpWW05a2VTSXBMbU56Y3lnaWIzWmxjbVpzYjNjdGVTSXBQMllvSW1KdlpIa2lLUzVqYzNNb0ltMWhjbWRwYmkxeWFXZG9kQ0lwT2lFeExIUm9hWE11Wld3OWVDNWhiR3dtSmlGNExuRjFaWEo1VTJWc1pXTjBiM0kvWmlnaWFIUnRiQ0lwT21Zb0ltSnZaSGtpS1N4MGFHbHpMbU55WldGMFpTaGhLU2s3WVM1c2IyTnJaV1FtSm5Sb2FYTXVabWw0WldRbUppaGlMbXh2WTJ0bFpEMTBhR2x6TG05MlpYSnNZWGt1WVhCd1pXNWtLR0l1ZDNKaGNDa3NZaTVtYVhobFpEMGhNU2s3SVRBOVBUMWhMbk5vYjNkRllYSnNlU1ltZEdocGN5NWlaV1p2Y21WVGFHOTNMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1gwc1ltVm1iM0psVTJodmR6cG1kVzVqZEdsdmJpaGhMR0lwZTJJdWJHOWphMlZrSmlZb2RHaHBjeTVsYkM1aFpHUkRiR0Z6Y3lnaVptRnVZM2xpYjNndGJHOWpheUlwTENFeElUMDlkR2hwY3k1dFlYSm5hVzRtSm1Zb0ltSnZaSGtpS1M1amMzTW9JbTFoY21kcGJpMXlhV2RvZENJc2F5aDBhR2x6TG0xaGNtZHBiaWtyQ21JdWMyTnliMnhzWW1GeVYybGtkR2dwS1R0MGFHbHpMbTl3Wlc0b1lTbDlMRzl1VlhCa1lYUmxPbVoxYm1OMGFXOXVLQ2w3ZEdocGN5NW1hWGhsWkh4OGRHaHBjeTUxY0dSaGRHVW9LWDBzWVdaMFpYSkRiRzl6WlRwbWRXNWpkR2x2YmloaEtYdDBhR2x6TG05MlpYSnNZWGttSmlGaUxtbHpRV04wYVhabEppWjBhR2x6TG05MlpYSnNZWGt1Wm1Ga1pVOTFkQ2hoTG5Od1pXVmtUM1YwTEdZdWNISnZlSGtvZEdocGN5NWpiRzl6WlN4MGFHbHpLU2w5ZlR0aUxtaGxiSEJsY25NdWRHbDBiR1U5ZTJSbFptRjFiSFJ6T250MGVYQmxPaUptYkc5aGRDSXNjRzl6YVhScGIyNDZJbUp2ZEhSdmJTSjlMR0psWm05eVpWTm9iM2M2Wm5WdVkzUnBiMjRvWVNsN2RtRnlJR1E5WWk1amRYSnlaVzUwTEdVOVpDNTBhWFJzWlN4alBXRXVkSGx3WlR0bUxtbHpSblZ1WTNScGIyNG9aU2ttSmlobFBXVXVZMkZzYkNoa0xtVnNaVzFsYm5Rc1pDa3BPMmxtS0hBb1pTa21KaUlpSVQwOVppNTBjbWx0S0dVcEtYdGtQV1lvSnp4a2FYWWdZMnhoYzNNOUltWmhibU41WW05NExYUnBkR3hsSUdaaGJtTjVZbTk0TFhScGRHeGxMU2NyWXlzbkxYZHlZWEFpUGljclpTc2lQQzlrYVhZK0lpazdjM2RwZEdOb0tHTXBlMk5oYzJVZ0ltbHVjMmxrWlNJNll6MWlMbk5yYVc0N1luSmxZV3M3WTJGelpTQWliM1YwYzJsa1pTSTZZejBLWWk1M2NtRndPMkp5WldGck8yTmhjMlVnSW05MlpYSWlPbU05WWk1cGJtNWxjanRpY21WaGF6dGtaV1poZFd4ME9tTTlZaTV6YTJsdUxHUXVZWEJ3Wlc1a1ZHOG9JbUp2WkhraUtTeG1MbUp5YjNkelpYSXViWE5wWlNZbVpDNTNhV1IwYUNoa0xuZHBaSFJvS0NrcExHUXVkM0poY0VsdWJtVnlLQ2M4YzNCaGJpQmpiR0Z6Y3owaVkyaHBiR1FpUGp3dmMzQmhiajRuS1N4aUxtTjFjbkpsYm5RdWJXRnlaMmx1V3pKZEt6MU5ZWFJvTG1GaWN5aHJLR1F1WTNOektDSnRZWEpuYVc0dFltOTBkRzl0SWlrcEtYMWtXeUowYjNBaVBUMDlZUzV3YjNOcGRHbHZiajhpY0hKbGNHVnVaRlJ2SWpvaVlYQndaVzVrVkc4aVhTaGpLWDE5ZlR0bUxtWnVMbVpoYm1ONVltOTRQV1oxYm1OMGFXOXVLR0VwZTNaaGNpQmtMR1U5WmloMGFHbHpLU3hqUFhSb2FYTXVjMlZzWldOMGIzSjhmQ0lpTEdvOVpuVnVZM1JwYjI0b1p5bDdkbUZ5SUdnOVppaDBhR2x6S1M1aWJIVnlLQ2tzYVQxa0xHb3NhenNoWnk1amRISnNTMlY1SmlZb0lXY3VZV3gwUzJWNUppWWhaeTV6YUdsbWRFdGxlU1ltSVdjdWJXVjBZVXRsZVNrbUppRm9MbWx6S0NJdVptRnVZM2xpYjNndGQzSmhjQ0lwSmlZb2FqMWhMbWR5YjNWd1FYUjBjbng4SW1SaGRHRXRabUZ1WTNsaWIzZ3RaM0p2ZFhBaUxHczlhQzVoZEhSeUtHb3BMR3Q4ZkNocVBTSnlaV3dpTEFwclBXZ3VaMlYwS0RBcFcycGRLU3hySmlZb0lpSWhQVDFySmlZaWJtOW1iMnhzYjNjaUlUMDlheWttSmlob1BXTXViR1Z1WjNSb1AyWW9ZeWs2WlN4b1BXZ3VabWxzZEdWeUtDSmJJaXRxS3ljOUlpY3JheXNuSWwwbktTeHBQV2d1YVc1a1pYZ29kR2hwY3lrcExHRXVhVzVrWlhnOWFTd2hNU0U5UFdJdWIzQmxiaWhvTEdFcEppWm5MbkJ5WlhabGJuUkVaV1poZFd4MEtDa3BmU3hoUFdGOGZIdDlPMlE5WVM1cGJtUmxlSHg4TURzaFkzeDhJVEU5UFQxaExteHBkbVUvWlM1MWJtSnBibVFvSW1Oc2FXTnJMbVppTFhOMFlYSjBJaWt1WW1sdVpDZ2lZMnhwWTJzdVptSXRjM1JoY25RaUxHb3BPbTB1ZFc1a1pXeGxaMkYwWlNoakxDSmpiR2xqYXk1bVlpMXpkR0Z5ZENJcExtUmxiR1ZuWVhSbEtHTXJJanB1YjNRb0p5NW1ZVzVqZVdKdmVDMXBkR1Z0TENBdVptRnVZM2xpYjNndGJtRjJKeWtpTENKamJHbGpheTVtWWkxemRHRnlkQ0lzYWlrN2RHaHBjeTVtYVd4MFpYSW9JbHRrWVhSaExXWmhibU41WW05NExYTjBZWEowUFRGZElpa3VkSEpwWjJkbGNpZ2lZMnhwWTJzaUtUdHlaWFIxY200Z2RHaHBjMzA3YlM1eVpXRmtlU2htZFc1amRHbHZiaWdwZTJZdWMyTnliMnhzWW1GeVYybGtkR2c5UFQxeEppWW9aaTV6WTNKdmJHeGlZWEpYYVdSMGFEMW1kVzVqZEdsdmJpZ3BlM1poY2lCaFBXWW9KenhrYVhZZ2MzUjViR1U5SW5kcFpIUm9PalV3Y0hnN2FHVnBaMmgwT2pVd2NIZzdiM1psY21ac2IzYzZZWFYwYnlJK1BHUnBkaTgrUEM5a2FYWStKeWt1WVhCd1pXNWtWRzhvSW1KdlpIa2lLU3dLWWoxaExtTm9hV3hrY21WdUtDa3NZajFpTG1sdWJtVnlWMmxrZEdnb0tTMWlMbWhsYVdkb2RDZzVPU2t1YVc1dVpYSlhhV1IwYUNncE8yRXVjbVZ0YjNabEtDazdjbVYwZFhKdUlHSjlLVHRwWmlobUxuTjFjSEJ2Y25RdVptbDRaV1JRYjNOcGRHbHZiajA5UFhFcGUzWmhjaUJoUFdZdWMzVndjRzl5ZEN4a1BXWW9KenhrYVhZZ2MzUjViR1U5SW5CdmMybDBhVzl1T21acGVHVmtPM1J2Y0RveU1IQjRPeUkrUEM5a2FYWStKeWt1WVhCd1pXNWtWRzhvSW1KdlpIa2lLU3hsUFRJd1BUMDlaRnN3WFM1dlptWnpaWFJVYjNCOGZERTFQVDA5WkZzd1hTNXZabVp6WlhSVWIzQTdaQzV5WlcxdmRtVW9LVHRoTG1acGVHVmtVRzl6YVhScGIyNDlaWDFtTG1WNGRHVnVaQ2hpTG1SbFptRjFiSFJ6TEh0elkzSnZiR3hpWVhKWGFXUjBhRHBtTG5OamNtOXNiR0poY2xkcFpIUm9LQ2tzWm1sNFpXUTZaaTV6ZFhCd2IzSjBMbVpwZUdWa1VHOXphWFJwYjI0c2NHRnlaVzUwT21Zb0ltSnZaSGtpS1gwcGZTbDlLU2gzYVc1a2IzY3NaRzlqZFcxbGJuUXNhbEYxWlhKNUtUcz1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9qcXVlcnkubW91c2V3aGVlbC0zLjAuNi5wYWNrLmpzPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtMeW9oSUVOdmNIbHlhV2RvZENBb1l5a2dNakF4TVNCQ2NtRnVaRzl1SUVGaGNtOXVJQ2hvZEhSd09pOHZZbkpoYm1SdmJtRmhjbTl1TG01bGRDa0tJQ29nVEdsalpXNXpaV1FnZFc1a1pYSWdkR2hsSUUxSlZDQk1hV05sYm5ObElDaE1TVU5GVGxORkxuUjRkQ2t1Q2lBcUNpQXFJRlJvWVc1cmN5QjBiem9nYUhSMGNEb3ZMMkZrYjIxaGN5NXZjbWN2YW1GMllYTmpjbWx3ZEMxdGIzVnpaUzEzYUdWbGJDOGdabTl5SUhOdmJXVWdjRzlwYm5SbGNuTXVDaUFxSUZSb1lXNXJjeUIwYnpvZ1RXRjBhR2xoY3lCQ1lXNXJLR2gwZEhBNkx5OTNkM2N1YldGMGFHbGhjeTFpWVc1ckxtUmxLU0JtYjNJZ1lTQnpZMjl3WlNCaWRXY2dabWw0TGdvZ0tpQlVhR0Z1YTNNZ2RHODZJRk5sWVcxMWN5Qk1aV0ZvZVNCbWIzSWdZV1JrYVc1bklHUmxiSFJoV0NCaGJtUWdaR1ZzZEdGWkNpQXFDaUFxSUZabGNuTnBiMjQ2SURNdU1DNDJDaUFxSUFvZ0tpQlNaWEYxYVhKbGN6b2dNUzR5TGpJckNpQXFMd29vWm5WdVkzUnBiMjRvWkNsN1puVnVZM1JwYjI0Z1pTaGhLWHQyWVhJZ1lqMWhmSHgzYVc1a2IzY3VaWFpsYm5Rc1l6MWJYUzV6YkdsalpTNWpZV3hzS0dGeVozVnRaVzUwY3l3eEtTeG1QVEFzWlQwd0xHYzlNQ3hoUFdRdVpYWmxiblF1Wm1sNEtHSXBPMkV1ZEhsd1pUMGliVzkxYzJWM2FHVmxiQ0k3WWk1M2FHVmxiRVJsYkhSaEppWW9aajFpTG5kb1pXVnNSR1ZzZEdFdk1USXdLVHRpTG1SbGRHRnBiQ1ltS0dZOUxXSXVaR1YwWVdsc0x6TXBPMmM5Wmp0aUxtRjRhWE1oUFQxMmIybGtJREFtSm1JdVlYaHBjejA5UFdJdVNFOVNTVnBQVGxSQlRGOUJXRWxUSmlZb1p6MHdMR1U5TFRFcVppazdZaTUzYUdWbGJFUmxiSFJoV1NFOVBYWnZhV1FnTUNZbUtHYzlZaTUzYUdWbGJFUmxiSFJoV1M4eE1qQXBPMkl1ZDJobFpXeEVaV3gwWVZnaFBUMTJiMmxrSURBbUppaGxQUzB4S21JdWQyaGxaV3hFWld4MFlWZ3ZNVEl3S1R0akxuVnVjMmhwWm5Rb1lTeG1MR1VzWnlrN2NtVjBkWEp1S0dRdVpYWmxiblF1WkdsemNHRjBZMmg4ZkdRdVpYWmxiblF1YUdGdVpHeGxLUzVoY0hCc2VTaDBhR2x6TEdNcGZYWmhjaUJqUFZzaVJFOU5UVzkxYzJWVFkzSnZiR3dpTENKdGIzVnpaWGRvWldWc0lsMDdhV1lvWkM1bGRtVnVkQzVtYVhoSWIyOXJjeWxtYjNJb2RtRnlJR2c5WXk1c1pXNW5kR2c3YURzcFpDNWxkbVZ1ZEM1bWFYaEliMjlyYzF0ald5MHRhRjFkUFFwa0xtVjJaVzUwTG0xdmRYTmxTRzl2YTNNN1pDNWxkbVZ1ZEM1emNHVmphV0ZzTG0xdmRYTmxkMmhsWld3OWUzTmxkSFZ3T21aMWJtTjBhVzl1S0NsN2FXWW9kR2hwY3k1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S1dadmNpaDJZWElnWVQxakxteGxibWQwYUR0aE95bDBhR2x6TG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvWTFzdExXRmRMR1VzWm1Gc2MyVXBPMlZzYzJVZ2RHaHBjeTV2Ym0xdmRYTmxkMmhsWld3OVpYMHNkR1ZoY21SdmQyNDZablZ1WTNScGIyNG9LWHRwWmloMGFHbHpMbkpsYlc5MlpVVjJaVzUwVEdsemRHVnVaWElwWm05eUtIWmhjaUJoUFdNdWJHVnVaM1JvTzJFN0tYUm9hWE11Y21WdGIzWmxSWFpsYm5STWFYTjBaVzVsY2loald5MHRZVjBzWlN4bVlXeHpaU2s3Wld4elpTQjBhR2x6TG05dWJXOTFjMlYzYUdWbGJEMXVkV3hzZlgwN1pDNW1iaTVsZUhSbGJtUW9lMjF2ZFhObGQyaGxaV3c2Wm5WdVkzUnBiMjRvWVNsN2NtVjBkWEp1SUdFL2RHaHBjeTVpYVc1a0tDSnRiM1Z6Wlhkb1pXVnNJaXhoS1RwMGFHbHpMblJ5YVdkblpYSW9JbTF2ZFhObGQyaGxaV3dpS1gwc2RXNXRiM1Z6Wlhkb1pXVnNPbVoxYm1OMGFXOXVLR0VwZTNKbGRIVnliaUIwYUdsekxuVnVZbWx1WkNnaWJXOTFjMlYzYUdWbGJDSXNZU2w5ZlNsOUtTaHFVWFZsY25rcE93PT1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9qcXVlcnkudG91Y2hTd2lwZS5taW4uanM8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW0tHWjFibU4wYVc5dUtHUXBlM1poY2lCc1BTSnNaV1owSWl4clBTSnlhV2RvZENJc1l6MGlkWEFpTEhJOUltUnZkMjRpTEdJOUltbHVJaXh6UFNKdmRYUWlMR2s5SW01dmJtVWlMRzg5SW1GMWRHOGlMSFU5SW1odmNtbDZiMjUwWVd3aUxIQTlJblpsY25ScFkyRnNJaXhtUFNKaGJHd2lMR1U5SW5OMFlYSjBJaXhvUFNKdGIzWmxJaXhuUFNKbGJtUWlMRzA5SW1OaGJtTmxiQ0lzWVQwaWIyNTBiM1ZqYUhOMFlYSjBJaUJwYmlCM2FXNWtiM2NzZEQwaVZHOTFZMmhUZDJsd1pTSTdkbUZ5SUdvOWUyWnBibWRsY25NNk1TeDBhSEpsYzJodmJHUTZOelVzYldGNFZHbHRaVlJvY21WemFHOXNaRHB1ZFd4c0xITjNhWEJsT201MWJHd3NjM2RwY0dWTVpXWjBPbTUxYkd3c2MzZHBjR1ZTYVdkb2REcHVkV3hzTEhOM2FYQmxWWEE2Ym5Wc2JDeHpkMmx3WlVSdmQyNDZiblZzYkN4emQybHdaVk4wWVhSMWN6cHVkV3hzTEhCcGJtTm9TVzQ2Ym5Wc2JDeHdhVzVqYUU5MWREcHVkV3hzTEhCcGJtTm9VM1JoZEhWek9tNTFiR3dzWTJ4cFkyczZiblZzYkN4MGNtbG5aMlZ5VDI1VWIzVmphRVZ1WkRwMGNuVmxMR0ZzYkc5M1VHRm5aVk5qY205c2JEb2lZWFYwYnlJc1ptRnNiR0poWTJ0VWIwMXZkWE5sUlhabGJuUnpPblJ5ZFdVc1pYaGpiSFZrWldSRmJHVnRaVzUwY3pvaVluVjBkRzl1TENCcGJuQjFkQ3dnYzJWc1pXTjBMQ0IwWlhoMFlYSmxZU3dnWVN3Z0xtNXZVM2RwY0dVaWZUdGtMbVp1TG5OM2FYQmxQV1oxYm1OMGFXOXVLSGdwZTNaaGNpQjNQV1FvZEdocGN5a3NkajEzTG1SaGRHRW9kQ2s3YVdZb2RpWW1kSGx3Wlc5bUlIZzlQVDBpYzNSeWFXNW5JaWw3YVdZb2RsdDRYU2w3Y21WMGRYSnVJSFpiZUYwdVlYQndiSGtvZEdocGN5eEJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXNNU2twZldWc2MyVjdaQzVsY25KdmNpZ2lUV1YwYUc5a0lDSXJlQ3NpSUdSdlpYTWdibTkwSUdWNGFYTjBJRzl1SUdwUmRXVnllUzV6ZDJsd1pTSXBmWDFsYkhObGUybG1LQ0YySmlZb2RIbHdaVzltSUhnOVBUMGliMkpxWldOMElueDhJWGdwS1h0eVpYUjFjbTRnY1M1aGNIQnNlU2gwYUdsekxHRnlaM1Z0Wlc1MGN5bDlmWEpsZEhWeWJpQjNmVHRrTG1adUxuTjNhWEJsTG1SbFptRjFiSFJ6UFdvN1pDNW1iaTV6ZDJsd1pTNXdhR0Z6WlhNOWUxQklRVk5GWDFOVVFWSlVPbVVzVUVoQlUwVmZUVTlXUlRwb0xGQklRVk5GWDBWT1JEcG5MRkJJUVZORlgwTkJUa05GVERwdGZUdGtMbVp1TG5OM2FYQmxMbVJwY21WamRHbHZibk05ZTB4RlJsUTZiQ3hTU1VkSVZEcHJMRlZRT21Nc1JFOVhUanB5TEVsT09tSXNUMVZVT25OOU8yUXVabTR1YzNkcGNHVXVjR0ZuWlZOamNtOXNiRDE3VGs5T1JUcHBMRWhQVWtsYVQwNVVRVXc2ZFN4V1JWSlVTVU5CVERwd0xFRlZWRTg2YjMwN1pDNW1iaTV6ZDJsd1pTNW1hVzVuWlhKelBYdFBUa1U2TVN4VVYwODZNaXhVU0ZKRlJUb3pMRUZNVERwbWZUdG1kVzVqZEdsdmJpQnhLSFlwZTJsbUtIWW1KaWgyTG1Gc2JHOTNVR0ZuWlZOamNtOXNiRDA5UFhWdVpHVm1hVzVsWkNZbUtIWXVjM2RwY0dVaFBUMTFibVJsWm1sdVpXUjhmSFl1YzNkcGNHVlRkR0YwZFhNaFBUMTFibVJsWm1sdVpXUXBLU2w3ZGk1aGJHeHZkMUJoWjJWVFkzSnZiR3c5YVgxcFppZ2hkaWw3ZGoxN2ZYMTJQV1F1WlhoMFpXNWtLSHQ5TEdRdVptNHVjM2RwY0dVdVpHVm1ZWFZzZEhNc2RpazdjbVYwZFhKdUlIUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BlM1poY2lCNFBXUW9kR2hwY3lrN2RtRnlJSGM5ZUM1a1lYUmhLSFFwTzJsbUtDRjNLWHQzUFc1bGR5QnVLSFJvYVhNc2RpazdlQzVrWVhSaEtIUXNkeWw5ZlNsOVpuVnVZM1JwYjI0Z2JpaEtMRklwZTNaaGNpQmhhajBvWVh4OElWSXVabUZzYkdKaFkydFViMDF2ZFhObFJYWmxiblJ6S1N4aFpUMWhhajhpZEc5MVkyaHpkR0Z5ZENJNkltMXZkWE5sWkc5M2JpSXNTejFoYWo4aWRHOTFZMmh0YjNabElqb2liVzkxYzJWdGIzWmxJaXhoWXoxaGFqOGlkRzkxWTJobGJtUWlPaUp0YjNWelpYVndJaXhKUFNKMGIzVmphR05oYm1ObGJDSTdkbUZ5SUZBOU1EdDJZWElnUlQxdWRXeHNPM1poY2lCVFBUQTdkbUZ5SUdGbVBUQTdkbUZ5SUhjOU1EdDJZWElnVlQweE8zWmhjaUJoYXowd08zWmhjaUJCUFdRb1NpazdkbUZ5SUVZOUluTjBZWEowSWp0MllYSWdZV2s5TUR0MllYSWdWRDF1ZFd4c08zWmhjaUJDUFRBN2RtRnlJRTA5TUR0MGNubDdRUzVpYVc1a0tHRmxMR0ZoS1R0QkxtSnBibVFvU1N4RUtYMWpZWFJqYUNoaFp5bDdaQzVsY25KdmNpZ2laWFpsYm5SeklHNXZkQ0J6ZFhCd2IzSjBaV1FnSWl0aFpTc2lMQ0lyU1NzaUlHOXVJR3BSZFdWeWVTNXpkMmx3WlNJcGZYUm9hWE11Wlc1aFlteGxQV1oxYm1OMGFXOXVLQ2w3UVM1aWFXNWtLR0ZsTEdGaEtUdEJMbUpwYm1Rb1NTeEVLVHR5WlhSMWNtNGdRWDA3ZEdocGN5NWthWE5oWW14bFBXWjFibU4wYVc5dUtDbDdTQ2dwTzNKbGRIVnliaUJCZlR0MGFHbHpMbVJsYzNSeWIzazlablZ1WTNScGIyNG9LWHRJS0NrN1FTNWtZWFJoS0hRc2JuVnNiQ2s3Y21WMGRYSnVJRUY5TzJaMWJtTjBhVzl1SUdGaEtHRnZLWHRwWmloTUtDa3BlM0psZEhWeWJuMXBaaWhrS0dGdkxuUmhjbWRsZENrdVkyeHZjMlZ6ZENoU0xtVjRZMngxWkdWa1JXeGxiV1Z1ZEhNc1FTa3ViR1Z1WjNSb1BqQXBlM0psZEhWeWJuMWhiejFoYnk1dmNtbG5hVzVoYkVWMlpXNTBPM1poY2lCaGJpeGhiVDFoUDJGdkxuUnZkV05vWlhOYk1GMDZZVzg3UmoxbE8ybG1LR0VwZTJGcFBXRnZMblJ2ZFdOb1pYTXViR1Z1WjNSb2ZXVnNjMlY3WVc4dWNISmxkbVZ1ZEVSbFptRjFiSFFvS1gxUVBUQTdSVDF1ZFd4c08yRnJQVzUxYkd3N1V6MHdPMkZtUFRBN2R6MHdPMVU5TVR0VVBXRnNLQ2s3YVdZb0lXRjhmQ2hoYVQwOVBWSXVabWx1WjJWeWMzeDhVaTVtYVc1blpYSnpQVDA5WmlsOGZGY29LU2w3VkZzd1hTNXpkR0Z5ZEM1NFBWUmJNRjB1Wlc1a0xuZzlZVzB1Y0dGblpWZzdWRnN3WFM1emRHRnlkQzU1UFZSYk1GMHVaVzVrTG5rOVlXMHVjR0ZuWlZrN1FqMTRLQ2s3YVdZb1lXazlQVElwZTFSYk1WMHVjM1JoY25RdWVEMVVXekZkTG1WdVpDNTRQV0Z2TG5SdmRXTm9aWE5iTVYwdWNHRm5aVmc3VkZzeFhTNXpkR0Z5ZEM1NVBWUmJNVjB1Wlc1a0xuazlZVzh1ZEc5MVkyaGxjMXN4WFM1d1lXZGxXVHRoWmoxM1BVNG9WRnN3WFM1emRHRnlkQ3hVV3pGZExuTjBZWEowS1gxcFppaFNMbk4zYVhCbFUzUmhkSFZ6Zkh4U0xuQnBibU5vVTNSaGRIVnpLWHRoYmoxaGFDaGhieXhHS1gxOVpXeHpaWHRFS0dGdktUdGhiajFtWVd4elpYMXBaaWhoYmowOVBXWmhiSE5sS1h0R1BXMDdZV2dvWVc4c1JpazdjbVYwZFhKdUlHRnVmV1ZzYzJWN1ZpaDBjblZsS1R0QkxtSnBibVFvU3l4SEtUdEJMbUpwYm1Rb1lXTXNUeWw5ZldaMWJtTjBhVzl1SUVjb1lYQXBlMkZ3UFdGd0xtOXlhV2RwYm1Gc1JYWmxiblE3YVdZb1JqMDlQV2Q4ZkVZOVBUMXRLWHR5WlhSMWNtNTlkbUZ5SUdGdUxHRnRQV0UvWVhBdWRHOTFZMmhsYzFzd1hUcGhjRHRVV3pCZExtVnVaQzU0UFdFL1lYQXVkRzkxWTJobGMxc3dYUzV3WVdkbFdEcGhiUzV3WVdkbFdEdFVXekJkTG1WdVpDNTVQV0UvWVhBdWRHOTFZMmhsYzFzd1hTNXdZV2RsV1RwaGJTNXdZV2RsV1R0TlBYZ29LVHRGUFZvb1ZGc3dYUzV6ZEdGeWRDeFVXekJkTG1WdVpDazdhV1lvWVNsN1lXazlZWEF1ZEc5MVkyaGxjeTVzWlc1bmRHaDlSajFvTzJsbUtHRnBQVDB5S1h0cFppaGhaajA5TUNsN1ZGc3hYUzV6ZEdGeWRDNTRQV0Z3TG5SdmRXTm9aWE5iTVYwdWNHRm5aVmc3VkZzeFhTNXpkR0Z5ZEM1NVBXRndMblJ2ZFdOb1pYTmJNVjB1Y0dGblpWazdZV1k5ZHoxT0tGUmJNRjB1YzNSaGNuUXNWRnN4WFM1emRHRnlkQ2w5Wld4elpYdFVXekZkTG1WdVpDNTRQV0Z3TG5SdmRXTm9aWE5iTVYwdWNHRm5aVmc3VkZzeFhTNWxibVF1ZVQxaGNDNTBiM1ZqYUdWeld6RmRMbkJoWjJWWk8zYzlUaWhVV3pCZExtVnVaQ3hVV3pGZExtVnVaQ2s3WVdzOVdDaFVXekJkTG1WdVpDeFVXekZkTG1WdVpDbDlWVDEyS0dGbUxIY3BmV2xtS0NoaGFUMDlQVkl1Wm1sdVoyVnljM3g4VWk1bWFXNW5aWEp6UFQwOVppbDhmQ0ZoS1h0NUtHRndMRVVwTzFBOWVpaFVXekJkTG5OMFlYSjBMRlJiTUYwdVpXNWtLVHRUUFVNb1ZGc3dYUzV6ZEdGeWRDeFVXekJkTG1WdVpDazdhV1lvVWk1emQybHdaVk4wWVhSMWMzeDhVaTV3YVc1amFGTjBZWFIxY3lsN1lXNDlZV2dvWVhBc1JpbDlhV1lvSVZJdWRISnBaMmRsY2s5dVZHOTFZMmhGYm1RcGUzWmhjaUJoYnowaFdTZ3BPMmxtS0ZFb0tUMDlQWFJ5ZFdVcGUwWTlaenRoYmoxaGFDaGhjQ3hHS1gxbGJITmxlMmxtS0dGdktYdEdQVzA3WVdnb1lYQXNSaWw5ZlgxOVpXeHpaWHRHUFcwN1lXZ29ZWEFzUmlsOWFXWW9ZVzQ5UFQxbVlXeHpaU2w3UmoxdE8yRm9LR0Z3TEVZcGZYMW1kVzVqZEdsdmJpQlBLR0YwS1h0aGREMWhkQzV2Y21sbmFXNWhiRVYyWlc1ME8ybG1LR0YwTG5SdmRXTm9aWE1tSm1GMExuUnZkV05vWlhNdWJHVnVaM1JvUGpBcGUzSmxkSFZ5YmlCMGNuVmxmV0YwTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3VFQxNEtDazdhV1lvWVdZaFBUQXBlM2M5VGloVVd6QmRMbVZ1WkN4VVd6RmRMbVZ1WkNrN1ZUMTJLR0ZtTEhjcE8yRnJQVmdvVkZzd1hTNWxibVFzVkZzeFhTNWxibVFwZlZBOWVpaFVXekJkTG5OMFlYSjBMRlJiTUYwdVpXNWtLVHRGUFZvb1ZGc3dYUzV6ZEdGeWRDeFVXekJkTG1WdVpDazdVejFES0NrN2FXWW9VaTUwY21sbloyVnlUMjVVYjNWamFFVnVaSHg4S0ZJdWRISnBaMmRsY2s5dVZHOTFZMmhGYm1ROVBUMW1ZV3h6WlNZbVJqMDlQV2dwS1h0R1BXYzdkbUZ5SUdGd1BXRmtLQ2w4ZkNGWEtDazdkbUZ5SUdGdVBTZ29ZV2s5UFQxU0xtWnBibWRsY25OOGZGSXVabWx1WjJWeWN6MDlQV1lwZkh3aFlTazdkbUZ5SUdGdFBWUmJNRjB1Wlc1a0xuZ2hQVDB3TzNaaGNpQmhiejBvWVc0bUptRnRKaVpoY0NrN2FXWW9ZVzhwZTNaaGNpQmhjVDFaS0NrN2RtRnlJR0Z5UFZFb0tUdHBaaWdvWVhJOVBUMTBjblZsZkh4aGNqMDlQVzUxYkd3cEppWmhjU2w3WVdnb1lYUXNSaWw5Wld4elpYdHBaaWdoWVhGOGZHRnlQVDA5Wm1Gc2MyVXBlMFk5YlR0aGFDaGhkQ3hHS1gxOWZXVnNjMlY3UmoxdE8yRm9LR0YwTEVZcGZYMWxiSE5sZTJsbUtFWTlQVDFvS1h0R1BXMDdZV2dvWVhRc1JpbDlmVUV1ZFc1aWFXNWtLRXNzUnl4bVlXeHpaU2s3UVM1MWJtSnBibVFvWVdNc1R5eG1ZV3h6WlNrN1ZpaG1ZV3h6WlNsOVpuVnVZM1JwYjI0Z1JDZ3BlMkZwUFRBN1RUMHdPMEk5TUR0aFpqMHdPM2M5TUR0VlBURTdWaWhtWVd4elpTbDlablZ1WTNScGIyNGdZV2dvWVc4c1lXMHBlM1poY2lCaGJqMTFibVJsWm1sdVpXUTdhV1lvVWk1emQybHdaVk4wWVhSMWN5bDdZVzQ5VWk1emQybHdaVk4wWVhSMWN5NWpZV3hzS0VFc1lXOHNZVzBzUlh4OGJuVnNiQ3hRZkh3d0xGTjhmREFzWVdrcGZXbG1LRkl1Y0dsdVkyaFRkR0YwZFhNbUptRmtLQ2twZTJGdVBWSXVjR2x1WTJoVGRHRjBkWE11WTJGc2JDaEJMR0Z2TEdGdExHRnJmSHh1ZFd4c0xIZDhmREFzVTN4OE1DeGhhU3hWS1gxcFppaGhiVDA5UFcwcGUybG1LRkl1WTJ4cFkyc21KaWhoYVQwOVBURjhmQ0ZoS1NZbUtHbHpUbUZPS0ZBcGZIeFFQVDA5TUNrcGUyRnVQVkl1WTJ4cFkyc3VZMkZzYkNoQkxHRnZMR0Z2TG5SaGNtZGxkQ2w5ZldsbUtHRnRQVDFuS1h0cFppaFNMbk4zYVhCbEtYdGhiajFTTG5OM2FYQmxMbU5oYkd3b1FTeGhieXhGTEZBc1V5eGhhU2w5YzNkcGRHTm9LRVVwZTJOaGMyVWdiRHBwWmloU0xuTjNhWEJsVEdWbWRDbDdZVzQ5VWk1emQybHdaVXhsWm5RdVkyRnNiQ2hCTEdGdkxFVXNVQ3hUTEdGcEtYMWljbVZoYXp0allYTmxJR3M2YVdZb1VpNXpkMmx3WlZKcFoyaDBLWHRoYmoxU0xuTjNhWEJsVW1sbmFIUXVZMkZzYkNoQkxHRnZMRVVzVUN4VExHRnBLWDFpY21WaGF6dGpZWE5sSUdNNmFXWW9VaTV6ZDJsd1pWVndLWHRoYmoxU0xuTjNhWEJsVlhBdVkyRnNiQ2hCTEdGdkxFVXNVQ3hUTEdGcEtYMWljbVZoYXp0allYTmxJSEk2YVdZb1VpNXpkMmx3WlVSdmQyNHBlMkZ1UFZJdWMzZHBjR1ZFYjNkdUxtTmhiR3dvUVN4aGJ5eEZMRkFzVXl4aGFTbDlZbkpsWVd0OWMzZHBkR05vS0dGcktYdGpZWE5sSUdJNmFXWW9VaTV3YVc1amFFbHVLWHRoYmoxU0xuQnBibU5vU1c0dVkyRnNiQ2hCTEdGdkxHRnJmSHh1ZFd4c0xIZDhmREFzVTN4OE1DeGhhU3hWS1gxaWNtVmhhenRqWVhObElITTZhV1lvVWk1d2FXNWphRTkxZENsN1lXNDlVaTV3YVc1amFFOTFkQzVqWVd4c0tFRXNZVzhzWVd0OGZHNTFiR3dzZDN4OE1DeFRmSHd3TEdGcExGVXBmV0p5WldGcmZYMXBaaWhoYlQwOVBXMThmR0Z0UFQwOVp5bDdSQ2hoYnlsOWNtVjBkWEp1SUdGdWZXWjFibU4wYVc5dUlGRW9LWHRwWmloU0xuUm9jbVZ6YUc5c1pDRTlQVzUxYkd3cGUzSmxkSFZ5YmlCUVBqMVNMblJvY21WemFHOXNaSDF5WlhSMWNtNGdiblZzYkgxbWRXNWpkR2x2YmlCWktDbDdkbUZ5SUdGdE8ybG1LRkl1YldGNFZHbHRaVlJvY21WemFHOXNaQ2w3YVdZb1V6NDlVaTV0WVhoVWFXMWxWR2h5WlhOb2IyeGtLWHRoYlQxbVlXeHpaWDFsYkhObGUyRnRQWFJ5ZFdWOWZXVnNjMlY3WVcwOWRISjFaWDF5WlhSMWNtNGdZVzE5Wm5WdVkzUnBiMjRnZVNoaGJTeGhiaWw3YVdZb1VpNWhiR3h2ZDFCaFoyVlRZM0p2Ykd3OVBUMXBmSHhYS0NrcGUyRnRMbkJ5WlhabGJuUkVaV1poZFd4MEtDbDlaV3h6Wlh0MllYSWdZVzg5VWk1aGJHeHZkMUJoWjJWVFkzSnZiR3c5UFQxdk8zTjNhWFJqYUNoaGJpbDdZMkZ6WlNCc09tbG1LQ2hTTG5OM2FYQmxUR1ZtZENZbVlXOHBmSHdvSVdGdkppWlNMbUZzYkc5M1VHRm5aVk5qY205c2JDRTlkU2twZTJGdExuQnlaWFpsYm5SRVpXWmhkV3gwS0NsOVluSmxZV3M3WTJGelpTQnJPbWxtS0NoU0xuTjNhWEJsVW1sbmFIUW1KbUZ2S1h4OEtDRmhieVltVWk1aGJHeHZkMUJoWjJWVFkzSnZiR3doUFhVcEtYdGhiUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BmV0p5WldGck8yTmhjMlVnWXpwcFppZ29VaTV6ZDJsd1pWVndKaVpoYnlsOGZDZ2hZVzhtSmxJdVlXeHNiM2RRWVdkbFUyTnliMnhzSVQxd0tTbDdZVzB1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LWDFpY21WaGF6dGpZWE5sSUhJNmFXWW9LRkl1YzNkcGNHVkViM2R1SmlaaGJ5bDhmQ2doWVc4bUpsSXVZV3hzYjNkUVlXZGxVMk55YjJ4c0lUMXdLU2w3WVcwdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1gxaWNtVmhhMzE5ZldaMWJtTjBhVzl1SUVNb0tYdHlaWFIxY200Z1RTMUNmV1oxYm1OMGFXOXVJRTRvWVhBc1lXOHBlM1poY2lCaGJqMU5ZWFJvTG1GaWN5aGhjQzU0TFdGdkxuZ3BPM1poY2lCaGJUMU5ZWFJvTG1GaWN5aGhjQzU1TFdGdkxua3BPM0psZEhWeWJpQk5ZWFJvTG5KdmRXNWtLRTFoZEdndWMzRnlkQ2hoYmlwaGJpdGhiU3BoYlNrcGZXWjFibU4wYVc5dUlIWW9ZVzBzWVc0cGUzWmhjaUJoYnowb1lXNHZZVzBwS2pFN2NtVjBkWEp1SUdGdkxuUnZSbWw0WldRb01pbDlablZ1WTNScGIyNGdXQ2dwZTJsbUtGVThNU2w3Y21WMGRYSnVJSE45Wld4elpYdHlaWFIxY200Z1luMTlablZ1WTNScGIyNGdlaWhoYml4aGJTbDdjbVYwZFhKdUlFMWhkR2d1Y205MWJtUW9UV0YwYUM1emNYSjBLRTFoZEdndWNHOTNLR0Z0TG5ndFlXNHVlQ3d5S1N0TllYUm9MbkJ2ZHloaGJTNTVMV0Z1TG5rc01pa3BLWDFtZFc1amRHbHZiaUJoWWloaGNDeGhiaWw3ZG1GeUlHRnRQV0Z3TG5ndFlXNHVlRHQyWVhJZ1lYSTlZVzR1ZVMxaGNDNTVPM1poY2lCaGJ6MU5ZWFJvTG1GMFlXNHlLR0Z5TEdGdEtUdDJZWElnWVhFOVRXRjBhQzV5YjNWdVpDaGhieW94T0RBdlRXRjBhQzVRU1NrN2FXWW9ZWEU4TUNsN1lYRTlNell3TFUxaGRHZ3VZV0p6S0dGeEtYMXlaWFIxY200Z1lYRjlablZ1WTNScGIyNGdXaWhoYml4aGJTbDdkbUZ5SUdGdlBXRmlLR0Z1TEdGdEtUdHBaaWdvWVc4OFBUUTFLU1ltS0dGdlBqMHdLU2w3Y21WMGRYSnVJR3g5Wld4elpYdHBaaWdvWVc4OFBUTTJNQ2ttSmloaGJ6NDlNekUxS1NsN2NtVjBkWEp1SUd4OVpXeHpaWHRwWmlnb1lXOCtQVEV6TlNrbUppaGhienc5TWpJMUtTbDdjbVYwZFhKdUlHdDlaV3h6Wlh0cFppZ29ZVzgrTkRVcEppWW9ZVzg4TVRNMUtTbDdjbVYwZFhKdUlISjlaV3h6Wlh0eVpYUjFjbTRnWTMxOWZYMTlablZ1WTNScGIyNGdlQ2dwZTNaaGNpQmhiVDF1WlhjZ1JHRjBaU2dwTzNKbGRIVnliaUJoYlM1blpYUlVhVzFsS0NsOVpuVnVZM1JwYjI0Z1NDZ3BlMEV1ZFc1aWFXNWtLR0ZsTEdGaEtUdEJMblZ1WW1sdVpDaEpMRVFwTzBFdWRXNWlhVzVrS0Vzc1J5azdRUzUxYm1KcGJtUW9ZV01zVHlrN1ZpaG1ZV3h6WlNsOVpuVnVZM1JwYjI0Z1Z5Z3BlM0psZEhWeWJpQlNMbkJwYm1Ob1UzUmhkSFZ6Zkh4U0xuQnBibU5vU1c1OGZGSXVjR2x1WTJoUGRYUjlablZ1WTNScGIyNGdZV1FvS1h0eVpYUjFjbTRnWVdzbUpsY29LWDFtZFc1amRHbHZiaUJNS0NsN2NtVjBkWEp1SUVFdVpHRjBZU2gwS3lKZmFXNTBiM1ZqYUNJcFBUMDlkSEoxWlQ5MGNuVmxPbVpoYkhObGZXWjFibU4wYVc5dUlGWW9ZVzBwZTJGdFBXRnRQVDA5ZEhKMVpUOTBjblZsT21aaGJITmxPMEV1WkdGMFlTaDBLeUpmYVc1MGIzVmphQ0lzWVcwcGZXWjFibU4wYVc5dUlHRnNLQ2w3ZG1GeUlHRnRQVnRkTzJadmNpaDJZWElnWVc0OU1EdGhianc5TlR0aGJpc3JLWHRoYlM1d2RYTm9LSHR6ZEdGeWREcDdlRG93TEhrNk1IMHNaVzVrT250NE9qQXNlVG93ZlN4a1pXeDBZVHA3ZURvd0xIazZNSDE5S1gxeVpYUjFjbTRnWVcxOWZYMHBLR3BSZFdWeWVTazddXT48L2RhdGE+Cgk8L2ZpbGU+CjwvdG9vbGJveHRwbD4K]]></data>
	</file>
	<file>
	  <filename>/templates/ToolBox-tpl-autolightbox-foobox.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHRvb2xib3h0cGw+Cgk8bmFtZT5hbGJfZm9vYm94PC9uYW1lPgoJPHZlcnNpb24+MS4zLjE8L3ZlcnNpb24+Cgk8dG9vbGJveHZlcnNpb24+MS4zLjA8L3Rvb2xib3h2ZXJzaW9uPgoJPGFib3V0PlBIQStSbTl2UW05NElFSjFjMmx1WlhOeklGUmxiWEJzWVhSbFBDOXdQZzBLUEhBK3dxQThMM0ErPC9hYm91dD4KCTxzZWN0aW9uPmF1dG9saWdodGJveDwvc2VjdGlvbj4KCTx0cGxzZWN0aW9uPjwvdHBsc2VjdGlvbj4KCTxqcXVlcnk+MTwvanF1ZXJ5PgoJPGpxdWVyeV9vd24+PC9qcXVlcnlfb3duPgoJPG9wdGlvbnM+WVRvd09udDk8L29wdGlvbnM+Cgk8dHBsY29kZT48L3RwbGNvZGU+Cgk8dHBsY3NzPkxtWnZiMkp2ZUMxdGIyUmhiQ0I3RFFvZ0lDQWdlaTFwYm1SbGVEb2dNVEF3TURBd093MEtmUTBLTG1admIySnZlQzFwYldjdGJtVjRkQ0I3RFFvZ0lDQWdlaTFwYm1SbGVEb2dNVEF3TURBeE93MEtmUTBLTG1admIySnZlQzFwYldjdFkzVnljbVZ1ZENCN0RRb2dJQ0FnZWkxcGJtUmxlRG9nTVRBd01EQXlPdzBLSUNBZ0lDMTNaV0pyYVhRdGRYTmxjaTFrY21Gbk9pQnViMjVsT3cwS2ZRMEtMbVp2YjJKdmVDMWpZWEIwYVc5dUxDQXVabTl2WW05NExXTnZkVzUwSUhzTkNpQWdJQ0I2TFdsdVpHVjRPaUF4TURBd01ETTdEUXA5RFFvdVptOXZZbTk0TFhCeVpYWXNJQzVtYjI5aWIzZ3RibVY0ZEN3Z0xtWnZiMkp2ZUMxamJHOXpaU3dnTG1admIySnZlQzFqY21Wa2FYUXNJQzVtYjI5aWIzZ3RiRzloWkdWeUxDQXVabTl2WW05NExYUnBkR3hsSUhzTkNpQWdJQ0I2TFdsdVpHVjRPaUF4TURBd01EUTdEUXA5RFFvdVptOXZZbTk0TFcxdlpHRnNJSHNOQ2lBZ0lDQjNhV1IwYURvZ01UQXdKVHNOQ2lBZ0lDQm9aV2xuYUhRNklERXdNQ1U3RFFvZ0lDQWdjRzl6YVhScGIyNDZJR1pwZUdWa093MEtJQ0FnSUhSdmNEb2dNRHNOQ2lBZ0lDQnNaV1owT2lBd093MEtJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdEUXA5RFFvdVptOXZZbTk0TFcxdlpHRnNMbVp2YjJKdmVDMXphRzkzSUhzTkNpQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF6c05DbjBOQ2k1bWIyOWliM2d0YVc1dVpYSXRjM0JoWTJWeUlIc05DaUFnSUNCa2FYTndiR0Y1T2lCdWIyNWxPdzBLSUNBZ0lIQmhaR1JwYm1jNklEUXdjSGc3RFFwOURRb3VabTl2WW05NExXbHVibVZ5SUhzTkNpQWdJQ0J0YVc0dGQybGtkR2c2SURFd01IQjRPdzBLSUNBZ0lHMXBiaTFvWldsbmFIUTZJREV3TUhCNE93MEtJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzTkNpQWdJQ0IwYjNBNklEVXdKVHNOQ2lBZ0lDQnNaV1owT2lBMU1DVTdEUW9nSUNBZ2JXRnlaMmx1TFhSdmNEb2dMVFV3Y0hnN0RRb2dJQ0FnYldGeVoybHVMV3hsWm5RNklDMDFNSEI0T3cwS0lDQWdJRzkyWlhKbWJHOTNPaUIyYVhOcFlteGxJV2x0Y0c5eWRHRnVkRHNOQ24wTkNpNW1iMjlpYjNndGFXNXVaWEl0YzNCaFkyVnlMQ0F1Wm05dlltOTRMV2x1Ym1WeUxDQXVabTl2WW05NExXbHVibVZ5UGlvZ2V3MEtJQ0FnSUMxM1pXSnJhWFF0WW05NExYTnBlbWx1WnpvZ1kyOXVkR1Z1ZEMxaWIzZ2hhVzF3YjNKMFlXNTBPdzBLSUNBZ0lDMXRiM290WW05NExYTnBlbWx1WnpvZ1kyOXVkR1Z1ZEMxaWIzZ2hhVzF3YjNKMFlXNTBPdzBLSUNBZ0lHSnZlQzF6YVhwcGJtYzZJR052Ym5SbGJuUXRZbTk0SVdsdGNHOXlkR0Z1ZERzTkNuME5DaTVtYjI5aWIzZ3RhVzV1WlhJdVptOXZZbTk0TFdsdFp5MWxjbkp2Y2lBdVptOXZZbTk0TFdOdmRXNTBJSHNOQ2lBZ0lDQmthWE53YkdGNU9pQnViMjVsT3cwS2ZRMEtMbVp2YjJKdmVDMXBiV2N0WTNWeWNtVnVkQ3dnTG1admIySnZlQzFwYldjdGJtVjRkQ0I3RFFvZ0lDQWdkMmxrZEdnNklERXdNQ1U3RFFvZ0lDQWdhR1ZwWjJoME9pQXhNREFsT3cwS0lDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHNOQ2lBZ0lDQjBiM0E2SURBN0RRb2dJQ0FnYkdWbWREb2dNRHNOQ2lBZ0lDQndZV1JrYVc1bk9pQXdPdzBLSUNBZ0lHMWhjbWRwYmpvZ01Ec05DaUFnSUNCaWIzSmtaWEk2SUc1dmJtVTdEUW9nSUNBZ2IzVjBiR2x1WlRvZ2JtOXVaVHNOQ24wTkNpNW1iMjlpYjNndFkzSmxaR2wwSUhzTkNpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3RFFvZ0lDQWdZbTkwZEc5dE9pQXRNalZ3ZURzTkNuME5DaTVtYjI5aWIzZ3RZM0psWkdsMElHVnRJSHNOQ2lBZ0lDQm1iMjUwTFhOMGVXeGxPaUJ1YjNKdFlXdzdEUXA5RFFvdVptOXZZbTk0TFdOdmRXNTBJSHNOQ2lBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdEUW9nSUNBZ1ltOTBkRzl0T2lBdE1qVndlRHNOQ2lBZ0lDQjNhV1IwYURvZ01UQXdKVHNOQ2lBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdEUXA5RFFvdVptOXZZbTk0TFdOaGNIUnBiMjRnZXcwS0lDQWdJSGRwWkhSb09pQXhNREFsT3cwS0lDQWdJSEJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHNOQ2lBZ0lDQjBiM0E2SUdGMWRHODdEUW9nSUNBZ2NtbG5hSFE2SUdGMWRHODdEUW9nSUNBZ1ltOTBkRzl0T2lBd093MEtJQ0FnSUd4bFpuUTZJREE3RFFvZ0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZURzTkNpQWdJQ0F0YlhNdFltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHNOQ2lBZ0lDQXRiVzk2TFdKdmVDMXphWHBwYm1jNklHSnZjbVJsY2kxaWIzZzdEUW9nSUNBZ0xYZGxZbXRwZEMxaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPdzBLSUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N0RRcDlEUW91Wm05dlltOTRMWEJ5WlhZc0lDNW1iMjlpYjNndGJtVjRkQ0I3RFFvZ0lDQWdkMmxrZEdnNklEUXdjSGc3RFFvZ0lDQWdhR1ZwWjJoME9pQXhNREJ3ZURzTkNpQWdJQ0J0WVhKbmFXNHRkRzl3T2lBdE5UQndlRHNOQ2lBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdEUW9nSUNBZ2RHOXdPaUExTUNVN0RRb2dJQ0FnZEdWNGRDMWtaV052Y21GMGFXOXVPaUJ1YjI1bE93MEtJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPdzBLSUNBZ0lHOTFkR3hwYm1VNklHNXZibVU3RFFvZ0lDQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU93MEtmUTBLTG1admIySnZlQzF0YjJSaGJENHVabTl2WW05NExYQnlaWFlnZXcwS0lDQWdJR3hsWm5RNklEQTdEUW9nSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHNOQ24wTkNpNW1iMjlpYjNndGJXOWtZV3crTG1admIySnZlQzF1WlhoMElIc05DaUFnSUNCeWFXZG9kRG9nTURzTkNpQWdJQ0JrYVhOd2JHRjVPaUJ1YjI1bE93MEtmUTBLTG1admIySnZlQzFwYm01bGNqNHVabTl2WW05NExYQnlaWFlnZXcwS0lDQWdJR3hsWm5RNklDMDBPSEI0T3cwS0lDQWdJQzEzWldKcmFYUXRZbTk0TFhOb1lXUnZkem9nTFRGd2VDQXdJREp3ZUNCeVoySmhLREFzSURBc0lEQXNJQzQ0S1RzTkNpQWdJQ0F0Ylc5NkxXSnZlQzF6YUdGa2IzYzZJQzB4Y0hnZ01DQXljSGdnY21kaVlTZ3dMQ0F3TENBd0xDQXVPQ2s3RFFvZ0lDQWdZbTk0TFhOb1lXUnZkem9nTFRGd2VDQXdJREo0SUhKblltRW9NQ3dnTUN3Z01Dd2dMamdwT3cwS2ZRMEtMbVp2YjJKdmVDMXBibTVsY2o0dVptOXZZbTk0TFc1bGVIUWdldzBLSUNBZ0lISnBaMmgwT2lBdE5EaHdlRHNOQ2lBZ0lDQXRkMlZpYTJsMExXSnZlQzF6YUdGa2IzYzZJREZ3ZUNBd0lESndlQ0J5WjJKaEtEQXNJREFzSURBc0lDNDRLVHNOQ2lBZ0lDQXRiVzk2TFdKdmVDMXphR0ZrYjNjNklERndlQ0F3SURKd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DaUFnSUNCaWIzZ3RjMmhoWkc5M09pQXhjSGdnTUNBeWNIZ2djbWRpWVNnd0xDQXdMQ0F3TENBdU9DazdEUXA5RFFvdVptOXZZbTk0TFdOc2IzTmxJSHNOQ2lBZ0lDQjNhV1IwYURvZ01qaHdlRHNOQ2lBZ0lDQm9aV2xuYUhRNklESTRjSGc3RFFvZ0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLSUNBZ0lIUnZjRG9nTFRJeGNIZzdEUW9nSUNBZ2NtbG5hSFE2SUMweU1YQjRPdzBLSUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF5T0hCNE93MEtJQ0FnSUhSbGVIUXRZV3hwWjI0NklHTmxiblJsY2pzTkNpQWdJQ0IwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN0RRb2dJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdEUW9nSUNBZ2IzVjBiR2x1WlRvZ2JtOXVaVHNOQ2lBZ0lDQmpkWEp6YjNJNklIQnZhVzUwWlhJN0RRcDlEUW91Wm05dlltOTRMV3h2WVdSbGNpQjdEUW9nSUNBZ2QybGtkR2c2SURnd2NIZzdEUW9nSUNBZ2FHVnBaMmgwT2lBNE1IQjRPdzBLSUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUc05DaUFnSUNCMGIzQTZJRFV3SlRzTkNpQWdJQ0JzWldaME9pQTFNQ1U3RFFvZ0lDQWdiV0Z5WjJsdUxXeGxablE2SUMwME1IQjRPdzBLSUNBZ0lHMWhjbWRwYmkxMGIzQTZJQzAwTUhCNE93MEtmUTBLTG1admIySnZlQzFqYkc5elpTd2dMbVp2YjJKdmVDMXBibTVsY2l3Z0xtWnZiMkp2ZUMxc2IyRmtaWElnZXcwS0lDQWdJQzEzWldKcmFYUXRZbTk0TFhOb1lXUnZkem9nTUNBd0lERXljSGdnY21kaVlTZ3dMQ0F3TENBd0xDQXVPQ2s3RFFvZ0lDQWdMVzF2ZWkxaWIzZ3RjMmhoWkc5M09pQXdJREFnTVRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DaUFnSUNCaWIzZ3RjMmhoWkc5M09pQXdJREFnTVRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DbjBOQ2k1bWIyOWliM2d0Ylc5a1lXd2dldzBLSUNBZ0lHSmhZMnRuY205MWJtUTZJSFJ5WVc1emNHRnlaVzUwSUhWeWJDaGJXM0p2YjNSZmRYSnNYVjB2Ylc5a2RXeGxjeTlVYjI5c1FtOTRMM1JsYlhCc1lYUmxjeTloYkdKZlptOXZZbTk0TDJKbkxuQnVaeWtnY21Wd1pXRjBJSFJ2Y0NCc1pXWjBPdzBLSUNBZ0lHSmhZMnRuY205MWJtUTZJSEpuWW1Fb01Dd2dNQ3dnTUN3Z0xqY3BJRzV2Ym1VN0RRcDlEUW91Wm05dlltOTRMV2x1Ym1WeUlIc05DaUFnSUNCaVlXTnJaM0p2ZFc1a09pQWpabVptT3cwS0lDQWdJR0p2Y21SbGNqb2djMjlzYVdRZ09IQjRJQ05tWm1ZN0RRb2dJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dNVEJ3ZURzTkNuME5DaTVtYjI5aWIzZ3RhVzFuTFdOMWNuSmxiblFzSUM1bWIyOWliM2d0YVcxbkxXNWxlSFFnZXcwS0lDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHNOQ24wTkNpNW1iMjlpYjNndFkzSmxaR2wwSUhzTkNpQWdJQ0JtYjI1MExXWmhiV2xzZVRvZ1lYSnBZV3c3RFFvZ0lDQWdabTl1ZEMxemFYcGxPaUE0Y0hnN0RRb2dJQ0FnZEdWNGRDMTBjbUZ1YzJadmNtMDZJR3h2ZDJWeVkyRnpaVHNOQ24wTkNpNW1iMjlpYjNndFkzSmxaR2wwSUdFZ2V3MEtJQ0FnSUdOdmJHOXlPaUFqT0RnNElXbHRjRzl5ZEdGdWREc05DaUFnSUNCbWIyNTBMWE5wZW1VNklEbHdlRHNOQ2lBZ0lDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklHNXZibVU3RFFvZ0lDQWdkR1Y0ZEMxemFHRmtiM2M2SUNNeE5qRTJNVFlnTVhCNElERndlQ0F3T3cwS2ZRMEtMbVp2YjJKdmVDMWpjbVZrYVhRZ1lUcG9iM1psY2lCemNHRnVJSHNOQ2lBZ0lDQjBaWGgwTFdSbFkyOXlZWFJwYjI0NklIVnVaR1Z5YkdsdVpUc05DbjBOQ2k1bWIyOWliM2d0WTNKbFpHbDBJR0VnYzNCaGJpQjdEUW9nSUNBZ1kyOXNiM0k2SUNOa1pHUWhhVzF3YjNKMFlXNTBPdzBLSUNBZ0lHeGxkSFJsY2kxemNHRmphVzVuT2lBeGNIZzdEUXA5RFFvdVptOXZZbTk0TFdOdmRXNTBJSHNOQ2lBZ0lDQmpiMnh2Y2pvZ0l6ZzRPRHNOQ2lBZ0lDQm1iMjUwTFdaaGJXbHNlVG9nWVhKcFlXd3NJSE5oYm5NdGMyVnlhV1k3RFFvZ0lDQWdabTl1ZEMxemFYcGxPaUF4TUhCNE93MEtJQ0FnSUhSbGVIUXRjMmhoWkc5M09pQWpNVFl4TmpFMklERndlQ0F4Y0hnZ01Ec05DbjBOQ2k1bWIyOWliM2d0WTJGd2RHbHZiaUI3RFFvZ0lDQWdZMjlzYjNJNklDTm1abVk3RFFvZ0lDQWdiR2x1WlMxb1pXbG5hSFE2SURNd2NIZzdEUW9nSUNBZ2FHVnBaMmgwT2lBek1IQjRPdzBLSUNBZ0lHWnZiblF0Wm1GdGFXeDVPaUJoY21saGJDd2djMkZ1Y3kxelpYSnBaanNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtPaUIwY21GdWMzQmhjbVZ1ZENCMWNtd29XMXR5YjI5MFgzVnliRjFkTDIxdlpIVnNaWE12Vkc5dmJFSnZlQzkwWlcxd2JHRjBaWE12WVd4aVgyWnZiMkp2ZUM5aVp5NXdibWNwSUhKbGNHVmhkQ0IwYjNBZ2JHVm1kRHNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtPaUJ5WjJKaEtEQXNJREFzSURBc0lDNDNLU0J1YjI1bE93MEtJQ0FnSUdadmJuUXRjMmw2WlRvZ01UUndlRHNOQ2lBZ0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdEUW9nSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiUzF5YVdkb2RDMXlZV1JwZFhNNklEVndlRHNOQ2lBZ0lDQmliM0prWlhJdFltOTBkRzl0TFd4bFpuUXRjbUZrYVhWek9pQTFjSGc3RFFwOURRb3VabTl2WW05NExXTmhjSFJwYjI0dGRHbDBiR1VnZXcwS0lDQWdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPdzBLSUNBZ0lHWnZiblF0YzJsNlpUb2dNVFZ3ZURzTkNuME5DaTVtYjI5aWIzZ3RZMkZ3ZEdsdmJpMWtaWE5qSUhzTkNpQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHNOQ2lBZ0lDQm1iMjUwTFhOcGVtVTZJREV5Y0hnN0RRb2dJQ0FnWTI5c2IzSTZJQ05sWldVN0RRcDlEUW91Wm05dlltOTRMV05oY0hScGIyNHRkR2wwYkdVckxtWnZiMkp2ZUMxallYQjBhVzl1TFdSbGMyTWdldzBLSUNBZ0lIQmhaR1JwYm1jNklEQWdOWEI0SURWd2VDQTFjSGc3RFFwOURRb3VabTl2WW05NExXTmhjSFJwYjI0dFpHVnpZeUJoSUhzTkNpQWdJQ0JqYjJ4dmNqb2dJMlJrWkRzTkNuME5DaTVtYjI5aWIzZ3RkR2wwYkdVZ2V3MEtJQ0FnSUhSbGVIUXRjMmhoWkc5M09pQWpNVFl4TmpFMklERndlQ0F4Y0hnZ01Ec05DbjBOQ2k1bWIyOWliM2d0WTJ4dmMyVWdldzBLSUNBZ0lHSmhZMnRuY205MWJtUTZJQ05tWm1ZZ2RYSnNLRnRiY205dmRGOTFjbXhkWFM5dGIyUjFiR1Z6TDFSdmIyeENiM2d2ZEdWdGNHeGhkR1Z6TDJGc1lsOW1iMjlpYjNndlkyeHZjMlV1Y0c1bktTQnVieTF5WlhCbFlYUWdZMlZ1ZEdWeUlHTmxiblJsY2pzTkNpQWdJQ0JpYjNKa1pYSTZJSE52Ykdsa0lETndlQ0FqWm1abU93MEtJQ0FnSUdKdmNtUmxjaTF5WVdScGRYTTZJRFV3SlRzTkNpQWdJQ0JqYjJ4dmNqb2dJMlptWmpzTkNuME5DaTVtYjI5aWIzZ3RjSEpsZGlCN0RRb2dJQ0FnWW1GamEyZHliM1Z1WkRvZ0kyWm1aaUIxY213b1cxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOTBaVzF3YkdGMFpYTXZZV3hpWDJadmIySnZlQzl3Y21WMkxuQnVaeWtnYm04dGNtVndaV0YwSUdObGJuUmxjaUJqWlc1MFpYSTdEUW9nSUNBZ1ltOXlaR1Z5TFhSdmNDMXNaV1owTFhKaFpHbDFjem9nTVRCd2VEc05DaUFnSUNCaWIzSmtaWEl0WW05MGRHOXRMV3hsWm5RdGNtRmthWFZ6T2lBeE1IQjRPdzBLZlEwS0xtWnZiMkp2ZUMxdVpYaDBJSHNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtPaUFqWm1abUlIVnliQ2hiVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabTl2WW05NEwyNWxlSFF1Y0c1bktTQnVieTF5WlhCbFlYUWdZMlZ1ZEdWeUlHTmxiblJsY2pzTkNpQWdJQ0JpYjNKa1pYSXRkRzl3TFhKcFoyaDBMWEpoWkdsMWN6b2dNVEJ3ZURzTkNpQWdJQ0JpYjNKa1pYSXRZbTkwZEc5dExYSnBaMmgwTFhKaFpHbDFjem9nTVRCd2VEc05DbjBOQ2k1bWIyOWliM2d0WTJ4dmMyVTZhRzkyWlhJZ2V3MEtJQ0FnSUMxM1pXSnJhWFF0WW05NExYTm9ZV1J2ZHpvZ01DQXdJRFJ3ZUNCeVoySmhLREFzSURBc0lEQXNJQzQ0S1RzTkNpQWdJQ0F0Ylc5NkxXSnZlQzF6YUdGa2IzYzZJREFnTUNBMGNIZ2djbWRpWVNnd0xDQXdMQ0F3TENBdU9DazdEUW9nSUNBZ1ltOTRMWE5vWVdSdmR6b2dNQ0F3SURSd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DbjBOQ2k1bWIyOWliM2d0Ykc5aFpHVnlJSHNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtPaUFqWm1abUlIVnliQ2hiVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabTl2WW05NEwyeHZZV1JsY2k1bmFXWXBJRzV2TFhKbGNHVmhkQ0JqWlc1MFpYSWdZMlZ1ZEdWeU93MEtJQ0FnSUdKdmNtUmxjaTF5WVdScGRYTTZJRFF3Y0hnN0RRcDlEUW91Wm05dlltOTRMWE5sYkdWamRHVmtJSHNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpPVFU1TlRrMUlXbHRjRzl5ZEdGdWREc05DbjBOQ2cwS0xtWnZiMkp2ZUMxamJHOXpaU3dnTG1admIySnZlQzFwYm1adklIc05DaUFnTFhkbFltdHBkQzFpYjNndGMyaGhaRzkzT2lBd2NIZ2dNSEI0SURod2VDQnlaMkpoS0RJMU5Td2dNalUxTENBeU5UVXNJREF1T0NrN0RRb2dJQzF0YjNvdFltOTRMWE5vWVdSdmR6b2dJQ0FnTUhCNElEQndlQ0E0Y0hnZ2NtZGlZU2d5TlRVc0lESTFOU3dnTWpVMUxDQXdMamdwT3cwS0lDQmliM2d0YzJoaFpHOTNPaUFnSUNBZ0lDQWdJREJ3ZUNBd2NIZ2dPSEI0SUhKblltRW9NalUxTENBeU5UVXNJREkxTlN3Z01DNDRLVHNOQ24wTkNnMEtMbVp2YjJKdmVDMWpiRzl6WlNBc0lDNW1iMjlpYjNndGFXNXVaWElnUGlBdVptOXZZbTk0TFhCc1lYa3NJQzVtYjI5aWIzZ3RhVzV1WlhJZ1BpQXVabTl2WW05NExYQmhkWE5sZXcwS0lDQmliM0prWlhJNklITnZiR2xrSUROd2VDQWpNREF3T3cwS0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpNREF3T3cwS2ZRMEtEUW91Wm05dlltOTRMWEJ5WlhZZ2V3MEtJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqTURBd093MEtmUTBLTG1admIySnZlQzF1WlhoMElIc05DaUFnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpBd01Ec05DbjBOQ2cwS0xtWnZiMkp2ZUMxcGJtNWxjaUI3RFFvZ0lHSnZjbVJsY2kxamIyeHZjam9nSXpBd01Ec05DaUFnWW1GamEyZHliM1Z1WkRvZ0l6QXdNRHNOQ2lBZ0xYZGxZbXRwZEMxaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElEaHdlQ0J5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU9DazdEUW9nSUdKdmVDMXphR0ZrYjNjNklEQndlQ0F3Y0hnZ09IQjRJSEpuWW1Fb01qVTFMQ0F5TlRVc0lESTFOU3dnTUM0NEtUc05DbjBOQ2cwS0xtWnZiMkp2ZUMxc2IyRmtaWElnZXcwS0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQWpNREF3T3cwS0lDQmlZV05yWjNKdmRXNWtMV2x0WVdkbE9uVnliQ2hiVzNKdmIzUmZkWEpzWFYwdmJXOWtkV3hsY3k5VWIyOXNRbTk0TDNSbGJYQnNZWFJsY3k5aGJHSmZabTl2WW05NEwyeHZZV1JsY2k1bmFXWXBPdzBLSUNBdGQyVmlhMmwwTFdKdmVDMXphR0ZrYjNjNklEQndlQ0F3Y0hnZ09IQjRJSEpuWW1Fb01qVTFMQ0F5TlRVc0lESTFOU3dnTUM0NEtUc05DaUFnTFcxdmVpMWliM2d0YzJoaFpHOTNPaUFnSUNBd2NIZ2dNSEI0SURod2VDQnlaMkpoS0RJMU5Td2dNalUxTENBeU5UVXNJREF1T0NrN0RRb2dJR0p2ZUMxemFHRmtiM2M2SUNBZ0lDQWdJQ0FnTUhCNElEQndlQ0E0Y0hnZ2NtZGlZU2d5TlRVc0lESTFOU3dnTWpVMUxDQXdMamdwT3cwS2ZRMEtEUW91Wm05dlltOTRMV2x1Ym1WeUlENGdMbVp2YjJKdmVDMXdjbVYySUhzZ0xYZGxZbXRwZEMxaWIzZ3RjMmhoWkc5M09pQXRNWEI0SURCd2VDQXljSGdnY21kaVlTZ3lOVFVzSURJMU5Td2dNalUxTENBd0xqZ3BPeUF0Ylc5NkxXSnZlQzF6YUdGa2IzYzZJQzB4Y0hnZ01IQjRJREp3ZUNCeVoySmhLREkxTlN3Z01qVTFMQ0F5TlRVc0lEQXVPQ2s3SUdKdmVDMXphR0ZrYjNjNklDMHhjSGdnTUhCNElESndlQ0J5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU9DazdJSDBOQ2k1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMVzVsZUhRZ2V5QXRkMlZpYTJsMExXSnZlQzF6YUdGa2IzYzZJREZ3ZUNBd2NIZ2dNbkI0SUhKblltRW9NalUxTENBeU5UVXNJREkxTlN3Z01DNDRLVHNnTFcxdmVpMWliM2d0YzJoaFpHOTNPaUF4Y0hnZ01IQjRJREp3ZUNCeVoySmhLREkxTlN3Z01qVTFMQ0F5TlRVc0lEQXVPQ2s3SUdKdmVDMXphR0ZrYjNjNklERndlQ0F3Y0hnZ01uQjRJSEpuWW1Fb01qVTFMQ0F5TlRVc0lESTFOU3dnTUM0NEtUc2dmUTBLRFFvdVptOXZZbTk0TFdOc2IzTmxMQ0F1Wm05dlltOTRMV2x1Ym1WeUxDQXVabTl2WW05NExXeHZZV1JsY2lCN0lDMTNaV0pyYVhRdFltOTRMWE5vWVdSdmR6b2dNSEI0SURCd2VDQXhNbkI0SUhKblltRW9NalUxTENBeU5UVXNJREkxTlN3Z01DNDRLVHNnTFcxdmVpMWliM2d0YzJoaFpHOTNPaUF3Y0hnZ01IQjRJREV5Y0hnZ2NtZGlZU2d5TlRVc0lESTFOU3dnTWpVMUxDQXdMamdwT3lCaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElERXljSGdnY21kaVlTZ3lOVFVzSURJMU5Td2dNalUxTENBd0xqZ3BPeUI5RFFvTkNpNW1iMjlpYjNndGNHeGhlU3dnTG1admIySnZlQzF3WVhWelpTQjdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ013TURBN0lIME5DaTVtYjI5aWIzZ3RhVzV1WlhJZ1BpQXVabTl2WW05NExYQnNZWGtzSUM1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMWEJoZFhObElIc2dZbTl5WkdWeU9pQnpiMnhwWkNBemNIZ2dJekF3TURzZ0xYZGxZbXRwZEMxaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElERXljSGdnY21kaVlTZ3lOVFVzSURJMU5Td2dNalUxTENBd0xqZ3BPeUF0Ylc5NkxXSnZlQzF6YUdGa2IzYzZJREJ3ZUNBd2NIZ2dNVEp3ZUNCeVoySmhLREkxTlN3Z01qVTFMQ0F5TlRVc0lEQXVPQ2s3SUdKdmVDMXphR0ZrYjNjNklEQndlQ0F3Y0hnZ01USndlQ0J5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU9DazdJSDBOQ2k1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMWEJzWVhrNmFHOTJaWElzSUM1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMWEJoZFhObE9taHZkbVZ5SUhzZ0xYZGxZbXRwZEMxaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElERXljSGdnY21kaVlTZ3lOVFVzSURJMU5Td2dNalUxTENBd0xqZ3BPeUF0Ylc5NkxXSnZlQzF6YUdGa2IzYzZJREJ3ZUNBd2NIZ2dNVEp3ZUNCeVoySmhLREkxTlN3Z01qVTFMQ0F5TlRVc0lEQXVPQ2s3SUdKdmVDMXphR0ZrYjNjNklEQndlQ0F3Y0hnZ01USndlQ0J5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU9DazdJSDBOQ2cwS0RRb05DZzBLRFFwQWJXVmthV0VnYjI1c2VTQnpZM0psWlc0Z1lXNWtJQ2h0WVhndGQybGtkR2dnT2pNeU1IQjRLU0JoYm1RZ0tHOXlhV1Z1ZEdGMGFXOXVJRHB3YjNKMGNtRnBkQ2tnZXcwS0lDQWdJQzVtYjI5aWIzZ3RhVzV1WlhJdGMzQmhZMlZ5SUhzTkNpQWdJQ0J3WVdSa2FXNW5PaUF4TlhCNElEVndlQ0F6TlhCNElEVndlRHNOQ2dsOURRb0pMbVp2YjJKdmVDMWpiM1Z1ZENCN0RRb0pJQ0FnSUdScGMzQnNZWGs2SUc1dmJtVTdEUW9KZlEwS0NTNW1iMjlpYjNndGNISmxkaXdnTG1admIySnZlQzF1WlhoMElIc05DZ2tnSUNBZ2FHVnBaMmgwT2lBME1IQjRPdzBLQ1NBZ0lDQjNhV1IwYURvZ1lYVjBienNOQ2drZ0lDQWdkRzl3T2lCaGRYUnZPdzBLQ1NBZ0lDQmliM1IwYjIwNklEQTdEUW9KSUNBZ0lHMWhjbWRwYmkxMGIzQTZJR0YxZEc4N0RRb0pmUTBLQ1M1bWIyOWliM2d0Y0hKbGRpQjdEUW9KSUNBZ0lHeGxablE2SURBN0RRb0pJQ0FnSUhKcFoyaDBPaUExTUNVN0RRb0pmUTBLQ1M1bWIyOWliM2d0Ym1WNGRDQjdEUW9KSUNBZ0lHeGxablE2SURVd0pUc05DZ2tnSUNBZ2NtbG5hSFE2SURBN0RRb0pmUTBLQ1M1bWIyOWliM2d0WTJ4dmMyVWdldzBLQ1NBZ0lDQjBiM0E2SURSd2VEc05DZ2tnSUNBZ2NtbG5hSFE2SURSd2VEc05DZ2w5RFFvSkxtWnZiMkp2ZUMxamNtVmthWFFnZXcwS0NTQWdJQ0JpYjNSMGIyMDZJREp3ZURzTkNna2dJQ0FnYkdWbWREb2dNbkI0T3cwS0NYME5DZ2t1Wm05dlltOTRMV055WldScGRDQmxiU0I3RFFvSklDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN0RRb0pmUTBLQ1M1bWIyOWliM2d0WTJGd2RHbHZiaUI3RFFvSklDQWdJR3hwYm1VdGFHVnBaMmgwT2lBeU1IQjRPdzBLQ1NBZ0lDQm9aV2xuYUhRNklESXdjSGc3RFFvSmZRMEtDUzVtYjI5aWIzZ3RZMkZ3ZEdsdmJpMTBhWFJzWlNCN0RRb0pJQ0FnSUdadmJuUXRjMmw2WlRvZ01UTndlRHNOQ2dsOURRb0pMbVp2YjJKdmVDMWpZWEIwYVc5dUxXUmxjMk1nZXcwS0NTQWdJQ0JtYjI1MExYTnBlbVU2SURFeGNIZzdEUW9KSUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF4TlhCNE93MEtDWDBOQ2drdVptOXZZbTk0TFdOaGNIUnBiMjR0ZEdsMGJHVWdLeUF1Wm05dlltOTRMV05oY0hScGIyNHRaR1Z6WXlCN0RRb0pJQ0FnSUhCaFpHUnBibWM2SURBZ00zQjRJRE53ZUNBemNIZzdEUW9KZlEwS0NTNW1iMjlpYjNndGJXOWtZV3dnUGlBdVptOXZZbTk0TFhCeVpYWXNJQzVtYjI5aWIzZ3RiVzlrWVd3Z1BpQXVabTl2WW05NExXNWxlSFFnZXcwS0NTQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF6c05DZ2w5RFFvSkxtWnZiMkp2ZUMxcGJtNWxjaUErSUM1bWIyOWliM2d0Y0hKbGRpd2dMbVp2YjJKdmVDMXBibTVsY2lBK0lDNW1iMjlpYjNndGJtVjRkQ0I3RFFvSklDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN0RRb0pmUTBLZlEwS0RRb05DZzBLRFFvTkNnMEtEUXBBYldWa2FXRWdiMjVzZVNCelkzSmxaVzRnWVc1a0lDaHRZWGd0ZDJsa2RHZzZORGd3Y0hncElHRnVaQ0FvYjNKcFpXNTBZWFJwYjI0Z09teGhibVJ6WTJGd1pTa2dldzBLSUNBZ0lDNW1iMjlpYjNndGFXNXVaWEl0YzNCaFkyVnlJSHNOQ2lBZ0lDQndZV1JrYVc1bk9pQTFjSGc3RFFvSkNYME5DZ2tKTG1admIySnZlQzFqYjNWdWRDQjdEUW9KQ1NBZ0lDQmthWE53YkdGNU9pQnViMjVsT3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0Y0hKbGRpd2dMbVp2YjJKdmVDMXVaWGgwSUhzTkNna0pJQ0FnSUdobGFXZG9kRG9nT0RCd2VEc05DZ2tKSUNBZ0lIZHBaSFJvT2lBek5IQjRPdzBLQ1FrZ0lDQWdkRzl3T2lBMU1DVTdEUW9KQ1NBZ0lDQmliM1IwYjIwNklHRjFkRzg3RFFvSkNTQWdJQ0J0WVhKbmFXNHRkRzl3T2lBdE5EQndlRHNOQ2drSmZRMEtDUWt1Wm05dlltOTRMV05zYjNObElIc05DZ2tKSUNBZ0lIUnZjRG9nTkhCNE93MEtDUWtnSUNBZ2NtbG5hSFE2SURSd2VEc05DZ2tKZlEwS0NRa3VabTl2WW05NExXTnlaV1JwZENCN0RRb0pDU0FnSUNCaWIzUjBiMjA2SURKd2VEc05DZ2tKSUNBZ0lHeGxablE2SURKd2VEc05DZ2tKZlEwS0NRa3VabTl2WW05NExXTnlaV1JwZENCbGJTQjdEUW9KQ1NBZ0lDQmthWE53YkdGNU9pQnViMjVsT3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0WTJGd2RHbHZiaUI3RFFvSkNTQWdJQ0JzYVc1bExXaGxhV2RvZERvZ01qQndlRHNOQ2drSklDQWdJR2hsYVdkb2REb2dNakJ3ZURzTkNna0pmUTBLQ1FrdVptOXZZbTk0TFdOaGNIUnBiMjR0ZEdsMGJHVWdldzBLQ1FrZ0lDQWdabTl1ZEMxemFYcGxPaUF4TTNCNE93MEtDUWw5RFFvSkNTNW1iMjlpYjNndFkyRndkR2x2Ymkxa1pYTmpJSHNOQ2drSklDQWdJR1p2Ym5RdGMybDZaVG9nTVRGd2VEc05DZ2tKSUNBZ0lHeHBibVV0YUdWcFoyaDBPaUF4TlhCNE93MEtDUWw5RFFvSkNTNW1iMjlpYjNndFkyRndkR2x2YmkxMGFYUnNaU0FySUM1bWIyOWliM2d0WTJGd2RHbHZiaTFrWlhOaklIc05DZ2tKSUNBZ0lIQmhaR1JwYm1jNklEQWdNM0I0SUROd2VDQXpjSGc3RFFvSkNYME5DZ2tKTG1admIySnZlQzF0YjJSaGJDQStJQzVtYjI5aWIzZ3RjSEpsZGl3Z0xtWnZiMkp2ZUMxdGIyUmhiQ0ErSUM1bWIyOWliM2d0Ym1WNGRDQjdEUW9KQ1NBZ0lDQmthWE53YkdGNU9pQmliRzlqYXpzTkNna0pmUTBLQ1FrdVptOXZZbTk0TFdsdWJtVnlJRDRnTG1admIySnZlQzF3Y21WMkxDQXVabTl2WW05NExXbHVibVZ5SUQ0Z0xtWnZiMkp2ZUMxdVpYaDBJSHNOQ2drSklDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN0RRb0pDWDBOQ2drSkxtWnZiMkp2ZUMxd2NtVjJJSHNOQ2drSklDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklEQWdNVEJ3ZUNBeE1IQjRJREE3RFFvSkNYME5DZ2tKTG1admIySnZlQzF1WlhoMElIc05DZ2tKSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURFd2NIZ2dNQ0F3SURFd2NIZzdEUW9KQ1gwTkNuME5Da0J0WldScFlTQnZibXg1SUhOamNtVmxiaUJoYm1RZ0tHMXBiaTEzYVdSMGFDQTZNekl4Y0hncElHRnVaQ0FvYldGNExYZHBaSFJvSURvM05qaHdlQ2tnWVc1a0lDaHZjbWxsYm5SaGRHbHZiaUE2Y0c5eWRISmhhWFFwSUhzTkNpQWdJQ0F1Wm05dlltOTRMWEJ5WlhZc0lDNW1iMjlpYjNndGJtVjRkQ0I3RFFvSkNTQWdJQ0IzYVdSMGFEb2dOREJ3ZURzTkNna0pJQ0FnSUdobGFXZG9kRG9nTVRBd2NIZzdEUW9KQ1NBZ0lDQjBiM0E2SURVd0pUc05DZ2tKSUNBZ0lHSnZkSFJ2YlRvZ1lYVjBienNOQ2drSklDQWdJRzFoY21kcGJpMTBiM0E2SUMwMU1IQjRPdzBLQ1FsOURRb0pDUzVtYjI5aWIzZ3RZMnh2YzJVZ2V3MEtDUWtnSUNBZ2RHOXdPaUF0TVRsd2VEc05DZ2tKSUNBZ0lISnBaMmgwT2lBdE1qQndlRHNOQ2drSmZRMEtDUWt1Wm05dlltOTRMVzF2WkdGc0lENGdMbVp2YjJKdmVDMXdjbVYyTENBdVptOXZZbTk0TFcxdlpHRnNJRDRnTG1admIySnZlQzF1WlhoMElIc05DZ2tKSUNBZ0lHUnBjM0JzWVhrNklHSnNiMk5yT3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMWEJ5WlhZc0lDNW1iMjlpYjNndGFXNXVaWElnUGlBdVptOXZZbTk0TFc1bGVIUWdldzBLQ1FrZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlRzTkNna0pmUTBLQ1FrdVptOXZZbTk0TFhCeVpYWWdldzBLQ1FrZ0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01DQXhNSEI0SURFd2NIZ2dNRHNOQ2drSmZRMEtDUWt1Wm05dlltOTRMVzVsZUhRZ2V3MEtDUWtnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTVRCd2VDQXdJREFnTVRCd2VEc05DZ2tKZlEwS0NRbDlEUW9KQ1VCdFpXUnBZU0J2Ym14NUlITmpjbVZsYmlCaGJtUWdLRzFwYmkxM2FXUjBhQ0E2TkRneGNIZ3BJR0Z1WkNBb2JXRjRMWGRwWkhSb0lEb3hNREkwY0hncElHRnVaQ0FvYjNKcFpXNTBZWFJwYjI0Z09teGhibVJ6WTJGd1pTa2dldzBLQ1FrZ0lDQWdMbVp2YjJKdmVDMXdjbVYyTENBdVptOXZZbTk0TFc1bGVIUWdldzBLQ1FrZ0lDQWdkMmxrZEdnNklEUXdjSGc3RFFvSkNTQWdJQ0JvWldsbmFIUTZJREV3TUhCNE93MEtDUWtnSUNBZ2RHOXdPaUExTUNVN0RRb0pDU0FnSUNCaWIzUjBiMjA2SUdGMWRHODdEUW9KQ1NBZ0lDQnRZWEpuYVc0dGRHOXdPaUF0TlRCd2VEc05DZ2tKZlEwS0NRa3VabTl2WW05NExXTnNiM05sSUhzTkNna0pJQ0FnSUhSdmNEb2dMVEU1Y0hnN0RRb0pDU0FnSUNCeWFXZG9kRG9nTFRJd2NIZzdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMXRiMlJoYkNBK0lDNW1iMjlpYjNndGNISmxkaXdnTG1admIySnZlQzF0YjJSaGJDQStJQzVtYjI5aWIzZ3RibVY0ZENCN0RRb0pDU0FnSUNCa2FYTndiR0Y1T2lCaWJHOWphenNOQ2drSmZRMEtDUWt1Wm05dlltOTRMV2x1Ym1WeUlENGdMbVp2YjJKdmVDMXdjbVYyTENBdVptOXZZbTk0TFdsdWJtVnlJRDRnTG1admIySnZlQzF1WlhoMElIc05DZ2tKSUNBZ0lHUnBjM0JzWVhrNklHNXZibVU3RFFvSkNYME5DZ2tKTG1admIySnZlQzF3Y21WMklIc05DZ2tKSUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURBZ01UQndlQ0F4TUhCNElEQTdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMXVaWGgwSUhzTkNna0pJQ0FnSUdKdmNtUmxjaTF5WVdScGRYTTZJREV3Y0hnZ01DQXdJREV3Y0hnN0RRb0pDWDBOQ24wTkNrQnRaV1JwWVNCdmJteDVJSE5qY21WbGJpQmhibVFnS0cxaGVDMTNhV1IwYUNBNk16SXdjSGdwSUdGdVpDQW9iM0pwWlc1MFlYUnBiMjRnT25CdmNuUnlZV2wwS1NCN0RRb2dJQ0FnTG1admIySnZlQzFwYm01bGNpQjdEUW9KQ1NBZ0lDQmliM0prWlhJNklITnZiR2xrSURSd2VDQWpabVptT3cwS0NRa2dJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0T3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0WTJGd2RHbHZiaUI3RFFvSkNTQWdJQ0JtYjI1MExYTnBlbVU2SURFeWNIZzdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMXdjbVYyTENBdVptOXZZbTk0TFc1bGVIUWdldzBLQ1FrZ0lDQWdZbTl5WkdWeUxYSmhaR2wxY3pvZ01Ec05DZ2tKSUNBZ0lDMTNaV0pyYVhRdFltOTRMWE5vWVdSdmR6b2dibTl1WlRzTkNna0pJQ0FnSUMxdGIzb3RZbTk0TFhOb1lXUnZkem9nYm05dVpUc05DZ2tKSUNBZ0lHSnZlQzF6YUdGa2IzYzZJRzV2Ym1VN0RRb0pDWDBOQ2drSkxtWnZiMkp2ZUMxamJHOXpaU0I3RFFvSkNTQWdJQ0JpYjNKa1pYSTZJSE52Ykdsa0lESndlQ0FqUmtaR093MEtDUWtnSUNBZ2IzQmhZMmwwZVRvZ0xqVTdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMWpiRzl6WlRwb2IzWmxjaUI3RFFvSkNTQWdJQ0J2Y0dGamFYUjVPaUF4T3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0WTNKbFpHbDBJSHNOQ2drSklDQWdJRzl3WVdOcGRIazZJQzQxT3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0WTNKbFpHbDBPbWh2ZG1WeUlIc05DZ2tKSUNBZ0lHOXdZV05wZEhrNklERTdEUW9KQ1gwTkNuME5Da0J0WldScFlTQnZibXg1SUhOamNtVmxiaUJoYm1RZ0tHMWhlQzEzYVdSMGFEbzBPREJ3ZUNrZ1lXNWtJQ2h2Y21sbGJuUmhkR2x2YmlBNmJHRnVaSE5qWVhCbEtTQjdEUW9KQ1NBZ0lDQXVabTl2WW05NExXbHVibVZ5SUhzTkNna0pJQ0FnSUdKdmNtUmxjam9nYzI5c2FXUWdOSEI0SUNObVptWTdEUW9KQ1NBZ0lDQmliM0prWlhJdGNtRmthWFZ6T2lBMWNIZzdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMWpZWEIwYVc5dUlIc05DZ2tKSUNBZ0lHWnZiblF0YzJsNlpUb2dNVEp3ZURzTkNna0pmUTBLQ1FrdVptOXZZbTk0TFdOc2IzTmxJSHNOQ2drSklDQWdJR0p2Y21SbGNqb2djMjlzYVdRZ01uQjRJQ05HUmtZN0RRb0pDU0FnSUNCdmNHRmphWFI1T2lBdU5Uc05DZ2tKZlEwS0NRa3VabTl2WW05NExXTnNiM05sT21odmRtVnlJSHNOQ2drSklDQWdJRzl3WVdOcGRIazZJREU3RFFvSkNYME5DZ2tKTG1admIySnZlQzFqY21Wa2FYUWdldzBLQ1FrZ0lDQWdiM0JoWTJsMGVUb2dMalU3RFFvSkNYME5DZ2tKTG1admIySnZlQzFqY21Wa2FYUTZhRzkyWlhJZ2V3MEtDUWtnSUNBZ2IzQmhZMmwwZVRvZ01Uc05DZ2tKZlEwS2ZRMEtRRzFsWkdsaElHOXViSGtnYzJOeVpXVnVJR0Z1WkNBb2JXbHVMWGRwWkhSb0lEb3pNakZ3ZUNrZ1lXNWtJQ2h0WVhndGQybGtkR2dnT2pjMk9IQjRLU0JoYm1RZ0tHOXlhV1Z1ZEdGMGFXOXVJRHB3YjNKMGNtRnBkQ2tnZXcwS0lDQWdJQzVtYjI5aWIzZ3RhVzV1WlhJdGMzQmhZMlZ5SUhzTkNna0pJQ0FnSUhCaFpHUnBibWM2SURNd2NIZzdEUW9KQ1gwTkNna0pMbVp2YjJKdmVDMXBibTVsY2lCN0RRb0pDU0FnSUNCaWIzSmtaWEk2SUhOdmJHbGtJRFp3ZUNBalptWm1PdzBLQ1FsOURRcDlEUXBBYldWa2FXRWdiMjVzZVNCelkzSmxaVzRnWVc1a0lDaHRhVzR0ZDJsa2RHZ2dPalE0TVhCNEtTQmhibVFnS0cxaGVDMTNhV1IwYUNBNk1UQXlOSEI0S1NCaGJtUWdLRzl5YVdWdWRHRjBhVzl1SURwc1lXNWtjMk5oY0dVcElIc05DZ2tKSUNBZ0lDNW1iMjlpYjNndGFXNXVaWEl0YzNCaFkyVnlJSHNOQ2drSklDQWdJSEJoWkdScGJtYzZJRE13Y0hnN0RRb0pDWDBOQ2drSkxtWnZiMkp2ZUMxcGJtNWxjaUI3RFFvSkNTQWdJQ0JpYjNKa1pYSTZJSE52Ykdsa0lEWndlQ0FqWm1abU93MEtDUWw5RFFwOURRb3VabTl2WW05NExYQnliMmR5WlhOeklIc05DaUFnSUNCNkxXbHVaR1Y0T2lBeE1EQXdNRFE3RFFwOURRb3VabTl2WW05NExYQnNZWGtzSUM1bWIyOWliM2d0Y0dGMWMyVWdldzBLSUNBZ0lIb3RhVzVrWlhnNklERXdNREF3TkRzTkNuME5DaTVtYjI5aWIzZ3RjSEp2WjNKbGMzTWdldzBLSUNBZ0lIZHBaSFJvT2lBd0pUc05DaUFnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN0RRb2dJQ0FnWkdsemNHeGhlVG9nYm05dVpUc05DaUFnSUNCMGIzQTZJR0YxZEc4N0RRb2dJQ0FnYkdWbWREb2dNRHNOQ2lBZ0lDQmliM1IwYjIwNklEQTdEUW9nSUNBZ1ltOTRMWE5wZW1sdVp6b2dZbTl5WkdWeUxXSnZlRHNOQ2lBZ0lDQXRiWE10WW05NExYTnBlbWx1WnpvZ1ltOXlaR1Z5TFdKdmVEc05DaUFnSUNBdGJXOTZMV0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN0RRb2dJQ0FnTFhkbFltdHBkQzFpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE93MEtmUTBLTG1admIySnZlQzFwYm01bGNqNHVabTl2WW05NExYQnNZWGtzSUM1bWIyOWliM2d0YVc1dVpYSStMbVp2YjJKdmVDMXdZWFZ6WlNCN0RRb2dJQ0FnZDJsa2RHZzZJREk0Y0hnN0RRb2dJQ0FnYUdWcFoyaDBPaUF5T0hCNE93MEtJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzTkNpQWdJQ0J5YVdkb2REb2dMVEl4Y0hnN0RRb2dJQ0FnWW05MGRHOXRPaUF0TWpGd2VEc05DaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dNamh3ZURzTkNpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3RFFvZ0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsT3cwS0lDQWdJR1JwYzNCc1lYazZJR0pzYjJOck93MEtJQ0FnSUc5MWRHeHBibVU2SUc1dmJtVTdEUW9nSUNBZ1kzVnljMjl5T2lCd2IybHVkR1Z5T3cwS2ZRMEtMbVp2YjJKdmVDMXRiMlJoYkQ0dVptOXZZbTk0TFhCc1lYa3NJQzVtYjI5aWIzZ3RiVzlrWVd3K0xtWnZiMkp2ZUMxd1lYVnpaU0I3RFFvZ0lDQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLSUNBZ0lIUnZjRG9nWVhWMGJ6c05DaUFnSUNCaWIzUjBiMjA2SURBN0RRb2dJQ0FnYkdWbWREb2dNek1sT3cwS0lDQWdJSEpwWjJoME9pQXpNeVU3RFFvZ0lDQWdaR2x6Y0d4aGVUb2dibTl1WlRzTkNpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3RFFvZ0lDQWdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQnViMjVsT3cwS0lDQWdJRzkxZEd4cGJtVTZJRzV2Ym1VN0RRb2dJQ0FnWTNWeWMyOXlPaUJ3YjJsdWRHVnlPdzBLZlEwS0xtWnZiMkp2ZUMxd2NtOW5jbVZ6Y3lCN0RRb2dJQ0FnYUdWcFoyaDBPaUExY0hnN0RRb2dJQ0FnWW1GamEyZHliM1Z1WkRvZ2NtZGlZU2d5TlRVc0lESTFOU3dnTWpVMUxDQXVOU2s3RFFvZ0lDQWdZbTl5WkdWeUxXSnZkSFJ2YlMxc1pXWjBMWEpoWkdsMWN6b2dOWEI0T3cwS2ZRMEtMbVp2YjJKdmVDMXdiR0Y1SUhzTkNpQWdJQ0JpWVdOclozSnZkVzVrT2lBak1EQXdJSFZ5YkNoYlczSnZiM1JmZFhKc1hWMHZiVzlrZFd4bGN5OVViMjlzUW05NEwzUmxiWEJzWVhSbGN5OWhiR0pmWm05dlltOTRMM0JzWVhrdWNHNW5LU0J1YnkxeVpYQmxZWFFnWTJWdWRHVnlJR05sYm5SbGNqc05DbjBOQ2k1bWIyOWliM2d0Y0dGMWMyVWdldzBLSUNBZ0lHSmhZMnRuY205MWJtUTZJQ013TURBZ2RYSnNLRnRiY205dmRGOTFjbXhkWFM5dGIyUjFiR1Z6TDFSdmIyeENiM2d2ZEdWdGNHeGhkR1Z6TDJGc1lsOW1iMjlpYjNndmNHRjFjMlV1Y0c1bktTQnVieTF5WlhCbFlYUWdZMlZ1ZEdWeUlHTmxiblJsY2pzTkNuME5DaTVtYjI5aWIzZ3RhVzV1WlhJK0xtWnZiMkp2ZUMxd2JHRjVMQ0F1Wm05dlltOTRMV2x1Ym1WeVBpNW1iMjlpYjNndGNHRjFjMlVnZXcwS0lDQWdJR0p2Y21SbGNqb2djMjlzYVdRZ00zQjRJQ013TURBN0RRb2dJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dOVEFsT3cwS0lDQWdJQzEzWldKcmFYUXRZbTk0TFhOb1lXUnZkem9nTUNBd0lERXljSGdnY21kaVlTZ3dMQ0F3TENBd0xDQXVPQ2s3RFFvZ0lDQWdMVzF2ZWkxaWIzZ3RjMmhoWkc5M09pQXdJREFnTVRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DaUFnSUNCaWIzZ3RjMmhoWkc5M09pQXdJREFnTVRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DbjBOQ2k1bWIyOWliM2d0YVc1dVpYSStMbVp2YjJKdmVDMXdiR0Y1T21odmRtVnlMQ0F1Wm05dlltOTRMV2x1Ym1WeVBpNW1iMjlpYjNndGNHRjFjMlU2YUc5MlpYSWdldzBLSUNBZ0lDMTNaV0pyYVhRdFltOTRMWE5vWVdSdmR6b2dNQ0F3SURSd2VDQnlaMkpoS0RBc0lEQXNJREFzSUM0NEtUc05DaUFnSUNBdGJXOTZMV0p2ZUMxemFHRmtiM2M2SURBZ01DQTBjSGdnY21kaVlTZ3dMQ0F3TENBd0xDQXVPQ2s3RFFvZ0lDQWdZbTk0TFhOb1lXUnZkem9nTUNBd0lEUndlQ0J5WjJKaEtEQXNJREFzSURBc0lDNDRLVHNOQ24wTkNpNW1iMjlpYjNndGJXOWtZV3crTG1admIySnZlQzF3YkdGNUxDQXVabTl2WW05NExXMXZaR0ZzUGk1bWIyOWliM2d0Y0dGMWMyVWdldzBLSUNBZ0lHaGxhV2RvZERvZ05EQndlRHNOQ2lBZ0lDQjNhV1IwYURvZ1lYVjBienNOQ24wTkNrQnRaV1JwWVNCdmJteDVJSE5qY21WbGJpQmhibVFnS0cxaGVDMTNhV1IwYUNBNk16SXdjSGdwSUdGdVpDQW9iM0pwWlc1MFlYUnBiMjRnT25CdmNuUnlZV2wwS1NCN0RRb2dJQ0FnTG1admIySnZlQzF3Y21WMklIc05DZ2tKSUNBZ0lHeGxablE2SURBN0RRb0pDU0FnSUNCeWFXZG9kRG9nTmpZbE93MEtDUWw5RFFvSkNTNW1iMjlpYjNndGJtVjRkQ0I3RFFvSkNTQWdJQ0JzWldaME9pQTJOaVU3RFFvSkNTQWdJQ0J5YVdkb2REb2dNRHNOQ2drSmZRMEtDUWt1Wm05dlltOTRMWEJ5YjJkeVpYTnpJSHNOQ2drSklDQWdJR2hsYVdkb2REb2dNM0I0T3cwS0NRbDlEUW9KQ1M1bWIyOWliM2d0YVc1dVpYSWdQaUF1Wm05dlltOTRMWEJzWVhrc0lDNW1iMjlpYjNndGFXNXVaWElnUGlBdVptOXZZbTk0TFhCaGRYTmxJSHNOQ2drSklDQWdJR1JwYzNCc1lYazZJRzV2Ym1VN0RRb0pDWDBOQ2drSkxtWnZiMkp2ZUMxdGIyUmhiQ0ErSUM1bWIyOWliM2d0Y0d4aGVTd2dMbVp2YjJKdmVDMXRiMlJoYkNBK0lDNW1iMjlpYjNndGNHRjFjMlVnZXcwS0NRa2dJQ0FnWkdsemNHeGhlVG9nWW14dlkyczdEUW9KQ1gwTkNuME5Da0J0WldScFlTQnZibXg1SUhOamNtVmxiaUJoYm1RZ0tHMWhlQzEzYVdSMGFEbzBPREJ3ZUNrZ1lXNWtJQ2h2Y21sbGJuUmhkR2x2YmlBNmJHRnVaSE5qWVhCbEtTQjdEUW9nSUNBZ0xtWnZiMkp2ZUMxd2NtOW5jbVZ6Y3lCN0RRb0pDU0FnSUNCb1pXbG5hSFE2SUROd2VEc05DZ2tKZlEwS0NRa3VabTl2WW05NExXbHVibVZ5SUQ0Z0xtWnZiMkp2ZUMxd2JHRjVMQ0F1Wm05dlltOTRMV2x1Ym1WeUlENGdMbVp2YjJKdmVDMXdZWFZ6WlNCN0RRb0pDU0FnSUNCaWIzUjBiMjA2SURSd2VEc05DZ2tKSUNBZ0lISnBaMmgwT2lBMGNIZzdEUW9KQ1NBZ0lDQnZjR0ZqYVhSNU9pQXVOVHNOQ2drSmZRMEtDUWt1Wm05dlltOTRMV2x1Ym1WeUlENGdMbVp2YjJKdmVDMXdiR0Y1T21odmRtVnlMQ0F1Wm05dlltOTRMV2x1Ym1WeUlENGdMbVp2YjJKdmVDMXdZWFZ6WlRwb2IzWmxjaUI3RFFvSkNTQWdJQ0J2Y0dGamFYUjVPaUF4T3cwS0NRbDlEUW9KQ1gwTkNna0pRRzFsWkdsaElHOXViSGtnYzJOeVpXVnVJR0Z1WkNBb2JXbHVMWGRwWkhSb0lEb3pNakZ3ZUNrZ1lXNWtJQ2h0WVhndGQybGtkR2dnT2pjMk9IQjRLU0JoYm1RZ0tHOXlhV1Z1ZEdGMGFXOXVJRHB3YjNKMGNtRnBkQ2tnZXcwS0NRa2dJQ0FnTG1admIySnZlQzFwYm01bGNpQStJQzVtYjI5aWIzZ3RjR3hoZVN3Z0xtWnZiMkp2ZUMxcGJtNWxjaUErSUM1bWIyOWliM2d0Y0dGMWMyVWdldzBLQ1FrZ0lDQWdZbTkwZEc5dE9pQXRNVGx3ZURzTkNna0pJQ0FnSUhKcFoyaDBPaUF0TWpCd2VEc05DZ2tKZlEwS0NRbDlEUW9KQ1VCdFpXUnBZU0J2Ym14NUlITmpjbVZsYmlCaGJtUWdLRzFwYmkxM2FXUjBhQ0E2TkRneGNIZ3BJR0Z1WkNBb2JXRjRMWGRwWkhSb0lEb3hNREkwY0hncElHRnVaQ0FvYjNKcFpXNTBZWFJwYjI0Z09teGhibVJ6WTJGd1pTa2dldzBLQ1FrZ0lDQWdMbVp2YjJKdmVDMXBibTVsY2lBK0lDNW1iMjlpYjNndGNHeGhlU3dnTG1admIySnZlQzFwYm01bGNpQStJQzVtYjI5aWIzZ3RjR0YxYzJVZ2V3MEtDUWtnSUNBZ1ltOTBkRzl0T2lBdE1UbHdlRHNOQ2drSklDQWdJSEpwWjJoME9pQXRNakJ3ZURzTkNna0pmUTBLZlEwS1FHMWxaR2xoSUc5dWJIa2djMk55WldWdUlHRnVaQ0FvYldGNExYZHBaSFJvSURvek1qQndlQ2tnWVc1a0lDaHZjbWxsYm5SaGRHbHZiaUE2Y0c5eWRISmhhWFFwSUhzTkNuME5Da0J0WldScFlTQnZibXg1SUhOamNtVmxiaUJoYm1RZ0tHMWhlQzEzYVdSMGFEbzBPREJ3ZUNrZ1lXNWtJQ2h2Y21sbGJuUmhkR2x2YmlBNmJHRnVaSE5qWVhCbEtTQjdEUXA5RFFwQWJXVmthV0VnYjI1c2VTQnpZM0psWlc0Z1lXNWtJQ2h0YVc0dGQybGtkR2dnT2pNeU1YQjRLU0JoYm1RZ0tHMWhlQzEzYVdSMGFDQTZOelk0Y0hncElHRnVaQ0FvYjNKcFpXNTBZWFJwYjI0Z09uQnZjblJ5WVdsMEtTQjdEUXA5RFFwQWJXVmthV0VnYjI1c2VTQnpZM0psWlc0Z1lXNWtJQ2h0YVc0dGQybGtkR2dnT2pRNE1YQjRLU0JoYm1RZ0tHMWhlQzEzYVdSMGFDQTZNVEF5TkhCNEtTQmhibVFnS0c5eWFXVnVkR0YwYVc5dUlEcHNZVzVrYzJOaGNHVXBJSHNOQ24wTkNpNW1iMjlpYjNndGMyOWphV0ZzSUhzTkNpQWdJQ0I2TFdsdVpHVjRPaUF4TURBd01ETTdEUW9nSUNBZ2NHOXphWFJwYjI0NklISmxiR0YwYVhabE93MEtJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPdzBLSUNBZ0lIQmhaR1JwYm1jNklEVndlRHNOQ2lBZ0lDQXRkMlZpYTJsMExXSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3RFFvZ0lDQWdMVzF2ZWkxaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPdzBLSUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3RFFwOURRb3VabTl2WW05NExYTnZZMmxoYkM1bWIyOWliM2d0ZEc5d0lIc05DaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN0RRcDlEUW91Wm05dlltOTRMWE52WTJsaGJDNW1iMjlpYjNndGRHOXdiR1ZtZENCN0RRb2dJQ0FnZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHNOQ24wTkNpNW1iMjlpYjNndGMyOWphV0ZzTG1admIySnZlQzEwYjNCeWFXZG9kQ0I3RFFvZ0lDQWdkR1Y0ZEMxaGJHbG5iam9nY21sbmFIUTdEUXA5RFFvdVptOXZZbTk0TFhOdlkybGhiQzVtYjI5aWIzZ3RZbTkwZEc5dElIc05DaUFnSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN0RRb2dJQ0FnWW05MGRHOXRPaUF3T3cwS0lDQWdJSGRwWkhSb09pQXhNREFsT3cwS0lDQWdJSFJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanNOQ24wTkNpNW1iMjlpYjNndGMyOWphV0ZzTG1admIySnZlQzFpYjNSMGIyMXNaV1owSUhzTkNpQWdJQ0J3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3RFFvZ0lDQWdZbTkwZEc5dE9pQXdPdzBLSUNBZ0lIZHBaSFJvT2lBeE1EQWxPdzBLSUNBZ0lIUmxlSFF0WVd4cFoyNDZJR3hsWm5RN0RRcDlEUW91Wm05dlltOTRMWE52WTJsaGJDNW1iMjlpYjNndFltOTBkRzl0Y21sbmFIUWdldzBLSUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUc05DaUFnSUNCaWIzUjBiMjA2SURBN0RRb2dJQ0FnZDJsa2RHZzZJREV3TUNVN0RRb2dJQ0FnZEdWNGRDMWhiR2xuYmpvZ2NtbG5hSFE3RFFwOURRb3VabTl2WW05NExYTm9iM2N0WTJGd2RHbHZiaUF1Wm05dlltOTRMWE52WTJsaGJDNW1iMjlpYjNndFltOTBkRzl0TENBdVptOXZZbTk0TFhOb2IzY3RZMkZ3ZEdsdmJpQXVabTl2WW05NExYTnZZMmxoYkM1bWIyOWliM2d0WW05MGRHOXRiR1ZtZEN3Z0xtWnZiMkp2ZUMxemFHOTNMV05oY0hScGIyNGdMbVp2YjJKdmVDMXpiMk5wWVd3dVptOXZZbTk0TFdKdmRIUnZiWEpwWjJoMElIc05DaUFnSUNCaWIzUjBiMjA2SURNd2NIZzdEUXA5RFFvdVptOXZZbTk0TFhOdlkybGhiQ0JoSUhzTkNpQWdJQ0IzYVdSMGFEb2dNekp3ZURzTkNpQWdJQ0JvWldsbmFIUTZJRE15Y0hnN0RRb2dJQ0FnWW1GamEyZHliM1Z1WkRvZ2RYSnNLRnRiY205dmRGOTFjbXhkWFM5dGIyUjFiR1Z6TDFSdmIyeENiM2d2ZEdWdGNHeGhkR1Z6TDJGc1lsOW1iMjlpYjNndmMyOWphV0ZzYzNCeWFYUmxMbkJ1WnlrZ2JtOHRjbVZ3WldGME93MEtJQ0FnSUcxaGNtZHBiam9nTlhCNE93MEtJQ0FnSUhSbGVIUXRhVzVrWlc1ME9pQXRPVGs1T1hCNE93MEtJQ0FnSUc5d1lXTnBkSGs2SUM0MU93MEtJQ0FnSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6c05DbjBOQ2k1bWIyOWliM2d0YzI5amFXRnNMbVp2YjJKdmVDMXlhV2RvZENCaElIc05DaUFnSUNCMFpYaDBMV2x1WkdWdWREb2dPVGs1T1hCNE93MEtmUTBLTG1admIySnZlQzF6YjJOcFlXd2dZUzVtYjI5aWIzZ3RabUZqWldKdmIyc2dldzBLSUNBZ0lHSmhZMnRuY205MWJtUXRjRzl6YVhScGIyNDZJREFnTURzTkNuME5DaTVtYjI5aWIzZ3RjMjlqYVdGc0lHRXVabTl2WW05NExXZHZiMmRzWlMxd2JIVnpJSHNOQ2lBZ0lDQmlZV05yWjNKdmRXNWtMWEJ2YzJsMGFXOXVPaUF0TXpKd2VDQXdPdzBLZlEwS0xtWnZiMkp2ZUMxemIyTnBZV3dnWVM1bWIyOWliM2d0ZEhkcGRIUmxjaUI3RFFvZ0lDQWdZbUZqYTJkeWIzVnVaQzF3YjNOcGRHbHZiam9nTFRZMGNIZ2dNRHNOQ24wTkNpNW1iMjlpYjNndGMyOWphV0ZzSUdFdVptOXZZbTk0TFhCcGJuUmxjbVZ6ZENCN0RRb2dJQ0FnWW1GamEyZHliM1Z1WkMxd2IzTnBkR2x2YmpvZ0xUazJjSGdnTURzTkNuME5DaTVtYjI5aWIzZ3RjMjlqYVdGc0lHRXVabTl2WW05NExXeHBibXRsWkdsdUlIc05DaUFnSUNCaVlXTnJaM0p2ZFc1a0xYQnZjMmwwYVc5dU9pQXRNVEk0Y0hnZ01Ec05DbjBOQ2k1bWIyOWliM2d0YzI5amFXRnNJR0U2YUc5MlpYSWdldzBLSUNBZ0lHOXdZV05wZEhrNklERTdEUXA5RFFwQWJXVmthV0VnYjI1c2VTQnpZM0psWlc0Z1lXNWtJQ2h0WVhndGQybGtkR2dnT2pFd01qUndlQ2tnZXcwS0lDQWdJQzVtYjI5aWIzZ3RjMjlqYVdGc0lIc05DaUFnSUNCd1lXUmthVzVuT2lBemNIZzdEUXA5RFFvdVptOXZZbTk0TFhOdlkybGhiQ0JoSUhzTkNpQWdJQ0IzYVdSMGFEb2dNalJ3ZURzTkNpQWdJQ0JvWldsbmFIUTZJREkwY0hnN0RRb2dJQ0FnYldGeVoybHVPaUEwY0hnZ05YQjRPdzBLZlEwS0xtWnZiMkp2ZUMxemIyTnBZV3dnWVM1bWIyOWliM2d0Wm1GalpXSnZiMnNnZXcwS0lDQWdJR0poWTJ0bmNtOTFibVF0Y0c5emFYUnBiMjQ2SURBZ0xUTXljSGc3RFFwOURRb3VabTl2WW05NExYTnZZMmxoYkNCaExtWnZiMkp2ZUMxbmIyOW5iR1V0Y0d4MWN5QjdEUW9nSUNBZ1ltRmphMmR5YjNWdVpDMXdiM05wZEdsdmJqb2dMVEkwY0hnZ0xUTXljSGc3RFFwOURRb3VabTl2WW05NExYTnZZMmxoYkNCaExtWnZiMkp2ZUMxMGQybDBkR1Z5SUhzTkNpQWdJQ0JpWVdOclozSnZkVzVrTFhCdmMybDBhVzl1T2lBdE5EaHdlQ0F0TXpKd2VEc05DbjBOQ2k1bWIyOWliM2d0YzI5amFXRnNJR0V1Wm05dlltOTRMWEJwYm5SbGNtVnpkQ0I3RFFvZ0lDQWdZbUZqYTJkeWIzVnVaQzF3YjNOcGRHbHZiam9nTFRjeWNIZ2dMVE15Y0hnN0RRcDlEUW91Wm05dlltOTRMWE52WTJsaGJDQmhMbVp2YjJKdmVDMXNhVzVyWldScGJpQjdEUW9nSUNBZ1ltRmphMmR5YjNWdVpDMXdiM05wZEdsdmJqb2dMVGsyY0hnZ0xUTXljSGc3RFFwOURRcDlEUXBBYldWa2FXRWdiMjVzZVNCelkzSmxaVzRnWVc1a0lDaHRZWGd0ZDJsa2RHZ2dPak15TUhCNEtTQmhibVFnS0c5eWFXVnVkR0YwYVc5dUlEcHdiM0owY21GcGRDa2dldzBLSUNBZ0lDNW1iMjlpYjNndGMyaHZkeTFqWVhCMGFXOXVJQzVtYjI5aWIzZ3RjMjlqYVdGc0xtWnZiMkp2ZUMxaWIzUjBiMjBzSUM1bWIyOWliM2d0YzJodmR5MWpZWEIwYVc5dUlDNW1iMjlpYjNndGMyOWphV0ZzTG1admIySnZlQzFpYjNSMGIyMXNaV1owTENBdVptOXZZbTk0TFhOb2IzY3RZMkZ3ZEdsdmJpQXVabTl2WW05NExYTnZZMmxoYkM1bWIyOWliM2d0WW05MGRHOXRjbWxuYUhRZ2V3MEtJQ0FnSUdKdmRIUnZiVG9nTVRWd2VEc05DbjBOQ2cwS0RRbz08L3RwbGNzcz4KCTx0cGxqcz5QSE5qY21sd2RDQjBlWEJsUFNKMFpYaDBMMnBoZG1GelkzSnBjSFFpSUhOeVl6MGlXMXR5YjI5MFgzVnliRjFkTDIxdlpIVnNaWE12Vkc5dmJFSnZlQzkwWlcxd2JHRjBaWE12WVd4aVgyWnZiMkp2ZUM5bWIyOWliM2d0TVM0ekxqRXViV2x1TG1weklqNDhMM05qY21sd2RENE5Danh6WTNKcGNIUWdkSGx3WlQwaWRHVjRkQzlxWVhaaGMyTnlhWEIwSWo0dktpQkdiMjlDYjNnZ2FXNXBkQ0JqYjJSbElDb3ZEUW9vWm5WdVkzUnBiMjRvSUVaUFQwSlBXQ3dnSkN3Z2RXNWtaV1pwYm1Wa0lDa2dldzBLSUNCR1QwOUNUMWd1YnlBOUlIdGtaV1Z3YkdsdWEybHVaeUE2SUhzZ1pXNWhZbXhsWkRvZ1ptRnNjMlVnZlN3Z1lXWm1hV3hwWVhSbElEb2dleUJsYm1GaWJHVmtPaUJtWVd4elpTQjlMQ0JsY25KdmNqb2dleUJ6Y21NNklDZGJXM0p2YjNSZmRYSnNYVjB2Ylc5a2RXeGxjeTlVYjI5c1FtOTRMM1JsYlhCc1lYUmxjeTloYkdKZlptOXZZbTk0TDJWeWNtOXlMbkJ1Wnljc0lHMWxjM05oWjJVNkowaHZjSEJzWVN3Z1pHRnpJRUpwYkdRZ2EyOXViblJsSUc1cFkyaDBJR2RsYkdGa1pXNGdkMlZ5WkdWdUp5QjlMQ0J6Ykdsa1pYTm9iM2M2SUhzZ1pXNWhZbXhsWkRwMGNuVmxmU3dnYzI5amFXRnNPaUI3SUdWdVlXSnNaV1E2SUdaaGJITmxJSDBzSUhCeVpXeHZZV1JKYldGblpYTTZkSEoxWlgwN0RRb2dJRVpQVDBKUFdDNXBibWwwSUQwZ1puVnVZM1JwYjI0b0tTQjdEUW9nSUNBZ0pDZ2lMbVp2YjJKdmVDMXRiMlJoYkNJcExuSmxiVzkyWlNncE93MEtJQ0FnSUNRb0lpNW1iMjlpYjNndGJHbHVheUlwTG5KbGJXOTJaVU5zWVhOektDSm1iMjlpYjNndGJHbHVheUlwT3cwS0lDQWdJQ1FvWkc5amRXMWxiblFwTG1admIySnZlQ2hHVDA5Q1QxZ3VieWs3RFFvTkNpQWdmVHNOQ24wb0lIZHBibVJ2ZHk1R1QwOUNUMWdnUFNCM2FXNWtiM2N1Ums5UFFrOVlJSHg4SUh0OUxDQnFVWFZsY25rZ0tTazdEUW9OQ21wUmRXVnllU2htZFc1amRHbHZiaWdrS1NCN0RRb2dJRVpQVDBKUFdDNXBibWwwS0NrN0RRcDlLVHNOQ2p3dmMyTnlhWEIwUGcwS0RRbz08L3RwbGpzPgoJPHRwbG1vYmlsZWNvZGU+PC90cGxtb2JpbGVjb2RlPgoJPHRwbG1vYmlsZWNzcz48L3RwbG1vYmlsZWNzcz4KCTx0cGxtb2JpbGVqcz48L3RwbG1vYmlsZWpzPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vYmcucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBQTlKUkVGVWVOcGlVRlJVUEFNUVlBQUIrZ0V3dmJWWDFRQUFBQUJKUlU1RXJrSmdnZz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vY2xvc2UucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFOanI5UndVcWdBQUFDQmpTRkpOQUFDSER3QUFqQTBBQVBtVEFBQ0U1UUFBZTRJQUFPdDFBQUEvdEFBQUlsaDFhMTZjQUFBQzBXbERRMUJKUTBNZ1VISnZabWxzWlFBQU9NdU5sTTlMRkdFWXg3K3pqUmdvUVdCbWU0aWhRMGlvVEJabFJPV3V2OWkwYlZsL2xCTEU3T3k3dTVPenM5UE03Sm9pRVY0Nlp0RTlLZzhlK2dNOGVPaVVsOExBTEFMcGJsRkVncGVTN1hsbnh0MFI3Y2NMTS9ONW54L2Y1M25mNFgyQkdsa3hUVDBrQVhuRHNaSjlVZW42NkpoVSt4RWhIRUVkd3FoVFZOdU1KQklEb01GanNXdHN2b2ZBdnl1dGUvdi9PdXJTdHBvSGhQMUE2RWVhMlNxdzd4ZlpDMWxxQkJDNVhzT0VZenJFOXpoYm52MHg1NVRIODY1OUtObEZ2RWg4UURVdEh2K2F1RVBOS1dtZ1JpUnV5UVppVWdITzYwWFY3K2NnUGZYTUdCNms3M0hxNlM2emUzd1dadEpLZHo5eEcvSG5OT3Z1NFpyRTh4bXROMGJjVE05YXh1b2Q5bGc0b1RteElZOURJNFllSC9DNXlVakZyL3Fhb3VsRWs5djZkbW13Wjl0K1M3bWNJQTRUSjhjTC9UeW1rWEk3cDNKRDF6d1c5S2xjVjl6bmQxWXh5ZXNlbzVnNVUzZi9GL1VXZW9WUjZHRFFZTkRiZ0lRaytoQkZLMHhZS0NCREhvMGlOTEl5TjhZaXRqRytaNlNPUklBbDhxOVR6cnFiY3h0Rnl1WlpJNGpHTWROU1VaRGtEL0pYZVZWK0tzL0pYMmJEeGVhcVo4YTZxYW5MRDc2VExxKzhyZXQ3L1o0OGZaWHFSc2lySTB2V2ZHVk5kcURUUUhjWll6WmNWZUkxMlAzNFptQ1ZMRkNwRlNsWGFkeXRWSEo5TnIwamdXcC8yajJLWFpwZWJLcldXaFVYYnF6VUwwM3YyS3ZDcmxXeHlxcDJ6cXR4d1h3bUhoVlBpakd4UXp3SFNid2tkb29YeFc2YW5SY0hLaG5EcEtKaHdsV3lvVkNXZ1VueW1qdittUmNMNzZ5NW82R1BHY3pTVkltZi80UlZ5R2c2Q3h6UmY3ai9jL0I3eGFPeEl2RENCZzZmcnRvMmt1NGRJalF1VjIzT0ZlRENON29QM2xadHpYUWVEajBCRnM2b1JhdmtTd3ZDRzRwbWR4dys2U3FZazVhV3pUbFN1eXlmbFNKMEpURXBacWh0TFpLaTY1THJzaVdMMmN3cXNYUWI3TXlwZGsrbG5uYWw1bE81dkVIbnIvWVJzUFd3WFA3NXJGemVlazQ5ckFFdjlkL0F2UDFGR05VWmlnQUFBQWx3U0ZsekFBQU93d0FBRHNNQngyK29aQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJSFl6TGpVdU5ENk56SFlBQUFFMFNVUkJWRWhMeFphOURZTkFESVdwa0pBb0tGbUNWVElETFFOUXNRUlNwTFFNa0JsU3BjME1WTmtnVWxyeUhQa1FYTzdIUWNSQmVoSndQbi9ZNXp1Y0pJSnJtcVlNT2tCSDZBTGRXSFJQNzJnc0U3Z0ttOEJKQ1oyZ0p4Uzd5SVpzeTAxZ1RPeWdSNHppR0tjNW5Saks2VHR2QU5sVHlFYzR6VEJJb2VzT01PT0NmS1hlYURFNDdBZ3pyZ1luRUtQMUQyREdaYjJDNG0wTzNSMUFpcmhnaGFLUDJaSHZmSWJpb2ZWRVZ5eS96SlB5VmNyNDQxenUyaVZ3bEFCcGdnWDlXSjhBY0h3RFlWQUYxczY1NEF3TmpmbGNWZ1JzSXNYaXJqSkg2UW1xdkNGZ0w2ak9LRlFBSTB4dnIwbUk3WVVLWWVSNytBdFFQYVhxUmFPN0xYZ3Y2bTE4QnFvZmJicUhOMGVwOTNzeXA5UVhHMWh3T00wbS9sTUtKcm90QnFlV2VsQ2RKc3I2MmVxMGlSWlVyeEcyd0x1MStpODllQndkK0pjdENRQUFBQUJKUlU1RXJrSmdnZz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vZXJyb3IucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUG9BQUFENkNBWUFBQUNJN0ZvOUFBQUFDWEJJV1hNQUFBN0NBQUFPd2dFVktFcUFBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQWNQcEpSRUZVZU5yc25YVjRYR1hhLzU5NEpsNUgya0lOYll1MlNFdUJVcVJBMGNYZFlYRXQ3bHJhSkRNWmphZmVKdU16NTR4UHBCcWR6Q1NwNERWa1lXSGxmWCt2ZjM1L25FbmFRbUhaM1NwN251djZYcE5LSmpPVDh6bVAzUGY5dlFVZ1ZLbFM5ZHVXK2lHb1VxV0Nya3FWS2hWMFZhcFVxYUNyVXFWS0JWMlZLbFVxNktwVXFWSkJWNlZLbFFxNktsV3FWTkJWcVZKQlY2VktsUXE2S2xXcVZOQlZxVktsZ3E1S2xTb1ZkRldxVkttZ3ExS2xTZ1ZkbFNwVkt1aXFWS21ncTFLbFNnVmRsU3BWS3VpcVZLbFNRVmVsU3BVS3VpcFZxbFRRVmFsU3BZS3VTcFVxRlhSVnFsVFExUTlCbFNvVmRGV3FWS21ncTFLbFNnVmRsU3BWS3VpcVZLbFNRVmVsU3BVS3VpcFZxbFRRVmFsU3BZS3VTcFVLdWlwVnFsVFFWYWxTcFlLdVNwVXFGWFJWcWxTcG9LdFNwVW9GWFpVcVZTcm9xbFNwVWtGWHBVb0ZYWlVxVlNyb3FsU3BVa0ZYcFVxVkN2by8vQUxWOFl0ajl1eUxNMmJNbUs0NWJNUmh3MHQxWmVPZmUvR0ZFODQ1ZitiTS9LSkI5MDA2NWVUWGI3bjk5amN2bXpQbm5Rc3V2dkM5ODJhZC8vNk1tVFBtblgvaHpIa1hYRHpydlV1dnVPeWQyKzY4ODgxSnA1ejZabDdSb0lkUE91MzB5NTU0OXRuSjg0cEx4bzgvWnNMd1UwK2RuSFB6elRka1RabHlXb3I2U2YvdG9ZS3VncjdYeGxuVHBxZGVmZTJjM1BmZmYzdlVzY2RPdUhUV3JKbFBubjMybWU4WEZSVjZ4eDB6SVQ1cXpKaStJU09HZjVHZGwvdHRabmJXWC9MejgvK2FrNXZ6YjVwY3piOXA4algvbmxPWTgrL1orZG4vcnNuVi9GdE9YczYvNVJjVS9EVXJOK2V2R1JyTkh3c0dEOTQrZXN6Ukc4Y2ZkMnhpOExDaDhpbW5URjV3N2JWWFBYL3FxU2ZmK05oamowdzQ5L3daK2FkUE9UVlYvUzJvb0t1ZzcrVngrcGxuNUUwKzliUWpmM2Y5VGVlZVBlMjh1YWVlUG1YNTRHR0RlZ3VLOHYrU2xwSDJQMElJUklwQXBBbUVTRUdrWlpHYW5rMW1WaTVaZVVYa0ZBNmhZTWpoREI0K21zRWpqbUxJaUtNVkRUK0t3aUZIa2xzMEhFMWVFZGs1aGFSbjVTSlNNaEFpVlhrdUlSQkNrSmFSOXI4RmcvTC92WEJRL3NjblRqNng0YlRUcDc1M3haVy91MmpxdExOSFR6amgyRUlWY1JWMEZmUi9ZSng1NXBtSFh6Sm45bmt6TDdyZzJXTk9PTjR4ZVBqaG40cTBMSVJJVDhLWFRXcEdJUVdEanVUSW80N254TWxuTXYzYzJWeDArVzFjZjhzVDNQUFF5enoyelB2TWZVWExhKytZZWV1RGF0NWJzSVQzRnl6bC9lSmx2UGZoWXQ2ZHQ1ZzMzNnZsNVRkTlBQZFNDWTgvOHo1M1AvQVMxOXo0Q0JkY2VodFR6cjZVaWFkTTRlanh4ekZvNk9Ga1pPY2pVaklINEJjcGdzRWpobTBiT1dhMGY4YXM2UytlZThuMGkwNmFPbW1VQ3JvS3VncjZMNHc1YytZTVBlbWtrK2FjZU9LSkM4YU9IYmNtdTZEZ3Z3YWdFbGxrNTQ5ZzFKaEpuREg5Q3E2ODVtRWVmZng5M25xdkJtTzVpOFhMb2pnOW5iaDlHL0g0TnlPSFBzWVgrUlE1L0FsUzZHTzh3WTE0Z2oxNEFnbmNnUVR1WUFKM3NBZFBxQWR2Y0JOdS95WWNVaDkyYnc5V1Y1eWxEZTBzWExhYThpcVplUXVXOCtLckZ1NTc0QzJ1dVBvUnpqN25Sc2FNUDVXY29pRTdaLzFVUVVaaHh2OGVmdlNJOXJGang1U2VmZGJaMTl4OTk5M0RWTkJWMEZYUWhSQUdneUZsenB3cnBwMXd3Z25GSTQ4OG9xT29xUEF2QTNDbjUzUEVVU2R5N3F4cnVQdWg1M25qdlhJczFXNnNybFk4Y2dKL2FBUEI2Q1lDMFkzNGduMTRmRDI0ZkwwNGZiM1lwUVIydVFlSG5NQWg5K0NRWTlqbGRrVytkaHkramdFNWZRbWNjby95UFZKY2taekFJZlhnOG03RTd1N0Y1dXloM2hwajBiTDFXQ3FqZkxDZ2dXZGUwSFA3dlM5eTdxenJHRFYrRXFtNWhRT3ovYUNpd3Y4M2V2U29qcU9QUHNwMDFWVlhuYXVDcm9MK0x3bjYxTE9tREQxLzVybjNIWC9pY2RHQ292enZVdE5TRVVLUWxaM0h1SEhIYzhXVk4vTENhMW9xRi9sd3lPMUlvUVMreUVhazBBYThnUjVjdmhnT3VRT24zSUZUN3NRcEtWL2JmUjAwU0syczlLeWpRV3JGS3JkaGxkdG9rRHBvOE1ZVWVXSllwVzVGY2pkV3VSMmJydzJidngyYnIxMTU5TGZqOEhYaWtCUTU1UzRjVWhjMmJ3Y09xWk42ZXcrTGw4ZXBXYmdPVTJXSWVTVXJlZkw1RXVaY2RUY1RqcGxJZG5ZdVFnalNNOUxKTDhqNzQvaGp4amRObTM3MkswOC85Y1FSS3VncTZMOXAwQytlYzBucTFMUE9PTzZpeXk1K3JXaFk0YWNpWGZ5ZlNCR2tacWR4K0poeFhIekZUYnorbHBrbHk5ZmdsamZnRFczRUhlakY2ZXVmbWZzVkgvamFMc1d4ZW1MWXZMdXFlNWZIWDZQWTM1RHlmNVNmRzhmcFMrRHk5ZUtRZWxqcDdHU1pyWTFGSzlkU3VTaUtxU3FBVnUva3VSZkxtRDNuTmthUFA0SDA3SXlCNWYzZ1FmbGZubjMybFBubm56OWo0bzAzM3BDcWdxNkMvcHNDL2RTelQ1MTAybG1ueng4MGRNZ2ZsT1Z0S3ZtRGhuSEtHZWZ3eURNdlU3UEVoUzhjSXhqZGlFZnV3K2xSbHRMOU1OcWwrSTlnM3duNnJ3ZjZuOU9lZnZhdWY3WkozU3l6dGxHN2FCMFYxVTFVMUlUNHNHUXA5ei84RWxPbVhjeWdJVWNtVC9NRmd3Y1ArZE01TTg0cG5qajV4Q2txNkNyb2h6em9WMXgrNWNrbm4zcUtmdmlvNFZ2Njk2K0RSNHpta2l0dTVhMzNMVGk4YllRYU4rTVBiOFR0UytEMHhuRjZFOWpkTVd5ZTJFRVBlcjkydnNZZTNOSUdHdXpkTEZxNmxzcmFScXJyR2pHVkIzbnBGVE9YWDM0blJ4eCtBa0lvcy95Z0lVTy9HM2ZNK05xYmI3NzVRaFYwRmZSRGJseDQ0WVVqVGoxMTZodUhIVGJ5YzVHU2hSQ0NvU05IODd0Yjc2WEV1QlJQc0p0ZzAwZDRmQnR4dUhxeHV4STRQVDFKMEdNNDlyRDAzaFdzWFFIYlg5clR6N2J1Y2pPeWVtTFl2ZDNZUGUyNHBFNDh2amdPVHhkTFY2eWp1cTZacXVvb0ZaVWgzbjEzSVRmYy9EaWp4cHlFRUJwRXVvWWpqeHo1eDVOUFBzbnd5aXV2SEs2Q3JvSiswSTgzMzNvbGEvYWxsOXd6ZlBoaGZSbnBlUWlSd2FEQm81bHovZDBZYTYxNHdoM0kwUjY4b1I3czNtNXNyaGdPZHdLSEo0N0QwNDNERThQaDZjTGg2ZHF2RU84OWRlSHd0dUx3cnNmaGJjWHBiY2ZqUytDVXVsaGUzMHAxN1NvcXFxTllxb0xNSzE3T2RUYyt3V0ZIVGxLU2N0SlNHRGx5WlB5Y2M4NTU5YlhYWHRPb29LdWdINVRqL0pubm5EVngwckhCbEZUeGYwSUk4bktIYzhXbHQxQlI0Y0FUN3NFVlN0QWdkOUFnZFdLWFl6ajgzVGprRGh6ZU5oeWVEaHllemdISUQxM1F1MzkwdytyRTRlM0U1ZTNDTGZmaGtUZXpvcUVMUzJVanBvb29sVFV0dlBmaENxNjY2bG9HRlNuaHVkVFVGQ1pObXVTNytaYWJwNnVncTZBZk5PT3lPUmNQdTJqMnJPY0xCeFg4SUlRZ05TT0hNODZjeGJ2dldnZ0dFZ1JDbTdCSjhWM0NXakVhcEU0YXBDN3NVZ2QyYndkMmJ5ZDJUeWQyYjB5UkozWklRbTczeHJGN0VrbkZjVWh4WEw0RURrOE1tN3NidXllQjI3OEJoN2VYUlN2V295OFBvalBMMU5USXZQcXFsalBQdXBnc2pRSjhlbmJHbjZlY2RjWXJNeStjZllRS3VncjZBUjJYejVrejllaHhSMGVWUEhQQmtVY2Z6KytmZUJXYmF3M2hwczI0cEQ0Y25oN3MzbC9hVDhjUDJkbjcxOGo2a3o4ck56R25MMEdEcDVPcXhVMlVHU09ZS3hveFYvcDQ4TkhYR1hQTVNVcldYVVltaHgwNWV1MXBVODY4U0FWZEJYMi9qOXR1dXluOXV0Lzk3dEZodzQvWUprUW1xWmxGekpyOU8welZLd2syeHZCSDRqaTluVGc5Y1p6ZW50ODB5UDhRL0o0WWRpbXVaT1I1NDlUYjQxUlVOVkptbEtpdUM3TkF1NUpMNTl4TFZzNXdoRWdscjNEUWQ1ZGRQdWV0a3RMaUhCVjBGZlQ5TXQ1Ly83WERUenp4MklhMDlNei9GaUtURVVlY3lKUFB6Y2ZsYThjWDdzSWx0ZUtTT25CSjNUaTljZHh5NzM0L0lUOGtsdm5KMDN1SG5NRGoyNERUMDB2dG9sWG9UVDRzbFZIS0s1cDU4dGxpUm8rZnFCVHpwS1J5MXJTem9yTXVQTzhVRlhRVjlIMDZMcDE5eWVsang0MXVGaW1DbEl4Y3pweCtHV1VXQjFKd0V5NDVsanhVMi9WZzdkRGRiKy9YQXp4M0hLZEhpY0V2VzltSndSU21WQmVrdkNiQ0I5cUZ6TGp3V2xLekNoRWloWUtpL0kvdmYrQ2VpMVhRVmREM3liajMzbnZ2ek12TC9Wb0lnU2Eza052dWVnU2JaelhlU0I4MnVVYzVmQm9JazNVUG5EcmJ2U3JvdndaMGh6dUJ3eDNITGZWaHRjZW9xRzZrV085QlYrSERVaGZnNWp1ZnBHaklTSVJJcGFDbzhJOVhYMzMxazQ4Ly9uaUtDcm9LK2w0Wlo1ODlKV1BLMUNtdlptVmwvNWNRZ2hHSGorWDVWejhnMU55TkZJNWprN3Rva0x0eGVCTURGNnNDdkJKaXNudTdWSmgvRmVoeEhPNXVuTjV1dklGZUhKNU9haGF2b2RnWXB0VGtvMjVaSTgrOXRJQ2p4azhlU0tVOWYrYjU4MTk0NGJuQkt1Z3E2UC9VbUhudU9RV1RKeDlmS1ZKU0VDS05TU2VmUjZuSlNYalZwN2dEUGRpOHlxR1NkU0MwMUsxa2grMGlGZVJmdVdmMzdDeXlzWHU3Y2NqZE9LUStGcTFvUjJmeW9UVzVxVndVNHYzU3haeDh4a1VJSVVoSlQrSE1zNlkyWEhmZDFZTlUwRlhRLzZGUlBPK0RRU2NjZDh5U3RMUTBoTWprN0dtWFVyWFFUNkQ1VTV5K1hxd2VGYzc5Y1dEbjh2ZXd6TGFPc25LSllvTVRTMjJRVXJPRG1iT3ZJUzFEU1MrZU9PbTQ4SVd6emp0YUJWMEYvZThheno3NzVPQ0pFMCt3Q1NGSVRkTncyWnhic0RuVzRROXR4QzRuQm9vODFOUDBmUXk2M0luRDE0RmQ3cVRlM1lHbE5zVDhNamY2OGhDV1NoKy91K0Voc2pRRkNDRVlQMzVNeTFsbm5uVzBDcm9LK3E4YVR6MzE1TkR4RTQ1MktmblgyVng3M2IyNHZPM0lnWTA0cFI1c1VyY0srSDREdlFPN3ZCNjczSUhEMTAyRHV4dHpkWlJpdlIrOXFaSEsyZ2czMy9Fb1dabzhoQkFjZmRTWU5WT21uakZTQlYwRi9XL0V5RDg0N0poakpyaUZFR1JtNW5MRHpRL2hranZ3aFRjcUJSdXlDdC8rTHBLeGVUdXdlVHVUcTZnZTZwMWRtS3JERkpmNUtMT0VLSzhOY3Z2ZHo1S1ROd0loMGpqcTZMR3JaczQ4Zjd3S3VncjZuc05uOTkwejZPU1RUN1lMSVVqUHlPT1dXeC9HSTNYZ0MyM0M1dTNDNm12RDV1dFE0ZHV2U21EejlBeWtDVnM5WFRoOFhkaDlIWmpyZ3N6VGV5Z3pOMUpUdDQ1NzczOFZUZDRRUktwZzNMaXhhMmJQdm5TOENyb0srbTdqbXFzdkw1ZzQ2Y1NWeW5JOWo5L2Q4SkJTVSszdlRSb254ckhKSFRqOEtud0hCdlRFTHBaV1hUZ0RYZGg5TWN5MUVUN1V5dWpOalZUVk5YSDczYytUblRzWUlRVEhIWGU4L09BRGp3OVhRVmRCVi9MV2I3MGg3WnpwWnhpVWc3Y0NmbmY5UXpSNE92R0VOZzJrYUE1Y2VPcEorMEdVSzY4OEdxc0NGT3U5NkN3aHltdlhjdU50ejVLVmw0TVFncG5uemE2LzdaYmI4MVRRVmRERlJSZWU5MUtLRUFpUnlVVVgzMHlEdlJWcEY4alZnN2VETmZRV3crbnJvY0VkdzFRVnB0Z2dveStQVWw0VDVkcnJIeVExdFFnaE1wZzZaY3A3OCtlL2w2S0MvaThNK29NUDN2RklqaWJydjRWSVplb1pGN04weFdyODRjOXdKQXRSK2gxWVZiQU9Oc2dWMEczZWJweitQbFk2dWlneit5azFCakJWdEdDcGFHTG1ySnNSS2Rta3BhWncrKzAzUGFXQy9pOEsrbXV2djNKbVRrNzJuNFFRSEh2OG1aUlhlUWxFUDhYdTdSdHdZRDBRM215cS9wNFQrWDVUeWo0V3JXaWwxQmlnV0JmQ1ZMa1duY25MU2FlZHJ6anVGdVgvOVk0N2I3MVFCZjFmRFBSSEgzMzA4T09PUDY1WkNNR3d3OGJ5M3J3NjVOQW1iSjQ0TmltR1RWSkJPbFJBdDNxNnNYdDdjZnMvb25yeGVrcjBRVXFNSVV6VllkNmJ2NGhSWTA5Q2lGUUdEeHVjZU9DaEI0NVJRZjhYQVYxWHBrMDc3ZlRUVFVJSU1yTUg4K2lUYnlINSszRDcrbkQ0ZTdENU9yRkthc1hab1FLNnpSdkhJZlhoa0RaaTkyeWtvbTQxQzR3U0pVYVppcm9tbm4xQlMrSFEwUWdobURKMXl2SmxLNVpucUtEL3hrRUhKdDU3LzcwZkNDSCtSNGdjcnJ6K2NhenVUdHlCdm1TUHNuaHk3NmVDZnZBcnRwc2RsOVd0Sk5Tc2RNYlFsMGNvTVRTaU02N0NVdDNDalhjOFRXcVcwaWJxOXJ2dWZGb0YvVGNPZW1XVnhaMlRsNHNRS1p4MDJvWFVMbHVOSjdqeHAxMUhWSkFPV2ZqdFVqZEw2dHZRbVpzb0xXdEdaMnJFV0IxZzJxeXJFQ0tOakt6c1AxNTIrUlZucUtEL1JrRXZyekFPR25uVWtUMUNDRWFNbk1CN0MrcVF3cHR3eUlrQkR6TVY5Ti9DaVh3WFRuOFhWWXRhS05XSEtkR0hzTlEyOGM2Q3BZd2VkekpDcERGMi9MRnQ3MzN3L2xBVjlOOGc2SGZjZWVzclFvai9TZGNVY3RlRHorTHlLMHU5WFR1Ty9KcFQ5ajExVERuUVhWUU9CdSszdi9XKzk5Zm5ZNWM2Y2ZoYXNYcTdNRlZHV2FBTFVHYUpVcmx3RFk4ODhRRzVlVWNnUkRwVHBwNyt1Z3I2Ynd6MHg1OTU5TXpoSTRadEYwSnc1b3lMV1dacndlMy94MHdiZjY0SDJxNHJnbjgxMEgrODdiRjZkbFZNTWViWVQ5c2p1OVNGdzllTzA1OWdhVU1iV2xPUUVuMFF2YVdKNnRvbXpwOTVJMEpra0orZjkvV2JiN3c4VFFYOU53TDZDNi9OelRwNTZrbkxoUkFNUHVJSTNpa3B4eEdJWTVkNy8rRm1nM1pKdVZoZGdUN2t5RWY0R3ovQjMvZ0pjdVFqWFA0KzVYRG9ONTB1R3gvUXJobUVkaW1CMDllTE43d1pYL1RqZ2M5RkNtL0c1ZDh3OExudFc5QVRBNzhqdDM4RDFZdGJXRkFtVVdvSVVsRzFpZ1h6bDNQVTZHTVJRakJwNG5HQmhwVkxDMVRRZndPZzMzekhkVmRsNVdUK1IycDZMcmZmOXpSV2I1c1NSa3UyK3QxakxyVzBTMzl3S1laRDZoNXdkSFY0dS9INmU0bXUrcFJnNDBaV090WlNzemhJOVpJZ3k1MXJrYU85aEZkL2lpZlFnOVhUcGVUSGUrTFl2UWtjVW53WG02bllJV0ExRlJ0NG5YWlBYTWt6OENTd2VqcG84TFJobFRxd1NsMDQvSEhrNkVkRTFueU9OeFJuYVgwanhrb0hDOHFXbzdmWVdMUWlnaWZZVFhqMUozaERHN0Y3ZTJod0s3VURqcjFjMzIrWEVqZ2s1V2JyOVBYUzRJNmhML2VqTS92UkdvTFUxTGJ3ME1PdmtabWRSMHFLK04vYmJydmxDUlgwUXh6MGUrKy9wMkRzTWFOYmhSQk1QT2tpeXF1YmNQcy94dWFOMDVDc2NkNlRHcVN1Wkp5MkM0ZlVpZHZiZ2NmYmdTUjFFb2xzd09sY3kzUFB2YytzaTM3SGhHTk9adVNvOFl3OCtsaU9tWGdhTTJkZnd4UFB2VXU5bzRWb3kwWmNVaGQyZHc4dWJ4OE9keHk3SzdhTGNlVEJHOGF6ZTJPNzlJTHJWZ3d2M1FrY3JoNmNVaGYxM3ZWWXZhMUkwUVJ5WXc4Vml3UGM5K2lybkhQdVJZeWJjQUlqRGgvTjBHRkhNbnpFS01aT09KNnpabHpJWTgrOHpuTGJHZ0xSVDNGS0czQjZlM0R1NDV3Rmg1eGc0WXJWNk1vOWxCaDlsT2pEbUtxYW1ETHRjb1FRSEhiRUVYMDFpNWFPVWtFL2hFSC8zZTkrOTZ3UWdyeUNJVHoxYkRFT3p3WmN2byt3U25FYWZzR2R0VUhxVDhqb3hDbDE0UEsySWNrZGhNSmR2UFdPbGhNbVRpRXpzd0NSa29GSVRVZWtwQ0JTQkNJMUZTRlN5TWpJWmV6NGlUejV6S3Q0NWJYNFE1dHdTbkdjM3U3ZEdpa2VPcURIZHNvZHcrRktJQWMyNGcvMW9UT3VaUFlWdHpEOHlER2tadWFTa3BKR2Ftb2E2YW5wcEtkbGtKR1dRVnBLR2lJdGxmVE1MTVlmZHhvdnY2N0hIOTZJNU8vQkxTc2hzWDMxUHB5K0h1eFNONFpLSDhWR21SSkRHSE5WTTgrL29xTmc4R0VJSVpoejFUVnZxS0Fmb3FBdlhicDA1TERodzc4UklvVnBNeTVqMGRJb0h0OUdwYjVaaW1QOWhlVml3OENGMTRIZHU0NUFwQk5KWHN0MU45NUZWbTRPcWVtcFpHcXl5YzdUa0oyZlRYWitKcmw1V2VUbmE4akp5VVNUblVWYWFpcnBhU21jYzg0RlZOUzZDRGIxNGZGMzR2QzBEVFI2T0xoQi8zRm5WS1h6cThjZkl4THRZL0ZDbVd1dXZvdTgvT0dJMUhUU3MxSkl6eFJrWnFTUm5abEJWa1k2V1JucFpHZGxrcXZSb01uUElpTXZFNUdhU2xwNlBqZmY5aWh5b0JNcEVNUG02ZG9uUGVnR0RnQ2xPSXZxMTFCaWtpazFCakNVaHpCWCs3ajBpbHNSSW9XOGdzS3Y2dXJxSnFpZ0g0S2dYM0hGbkplRkVBd2FmQlF2dmFMRkxjZHcrM3F4UzcyS3dhUDA4d2RDRFo1dTdISWNtN2VkUUxRYnF6UE1ySXV1UkloVXN2TXl5U25Vb01uWGtKMmZRMXAySnFtWm1XUmtaSktXa2tKcWluS3g1K1pweU05VlhFb1BHem1CZCthYmlheEs0UFYzNEpMYWNVbGRPT1dEOTZUZTdvM2o4dllrVzB2RmNNa2RoSnQ3a0VOdFBQdkN5NHdhTlVwcGM1d3VFR21LTXJMU3ljc2J4SkRCaHpONDBBZ0tDNGVoMFJTU2twS0ZFQ21rYTlMSUxjZ2pTNU9MRUpsY2RmVnRTUDQyM1A2RWtyTytsME52L1dGVGg1ekE3dTNHVkJObWZwbUhNbk9BaXVwRzNuMXZJWWNkb1J6TVRaOCtmWjRLK2lFRytyeDU4NDRhTm16b3gwS2tjUDc1MTdOeTVXbzhjaHluRk1jaDl5Z243ajhIdWhTbjNxMTg3UTMzWVBldTVwenpMMFVJUVZadURubUZoV2p5QzBqUHpFR2tacE9wR2NyUVllTVlNL1lreG95ZHpJakR4cUxKSFlRUXFhUmxaSkJUVUlCSVQ2ZGc4SENlZS9sZElpMEozTDUyN0o0MnBhWHdRUTk2SEtlM25XQmpONHRXU2x4OCtYV0lyRFJFaGtDa0M5S3lzeGgvNGlsY2NNazEzSDczRXp6MXpBZTg4TEtXRjE3V012ZUZFaDU2K0hVdXZmeHVUanBwQnZtNVF4RkNvTW5Sa0p1Zmh4RHAzSHp6Zy9paW0zRDRldllKNkxzbVF5MWN1WlpTc3dlZHlZL2VGS0dxcXBscnJyMmZ0UFFNc3JPenYzdjIyV2VQVlVFL2hFQ2ZmczcwK1NrcGdpRkRSdkRHNitWNHZJa2s2TW03dTl5TFRlclpZOTYwWFlwamxYcHcremZnQ1haejJiVjNJRVFxbWRsWjVCVVdrSlV6R0pHU3g5RGg0N2p3b2h0NTdMRjNlZlB0U3VZVkwyVmV5VkxlZUxlY0o1NTdqOWxYM3NUUUk4Y2hNckxKek5jZzBsTFI1QlF4OTVYM2lhenF3eTEzWXZkMEhjU2dKM0I1KzNCNjR3U2lmVlRVMmpsMjBwUmtPK05zMGdvR2M4cTBXVHo2M0R2TTB5L0hWT3VuY25FVEZZdFdZNjV1d2x6VFJIbHRNK1YxTFppckd6RVkzTHo0M0h6T21YNFJXZGxaWkdTbWtaV1pTVnA2RG84L1cweXc1WE5jdnQ2ZnlXWC81NUo1NmwyZHlpcE9UbUNzRGxCcWxORVpHcW1zV3N1OER4ZHg1T2h4Q0NHWWNlNE1pd3I2SVFMNkFsM0p1RUdEaXpZTGtjck1TNjVueVlyVk9MM0pzSmEwU3h4WWltR1QycFBxVURxRHlNbFFqN1FKWC9RakhuajhCVkxTMHNuTUZPVG5acEdlbGtWcTVqRE9uSEVOcjd4VmhhVXFSRlh0YWlxcTEyQ3Bic1pVRmNWY0hjRmNIYWE4TnNLYjg1WXo4NUxiME9RVmtwcVZoa2dURkE0WnhMc2Y2SWswYnNRcHhSUWZPcWtMdTZ3Yy90bWt6bDBxc3c1ZzhvdlVnOFBkaDllM2lVQTB6cXpMcmtRSWdVaFBaOFRvVTdqL2tROHhWb2NvcjJ2RVZCM0ZVQkZCWndsVFlneFFZZ3hRYkFoUXJQZFRhZ3lpczRReFdpSlVWalpTVVI3bXdRZmZadWlJWXhDWjZZaE13WWhSUjJHdXNCT0tmSTdkRzhmaGE4WHVYNDNOMTdaWGwvQ3VRQysxeTFzbzFyc3AwZnNvTTRXcFhyaUtTNis4QjVHZXpxQmhnNzUrY3U2VGsxWFFEd0hRSDNqa29VZUZFR2lLaHZIQ0d3WldPanR3K1hzSGxuRTdsK2dkMktUMTJLUTJiRkk3RGw4WERwOXlBaHhvL0l4aXcwbzBoWU1RbVFKTmJpWnBLV2tNSHphV094NTRFWE9kRDNOdEJMMGxqTTdVaE03VWdzNGNRV2NPb1RPSDBScURhSTBoOUJWTmxGZEhlT3p4TnhoKytHaGx1WnNxT096d1VWZ3NLd2swYnNBbWQyQ1RsTGkwOHBvNmtyQWZXTkNkVWc5MmR3K0I4Q2NzWGhsazFOaXhTcU9FRTAvaWpmY1hVVkc3bGpKTEJKMDVuSHpmaWtxTmdUMUthL0NqMHdmUjYxdW9ybWxqN2t0bURoOXpEQ0pUSUlUZ3ZQTXZ4eVAzNFExc3dPRmJqejJ3Q3B1dmRTOVh1OFZvY0hlaHMwaVVHTHlVR1AyWXExZnorcnVMS1JweEpDSlZNT09pODk1WFFUL0lRWC80MFVjR2p6OTJ3bW9oQkdmTW1FM1Zva0RTT1hRUCszR3BjeGV3T3BLZ2QrSU5KMmh3cjJiaUtkTVFLV2xrNWVjaVVqSVpkL1JrWG41WlIrWGlJS1VtTjZVR0NaMHBoTTdVaU03VXZBdm9JYlRtSUtYR0FHWG1FSHBMbU9xYUpsNStUYy9SNHljaVVsTVFRakRoaE1rc3RVV1FvMzNZSktVYnlVRUZ1aStPMDlORnRQbFQ1cFV1SnJkd0tFTVBQNHEzUHFpa3ZDYksvREtaRW9NZnJTbjRLMEgzb2RQNzBaVkYwZXFhcUtwZHcwdXZteWdhUGdhUkpzakt6dWVsMThvSXQyeFNMSjM5WGRqazdyME91dFBYUTlYaUprcU5Ib3IxTXFYR0lPVzFUY3ljZlMxQ0NFYVBPMnJqZ2xMdDBTcm9CekhvanozKzhEVnA2ZW4vbTVrOWlLZm56bU9aZFIwT3VXZmdRT2JINFNQRmUweHAvV09YMjdCSnJRUldKYmoxenZzUklvV2NnaUtFeU9Mb3NhZnk3anMxMUM1c1JHdVcwWnI5NkV3QlpUWXpOU3JhWldZcnN5aGZhMDBCeXN4UmRQcG1haGF1NXAwUGE1bDArblJFV29iaVVqcjdldHloQks1QU53NWYxMEVCdXRQWGcxMU80UGJGY1VrZE5EaGFlZmtOQzBPSGorUHVCNTZuZW1HTHNtTDVFZUFETnpsVGNJL1NHUU9VR1lLVUdhTG85YzJVR2FKVTE2N2huZ2ZmSURzL1g3Rm9ubndHOWE0VzNNRmViRklmTnFsM0w3ODM1UWEyM05aR2lkR0R6aHlneE9ESFhCM2x4VGYwWkJjT0ppVTlsUnR1dlhtdUN2cEJDdnJMcno2dm1YN3VtVXVGRUV3OCtUejBaamYxams2Y3ZwNmYrY1gzS000a2NvL1NnVVZ1SmRDU29OaTBpTUhEaHBHdDBaQ1dvZUdJVVNmd3h0c1YxQzF1d1dBT29UT0ZrNG9rRlZVZWYzU3hEL3paRkVGbmJLTE1GS0s4Tmt5cDJjcHQ5ejNObUdOT1JxUVA1ZGxYRFlSWGYzeFF6T2o5aDRJT1h3OE9xWnZheFZIS1RCTEZPaXRQUHZjaHBRWWJKa3NUWmViSUhpSC9KWldad3VpTllmVEdDR1dHTURwRG1ESmpDSE5GaVBNdnVCcVJrb1pJeitEeDUxNG4wTElabTlSSGd5ZXgxMEYzeUhGc1VnSkxiWlFTZzR6V0ZLRFVHTVJjRmVUVU04OUhDTUZwVTA1elZsUlY1cW1nSDRTZzMvL0FYY2ZsRldYOUlGSlR1UFdPWjFpNFpDMHVhZVBQNXBQYnBWNGMwaWJGOFZXTzRReDA0STYwTTIyV2tocVpucHJCa01FamVmN0YrU3hjRWtGZjdsVXVXbU96c2xRM05lMkUzQlQreVY1MXA0TG9MREk2aTR6VzVNTlVGYVY4WVRQemRDNGVmbW8rNzVVc3dSdnB4ZWsvOERPNk5ibTBkZnA2cUZ3WVJhdVhLRE1HTVpqOFZOVEtHQ3h1OUlZd1phYm8zdys2TVlyZUdGVmdOd2N4V0FLVTZ0MVUxMFI1L1RVTFE0WXBjZmxqVGo2VkJ1OTZuUDVlVnJxN3NPL0ZSQnJGUWFnYmQyQURpK3ZibUsvektxQWJ3bGdxbTNqZzBSY1JHWUtzM015L3Z2bjJXMmVyb0IrRW9OOTg2M1dQQ1NFNDRxanh2UG5lUWhvY1NuSER6NFd0SE41ZW5OSW1ITklHN1A0WXdkVTl2UHpPQXJMekJwT2Vua1oyVmk3MzN2c01OYlZCOUdZZldyT0UxaHhFWjJ4U05BQjYrQmRCMTFvQ2xKWjdLQzJYMEZvQ2xKakM2Q3hONk16TjFDeGJpOHVmd0NiRkZBc3JxU3Q1ZHRCNXdLclMzSUVOTEZ5eEJxMUpRbWNJb2ROSDBCa0M2RXd1OUJZSmd6bUMzdEw0RDRMZWlONFl3bUQyb1RONjBCcGRHTXQ5bEZkR09HL1dOWWowRk5KeWNuam1wWG40R2pkUzcrN2M2MFU2RGptT1ExWkNidnJ5QUZxVEg2MHhnc0hTeEx6U3hZd2FQd0VoQkxNdW52VzZDdnBCQnZvSzY4TE1ZeVlldlY0SXdka3pycUc4WmpWV1R4ODJ1Uk9yMVBVem9NZHhTYjNZcFEyNEdudXA5NFdZY3VaVUpZU1VJVGgzOWhWWWF2MlVtWnZRR1Z1U3kvT2djZ0NYUEYzL2RSZDVNS2xkdnk4cFU0aEZ5OXVWbFlXMFFha08yODM0Y0g5NXBDc2xwaTdmUnBZMmRDWVAyVUlEcjdGczRIMkVrdTgvL0hlRDNuOURMRE9IS0RNcisvWXljNUJTVXhETDRuVTgvT3lIWkJjVUlZUmc2dG5uNHZXMTQvYjE3dld0aWNQWGpkUGZnZFBmaGJrdXlJSXlENlhHRURwTEJFTkZpSXN1dncyUklqaHEzS2cxcjczMVZwRUsra0VFK3B2dnZIUjZXcmI0ejh6Y0F1NTU0RFdXTmNTeGVmcXcrMy9lNk5IaDdjWWw5ZUR3OXlHMTlQSE02MitTbnBHbVdBMGRONGtQall2UW1XVjB4a1owNWtaMGxnQTZpKzlIMFA1ejBwcEM2QzBSVmpxNmNjb2JkK2t4dGovajZGMjQvRDI0L0gyc2NNVFFsNGRZVU9hanhCRFlhKy96bDFScUNsRlcyOEtIQml0ampwbUVTQkhrRnc1bVFVa05vZVpQOW1wZHZ3SjZESWUvQTZlL2s3cmxMWlFZSklyMVN2VEFVdFBNNDNQbmsxVlFTRXE2K0orNzczdGdtZ3I2UVFUNmxWZGYvcVlRZ3NOSEhjdTdIeTZsd2RXTHk2Y3N5WCt1TXNvdWRlUHd4WEVIKzFqcFdjWEUwNVhadktEZ01KNTVvUmhMYlpBRlpSSTZVNFF5Y3dDZHhhTm9yMTdvWVJhVSthaW9hMUZ5OEFlMkdiSDlPS1BIY1BvU05MaTdLSytMSmtOT0FVcjAvdjBDdXRZY1lyNGxnSG1oc254UFRVOURwS1l3NStwYkNUWnQycXNtRlFPZyt6cHcrRHBaNld4SGEvSU5KUGtZSzVxWVgyYmxtSW1uSVlSZzJveno1NnVnSDBTZ1R6cDVZbFNJVk02ZWZoVTFpNXF4dTN1VXNKclV1UnZvdTFrWnlURnMvbTU4MFEzTWZma0RVdEl5RUNucFhEN25UaXBxR3ltelJOQU83TDM5U2RDOWV4MzBVcU95VDF4dTd4Z29xWFRJOGYxbkxDRjE0L1FsV0dacnBjemlRMnZ5NzF4cTd4ZlFnOHkzQktoWXZKcGJibithekd5bFFlS1lZMDVrYVVNVHZ1akhBNjR4ZStVOVM1M1lwRGJzY2djT09ZNmx1bEhKQ1RBRzBCb2pXS3Fqekw3aU5vUkk0YkFqUjMxUnMzaFpqZ3I2UVFENlBmZmNNNmxvY05IWDZWa0YzSFB2YXl4WjBhNDRsOGpkeXY3OFowQzMrcnV4QitNNGZlMU1tbndHUWdpT0huTThIeFl2cDd5bTVVY0hiRUVGZHZQZW5lVzBSbVg1WHF5WEthOXRUTGFDaXRQZzd0eVBvTWZ3QkhzcHJ3MmpOY25veklIa1djVCtBYjNVSEdDZVNjWlN0NWFubnRhU2x6OEVrU0hJRzF6RSt5VjFoRnMrMzd2MlUvMmcrenB3K2hMVUxsMUxzZDVIaWRGUHFUNUtaZTA2SG43aWJUVDVnMG5QMHZ6bnMzT2ZQMTBGL1NBQS9hcXJybm80TlMzdHY0c0dqK2J0dDVleWJFVU1wOXlqSktESVB3OTZ2UnpEdTJvekw3NmhJejA5aDZ5c1RPNTc4RW1xRjBhVFdXN0JYUzc2MEI3ajVYdGpqMTVpOEZOcTlLTTF5U3kzdCtQMHhiRjZPdlliNkE2NW01WE9kblFXU1RtVE9BQ2dmMWp1dzFTOWhyZmVYc3J3NGFOSXlSS2taS2Z4OEZOdkVWNzF4ZDV0ZGprd283ZmpEdlN3M05xRnpoeWsyT2lucEt3UlU4VWEzcHUvbUpGSEg0dElTZVBTeTY5NFZnWDlJQUQ5ekRQUFhDaFNCQ2VlTkFOTFJaamxLMks0NUY3c25tNGMzb1RpZGJZSHkyRlhzQmU3dkk1SnA1MkJFS21jZk5yRjZFMCs5QlZSdEQ4NUxROG40ZCs3b090TVlVcU5RY29zSVVxTk1qVkxXNVF5MnYzVUVzcnU2Y1loOVZHMWFCVmFrNDh5UytCSDd6bTBYMVJza05DYm81VHFQQnc5ZmpLcDJVcms0NDc3bnliUTlDbE9YKzlldEl1T0RZUXduWElDcTdzYmZXV1FZb01mclRGRW1UbENSVTJZTTZjcHBjbkhuM2ljcklKK2dFSC8vZTkvUDJqY3VIR2RJaVdOeTYrNWo3ckZhNmkzSm5CNWUzQzQ0empjdmJ1QnZyT2FxWnR3NDhmTW0xOU9WazRXR1RsRlBQNk1pY3E2Ymo3VUJmZmJCYjV6ZXhDazFDaGpyZ2tsMDNXN2R5L0EyWWNwcnpaUEgrYXFsdVJad1g1ODc3dUVIOHNNUHNyMFFjd1ZFUzY5Nmk0bFlTbEx3N012TDhBWC9XaWd1KzNldEl2ZVdhY2V4MXdicHNUa1V4S2J6SDdxRnEzbHBsdWVJQ1U5amNNT0gvYlo4ODgvUDB3Ri9RQ0NmdW1sbDU0M2ZOaXdiMFZhRHI5Ly9DMXFGcTdHNXVoTmVyTjE0M0QzN0JGMG16ZE9wUGxUN3J6emFhWDUzdlRaV0tvYTBabGFLREVGMFZuMkorakt4YTQxU1dqTlhwYloxdSszd3ppSG5HQ0ZQWWJPSEtaWTc2UFVHRGd3b0p2OGxCbUNHQzFoZEVZWE45N3lGTGZjOFJ6bUt2L0FERzcxeFBhNkwzeC9XbXpWNHVhZG9Kc0NWTmV1NXBublNzak9LeUF2UC9kUHQ5OSsrMndWOUFNSStvd1pNKzdPeXN6OHY2TEJvM243L2NYVUxscXJ1SzE2TzNCNE9uOFdkSWVjd0JmYXdEblRyeVV0ZlFndnZXN0VVdDFNcVNGTXFUbXdWMlBsdjI1R0Q2QTFTU3d3T0ZtNFloVk8zLzRCM2VucllVbDlPeVdHd0FFRVBVU1owWS9lR0VTbkQySXdSYWlxWFVONTVXb001U0hxWFIwRFMvVjlBM29QQzFlc3BjUWtLZWNVcGdEbThtWkt0WFpHSG5VY1Fvai92ZmJhYStlcW9COUEwTTgvLy96NVFnaU9PK0ZzRE9ZZ3RZdlc0WmJpT0x6ckZCUEdud0hkRzlwSXZhMlZvNDgrZzVtemJxR2lPb3pPcUVDbnRmaVRCMUw3RjNTZDJVZUowVTMxa2lZbFlyQVBsKzc5c0xnQ2ZTeGEwVXFKd2IvSGt0UDlKYVhZUlhrMEdKdlFHMVpScG05R2J3bXowdG1lTEVaSjdMUFBZcG05bFJLVGwxS1RGNjB4aU1IWVRHVlZJNmVjcWhTNXpKZ3hvMVlGL1FDQmZ1T05OMlpQbmp6WkpvUmcxb1UzVTE2NW1xWExPM0JKWFRpazFUaTg2M0c0RXo4QjNlcUo0UWx1WU1ueVpxNjc3akhlZldjWlJuTkVBZDBTUkd1UjlqUG8vVXQzbVJLakcwdHRlS0I4OWw4Q2RGTVl2YUVKdlNtSTNoUkFiNGlpTjdSUXBvK2dOL3RaNmV6WXU2ZnVQNTdWNVRncm5lMlVsY3VVbXR5VUdVTm90VTNVMXF6bHFxdnZWYndEeG85Yis4d3p6eFNxb0I4QTBDKysrS0pqeDQ0ZHMxa0l3VzIzUDR1NW9vVVZEVjI0NUM3czB1cmtyQjcvMlF1OXdkbE9SWVVQdlQ2QVZoK216QlJCWi9IL1RkQzE1aEJhYzFpUmFSZVp3OGwvMjExL0QrakZCamZHS2w4eXZoM2Y5NkQ3KzFpMGNqMGxCaCtsUnQrdkI5MFVRV3VLL09oOUI5R2FBOG5ISDMwT3Z4aXFDMU5tYkVadkNsRm04cU0zaGlrek5sSm05RkZta1ZqaGFOK25iWndjVXB3R1R3eGpkWUFTbzBjcHdTMXJwcnA2TFE4ODlBWXBxVmtjZGRUb3orNi8vLzVKS3VnSEF2UkxManh0eEdGRHZrMVBLK0NwcDdXWXF4dXBkM2JoOUNXd2VUc0d2T0IyVFNmZGVZSDNzc0xSaGQ2aTJENzF4N1IvV29DeXA3aHZPS2tvcGFZbVNrM05pc3doU2kwK1NpMyszYVMxQkg3RjBqMkUxdVNqV08rbXJGeW13ZDM1a3lhTyt3cjRKZGExNk13ZXRHWXBtUkFVM09XMUJmZjRtcldtRmtxTmE1THZPMEtwSlVDcFJVNHFRS2s1bVB5TUlnT2ZrWGEzU3I4ZkYveUU5NUJqb05RV0xMZTM3Wk1PclAxdU92MnJCVXROa0dLREI1MHhSS2t4akxrcXluT3ZtTW5VRENFdExlMlBjK2ZPdlZBRi9ZRE02QmRlblpZbUdGUTBpamZlV29pbHBoR3JwenRwTk5GZjE5MytzNkF2dDNjbTNVLzJZQmJ4aXdyc1RDclp0YUxMNGxNT2MzYVZXVUpuOXYzS0dkMUhpZEdEc2NxSDFkT1pMS2ZjdDZEYnBRVEw3YTNvSzJTMFptL3l0UVoyZ2RDWFZES0J4aFRkNmFoamlxSXpSZEVPMU9Ncm40TTIrZGxvVGFIa3YvVlgvelVsdnkreTI3bkV3UFB2d2FsR1h4RmdwYXRqbjh6bXU5bG15UWtxRm9Zb01VcG9qY21ibVRuQXV3dFdNdlF3eFN2dnBaZGYvcjBLK2dFQS9abG5ubmxFQ01IUlI1M0kvQVVOVk5RMTRaUjdjZmw3c081RDBQdExOc3ZNQWNyTWZzck1mblRtWkk2NEtiQzcvdFplZnhmUWRSWS9Xck1IVTdVL21lKytQenpmNDFnOW5aaXFBNVFZM1VsekRQOU9FQzNlNUEwcmtEVFlhRUZuWEtXY1o1Z0M2QzBoekZYTlZOU3VvcXB1RGRXTDExS3paQlhWaTVxcHJHdkJVdDJNd1JKRlo0eWdOVFlwM3p0Z3UrWGY1Zm4zRExxeE1qUVFIZGlYb0x2OFBkUXNhMEpya3RFYStyTUMvWlNhUFJ3L2NTb3BLWUpaczJhOW9vSitBRUEvNjZ3elh4SkNjTnFwTTlEcFhWUXRXb1hMMzVlY0Nic0d6QjV0ZThneWM4Z0paZWxlSGhrQS9SZVg2d01HaDJGMCttWjBaWTJVR2NJWUxWR001V0hLcTZOVTFxeWl2R28xNXZKbVRPWW1ETVlvQnBOeWtmK3RwWHVaSlVoWnVZOVNrNXZhWmMyNC9BbkYzbXJYeEpaOUZtSkxzTGgrRGNWR0Y2VkdMNlZHT1prOEUwaXVUSkpwc1NiRjhWWnJhc0pnamxDemNCVlZ0UkhtbDliendxdEdIbmowRGU2OC8zbnV2TzhsN24va1RaNTdVYytIcGZWVTFrYXBXZGlNb2J5UjRySUlXbU55UnJmcyt2ekJuOWh3bFJxRG1LckN5ZDlYejE2UFF1ejZtVHJrQkl2clZ5dCtnQ1lsTzY3TUVrQmY0ZVBzYVJjaGhHRGt5SkZWa3laTlNsVkIzNCtnSDNmY2lacFJvMFl0RVVKdzRRVlhZVEpMVkMxZWpjdmZsNXdOWTc4SXVwS0EwWU9oSWtxeC9wY1BvYlNtWUJKMFA2WDZFRVo5TXhXVzFWUldORk5WRmFGVVorUDlEeGJ6enJ0TGVldnRwYnovUVQxR2s0L2F1bVpxcWhveG1vTzdQYzlQOTdzaHRDWS9KUVlQaGdvL0t4d2R5WE9HL1ZPbXF0eFU0bFF1YXFSWTcwWm5EaVRMVklPNzVmZHJqWDUwSmovbTZrYU1GcGtubi9xUW1iTnU1T2p4cHpCbzJHZ3k4d3BKMStTU2xsbElldllRQ29wR01tcjBaTTZlUG9jSGYvOEtwUVluNXBwRzViRE9sRFRRSFBEZDIvbVpsQmo4QTQvbHRZMERONk45bXpnVVowbkRXa3BOc21LMFlZbWdOZnN4VnZtNUtPa09PMlhxVk9ucHA1OHVVRUhmajZCZmU4MzFRNlpNT1dPMUVJSnJycm9OYzdtUHFrVXRPUHRCOS8weTZNb3Zkd08xUzFvcEx2dmxSSkZTWXdDZEtZUytvcEh5cWxWb1Mxdzg4N1NXcTY1OGdKTlB2WUN4RTA3aXNDUEhNbmpZVVF3ZU5vWWpSaDNQaE9PbWNON01LN252L3FkNGYzNE54c3BHOUJXTk85Tk1reGQycVNGSWlkNVBxZEdIb1NMSWt2cFc3Rkppd1BWbC8yVEh4Wk5MNHpoVmkxclFtcFE2L0JKOUdLMWhIVnJES3NyTWpSaXJJcFJWU056LzJOc2NOL0VzTkRtRlNqZFprYXAwazAxTklTVXpoZFRNTkZJeTAwaEp6eUExSTV1VWRBMVptaUltbkRDTmV4OTVCMzI1SDFOVkkxcERJenJqYW5UR05ic1ZDNVVZL0JUcmxYRGYwb2IyZ2JPS2ZSdUYyQjEwblNsTXNWN0NWQlhndXB2dVJnakJLYWVjMnZqb280OE5VMEhmajZEUHV2akNvUk1ubmJoZUNNSE50ejVPZVhXWTZpV3Jrc1VQaXBtQ1hZNGx1NS9Fc0h1NnNYa1VpK2YrUjZmVWc4MmRvTHkya1ZLVFRMSEJTNGxKcHNUaVk0RXBTTEVoZ000Y29ieTZDVXVGbjlmZkxPZXFhKzdqcURHVFNjOG9SS1JrSTFMU2xSWkZLVW9UQXBHU1NscDZLdWtacWFSbHBKR1JtY3JoUjR4aTFrVzM4TnFiVlZpcUlwaXJHdEdhL1pSWVpFcE1mdlNXS0xWTDE3SGMzbjhBRjhNdWRlM1RPUHJ1RjduaXd1UHk5K0R5YldCSlF3ZVdtbVpNRlMzb2pNMll5bHVvcW12aXhUZE5uSHJXUmFSazVpbnZXUWpTTWpNcEhEcU1ZU05IY2ZoUlJ6UHNpSkVNR2pZY1RWNGVLUmxwaUZSQmFsWXE2VG5wcEdTbWtaNlZ4OW5uWGM3N0pVdW9YcnlLRW1PVStXV05sQnFEQTFWOEpRWWZDOG84bUt1amluSG5YaWxrK2R1Z0w3TzJVMnBTemlpMHBpQWxCZ2xUZFlpNzduc1dJVkk1NnVpajJpNllkZjVJRmZUOUNQb3BwNTgwZk5UWUkySWlKWlU3NzNrTlMwMlV1dVdyY1BsN2YzSkJLSzEvZnlxN3V4dW5sTUFwSlZqY3NJN3l4VkVzaXlLWUZrVXcxclZRdmFLRGxZNEVKVG9ybDExK0MwT0dEbGRnVGlvdE93ZE5iZ0VGUlVNb0dqS2NvcUpoNU9VVmtaR1pOZkIvc3JJRTJkbHBpQlRCNENHSGMrMTFEMUszTklvajBNc2krM3FXT1dJMHVIcHh5QnVTczJwbnNuTk0yMzUwbWVrYWtHSkMwWWZMdjRGNlJ6ZHU3d2Jzbm5ZZWVHd3VSY01PVjk1WGFob2p4eHpQeFhOdTVZbTU3N0Nnckk2S09qdTF5eVdxRjdreEdGYnkxdHNHN3JuL0NhYWZkd0hEanp3Y2thNThIaGxaeXVQNFl5ZnlYa2tWSzcwZEdCYzJVbGF1bkZPVUdIeG9UVDZxRmpmUjRJcnR0MVdOM1p0Z2hiMExyVW1tMUNnTlJBTXNOVkVlZVhJZUlpMmZJVU1IZnpKa2FPSHhLdWo3RWZSVEo1ODhhdWl3UVorbFptaDQrT0YzcWFpT1VMdThaWStnMndmNmUzZmg4Q3FQZGs4WGRrOGN1N2MzNlJUYmk4M2JpOTNiaTEzdXc5LzhHUTUvTi9jLy9pcEhqSm93QUs0bXI0Z1RKNTNGbGRmZXdhTlB2TXliNytnbzFsVlRxcStsdUt5R2R6ODA4ZWhUcjNEdFRYZHh5aG5US1J4MkJDSTFsWlEwUVdxMk1ndWVOR1U2V3N0S0dsdTM0cEQ3c0VzOWlsZWNwNzk4c24wL2d4N2JEWGFIM0kxZGppR0ZOdUNTT3JqMnBudEp5MVFhVGh3MmFoejNQdlFpZFVzYThZYzJFMm4rbkdEMFkveWhUVWlCUHVUQUppTFJ6Mmx1K1lMbVZaOFNhVXhRVVczbHZnZWY0YmpqVDBha3BpTXlsQjUwSTQ0Nm1qYytOQkpjdllrR2Q0eVZ6aGhMRzlwWVllOVFqQ3I5ZmZzc1NlYlhnbTZ1anZMMDgxcFNNd3JKek1yODQwMjNYRDlGQlgwL2dqN3FpTkVUODNQemY4aktMdUNacCtaUlVSMmhic1hxZ1RETXp1VmViS0Qxa2xWcXgrcHRUMzdkUVlNVW8xN3VvY0dib01HYndPNUo0UFQyRVloOFRJbHBNYWROT3dlUnBzQTVaT1NSWEh2elBjd3JxV09sYlEyK2NDL0J4bzFFV2pZVGJ0NU1wR1V6b1ZXYkNhemVoSC8xQm53dFBWamwxWlJVTHVmMkI1NWt3b21URUZrcGlDeWxqL2lRSTQvZ3hUZm00Vy9zdytydHhDNTM3ZExBNGFlSlB2dmVCVGE1M1pFNnNNbHRTTkVFeXh4UnpydDQ5c0JOYnRyTVM2aW9jeEJ0MlV5bzZWT2NubDdzN29TU1p1eUs0L0wwNFBUMDRQVDA0dkwyNHBJU1NJRWVJaTBiQ1RmM3NkemF5RU9QdnN4aG84Y3FQZWhTQlBsRGh2RDJmQVBCbGszWTVSZ09YMzhDU3k5T3FXOFhzOHdEQTdxcEtzSUxyNXJJeUI2Q1NFdjVQNC9rdmtBRmZUK0NQbWpRWWFlbnBtYjh0MGpUOE1UVDc2SXZsNmhic1hyZzBLWS8yOGtoeDdINjI2bjN0V0lMdEdNTGRORGdhNlZlWGsrOXY1M2xnVTZXUysyczlMYmg5bmNUaW16aTJia2xGQTBiaGhDQzdNSnNmbmZyTFpRdnN1TU45dUNMZm9JVTJxZ1lXL1N2SEpMNy93WnZOeXU5M2RUTE1XeitHSzV3Tjk3bUJKNW9uT1dPSmg2ZCt4cEhIM2ZNd0VXZVU1RExNeSs5aXhUdHhpNjNKbHRDSlNHWDlxZmRjLzluMVkzZDE0NFU3YUxlMjhLMFdSY25sK3FwWFBHN2UzRjZZNFNiUHNIaGFjTXBKYXNEUFowNHZEdmw5SGJpbEx0dytycHd5QjNZcEZaczN2WFk1VmJrU0MraGxrMVVMWEV4YmVaRmlQUTA1U1o2MkpITU55d210SHFqMGhwTGltSHp4ckY3ZXJGNWUvYlQ1eEFmQUYxcmtpbXorQ2t4ZURGVWhIanR6VW8wZWNNUjZhbVVHYlN6Vk5EM0kranpTOHVuRnc0YXpPUXpwMk9vc3hOYS9RbU5hN2NSYXZsc3Q4UVl1eHluM3Q5R2ZhQ1Y1ZEphNmdPdHVKcTZDYXpmUkNUK0daSGV6d2pITnRIYzlRbWg1amgzM1BrVTZXbURsQ1gyeWFkUlVsYUp2eW1PSjloRHZUZU9UZTVWV2k3dlFWWlB6NC9zbXR1VkMxM3V3QjNaU0tCbE15dnNqVngveXozazVPWXBXNEdDUXQ0dXJpQzBwZ2VudngvMC9kczJXUUc5QjdzY3d4M3F3QkZjdzh6THIwT2tLWWRwczYrNkhqblFnei8wR1U1UEh5NXZQQWw2T3c3dkh1VHJWd2QyZWVjS3BVRnF3eEdNSVVjMzR2Ykh1UDZtaDBoTHoxYTgraVpNcG1LSm0wQkxMM2FwSzdtVjJZRE4yN3ZmUVM4MVNoVHJQU3dvYzZNeiszbitaU09aMllNUnFZTFgzbmhGQlgxL2dCN2Y5azFLZlBzUEk1czZOeFF2bFVKMGZiNmR6ZC84QjdHUC9relR1cTM0R3ovZXBZZFlBcWMvd2NwQUcwdWwxZGdiTzFuVnM0V09UNzhsc2ZVdjlINzFGK0pmZjB2Zk45OFIvL3dyYnIvM0VlWEFLS09BNjYrN0I3ZDdEWUhRUnF6T09IYTVsM3BmTi9WeUYxWnZmSSt5ZStJNFBIRWNubGp5TEtBZGg3Y1ZtN2VWbFhJWDlkNXU1TkJIaEtPYmVPc2RQZVBHbjBCT2JnRTMzdjB3b2JVOU9IeXR5VXkrcnYxczk5eUxRMHJnQ1NYd1JycTQ2cWE3RVJuWmlOUk1wa3k3QUx0M0ZWNS9OelpYTnk3dkpseWV6VGpkdmNyNy9QRWhwN2NidXkrRzNkZU4zUmZISnZWL1BqMDArRHRZS2JkaTlmWWcrVDRsSE5uTUxiYzhRRXBhT2lJbGl6UE91eFJub0JWdlNBbjEyVHo5WnljL2hkTCtxODRkZG01TmRtMVVzZlBtdkxQRHFrM2FGWFF2MVl1YldXNXJaMmxERy9PS2x6RXNtUWI3K3R0dlRsZEIzNGVnYjlqeDlaR2RuMis3TGJibDI0VWRXNzV2N2ZycXIvKysrZC8raTQvLytCODB0MjdEVUJuQVV1dFBuaHpIQnc2NDdISVB5M3hyc0s5dVovWG5YOUQrMWRmMGZQVm40aC85aWRiRWRscGltMWdkMzh4eWQ1aHhKNXpLcUxISDhNalRyeE5zM0lnYzJvamRtOEFoS2JPNDFSdkRPakRUL25SR3QzdTdzZmMvZXJxeGUyUFl2VjNZdlYxWXZiSGtyQi9ISVNXSXJQcVU2c1VoM25pL2hvcEZJZHlCQkhZNTlyTXgvMzNyR3hmSDRla2kwTmlMdnJLZXpKeENoQkFNUFdJTWxRdUQrS0libFFRa0thNTBrbkhIc1hzVGUxN1o5RmNMU2pzaEgvaDhmREZzdmc1bEx5N0Y4UVI2OEFTN21UTHRja1M2QmlFeXVlT2V4L0NGdTdCNzI3RzZZMHJiWkg4M05wOVNUbXAzeDNHNGUzQzZlMzY1SjF2U0U4NHVkV0wzSmJNazVTNGMzbDRjN2cwNDNFbXJNVThuRG04YlRsK001YllZcFNiRkU4QWQ2S0hubzcrdzRiTy8wckh4YXhiYWZEejgzRXZZZzlFSFZkRDNrVFovK2MyUlBkdDJCTnUvMlA1L1hWdS9vM1BybjJuZC9nTTkzLytGbGVHMXZQSEJVdVpyblZRdGp1RDB4Wk4zY0tYRlVMMnJFL2VxT0cxYnY2THpteit3ZnNjTzFuMjBnK0NxemRnODdUUjRWMlAxcnNicVhjUEMraURWeTN6NG1ycHhCM3NIdk1UM1pvakg2bEhxNGEyZWJxVElSd1JiUGtlT2JON2w1dFI5WUVCM2QrTUw5V0NwZG5EOHBETTVZOXI1ek5OVzQ0OStQTkJHK1ordisrNVBZbEwyOEhhNWswRHpabDUrcHh5Um5rMXFlaWE1aFNNd1ZLMWdYZXdMSFA0dWxubldzekxRUVlPL0U2c2NVMnk4UFFrYzd0NWRadVdmTTM5VTZoM3N2azRjL2s0Y2NxZmk5Ky91dytGT0pGY2huVGc4NjNINVlpeXp4cFQwWDVNWG5kbU51VmJDSnJmU3MrVlBiUHMzK09TNy82QjMyeCsrVG16WjRlbjRmT3Z2T3o3Zk9rZ0ZmUytxZCt1WHIzVnMyMGJydHUxMGJmMldycTAvMFBQTlgxbjN5UlptWEg0OTl6ejhEcWJxRUZXTG13YkNNZjJkUjd5UlB0bysrWXI0bDkvVHRlTTdtdm8rd3hycW9FRnFWL2FDVWdjMmJ3Y091UXRmNDBaODBRMjRnL0Y5VmxDeTYwSGhyb1VWN2tEZmZvc1oveFQwWGh6dVhtV0c4M2F5M05xRTFiTWFPZHlOeTkrVGJDb1IzN3VnKzJQWTVVNDhvUjZXTzFaeDNJa25KVS8zMDVoNCtqbDBidHBPOTZmZkVtci9tSVp3Snl2a05ob0NNUnFrYm15ZStNLzRBUDRVZEt1M0hhYy9oaHp0dytHTDBlRHFUSVpWWTByT2dyY0RtN2NWcHkvR01tdG44akJPb3Rqb290amc0TU15RzJVTFBUVDNicUh2cTcvUzhkazN0SC8rTloxYnYvN3ZqaTkyZk42N1paczU4Y1hXQ1Nyb2V3UDBMZHNUNjdkc1lkMzI3YlIrdm9PdUw3N2prei8rSi9QTGF4RFpoVHp5ekh6TU5ZMVUxRFhqOHZVbFFZOWhrOXBaRTl0R2JPdDN4TFo5ejZxZXJWajliVFI0VzVYbG5OUTkwREJCU1R1TkR6aUQ3ajFyNFYvdVEyN3pkdFBnamgwd3lIY0h2UWVISjQ3WDM0dkhGOGNoeGJELzZMWCtjMzdxeWl4dWx6c1Z6LzFrZTJncEVzZFl2WVNwNTExQTBaQWpHSHZpNlRSM2JXVERsMyttZTlzUHJQLzRHK1QxRzFudWEyT0YxSWxON3Y0YjhmV2RvRGQ0MnZDRUVuVDBma3RINzdkNEl6M1VlMXFwOXlpSHBIWi9GdzNlVmx5Qk9Fc2EyaWl6K0JXVFRwUGlCbXVvQ1BIZ3N4OXc1WjJQRU4vMkE0bXYva0w3bGovU3V2V1B0Rzc5QTUxZmJDZjIrYlkvYnRqeDFYdGJ2LzlUdmdyNlA2RytyVHVXZG16Wnh2cXRXMW4vK1ZZUzI3N2owMi8reWgzM1BZZ1Fna2VmK3hCelRTUG1xbWJzMGtic1Vwd0dkeHZCbGw3aW4zeEwxOVp2YWYzNGF6eVJIbXh1SlZuRzVtM0hPdENhZU5mRG1mZ3ZMQWwvbStwZnVqdDJmZlFvaVVaN1BRTnZvUC83cm1yRDE5aUZKOXlLc2M3T0lrZUkxWDFiYVAva0c3cDMvRURuOXUvcDN2NG5JbDJmc1Z4dVk2WGNnVDJRK05VenV0WGJqaWVVb0d2REgrbmQ4aGVDclJ0WkthOWx1WGN0RGY0TzZwUFBWN2RpRFdYSkh2WksvWDBFYy9VcW5uaitROUp6aXlpdVhNeG5mL292V3JkOHkvcXQzN0YyNi9lMGJ2K090cTNmRU51eTQvOCsvL2FQRmhYMGYyWkcvMkw3K0o2dFgyN28ycjZEdG0zYjZOdngzU2ZONitPTjR5WWMvMWNoMHJudmliY3cxN1JnTEcvQjZ1ckQ3azFnbDlwcFMyeGp3OWJ2NmRqeUZmSzZQcXpPVHR5dUhwenV1SElSeU1rVGJ1bEgycStkVEErMFl0aTlIY25RV0VjeWd6Q0d3NU9zRDlnUG9OdWxEdXh5RjY1Z0FybDVJN1pJakdYK1ZweXJlMmphdUpXT0w3OGo5dVdmaUczOU15Mko3YXlVTzFqaGFmdFZlM1M3M0lITDM0M1YyNDYvYVNNOVcvNUkzNDd2V2QzN09jNW9GeXZrTmxiNlkxZ0RDYXFYTktFMWVaWHlYRk1FbmJFUlUrVjZubjMrUTRRUW5INzJETmIxYnFiM3ErOXAzZklOYTdkOXg5cXYvc0w2ci81RTZ4ZGZrdGkyZlpzSytqOTU2cjVwKzlmSHhMZnR1S2ZqaXkwdmJ2cnEreFBjY3RPNElZT0hkZ21SeWgzM1BvT2xxaEc5T1VxOU00NVY2c2JUbUNEMjZiZjBiZitldFp1L3BON1hqczNWamRQVmc5T3p5MFhuN2R5RHV2NmxablNidHdPN3R6MnBUaVZhNE5sWHFiWjcvcnl0VWh5YkhLZmVHNk5lN21LRjFNRXlxWTNsZ1E1QzNaL1J2dlZiT3JkK1IrTExINGpFUDJWNW9JMTZ1UU9yM0lWTmltUDM5bUQzS0VhZzl2N2ZyN2RUMlM0a2I5NTJPY2I2VFR2by92STdPcmQveS9yUHZzSzVKc0ZTdVIxN29KZnl1bWh5eVI1VWZPTk1VY3hWNjNqazBkZElTVW1sY01nd0d1UWdIMy8zRjFxLytKTDEyLzdBMnUxL3B1M0x2OUM1NVJ0aW4zemhVMEhmeXdremQ5L3pRUDVKSjUyMFJnakJEZGZkaGJrOGdNN3NaNW1qblhwZkY3NzFtK2phK2gzZDIzK2djZjNXQWZQL2Z5MkFEMzAxZUdLc2tOc0pkVzJtZThmWGRHN2JUdWVYZjhEWHZZbmxnWFdzOUhWZzlmVmc5VzdBN3U3RDRZN3Y0U2Fsbk5ZM3VMdUl4aituL2V0dldidGpCNjNmZk0zcXozYmdiRW5RSUhWanFtcmE2U0prVVp4L0xEVXQzSDdIa3dpUnd1RWpqOGEvYWoyYnYvMFRiVnUrcEhYck4zUnMrWUhZbGgvbzIvSUhQdHJ5VlZBRmZTK0RmdWFaWnhXZGNPS0pFU0VFbDgrK252SUt4WE50WWNNNjZ2MWROSFZ2SWZIbG4rajg0bHZjb1Y2bE5EVjUyS1lDZEFpZEgvamlXUDJkclBTdEpkcTlrZGoycituYy9nZGF2L2dEbnJVSlZ2amFzUHJpTkxoN2xFUEZuenRiOEhUVDRPa2lGUHVZanErL1pzMzJMYXpkc1pYdWI3NWozYVp0ckhDM0pkMkdncnVEWHJ1S2E2NjdEeUVFazA0KzliOC8vZm9QcTc3NDg3OXZiUDk4QjExYi8wQnN5M2ZFUHYyR25rOTM5SDcrNVhjelZkRDNNdWlISDM1RTVtR0hqU2dYUW5EK3VaZGpOTXVVbW54VUxXM0JFZTVoN1lhdmlPLzRnZWJlTGRoa0pVbEZCZWNRQkYyS1lmZkhXQ210cHo2d25wYmV6K2phK2kyeEhYOWsvVWZicVErMHNWTHF4SnBjdWpzOG5kZzluWHZzczJiMXhGalY5em1kWCsxZzNZNHZXTC85QzdwMmZFbjM1My9BNm0xSGx6UUYyYWtRNWJXcm1IbWg0akJ6NnRTcFRTdmRucHlQLy9EOXlBMWZmcnRvNDVmZi9rL2ZsbSsrNnZ2OG04VWJQdjlxc2hwZTIwZWVjWmRmZnZrTFFnaE9uandOWFptYlVwTVBVMjBJWjZTWHRvLytRR0xIbndoMGJLTGUwNmxDYzZpQzd1MGNpSkNzOUxaaWo4UlkvOUZYZEczNWx2ajI3L0N0NjJXNXB4V2JuRkRLa1pObkRYdEtJVzV3ZHhIdDJFejhxMjlvMzc2TnppOTNrTmp4TGExOTIxbmFzQnJ0ajF5R3RLWWcrdklJcDV4eEFTSmRjUFNFY2JwZHI3OHQzLzM1NWsrMmZ6TmRUWmpaeDZEZmQvOTlEd29oR0hYazhjeGIwSURXN0VOYkllT0s5Tkg1MmZkMGJma085NW80OWZ1dDE3aXFmUUc2dzlPQjNkT05WWXF6M04xT3FQVWp1cmY4Z2U2dDM5RDIwUTVzd1E3cVBaM1l2VjA0dkszWXBiYWYyZTkzWVE5MXNYckRGanEyL1lIT2JYK2diZlBYK0tKOVZOYzFEU3piZDEyK2Y2aVRHVDNoSkVTcTRKcWJybjFCZFlFOUFLQlBubnppaFpxY3pQOHFLamlTVjErdm9jd1NaSUhSamF1eGo4U1dQOVAyMmRjMFJGdlZHZjBRbHNQYmlkUFRpY01UeCs3dFk0V3JDMnVnbmJhUHQ5Tzk3V3ZpVzc4bDNQb1JEZDcyWkpody9jK0NicFBpclBCMFVCL3N3TFdtQjgvNmpUZ2lDYXllT09XVnpiczA4bEJNUFBYbFVkNlo3eUIvNkNoRWl1Q08rKys4VHdYOUFJQStkZXFVazBhT092S3IxTlIwSG4zMEhTem1GdWJyZk5qQ25mUjkvUTJ0SDMxT2c5eWVMQ2hSb1RrMFovVFl3T0ZhZi9iaUNsY3JUZTFmRVAvOGUrSmJ2MmYxcGkwMFJGcXBsOWJqbEpROEFKdm5GK0xydms3cXBYWldTaDFZcFc2czdoNE01U0ZLVFVucmFWTVl2YkdGaXNyVnpIMWVUMloyQVlPSEZuMDc1WXpUWjZxZ0h3RFFMN2xrOXBoeDQ4YkZoUkRjY3RNalZGV3VZVjZwbitXK1Z2cSsyY0hhdnMxSy9QUmZMTlB0dDMwNEY4ZnFqdUVLOU5HeDZUdTZ0LzVBMnhkZllWL1Z4bkpwRFE0cHBpUkUvVXdjMzVGTXYzWDZ1bkZJaWwvOE1sc0hXck5NcWRtak5KUXdoU2tyYTZHMmFpMTMzVDBYSVZJWk0yYk14MDg5OWZUeEt1Z0hBUFJISG5razQ0d3p6MXltbkx4ZlFVVkZFL08wQVpaNFcrbjcraHVhWXhzVm15YjF4UDAzb1YxRG8vWHVEaG83dnlDMjVYdTZ0bjlIc0dzRHkrVTFPT1Z1bko2L0RickRGeHVvY3F4ZHRwcGlnMWRwcm1tUktET0ZLTk0zVVZYWnlLeUxibENNTVk0K2V0VU5OOXhRb0lKK2dQcWp6NWx6K2J0S1c5dkpsT21kek5mNVdlSHJwdmVyNzRsMmJFaWV2cW96K204dmthWUxkMk9DenMrL0k3YmpPOVo4dkExcnNBMkhGTVBsU2Z3cTBCMXlITHZjZzZVbXlnSzlsMUt6aE5ic1JXc01ZREJHTVZ0a1RweDBKa0lJTHJqZ2dtcTFQL29CQlAybW0yNjZPVHNyKzcrS2lvYnh6bnZWbEJxQ0xKY1Q5SDc1SjhKdEd3WU1IMVE0Zm1PenV6ZUdOZENoaE5xMmYwZjdGMS9qYVk3ajhIYmg5UDQ2MEoyK09BM3VidlRsL2dGUC8xS2psMUtERDB0Rk0vTStYTUtJSTBjalVzVi8zbm5IblErcG9COUEwTys3Nzc0cEkwZU8zSmFTa3NhRHYzOE5mWGtqUzkwSkV0ditqSDl0TWlOT0JmMjNKNm1iZXJtVmFQd3p1clovUjllMmJ3bTFic2J1N2NMcCtiV2dKMWk4Y2kwbEJnOGxCcGtTbzQ5U2t4ZXRVYWE2ZGhXUFBmNDJHVG5aNUJma2YvZllZNCtkcFlKK0FFRi84c2tuTThlUEg3OUtwQWhtWDNZVHBvb21scmszRU4vMkY3eXJFbGc5Qi90aFhIOVpiR3huSlpmVW1UVEZVRUpDZHZtbjZyZHFVdjVQTjlhQlUrcnVYU3l0NGo4eWFlajZHY1VPeVJsOXBYYzk4dm9OZE8vNEkvRXZ2NmM1L2dWMnFST0g5NWYyNkYwNC9kM1k1VzZjY2crVkM1c29Mdk9pTlFjVTBJMSt0SVlRTlhVdFhIdmRmWWcwd2Fpamp2em8vZmZmTDFCQlA0Q2dDeUhFU1pNblY2WmtwakQrK0JNcFh1Qm1oWHN6bmR1L3g5SFVqYzNkbnF3L1AwZ3ZXaytmSXFrZHE3UWFoMzhObmxBbjdtQUNtOXlEVllyVDRPbW0zaDFqWlZJTm5pNXNjaGQyWHd4SElJNHJtTUFSVVByTk9hVVlUcWtMbDdjYnB5ZUd3eDNENFZiQ1ZJb2I2eDUwQ0ZicldUMWROTGpiY1RWMTAvWEZkeVMrK29FMW03Wmo4M2ZnOU1kKzFzWkw2Y3VYU0xyTTltQ3NqQ3J4YzB1UUVwT1hVbjBUT3VNYWpCWS9wMDQ5RnlFRVowMDd5eTUrNVZCQjM0ZWdUenY3N0ZzeWN0UC9YOTdnUVR6N25BRzcveVBXZi9FSGx2dmJzYm82c0IzTUNUT2VIbXllaEJMZmxkdXh5NTNVdXpwWnVLeVZ5b1ZyTUZjM1VWWWV4bEFlUmw4ZVFWOGV4VkFSd0ZRdFUxNFhvR3BKaEVVclcxamhXSS9WMDRIVDA0bGI3c0xqNjhZbGQrRHd0aWxKSk42Mm56Rjk2RGdrWjNTYk40YlYwNEV0Mk1IYVRkdUpmL2s5YlI5L2pTdlNuZXkzOXdzMThaNFlkcW1IcFEzdHlkcnpvREtqbTd5VTZodXhWSzduelhkckdISGtHRVNLK0wvcmJyaitJUlgwZ3dEMDU1K2ZlMVRSc01MdEtSa3BYUHU3UjNBRSsyamQ4Z2RxN2F1eE90djNnVlBLdm1qeWwyQ0ZvNVBLaGF2UW1TS1VHcEo5MVkxaHlrd1J5c3hSOUpZb0Jrc2plbk1FdlRtRXdSSWVlRFNVUnpCVlJMQlVCcWxkM01UeWhyWFlYRXFqQmFmVWhpUHBrV2ROMW4vYmQ2blR0aDJpQ1VWV2J5Y3JwZlUweGorbGU4Y2Y2ZnI4VzZUbW51Ujc3UDZGNWJ0aUgyYXFEbEZpa0Nnemg5R2FrcUFid2xUV3J1UHVCMTRtTlN1WHJCek52OS8vMElQSHFxQWZCS0FMSWNTSko1M2dFeW1DU1NkTlo2bDdOVzFidjhXeW9vbUZTMWZoVEdaVUhTejE2THNaVDhwZDJPVnVsalMwb2pVSEtUVUVLVFdFTVZVMVUxNGR4VndSb3JUTXpYdno2bm50ellYTWZiR0N1UytXODlLcmxieitWaDN2dkwrTStTVTI5Q1lKYzBVQVUzbUk4cW9vNVZWaExKVkJxdXVhV2Joa0RTdnRuVHNkWmVRRWJuL2ZubCtQRkQ5a1puUzcxRVc5YnozQnpvMGt2dnFCK0xZZjhLM2E4SXVnTzJTbGMycTl1NHV5Y2wvU05pcU0xaHlrMktna3k1aXJJc3k0NENxRUVCdzVlblRyN1hmZm5hR0NmcENBZnNVMVZ6NHJVZ1JGUTBkUVhMV1VycTkrd0xTc0dZTWxnR3VYaS9oZ3VKQjNCY3ZwajdITXZoYXRXYUxVNkVkZkVhSmlVU1BGUmh1L2YvUTFabDEwQThkUG5NR3d3MDRnci9Cb3NuS09KQ3QzQkpyOG9SUU1QcHpoUjQ1aHpER1RPUFgwNmN5NjVHcHV1ZU5Kbm5qMkE5NytvQmF0M2tWbFRUT1ZOYXVVMXMrMVVlcVdyMkdGb3hPSDFJdkwxNGREN2hub1AzNG9ncjVTWG8rdnRaZnU3ZCtSMlA0bkl1cy8vUnZ0ckxwdytYdFl1R0kxV3JOaUFLa3poOUdhRk5BTjVSSG1sZFl6ZXR5SkNDRzQrbmUvZTFIOEhVTUZmUitEL3VUelQ0M0xLa2o5WHFTbWNNL1R6OVA5elorcFhObEthWm1YNWRiMXVQeTlBeW1VQnd2b1RqbUJRKzZpY25HSUQzVU90Q1lmbHJvZ2p6NzNIc2VlZENZWm10eGs3L1UwVWpPelNNL1drSjJYVDJadURoazVXV1RrWkpLU3FiUk5HbWpubkM1SXo4L21zTkZqT1BuMEM3ajhxdC96NkJNbHZEdXZIa3RObFBMYUpzelZVU29YTnJPMHZoMmJ0eGVucncrbnJ6ZjVlaEtIRE9nT3VadmwzclY0MW5UVHNlVWJFdHYveEtxdXJUKzdSN2Q2WXJqOENaeStCS2Jxb0pMYmJsWktVN1htRUtWbUg1YWFSaDU0OUYweU5JV2tacVQ5djlmZWV1TVVGZlNEQ1BUWDMzczlkZkpwRTV1RkVKeDc2V3c2UC82U0pmWVlDM1FoS21xYmxkNWlVbUlYTThqTy9kckljSStnKzNxb2QzWlJadmFqMVV0VTFnYTQ1NEVYeUNzY2poQXBaT2RrazVPZlEyNWVEdm1GZWVRbXY4N0p6eVVuTjVmYy9EenlDdkxKU1Q3bTV1ZWh5YzhpUTVOR2Fsb3FRcVFpUkJhYW5LR01ISDBDWjAyL25EdnZtY3ZiNzlWaUxnOVNWYldhaXNvMTFDMWRUNzBuaml1d0VadVVZS1dyRTZ1c2VPOGR6T213ZGlsT2c3Y05aN1NUOWs5MkVOLzJSMWIxYktQZTE3Rkh5MjY3Rk1jZDJNU1NodmJra2oyZ3VMMmFRMmhOSWZUbUNPYXFFT2RmcUtTOUhudjhoT2E2cFlzTFZOQVBJdENGRU9LaHh4NitUd2pCOENNUFI0NjJZcE42bUtjTlUyTDBzOUxSaFR1d1lSY24wdjVtaGdjVzlLWDFuWlFadzVSWFJYanhKUjFGZzBhUm5wWk5ibTRPK1hsNTVQMmQ2ditlL1B4OGNuTnowV1JuazVHUlJscDZDaUpka0pHZHg3QVJZem56ekRuOC9zRjNLQ20yWXFyeVU3NG96QkxyT214U0hJZmNRNE0zR2FjL2FFSHZUcmJKNnNRUmFxZHQ4MWE2dDM3THFvM2JXT2xyMzIxNzFDK1h2eGVudkFsejlTcEtESDVLZHpXYU1JVXdtaHQ1OTRPbERCc3hBU0VFTjk1MC9lUEZ4UittcUtBZlpLQnI5YVdqQncwcjNDS0U0UFgzU25ENjRwUWFRc3pYZXFoYzFJelQzNXZzbDM2UWdPN3ZZZUh5Tmd6bUtKWktQMmRObTBOcVdqNzUrVVZKV1A5KzBIZFZibTR1T1RrNWluS3p5YzdQSkNNM2s3U3NUTkl5czBqUHltSDB1R081NUtxYmVlRXRMYm9LRzdYTG8xZzkzVGlrWHF6dStDRnc4dDZCUGRqR3VvMmYwNzMxTzladS9wS1YvcDhIWGVuR0VoeW9PZDlwQmhtaWVtRUx0OTcxUEVKa1UxQTArSnU3NzczckpQRjNEaFgwL1FCNmVZVTU4K0pMWittRkVKeDk3Z1VzYldoQ2IvR2pOZnJRbWlSV09OcHh5UEVCdis4RERickwzMHYxNHJWVVZMZncxbnUxRER0c0hHa1pPZVRrNXBPZlgvaFBRZDRQK29EeThzZ3RMQ1NuSUE5TlFTNmF3aHh5Q2pXa1phY2lNdFBKSGp5Y0tkTXY0dUduM3NCVTVjVXB4UWRPNWc5ZVE4MDRWbThIMXNCNlZ2ZCtTbnpiZDZ6NytCdnFnNTAvaVNUMHQ1V3kxRFJTYXZBUEdFenNsQjlEdWNUeGs4OURDTUcwR2VmWVhubjkxVUlWOUlNUWRDR0VlT3lKaDJkcWNyTCtvc25ONWRubjM2T3lKa0NKd1V1eDNrM2xva1ljY2p6Wjk2dmpieVJXN0NmUUY2Mmp1bVkxanozMUxwcUN3V1Jxc3NuTHl5Y3Z0MEI1L0NkaEg0QStyeEJOM2lBMCtVVm84Z3ZSNUJlZ3ljOGpweUFYVFdFZWFUazVpSlFNMGpXRE9XM3FMRjU5VTQvSDN6WFFFKzVnaVZqc1hwdWV3Q3AxWXZXdm95WCtFWW50ZjJUZHgxOWpEWFVOaEZQN0FYZjVlMWxjdjFiWm01dEN1em5KbEJnQ21LckNQUGJNQjZSbkRpSTlNK2YvUGZIc005ZUxmMkNvb084bjBPZDk4SmJtakROUGxZUVFURDVwR2thTGkxS0RoeEtqRjEyNXhBckhlbHdCcFhPSDR5QUF2WFpKTytWVkxkeDh4K09rWm1lUmxaZWh3SmxidUhkQno4OUZrNStyek9ZRmVUdVZuNGNtUHg5TlFRR2FnaUl5TkhrSWtVN1I0TU80ODc2bmFIQXJaeHNINDZ6K2EwRHZsOVVUdzF3VG9GZ3ZvVE9IZHdOZGF3cWhyd2h3K3ZUTEVTS0Q4Y2VmMERxdlpINitDdnBCRExvUVF0eDM3MjIzcGFTbS9GZG1aaUhQUFBNZWxUV05sSm1EbEJnOFdHckRPSDNkV0tYMlpQcm5nUVM5aDBWTFd5bXZhdWJxNng4Z0pUc1RUWDRHZVhrNXlSazlieStDcmlHbk1FTlJRUlk1QmRuazVHZVRVNUJMVG40Qk9mbUZ5VWNGL3JTTU5ESnpDcmpteGtleGVqcndCamRpOHlhU3A5MWR1L1NKUDdCdU16YXBpd2JmZXByam0wbHMveTRKZWd4N01qR20vL05lWEwrV1VxTTdlY3FlQk4wWVJHc0lVRkhUd3ZPdldzZ3RPQUtSa3NHTUMyWXVGUC9nVUVIZmo2QXZtUC8rNEZHalJyVUpJWmcyN1h5cUt5T1lqWTJVR2NMb2pDR1dXZHR4K0xxVWpxcTczUFVQeElXNjFMcU95cHBWWEhuTjQ0ak1iRFI1bWNuVDg5eTlDcnFpM0Qzb1IvOG5mK2VwdlNZbmk5U3NOSzY4NW5aYzNtNms0TWMwZUxxb2w5ZGg5M1VlQkhGMEpjdXZYdW9nMHJXQnhJNnZhUDMwR3hwQzNUaDhuZGlsRHB3K3hlYlpXT21uMUNTaFRVS3VNd2ZRR2NJWWpZMVVWNFdaZWNIVkNDRW9LaHIwNlYzMzNETldCZjBRQUYwSUlhNjg4c3FuVTFOVC95Y3ZyNGk1eitxb3ExbU53UkJHYXdoaXJBd3JQYmw4M1Rpa0F3djZjdHQ2eXF1YXVlYTZweEVaMldUblpmdzhoUHRUdVhrVUZPU1NvVWxEcEdadzdRMFBJQVY3OEFSN2FUZ29DbUYrSHZUNlFBeXJ0eTNwSXROTjNmSlZGQnZjbEpVSEtUV0gwU1pCTHpPR3FhcHE0ZVdYVFF3YU1ob2hCQmRlT090RjhVOE1GZlQ5RFBvVFR6d3hhT2pRb1gxQ3BITG1tWmRSVmVYSFhCNUVad3hTWXZCUnZiUUZ1eStCdzlkejRFQ1g0elM0T3FtdVhjM050NzlNV25ZdVdYbnBCd2ZveVJWQVRtNG1tWm9NUkhvbWQ5enpHSUZvSDI3ZkJxeWVuZTJ0RHN6Ky9lZEJ0NGJpMktST1hQNDRTNjNyS1N2M1VXS1FsT1c2SllUT0VrUm44bU13QjdCVStKaDEwZldJbEF3S0N3dTN2UGJhcThOVTBBOGgwQldYMkV2bWlwUlVjbktIOHZTejcxS3pNSUxlSEZEaXA1WVFLMXpLaFhLZ1RwVHRrbUlTc1dSWkJ3LysvbjJ5ODR2SXpFazlpRURQcHlBdmgvejhiREkxS1dUbDVQSDAzUGNJUmo5V3VwZktTdGpxd0tUTjdnNTZ0R3NEOFIxZjB2YnBOMWhEUGNuZlp4eExUWVJTbzV4Y3JvZFpZSkFwTWZvcE13Y3Byd255d2l2RjVBOGFnUkNDMjIrLzdTWHhUdzRWOUFNQXVsNnZ6eDg1YWxTbkVJS1RUajBiZzhXT3VUS0UxaENtV0IvR1hOdUN6UnM3Z0JlcllnaXgwcHJnNldmTHlCODhqSXpzbElNRzlQemNmQXB6OGluSTFaQmZtRTFHZGpwRlEwZndRWEVsZ2NaTk9PVGVBN1lhK2pIb2piR05KTDc4T3JsMFQrQ1UrNmhidW9aU28xSzBvak5GMFptamxKaGtTa3crOUpZd3hnbzNaNTkzTVVJSURqdnk4TVRycjc5MnVBcjZJUWk2RUVMY2ZNdk5ONldrQ3RLek5OeDEvMXdxNjVvbzFVY3BOVFN6UU85bjRZcFZTc0hMQVlvUk8rUTQ5ZFlFNzd5L2xDT1BIa2RhcGppb1FDL1NGRkdZazBkQlhnNjUrZG1JZE1GUng0eWhlb2tYZitQbkI3RGliWGZRbStLYjZmMzZENnovNUN2cUF3bVcyem9vc3dRb01malFtU0xvVEkyS0xENUtUVEtXbWhaKy84UTdaT2JsSVlUNG4zc2V2T3Nlc1JlR0N2b0JBdjN4SngvTFBlblVTUzRoQkdNbVRHWkIyWExLeXNPVUdKclJtWnZRVndSWlp1M0FLZmNsclliaVNiL3YvUVM2TDA2REs0YWh3c3VrMDg4aUpTdUZuUHdjOHZaQ1p0dy9EM29lQmJrRjVPZm1KNU51Y3RIa1pKR1NMampydkZrNEF1dVJJZ2thM0RGc1VvSUdPWUZWanU4MzBKMnlZaUt4VXU0a0d2K1l4STV2V2JmNUc1Wjd1akZYTjFKaThDbDkxRXpoSk93UmRLWVFla3NJcmRIR2NaT25Jb1RnK0luSGhUNlkvOEVnRmZSREdIUWhoTGpydnJ1bjVlVG5mUzlTMDduMDZsdXhMQXhTWWd5akwxOUZxU0dJb1NLQzFkV0RRK3BKWmxQdHY2V28zYTk0djlXdGFPU2lPVGVTbHBkRlpsNG0yWGtGNU83RmhKbTl1Vy9QenM1R3BBcnVmUEFoZ2kxeG5QNEVObDh2OWY0ZUd2YlRaMmYzeG5CSlhUamtPQ3Q4WFlRVG54SC84Z2ZXOUgyTHBXNE5PbE1vbVF3VDNMMURxajVLWlUyVUcyNTdrSlMwRklRUS8rKytleCs4VHV5bG9ZSitBRUV2MFpXbXo3endBb01RQWszQkNKNTlTWXU1cG9rU2ZaQVNnNTlpdlV4RlhUUE81SjdUNnRsLzlrcDJ2Mkk5dk1MZXl2MlB2RXhXWVNFWk9WbmtGaFNRbDM4d2dxN0UydFBTMDhrcEdzeDd4UldFV2piaDhDZXcrbnV3SGpEUVA2WG42ejhUNnRqQ0FxTWZuVW5waGxwbUNlL1dCcm04dW9rWFhqVlNOR1FVUWdoT20zcEtUWEZKY1pZSyttOEFkQ0dFZVAzTjE0ODVZdVFSdlVJSWpwODBIWjNaaWFrcVNvaytnTmJrcDlRb1VidXNKWmtidlIvM21yNTJITDV1VmpoaXZQRmVKWU5IakNJelIwTnVmdjVlVFlIZDYyRzN2RHlFU09IRWs4NWd1UzJDTjZUWVR1OGF4ZGlYZTNlN040YlQyNGxUanJOYzdpUVVWMEIzTlcva1E0T2M3SVlhMmFWNEpZU2hJb3ErM00zSlV5NUVpQXp5Q3ZPM3ZQREs4MlBFWGh3cTZBY1lkQ0dFdVBXMm0yN096TXo4TDVHYXcxVy91NC9xaFkxb2pTRktERExGZWcrbEpqZUw2OWZpOU1YMzI0eHVsZHR3K2hOWTNSc3hWZm80ZnRKWnBHUmtrcFdUUSs1QkNYbC9aVndlT2JrRmlKUjBicm5qSVVKTmlXUkR5MFRTbm1yZldsUFp2VEZjM2s0YTNGM1VCMkkwYmRoQzRxc2ZhQWgxODZGZUFWMHBXUEZUclBlaEw0OVNYcmVLbSs1K2tuUk5BU0kxbFd0dnZPNVJzWmVIQ3ZwQkFIcGpZMkRRQmJQT1h5NkVvS0RvQ0o2YVcwcmx3dlZvelFGS2pSSmFrd2V0MmN0UzY3cjlGakt5eW0wNGZOMDB1RGF6Y09rNjVseDlCeUk5ZzZ6Y25JTVc4djZpRzQwbWo0eXNMQW9HRGFQVXNKQkFaQk4yYnk5MktiRmZRTGU3MjdHNnUxamg3Nkt4YndzOVgvK1pKWEliODNZQnZWK1ZDOWZ4MGh0TEdYellHSVFRbkhqcVpGdW9PWktoZ3Y0YkJGMElJZVkrLzlTSXd3NC9MQ2FFWU95RWFTelFTY2tUV3FVMzlnS0RFMzJGbDVXdS9pNnNzZVRGR3R0RmUzZnBidmZGc1hzK1l1SFNOaDUvK24yeWNvdlE1T2FTZjdEdTBmUHl5TXZOSnljN2wreWNiRVJLQ2xQUHZCQXBrTURqMzVEMG5vc3JUUXovYWRCanUxaFN4M1krbnp1R3c5Tkp2Yk9MOHBWTlJIcy9vL2VidjFEbldNdThNaTlhcytJZ1UyendveStQVUtLWE9mR2t5MUFjaUlaL2Z2K2pENHdUKzJDb29COGtvQXNoeEZOUFBYbGVXbHJxWDRSSTQveFoxMk91OUdDMEJDZ3pCZEJhWklyTkxrdzFJZXFkTVZ6K1htWFB2bzljYWF5UzBoN0lJZlZRdDJRZDczMndrbUVqamlVek8vdWdudEZ6OC9QSXlkZVFVNUJOWm00bTZWbDV6SDMrUTVxYVAxSENYcjZZMHVOTVZ0b2dPZVF1eGQzbjcvNk1PckJKNjdGSnJkZ2s1VHpENlVzbTZYamlHR3RhMEMwTXNQN1Q3WFJ2L1lHcVpXdVpyL2RTWXZFb3pSbU1FY3FySTF4ODJVMklsQXp5OG5MK2NzNzUwNjhSKzJpb29COUVvQXNoeEhYWFhUZFhDRUZxZWc0MzMvb29sVFVoOUtZZ1drc0FyY1ZIcVZIQ1VoUEY1a2t1UDZYT2ZXTS9KY2V4U1RIY3ZqaDFTOVppTW9jNDdvUnpTTTNJT0tobjlKejhYRFFGMldnS3NzZ3V5Q1lsUFlzVEowM0Q0VjZQTDlxSGZhQ1o0VTc5dzZETDY3QkpyVmk5YlZpOUhjbWJiNXpLUlUyOFUrckJ0Q3hDKzVZdjZmajBPNHcxVFN3bzg3SEFJS0UxQlRCWGhiajk3cmxrWk9jcTdZOHZ2RUFuOXVGUVFUL0lRSC9sNVZkeXgwOFkyeUNFSUw5Z0dFOC8rd0hWQ3hzcE13VXBTM3FJbFJoa1RGVVI2cDFkU214ZDZ0enJmY3FzY2h5cnR3dFBzSTlGeTlaVFVkbkloUmZkbEFROTd5QUdQU2NKZWphYWdsd3lzM05KUzh2anVSZmVKN0w2WTV6KzJONEJYZW9jbU0xdFVxY1NGZkhHbGVhSWVpL3ZhVDFVMnBxSmYva3RxM3UvUkZzZW90UVFSbXVJVWxYWHlBdXZsbEE0V01sbFArYlk4ZjYzM242elNBWDlYd2gwSVlSNDhvbEhKaDE3N05pUGhCQ01ISFVzYjcxZFFXMWRNenBETXB2S0hFWnI4bU91anJEUzJUa1FZMWNjU0x2M3pvR2RMNDVOanVFTzlMSzhvUk96SmN4Tk56OUtTbnI2UUczNHdRbTZKZ201aHV5OFhISUtDaEVpaFpOUG4wYTllejNlY0s4Q3Q5eTVVLy9Raks0OGh3SzVjcUpmczJTTlVxaGlDakpQNzJXUmR6VWIvL2huL09zL3BjUWNwS1RNVDFYTld1WXRXTUxZQ1VvamhzTENuTStlZU9MaHlXSWZEeFgwZ3hCMElZUzQvOTQ3cjhwSVMvbEJpRlRHVHppRkJjWExxS3h1Ukdmc0w0UUlVV0wwWWFvS3N0TFpxVmdHK3hTbmxYNC9zbjkyNlc3M2RlUHk5N0RjMm9XbElzd0RENzZFU0UwOVNDcllmZ2IwZ213MGhjcHNyc2t2SUtjZ24zUk5LcG01R3Q2YVg0dXZjV01TMEgrdW1hTVNqNDhsVC9BVFZDNXNvZFM0TTdWMXZ0R0xOZHJHaHUvK2pDTzZpUS9MZkppcVFtajFWaWFkZEE1Q3BKQ2JwL256MDA4L2RwbllEME1GL1NBRlhRZ2g3cnoxMXBzMFdWa0lJVGoxMUpsb2RWWXNWYXVUaFJBUnlpeGhTbzAreXN3K2x0bmFkcmN5Mmd0N2RBWDBYcFpidXlpdmlQTFVNKytTbnBWRnprRWNZc3NweUVKVG1KbjBuQ3RFazU5TFRsRXFRZ2l1dlA1aDNLRmVuUDRZMW4rNmE2dnlQZld1THNwcm9zcnZ3UkpDWndwVG9nOHgzeVRoYjkvQXh1Lyt5bUpQakZKekJKM0Z4clJ6TDBTSUZESXlzdjd0Z2Z2dXUwdnNwNkdDZmhDRExvUVFOOTV3M1l1cHFXa0lrY21NR1plaE4za3hWelVyVFErTkVVcU1ZVXJNUVVyTkVyWExWdVB5OXcwVXdOaVRuVi8ra2FXcFltTFlqZHNmcDk2dXpPalBQRCtmN1B4Q05MbWFnL2pVWFVOT2dZYmMvRHh5OC9QSnpjOGxyeUNUdEF6QjBSTk9ZV2w5TXg1L0hQdHUwWXJZTDN3Ty9SMWV1M2N4czRqamtIcFlidXZFV0JtbXhDQlRaa21tdHByRGxCb0NsRlI0YWU1VHN1THFiT3ZSbVgxY2NOSDFDQ0ZJU1UxaHlwUXpYaEg3Y2FpZ0grU2dQL1AwazJsVHAwNTlOejA5bGRUVU5HWmNjQldHY2hjR1M1QVNRNFJTY3pNTHlpUE1OeWx1SmJWTFYySHpkdVAweFpOTDFQWmtHK0svczNyTm04QWx4ZkQ0dTdBNk9paXZDdlBjUzFweWlrYVFyZEVjM0VremUxQzJKcHU4d3NGb3l4YmpEMjNBN20xUG5wakhzUDVpdVc0bkRsOG5EcmticTZjTGg5eURVKzVqYVVNbnBxcW1ueFNuNkV3aFNzcDhsRlE0YVAxNEc0a2RmNkptWlpoWkY5MUNlbW9CUWdoR2pScGxuRDM3MGl3VmRCWDAzY2E1NTU2ckdUOSt2Q0ZMazQxSXplVDhpNjVEYjNaaHJtNml4QlNsMk54RXFVVlpQaGJyUFZocUl6UjR1bkQ1RmRoL3VTLzNMNFB1OW5YaWNIZFRWZHZFSzIrYUtSbzJpdXlEUEphK1ovLzRYRVJxQnMvT2ZaOXc0NlpmRDdvdkdYdVg0emo5UGRpbEh1cVdyVk9XNlVtNGQrMnNvaldGS0NrTFVyNGt5a2ZmL2h0dEgyM2xrcXZ2UUlnY1VsTXptVGh4b21QeTVNbDVZajhQRmZSREFIUWhoTGp3d2dzMUY4dzgzeXlFUUtSbE11UDhLekdVdXltdmJVRnJha0pyYktMTW9wekdGK3M5R0NyOExHbFE4dVAva2ZMV2Z0QmRjaWN1YjRLRlM5YncranNWRER0OERKbFpXUWQxaU8zbkt0dUVTT0grQjE4Z0VONkEzZHUyUjlEN2ZlWjJwc29xSmh3dS93WldPbUpZYXBvb05RUW9OUVozNjZpaXRFOVNxdEkrMUFWd0Judlp0T09QM0hUM0E0aFVEVUlJWnB4M2puVC8vZmNmSlE3QVVFRS9SRUFYUW9pYmJyb3g1K3l6ejFKZ0YybWNNWDAyeFdWV1RGV05hQTFoU2cyaDVBWG9vOVRvUld2MlVyT2tHYXVuNisrdTNMSjc0amc4blRpODdiaThjUnp1Qk1YNmxSeCsxQVRTMHcvdXBKbWZuZEZGS3I5LytHVUNrWTA0Zm1GRzc0ZTl2MldTMDlmTGt2cFdEQlVodE1ZQVdtTmt3SVA5SjdPNktZaXVJb3pEMTg0TnQ5MnR0SmNXZ25QT095Znd4Rk9QRGhVSGFLaWdIMEtnQ3lIRSt2VnJjMmJPbkZralVoVFlKNTgrazNjL1hJeWx1b2xTUTVSU1F6Z0p1eCt0eVVleDNvMitRbWE1by9YdkNydnRDcnJESGNQbDdjVWh0WEw2MlVvUHNFTU5kRTJ1aHJUTUxONSsxNFEvM0lkRDZ0Z2o2UDAzdy82T05RM3VHQlYxVFdoTi9hR3pmdnVuNk81N2Mwc1lyU21FcWFxSkR3MDJ6anp2VWtScUNpbENjT0VGRjljOCtkeFRCd3h5RmZSREVIUWhoTGpyempzeloxMTR3WHVwYWFuL0kwUUs0NCtkeXF0djFWQlJzdzZkS1VxcElUbXptUDJVbFFmUW1yeVVtcFFlYncxdXBUbUUvVzlZS3cyQTdtbkQ2VTNnbG5vSlJIdDUvSm1YRVVLUWtaRkJicTdTVUVGSm9NbE5QdVlmb0JtNy8yZm5EeXpWKzI5R0dvMnlkRDc1MUtsWTdVM0l3UjZjY2djMjczcXMzcTZmZ080TzlPSDA5YkJvNVJvTUZmMHJKTVUwWW5mUWxlNHFwY1lRZWt1RXFrWHJlT3VEQm80NzVUeEVpaExTbTNuT2pJcFhYM290Vnh6Z29ZSitDSUxlUHk2OTdOSzVCWVdGZnhZaWhaR2pqdU9KcDk2blptRWpsc3JrVXQ0WW9zVHNSMnNPVXF6M1VXS1FNVlFHV055d1ZpbkM4SGRqbDJKWVBaM0pDcXp1bmZKMlkvUEVrclhjY1J4U0hFK3dENnRuUGJNdnU0VnN6U0NFU0Vla3BwT2VsVTUyWGpxYWZBMDVlZm1LOHBNcUtGQmNhZkp5eU4ramNzblB6Zis3bEplWG4yelRWRUJ1ZmlFNWVRVms1K1NoeVNzZ08wZHA1YVRKVjBwVmxXMk80TGdUSnFNMUwwZU85T0NRMjNISTdkamxOaVVxSVNjUDIzektUTDdDMFVwNVhRQ3R5VTJweVlmV0xLR3p1TkZaUE9qTWZuU21KclRtQUF0TUxuVG1DQWJUT2lxclc1bjdncG5SWTA5RmlGUXlzck00NFlSanBldXZ2bWFvT0FpR0N2b2hETG9RUXR4MTExM1g1K1hsN2hCQ2tKczNoSnR2ZVl5cTJpamxWYXNvTVlRb01RVXAwWWVUeS9vZ3BRWWZXb3RNZVcySUpkWjF1KzNkZDIwQXVPc1N2Ly92N1ZJQ0tiUUpuei9PNjI4YW1YM1p6WXliTUluTTdGeVVyWVNpbEl3TTByS3p5Y3JOSlRzL0QwMUJQbmtGMmVRVlpPM3kySzhjOHZJS2ZwM3lDeFJ6eXZ4OE5JVzVhQXB6eVNuTUpTdGZRMFpPQmltWmFZalVuYThqVTFQRXhNbG5jUCtEejdEU0ZzSGZ0QkdiM0pGc1Q2MkVIcDMrVGx4K1pabGU3NHBSdGJnUnJkbkRBcjBEblVWTzdzVUQ2Q3plSk93K2RLWkdTbzFoUHRSNzBKYzNVVkc5aHR2dmZKV0NRc1VHcXFDdzRLLzMzWC8vaXpmZmROTlI0aUFaS3VpSE9PaENDSEhwcFpkT09mNzQ0NXFWSmZVZ3pwdDVJL05MYkZpcW15alJCeWpSaHlnMVJKUWx2YkgvOE1pSDF1ekRVaHRobWEwTmg5eUR5OStYZEdIcDJTUG9Eam1CUTBvZ0JmcUl0bnhNTU5MTDRoVkJQaXlwNHRFblgyYk9OVGN6ZGRyNWpCNTNQSVhEUnBLZFB4U1JyaHlDS2RFQ1FVcTZJRFV6bGJUTU5OS3owa2pQeWlRaks0ZU03Qnd5czNQSTFPVHVWTGJ5OXhuWk9XUmthVWpQMUpDV2tVMUtSaVlpSXhXUkxwUWJUS29nUFZkRC90QkJqRG51ZU02L2FBNTMzLzhrODRwcnNEclhFVzM2aEZEMEU2Vm51YmRkYVVzdGRlTDB4YkI2TzFqaGJLZG1hVFA2Q21YMkxqVzUwWnE5YU0zeVRqdG1VekM1VkEraE0wZlFHWnN3VmE1aXZ0Yk9ySXR2VEhaN0ZSeCt4TEN1U3k2NTZIcHhrQTBWOU44QTZFSUlNZXVDbVllUEhqMXFSV3BLSmtMa01tYmNHVHorZERIbE5WRU1GUkcwcGlBbCtrQXlEQlJGWndvcmYyZVEwRmw4bE5jMnNyU2hIYWU4QVpkL0V3NjVaeURNMUgrSTF6L1RPN3c5T0x4eHZJRSs1RkFmL21nUHZrZ1Bua0FNdTZlTkpmVk5tS3M4dkRkL0VYTmYxdlA3eDk3bTFqc2U0NHFyYnVmY21WY3k1WXhabkRoNU9tTW5uTVpSWXljeGV1eXhISEhVQkE0Zk9aWVJSNDRaMEdGSGp1WHcwZU1aZWZReGpCcDdMR09QbmNqeGswN2psQ25uY002c0s3bmkrcnU0OC80bmVlSzVOM2xybmhGelRUMUxyVkhjdmk3a2NDK2h4czM0d3B0eFNYM1lQY3FLcGNIZG1UU2VpTEhTMlU3MWtpajZjaCtsSmlucDVxUDRxK3ZNUG5UbUFGcGpZMUlSdE1ZZ1paWVFob29nVlF1YmVlNGxJK09PbXpLd2dqanA1Qk45RjE5OC9uaHhFQTRWOU44STZFSUlNZnVTU3pRM1huL3oyNFVGZzM4UUlwWHNuQ080NnRvSDBacWNWQzF1eEZEcFIydVNkbXZScXpNSDBKb1ZJOG95UzVEeTJtYVdXYnV3ZVpYbHJNdmZ1eE53T1pHOEFTUm5lOC9PdkcrNzFJMUQ2c1VwYjhUbDI0Z25zQmx2OENPazBNZklrVThKUkQ3R0g5cUl4OWVMVzByZ2tYdHdldUxVMjlleHJDSEVvdVUrYXBkS1ZDMXlENmhtaVplRnkzd3NxUSt5M0JyQjZtckJKYS9CNDIvREhZampEZmZpaTI1QWptN0FHK3JCRTB6Z0RtekE3ZCtNeTllSFErcFI3S09rZm1OSXhSUmltYjJOOHJvSVplVVNKVVkzSlVaSldaNy9SRUZLalVwNWFZaytTSmtsVE1YQ1Jzb3FIZHg0MjJQa0RUb0NJUVI1UmJuL2U4NjVaNzkvKyswMzU0cURkS2lnLzRaQTd4OXpMci84b2xHampvd3BNMDBteDAyZXdkTXZsMUJlNThWUzUwZG5rZENaNVYyV29ydGtkUm44eVRCUmtOcGx6YXh3dE5QZ1ZpcmlYTDVlYkZJM1ZxbERrYmR6NE5UYTZvMWpsYnF4U1YxWWs3TDF5eHZENGU3RzRZN2pjTWR4U1QwNHZRbGMzaDRGZkRtT1MrckdKY1h4Qm5vSDVQWWxjTWtKUEw0RWJqbUJ3eHZENGVuQzV1bkFKblhpOE1Wdyt2dC9aaWRXcVJPYjNJWEQxNDNEbDhEcDY4VWg5MkdUK3FoMzliQnd4VHBNVlNGS2pSTEZlamNsQmk5YWs1eUVPclFIQlNreFNwUVlmUmdxR3lsZjJNemMxdzJjZk5aTVJHb0dRZ2hHSDMxVXozWFhYZk9VT01pSEN2cHZFSFFoaExqK3hxdkh6THBvcGpFN0orYy9oUkRrRFJ2TlJYTnVaVjdwVXFvV1JURllBa3J5aHptb3lCSlNaaTlqRUswNU1tQk1XVmJ1dzFRZHBHWnBNdzB1cGY3YTVtL0Q1bS9INXV2QUtyZGpsVHV4eWpGc3ZrNXNjaHNOY2lzTjBucXNjaXRXYVQxV2J5czJUd2QyYnljT0taYk0xb3Zqa0pJbisyNWxkV0QzeEhGNEU0cWtCRTY1UjVtTnZmR0JmM05LUFVyZXVkeUdUVzdIbm53TkRYSWJWcmtkdXorR3d4L0hMaWRZNmVwbTRjb095aGV1Uld1SnNLQk1vc1NnTE05MTVUNzA1Y3FlWEdzS29EV0hsZmR0aWxCcUNsTnFqRkNxRDZFMythbXFpYktnMU1hVnYzdVkvS0ZLRytPTW5DeW1uek5qNldPUFAzRzBPQVNHQ3ZwdkZQVCtjY3FwcDF4Mnd1UVRPNFFRaVBSc1JoMDlpZHZ2bUl2SkpGTlIxVWlKVVVacjhxT3pKSUUzaHlnMWg5Q1pvMHBNM2hpazFDaFRhblNqdFhpdzFNclVMSXV5MUxZYXE2ZDl3TEhGNm0ybndkT08xZHVGVFZMQ2NsYVA4clZTK2FXWUtGbzlYY3IvMmMzVWNxZjZ6UnVWZmZUT2NsQzcxSTFUN3Q4K3hCVS9PN2ticHorQnk1L0E3bE9LVGxZNnUxbTBvcFB5bXBaa1NuQnd3SEZWU1ZYdFg1YjdrNnNhWldWVGFncFRhbEpnTHphRUtERkdzVlN2cHRJVTRxRjczMkRjbUNta3BpaTJUMGNlT1dMemVUTm4zRFgzK2VkenhTRXlWTkIvNDZBTEljVDlEOTA5L0t4cHA3K1hWNWp6NzBJSTB0STFUSm8wbGVlZS93QzlSV245VkZZZW9zeXlDd2ltQ0RwVEV6cHpGSzB4UUxGZW90amdwbGp2WW42WmsxS1RGMzJGbjRxNkNIWExWclBNMm9yVkhjTXVKWkpwbzMzSjAvc0VObTk4WUkvYy8rZWZrL0s5UFFPZFpIZUcvdnA3eGl2UGFmVW90ZURMSFIwc2FWaFA5ZEptakZYS2ErL2ZndnkwOVZGZzkrMktLWnhVVkhtLzVoQmxsZ0RHeWlDVzJnaFB6aTNsdEZObWtaVSttQlNSVFc1dTBYOU1telp0L3NzdlBYKzBPTVNHQ3ZxL0FPZ0RoM1dYWFhqMnVQRkh1ek95MHY5ZENFRjJUaTRuVGIyVUorYVdvTE40cWFpTFlxNXNwTXdVUnR2dlpHT0tvaldHS0RNcmpRQ0x5K1FrUVAyTkNIekpmWDBBZlhrUVUxV0lpb1dOMUM1ZHhlTDZ0U3kzZDFEdml0SGdqdEhnN3NicWlXUHpKckI1ZS9hZ0JIYXBkMEJXVHpjTnllOWQ2ZWhpYVVNYkM1ZXZvV3BSRTViYUNQcktBS1VtTDFxVEozbHE3cVhVNk51dHdHVDNQWGNTOUdSelE2MHhXUXhram1LdWlsSlIxNGl4VXVMcEYrZHorclJMeWNnZGdoQUNqVWJ6WDhPSGp3aWVjODY1RjRoRGRLaWcvd3VCM2ovT1AvZmNtNDgvOXRqR3JLeE14ZTBrZHhCVHpycVlSNS84QUlOSnBxWnVMZVhWVGVqTWZrcE5QcVZnd3hSS2h1U1VtNEJ5STBoK2JRb3JOd0p6L3pLL1g3NkJGVUtaSllDaE1veTV1cEdLdW1ZcUY3YjhSQlYxTFZUVU5WTlIyMHg1YlJPR2lqRDY4aUNHaWhCbDVzREE4eGJydlFNcU5jcVVXWlRuVjViandaODlXQ3MxS3JGd3JTbWc3TmYxQWN4VkxWVFZOV0d3dUhqaTJRODRlOFlWWk9jUFYwSm1xYWtjT1hKRXg1VlhYLzdneWFlY2tpb080YUdDL2k4SXVoQkNQUHJnWS9sblRKMzYwSmdKWTdwRnBwTFFrcEU5bUVrbnplRHVlNS9sdzlLbFZDME9VYjR3UUZtRnJDU1AvT3pwdEdLNDBBL1VybExLT1B0WEFINWxDNkNYZjFZbFJoOGxSbit5dFhCZ04rMThUdVc1K3JYN3o5ekRhN09FbEhDaUtZTFdHRW9tQ2dXcFdoemt2ZExGM1BQZ1hFNDU3VncwZWNPU2dHZHkvTVJKYTYrOTRib1g1OHk1WkxqNERRd1Y5SDlSMFB2SFpWZGVOdWJDMlJmZk1lN1k4ZEgrOU5HMHJGUkdqanVXaTY2OG5lZGVLOEZZNWFaaVVSaGpWWUF5c3o4NWMvYlBvSXJLTFA1ZGxzVS9WWmtsTW1DenBEVXFvYnc5cWN3Y0h0RFBQWmZXRkVvZUVpWm5hVk1TWkhNNHVmSlFubXZYMlZ4bmpsQm1icUs4ZGpXbTZnQXZ2bTFrOXJXM2NNVDRZMG5Mems1bTdxVncyTWhScTZlZU9lMnVPKys1N3dqeEd4b3E2UC9pb1BlUEs2KzVjdEJkOTl3eFovSkpFeDFabW96LzZML3djd3NHTWZta2FkeCt4N084OVdZTkpxT2Z5cG8xbUNwYUtETTNvamMzb3RXSDBCckQ2QzFSZEpZSUphWVFKY1lRcGFaR1NrMU5TWVVwTllYMkxITmdRRnBMYUdlNHp4eWkxQnoraVhUbUFHVm1tVEt6ak00a1UyWU9VR1lPb0RYNktUTkcwSnRhTUZxYU1WaWltQ3FqV0txYnNGUUZlUGQ5SS9mYzl6Z25uM28yUlVNT1E2U2xLeXVaelBUL25qaDVZdU4xTjF4MzA4V1hYanBFL0FhSENyb0srbTdqd1FjZVNMdmhoaHVubm56S3hNb2hRL00vemNySytDOGgwaEFpbDBFRll6aDUwa1hjZU10elBQOXlPY1ZhSithS0NKWFZxNm1zVXVEWGx5c2xuQ1dHS0RwakMxckRHclRHMWNtWjFiOEhCWDkrTy9DalZZTnVsOVZFbVRGQW1UR0kzaFRBWUFsaE1BY3hsUWVwcUY2THBXSU41b3BHdEFZM0w3OXA1c1k3bnVEVU04NW55T0JCcENhTGJ6UTUyZjlWVkZqdytZVHg0M1gzM1hmZnRMS3lzblR4R3g0cTZDcm9QenV1dnVheUkrYk11ZlNoU1pNbnVZWU5HLzVwV2xwR01xODdoYXlDSVl3NzdsUXV2UFFtN24zd05WNTZ4Y0o4clFPOUpZaWx1cG5LdXJWVTFiVlNVZE9HdVhJZGhvcW01UEk5c3NzeU95bGpKSmxMSGs0K1J0QVpJd1BOS2dhVzg1WW9odkpHTEpVdFZGV3ZvN3AySGJWMXE2bXBpMkt1a0ZpZ1c4a3JyMWR5ei8xdmN1SHNPemgyNHRua0ZBMGZ5RVhYWkdjemZQand6NDQ1NWhqdnRHblRIcHd6Wjg2UjRsOWtxS0Nyb1ArcWNlbGxGMCtlZWNHMDM1OTl6dW1PbzhhTy9DUWxjMmM1cUVqTm9HRFFDTVljZXpKVHo3bWN5Nis1bHp2dmY1R25ueS9tclE5cUtTNnpZYkEwVVYzYk5xQ3EydGFrMWxHOWNEVTFpOVpRdTJndDFRdlhVTE5vRFRVTDExQlZ1NDZxMmphcWExdXBybTJsc25vOVJrc0xwVm8vNzcrL2xCZGZNdkxBNzEvajJ1dnVZZHFNaXpoMjRza1VEVDBja1pLNTg3V2xwekp5ek1pTnA1MTUydEpUVGpubC91blRwNThrL2dXSENyb0srdDgxbm4zK2taeXp6enZ6K011dXVIVDJtZFBPZUd2OE1XUDlnNFlVYkUvSjJCVjhRVnBPTm5sRlF4aDIrR2pHVEpqTUthZGZ6UFJ6ZjhmRnMrL2ttdXNlNXFaYm4rVHUrMTdpb1VmZTRyRW4zK1h4cDk3anlXYys0TWxuUHVUeHA5N240Y2ZlNGQ0SFh1V1cyNS9obXVzZTVwTEw3bUw2dWRkeDhtbXpPZWJZYVJ4K3hBUUtpMGFRcGNuZnJSWmVwQW9HRGMzL2Z2U1lrZkxKcDU3ODlyUnpaMXgzOW96cEV4NTY5UGZwNGw5NHFLQ3JvUDlUNCtSVEp4V2VOL09jMGJmY2V1dEYwOCtkL3RyVXMwOWRYRGc4UDE0d05QOVBXYm5aL3lsU1V2OVBpQlJFU2dvaVBZMlU5SFJTMHROSnk4b2tNMGREVms0ZTJab0Nzbk9MME9RUFFwTmJSSFp1SVZrNUJXUnFja2pQekNRMVBaMlVqSFJTTWpNUTZXbjkyNGYveTlaay8zZHVydVl2QlFXNWZhZFBPV1h4R1dlZDl0YWRkOTEyMlgwUDNEMWg3UGpSaGVwdlJ3VmRCWDBmak5tWHowNDc3OEp6TkNlZWNzTFFOOTU1NDVqVHpqaGo5ckREam5oeCtua1hmRGhtd3JpYW5NS2M5Zm1EQ3I3SUs4cjdMRHN2ZTB0V2J1YU9qT3owcjlPelVyNU8xNlIvbmFGSi96b2pKLzNyZEUzYTErblpxVjluNVdYdXlDblFiTWtyeXZzc3J5anZzNXg4VGRmb2NhT1hYSGpKckErbVRwMzY0cVJKRTY5Kyt1bW5qNTgwYWVMdzZlZWNwYmxnMW5scDZtOUJCVjJWS2xVcTZLcFVxVkpCVjZWS2xRcTZLbFdxVk5CVnFWS2xncTVLbFFxNktsV3FWTkJWcVZLbGdxNUtsU29WZEZXcVZLbWdxMUtsU2dWZGxTcFZLdWlxVktsU1FWZWxTcFVLdWlwVkt1aXFWS2xTUVZlbFNwVUt1aXBWcWxUUVZhbFNwWUt1U3BVcUZYUlZxbFNwb0t0U3BVb0ZYWlVxRlhSVnFsU3BvS3RTcFVvRlhaVXFWU3JvcWxTcFVrRlhwVXFWQ3JvcVZhcFUwRldwVXFXQ3JrcVZDcm9xVmFwVTBGV3BVcVdDcmtxVktoVjBWYXBVcWFDclVxVktCVjJWS2xVcTZLcFVxVkpCVjZWS2xRcTZLbFVxNktwVXFWSkJWNlZLbFFxNktsV3FWTkJWcVZLbGdxNUtsU29WZEZXcVZQMTYvZjhCQUhVd0pYWnZsZmZ0QUFBQUFFbEZUa1N1UW1DQ11dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2Zvb2JveC0xLjMuMS5taW4uanM8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW0x5b0tLaUJHYjI5Q2IzZ2dMU0JCSUhKbGMzQnZibk5wZG1VZ2FXMWhaMlVnYkdsbmFIUmliM2dnWm05eUlHcFJkV1Z5ZVFvcUlHaDBkSEE2THk5blpYUm1iMjlpYjNndVkyOXRDaW9LS2lCRGIzQjVjbWxuYUhRZ01qQXhNaXdnVTNSbGRtVnVJRlZ6YUdWeUlDWWdRbkpoWkNCV2FXNWpaVzUwQ2lvZ2FIUjBjRG92TDNSb1pXMWxjbWRsYm1ONUxtTnZiUW9xQ2lvZ1JHRjBaVG9nTVRjZ1UyVndkR1Z0WW1WeUlESXdNVElLS2lCV1pYSnphVzl1SURvZ01TNHlMakVLS2k4S2RtRnlJR052Ym5OdmJHVTdhV1lvSVhkcGJtUnZkeTVqYjI1emIyeGxLV052Ym5OdmJHVTllMzA3WTI5dWMyOXNaUzVzYjJjOVkyOXVjMjlzWlM1c2IyZDhmR1oxYm1OMGFXOXVLQ2w3ZlR0amIyNXpiMnhsTG5kaGNtNDlZMjl1YzI5c1pTNTNZWEp1Zkh4bWRXNWpkR2x2YmlncGUzMDdZMjl1YzI5c1pTNWxjbkp2Y2oxamIyNXpiMnhsTG1WeWNtOXlmSHhtZFc1amRHbHZiaWdwZTMwN1kyOXVjMjlzWlM1cGJtWnZQV052Ym5OdmJHVXVhVzVtYjN4OFpuVnVZM1JwYjI0b0tYdDlPM1poY2lCS1UwOU9PMmxtS0NGS1UwOU9LVXBUVDA0OWUzMDdTbE5QVGk1emRISnBibWRwWm5rOVNsTlBUaTV6ZEhKcGJtZHBabmw4ZkdaMWJtTjBhVzl1S0NsN2ZUc29ablZ1WTNScGIyNG9ZU3hpTEdZcGUySXVabTl2WW05NFBYdDJaWEp6YVc5dU9udHRZV3B2Y2pveExHMXBibTl5T2pJc2RHOVRkSEpwYm1jNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z1lpNW1iMjlpYjNndWRtVnljMmx2Ymk1dFlXcHZjaXNpTGlJcllpNW1iMjlpYjNndWRtVnljMmx2Ymk1dGFXNXZjbjBzY0dGeWMyVTZablZ1WTNScGIyNG9ZU2w3ZG1WeWMybHZiajB2S0Z4a0t5bGNMajhvWEdRcktUOWNMajhvWEdRcktUOHZMbVY0WldNb1lTazdjbVYwZFhKdWUyMWhhbTl5T25CaGNuTmxTVzUwS0habGNuTnBiMjViTVYwcGZId3dMRzFwYm05eU9uQmhjbk5sU1c1MEtIWmxjbk5wYjI1Yk1sMHBmSHd3TEhCaGRHTm9PbkJoY25ObFNXNTBLSFpsY25OcGIyNWJNMTBwZkh3d2ZYMTlMRzl3ZEdsdmJuTTZlMlpwZEZSdlUyTnlaV1Z1T21aaGJITmxMR2hwWkdWVFkzSnZiR3hpWVhKek9uUnlkV1VzWTJGd2RHbHZibk02ZTJWdVlXSnNaV1E2ZEhKMVpTeDBhWFJzWlZOdmRYSmpaVG9pYVcxaFoyVWlMR1JsYzJOVGIzVnlZMlU2SW1acGJtUWlMR0Z1YVcxaGRHbHZiam9pYzJ4cFpHVWlmU3h6YUc5M1FuVjBkRzl1Y3pwMGNuVmxMR05zYjNObFQyNVBkbVZ5YkdGNVEyeHBZMnM2ZEhKMVpTeHphRzkzUTI5MWJuUTZkSEoxWlN4amIzVnVkRTFsYzNOaFoyVTZJbWx0WVdkbElDVnBibVJsZUNCdlppQWxkRzkwWVd3aUxITmxiR1ZqZEc5eU9pZGhXMmh5WldZa1BTSXVaMmxtSWwwc0lHRmJhSEpsWmlROUlpNUhTVVlpWFN3Z1lWdG9jbVZtSkQwaUxtcHdaeUpkTENCaFcyaHlaV1lrUFNJdVNsQkhJbDBzSUdGYmFISmxaaVE5SWk1cWNHVm5JbDBzSUdGYmFISmxaaVE5SWk1S1VFVkhJbDBzSUdGYmFISmxaaVE5SWk1d2JtY2lYU3dnWVZ0b2NtVm1KRDBpTGxCT1J5SmRMQ0JoVzJoeVpXWWtQU0l1WW0xd0lsMHNJR0ZiYUhKbFppUTlJaTVDVFZBaVhTY3NabWxzZEdWeVVtVm5aWGc2TDF3dUtHcHdaM3hxY0dWbmZIQnVaM3huYVdaOFltMXdLUzlwTEd4dllXUmxjbFJwYldWdmRYUTZNakF3TEhKbGMybDZaVlJwYldWdmRYUTZNekF3TEd4dllXUkVaV3hoZVRvd0xIQnlaV3h2WVdSSmJXRm5aWE02Wm1Gc2MyVXNaR1ZsY0d4cGJtdHBibWM2ZTJWdVlXSnNaV1E2ZEhKMVpTeHdjbVZtYVhnNkltWnZiMkp2ZUNKOUxHRm1abWxzYVdGMFpUcDdaVzVoWW14bFpEcDBjblZsTEhCeVpXWnBlRG9pVUc5M1pYSmxaQ0JpZVNBaUxIVnliRG9pYUhSMGNEb3ZMMmRsZEdadmIySnZlQzVqYjIwaWZTeGxjbkp2Y2pwN2JXVnpjMkZuWlRvaVQyOXdjeXdnZEdobElHbHRZV2RsSUdOdmRXeGtiaWQwSUd4dllXUWlMSE55WXpvaWFXMW5MMlZ5Y205eUxuQnVaeUo5TEdSbFluVm5PbVpoYkhObGZTeHdiSFZuYVc1ek9udGZkbUZzYVdSaGRHVTZablZ1WTNScGIyNG9ZeWw3YVdZb2RIbHdaVzltSUdNdWJtRnRaU0U5UFNKemRISnBibWNpS1h0aUxtWnZiMkp2ZUM1dmNIUnBiMjV6TG1SbFluVm5QVDEwY25WbEppWmpiMjV6YjJ4bExtVnljbTl5S0NkV1lXeHBaR0YwYVc5dUlHWmhhV3hsWkN3Z2NHeDFaMmx1SUdSdlpYTWdibTkwSUdsdGNHeGxiV1Z1ZENCaElITjBjbWx1WnlCd2NtOXdaWEowZVNCallXeHNaV1FnSW01aGJXVWlMaWNzWXlrN2NtVjBkWEp1SUdaaGJITmxmV2xtS0NGaExtbHpSblZ1WTNScGIyNG9ZeTVwYm1sMEtTbDdZaTVtYjI5aWIzZ3ViM0IwYVc5dWN5NWtaV0oxWnowOWRISjFaU1ltWTI5dWMyOXNaUzVsY25KdmNpZ25WbUZzYVdSaGRHbHZiaUJtWVdsc1pXUXNJSEJzZFdkcGJpQWlKeXRqTG01aGJXVXJKeUlnWkc5bGN5QnViM1FnYVcxd2JHVnRaVzUwSUdFZ1puVnVZM1JwYjI0Z1kyRnNiR1ZrSUNKcGJtbDBJaTRuTEdNcE8zSmxkSFZ5YmlCbVlXeHpaWDFpTG1admIySnZlQzV2Y0hScGIyNXpMbVJsWW5WblBUMTBjblZsSmlaamIyNXpiMnhsTG14dlp5Z25WbUZzYVdSaGRHbHZiaUJ6ZFdOalpXVmtaV1FnWm05eUlIQnNkV2RwYmlBaUp5dGpMbTVoYldVckp5SXVKeXhqS1R0eVpYUjFjbTRnZEhKMVpYMHNjbVZuYVhOMFpYSmxaRHBiWFN4eVpXZHBjM1JsY2pwbWRXNWpkR2x2YmloakxHUXBlMmxtS0dJdVptOXZZbTk0TG5Cc2RXZHBibk11WDNaaGJHbGtZWFJsS0dNcEtYdGlMbVp2YjJKdmVDNXdiSFZuYVc1ekxuSmxaMmx6ZEdWeVpXUXVjSFZ6YUNoaktUdGtJVDFtSmlaMGVYQmxiMllnWkQwOVBTSnZZbXBsWTNRaUppWmhMbVY0ZEdWdVpDaDBjblZsTEdJdVptOXZZbTk0TG05d2RHbHZibk1zWkNrN1lpNW1iMjlpYjNndWIzQjBhVzl1Y3k1a1pXSjFaejA5ZEhKMVpTWW1ZMjl1YzI5c1pTNXNiMmNvSjFCc2RXZHBiaUFpSnl0akxtNWhiV1VySnlJZ2FHRnpJR0psWlc0Z2NtVm5hWE4wWlhKbFpDQjNhWFJvSUhSb1pTQkdiMjlpYjNndUp5eGpLWDE5TEdsdWFYUTZablZ1WTNScGIyNG9ZeWw3Wm05eUtIWmhjaUJoUFRBN1lUeGlMbVp2YjJKdmVDNXdiSFZuYVc1ekxuSmxaMmx6ZEdWeVpXUXViR1Z1WjNSb08yRXJLeWwwY25sN1lpNW1iMjlpYjNndWNHeDFaMmx1Y3k1eVpXZHBjM1JsY21Wa1cyRmRMbWx1YVhRb1l5bDlZMkYwWTJnb1pDbDdZaTVtYjI5aWIzZ3ViM0IwYVc5dWN5NWtaV0oxWnowOWRISjFaU1ltWTI5dWMyOXNaUzVsY25KdmNpaGtLWDE5ZlgwN2RtRnlJR1U5WWk1bWIyOWliM2d1ZG1WeWMybHZiaTV3WVhKelpTaGhMbVp1TG1weGRXVnllU2s3YVdZb1pTNXRZV3B2Y2owOU1TWW1aUzV0YVc1dmNqdzJLWHRoTG1adUxtWnZiMkp2ZUQxbWRXNWpkR2x2YmlncGUyTnZibk52YkdVdVpYSnliM0lvSWtadmIySnZlQ0J5WlhGMWFYSmxjeUJxVVhWbGNua2dkbVZ5YzJsdmJpQXhMallnYjNJZ2FHbG5hR1Z5SUhSdklIZHZjbXNnWTI5eWNtVmpkR3g1TGlCUWJHVmhjMlVnZFhCbmNtRmtaU0JxVVhWbGNua2dkRzhnZEdobElHMXBibWx0ZFcwZ2RtVnljMmx2YmlCaGJtUWdjbVZzYjJGa0lIUm9aU0J3WVdkbExpSXBmVHR5WlhSMWNtNTlkbUZ5SUdROU1EdGhMbVp1TG1admIySnZlRDFtZFc1amRHbHZiaWhqS1h0alBXTjhmSHQ5TzNaaGNpQmxQV0V1WlhoMFpXNWtLSFJ5ZFdVc2UzMHNZaTVtYjI5aWIzZ3ViM0IwYVc5dWN5eGpLVHR5WlhSMWNtNGdkR2hwY3k1bFlXTm9LR1oxYm1OMGFXOXVLQ2w3WkNzck8zUm9hWE11Wm05dlltOTRQVzVsZHlCbktIUm9hWE1zWlN4a0tYMHBmVHRtZFc1amRHbHZiaUJqS0NsN2RtRnlJR0U5ZEdocGN6dGhMbWxrUFc1MWJHdzdZUzVpZFhONVBXWmhiSE5sTzJFdWMzUmhjblE5Wm5WdVkzUnBiMjRvWXl4aUtYdHBaaWhoTG1KMWMza3BjbVYwZFhKdU8yRXVjM1J2Y0NncE8yRXVhV1E5YzJWMFZHbHRaVzkxZENobWRXNWpkR2x2YmlncGUyTW9LVHRoTG1sa1BXNTFiR3c3WVM1aWRYTjVQV1poYkhObGZTeGlLVHRoTG1KMWMzazlkSEoxWlgwN1lTNXpkRzl3UFdaMWJtTjBhVzl1S0NsN2FXWW9ZUzVwWkNFOWJuVnNiQ2w3WTJ4bFlYSlVhVzFsYjNWMEtHRXVhV1FwTzJFdWFXUTliblZzYkR0aExtSjFjM2s5Wm1Gc2MyVjlmWDFtZFc1amRHbHZiaUJuS0djc2FDeGxLWHQyWVhJZ1pEMTBhR2x6TzJRdWFXUTlaVHRrTG1OdmJuUmhhVzVsY2oxbk8yUXViM0IwYVc5dWN6MW9PMlF1ZEdoMWJXSnpQVnRkTzJRdWJXOWtZV3c5Ym5Wc2JEdGtMbVJsWW5WblBXWjFibU4wYVc5dUtDbDdhV1lvWVhKbmRXMWxiblJ6TG14bGJtZDBhRDA5TUh4OFpDNXZjSFJwYjI1ekxtUmxZblZuUFQxbVlXeHpaU2x5WlhSMWNtNDdkbUZ5SUdFOVFYSnlZWGt1Y0hKdmRHOTBlWEJsTG5Oc2FXTmxMbU5oYkd3b1lYSm5kVzFsYm5SektTeGlQV0ZiTUYwN1lTNXphR2xtZENncE8ybG1LR0V1YkdWdVozUm9QakFwWTI5dWMyOXNaUzVzYjJjb1lpeGhLVHRsYkhObElHTnZibk52YkdVdWJHOW5LR0lwZlR0a0xtUmxZblZuS0NKbWIyOWliM2c2WW1WbmFXNGlLVHRrTG1sdWFYUTlablZ1WTNScGIyNG9LWHRrTG1SbFluVm5LQ0ptYjI5aWIzZ3VhVzVwZERwaVpXZHBiaUlwTzNaaGNpQmpQV0VvWkM1amIyNTBZV2x1WlhJcE8ybG1LR011YVhNb1pDNXZjSFJwYjI1ekxuTmxiR1ZqZEc5eUtTa2hZeTVwY3lnaUxtWnZiMkp2ZUMxc2FXNXJJaWttSm1NdVptbHNkR1Z5S0daMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUdFb2RHaHBjeWt1WVhSMGNpZ2lhSEpsWmlJcEppWmhLSFJvYVhNcExtRjBkSElvSW1oeVpXWWlLUzV0WVhSamFDaGtMbTl3ZEdsdmJuTXVabWxzZEdWeVVtVm5aWGdwZlNrdVpXRmphQ2htZFc1amRHbHZiaWhpS1h0MGFHbHpMbWx1WkdWNFBXSTdaQzUwYUhWdFluTXVjSFZ6YUNoaEtIUm9hWE1wS1gwcExtRmtaRU5zWVhOektDSm1iMjlpYjNndGJHbHVheUlwTG5WdVltbHVaQ2dpWTJ4cFkyc3VabTl2WW05NElpa3VZbWx1WkNnaVkyeHBZMnN1Wm05dlltOTRJaXhtZFc1amRHbHZiaWhoS1h0aExuQnlaWFpsYm5SRVpXWmhkV3gwS0NrN1pDNXRiMlJoYkM1emFHOTNLSFJvYVhNdWFXNWtaWGdwZlNrN1pXeHpaU0JqTG1acGJtUW9aQzV2Y0hScGIyNXpMbk5sYkdWamRHOXlLUzV1YjNRb0lpNW1iMjlpYjNndGJHbHVheUlwTG1acGJIUmxjaWhtZFc1amRHbHZiaWdwZTNKbGRIVnliaUJoS0hSb2FYTXBMbUYwZEhJb0ltaHlaV1lpS1NZbVlTaDBhR2x6S1M1aGRIUnlLQ0pvY21WbUlpa3ViV0YwWTJnb1pDNXZjSFJwYjI1ekxtWnBiSFJsY2xKbFoyVjRLWDBwTG1WaFkyZ29ablZ1WTNScGIyNG9ZaWw3ZEdocGN5NXBibVJsZUQxaU8yUXVkR2gxYldKekxuQjFjMmdvWVNoMGFHbHpLU2w5S1M1aFpHUkRiR0Z6Y3lnaVptOXZZbTk0TFd4cGJtc2lLUzUxYm1KcGJtUW9JbU5zYVdOckxtWnZiMkp2ZUNJcExtSnBibVFvSW1Oc2FXTnJMbVp2YjJKdmVDSXNablZ1WTNScGIyNG9ZU2w3WVM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzJRdWJXOWtZV3d1YzJodmR5aDBhR2x6TG1sdVpHVjRLWDBwTzJRdVpHVmlkV2NvSW1admIySnZlQzVwYm1sME9uUm9kVzFpYzE5c2IyRmtaV1FpS1R0a0xtaGhjMDExYkhScGNHeGxTVzFoWjJWelBXUXVkR2gxYldKekxteGxibWQwYUQ0eE8yUXVhVzVrWlhobGN5NXpaWFFvS1R0aUxtWnZiMkp2ZUM1d2JIVm5hVzV6TG1sdWFYUW9aQ2s3WkM1a1pXSjFaeWdpWm05dlltOTRMbWx1YVhRNmNHeDFaMmx1YzE5cGJtbDBhV0ZzYVhwbFpDSXBPMlF1WTNKbFlYUmxUVzlrWVd3b0tUdGtMbTF2WkdGc0xtcHhMblZ1WW1sdVpDZ2lMbVp2YjJKdmVDSXBMbUpwYm1Rb0ltTnNhV05yTG1admIySnZlQ0lzWm5WdVkzUnBiMjRvWVNsN2FXWW9aQzV2Y0hScGIyNXpMbU5zYjNObFQyNVBkbVZ5YkdGNVEyeHBZMnM5UFhSeWRXVW1KbVF1Ylc5a1lXd3VhbkV1WjJWMEtEQXBQVDFoTG5SaGNtZGxkQ2w3WVM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzJRdWJXOWtZV3d1WTJ4dmMyVW9LVHR5WlhSMWNtNGdabUZzYzJWOWNtVjBkWEp1SUhSeWRXVjlLVHRrTG1SbFluVm5LQ0ptYjI5aWIzZ3VhVzVwZERwdmRtVnliR0Y1WDJOc2FXTnJYMkp2ZFc1a0lpazdaQzV0YjJSaGJDNXFjUzUxYm1SbGJHVm5ZWFJsS0NJdVptOXZZbTk0SWlrdVpHVnNaV2RoZEdVb0lpNW1iMjlpYjNndFkyeHZjMlVpTENKamJHbGpheTVtYjI5aWIzZ2lMR1oxYm1OMGFXOXVLR0VwZTJFdWNISmxkbVZ1ZEVSbFptRjFiSFFvS1R0a0xtMXZaR0ZzTG1Oc2IzTmxLQ2s3Y21WMGRYSnVJR1poYkhObGZTa3VaR1ZzWldkaGRHVW9JaTVtYjI5aWIzZ3RjSEpsZGlJc0ltTnNhV05yTG1admIySnZlQ0lzWm5WdVkzUnBiMjRvWVNsN1lTNXdjbVYyWlc1MFJHVm1ZWFZzZENncE8yUXViVzlrWVd3dWNISmxkaWdwTzNKbGRIVnliaUJtWVd4elpYMHBMbVJsYkdWbllYUmxLQ0l1Wm05dlltOTRMVzVsZUhRaUxDSmpiR2xqYXk1bWIyOWliM2dpTEdaMWJtTjBhVzl1S0dFcGUyRXVjSEpsZG1WdWRFUmxabUYxYkhRb0tUdGtMbTF2WkdGc0xtNWxlSFFvS1R0eVpYUjFjbTRnWm1Gc2MyVjlLUzVrWld4bFoyRjBaU2dpTG1admIySnZlQzFwYm01bGNpQXVabTl2WW05NExXbHRaeTFqZFhKeVpXNTBJaXdpWTJ4cFkyc3VabTl2WW05NElpeG1kVzVqZEdsdmJpZ3BlMlF1Ylc5a1lXd3VZblZ6ZVQwOVptRnNjMlVtSm1RdWJXOWtZV3d1YVcxaFoyVkRiR2xqYTJWa0tDbDlLUzVrWld4bFoyRjBaU2dpTG1admIySnZlQzFwYm01bGNpQXVabTl2WW05NExXbHRaeTFqZFhKeVpXNTBJaXdpYlc5MWMyVmxiblJsY2k1bWIyOWliM2dpTEdaMWJtTjBhVzl1S0dFcGUyRXVjSEpsZG1WdWRFUmxabUYxYkhRb0tUdGtMbTF2WkdGc0xtSjFjM2s5UFdaaGJITmxKaVprTG5KaGFYTmxLQ0ptYjI5aWIzaGZhVzFoWjJWZmJXOTFjMlZsYm5SbGNpSXNlM1JvZFcxaU9tUXViVzlrWVd3dVoyVjBRM1Z5Y21WdWRGUm9kVzFpS0NsOUtUdHlaWFIxY200Z1ptRnNjMlY5S1M1a1pXeGxaMkYwWlNnaUxtWnZiMkp2ZUMxcGJtNWxjaUF1Wm05dlltOTRMV2x0WnkxamRYSnlaVzUwSWl3aWJXOTFjMlZzWldGMlpTNW1iMjlpYjNnaUxHWjFibU4wYVc5dUtHRXBlMkV1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHRrTG0xdlpHRnNMbUoxYzNrOVBXWmhiSE5sSmlaa0xuSmhhWE5sS0NKbWIyOWliM2hmYVcxaFoyVmZiVzkxYzJWc1pXRjJaU0lzZTNSb2RXMWlPbVF1Ylc5a1lXd3VaMlYwUTNWeWNtVnVkRlJvZFcxaUtDbDlLVHR5WlhSMWNtNGdabUZzYzJWOUtUdGtMbVJsWW5WbktDSm1iMjlpYjNndWFXNXBkRHBqYkdsamExOW9iM1psY2w5aWIzVnVaQ0lwTzJFb1pHOWpkVzFsYm5RcExtSnBibVFvSW10bGVXUnZkMjR1Wm05dlltOTRJaXhtZFc1amRHbHZiaWhpS1h0cFppaGtMbTF2WkdGc0xtcHhMbWhoYzBOc1lYTnpLQ0ptYjI5aWIzZ3RjMmh2ZHlJcFBUMW1ZV3h6WlNseVpYUjFjbTRnZEhKMVpUdDJZWElnWVQxaUxtdGxlVU52WkdVN2FXWW9ZVDA5UFRJM0tYdGlMbkJ5WlhabGJuUkVaV1poZFd4MEtDazdaQzV0YjJSaGJDNWpiRzl6WlNncE8zSmxkSFZ5YmlCbVlXeHpaWDFsYkhObElHbG1LR1F1YUdGelRYVnNkR2x3YkdWSmJXRm5aWE05UFhSeWRXVW1KbUU5UFQwek55bDdZaTV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMlF1Ylc5a1lXd3VjSEpsZGlncE8zSmxkSFZ5YmlCbVlXeHpaWDFsYkhObElHbG1LR1F1YUdGelRYVnNkR2x3YkdWSmJXRm5aWE05UFhSeWRXVW1KbUU5UFQwek9TbDdZaTV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMlF1Ylc5a1lXd3VibVY0ZENncE8zSmxkSFZ5YmlCbVlXeHpaWDFsYkhObElHUXViVzlrWVd3dVluVnplVDA5Wm1Gc2MyVW1KbVF1Y21GcGMyVW9JbVp2YjJKdmVGOXJaWGxrYjNkdUlpeDdhMlY1T21GOUtYMHBPMlF1WkdWaWRXY29JbVp2YjJKdmVDNXBibWwwT210bGVYTmZZbTkxYm1RaUtUdGtMbTF2WkdGc0xtcHhMbVpwYm1Rb0lpNW1iMjlpYjNndGFXNXVaWElpS1M1bWIyOWliM2h6ZDJsd1pTaDdjM2RwY0dWTVpXWjBPbVoxYm1OMGFXOXVLQ2w3WkM1dGIyUmhiQzV3Y21WMktDbDlMSE4zYVhCbFVtbG5hSFE2Wm5WdVkzUnBiMjRvS1h0a0xtMXZaR0ZzTG01bGVIUW9LWDE5S1R0a0xtUmxZblZuS0NKbWIyOWliM2d1YVc1cGREcDBiM1ZqYUY5aWIzVnVaQ0lwTzJFb1lpa3VZbWx1WkNnaWNtVnphWHBsTG1admIySnZlQ0lzWm5WdVkzUnBiMjRvS1h0cFppaGtMbTF2WkdGc0xtcHhMbWhoYzBOc1lYTnpLQ0ptYjI5aWIzZ3RjMmh2ZHlJcFBUMW1ZV3h6WlNseVpYUjFjbTRnZEhKMVpUdGtMblJwYldWeWN5NXlaWE5wZW1VdWMzUmhjblFvWm5WdVkzUnBiMjRvS1h0MllYSWdZVDFrTG0xdlpHRnNMbXB4TG1acGJtUW9JaTVtYjI5aWIzZ3RhVzFuTFdOMWNuSmxiblFpS1R0a0xtNWhkSFZ5WVd4SmJXRm5aVk5wZW1Vb1lTNW5aWFFvTUNrc1puVnVZM1JwYjI0b1lpbDdaQzV0YjJSaGJDNXlaWE5wZW1Vb1lpNXVZWFIxY21Gc1YybGtkR2dzWWk1dVlYUjFjbUZzU0dWcFoyaDBMR1oxYm1OMGFXOXVLQ2w3WkM1dGIyUmhiQzV5WldaeVpYTm9RMkZ3ZEdsdmJpZ3BPMkV1WTNOektDSnZjR0ZqYVhSNUlpd3hLWDBwZlNsOUxHUXViM0IwYVc5dWN5NXlaWE5wZW1WVWFXMWxiM1YwS1gwcE8yUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1cGJtbDBPbkpsYzJsNlpWOWliM1Z1WkNJcE8zWmhjaUJsUFdRdWJXOWtZV3d1WjJWMFNHRnphQ2dwTzJsbUtHVW1KbVF1YVdROVBXVXVabTl2WW05NFNXUXBlM1poY2lCbVBXUXVkR2gxYldKelcyVXVhVzFoWjJWSmJtUmxlRjA3WkM1eVlXbHpaU2dpWm05dlltOTRYMmhoYzE5b1lYTm9JaXg3ZEdoMWJXSTZabjBwTzNObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0b0tYdGhLR1F1WTI5dWRHRnBibVZ5S1M1bWFXNWtLR1F1YjNCMGFXOXVjeTV6Wld4bFkzUnZjaWt1WlhFb1pTNXBiV0ZuWlVsdVpHVjRLUzVqYkdsamF5Z3BmU3cxTUNsOVpDNWtaV0oxWnlnaVptOXZZbTk0TG1sdWFYUTZaVzVrSWlsOU8yUXVhVzVrWlhobGN6MTdjSEpsZGpvdE1TeGpkWEp5Wlc1ME9qQXNibVY0ZERveExDSnpaWFFpT21aMWJtTjBhVzl1S0dFcGUyUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1cGJtUmxlR1Z6TG5ObGREcGlaV2RwYmlJc1lTazdZVDFoZkh3d08yRTlZVDVrTG5Sb2RXMWljeTVzWlc1bmRHZ3RNVDh3T21FOE1EOWtMblJvZFcxaWN5NXNaVzVuZEdndE1UcGhPM1poY2lCalBXRXRNU3hpUFdFck1UdGtMbWx1WkdWNFpYTXVZM1Z5Y21WdWREMWhPMlF1YVc1a1pYaGxjeTV3Y21WMlBXTThNRDlrTG5Sb2RXMWljeTVzWlc1bmRHZ3RNVHBqTzJRdWFXNWtaWGhsY3k1dVpYaDBQV0krWkM1MGFIVnRZbk11YkdWdVozUm9MVEUvTURwaU8yUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1cGJtUmxlR1Z6TG5ObGREcGxibVFpTEdFcGZYMDdaQzUwYVcxbGNuTTllMlZ5Y205eU9tNWxkeUJqTEd4dllXUnBibWM2Ym1WM0lHTXNjbVZ6YVhwbE9tNWxkeUJqTEdodmRtVnlPbTVsZHlCamZUdGtMbkpoYVhObFBXWjFibU4wYVc5dUtHWXNZaWw3WWoxaWZIeDdmVHQyWVhJZ1l6MTdabUk2WkgwN1lTNWxlSFJsYm1Rb2RISjFaU3hqTEdJcE8zWmhjaUJsUFdFdVJYWmxiblFvWml4aktUdGhLR1F1WTI5dWRHRnBibVZ5S1M1MGNtbG5aMlZ5S0dVcE8zSmxkSFZ5YmlCbGZUdGtMbkJ5Wld4dllXUTlablZ1WTNScGIyNG9LWHRrTGw5d2NtVnNiMkZrU1cxaFoyVW9aQzUwYUhWdFluTmJaQzVwYm1SbGVHVnpMbkJ5WlhaZEtUdGtMbDl3Y21Wc2IyRmtTVzFoWjJVb1pDNTBhSFZ0WW5OYlpDNXBibVJsZUdWekxtNWxlSFJkS1gwN1pDNWZjSEpsYkc5aFpFbHRZV2RsUFdaMWJtTjBhVzl1S0dFcGUybG1LR0V1YkdWdVozUm9QakFtSm1FdVpHRjBZU2dpY0hKbGJHOWhaR1ZrSWlraFBTSjBjblZsSWlsN2RtRnlJR0k5Ym1WM0lFbHRZV2RsTzJJdWMzSmpQV0V1WVhSMGNpZ2lhSEpsWmlJcE8yRXVaR0YwWVNnaWNISmxiRzloWkdWa0lpd2lkSEoxWlNJcGZYMDdaQzV1WVhSMWNtRnNTVzFoWjJWVGFYcGxQV1oxYm1OMGFXOXVLR0lzWXlsN1pDNWtaV0oxWnlnaVptOXZZbTk0TG01aGRIVnlZV3hKYldGblpWTnBlbVU2WW1WbmFXNGlLVHR6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NsN2RtRnlJR1U5ZTI1aGRIVnlZV3hJWldsbmFIUTZNQ3h1WVhSMWNtRnNWMmxrZEdnNk1IMDdhV1lvSW01aGRIVnlZV3hYYVdSMGFDSnBiaUJpSmlZaWJtRjBkWEpoYkVobGFXZG9kQ0pwYmlCaUppWmlMbTVoZEhWeVlXeElaV2xuYUhRaFBUQW1KbUl1Ym1GMGRYSmhiRmRwWkhSb0lUMHdLWHRrTG1SbFluVm5LQ0ptYjI5aWIzZ3VibUYwZFhKaGJFbHRZV2RsVTJsNlpUcGxlR2x6ZEhNaUtUdGxMbTVoZEhWeVlXeElaV2xuYUhROVlpNXVZWFIxY21Gc1NHVnBaMmgwTzJVdWJtRjBkWEpoYkZkcFpIUm9QV0l1Ym1GMGRYSmhiRmRwWkhSb08yUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1dVlYUjFjbUZzU1cxaFoyVlRhWHBsT21WdVpDSXBPMkV1YVhOR2RXNWpkR2x2YmloaktTWW1ZeWhsS1gxbGJITmxlMlF1WkdWaWRXY29JbVp2YjJKdmVDNXVZWFIxY21Gc1NXMWhaMlZUYVhwbE9tNXZiaTFsZUdsemRHRnVkQ0lwTzNaaGNpQm1QVzVsZHlCSmJXRm5aVHRtTG05dWJHOWhaRDFtZFc1amRHbHZiaWdwZTJJdWJtRjBkWEpoYkVobGFXZG9kRDFsTG01aGRIVnlZV3hJWldsbmFIUTlaaTVvWldsbmFIUTdZaTV1WVhSMWNtRnNWMmxrZEdnOVpTNXVZWFIxY21Gc1YybGtkR2c5Wmk1M2FXUjBhRHRrTG1SbFluVm5LQ0ptYjI5aWIzZ3VibUYwZFhKaGJFbHRZV2RsVTJsNlpUcGxibVFpS1R0aExtbHpSblZ1WTNScGIyNG9ZeWttSm1Nb1pTbDlPMll1YjI1bGNuSnZjajFtZFc1amRHbHZiaWhpS1h0a0xtOXdkR2x2Ym5NdVpHVmlkV2M5UFhSeWRXVW1KbU52Ym5OdmJHVXVaWEp5YjNJb0owVnljbTl5SUd4dllXUnBibWNnYVcxaFoyVWdhVzRnWm5WdVkzUnBiMjRnSW01aGRIVnlZV3hKYldGblpWTnBlbVVpTGljc1lpazdaQzVrWldKMVp5Z2labTl2WW05NExtNWhkSFZ5WVd4SmJXRm5aVk5wZW1VNlpXNWtJaWs3WVM1cGMwWjFibU4wYVc5dUtHTXBKaVpqS0dVcGZUdG1Mbk55WXoxaUxuTnlZMzE5TEdRdWIzQjBhVzl1Y3k1c2IyRmtSR1ZzWVhrcGZUdGtMbU55WldGMFpVMXZaR0ZzUFdaMWJtTjBhVzl1S0NsN1pDNWtaV0oxWnlnaVptOXZZbTk0TG0xdlpHRnNPbUpsWjJsdUlpazdkbUZ5SUdJOWUzMDdZaTVpZFhONVBXWmhiSE5sTzNaaGNpQmpQWHRwYldjNlpuVnVZM1JwYjI0b0tYdDJZWElnWVQxdVpYY2dTVzFoWjJVN1lTNXpjbU05WkM1dmNIUnBiMjV6TG1WeWNtOXlMbk55WXp0eVpYUjFjbTRnWVgwb0tTeDBhSFZ0WWpwN2FuRTZiblZzYkN4MFlYSm5aWFE2WkM1dmNIUnBiMjV6TG1WeWNtOXlMbk55WXl4MGFYUnNaVHBrTG05d2RHbHZibk11WlhKeWIzSXViV1Z6YzJGblpTeGxjbkp2Y2pwMGNuVmxmWDA3WWk1cWNUMW1kVzVqZEdsdmJpZ3BlMlF1WkdWaWRXY29JbVp2YjJKdmVDNXRiMlJoYkM1cWNUcGlaV2RwYmlJcE8zWmhjaUJqUFdFb0lpNW1iMjlpYjNndGJXOWtZV3dpSzJRdWFXUXBPMmxtS0dNdWJHVnVaM1JvUEQwd0tYdGtMbVJsWW5WbktDSm1iMjlpYjNndWJXOWtZV3d1YW5FNlkzSmxZWFJwYm1kZmJXOWtZV3dpS1R0alBXRW9KenhrYVhZZ1kyeGhjM005SW1admIySnZlQzF0YjJSaGJDQm1iMjlpYjNndGJXOWtZV3d0Snl0a0xtbGtLeWNpUGp3dlpHbDJQaWNwTzJNdVlYQndaVzVrS0NjOFpHbDJJR05zWVhOelBTSm1iMjlpYjNndGFXNXVaWEl0YzNCaFkyVnlJajQ4TDJScGRqNG5LVHRqTG1Gd2NHVnVaQ2duUEdScGRpQmpiR0Z6Y3owaVptOXZZbTk0TFd4dllXUmxjaUkrUEM5a2FYWStKeWs3ZG1GeUlHSTlZU2duUEdScGRpQmpiR0Z6Y3owaVptOXZZbTk0TFdsdWJtVnlJajQ4TDJScGRqNG5LVHRpTG1Gd2NHVnVaQ2duUEdsdFp5QmpiR0Z6Y3owaVptOXZZbTk0TFdsdFp5MWpkWEp5Wlc1MElpQmhiSFE5SWlJZ2MzSmpQU0lpSUM4K1BHbHRaeUJqYkdGemN6MGlabTl2WW05NExXbHRaeTF1WlhoMElpQmhiSFE5SWlJZ2MzSmpQU0lpSUM4K0p5azdZaTVoY0hCbGJtUW9KenhoSUdoeVpXWTlJaU5qYkc5elpTSWdZMnhoYzNNOUltWnZiMkp2ZUMxamJHOXpaU0krUEM5aFBpY3BPMlF1YjNCMGFXOXVjeTVoWm1acGJHbGhkR1V1Wlc1aFlteGxaRDA5ZEhKMVpTWW1ZaTVoY0hCbGJtUW9KenhrYVhZZ1kyeGhjM005SW1admIySnZlQzFqY21Wa2FYUWlQanhoSUhSaGNtZGxkRDBpWDJKc1lXNXJJaUJvY21WbVBTSW5LMlF1YjNCMGFXOXVjeTVoWm1acGJHbGhkR1V1ZFhKc0t5Y2lQanhsYlQ0bksyUXViM0IwYVc5dWN5NWhabVpwYkdsaGRHVXVjSEpsWm1sNEt5SWdQQzlsYlQ0OGMzQmhiajVHYjI5Q2IzZzhMM053WVc0K1BDOWhQand2WkdsMlBpSXBPM1poY2lCbFBXRW9KenhrYVhZZ1kyeGhjM005SW1admIySnZlQzFqWVhCMGFXOXVJajQ4TDJScGRqNG5LVHRsTG1Gd2NHVnVaQ2duUEhOd1lXNGdZMnhoYzNNOUltWnZiMkp2ZUMxMGFYUnNaU0krUEM5emNHRnVQaWNwTzJJdVlYQndaVzVrS0dVcE8yUXViM0IwYVc5dWN5NXphRzkzUTI5MWJuUTlQWFJ5ZFdVbUptUXVhR0Z6VFhWc2RHbHdiR1ZKYldGblpYTW1KbUl1WVhCd1pXNWtLQ2M4YzNCaGJpQmpiR0Z6Y3owaVptOXZZbTk0TFdOdmRXNTBJaUF2UGljcE8yTXVZWEJ3Wlc1a0tHSXBPMkl1Wm1sdVpDZ2lMbVp2YjJKdmVDMXBiV2N0WTNWeWNtVnVkQ0lwTG1OemN5Z2liM0JoWTJsMGVTSXNNQ2s3YVdZb1pDNXZjSFJwYjI1ekxuTm9iM2RDZFhSMGIyNXpQVDEwY25WbEppWmtMbWhoYzAxMWJIUnBjR3hsU1cxaFoyVnpLWHRqTG5CeVpYQmxibVFvSnp4aElHaHlaV1k5SWlOd2NtVjJJaUJqYkdGemN6MGlabTl2WW05NExYQnlaWFlpUGp3dllUNG5LVHRqTG1Gd2NHVnVaQ2duUEdFZ2FISmxaajBpSTI1bGVIUWlJR05zWVhOelBTSm1iMjlpYjNndGJtVjRkQ0krUEM5aFBpY3BPMkl1Y0hKbGNHVnVaQ2duUEdFZ2FISmxaajBpSTNCeVpYWWlJR05zWVhOelBTSm1iMjlpYjNndGNISmxkaUkrUEM5aFBpY3BPMkl1WVhCd1pXNWtLQ2M4WVNCb2NtVm1QU0lqYm1WNGRDSWdZMnhoYzNNOUltWnZiMkp2ZUMxdVpYaDBJajQ4TDJFK0p5bDlZU2dpWW05a2VTSXBMbkJ5WlhCbGJtUW9ZeWw5WkM1a1pXSjFaeWdpWm05dlltOTRMbTF2WkdGc0xtcHhPbVZ1WkNJcE8zSmxkSFZ5YmlCamZTZ3BPMkl1Y21WemFYcGxQV1oxYm1OMGFXOXVLR1lzWlN4bktYdGtMbVJsWW5WbktDSm1iMjlpYjNndWJXOWtZV3d1Y21WemFYcGxPbUpsWjJsdUlpazdhV1lvSVdJdWFuRXVhR0Z6UTJ4aGMzTW9JbVp2YjJKdmVDMXphRzkzSWlrcGNtVjBkWEp1TzNaaGNpQmpQV0l1YW5FdVptbHVaQ2dpTG1admIySnZlQzFwYm01bGNpSXBMR2c5WWk1cWNTNW1hVzVrS0NJdVptOXZZbTk0TFdsdWJtVnlMWE53WVdObGNpSXBPMmxtS0dZOVBUQjhmR1U5UFRBcGUyTnZibk52YkdVdVpYSnliM0lvSWtWcGRHaGxjaUIwYUdVZ2MzVndjR3hwWldRZ2JtRjBkWEpoYkZkcFpIUm9JRzl5SUc1aGRIVnlZV3hJWldsbmFIUWdhWE1nTUM0aUxIdHVZWFIxY21Gc1YybGtkR2c2Wml4dVlYUjFjbUZzU0dWcFoyaDBPbVY5S1R0eVpYUjFjbTU5ZG1GeUlHODlaQzV2Y0hScGIyNXpMbk5vYjNkQ2RYUjBiMjV6UFQxMGNuVmxKaVprTG1oaGMwMTFiSFJwY0d4bFNXMWhaMlZ6TEcwOWNHRnljMlZKYm5Rb2FDNWpjM01vSW5CaFpHUnBibWN0ZEc5d0lpa3BMSFE5Y0dGeWMyVkpiblFvYUM1amMzTW9JbkJoWkdScGJtY3RZbTkwZEc5dElpa3BMSGc5Y0dGeWMyVkpiblFvYUM1amMzTW9JbkJoWkdScGJtY3RiR1ZtZENJcEtTeDVQWEJoY25ObFNXNTBLR2d1WTNOektDSndZV1JrYVc1bkxYSnBaMmgwSWlrcExITTljR0Z5YzJWSmJuUW9ZeTVqYzNNb0ltSnZjbVJsY2kxMGIzQXRkMmxrZEdnaUtTa3NjRDF3WVhKelpVbHVkQ2hqTG1OemN5Z2lZbTl5WkdWeUxXSnZkSFJ2YlMxM2FXUjBhQ0lwS1N4eFBYQmhjbk5sU1c1MEtHTXVZM056S0NKaWIzSmtaWEl0YkdWbWRDMTNhV1IwYUNJcEtTeHlQWEJoY25ObFNXNTBLR011WTNOektDSmliM0prWlhJdGNtbG5hSFF0ZDJsa2RHZ2lLU2tzYVQxd1lYSnpaVWx1ZENoakxtTnpjeWdpY0dGa1pHbHVaeTFzWldaMElpa3BMSG85Y0dGeWMyVkpiblFvWXk1amMzTW9JbWhsYVdkb2RDSXBLU3hCUFhCaGNuTmxTVzUwS0dNdVkzTnpLQ0ozYVdSMGFDSXBLU3gzUFNodlAyMHJkRHB0S2pJcEsya3FNaXR6SzNBc2RqMTRLM2tyYVNveUszRXJjaXh1UFdJdWFuRXVhR1ZwWjJoMEtDa3RkeXgxUFdJdWFuRXVkMmxrZEdnb0tTMTJMR285ZFM5bU8ybG1LR1VxYWo1dUtXbzliaTlsTzNaaGNpQnJQV1VzYkQxbU8ybG1LR1F1YjNCMGFXOXVjeTVtYVhSVWIxTmpjbVZsYmowOWRISjFaWHg4WlQ1dWZIeG1QblVwZTJzOVRXRjBhQzVtYkc5dmNpaGxLbW9wTzJ3OVRXRjBhQzVtYkc5dmNpaG1LbW9wZldsbUtHc2hQWHA4Zkd3aFBVRXBZeTVoYm1sdFlYUmxLSHRvWldsbmFIUTZheXgzYVdSMGFEcHNMQ0p0WVhKbmFXNHRkRzl3SWpvdEtHc3ZNaXRwS3loekszQXBMeklyS0c4L2RDMXRPakFwS1N3aWJXRnlaMmx1TFd4bFpuUWlPaTBvYkM4eUsya3JLSEVyY2lrdk1pbDlMRE13TUN4bWRXNWpkR2x2YmlncGUyUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1dGIyUmhiQzV5WlhOcGVtVTZaVzVrSWlrN1lTNXBjMFoxYm1OMGFXOXVLR2NwSmlabktDbDlLVHRsYkhObGUyUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1dGIyUmhiQzV5WlhOcGVtVTZaVzVrSWlrN1lTNXBjMFoxYm1OMGFXOXVLR2NwSmlabktDbDlmVHRpTG5SeVlXNXphWFJwYjI0OVpuVnVZM1JwYjI0b1l5eGxMR0lwZTJRdVpHVmlkV2NvSW1admIySnZlQzV0YjJSaGJDNTBjbUZ1YzJsMGFXOXVPbUpsWjJsdUlpazdZeTVoYm1sdFlYUmxLSHR2Y0dGamFYUjVPakI5TERJd01DazdaUzVoYm1sdFlYUmxLSHR2Y0dGamFYUjVPakY5TERVd01DeG1kVzVqZEdsdmJpZ3BlMlV1WVdSa0tHTXBMblJ2WjJkc1pVTnNZWE56S0NKbWIyOWliM2d0YVcxbkxXNWxlSFFnWm05dlltOTRMV2x0WnkxamRYSnlaVzUwSWlrN1pDNWtaV0oxWnlnaVptOXZZbTk0TG0xdlpHRnNMblJ5WVc1emFYUnBiMjQ2Wlc1a0lpazdZUzVwYzBaMWJtTjBhVzl1S0dJcEppWmlLQ2w5S1gwN1lpNW5aWFJEZFhKeVpXNTBWR2gxYldJOVpuVnVZM1JwYjI0b0tYdGtMbVJsWW5WbktDSm1iMjlpYjNndWJXOWtZV3d1WjJWMFEzVnljbVZ1ZEZSb2RXMWlPbUpsWjJsdUlpazdkbUZ5SUdFOWUycHhPbTUxYkd3c2RHRnlaMlYwT201MWJHd3NkR2wwYkdVNklpSXNaWEp5YjNJNlptRnNjMlY5TzNSeWVYdGhMbWx1WkdWNFBXUXVhVzVrWlhobGN5NWpkWEp5Wlc1ME8yRXVhbkU5WkM1MGFIVnRZbk5iWkM1cGJtUmxlR1Z6TG1OMWNuSmxiblJkTzJFdWRHRnlaMlYwUFdRdWRHaDFiV0p6VzJRdWFXNWtaWGhsY3k1amRYSnlaVzUwWFM1aGRIUnlLQ0pvY21WbUlpbDlZMkYwWTJnb1lpbDdaQzVrWldKMVp5Z2lSWEp5YjNJZ2IyTmpkWEp5WldRZ1kzSmxZWFJwYm1jZ2RHaDFiV0lnYjJKcVpXTjBMaUlzWWlrN1lUMWpMblJvZFcxaWZXUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1dGIyUmhiQzVuWlhSRGRYSnlaVzUwVkdoMWJXSTZaVzVrSWlrN2NtVjBkWEp1SUdGOU8ySXVZblZwYkdSVWFIVnRZa05oY0hScGIyNDlablZ1WTNScGIyNG9aaXhsS1h0cFppaGtMbTl3ZEdsdmJuTXVZMkZ3ZEdsdmJuTXVaVzVoWW14bFpDbDdkbUZ5SUdNc1lqdHBaaWhrTG05d2RHbHZibk11WTJGd2RHbHZibk11ZEdsMGJHVlRiM1Z5WTJVaFBTSnViMjVsSWlsN1l6MWhMblJ5YVcwb1pTNW1hVzVrS0NKcGJXYzZabWx5YzNRaUtTNWhkSFJ5S0NKMGFYUnNaU0lwS1R0cFppaGtMbTl3ZEdsdmJuTXVZMkZ3ZEdsdmJuTXVkR2wwYkdWVGIzVnlZMlU5UFNKaGJtTm9iM0lpS1dNOVlTNTBjbWx0S0dVdVlYUjBjaWdpZEdsMGJHVWlLU2w5YVdZb1pDNXZjSFJwYjI1ekxtTmhjSFJwYjI1ekxtUmxjMk5UYjNWeVkyVWhQU0p1YjI1bElpbDdZajFoTG5SeWFXMG9aUzVoZEhSeUtDSjBhWFJzWlNJcEtYeDhZUzUwY21sdEtHVXVabWx1WkNnaWFXMW5PbVpwY25OMElpa3VZWFIwY2lnaWRHbDBiR1VpS1NrN2FXWW9aQzV2Y0hScGIyNXpMbU5oY0hScGIyNXpMbVJsYzJOVGIzVnlZMlU5UFNKcGJXRm5aU0lwWWoxaExuUnlhVzBvWlM1bWFXNWtLQ0pwYldjNlptbHljM1FpS1M1aGRIUnlLQ0owYVhSc1pTSXBLVHRsYkhObElHbG1LR1F1YjNCMGFXOXVjeTVqWVhCMGFXOXVjeTVrWlhOalUyOTFjbU5sUFQwaVlXNWphRzl5SWlsaVBXRXVkSEpwYlNobExtRjBkSElvSW5ScGRHeGxJaWtwZlhaaGNpQm5QV1F1Y21GcGMyVW9JbVp2YjJKdmVGOXBiV0ZuWlY5amRYTjBiMjFmWTJGd2RHbHZiaUlzZTNSb2RXMWlPbVVzZEdsMGJHVTZZeXhrWlhOak9tSXNhR0Z1Wkd4bFpEcG1ZV3h6WlgwcE8ybG1LR2N1YUdGdVpHeGxaQ2w3WXoxbkxuUnBkR3hsTzJJOVp5NWtaWE5qZldsbUtHTW1KbU05UFdJcFlqMGlJanRwWmloaUppWmlJVDBpSWlsaVBTYzhaR2wySUdOc1lYTnpQU0ptYjI5aWIzZ3RZMkZ3ZEdsdmJpMWtaWE5qSWo0bksySXJJand2WkdsMlBpSTdaaTUwYVhSc1pUMWpPMll1WkdWell6MWlPMll1WTJGd2RHbHZiajBvWXo4blBHUnBkaUJqYkdGemN6MGlabTl2WW05NExXTmhjSFJwYjI0dGRHbDBiR1VpUGljcll5c2lQQzlrYVhZK0lqb2lJaWtyWW4xbGJITmxJR1l1WTJGd2RHbHZiajBpSW4wN1lpNXphRzkzUFdaMWJtTjBhVzl1S0dncGUyUXVaR1ZpZFdjb0ltWnZiMkp2ZUM1dGIyUmhiQzV6YUc5M09tSmxaMmx1SWlrN2FXWW9ZaTVpZFhONVBUMTBjblZsS1hKbGRIVnlianRpTG1KMWMzazlkSEoxWlR0aUxtcHhMbU5zYjNObGMzUW9JbWgwYld3aUtTNXNaVzVuZEdnOVBUQW1KbUVvSW1KdlpIa2lLUzV3Y21Wd1pXNWtLR0l1YW5FcE8yUXViM0IwYVc5dWN5NW9hV1JsVTJOeWIyeHNZbUZ5Y3owOWRISjFaU1ltWVNnaWFIUnRiQ3dnWW05a2VTSXBMbU56Y3lnaWIzWmxjbVpzYjNjaUxDSm9hV1JrWlc0aUtUdGtMbWx1WkdWNFpYTXVjMlYwS0dncE8zWmhjaUJtUFdJdVoyVjBRM1Z5Y21WdWRGUm9kVzFpS0NrN1pDNXZjSFJwYjI1ekxtTmhjSFJwYjI1ekxtVnVZV0pzWldRbUppRm1MbU5oY0hScGIyNG1KbUl1WW5WcGJHUlVhSFZ0WWtOaGNIUnBiMjRvWml4a0xuUm9kVzFpYzF0a0xtbHVaR1Y0WlhNdVkzVnljbVZ1ZEYwcE8yUXVjbUZwYzJVb0ltWnZiMkp2ZUY5cGJXRm5aVjlpWldadmNtVmZiRzloWkNJc2UzUm9kVzFpT21aOUtUdGtMblJwYldWeWN5NXNiMkZrYVc1bkxuTjBZWEowS0daMWJtTjBhVzl1S0NsN1lpNXFjUzVtYVc1a0tDSXVabTl2WW05NExXeHZZV1JsY2lJcExuTm9iM2NvS1gwc1pDNXZjSFJwYjI1ekxteHZZV1JsY2xScGJXVnZkWFFwTzNaaGNpQm5QV1F1YjNCMGFXOXVjeTV3Y21Wc2IyRmtTVzFoWjJWek8ybG1LR0l1YW5FdWFHRnpRMnhoYzNNb0ltWnZiMkp2ZUMxemFHOTNJaWs5UFdaaGJITmxLWHRpTG1weExtWnBibVFvSWk1bWIyOWliM2d0YVc1dVpYSXNJQzVtYjI5aWIzZ3RjSEpsZGl3Z0xtWnZiMkp2ZUMxdVpYaDBMQ0F1Wm05dlltOTRMWEJzWVhrc0lDNW1iMjlpYjNndGNHRjFjMlVpS1M1amMzTW9JbVJwYzNCc1lYa2lMQ0p1YjI1bElpazdZaTVxY1M1bWFXNWtLQ0l1Wm05dlltOTRMV2x1Ym1WeUlpa3VZM056S0h0M2FXUjBhRG9pTWpRd2NIZ2lMR2hsYVdkb2REb2lNalF3Y0hnaUxDSnRZWEpuYVc0dGRHOXdJam9pTFRFeU1IQjRJaXdpYldGeVoybHVMV3hsWm5RaU9pSXRNVEl3Y0hnaWZTazdZaTVxY1M1aFpHUkRiR0Z6Y3lnaVptOXZZbTk0TFhOb2IzY2lLVHRrTG5KaGFYTmxLQ0ptYjI5aWIzaGZiVzlrWVd4ZmMyaHZkeUlwZldWc2MyVWdaQzV2Y0hScGIyNXpMbU5oY0hScGIyNXpMbVZ1WVdKc1pXUW1KbUl1YUdsa1pVTmhjSFJwYjI0b0tUdGlMbXB4TG1acGJtUW9JaTVtYjI5aWIzZ3RZMjkxYm5RaUtTNTBaWGgwS0dRdWIzQjBhVzl1Y3k1amIzVnVkRTFsYzNOaFoyVXVjbVZ3YkdGalpTZ2lKV2x1WkdWNElpeGtMbWx1WkdWNFpYTXVZM1Z5Y21WdWRDc3hLUzV5WlhCc1lXTmxLQ0lsZEc5MFlXd2lMR1F1ZEdoMWJXSnpMbXhsYm1kMGFDa3BPMlF1YjNCMGFXOXVjeTVrWldWd2JHbHVhMmx1Wnk1bGJtRmliR1ZrUFQxMGNuVmxKaVppTG5ObGRFaGhjMmdvWmlrN2RtRnlJR1U5Ym1WM0lFbHRZV2RsTzJZdWFXMW5QV1U3WlM1dmJteHZZV1E5Wm5WdVkzUnBiMjRvS1h0bExtOXViRzloWkQxbExtOXVaWEp5YjNJOWJuVnNiRHRrTG5KaGFYTmxLQ0ptYjI5aWIzaGZhVzFoWjJWZmIyNXNiMkZrSWl4N2RHaDFiV0k2Wm4wcE8ySXVhbkV1Wm1sdVpDZ2lMbVp2YjJKdmVDMXBibTVsY2lJcExuSmxiVzkyWlVOc1lYTnpLQ0ptYjI5aWIzZ3RhVzFuTFdWeWNtOXlJaWs3WWk1cGJXRm5aVTl1Ykc5aFpDaG1MR1VzWkM1dmNIUnBiMjV6TG1OaGNIUnBiMjV6TG1WdVlXSnNaV1FzWnlrN1pUMXVkV3hzZlR0bExtOXVaWEp5YjNJOVpuVnVZM1JwYjI0b0tYdGxMbTl1Ykc5aFpEMWxMbTl1WlhKeWIzSTliblZzYkR0a0xuSmhhWE5sS0NKbWIyOWliM2hmYVcxaFoyVmZiMjVsY25KdmNpSXNlM1JvZFcxaU9tWjlLVHRpTG1weExtWnBibVFvSWk1bWIyOWliM2d0YVc1dVpYSWlLUzVoWkdSRGJHRnpjeWdpWm05dlltOTRMV2x0WnkxbGNuSnZjaUlwTzJJdWFXMWhaMlZQYm14dllXUW9ZeTUwYUhWdFlpeGpMbWx0Wnl4MGNuVmxLVHRsUFc1MWJHeDlPMlF1Ylc5a1lXd3VhbkV1Wm1sdVpDZ2lMbVp2YjJKdmVDMWpZWEIwYVc5dUlpa3VhR2xrWlNncE8yUXVjbUZwYzJVb0ltWnZiMkp2ZUY5cGJXRm5aVjlpWldadmNtVmZiRzloWkNJc2UzUm9kVzFpT21aOUtUdGxMbk55WXoxbUxuUmhjbWRsZER0a0xtUmxZblZuS0NKbWIyOWliM2d1Ylc5a1lXd3VjMmh2ZHpwbGJtUWlLWDA3WWk1cGJXRm5aVTl1Ykc5aFpEMW1kVzVqZEdsdmJpaGhMR2dzWml4bktYdGtMbVJsWW5WbktDSm1iMjlpYjNndWJXOWtZV3d1YVcxaFoyVlBibXh2WVdRNlltVm5hVzRpS1R0a0xuUnBiV1Z5Y3k1c2IyRmthVzVuTG5OMGIzQW9LVHRpTG1weExtWnBibVFvSWk1bWIyOWliM2d0Ykc5aFpHVnlJaWt1YUdsa1pTZ3BPM1poY2lCbFBXSXVhbkV1Wm1sdVpDZ2lMbVp2YjJKdmVDMXBiV2N0WTNWeWNtVnVkQ0lwTEdNOVlpNXFjUzVtYVc1a0tDSXVabTl2WW05NExXbHRaeTF1WlhoMElpazdaUzVoWkdRb1l5a3VZM056S0NKdmNHRmphWFI1SWl3aU1DSXBPMk11WVhSMGNpZ2ljM0pqSWl4aExuUmhjbWRsZENrN1pDNXVZWFIxY21Gc1NXMWhaMlZUYVhwbEtHZ3NablZ1WTNScGIyNG9hQ2w3WWk1cWNTNW1hVzVrS0NJdVptOXZZbTk0TFdsdWJtVnlMQ0F1Wm05dlltOTRMWEJ5WlhZc0lDNW1iMjlpYjNndGJtVjRkQ3dnTG1admIySnZlQzF3YkdGNUxDQXVabTl2WW05NExYQmhkWE5sSWlrdVkzTnpLQ0prYVhOd2JHRjVJaXdpSWlrN1lpNXlaWE5wZW1Vb2FDNXVZWFIxY21Gc1YybGtkR2dzYUM1dVlYUjFjbUZzU0dWcFoyaDBMR1oxYm1OMGFXOXVLQ2w3WWk1MGNtRnVjMmwwYVc5dUtHVXNZeXhtZFc1amRHbHZiaWdwZTJsbUtHWTlQWFJ5ZFdVcGUySXVhbkV1Wm1sdVpDZ2lMbVp2YjJKdmVDMWpZWEIwYVc5dUlDNW1iMjlpYjNndGRHbDBiR1VpS1M1b2RHMXNLR0V1WTJGd2RHbHZiaWs3WWk1emFHOTNRMkZ3ZEdsdmJpZ3BmV1F1Y21GcGMyVW9JbVp2YjJKdmVGOXBiV0ZuWlY5aFpuUmxjbDlzYjJGa0lpeDdkR2gxYldJNllYMHBPMkl1WW5WemVUMW1ZV3h6WlR0blBUMTBjblZsSmlaa0xuQnlaV3h2WVdRb0tUdGtMbVJsWW5WbktDSm1iMjlpYjNndWJXOWtZV3d1YVcxaFoyVlBibXh2WVdRNlpXNWtJaWw5S1gwcGZTbDlPMkl1YzJodmQwTmhjSFJwYjI0OVpuVnVZM1JwYjI0b0tYdDJZWElnWXoxaUxtcHhMbVpwYm1Rb0lpNW1iMjlpYjNndFkyRndkR2x2YmlJcExHVTlZaTVuWlhSRFlYQjBhVzl1U0dWcFoyaDBLQ2s3YVdZb1pDNXZjSFJwYjI1ekxtTmhjSFJwYjI1ekxtRnVhVzFoZEdsdmJqMDlJbk5zYVdSbElpbGpMbWhsYVdkb2RDZ3dLUzV6YUc5M0tDa3VZVzVwYldGMFpTaDdhR1ZwWjJoME9tVjlMR1oxYm1OMGFXOXVLQ2w3WVNoMGFHbHpLUzV5WlcxdmRtVkRiR0Z6Y3lnaVptOXZZbTk0TFdOaGNIUnBiMjR0YUdsa1pHVnVJaWw5S1R0bGJITmxJR2xtS0dRdWIzQjBhVzl1Y3k1allYQjBhVzl1Y3k1aGJtbHRZWFJwYjI0OVBTSm1ZV1JsSWlsakxtaGxhV2RvZENobEtTNW1ZV1JsU1c0b1puVnVZM1JwYjI0b0tYdGhLSFJvYVhNcExuSmxiVzkyWlVOc1lYTnpLQ0ptYjI5aWIzZ3RZMkZ3ZEdsdmJpMW9hV1JrWlc0aUtYMHBPMlZzYzJVZ1pDNXZjSFJwYjI1ekxtTmhjSFJwYjI1ekxtRnVhVzFoZEdsdmJqMDlJbk5vYjNjaUppWmpMbWhsYVdkb2RDaGxLUzV6YUc5M0tDa3VjbVZ0YjNabFEyeGhjM01vSW1admIySnZlQzFqWVhCMGFXOXVMV2hwWkdSbGJpSXBmVHRpTG1kbGRFTmhjSFJwYjI1SVpXbG5hSFE5Wm5WdVkzUnBiMjRvS1h0MllYSWdaRDFpTG1weExtWnBibVFvSWk1bWIyOWliM2d0WTJGd2RHbHZiaUF1Wm05dlltOTRMWFJwZEd4bElpa3NhVDFpTG1weExtWnBibVFvSWk1bWIyOWliM2d0WTJGd2RHbHZiaTFrWlhOaklpa3NaejFiWFN4bFBXUXVjR0Z5Wlc1MGN5Z3BMbUZ1WkZObGJHWW9LUzVtYVd4MFpYSW9JanBvYVdSa1pXNGlLU3hxUFNKMmFYTnBZbWxzYVhSNU9pQm9hV1JrWlc0Z0lXbHRjRzl5ZEdGdWREc2daR2x6Y0d4aGVUb2dZbXh2WTJzZ0lXbHRjRzl5ZEdGdWREc2dJanRsTG1WaFkyZ29ablZ1WTNScGIyNG9LWHQyWVhJZ1lqMWhLSFJvYVhNcE8yY3VjSFZ6YUNoaUxtRjBkSElvSW5OMGVXeGxJaWtwTzJJdVlYUjBjaWdpYzNSNWJHVWlMR29wZlNrN2RtRnlJR005WkM1dmRYUmxja2hsYVdkb2RDZ3BMR2c5YVM1dmRYUmxja2hsYVdkb2RDZ3BPMlV1WldGamFDaG1kVzVqZEdsdmJpaGtLWHQyWVhJZ1lqMWhLSFJvYVhNcExHTTlaMXRrWFR0cFppaGpQVDA5WmlsaUxuSmxiVzkyWlVGMGRISW9Jbk4wZVd4bElpazdaV3h6WlNCaUxtRjBkSElvSW5OMGVXeGxJaXhqS1gwcE8ybG1LR00rWWk1cWNTNW1hVzVrS0NJdVptOXZZbTk0TFdsdWJtVnlJaWt1YUdWcFoyaDBLQ2txTGpncFl6MWpMV2c3Y21WMGRYSnVJR045TzJJdWNtVm1jbVZ6YUVOaGNIUnBiMjQ5Wm5WdVkzUnBiMjRvS1h0MllYSWdZVDFpTG1weExtWnBibVFvSWk1bWIyOWliM2d0WTJGd2RHbHZianAyYVhOcFlteGxJaWtzWXoxaUxtcHhMbVpwYm1Rb0lpNW1iMjlpYjNndFkyRndkR2x2YmlBdVptOXZZbTk0TFhScGRHeGxJaWs3WVM1c1pXNW5kR2crTUNZbVlTNW9aV2xuYUhRb1lpNW5aWFJEWVhCMGFXOXVTR1ZwWjJoMEtDa3BmVHRpTG1ocFpHVkRZWEIwYVc5dVBXWjFibU4wYVc5dUtDbDdkbUZ5SUdNOVlpNXFjUzVtYVc1a0tDSXVabTl2WW05NExXTmhjSFJwYjI0aUtUdHBaaWhrTG05d2RHbHZibk11WTJGd2RHbHZibk11WVc1cGJXRjBhVzl1UFQwaWMyeHBaR1VpS1dNdVlXNXBiV0YwWlNoN2FHVnBaMmgwT2pCOUxHWjFibU4wYVc5dUtDbDdZU2gwYUdsektTNW9hV1JsS0NrdVlXUmtRMnhoYzNNb0ltWnZiMkp2ZUMxallYQjBhVzl1TFdocFpHUmxiaUlwZlNrN1pXeHpaU0JwWmloa0xtOXdkR2x2Ym5NdVkyRndkR2x2Ym5NdVlXNXBiV0YwYVc5dVBUMGlabUZrWlNJcFl5NW1ZV1JsVDNWMEtHWjFibU4wYVc5dUtDbDdZU2gwYUdsektTNW9hV1JsS0NrdVlXUmtRMnhoYzNNb0ltWnZiMkp2ZUMxallYQjBhVzl1TFdocFpHUmxiaUlwZlNrN1pXeHpaU0JrTG05d2RHbHZibk11WTJGd2RHbHZibk11WVc1cGJXRjBhVzl1UFQwaWMyaHZkeUltSm1NdWFHbGtaU2dwTG1Ga1pFTnNZWE56S0NKbWIyOWliM2d0WTJGd2RHbHZiaTFvYVdSa1pXNGlLWDA3WWk1amJHOXpaVDFtZFc1amRHbHZiaWdwZTJJdWFuRXVjbVZ0YjNabFEyeGhjM01vSW1admIySnZlQzF6YUc5M0lpa3VaR1YwWVdOb0tDazdZaTVpZFhONVBXWmhiSE5sTzJRdWIzQjBhVzl1Y3k1b2FXUmxVMk55YjJ4c1ltRnljejA5ZEhKMVpTWW1ZU2dpYUhSdGJDd2dZbTlrZVNJcExtTnpjeWdpYjNabGNtWnNiM2NpTENKaGRYUnZJaWs3WkM1eVlXbHpaU2dpWm05dlltOTRYMjF2WkdGc1gyTnNiM05sSWlrN1pDNXZjSFJwYjI1ekxtUmxaWEJzYVc1cmFXNW5MbVZ1WVdKc1pXUTlQWFJ5ZFdVbUptSXVZMnhsWVhKSVlYTm9LQ2w5TzJJdWNISmxkajFtZFc1amRHbHZiaWdwZTJJdWMyaHZkeWhrTG1sdVpHVjRaWE11Y0hKbGRpazdaQzV5WVdselpTZ2labTl2WW05NFgyMXZaR0ZzWDNCeVpYWWlLWDA3WWk1dVpYaDBQV1oxYm1OMGFXOXVLQ2w3WWk1emFHOTNLR1F1YVc1a1pYaGxjeTV1WlhoMEtUdGtMbkpoYVhObEtDSm1iMjlpYjNoZmJXOWtZV3hmYm1WNGRDSXBmVHRpTG1sdFlXZGxRMnhwWTJ0bFpEMW1kVzVqZEdsdmJpZ3BlMlF1Y21GcGMyVW9JbVp2YjJKdmVGOXRiMlJoYkY5cGJXRm5aVU5zYVdOclpXUWlMSHQwYUhWdFlqcGtMbTF2WkdGc0xtZGxkRU4xY25KbGJuUlVhSFZ0WWlncGZTazdhV1lvWkM1dmNIUnBiMjV6TG1OaGNIUnBiMjV6TG1WdVlXSnNaV1E5UFhSeWRXVXBhV1lvWWk1cWNTNW1hVzVrS0NJdVptOXZZbTk0TFdOaGNIUnBiMjQ2ZG1semFXSnNaU0lwTG14bGJtZDBhRDR3S1dJdWFHbGtaVU5oY0hScGIyNG9LVHRsYkhObElHSXVjMmh2ZDBOaGNIUnBiMjRvS1gwN1lpNXpaWFJJWVhOb1BXWjFibU4wYVc5dUtHRXBlM1poY2lCalBXUXViM0IwYVc5dWN5NWtaV1Z3YkdsdWEybHVaeTV3Y21WbWFYZ3NaVDFoTG5SaGNtZGxkQzV0WVhSamFDZ3ZMaXBjTHlndUtpa2tMeWs3YVdZb1pTbDdkbUZ5SUdJOVpWc3hYU3htUFdNcklpMGlLMlF1YVdRcklpOGlLMkV1YVc1a1pYZ3JJaThpSzJJN2FXWW9iRzlqWVhScGIyNHVhR0Z6YUM1eVpYQnNZV05sS0NJaklpd2lJaWtoUFdZcGJHOWpZWFJwYjI0dWFHRnphRDFqS3lJdElpdGtMbWxrS3lJdklpdGhMbWx1WkdWNEt5SXZJaXRpZlgwN1lpNWpiR1ZoY2toaGMyZzlablZ1WTNScGIyNG9LWHRwWmloc2IyTmhkR2x2Ymk1b1lYTm9MbWx1WkdWNFQyWW9JaU1pSzJRdWIzQjBhVzl1Y3k1a1pXVndiR2x1YTJsdVp5NXdjbVZtYVhncElUMDlMVEVwYkc5allYUnBiMjR1YUdGemFEMGlJeThpZlR0aUxtZGxkRWhoYzJnOVpuVnVZM1JwYjI0b0tYdHBaaWhzYjJOaGRHbHZiaTVvWVhOb0xtbHVaR1Y0VDJZb0lpTWlLMlF1YjNCMGFXOXVjeTVrWldWd2JHbHVhMmx1Wnk1d2NtVm1hWGdwSVQwOUxURXBlM1poY2lCaFBXeHZZMkYwYVc5dUxtaGhjMmc3YVdZb1lTNXpkV0p6ZEhJb0xURXBQVDBpTHlJcFlUMWhMbk4xWW5OMGNpZ3dMR0V1YkdWdVozUm9MVEVwTzNaaGNpQmpQV0V1YldGMFkyZ29MMXd2S0Z0ZVhDOWRLeWxjTDF0ZVhDOWRLeVF2S1ZzeFhTeGlQV0V1YzNWaWMzUnlhVzVuS0RBc1lTNXBibVJsZUU5bUtDSXZJaWtwTzJJOVlpNXlaWEJzWVdObEtDSWpJaXRrTG05d2RHbHZibk11WkdWbGNHeHBibXRwYm1jdWNISmxabWw0S3lJdElpd2lJaWs3Y21WMGRYSnVlMmx0WVdkbFNXNWtaWGc2WXl4bWIyOWliM2hKWkRwaWZYMXlaWFIxY200Z1ptRnNjMlY5TzJRdVpHVmlkV2NvSW1admIySnZlQzV0YjJSaGJEcGxibVFpS1R0a0xtMXZaR0ZzUFdJN1pDNXlZV2x6WlNnaVptOXZZbTk0WDIxdlpHRnNYMk55WldGMFpXUWlLWDA3WkM1cGJtbDBLQ2s3WkM1a1pXSjFaeWdpWm05dlltOTRPbVZ1WkNJcE8zSmxkSFZ5YmlCa2ZYMHBLR3BSZFdWeWVTeDNhVzVrYjNjcE95aG1kVzVqZEdsdmJpaGhLWHRoTG1adUxtWnZiMkp2ZUhOM2FYQmxQV1oxYm1OMGFXOXVLR01wZTNaaGNpQmlQWHR0YVc1ZmJXOTJaVG8yTUN4emQybHdaVXhsWm5RNlpuVnVZM1JwYjI0b0tYdDlMSE4zYVhCbFVtbG5hSFE2Wm5WdVkzUnBiMjRvS1h0OWZUdGpKaVpoTG1WNGRHVnVaQ2hpTEdNcE8zUm9hWE11WldGamFDaG1kVzVqZEdsdmJpZ3BlM1poY2lCakxHRTlabUZzYzJVN1puVnVZM1JwYjI0Z1ppZ3BlM1JvYVhNdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpZ2lkRzkxWTJodGIzWmxJaXhrS1R0alBXNTFiR3c3WVQxbVlXeHpaWDFtZFc1amRHbHZiaUJrS0dVcGUyVXVjSEpsZG1WdWRFUmxabUYxYkhRb0tUdHBaaWhoS1h0MllYSWdaejFsTG5SdmRXTm9aWE5iTUYwdWNHRm5aVmdzWkQxakxXYzdhV1lvVFdGMGFDNWhZbk1vWkNrK1BXSXViV2x1WDIxdmRtVXBlMllvS1R0cFppaGtQakFwWWk1emQybHdaVXhsWm5Rb0tUdGxiSE5sSUdJdWMzZHBjR1ZTYVdkb2RDZ3BmWDE5Wm5WdVkzUnBiMjRnWlNoaUtYdHBaaWhpTG5SdmRXTm9aWE11YkdWdVozUm9QVDB4S1h0alBXSXVkRzkxWTJobGMxc3dYUzV3WVdkbFdEdGhQWFJ5ZFdVN2RHaHBjeTVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLQ0owYjNWamFHMXZkbVVpTEdRc1ptRnNjMlVwZlgxMGFHbHpMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9JblJ2ZFdOb2MzUmhjblFpTEdVc1ptRnNjMlVwZlNrN2NtVjBkWEp1SUhSb2FYTjlmU2tvYWxGMVpYSjVLVHNvWm5WdVkzUnBiMjRvWVN4aUxHUXBlMmxtS0dJdVptOXZZbTk0UFQxa2ZIeGlMbVp2YjJKdmVEMDliblZzYkNsMGFISnZkeUJ1WlhjZ1JYSnliM0lvSWxCc1pXRnpaU0JqYUdWamF5QmhibVFnYldGclpTQnpkWEpsSUdadmIySnZlQzVxY3lCcGN5QnBibU5zZFdSbFpDQnBiaUIwYUdVZ2NHRm5aU0JoYm1RZ2FYTWdiRzloWkdWa0lIQnlhVzl5SUhSdklIUm9hWE1nYzJOeWFYQjBMaUlwTzNaaGNpQmxQWHR6Ykdsa1pYTm9iM2M2ZTJWdVlXSnNaV1E2ZEhKMVpTeGhkWFJ2YzNSaGNuUTZabUZzYzJVc2RHbHRaVzkxZERvMlpUTjlmVHRtZFc1amRHbHZiaUJqS0NsN2RtRnlJR0k5ZEdocGN6dGlMbTVoYldVOUlrWnZiMkp2ZUNCVGJHbGtaWE5vYjNjaU8ySXVjblZ1Ym1sdVp6MW1ZV3h6WlR0aUxuTjBiM0J3WldROU1EdGlMbkpsYldGcGJtbHVaejB3TzJJdVlYVjBiM04wWVhKMFBXWmhiSE5sTzJJdWFXNXBkRDFtZFc1amRHbHZiaWhqS1h0aUxtRjFkRzl6ZEdGeWREMWpMbTl3ZEdsdmJuTXVjMnhwWkdWemFHOTNMbUYxZEc5emRHRnlkRHRoS0dNdVkyOXVkR0ZwYm1WeUtTNWlhVzVrS0h0bWIyOWliM2hmYlc5a1lXeGZZM0psWVhSbFpEcG1kVzVqZEdsdmJpaGtLWHRwWmloa0xtWmlMbTl3ZEdsdmJuTXVjMnhwWkdWemFHOTNMbVZ1WVdKc1pXUTlQWFJ5ZFdVcGUzWmhjaUJsUFdRdVptSXViVzlrWVd3dWFuRXVabWx1WkNnaUxtWnZiMkp2ZUMxcGJtNWxjaUlwTG1Ga1pFTnNZWE56S0NKbWIyOWliM2d0YzJ4cFpHVnphRzkzSWlrN1pTNWhjSEJsYm1Rb0p6eGthWFlnWTJ4aGMzTTlJbVp2YjJKdmVDMXdjbTluY21WemN5SStQQzlrYVhZK0p5azdhV1lvWkM1bVlpNXZjSFJwYjI1ekxuTm9iM2RDZFhSMGIyNXpQVDEwY25WbEppWmpMbWhoYzAxMWJIUnBjR3hsU1cxaFoyVnpLWHRsTG1Gd2NHVnVaQ2duUEdFZ2FISmxaajBpSTNCc1lYbHdZWFZ6WlNJZ1kyeGhjM005SW1admIySnZlQzF3YkdGNUlqNDhMMkUrSnlrN1pDNW1ZaTV0YjJSaGJDNXFjUzVoY0hCbGJtUW9KenhoSUdoeVpXWTlJaU53YkdGNWNHRjFjMlVpSUdOc1lYTnpQU0ptYjI5aWIzZ3RjR3hoZVNJK1BDOWhQaWNwZldRdVptSXViVzlrWVd3dWFuRXVkVzVrWld4bFoyRjBaU2dpTG1admIySnZlQzF6Ykdsa1pYTm9iM2NpS1M1a1pXeGxaMkYwWlNnaUxtWnZiMkp2ZUMxd2JHRjVJaXdpWTJ4cFkyc3VabTl2WW05NExYTnNhV1JsYzJodmR5SXNablZ1WTNScGIyNG9ZeWw3WXk1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzJsbUtHUXVabUl1Ylc5a1lXd3VZblZ6ZVQwOVptRnNjMlVwZTJFb0lpNW1iMjlpYjNndGNHeGhlU0lwTG5SdloyZHNaVU5zWVhOektDSm1iMjlpYjNndGNHeGhlU0JtYjI5aWIzZ3RjR0YxYzJVaUtUdGlMbk4wWVhKMEtHUXVabUlwZlhKbGRIVnliaUJtWVd4elpYMHBMbVJsYkdWbllYUmxLQ0l1Wm05dlltOTRMWEJoZFhObElpd2lZMnhwWTJzdVptOXZZbTk0TFhOc2FXUmxjMmh2ZHlJc1puVnVZM1JwYjI0b1l5bDdZeTV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMmxtS0dRdVptSXViVzlrWVd3dVluVnplVDA5Wm1Gc2MyVXBlMkVvSWk1bWIyOWliM2d0Y0dGMWMyVWlLUzUwYjJkbmJHVkRiR0Z6Y3lnaVptOXZZbTk0TFhCc1lYa2dabTl2WW05NExYQmhkWE5sSWlrN1lpNXdZWFZ6WlNoa0xtWmlLWDF5WlhSMWNtNGdabUZzYzJWOUtYMTlMR1p2YjJKdmVGOXRiMlJoYkY5amJHOXpaVHBtZFc1amRHbHZiaWhoS1h0aUxuTjBiM0FvWVM1bVlpeG1ZV3h6WlNsOUxDSm1iMjlpYjNoZmJXOWtZV3hmYm1WNGRDQm1iMjlpYjNoZmJXOWtZV3hmY0hKbGRpSTZablZ1WTNScGIyNG9ZU2w3WWk1emRHOXdLR0V1Wm1Jc1lpNWhkWFJ2YzNSaGNuUTlQWFJ5ZFdWOGZHSXVjblZ1Ym1sdVp6MDlkSEoxWlNsOUxHWnZiMkp2ZUY5cGJXRm5aVjloWm5SbGNsOXNiMkZrT21aMWJtTjBhVzl1S0dFcGUySXVZWFYwYjNOMFlYSjBQVDEwY25WbEppWmlMbk4wWVhKMEtHRXVabUlwZlN4bWIyOWliM2hmYTJWNVpHOTNianBtZFc1amRHbHZiaWhoS1h0cFppaGhMbXRsZVQwOU16SXBlMkV1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHRwWmloaUxuSjFibTVwYm1jOVBYUnlkV1VwWWk1d1lYVnpaU2hoTG1aaUtUdGxiSE5sSUdJdWMzUmhjblFvWVM1bVlpazdjbVYwZFhKdUlHWmhiSE5sZlgxOUtYMDdZaTV6ZEdGeWREMW1kVzVqZEdsdmJpaGhLWHRwWmloaUxuSmxiV0ZwYm1sdVp6MDlNQ2xpTG5KbGJXRnBibWx1WnoxaExtOXdkR2x2Ym5NdWMyeHBaR1Z6YUc5M0xuUnBiV1Z2ZFhRN1lpNWhkWFJ2YzNSaGNuUTlabUZzYzJVN1lpNXlkVzV1YVc1blBYUnlkV1U3WVM1dGIyUmhiQzVxY1M1bWFXNWtLQ0l1Wm05dlltOTRMV05oY0hScGIyNDZhR2xrWkdWdUlpa3VjMmh2ZHlncE8yRXViVzlrWVd3dWFuRXVabWx1WkNnaUxtWnZiMkp2ZUMxd2NtOW5jbVZ6Y3lJcExtTnpjeWdpZDJsa2RHZ2lMR0l1YzNSdmNIQmxaQ3NpSlNJcExuTm9iM2NvS1M1aGJtbHRZWFJsS0h0M2FXUjBhRG9pTVRBd0pTSjlMR0l1Y21WdFlXbHVhVzVuTENKc2FXNWxZWElpTEdaMWJtTjBhVzl1S0NsN1lpNXpkRzl3Y0dWa1BUQTdZaTV5WlcxaGFXNXBibWM5WVM1dmNIUnBiMjV6TG5Oc2FXUmxjMmh2ZHk1MGFXMWxiM1YwTzJJdVlYVjBiM04wWVhKMFBYUnlkV1U3WVM1dGIyUmhiQzV1WlhoMEtDbDlLVHRoTG5KaGFYTmxLQ0ptYjI5aWIzaGZjMnhwWkdWemFHOTNYM04wWVhKMElpbDlPMkl1YzNSdmNEMW1kVzVqZEdsdmJpaGhMR01wZTJJdWMzUnZjSEJsWkQwd08yRXViVzlrWVd3dWFuRXVabWx1WkNnaUxtWnZiMkp2ZUMxd2NtOW5jbVZ6Y3lJcExuTjBiM0FvS1M1b2FXUmxLQ2t1WTNOektDSjNhV1IwYUNJc1lpNXpkRzl3Y0dWa0t5SWxJaWs3WWk1eWRXNXVhVzVuUFdaaGJITmxPMkl1WVhWMGIzTjBZWEowUFdNN1lpNXlaVzFoYVc1cGJtYzlZUzV2Y0hScGIyNXpMbk5zYVdSbGMyaHZkeTUwYVcxbGIzVjBPMkV1Y21GcGMyVW9JbVp2YjJKdmVGOXpiR2xrWlhOb2IzZGZjM1J2Y0NJcGZUdGlMbkJoZFhObFBXWjFibU4wYVc5dUtHRXBlM1poY2lCa1BXRXViVzlrWVd3dWFuRXVabWx1WkNnaUxtWnZiMkp2ZUMxd2NtOW5jbVZ6Y3lJcExuTjBiM0FvS1M1amMzTW9JbmRwWkhSb0lpa3NZejFoTG0xdlpHRnNMbXB4TG1acGJtUW9JaTVtYjI5aWIzZ3RhVzV1WlhJaUtTNWpjM01vSW5kcFpIUm9JaWs3WWk1eWRXNXVhVzVuUFdaaGJITmxPMkl1YzNSdmNIQmxaRDF3WVhKelpVbHVkQ2hrS1M5d1lYSnpaVWx1ZENoaktTb3hNREE3WWk1eVpXMWhhVzVwYm1jOVlTNXZjSFJwYjI1ekxuTnNhV1JsYzJodmR5NTBhVzFsYjNWMExXRXViM0IwYVc5dWN5NXpiR2xrWlhOb2IzY3VkR2x0Wlc5MWRDb29ZaTV6ZEc5d2NHVmtMekV3TUNrN1lTNXlZV2x6WlNnaVptOXZZbTk0WDNOc2FXUmxjMmh2ZDE5d1lYVnpaU0lwZlR0eVpYUjFjbTRnWW4xaUxtWnZiMkp2ZUM1d2JIVm5hVzV6TG5KbFoybHpkR1Z5S0c1bGR5QmpMR1VwZlNrb2FsRjFaWEo1TEhkcGJtUnZkeWs3S0daMWJtTjBhVzl1S0dFc1lpeGpLWHRwWmloaUxtWnZiMkp2ZUQwOVkzeDhZaTVtYjI5aWIzZzlQVzUxYkd3cGRHaHliM2NnYm1WM0lFVnljbTl5S0NKUWJHVmhjMlVnWTJobFkyc2dZVzVrSUcxaGEyVWdjM1Z5WlNCbWIyOWliM2d1YW5NZ2FYTWdhVzVqYkhWa1pXUWdhVzRnZEdobElIQmhaMlVnWVc1a0lHbHpJR3h2WVdSbFpDQndjbWx2Y2lCMGJ5QjBhR2x6SUhOamNtbHdkQzRpS1R0MllYSWdaRDE3YzI5amFXRnNPbnRsYm1GaWJHVmtPbVpoYkhObExIQnZjMmwwYVc5dU9pSjBiM0FpTEd4cGJtdHpPbHRkZlgwN1puVnVZM1JwYjI0Z1pTZ3BlM1poY2lCaVBYUm9hWE03WWk1dVlXMWxQU0pHYjI5aWIzZ2dVMjlqYVdGc0lqdGlMbWx1YVhROVpuVnVZM1JwYjI0b1lpbDdZU2hpTG1OdmJuUmhhVzVsY2lrdVltbHVaQ2g3Wm05dlltOTRYMjF2WkdGc1gyTnlaV0YwWldRNlpuVnVZM1JwYjI0b1lpbDdhV1lvWWk1bVlpNXZjSFJwYjI1ekxuTnZZMmxoYkM1bGJtRmliR1ZrUFQxMGNuVmxLWHQyWVhJZ1pqMWlMbVppTG0xdlpHRnNMbXB4TG1acGJtUW9JaTVtYjI5aWIzZ3RhVzV1WlhJaUtTeGpQV1l1Wm1sdVpDZ2lMbVp2YjJKdmVDMXpiMk5wWVd3aUtUdHBaaWhqTG14bGJtZDBhRDA5TUNsN1l6MWhLQ2M4WkdsMklHTnNZWE56UFNKbWIyOWliM2d0YzI5amFXRnNJajQ4TDJScGRqNG5LUzVvYVdSbEtDa3VZV1JrUTJ4aGMzTW9JbVp2YjJKdmVDMGlLMkl1Wm1JdWIzQjBhVzl1Y3k1emIyTnBZV3d1Y0c5emFYUnBiMjRwTzJadmNpaDJZWElnWlQwd08yVThZaTVtWWk1dmNIUnBiMjV6TG5OdlkybGhiQzVzYVc1cmN5NXNaVzVuZEdnN1pTc3JLWHQyWVhJZ1pEMWlMbVppTG05d2RHbHZibk11YzI5amFXRnNMbXhwYm10elcyVmRPMk11WVhCd1pXNWtLQ2M4WVNCb2NtVm1QU0luSzJRdWRYSnNLeWNpSUhKbGJEMGlibTltYjJ4c2IzY2lJSFJoY21kbGREMGlYMkpzWVc1cklpQmpiR0Z6Y3owaVptOXZZbTk0TFNjclpDNWpjM01ySnlJZ2RHbDBiR1U5SWljclpDNTBhWFJzWlNzbklqNDhMMkUrSnlsOVppNWhjSEJsYm1Rb1l5bDlmWDBzSW1admIySnZlRjlwYldGblpWOWlaV1p2Y21WZmJHOWhaQ0JtYjI5aWIzaGZiVzlrWVd4ZmJtVjRkQ0JtYjI5aWIzaGZiVzlrWVd4ZmNISmxkaUJtYjI5aWIzaGZhVzFoWjJWZmIyNWxjbkp2Y2lJNlpuVnVZM1JwYjI0b1lTbDdZUzVtWWk1dGIyUmhiQzVxY1M1bWFXNWtLQ0l1Wm05dlltOTRMWE52WTJsaGJDSXBMbWhwWkdVb0tYMHNabTl2WW05NFgybHRZV2RsWDJGbWRHVnlYMnh2WVdRNlpuVnVZM1JwYjI0b1l5bDdhV1lvWXk1MGFIVnRZaTVsY25KdmNqMDlabUZzYzJVbUppRmhLR011ZEdoMWJXSXVhbkVwTG1oaGMwTnNZWE56S0NKdWJ5MXpiMk5wWVd3aUtTbDdabTl5S0haaGNpQnBQV0VvSWk1bWIyOWliM2d0YzI5amFXRnNJaWtzWmowd08yWThZeTVtWWk1dmNIUnBiMjV6TG5OdlkybGhiQzVzYVc1cmN5NXNaVzVuZEdnN1ppc3JLWHQyWVhJZ2FEMWpMbVppTG05d2RHbHZibk11YzI5amFXRnNMbXhwYm10elcyWmRMR2M5YVM1bWFXNWtLQ0l1Wm05dlltOTRMU0lyYUM1amMzTXBPMmxtS0djdWJHVnVaM1JvS1h0MllYSWdZajFvTG5WeWJEdHBaaWhpTG1sdVpHVjRUMllvSW50MWNtd3RibVY5SWlraFBTMHhLV0k5WWk1eVpYQnNZV05sS0M5N2RYSnNMVzVsZlM4c2JHOWpZWFJwYjI0dWFISmxaaWs3YVdZb1lpNXBibVJsZUU5bUtDSjdkWEpzZlNJcElUMHRNU2xpUFdJdWNtVndiR0ZqWlNndmUzVnliSDB2TEdWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoc2IyTmhkR2x2Ymk1b2NtVm1LU2s3YVdZb1lpNXBibVJsZUU5bUtDSjdkR2wwYkdWOUlpa2hQUzB4S1h0MllYSWdaRDFrYjJOMWJXVnVkQzUwYVhSc1pTc29ZeTUwYUhWdFlpNTBhWFJzWlQ4aUlDMGdJaXRqTG5Sb2RXMWlMblJwZEd4bE9pSWlLVHRrUFdRdWNtVndiR0ZqWlNndktEd29XMTQrWFNzcFBpa3ZhV2NzSWlJcE8ySTlZaTV5WlhCc1lXTmxLQzk3ZEdsMGJHVjlMeXhsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvWkNrcGZXbG1LR0l1YVc1a1pYaFBaaWdpZTJsdFozMGlLU0U5TFRFcGUzWmhjaUJxUFdNdWRHaDFiV0l1YVcxbkxuTnlZenRpUFdJdWNtVndiR0ZqWlNndmUybHRaMzB2TEdWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENocUtTbDlhV1lvWWk1cGJtUmxlRTltS0NKN1pHVnpZMzBpS1NFOUxURXBlM1poY2lCbFBXTXVkR2gxYldJdVpHVnpZM3g4SWlJN1pUMWxMbkpsY0d4aFkyVW9MeWc4S0Z0ZVBsMHJLVDRwTDJsbkxDSWlLVHRpUFdJdWNtVndiR0ZqWlNndmUyUmxjMk45THl4bGJtTnZaR1ZWVWtsRGIyMXdiMjVsYm5Rb1pTa3BmV2N1WVhSMGNpZ2lhSEpsWmlJc1lpbDlmV011Wm1JdWJXOWtZV3d1YW5FdVptbHVaQ2dpTG1admIySnZlQzF6YjJOcFlXd2lLUzVtWVdSbFNXNG9LWDE5TEdadmIySnZlRjl0YjJSaGJGOXBiV0ZuWlVOc2FXTnJaV1E2Wm5WdVkzUnBiMjRvWXlsN2FXWW9ZeTUwYUhWdFlpNWxjbkp2Y2owOVptRnNjMlVtSmlGaEtHTXVkR2gxYldJdWFuRXBMbWhoYzBOc1lYTnpLQ0p1YnkxemIyTnBZV3dpS1NscFppaGpMbVppTG05d2RHbHZibk11YzI5amFXRnNMbVZ1WVdKc1pXUTlQWFJ5ZFdVcGUzWmhjaUJpUFdFb0lpNW1iMjlpYjNndGMyOWphV0ZzSWlrN2FXWW9ZaTVwY3lnaU9uWnBjMmxpYkdVaUtTbGlMbVpoWkdWUGRYUW9LVHRsYkhObElHSXVabUZrWlVsdUtDbDlmWDBwZlgxaUxtWnZiMkp2ZUM1d2JIVm5hVzV6TG5KbFoybHpkR1Z5S0c1bGR5QmxMR1FwZlNrb2FsRjFaWEo1TEhkcGJtUnZkeWs3S0daMWJtTjBhVzl1S0dFc1lpeGpLWHRwWmloaUxtWnZiMkp2ZUQwOVkzeDhZaTVtYjI5aWIzZzlQVzUxYkd3cGRHaHliM2NnYm1WM0lFVnljbTl5S0NKUWJHVmhjMlVnWTJobFkyc2dZVzVrSUcxaGEyVWdjM1Z5WlNCbWIyOWliM2d1YW5NZ2FYTWdhVzVqYkhWa1pXUWdhVzRnZEdobElIQmhaMlVnWVc1a0lHbHpJR3h2WVdSbFpDQndjbWx2Y2lCMGJ5QjBhR2x6SUhOamNtbHdkQzRpS1R0MllYSWdaVDE3ZDI5eVpIQnlaWE56T250bGJtRmliR1ZrT21aaGJITmxMR2RoYkd4bGNtbGxjenBtWVd4elpTeGpZWEIwYVc5dWN6cG1ZV3h6WlgxOU8yWjFibU4wYVc5dUlHUW9LWHQyWVhJZ1lqMTBhR2x6TzJJdWJtRnRaVDBpUm05dlltOTRJRmR2Y21Sd2NtVnpjeUk3WWk1cGJtbDBQV1oxYm1OMGFXOXVLR0lwZTJFb1lpNWpiMjUwWVdsdVpYSXBMbUpwYm1Rb2UyWnZiMkp2ZUY5cGJXRm5aVjlqZFhOMGIyMWZZMkZ3ZEdsdmJqcG1kVzVqZEdsdmJpaGlLWHRwWmloaUxtWmlMbTl3ZEdsdmJuTXVkMjl5WkhCeVpYTnpMbVZ1WVdKc1pXUTlQWFJ5ZFdVcGFXWW9ZaTVtWWk1dmNIUnBiMjV6TG5kdmNtUndjbVZ6Y3k1bllXeHNaWEpwWlhNOVBYUnlkV1VtSm1Fb1lpNW1ZaTVqYjI1MFlXbHVaWElwTG1oaGMwTnNZWE56S0NKbllXeHNaWEo1SWlrcGUySXVkR2wwYkdVOVlpNTBhSFZ0WWk1aGRIUnlLQ0owYVhSc1pTSXBPMkl1WkdWell6MWlMblJvZFcxaUxuQmhjbVZ1ZEhNb0lpNW5ZV3hzWlhKNUxXbDBaVzA2Wm1seWMzUWlLUzVtYVc1a0tDSXVkM0F0WTJGd2RHbHZiaTEwWlhoME9tWnBjbk4wSWlrdWFIUnRiQ2dwZkh3aUlqdGlMbWhoYm1Sc1pXUTlkSEoxWlgxbGJITmxJR2xtS0dJdVptSXViM0IwYVc5dWN5NTNiM0prY0hKbGMzTXVZMkZ3ZEdsdmJuTTlQWFJ5ZFdVbUptRW9ZaTVtWWk1amIyNTBZV2x1WlhJcExtaGhjME5zWVhOektDSjNjQzFqWVhCMGFXOXVJaWtwZTJJdWRHbDBiR1U5WWk1MGFIVnRZaTVtYVc1a0tDSnBiV2NpS1M1aGRIUnlLQ0owYVhSc1pTSXBPMkl1WkdWell6MWhLR0l1Wm1JdVkyOXVkR0ZwYm1WeUtTNW1hVzVrS0NJdWQzQXRZMkZ3ZEdsdmJpMTBaWGgwT21acGNuTjBJaWt1YUhSdGJDZ3BmSHdpSWp0aUxtaGhibVJzWldROWRISjFaWDE5ZlNsOWZXSXVabTl2WW05NExuQnNkV2RwYm5NdWNtVm5hWE4wWlhJb2JtVjNJR1FzWlNsOUtTaHFVWFZsY25rc2QybHVaRzkzS1E9PV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2ljb24tZGVmYXVsdC5wbmc8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCd0FBQUFjQ0FZQUFBQnlEZCtVQUFBQzdtbERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR0ZWTTlyRTBFVS9qWnVxZEFpQ0ZwckRySjRrQ0pKV2F0b1JkUTIvUkZpYXd6Ykg3WkZrR1F6U2RadU51dnVKcldsaU9UaTBTcmVSZTJoQi8rQUhucndaQzlLaFZwRktONnJLR0toRnkzeHpXNU10cVhxd001Kzg5NDM3MzF2ZHQ4QURYTFNOUFdBQk9RTngxS2lFV2xzZkVKcS9JZ0FqcUlKUVRRbFZkdnNUaVFHUVlOeitYdm4ySG9QZ1Z0V3czdjdkN0ozclpyU3Rwb0hoUDFBNEVlYTJTcXc3eGR4Q2xrU0FvZzgzNkVweDNRSTMrUFk4dXlQT1U1NWVNRzFEeXM5eEZraWZFQTFMYzUvVGJoVHpTWFRRSU5JT0pUMWNWSStuTmVMbE5jZEIybHVac2JJRUwxUGtLYTd6TzZyWXFHY1R2WU9rTDJkOUg1T3M5NCt3aUhDQ3htdFAwYTRqWjcxak5VLzRtSGhwT2JFaGowY0dEWDArR0FWdHhxcCtEWENGRjhRVFNlaVZISFpMZzN4bUs3OVZ2SktnbkNRT01wa1lZQnpXa2hQMTB4dStMcUhCWDBtMXhPdjRuZFdVZUY1anhObjN0VGQ3MFhhQXE4d0RoME1HZ3lhRFVoUUVFVUVZWml3VUVDR1BCb3hOTEp5UHlPckJodVRlekoxSkdxN2RHSkVzVUY3TnR3OXQxR2szVHorS0NKeGxFTzFDSkw4UWY0cXI4bFA1WG41eTF5dzJGYjNsSzJibXJyeTREdkY1Wm01R2g3WDA4ampjMDFlZkpYVWRwTlhSNWFzZVhxOG11d2FQK3hYbHpIbWdqV1B4SE93Ky9FdFg1WE1seW1NRk1YalZmUHFTNFIxV2pFMzM1OXNmenM5NGk3UExyWFdjNjJKaXpkV201ZG4vV3BJKys2cXZKUG1WZmxQWHZYeC9HZk54R1BpS1RFbWRvcm5JWW1YeFM3eGt0aExxd3ZpWUczSENKMlZoaW5TYlpINkpOVmdZSnE4OVM5ZFAxdDR2VVovRFBWUmxCbk0wbFNKOTMvQ0ttUTBuYmtPYi9xUDI4ZjhGK1QzaXVlZktBSXZiT0RJbWJwdFUzSHZFS0ZscFc1enJnSVh2OUY5OExadWE2TitPUHdFV0R5ckZxMVNOWjhndkFFY2RvZDZIdWdwbU5PV2xzMDVVb2NzbjVPNjZjcGlVc3hRMjBOU1V0Y2wxMlZMRnJPWlZXTHBkdGlaMHgxdUhLRTVRdmZFcDBwbGsvcXY4Ukd3L2JCUytmbXNVdGwrVGhyV2daZjZiOEM4L1VYQWVJdUpBQUFDTzBsRVFWUklEYjFXUVVzQ1FSUjJjd21DQlZ0UGdhZTZGRUg5QVBFaXVmNkM4Qmg2aW83ZGdxQkRFSFRyR0oyVWp0SXZjQTB2NGcvb0VIV3BrOUJKRXhhQ1VPeDd3ODR5YXpQT2FPYkNNRy9ldlBkOU0yKy9tVjFyUEI0bmRFODJtMTF6SE1kRExMVmR5N0pTbEFON0FQc1p6UStDd085ME9sODZMR3NhWVQ2ZjM3QnQrd0lnWmJRMURSaVIxWWJENFdXcjFmcFF4U29KUGM4N1I5SVptcU5LVnZnRCtLOTkzNytTemY4aURNdDNqNTBmeWhKTWZTanpBOHA4TkZubUdHR3BWRnJ0OS91UEFNMlpBbXZpMnE3ckh0VHI5VzhldDhJTjZudTkzaDI2UlpFUlpDN0VKSnM5RVdHeFdDeWpET1hRciswZ0RwZWFMcEF3Q1p2SHNaSkNqUTdVK0FKbmhrOU02NGtJU3Z6a01SQ1k3bXgxa2JPRG5JRHRFR1FucG1TY1JPeWhTRXNjUyt4TXlKSGdKU1ZDNHdmSi9jbGdBMUxHWVJVS2hUMGtQMDBDbUl4bEpKcnk3dE1PNTFhbERGeTJDR0h4T1JzSGZCdEtpbndZMTBhajBha29pbWpTMENCUzJXS0lpM2JJTG1LTzlWY3lqcU00TWlrdUdoNzM3ejBSRGtTV1pESjVnM081THZybXNXVktKaTRiNys5VkJLU2JBY0ZsdkFQUnJiUmxJcEc5UHdJZ0x0cGhXNG1tbVppRkxJUnFzNnNOSzNxRFkxT0RINXVlZyt3ZE9WdGNOTGN4Tk0xQXBrQlZHUVVveHNFSUFVQ0RyakE1azJsQVJwYzNJNHcrd1BRSndjR3Ntakx4WFNyVUdJT0JXQ3FOUnFOR3pvaVFCcmhYcTZSU3NoZjEwTTNWYkRZckhJKy9RelpPcDlQSE1PWldMUWNWK25hSUdibGlPeVR2VW4raW9tWEFnQkNXODVzb2tpNzFSMWdrWHVTdi9nK0hVeU1YWXRSdjRnQUFBQUJKUlU1RXJrSmdnZz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vaWNvbi1pbnZlcnQucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFOanI5UndVcWdBQUFDQmpTRkpOQUFDSER3QUFqQTBBQVBtVEFBQ0U1UUFBZTRJQUFPdDFBQUEvdEFBQUlsaDFhMTZjQUFBQzBXbERRMUJKUTBNZ1VISnZabWxzWlFBQU9NdU5sTTlMRkdFWXg3K3pqUmdvUVdCbWU0aWhRMGlvVEJabFJPV3V2OWkwYlZsL2xCTEU3T3k3dTVPenM5UE03Sm9pRVY0Nlp0RTlLZzhlK2dNOGVPaVVsOExBTEFMcGJsRkVncGVTN1hsbnh0MFI3Y2NMTS9ONW54L2Y1M25mNFgyQkdsa3hUVDBrQVhuRHNaSjlVZW42NkpoVSt4RWhIRUVkd3FoVFZOdU1KQklEb01GanNXdHN2b2ZBdnl1dGUvdi9PdXJTdHBvSGhQMUE2RWVhMlNxdzd4ZlpDMWxxQkJDNVhzT0VZenJFOXpoYm52MHg1NVRIODY1OUtObEZ2RWg4UURVdEh2K2F1RVBOS1dtZ1JpUnV5UVppVWdITzYwWFY3K2NnUGZYTUdCNms3M0hxNlM2emUzd1dadEpLZHo5eEcvSG5OT3Z1NFpyRTh4bXROMGJjVE05YXh1b2Q5bGc0b1RteElZOURJNFllSC9DNXlVakZyL3Fhb3VsRWs5djZkbW13Wjl0K1M3bWNJQTRUSjhjTC9UeW1rWEk3cDNKRDF6d1c5S2xjVjl6bmQxWXh5ZXNlbzVnNVUzZi9GL1VXZW9WUjZHRFFZTkRiZ0lRaytoQkZLMHhZS0NCREhvMGlOTEl5TjhZaXRqRytaNlNPUklBbDhxOVR6cnFiY3h0Rnl1WlpJNGpHTWROU1VaRGtEL0pYZVZWK0tzL0pYMmJEeGVhcVo4YTZxYW5MRDc2VExxKzhyZXQ3L1o0OGZaWHFSc2lySTB2V2ZHVk5kcURUUUhjWll6WmNWZUkxMlAzNFptQ1ZMRkNwRlNsWGFkeXRWSEo5TnIwamdXcC8yajJLWFpwZWJLcldXaFVYYnF6VUwwM3YyS3ZDcmxXeHlxcDJ6cXR4d1h3bUhoVlBpakd4UXp3SFNid2tkb29YeFc2YW5SY0hLaG5EcEtKaHdsV3lvVkNXZ1VueW1qdittUmNMNzZ5NW82R1BHY3pTVkltZi80UlZ5R2c2Q3h6UmY3ai9jL0I3eGFPeEl2RENCZzZmcnRvMmt1NGRJalF1VjIzT0ZlRENON29QM2xadHpYUWVEajBCRnM2b1JhdmtTd3ZDRzRwbWR4dys2U3FZazVhV3pUbFN1eXlmbFNKMEpURXBacWh0TFpLaTY1THJzaVdMMmN3cXNYUWI3TXlwZGsrbG5uYWw1bE81dkVIbnIvWVJzUFd3WFA3NXJGemVlazQ5ckFFdjlkL0F2UDFGR05VWmlnQUFBQWx3U0ZsekFBQU93d0FBRHNNQngyK29aQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJSFl6TGpVdU5ENk56SFlBQUFFdVNVUkJWRWhMeFpaQkRvSXdFRVZabVpDd1lNa2x1SXBuY09zQldIRUpFaE8zSE1BenVITHJHVng1QXhPMytMK1pHcWdGcGtqR0pqOEJPbjllMnRKMmtrVFJ1cTVMb1MxMGdNN1FWY1JuZm1OZnFrZzFIWUlrQlhTRW50QmNZd3hqaTBWZ0dHdm9NVWNKOU5OVHE2RXlmYWNGSU4vQ0hOUFRqSUFOZEZrQjVsSXcxMlowdE9oc1Y0UzVWRzBRaU41ZEpDeEhQS1ZwdXdFVWpneTZhNXdTay9jVEtIek1uWDA4ZUtrVXBuN0lBTWhFQ24vVkI5NFVoa0ZJYUYxbWN0emVIZ1NWc1RBWHZ3QmFFcmhmQ3FRdkVyb25zUEdBM0JwZmE2UStPU1J3WkJBTmdRUk0vaEN4TUZtcTBKWnAvd0kwbjFMem44WjJXOGdDMjIxOEFab2ZiYmFIdDR6UzducHlHenR3Q1B4eTZqbHYrQUtXVWRxV0dBSmxEV3BUUkhtM3VFMlo2RUh0Q21FUHZGcXAvd0prYS9Ma2N0V1FGQUFBQUFCSlJVNUVya0pnZ2c9PV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2ljb24tbWluaS1pbnZlcnQucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFBbHdTRmx6QUFBT3dBQUFEc0FCYXRhSkNRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMalV1TkQ2TnpIWUFBQUNXU1VSQlZFaExZMkFZQmFNaE1Cb0M1SWJBLy8vLzlZSDRQUkNmQjJKK2NzMGhTaCtTWlVBbUdORFdVcWpQWUpiUjNsS29qOUF0cEoxUFFYR0d6MUtpNG9WVVJZUFNVcHFrWHFDaCtkZ2lFNVo2U1EwNXZPcXhaQTlrdStmRE5GUEZwOFJhUmhVZjB0VXlrSXR4Wkh4UWNNS0RrU28rUTRxVCtWZ1NDbTBzdzJFcGJTMURzclFmNk5ONnFnYmZxR0dqSVREb1FnQUFBdlNDeUVnNFZFMEFBQUFBU1VWT1JLNUNZSUk9XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vaWNvbi1taW5pLnBuZzwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJ3QUFBQWNDQVlBQUFCeURkK1VBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQWx3U0ZsekFBQU93UUFBRHNFQnVKRnI3UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJSFl6TGpVdU5ENk56SFlBQUFEL1NVUkJWRWhMN1pOUmFvUXdFSVpYVUJBRVJjRUhRVVFVRVFTTm5xeEgyQ1BzRWZaSU9VcU9NUHRQNlVBb0JlTzJlU2hFK0VETU9OL2tqOTV1NFFvSmhBVGVUV0RmZDNVY2h3RWE5OFc3Zlp6ZVc5ZFZiZHRtQUgyaDhjeWZkRmtXQThnR1luL1NlWjQxSUJ1V2U1Tk8wMVNNNDZnQjJZalU2Vnl1RmczRFVQUjlyd0VKYmR0K3hzdzd2ZHJQcWI3cnVnSVN6U0lici9FMlRmTUJpQkZwbG1YeVFmM3RUdXU2VnNBQUVsaVdwaWtsU2ZLVW1MRDIrMSttTEV0VlZaVUJKUHdrY3pxYnM2STh6eFV3Z0FSdk1oNEd6UTBMYkw3SGVEYjBwWFUwZjdMQXhqNnpTODFjaTFrUXh6RXgzbVV5VkJSRkQzQjNIVExVaFFUK1p3SXZkZjF4ZmRoRWE1QUFBQUFBU1VWT1JLNUNZSUk9XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vbG9hZGVyLmdpZjwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbUjBsR09EbGhRQUJBQU1ZQUFBUUNCSVNDaEVSQ1JNVEN4Q1FpSktTaXBHUmlaT1RpNUJRU0ZKU1NsRlJTVk5UUzFEUXlOTFN5dEhSeWRQVHk5QXdLREl5S2pFeEtUTXpLekN3cUxLeXFyR3hxYk96cTdCd2FISnlhbkZ4YVhOemEzRHc2UEx5NnZIeDZmUHo2L0FRR0JJU0doRVJHUk1UR3hDUW1KS1NtcEdSbVpPVG01QlFXRkpTV2xGUldWTlRXMURRMk5MUzJ0SFIyZFBUMjlBd09ESXlPakV4T1RNek96Q3d1TEt5dXJHeHViT3p1N0J3ZUhKeWVuRnhlWE56ZTNEdytQTHkrdkh4K2ZQeisvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUlDZ0FBQUN3QUFBQUFRQUJBQUFBSC9vQkFnb09FaFlhSGlJbUtpNHlIRUNJSkVZMUFMaGtTTUpPWml6UUpCejgvRFpNcG54Y1pMSnFvZ3h3dEg1K2ZvWTJqcmo4REFnQ3BqU1FWTDdPdm9yMmZIVFM0aVNBdUQ4QytzY2svTHdHWXhJUTRIY3pLakxMTU14VFJnZ0tlMWFDLzREY0swVG8zNEQ4SE5wTUdHK2tmN0trR3ZOVURFaUNhSUFJTnJkVWVxRFRVU3paQndDQVFIQ3dvMHNFRHdpQVdQY0E1eUNRQVhiSUhEdklCd2VGaHhZOGRpa1o4akVCQUVBQURGNWg5VU5FSXh6ZGdLN1lCUVJEQjRrZEZBMXk5U0lGQkVBNlJ5VzRNVXdRaVlySU9DQVNwZVBrSlpDS2dyaTZZdUFXakFMTVYwQkM1WUZiQklZd0V5WndpZ2pxclJGSUEySHJGU0VRQ0diQU8vZzVSVUFQMm9vQ2lCRzU3emNBQkJJUlZZQjlPSGFxUWJFVlNGR1EvM1NESkNJV0hsTDEybElSZ3ROY0lqWVE0K0p2MVlCdU11Yk1xOE0yRUlzUG1Ud3VTNG9EY3ExeWhGc2ttQWdITDJRUWhDajdXRnZJUmdRRWhCYXcvMWNpbklka016RUJvblA0MHdhR0NYamNrRENKUW9sVVBRMVkvdEJnS2hNR0pYdklhSkJOQmlIWXZnekNZUGpBb3lJVE42NFgrTnZPZ2tVSHdHeVZwREhRRkN3Z0VwcC9BRjBFdkN2VmxuanF5RWVKT1dRNEJJY05wZGdFaG55c1A5QVNFQ01uSUFBUUdlZjFRd1NBeFVPaEFWb1dBWUFKckZXZ1VvazdEc0pDTUFZSWMrTWtCK2Znd0MzNkNXT0RLQmlRdzhwTXJBUWlDd0E2elpDRElCTURBL2hKREEwdzJPUkVJN3dBcENBRVdiWURDSkFqazFBd0hPZDZZbEFwTk5wbkRMWWx3TU1zTEpRRlJ3aWNQOUpnSkJ0OE1RTlYzcnJpV2lnVTdIS0JuaENUNGsyQW1LcmpDUTR4NkhyQkRDTkVBb0NpWlFOaW9Eb21UQUxEQUp6a01zaWlqM0pUWHd3Qi9hcUxCcGhGbUt1cW9wSlpxNnFtb3BxcnFxcXkyNnVwdUJlU2dBekVTRkZDQWJxeXV1RUtEcUdqNVlha21ERENDc0pKMDV3K01xQWpnaW5TVVRPRHNDQURob3F3ck4xd0p4RnduV0lqbHBEOHNrQThFUkxxaXdTSWVKSkNDdWVhT0N3SlRMZ2pDUUQwRFFKb0lCR3Qrd214eEZQWWtRZ3I4OWh2QUxUbkFkTXVBcnB4Z3JhTS85S0J0SWdqVSs0T1Ivbkg3eWErVi9yblNnU0F5SkdNUUNmc2xJQWdJaE0yb0FxYUZDT0RSSi9FS3N0VXNYRkt3M0E4RkloQ2NjSUprTU1zSEdzNFVNbk1zRlNMQkFKc05rQlFRSEhSNDhXeUFwU2toWUw3aFlOTVBGd3dGUVFpYndVZkloQmxBZzBPNG43d3dESlZ2RWVMaVc3Zm9PTXNCTWhFTmxOV0QvTFVBc3h1ZTdBcWlRQVFNakoyQ2FObkxyQURzVEFyY0FBaGdxeUV4VklEUFExeWo3SkFBTDIrQTNJWEpYTUFYQWhKLzhrRUlKSkpzQ0FUSDlISUFYeWhFMlF1eWhBQlFzU3M5WUxJMU1EdVlJTy9tR2xST3lqQWdKN01BcjRTOG04eVlRQkFnKzR4MEkrSkE0cTRjTUZRSXpNQnRDTUhBSkpBUEN1S3hIbEl5QTR6bUFUT2hIZ0xENzVRNkJJSUQxeDNlbElqZVhZZmdmUURNSEdCdEloUThQWXZDVTFhd21WaUhrQ1dNa0g2ZnlkNGlHcnc4bzUwTXlBRXk2R2NJa1R5Z0FsenFodWlBMFNsRk9BQWNGVWdiQWhSUUxFVDRRQVBhd2tFTy9QZUpDazRDWWNsNFFRNThnd29LcENCOHZYQmVLanpBUWN1Tm9HZU1FRUVQV3RoQnpVMUNBeWpzUlg4V2taWVFOaEFWREpCYk1uYW9pQjU2Ym4vY1FFQUtPRWpFUkJqUkZRVlkzNmg0Z0tRa2lhTVhiMHNWQ0dLbnd5dCtZZ01Hd0IycVFDQ0JCdFNqaVlpUXhRYzZvQUl4c2dvSEptaEFwUm9SZ2c1WVFHbXZLb1FORDdGSFRRUUNBQ0g1QkFnS0FBQUFMQUFBQUFCQUFFQUFBQWYrZ0VDQ2c0U0Zob2VHSWdrbUFqZ0FpSkNSa3BPSU1qK1hIeXNaRWpDVW5wUWtqNU0wbDZXWEZ4a3NuNnVGSEMwUEdKUXdENmExUFNLc255UVZINWNjbmd1MXdoMDB1WkVRTGplbU9wNE53c0l2QVozR2hUZ2R3akdlRWMvUE14VFVnenduenkyZUFpUEszS1kzQ3VBYXRNOHJxd2c4RVN2cW1CYkdCaS9xRDlPRVFHQ0FBQW1FZ0JhOTFIbGdwYUVmdHdtNEJJSGc0S0hEamc4OEpuRzRwczdHSng3d2hEMXdBRUlRQmc4YmF1R0F4SUtBUkFNWHVIMVFRUW5IdUhqRmdDQUlFYkxVQ1ZHSENqeElFUXNJamhIY2J1U0VCSUhqTUFTQ0ZCemdOaUxTZ0ZNbUhzRW93RzBCd0VNdXVGVWdDQ01Gdmd3RmIxNHFBUldFMldmK0NTQ1I2Rm1xQTBFVVRrMjlhR0dBQmtGRU9CS1dXaEFMQkZkaEgzNGRxaEFQS2dLa3RSNkVjRG1KZ3RwU0cxWkM2UEZzQk5CQkhBU1hldkFOUnQ1TEZWWWlJb0NpRUlvTXdoWkF4UkZUR00xQ0xaNDVFUFIydEFsQ1h3VjFlREVod2xJZ0N0S1ZxbEZTUmJmUE5FUmZta0JRZ2VnYkFnYVJLRkhEVU84UERaWXlxRjFxTnhCbndqSU9TdkFzTzRJZHBoNUVCR0pCMlFaREJtcTk4RkFTeVBoMUpBQkJ3UTBiZEpDQ0FZMEFCY0ZsbHd3Z1NBaTEvQVlFQk94ZDhnSlVoRURBUXdncGxWTENYektJVm9JZ0NIeFdpQWpQeUFBRUJqMVZzTjVvTnZSbkNBUXdsVkpCZnpHWThzRnhpUFJXeWc0RThkRERBYjA4b0pvSnBheis4STBrR0VEMlF3QWtUbFVLV3BMTUlFeGNnd0NBQWdlS0VaRE9Da1ZOZ3NCVlAzeWdDbjNyWUlnSUJ0TDlrQjBrSlZ6eVFJQ2ZZQ0RsQUZxUjkwTTdrUEFnVW5DRVVPQ1FlYXVvOEVHQnFzRldTZzZSSUZuTEJKRUVjTWtCZjYyaTVXY29EaFpKanFkTVVJRUdrVUNXRFRpRW9PRFFEeGRDWW9BRkloQlFLU1FJd1BNbXFZTkVNQUNSUHpCQXEzWXJOQkFCb0xRS3hFTnJ1eFpyN0xISWZnS0JxOGtDQVlJR01iU2cySzRZdkhEQkJDVzRJQ090QkNURUl5SVFVQ0NCaW9pQWNCbWR1K2Izd3dYYkZzSkNBQlhNVUZzRFZwa0NLaUVBbU9nSlp6KzRDQWxqdFdDSkNJUTJDZ0pEQmozc1lFQXVtZjRnQVNRQTNGTUxNNUQrQ0xBT3NibjljRUtZbENBZzhRTHRFdEt0TU5NZUFvR1VsN2dnQ0FNT0RRQ3N5WEZlOGpBUUJCRFFyZ1hDM1BEcUlkdjRoS0VQcGZUQU1TSXdBUHdEbFJBRWM4SUlKYnpKcnlrZFRFTENxVDlnQ1lMUkJ5Z1E4aUFpU1B5RHk0SjRVTXN2RkxTcEQ4U0NLSW9KdVFnWS9jTUVGcERRTGdBb0Q0QWhCejNSQzRTUG1GQW15TElpV0pCQ0R4dW9nb0dlRitRRVFRalNMVlFJbVJsTWd3TjhwYnlnS3c1MC9SQzFkZ3hxL2dqT3BweXdKQkFjT1BsRGQ0VVVNTVBNUm5WWVNnaUM1UEFNbjRPUU9iR3pOZFJ5QWVzQThGREFWQXNZZ29HTUhLQjh5UWdFQ2REbUJ1MUs4TXdGS3lFUWpJNGhmQVVDQlFMbys3Y0h5azBhQ3dyK3Jwc2lJYjVQbXpJQVFUaUVmOGtPdWs3eXJOZWxKTzZzMjRQdHZETFZpNWFVUHNtUjBCTUI1YlU0UUU0SUpneldHYUpuVjNvRUN0Q0RpYUVSd2diZHE4VUFWQ08yWnhRZ0VqQ1luakF5UUJBUXVBQWVCOWlhSUdJR2pSQjBrSUFCSkJZa0JzUU5vUW1DQUx6b1FTUW04SXdPdEE4QkpOVFByQ0poS0c2Y2dIWU11STNKTHZPQUNreUxCK296QmFFbTRRQjhWR0IwY2luVEJrcWdnVERoSUFkdEtrVUVXQUUwZGJ3Z0IrMGpHZ05RWUNJQUpORVVDUkJoSkJ5UXhWSjhZQVFXb0lEMklHRTdZVVJnanBQUVFBUzVzWUVhekVjU2g5SFBFbzNCQVBqaDQ0S1VhR0lBZHdnT0JDU2dqYWFvQ2lXY1o0b0NxTEJZUEtBaFBrNDhvRVpDa0dBdzVFb1dBRFJnSlhYNDdSZ1gySUFCN0ljc0VFaWdBZmk3QkNQN3hNcG1DUUlIQm1pQm5zWm55MTFCZ0FFNlNFQU5QTkpMSUFRQ0FDSDVCQWdLQUFBQUxBQUFBQUJBQUVBQUFBZitnRUNDZzRTRmhvZEFBZzA5SFMwbE1TWWlHSWlVbFphWGhDUXZQNXlkUHg4TEdSSXdtS1dtbEJPZXFwd1hHU3luc0tjdXE3US9Bd0lBc1pnZ3BUUzF0UjAwdXBRZ0xnV2xBS20vcXk4QnBNT0VPQjAvTndpbFBzdTFNeFRRZ2dJSG5RcWxHRG9XQVFVakQ5bWNOK0xET2plZUZjTXdBaEViMlI4MnVnYWJuaGZQRUlIQVFJSUJBd0tHUUNqNnNNd0RMQTMrVkVsSXlNRkRoeDBNT1pXZ3hLTEhNZ2VtQk1TamxTT2FCM3kwWkZRQ1lPQkNyUThxTU9FQVIydUZNQ0FJSW95a1ZlMFNqaEcxYnR3azVwRldCMnRBRk5EOE5ZK1NCUk81SUJTb3RTTGdvVm0wS2tBQUFpUEJzaHNiSm9pb2xLcUVOUkFwYXNXZ1JFTGRxZzcrVzFGTVk5YkNBSTJ0bGloa25JRURDSWlwcWw0MFFHcW9RazFyS0lDcXVoRUJvU2tibm5ZZ2hGRDBRUU1Oa3hCeHlPanBBVGNZYytYMUxRU0NBdzhhS0E0cDdyVEFHbzRTQ2xKYmFrRUxKQkN2blUwSVhNRHB4WXdJREFncGNPbXBCcTllbkR0TjJLcGc4VVJCZUFsRlVQV2h4VkFHSjFUdEs0VmJsUUJCSVpZKytDN0lSQWRETEc0ay8vSEN3M0VHeE5rNXRnUmhhYWNlaENBSXlMRERnaUFRWG4zQVRTRVFvQ0JBQUNocGhKY015UjF6aVFncEhYTGNiWjI0VUFrRUxYVlN3WEV4ZVBMQ1VKUjAxOGtCRXg1aVFTY2JrT0RUQUowRUlBZ0NPM2lTd1NXOHFaSkFKUVNNdElGc2x5REE0Zzh6WkdhQ0p6MVJna0ZFblpEK2gwZ0puRHlnb2lrWWVNQkFMb0xBa0YwNGxmQ3d5Z05XRmFJWEo3WjFBMFFHbnBUazFDb1RWSUxORHdkME9ReUVyRlhTb1NvYm9jTEpXbUlLZ29GYjdCRm1DSk9xdUlnSURHNHBtZWNLbm9BNENBNGloTmFKYmdRRXdFQ0p2bnlTV1RmSEZjV0pvU1JZTU1BTEUyamFpUTVBTU1ESkNzQUpvdVVQRjVRSUN3MCt6T0JPQTU2b2hJQU5JM0MyZ2FnSEZOQVhDNTZNNE0wRkphZ0VUWTBhQ01KQkFjU3BKTUFxRzB4elFBWUNUR2hxbkVCQTRDWXNBRno1SEhRaUZQQ0tCS3ZNb0FJUHJnS0JBV2V0NWlrSUNSa3BTb2dHcXd4QWpIMVA1bWtBSnlkRVo4aWF4VlVpYXJMdS90Z1VJb2JaV01sMEdyb3JRa2JmR2dKQWdxUCtWdkpzSnpmd0NBUUtDbHlLQ1FLSS9yQkF1b01Rc040UEhGeG9uNFhaVnFET0FOc2VBZ0dnUDBSc3lKQ0wrWHNJdy96S0JuQVBIaU9DQU0wekN2eldKWnA0Y3FOZkNiT3BBcFdJcU5BSnpKVjhxWXAvbDVEWnlRZkd3bENESnhOWVFBTEpPR3d5QUZJc2pPQUREVkJUU04xOGxlQ3dFNnMzUVJEQ2VnY3N3SU1oSFdUd3pFeXN1Y0JMamtlWGNxSW5Cd3dJQkFlcmRXSW1JWmRpRUhJbklRaVNBeTN1N05JMEs5OENJRUFCU3gyZzh5QXN4T2pKQUZzSmNQSUdKQk1DQWdNKzlJVkFqWjNzNENvRUZFaWdnUXB1UXVBQ241d2MwQmNLRkhkaUFERWNoTEFDUXoyUWdvUHBuRGhZQ2dRYTBON0pCY0tBc0Rscm8vdDF6eXIrT2VSQ0FPMDJEOHJEOTZzY2NGTUl0WlEvQ1B1MEpNQUxDclJlMEwwZ0ZOVFF3UXpBcXpMQWFCNm9oZlFPQVFQcmxXa3JJSEJBQ3RTVWpSZUVBSUVCcU1VQk5IWUlHc3pORTBBVFJOc0tBUUFEcWlJWUw5cGVKMTVnS0VwbzRHVEJ5eHdpYUlEQ0IxUWdaWU9JWUMzQ2RBa0hMS01DaWpNRVZqanhnUTFVUUFNVVhGd3RJZ0FMZ05IaUJUa0lqaUVZSUFNRmlJQUJLTmlnNjZEWENmbkZ3Z01vM05vSUxFQ0IxbDBpTFo2SWdCUkxvWUgrMVdJRE5RaUJCaVRBZ3lBaTRtTHNvYUV1R0RDNWRWUnhldUE0UUFtSGdZQVVaUEdNWGl4RUJncmdSbWp3UUJsMlJGa3BZaVltRUZRdmtYaHlGelJBSUlFR0lLa21nWlJrS1hBY1lJSVd4R2NWcjlDa3V5REFBQjBrb0FZRFdNQUdOakFEVW9reUVBQWgrUVFJQ2dBQUFDd0FBQUFBUUFCQUFBQUgvb0JBZ29PRWhZYUVHRHdtTVNVdEhSME5KUWttQWpnQWg1aVptcHVEREM4L29LR2lvQjhyR1JJd25LcXJoeDJqcjZNWEdTeXN0YW84c0xtaVBTSzJ2cGd0dXNJL0hUUy94NEljSDhPNkx3R3B5TDROek1JekZORkFFS3cwSlFFV09nWVdBUVVURjlRM0NzZ2FMWmZZTUFJUks4TWZGcjhHbnhLc0lCZ2tMQXdVS0VBUUFpR2d4VEpkSG14cCtQUmpRanRNSURoNDZMRGpJS2tEUFRBVVl0RkRtQTFXUEI2SWtvRUpnNDhOdzNvY0FtSEFIS3dKS0ZUaE9ERnFna0JDQ0NMY29NWWpFNEVCbzFibzBNWUpncXRYS2dncE9FQ04yQ1lZQlVCdEdNcktSYTRFZ2lDa0VIWmh3NFFKQzA1dzRBUWloQUdpcTBpSWZOVkJHNHFqL3FOZXREQkFBMjIyVFJGd0hLc0Fhd1VDSUFoR3ZIb1Fnc0F2RGo4MjZMV2xiUEExSUFsZVZWZzhDQUVGSGh4b3hNd1U3TWVDdjdVNmozSXdDSVNHQmFBZW1EQTBVOVNMQ1JHTUZjSVZxc1pOVlRRc2hwcGdGd2pMRVFJd1JYMzFvWUZzUWRORWtWNFYrVlh3UXc4TnFiMXhRL2VQRng1dU1uQUo2Z1lKVlJCb2pocXdDWVFQMERnaFFNREFJUVRLVUNXSXl0QmRRcFVJV0NRMVJYWlIxQVQzRElQRUlNb0h4Mld5MVNnNzlGYUlDYUNjZ0o0bUdJeHdRd2dhQ1lJQVU2RUF1TWtNcjJEbDAwNC8rTFVLQWhVU3dtQW9OenhJQ0FYN1dQZkRjNWlVa05wMzBTQWdIaWpwRk1MTkJ3elFKc29EcVVCVENBVU1MWWROQnFMay9yQmlBUXhwY0tJb0V5Q1hBWTJEQkFES0FRcitjbDhvQ3doQ0FwT2lSQ0RnS1BVQndOUUxHUmdtaUdBL3hJQU5CZ0tod05CMWY0VWdHVitqQkFBRUNoYnRJQkFDYThIb0N3WXgzUEFZYXFFd0FJUUJyd3dnV2lqMWtDREtDb0xRUUVxSnRnRHdYaTlBZEJSS2NCSzhNb09ub3VnQUJBdFFDa0xiQmJmNThsNVNRQ1FIQ2tsYmlySUJxYUZvQUFRRG9vd2dpQUNnc0lxTVBEL0FXc05JUU5RYXlncVBncklhQmFKMENZU2wxMjNtQ3dnWTVnTUVYRC8wRXVvb0MrQXBpZzlBWUdDUnNCZzgwRUZQeHhCd2tHd1RpS0tvRG8wMkowb0J2dDM0QTQyS1JrUHZEOEx1V3NFeUg4Ums1U2dOV0ZBVHAwRGxpczBnRFZld1VRMHIvbHdpYmlnSjFEcURBcmRGSUlyRUQ0dHdrTGFGNkFVQXNhWGk4TUVDS3ZUbTR3ODNXSHNNQXNRdTBHb2g3cjdDQVFBUzNKd1ZocUR3VjRoNnEwQWdMc21IUElsaWxvUjRISXFEZzBDZ3dnSVpnYmNES0JwbWdpc29IWEJDd3B3L2VBakV3VDhjd0RFbkNnOGc1Q0VVdUZnUEowaUc4a0YrTUJ5N213VWszQlJkVmpuSWZJaTljcXU1Q1E3Y0FTd2JCQUZZZDhBQ0MreFE0Q29FZ0NoSzE2c29uT29nSExBcEdTWTROQ0RCM2tEa0FFdU9xb0JnTnlodkR3SUFEd1VBVGNwamhIQnc5UThEaVBDUUFDNXU0TE1tQ0NDNndkb0RVU0NCQmhwSXdDSWhFSGdnT1NqMUFmYmVLS3ZaZ2dOSzBkc0NnUVlvaDNLQk1RQmN6Q1hUL29NM0FQNGhNUEFRd2ZPaUhDQ2JuYkFnclFvSEx1eGVTSVFkMUZCQkJ3dXNCY3NBaTFuK0NyNnNZRUVObHBHQjhRR0JmY3g0UVFqUW9xeFFITUJ2bVdEQUFIZUJxWkxwVHhnZDZKZnFHaGFLRndncUV4QUEweXRPUUxwQ2pFa1hENmpBV0E3eHNoOFlpUk1PRUVZRllDY0lHRXdBYktUWVFBazBVRUZEa0NvQ3R2Q0JNRjZRQXcwS0FnVU1FSUVDRkNBQ0JxQUFkSmlnVFFMa3B3a0h1R2hBSTdBQUJhRG9pdzVFZ0l1YzBNRHlkTEdCR2dSQUJ6SVFBQTlrb0FFZkdQRXAyR0JBOXBveXVZZlZBZ0VKdUdKVFBtakhUZkFnWG5RVXhRREEyRWREQUVBREhBb2tLRGhWeUZXQVFBSU53T0V3QnRsSTZSbWdCWVVUQmlNckcxa0xDREJBQndtb3dRZ1dzSUVOekdBQURVaUFBVmdBdkY4RUFnQWgrUVFJQ2dBQUFDd0FBQUFBUUFCQUFBQUgvb0JBZ29PRWhZYUVHRHdtTVNVdEhUME5KVEVtSWhpSGw1aVpta0FRSWdrekx6K2lvNlNpSHdzWkVqQ2JySzJjTVFlbHNyT2lGeGtzcnJtWENiUzlzd01DQUxyRFFEQUx2c2lrSFRURXVqUVB5ZEV2QWF2TnJSYlIyVE1VMXF3QUZhSVBFeFVCRmpvR0pnRUZFemZSTnpMZG15Z1JBdFdYQ0R3Ukc3NFRKUEc1SURDUVlNQ0FCQVlRaEVBSWFQQ2gxSWNJOXY1aEFzSEJRNGNkRFVkOU9OQWpCQWNJZzFqMEdIVUNYak1PbGpiaDhMQXYyZzRKZ3dBWXVOQWdKVEVjQjFvZ3hJUWdCTFJzUDFZZ0tJUmdKekVRSFVTNXdLUWlGdEFmRDNCSkhPUmlWRlJETUhqMXVyRmh3b1FWRjBZNW1EcUl4RTlSRzRZaW1pRHJSUXNEL2pSQURvSkFRVWNBbzFQQmxjcUJOVUhHR3hFSWtHM0ZJU09wR3pZSnlUaFJBUWRSR2p4NDBFREJDZ1hsWEMxbWpiMFVFWU9QQ1dkL3ZKZ1JnUUVtQUExcTROVkV3L0NvQ1hMbE9aMzFvUVV6UXc1RTJjZ1VHNGpXVWdKeUNRajE0Y1lOMTZJOTRHWHg4NFpnUXhBOGxKZzdlMVNQWVNvRUhJU1FLRURMSHhNdUF3RnhiRlFCUXpoR1BrZ3BZcFpKVEwxNW16Z0FzVkFNVWk5dUMxSVJWcFFCUWIrTmNnQkNMS3dtaUFVNnVSS2ZJQWpzUUVvR2dtVGxXZ09DbEVkS0F1TnQwSUZqaEJEUXpsTHhZRFBLRFVNWklNc0ozSVVDSEJBYzFLSUFJU1dJY2tCRXhNQndBaWt2VWpBTEF6ekk4c0FxSHBDeUdRVXFna2dNQWlsbC9rQUtYeUI4TjRvR0lwSXlnU0JKamZJZkVEN0lTS01yRE16QUZ4RHRqYktBSUEzSUVzRjlwVXdIZ29PajNNYldEekdjMU02QVFHQncxZ3REaFNCTERUR1dFZ0FRS0JoMkFVZ3cvQlFjTVRyKzhBRTNRS3hBQ2pNbWxqSkFsYVNZQUVTaW9xd2dDQU9tSkFaUWZ5SUlNZ0Fwd2NrZ3l3d2psYUlERUp5T01vSWdQZjV3Z1lHdU9QcURDb0xVUUFvOEFzaXlRYXFrck1vQ0thOEMwYXVzQzdwU25nYTU3bXFzTEN0UU9vcWxyWW95SmhBMGlQS0NlTHFBY09NUE1BRWhiYWdTeUxLQVhxVDRVS2VnQ05rcENnZk5FSkRSYlJiK1lKb09zZ3dRb0NqbmVVdUtQMERNSUFxenhFU0tZakZuZlVCWmxxWFVFS1dyZ2dEN0E4RXgvdHh3SlRHcFZnQXJLUnNJZys0b0NZUjVHRWdSa0tJeEVDUUFUTXl4NEFvU3FTZ2FBMkJyc1BMS3dzT3pJM0pMREFCdkxtRFVUQU9qak53UEhNZ3N5NThnVkdla05ibTFUQWdKb0ZGbWdpdzNnSlNEcE0rVlRKTE9nZ2pUQ2dnTlFBaWRTYU9XMG9FZ3Bwb1NRR3drcUNnS2hvVm9NSU1LWG0rQ3dKYUVVREMwQlF5R2RjQ2hoQ2c1eWdWcUZTTTRlQmFRc0JNQUpOeXN5NzZLUGdkRUFSVndEUVFPN2ZpWFVBaklIYkRBQWlkODhFSzRyWGdveTltRHdGQzNJU0tlWndnSFpkTnlncWVaWEMzTGkxOVhrTllsQUFoUVFIVzFWTUNvSUxRS0lzTFFHeFIvajhyd1VTQ0JCaHBJUUFOZUVMaXdRcWpRelV6S3hZUHhwa0Y1L2grc2JjamhZaWJialFvaUZENElQaEd3U1VvUGtrZm9wTk5rQ2REUUF3dDBVRU1OSGN3UW1xUWNJZ1FEenVJNnNxQUFlTWw0UVFqTTE3UURXRTVCaGZqR1UzNndqRXlBN1FHQUd3WUVRckFCM0FtQ0JabEx4Z01xQUM5NXJLb1pKSWlkOE5hbmdBS3NZR2dmMkVBRk5QREE3dW1nUDZONFFRNU1FeE1VTUVBRUNwQ0JCQmlBZ3RWMWp5Z1pHSm9wUm1BQkNpZ1BDSXd6UUEwbElvSVErbUlETlFoQjlIZ2dBQW5vd0FjVmVPRVBhbURFN2pGQWV4T1V4VzZPU0FnRXBFQ0phWHdBRDlrNENCNjhLWTJsV0FEZXVnZUM3K0d4RkNtZ295RkFJSUVHdUcyQ0grakFGSStJQXhPMEFJZkl1RUVITEJBL1FWNENBZ3pRUVFKcUVUQ0FCV3hnQlFzWVFBTVNvSU9QL0NNUUFDSDVCQWdLQUFBQUxBQUFBQUJBQUVBQWhRUUNCSVNDaE1UQ3hFUkNSQ1FpSktTaXBPVGk1R1JpWkJRU0ZKU1NsTlRTMUZSU1ZEUXlOTFN5dFBUeTlIUjJkQXdLREl5S2pNekt6RXhLVEN3cUxLeXFyT3pxN0d4cWJCd2FISnlhbk56YTNGeGFYRHc2UEx5NnZQejYvSHgrZkFRR0JJU0doTVRHeEVSR1JDUW1KS1NtcE9UbTVHUm1aQlFXRkpTV2xOVFcxRlJXVkRRMk5MUzJ0UFQyOUh4NmZBd09ESXlPak16T3pFeE9UQ3d1TEt5dXJPenU3R3h1YkJ3ZUhKeWVuTnplM0Z4ZVhEdytQTHkrdlB6Ky9BQUFBQWIrd0o5d1NDd2FpUmplS1ZacWRUcU5VdUkwd0FHTzJLeDJDeGtsWkI2ZmVFd1dlMVNaQ1d6TGJoTnBDVU41VGhkYk1peTMvc2hwaGV1QWREMGplM3NFRlgrQmluTWROSVZ0TkNhTGsyVTJBNCtRa3BTVGxwaHVrWFFPRWlVQkZ6c0hGd0VGRWhaMG5aNXVESEppT2drRENGb3dBeEVxWTYrd255WUNFeEJFQUJna0xBd1VLQ0JFSUFNdEZwZkFlN2hDSUJ3dkhUcUpQaDRHUFNFOHhVTFgxWVVZSHhxVU9oRUU2SThJSVE2Yll3NHBPUEY2UERiMlpDNFc3Tk16b2w0WkN4b2tTRkRRcW95TERmRUlVTmd6d0orTEZnZG9sQk1DZ2NLT0J2VWU3c0hoNkVnRkV4TUpob0MzQmNVTGlIb3dxQkJ4cFFpSE1DaGh3YURCZ3dQK0RSU3daSXBaWWFURm1KeDdTQVFRWVZDTUN3a1JTc2JzSlVaR1RTRTB2Q0ZsZzZLRXR6a2VHcEJ3ZzRQcUdFSkRFc3d4Z0FzQkJ5MEllcER4WU1PR054VVl0TkNBQjBMR25CcERJR2dpMDBOSWlGOUg0aHFJTVFBREJBZ29lSVRRZ0ZldmdSSkNDc3h4a2ZmSENEb3pmdUNvaDlnSWhEVkhJSnc3QXNxREl3WjBEZ2hKTVVkSHNSZStxQTM4UVdPV2p3eENSTXhwSU1Sdm1RUS9RTEFiRTBJSWl0V1BJT2o3Y1lLTURWdzM1cGlBZ09Hcmowc2NBTElzMFFHNkhoQWxCRnlCMFZDTVFBcDBHUENZNDJETkJ6TEVmMUJ3NGFQSHh2TWxpTUdERUJtUWtjTVBBT2d3eHdiVmxTR0JFQjJRSWRzUDkvbGd3SDl1Z0NDQkdBZisvakFCR1FvSTBjQWNFY1F3QjJZZytPWkRTaHY2RUlNbkY0aGhnRE1vTk9VQ0xpSE1VVUVGY3dUd0F3cUpXRkFNQWdicFZnZ0pZNlNrQUJrTS9IREFIQUlZVmNZRlB5QTVoZ3BZbWRIWkl5QTBoRmFFWTF6eVlSa3l5RlhHRGord1FNYURQOHpuZ3dYT2VMSWNVVCtNT0Vab241V2hnWmxrUUFUYkdDSUlNWUFkY1dKQ0ZaMDFrSUhuSENwSVNjWUorb0dZcFE4dUFJVkppbUpNQUNFWmhJd0pJbzlsZlBCRGQyUEFPU3AvUHJ5RkNRRi9sTFRrR0UzdUFLVmFaUlNRM0dBK2pQWERxNkppOHVTYnpoQTVoZ2RBQlRCY2pHVUUrb01BZlFwaG9nOHFZT2lHbVJVSTRhWVlHbHlSNkhGNVdsZE1CR1JVK3dNRFlXaUEyaDcrRUppcDZRL1Bpb0VaQUdhTnNRTU8zZzA0cUMrV3RsQVpKZ2dJSUlNekVDd25Ca1FrZU1jQnZITTBCNEdLRHdoQndaYjhsclFCR1E3azFhQzNQK1RBNkJYZ09nWFRiaFdOSVM2ZlkzUWd4QXgwWEVJQ2Z5SmxBY0pWcG1reGdqK3A2b2NxR1ZUK2dFQjdZd0QyUXdZdFl3RkJDUktjUUVLY0FCQ3dnd0Fkbkh2RUJEYmtSK3RjTFAyZzJVRzQ0Q0JRRmtPVFlZSUNDcGlRU0EvbUVUSEFSQkRFSzRiSlE2aHBuWkZhNE1Dc0lqSkl0UVVEdVBxdzlSQnorMURhRmdEd1VJQ0tkbFF3UWFGdDREMkdCb2g3S01iZkdWSXd3UVliVEVCRDQzb283Z09rUlFEUUErUlpVSENBMDBKdk1HRG1YMHZMRzl4YjlHYWhMZWJCd0VQZ0JPeUFqZ1VOckdNQ0NzVXFkRkJEQlIwbzBOVGp1ZTltQkEwODIyTzc4VUlRNE5VL1lyU1FFdk5hTUpBRHpZczRVSUdxMUxzOEJBSXJGS0NDZHg1b1VNSUdXMkxldldnUzVOQWtFU2d3TU1BQ0M0ekFBQW93VTVDQ0N0T3ZMeHBWSGhEQkJTZ0FNeU1BZ0FRbjZNRWZ0dEs5c3RCQkF6VUl3QTVtTUFBZXpHQURINmpCK0xUVFArUGhRR0RRb3dNREIrTEFFQVppaFBHZ1FZdE1XQWNGRks4YUFOaUFjVmk0dUFPb2J5QWdtRUFEYnZZUEQzUmdCVGVrSGc0T0lBMUsyS0FETjZpYS80VEdnQjBrb0FZaVVJQUdOQ0FEQVRRZ0FRZGdnZW9LRVFRQUlma0VDQW9BQUFBc0FBQUFBRUFBUUFBQUIvNkFRSUtEaElXR2hCZzhKakVsTFIwOURTVXhKaUlZaDVlWW1acEFFQ0lKTXk4L29xT2tvaDhMR1JJd202eXRRRFFKQjZXenRLSVhHUWl1dW9VY0xSKzF3TE0xQUx1N0pCV2h3Y3FpQnlqRnJpQXVEOHZVSHdMUHJUZ2QxTndCMkt3Y0o5UVBFeFVCRmpvR0pnRUZFemVpQXhEZm05ckJCd2tDcTVnSVBCRUU4NnhBZUVoR2FvQUVFSVJBWUNEQmdBRUpEQWdCRnVPd1lkU0VhNEpBY1BEUVljZXZVUjhPOUFqQlFaN0VWaWdLUEhBUUVRaUxpdFIyK0dNRlE0UkVaNFFnOU9BbTZrVUtTNWt5M0tCeHNoQ0JDenh0bVNCMlNNZXZGYm1LRGxJeDZzYUdDUk5XSUFWV0lpcWhvNk5pU0NYa3dRQU5rNElnVU5EUllGcXBEZjRVQ2tFWVFlb0RpN0VvUFd6OVVjRHJvQUN6UnJSc0JRT29KaGcwZVBDZ2dYTVFpZ3dYZEJ5Q3NJT1dnbDBKSnFBMVJDTEFDSUkvWHN5WU9jaHZJYXF6Wmd6ZWJFaUJxQWlIU0pUNFNPc0dDVmNOYU5rY2xDQ0d2a0lJS3YvNElLT1FpWGQxYjl6NGFFQVhCZENpR2d5Q0lHdEczRUlSU0ozNERXRWJzeGdDSUVKSXBLRllnVmtQZ0lxb3VuUVFEdVNpS2hRU2VNSUZhMHdRQmh0aVFhczVrQVNsZENXSUQ2VGM4SThodjdHU2dUZUdBSEFYRUJQTUloMFFDOHdTQWhBZ3dDUUtnL05vRUJvSGhhQlF3UTI1MkRETENlTkI5OE0xSEpEeXdvSGZBREFEUEV3QklZQndsMUZBQ3dNOG9MY0tnYU8wSUFnR2pSWGpvU2c4Q1A2aUFVRTVZS2poS0JwWU1Nc0VnbmduaW44KzdJQlJNVEtLMGlRUTY0MnlnQ0M1bFJKQkRMT1VnS0Z3b2hBRllXaVhQV1BpRHdjZ2hJRmJvZVVTZ2pBbHpPSU5DclJkSUE4TWJtMjVpNDdEWGJjQ0tVUVpNTXNBVm81aUFoQ0lpcktDSUF5WVl0Z3VJR3kxMndDa1hDTkRhanVWSWxtbW80d2dTSTgvWEtDZkxvditvSUlnTlpCU25BQ3piRkFxS1pMeGw2b2d1TFo2bnlzVi9sQWVFTFdPY3Vzc0swUXF5cVNvaWpMbUt6MFZxUXNJNHZ3Z1FaV2syQ1RCTEF0VU1Jc1BRR0FRcUoxdWdmZ01BUis1V2F3b0RBQ2h3Nk1BbGxJQWh0bUtjaHNRTS81QTdqTUMvSUlpRUlTQzVBeVFwTlFnWlNtcUFyR3JzWUtnK2NNS3cvNnlJc0VKOGdIQnFpZ2JFQ051S1FtRVdhQTgyWTNDSUFQTWZZUEJkUkxIQndRQXNmTEs3aXhKQnJ0U1M5NGRVTEVyRUR4WkhnbTBqY0lCekJaeWNzQUNEdzdDUUNpd0FYU2tLT2tCNFdncE44aVRBN1BFcUhLSUQ1cTVVbU5PL2JvTUJBcGxqdEtCSUtQT1lxZ2hJRmliaVFBajJQQTFFQzZVb3U3TER1QnBnU0FJN0RWS0RST1JFQkVBSkJnd3dFYzFlSlVoS1djWHdzQ2lIOEI0WGlrZnhPc0tBdzk4Y01JQ0N4d1E5QThaSkNqQ1J5KzRDVndHUWc3aWF5a2R6STBKRE8vU3NzQzJodXo1dzRYN0ZBTHFMSkpkOGpVT0JjaFN5Z1VWSEhUSlhQSG9JaklwRjVnbUNBdWpKYWlXQkJwb0lBRU5yeHBDQUE2N0FQQndkUDc2Z2VBQWNqdVlrQ0JlbUN5dDNhWmpsejNLUFNJNHo0OS9lSlU4SE8yRWtBM01Bd3QwVUVNTkhaaUJXNDQxRnRpOTVoTGl3eE0zTHJDdnNWRGdCaU00bjFFcThEbGxKQzhuRWxIQWRUVEJnQndvTUJnUEtNNGdSTENCRkVnUWZhVlJRQUZXVU1FUGJLQUNHbWdNQVhMd2tRVllEb1crUXdFREpDQURCWWlBQVNqNEdnVlNBQitvV2NCMWVJR0JBU2lBeEVFUXpnUTlVTkVvS3VDMnNhUmdPQnVvUVFpc3h3TUJTRUFIUHFnQkM1ZnhndDZoVUFVVlRBb3BEckMyc2VEQWIycTBWeFdMMHAwNHlnNS9PRVNZSFRsbWdKM1JzUVpTckVZSFZPQkh2R0RBQkMyQUl6QnUwQUVMd0FpSG1ZQUFBM1NRZ0JvTVlBRWJXTUVDQmduUWdBVG9vQ1FTQ1FRQUlma0VDQW9BQUFBc0FBQUFBRUFBUUFBQUIvNkFRSUtEaElXR2hCZzhKakVsTFIwZERTVUpKZ0k0QUllWW1acWJFQ0lKTXg4L29xT2tvaDhTbTZtcWh6UUpCNld3cFFzZ3E3V3BIQzJoc2J1aUtyYS9oeVFWdXJ5N003VEF5UkF1TjhYT0NzbkpPQjNPemhQSTBiVThKOVUvRHhNbEFSWTZCaFlCQlNLMUVOa2FEODQ3Q1FJSTJZUUZOc2tHTDhVREV1dURBQmhJc0dCQUFRVzJWRFErZlBEd1M0TytYUlBTRVlMUllBZXhIeDhPOUFqQncxK21HcVB1cllMUVl0Y0RCd2NIRlhnWGdRQW1Cc1ErK0ZvRlFNYUVVaXRvWktMZ3p0bURGRGdNZ1NSMVEyY3RFQXBtaU9vd1QxT09iajh1bUxna2lNTkZVUXRnL0FLaElZSEhUQ1FPckpnd1ljV0ZZaVdhdXRpVklCdUtCUDRwQ3gyRVFFRkhnNTZ5TUFBQnNSTFdCdzdKVUl6NE1mTVhCZzluUzIwSUNxRkhyQkZVYThHZzltUEcxMEl3YUhEZ1FRTkZJUlFacnRZUWhDRnhxY0tyVXBEU1lJaUNqd2w0dlRFd3BLRFpqdzBtUEtxSU5TTnlLaFVYSVE4aVVlSmhxUTR2SjFqUVdxaEJMSW1wRUx3YTlVREFJQk8yUjMyNGNlTUY0Rjgwakk4YXJTcEVLUk9DSUNRZ2RTQ0dBQXdRSUhndUJNRUQ4MHg5U2IzUXV3bEg3QXFEK0VDZEE1Y2RzbHNGY1JIQ1FDd0dwT0lCS1E4RUpRZ0NIcHl3QWdtcVFMQ0FLQUZzTWxncERRZ3kyeUVnYkVCS0NJWWcwRlFxRUF4Z0NndWFPQURMQ1JCZzhFSUwzeEhDZ1g0dTBZUEJkQVA0VmdnRnNUREF3eWdOalA0b2lJQ2p0RURQSUJxTXdzTWhXZ0d3QXl3YW1FREtCeFVZUlprb0RUNEpCQUJLL1pCRElUZ2tNSUFnenBVU1FReXdsRERtZEtKUUlJaUUyVmdneWdISVlCQ0JPeS9NWTE0cEZWUUFTNGMyam5MQk9naWNrQUdHMFJDSmtaMUFmQ2pLYkFiQU1rQkpwVmdBQkFta3JDQUlEYUxjc09KVzNQd2drV09qV0NjQkxET3dTb29PUUxCQXlnU0NIQmxWZ2JXWVNCaWJwTWdBaEFpd2JDRHJLS3d0T01vSWdnZ2d5Z1VKcnJMaHIwQU1KWXF3eE9MRUtTbm9TWXJWcUtLOE1COHdJRXlIQ2hCZnFnckVxN0lZV29vUFFHQkF6QW0wSlBwRGpzQXdVTU1IUmsxN0tSQTZhTHBlS1FYc2xXb0hPVTRMTHowTTBJSUFYaDk0RmdBc0RmN29XUXF6UVBUUWczV0VSQ0RLQ3J3Q282c29HMXpDZ291a0pKQXRVZXZncWFBdVlUNEo1eWh5Q2dLQUFDai9vQU1PVi8wd1pTYWNuc0JmTmhENEtncHJoQUFnd1UwY0FMQUNMQ2htd3NCREE5ekhTWUVCVXpkMDB2MEE4UlJPUWhiQzVBMWJad0pEQlN2a05nZ0VUNDhDNENZeXhNSXhKaUFZR3ZVbUlyUnQ1aUFQa29JdkpnaVlOdDRtQ0dSUTlwaUNnRUNBRGdNUU0wQlRITVFXb2lyNWFhZGtMVGlzc01BQ0IxeVZBWE00MFBuREM1ZHJZaXNzSFlUTlF3MUdHVEl3TEF1Y0s0aTFvdHl0U3M2ejZzanBCYklQZ2tGMnoxWWdnWkFLa0RKQ3lKaXdXOG9GRXM2c1hRaFdnMENCQkJwb0lBRU4wWUp3MHc4SEhMNEpBUDdIampKQXkwYVBzb01CVnRmeTZnV3QyekoxTERuUWdrUDVveHdRejZtcEFGQkMrNzk0SEV1SFFFQkJtMkx4Z0JWMG9BWVY2TUFFK0ljSkN3Z2diSnVBZ2I5SUVUTVF1Q0EyYU5rRUNBYlZnNS9WZ2dMQXU4MWxDRENNYXZBckV5aHcxeWc2NEVGVkFDZDNoMkJBRGtJSWk3Y1pRZ0QwYXhMK1lqU0tCU0FQQ0FoUVFRRlcwTE1QTE1CbFFDQkFEbm8yaWdqOGdrbElVd1VLR0NBQ0JTaEFCQXhBZ1c4b2tBQWFwaXhhTWJxR21BQkFBaFAwUUR5eGlBQUVwVmdMRWdSQUJ6SVFBQTlrb0FFZjFJQ0kxWGlCQThTMGlzcEJoVDF6NDZNbUtJREdQLzZnQU9NU3BDWktZRWhTTEVCWWlrekYreHE1QVFQOE1KS0RVR0UzUGlyUUFSV0FFWk9FU0VnM2J0QUJHL1FJbEJsaWdBNFNVSU1STEdBREc1akJBQnFRQUFPdzRKS3FDQVFBSWZrRUNBb0FBQUFzQUFBQUFFQUFRQUFBQi82QVFJS0RoSVdHaEJnOEpqRWxMUjA5RFNxSGs1U1Zsb1VRSWdrekx6K2VuNTQ4bDZPa2xEUUpCNkNxbmdjZ3BhK2xIQzBmcTdVWnNMaVZKQldkdGJVQ3BLNjVreUF1RDc2K0J4Q2tJU0hMdzRRNEhjaklPY0ViUHpNVTBJSUNxZFNlRHhNVkFSWTZCS1FzbnpjSzBEbzM0QWNKQWpEREVhQWZOcmtHdmI0REVzS2lNV0JBQWtQQVF3QldyUElBUzBPL1ZST0FUUXJ4NmNPQkhpRTRQQ1BFZ05ZcUI2VUV3S3Yxd01GQlErcHE3WWlBYnBBUFh4OGtYY0x4YmRXS2JaWkFZUFAxSWdVR1FUaEcrTHBCSTJjUFh4MFFDRklSb0ZJTWNCZE1BQUFDb1lDdkZmVW91ZkJWWVJtTUJEOWFVV0l3WWNVRmFpV1Vna2poS3dZbEVQNGxqcW5xc0F6Rk5FOFNLMEdnb0tPQlhGVXpjQUFCWVhYVkJ4YVZFQ2lvTUhLRlVoUkNQeVY0aGNMRFdWVTcwRUU0dW1yRXlVTUlaQlRZQnVQdXB3MmZFZERnd1dQaklCUVpQSDVhb0JUSFpWWHRYb0VGOWNBRUlRbytKc2k5a05XUWd0dWVhcmpTVUd2R1owb3FWTjBRTVloRUNkbWVLaGpheU9DRUtuMUFHdFNpUGdwQnpSOFB5QU94TUxMaUJSbUdLbmdReHVEMmhSU3VLR0QzMUlDWktndUNnTEFiS3pFSVlKQWhLTUJUd2pNeUhGQ0FCSzRWeHR0UGx1RHcxdy9hQ2ZKVU9BNFVkMGgwMlFuelhFcXFHSENKQjZEYzBKSUZwNUV3VTJRL05GWEpCS3YwVjRsT29NZ0l3VjBib0VBS0FnTjQ4Z0lIbGRpd3lnbXVHZjdDQVNndnRBUUVBQlM0NEdJcEdId3p3RlNUVUZBTEE1V2crRWtMM0F3QzRnK2lFTE1US0JwVVl0b1BKb1k1MkFLZVdFT0plS3BFOE5aNVJibTVIaXZQQ1VLUktqWHc0Q1FoS01oMlFaTFFhT2tKVG9mb3NNb0Fzd3pnQXFOQUtPckpDZ0ZpQ1EwSWw2bjNKQTBlRkNYREtqTnc5c01IRS9qd0V3T2dqQ0FJRHd1RWdCZzBjUDRnRXdVQnpFQUxmQUtzc29HcG4rZ0FSRW8zMUNEQnE1NGNDbzBBQlp5UUpoQTFnQUlmQmltY3QwSUxxL2hHUVFFS0tEVUlEVUw2eUEwRVdhMnBIZ1FjSklETkFoV3M0Z01sR01oRnBKNUExT29KbDRXQXdJRU9BMzVTUUNVemVQS3VuZ2o4OVlHNGg3Q29pcXVVYkxnQ29ybndBTW9HbXY0YUlzSXFOMEFzU0VlZXRCbm1QWjlrT0FrQis1R3BwaWNuVVBpakNpcFR0UU9hbFNTMFNnaVZNQ0RYQUI3cVZjSVBMM1FnTG5PZlBORHlJVG5ZVkxFaEwzblN3OUNnN2V6SkxXK0NJaklsbzY2UzF5RWd0T3NKUTVVSVlDL09nbmo1eWJ5SklaZGNJUlE0TUFCOFFNQVE3US80NWt1QUFjQU80QzBMRjNaQWlvUVY0V3ZCQkI1ZGtDY0VJVXh3RWdVTG5MQmZCbG5SeEdTZWw1QUlTZ2RUS2Z6SkFZd3luVFFvQ3h3ckNBWUtnVUp6S1VHdUlpd0FXbjl5Z2VlSDBKaHNCUUFOd3NMTG9BeWc4U1FYcjNLQllBalk2OGtISWVSTWxRb2FTRUREWjY1ZkxoZ0tBYkRRSnlFQUFQdEpEL1hnUURzb081Z2dmQ1VCZ0NMNFlQNWFiNUFBRDg4RHdjQkRuK1F3RlFHK1g1NkFDTjVhd25GWWVmNkpmUXJiQ3dMeUtnbTRnZ0tkSkZsQUIycEFOa01BQUU0REVBd1F4S2FLZjFFQ0J1MUwzekpBNElBTDFjS0JrL0NCTXdiVHZWb2NBR0ZaYW84cWxpWUlBbFNnWko5QTBsc0VnWURVcWVJRlY2T0VCbEQ0QXd5YUx3Y1cvSVNuRGlHQU0zMmtGQTd3aFV3SW9aZ0NyQUE3VURzRUFYSkF3eC9ZNlJXYkMxcjhESWdDQmtoQUFUS1lGZHBTSUVMK2xXOFNIc0NPalhBQkFCS1lZQURvVzBVRWpsWUtEZnpsV1pkQWdBQWtvQU1mMU9DSTRPQVpTTGpCQUlVSWpSUkd5cU1xRGhERFlTQWdBV0FpQll3RVdVTVF1bW1LbFNBWkkzL1FPWHJsd25MZzJJQUJiaXhueVVxVURoa2Y2SUFLT05sSlN1QWdqWjY0UVFjc01LaFN3a0lFQzlqQUNoWXdnQVlrUUFjYWNWTWdBQUFoK1FRSUNnQUFBQ3dBQUFBQVFBQkFBQUFIL29CQWdvT0VoWWFFR0R3bU1UcUhqbytRa1pBUUlna3pIeitaRnBLY25aMDBDUWVabzVraW5SU2VxWVVjTFppa3BDU2NFQ2M5cHFxZEpCV3VyNk1YRUp3RXJoMDB0NU11Tjd5OEU1MENwQzhCTU1XR09CM0p5UldkSnJ3enFOS0NQQ2ZXcnc4VEtwMDV5VGNLM2hvUDRwazdDUUlJcVQzV0g1dTNCaS92QXhLL2prQmdBR0FJd0laM0hsUnA0R2R0Z2kxSUpENGM2QkdDQjBBZ0xPeUpzK0dKaDd0a0R4eUFFSVJCd0NNSUYwanRpRUJBRUFBREtaTjlNQ2NKUjdoa0s0Z0JRUkRoUmdkSU0zZzlTSUZERUk0UjFtN29QRmt0V1FkNlFCU0krckdEb0tNSzFpNllJQWlqZ0xVRjBSNjVzRmJoRjR3VXpsQTg4dkN1QkQwUS9taVRKWGhFNHVPckRyOVFOQ1hGNGlRRkhRM3NrbHFBQVFnSXI3dytjTGlLa3g0Q3BPTVdTMExoSVNhcERVVWhhSHcxd2lvaERydEdQVUFGWSsrb0NrVUpJWWpsQ0VVR1hndm80YkJNaWlhaEZza2NDSW9yMmdRaENqNG0zRmhnS0t3Z0JjaEkxUmlwSXRrTXowQW9NQ1ExNFplQzBEZE1DaUpSWW5vRFF5a2FMR1ZBKzRkdUlBMlNQUVFDQUljQUF3azZiSGhnRXNiTlRBOGVXa2crS29JaGV5OTRNQklRNUpGeVF5elM4VklESkFDRUZjRXJ2Z0VCUVFLa0hCQ0RBTWE1dE1Nb0pRQWtRMmdsQ0lLWU00VkZnb05nMkFoQ0lYNE9YRlRJUzVaVk1HQU1wSHhBREFQSkdDQUpXNktscGswbUs3QUdDUWFRL1JDQUlBaUkvaUpSRHhvSVV1UW8zMEVDd2tHamhDQUlBUit0VUtJa0NBeVF5UWQ5RWNnREJnTUtZZ012Sjdob0NBZk90QVJFQ2ZoMTB3a0dVdzBBWFNFVUpNTUFKRDZRMGdLU05jekhrVUtqOFBESWxMdzArWWhwT2c0Q0FBcGxlZ0pDVUQva0FFbDZyL2dYMEZTWnlPbU5JQlprY2tDa2hVaFF3Z1F4UG9JQlB5ZU1rQUdwM3VUNXd3ZWVCa1NBQ0JZTWVnZ0VBdUJ3NTZlQ2dCQkFEUXRJQnV5eG5meUs3TExNNHRKQkFqcW9pU3dFQkdSWWlBZ3lVR0J0YXd3WmU2d0ZwNTd3d1o2T3JEaGNEU0ZvNXdpbFBpeUxnRjBmcU9WSXFKeEJzdUlLMG5KeUp3K1hLU3VJQ0x6Y2tLOGdETGpTYUNvaUhEQkFEaVhTeUNFa09JU1dpYUdQL3VEMnd3bGJjb0xBQ3BuTU1CSUVHNDZpcUNNQWNQeUtsWVNBZ0VNM0REQTB3TGFPUUFCbkpoSUlvZ01wRDJSOENEcXZyRUFRQ3dVTUlPNEpVUFdaU1E4Nkh3SURWcGxrSUFnRUM1Q1NJaVF5SkdOU1hhVE1aUmpUUHh5Z2dMOUFpR0R5RHk4THd1TW8zanFDUUhrL0xBakVhNk44SUFPU1hMOGdyNk1FNkREQUxnTkF4WUZnVVlJdFltSjd6a2JLQlRwQkVBSW1HOXlwZ2NRWmhJVkR5Sm04VVBnS0Mxc2dBZ2xxc3VBVVFmU09jb0tjSEl6d1V5RU9aN0pBelVaUldlWGdyMXlRdHBlOE5BSkFEYkd6emw1cXQvMXdRUVVTZU1ZQ3A1bU04SXNBRXYrQWI2bkpYRkFVQWxIWEdBTE1nbkJBUWFRUWVDQlkxNFdoNERvcC92a1FBc0JtcEF6d0N3N2Z3Mk1BOVlVUUVQM2h4SURBOVdENXRweE1EaU9objh3QjhrRGxDQUc4T0lCT1FtQU4zUm5pUVhJaENBb3dCUkpOSFFJRXRCbEFhczcyaWdKQUFnYnZlMFVHZmdFQ0YyeHZGRDJBeEFRcUZ3SU9FbkIvZDNNRUJmanpDcVJkU1JlOHFNb2o0TlFCY2lGZ1pyeDRnYm9nb1lMa1plSUU2eUJZRGxqNGdhUU5RZ0xHNGtINlNIRWVUampnSFJXUUV3SlVVSUFWWUNKdGg4QkJEbnlZQ1FkMndtaFo4ZDhnVUVBRE1ScUNBaW40WU5aZ0pRa0hjTEZ4bmdBQUNVelFBeTcyUjNDUTBBQUxSM0U2U2JDZ0FsWjhSK1dhS0EwR2pHMFVLZWhFQUFRNWlnUHMwQnNJU0VCb0RoWUozREd5QUNrOEZnOUdQWmlKUno2Q1V1Sll3TnlhNVJJTkJJVjNrMUJqSmpaZ2dJRXRDd1FDd09OMlpOSUJGYkNSbEttUWdJRTZZQU0zNFJKWUNtaEFBZ3pBQWxkNkloQUFPdz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vbmV4dC5wbmc8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCd0FBQUFjQ0FZQUFBQnlEZCtVQUFBQUJHZEJUVUVBQU5qcjlSd1VxZ0FBQUNCalNGSk5BQUNIRHdBQWpBMEFBUG1UQUFDRTVRQUFlNElBQU90MUFBQS90QUFBSWxoMWExNmNBQUFDMFdsRFExQkpRME1nVUhKdlptbHNaUUFBT011TmxNOUxGR0VZeDcrempSZ29RV0JtZTRpaFEwaW9UQlpsUk9XdXY5aTBiVmwvbEJMRTdPeTd1NU96czlQTTdKb2lFVjQ2WnRFOUtnOGUrZ004ZU9pVWw4TEFMQUxwYmxGRWdwZVM3WGxueHQwUjdjY0xNL041bngvZjUzbmY0WDJCR2xreFRUMGtBWG5Ec1pKOVVlbjY2SmhVK3hFaEhFRWR3cWhUVk51TUpCSURvTUZqc1d0c3ZvZkF2eXV0ZS92L091clN0cG9IaFAxQTZFZWEyU3F3N3hmWkMxbHFCQkM1WHNPRVl6ckU5emhibnYweDU1VEg4NjU5S05sRnZFaDhRRFV0SHYrYXVFUE5LV21nUmlSdXlRWmlVZ0hPNjBYVjcrY2dQZlhNR0I2azczSHE2UzZ6ZTN3V1p0Sktkejl4Ry9Ibk5PdnU0WnJFOHhtdE4wYmNUTTlheHVvZDlsZzRvVG14SVk5REk0WWVIL0M1eVVqRnIvcWFvdWxFazl2NmRtbXdaOXQrUzdtY0lBNFRKOGNML1R5bWtYSTdwM0pEMXp3VzlLbGNWOXpuZDFZeHllc2VvNWc1VTNmL0YvVVdlb1ZSNkdEUVlORGJnSVFrK2hCRksweFlLQ0JESG8waU5MSXlOOFlpdGpHK1o2U09SSUFsOHE5VHpycWJjeHRGeXVaWkk0akdNZE5TVVpEa0QvSlhlVlYrS3MvSlgyYkR4ZWFxWjhhNnFhbkxENzZUTHErOHJldDcvWjQ4ZlpYcVJzaXJJMHZXZkdWTmRxRFRRSGNaWXpaY1ZlSTEyUDM0Wm1DVkxGQ3BGU2xYYWR5dFZISjlOcjBqZ1dwLzJqMktYWnBlYktyV1doVVhicXpVTDAzdjJLdkNybFd4eXFwMnpxdHh3WHdtSGhWUGlqR3hRendIU2J3a2Rvb1h4VzZhblJjSEtobkRwS0pod2xXeW9WQ1dnVW55bWp2K21SY0w3Nnk1bzZHUEdjelNWSW1mLzRSVnlHZzZDeHpSZjdqL2MvQjd4YU94SXZEQ0JnNmZydG8ya3U0ZElqUXVWMjNPRmVEQ043b1AzbFp0elhRZURqMEJGczZvUmF2a1N3dkNHNHBtZHh3KzZTcVlrNWFXelRsU3V5eWZsU0owSlRFcFpxaHRMWktpNjVMcnNpV0wyY3dxc1hRYjdNeXBkaytsbm5hbDVsTzV2RUhuci9ZUnNQV3dYUDc1ckZ6ZWVrNDlyQUV2OWQvQXZQMUZHTlVaaWdBQUFBbHdTRmx6QUFBT3d3QUFEc01CeDIrb1pBQUFBQmwwUlZoMFUyOW1kSGRoY21VQVVHRnBiblF1VGtWVUlIWXpMalV1TkQ2TnpIWUFBQUV1U1VSQlZFaEx4WlpCRG9Jd0VFVlptWkN3WU1rbHVJcG5jT3NCV0hFSkVoTzNITUF6dUhMckdWeDVBeE8zK0wrWkdxZ0Zwa2pHSmo4Qk9uOWUydEoya2tUUnVxNUxvUzEwZ003UVZjUm5mbU5mcWtnMUhZSWtCWFNFbnRCY1l3eGppMFZnR0d2b01VY0o5Tk5UcTZFeWZhY0ZJTi9DSE5QVGpJQU5kRmtCNWxJdzEyWjB0T2hzVjRTNVZHMFFpTjVkSkN4SFBLVnB1d0VVamd5NmE1d1NrL2NUS0h6TW5YMDhlS2tVcG43SUFNaEVDbi9WQjk0VWhrRklhRjFtY3R6ZUhnU1ZzVEFYdndCYUVyaGZDcVF2RXJvbnNQR0EzQnBmYTZRK09TUndaQkFOZ1FSTS9oQ3hNRm1xMEpacC93STBuMUx6bjhaMlc4Z0MyMjE4QVpvZmJiYUh0NHpTN25weUd6dHdDUHh5NmpsditBS1dVZHFXR0FKbERXcFRSSG0zdUUyWjZFSHRDbUVQdkZxcC93SmthL0xrY3RXUUZBQUFBQUJKUlU1RXJrSmdnZz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vcGF1c2UucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFOanI5UndVcWdBQUFDQmpTRkpOQUFDSER3QUFqQTBBQVBtVEFBQ0U1UUFBZTRJQUFPdDFBQUEvdEFBQUlsaDFhMTZjQUFBQzBXbERRMUJKUTBNZ1VISnZabWxzWlFBQU9NdU5sTTlMRkdFWXg3K3pqUmdvUVdCbWU0aWhRMGlvVEJabFJPV3V2OWkwYlZsL2xCTEU3T3k3dTVPenM5UE03Sm9pRVY0Nlp0RTlLZzhlK2dNOGVPaVVsOExBTEFMcGJsRkVncGVTN1hsbnh0MFI3Y2NMTS9ONW54L2Y1M25mNFgyQkdsa3hUVDBrQVhuRHNaSjlVZW42NkpoVSt4RWhIRUVkd3FoVFZOdU1KQklEb01GanNXdHN2b2ZBdnl1dGUvdi9PdXJTdHBvSGhQMUE2RWVhMlNxdzd4ZlpDMWxxQkJDNVhzT0VZenJFOXpoYm52MHg1NVRIODY1OUtObEZ2RWg4UURVdEh2K2F1RVBOS1dtZ1JpUnV5UVppVWdITzYwWFY3K2NnUGZYTUdCNms3M0hxNlM2emUzd1dadEpLZHo5eEcvSG5OT3Z1NFpyRTh4bXROMGJjVE05YXh1b2Q5bGc0b1RteElZOURJNFllSC9DNXlVakZyL3Fhb3VsRWs5djZkbW13Wjl0K1M3bWNJQTRUSjhjTC9UeW1rWEk3cDNKRDF6d1c5S2xjVjl6bmQxWXh5ZXNlbzVnNVUzZi9GL1VXZW9WUjZHRFFZTkRiZ0lRaytoQkZLMHhZS0NCREhvMGlOTEl5TjhZaXRqRytaNlNPUklBbDhxOVR6cnFiY3h0Rnl1WlpJNGpHTWROU1VaRGtEL0pYZVZWK0tzL0pYMmJEeGVhcVo4YTZxYW5MRDc2VExxKzhyZXQ3L1o0OGZaWHFSc2lySTB2V2ZHVk5kcURUUUhjWll6WmNWZUkxMlAzNFptQ1ZMRkNwRlNsWGFkeXRWSEo5TnIwamdXcC8yajJLWFpwZWJLcldXaFVYYnF6VUwwM3YyS3ZDcmxXeHlxcDJ6cXR4d1h3bUhoVlBpakd4UXp3SFNid2tkb29YeFc2YW5SY0hLaG5EcEtKaHdsV3lvVkNXZ1VueW1qdittUmNMNzZ5NW82R1BHY3pTVkltZi80UlZ5R2c2Q3h6UmY3ai9jL0I3eGFPeEl2RENCZzZmcnRvMmt1NGRJalF1VjIzT0ZlRENON29QM2xadHpYUWVEajBCRnM2b1JhdmtTd3ZDRzRwbWR4dys2U3FZazVhV3pUbFN1eXlmbFNKMEpURXBacWh0TFpLaTY1THJzaVdMMmN3cXNYUWI3TXlwZGsrbG5uYWw1bE81dkVIbnIvWVJzUFd3WFA3NXJGemVlazQ5ckFFdjlkL0F2UDFGR05VWmlnQUFBQWx3U0ZsekFBQU93d0FBRHNNQngyK29aQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJSFl6TGpVdU5ENk56SFlBQUFFcVNVUkJWRWhMeFpZeERvSkFFRVdwU0Vnb0xMa0VWL0VNdEJ5QWlvSXJrSmpZY2dEUFlHWHJHYWpzTFV4czhYK3phOVlOdTR1NGppUS8wZDNsUDJka2hrbVNCZGMwVFJtMGhYYlFFVG9yOFRQWHVKY3RzUElmZ1VrQjdhRTdGTHA0aG1lTFZXRGMyRUszRUdWbW4vZTBpNkVxZlljVklQc1dldmpUakFNcGRJb0EweGIwU3AzUlluT0lDTk5Xd3l3UXU5VVBZTnF5ZW9OaU5ZY3VIaUFqM3lpWldYQ3QyMWIwemw5UWZHbDgwZGtwMFdkZDZ3NnZ4Z1NPQXNEeENRU29EUDEza1NJa3BpU3dGZ1RXQlBhQ3dKN0FZTzFGVE9ud0Y2QjRTc1VmR3RteVVMVW9WL2dLK0dscnU3S1V2bWx0b2ViZGFYTndPcU51WGV2KzVxMmlsSHM5R2I4KzJBUkNYV2xtZi80RnJLS1VIVEVVbERPb3pCQmxQbldBeW95SkZsUnVFTGJBMFViOUIrSkFJVkZpR2hXY0FBQUFBRWxGVGtTdVFtQ0NdXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9wbGF5LnBuZzwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJ3QUFBQWNDQVlBQUFCeURkK1VBQUFBQkdkQlRVRUFBTmpyOVJ3VXFnQUFBQ0JqU0ZKTkFBQ0hEd0FBakEwQUFQbVRBQUNFNVFBQWU0SUFBT3QxQUFBL3RBQUFJbGgxYTE2Y0FBQUMwV2xEUTFCSlEwTWdVSEp2Wm1sc1pRQUFPTXVObE05TEZHRVl4Nyt6alJnb1FXQm1lNGloUTBpb1RCWmxST1d1djlpMGJWbC9sQkxFN095N3U1T3pzOVBNN0pvaUVWNDZadEU5S2c4ZStnTThlT2lVbDhMQUxBTHBibEZFZ3BlUzdYbG54dDBSN2NjTE0vTjVueC9mNTNuZjRYMkJHbGt4VFQwa0FYbkRzWko5VWVuNjZKaFUreEVoSEVFZHdxaFRWTnVNSkJJRG9NRmpzV3Rzdm9mQXZ5dXRlL3YvT3VyU3Rwb0hoUDFBNkVlYTJTcXc3eGZaQzFscUJCQzVYc09FWXpyRTl6aGJudjB4NTVUSDg2NTlLTmxGdkVoOFFEVXRIdithdUVQTktXbWdSaVJ1eVFaaVVnSE82MFhWNytjZ1BmWE1HQjZrNzNIcTZTNnplM3dXWnRKS2R6OXhHL0huTk92dTRackU4eG10TjBiY1RNOWF4dW9kOWxnNG9UbXhJWTlESTRZZUgvQzV5VWpGci9xYW91bEVrOXY2ZG1td1o5dCtTN21jSUE0VEo4Y0wvVHlta1hJN3AzSkQxendXOUtsY1Y5em5kMVl4eWVzZW81ZzVVM2YvRi9VV2VvVlI2R0RRWU5EYmdJUWsraEJGSzB4WUtDQkRIbzBpTkxJeU44WWl0akcrWjZTT1JJQWw4cTlUenJxYmN4dEZ5dVpaSTRqR01kTlNVWkRrRC9KWGVWVitLcy9KWDJiRHhlYXFaOGE2cWFuTEQ3NlRMcSs4cmV0Ny9aNDhmWlhxUnNpckkwdldmR1ZOZHFEVFFIY1pZelpjVmVJMTJQMzRabUNWTEZDcEZTbFhhZHl0VkhKOU5yMGpnV3AvMmoyS1hacGViS3JXV2hVWGJxelVMMDN2Mkt2Q3JsV3h5cXAyenF0eHdYd21IaFZQaWpHeFF6d0hTYndrZG9vWHhXNmFuUmNIS2huRHBLSmh3bFd5b1ZDV2dVbnltanYrbVJjTDc2eTVvNkdQR2N6U1ZJbWYvNFJWeUdnNkN4elJmN2ovYy9CN3hhT3hJdkRDQmc2ZnJ0bzJrdTRkSWpRdVYyM09GZURDTjdvUDNsWnR6WFFlRGowQkZzNm9SYXZrU3d2Q0c0cG1keHcrNlNxWWs1YVd6VGxTdXl5ZmxTSjBKVEVwWnFodExaS2k2NUxyc2lXTDJjd3FzWFFiN015cGRrK2xubmFsNWxPNXZFSG5yL1lSc1BXd1hQNzVyRnplZWs0OXJBRXY5ZC9BdlAxRkdOVVppZ0FBQUFsd1NGbHpBQUFPd3dBQURzTUJ4MitvWkFBQUFCbDBSVmgwVTI5bWRIZGhjbVVBVUdGcGJuUXVUa1ZVSUhZekxqVXVORDZOekhZQUFBRWFTVVJCVkVoTHhaYk5DWU5BRUlVOUNRRUxzQWw3U0FXcHdhc0ZlTElKSVpDckJlU1FDbkxLTlRWNFNnZUJYTTE3TWh1TStET3VaaUk4VUhmbWZjeXlQeE1FaXFkcG1oMTBnSTdRRmJxTCtNNS9ITnNwcktaRFlCSkRKK2dGelQyTVlXenNCVVppQVQzbktBUGp6Q25VVUptK3N3ZW9uMEtQNldsR1FBamROb0E1QzNxRm85VmlzTm9RNXF5cVFTQkcweC9BbkdYNkJjWGZDSHBvZ0V6MG1BbDZSeDhvUG5JTmpERXV5UU9hZDRIMVVxQkhwWFVMQkNqUndyb1ZlbGFhRUppdEFTNnNOQ093WEFzVTZFWGhVeTVlY1dPYkdMQzlBbGo5QldnK3BlYUx4blpieUFxejIvZ0NORC9hYkE5dnFkTHVldkk4RnhYN3ZBMFp2b0NsU3RzV1E2RHNRVzJhcU80NUNhaE5tOWlEMmpYQ1BmQm1yZjRiWis3YUJ6QzFNS1FBQUFBQVNVVk9SSzVDWUlJPV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L3ByZXYucG5nPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQndBQUFBY0NBWUFBQUJ5RGQrVUFBQUFCR2RCVFVFQUFOanI5UndVcWdBQUFDQmpTRkpOQUFDSER3QUFqQTBBQVBtVEFBQ0U1UUFBZTRJQUFPdDFBQUEvdEFBQUlsaDFhMTZjQUFBQzBXbERRMUJKUTBNZ1VISnZabWxzWlFBQU9NdU5sTTlMRkdFWXg3K3pqUmdvUVdCbWU0aWhRMGlvVEJabFJPV3V2OWkwYlZsL2xCTEU3T3k3dTVPenM5UE03Sm9pRVY0Nlp0RTlLZzhlK2dNOGVPaVVsOExBTEFMcGJsRkVncGVTN1hsbnh0MFI3Y2NMTS9ONW54L2Y1M25mNFgyQkdsa3hUVDBrQVhuRHNaSjlVZW42NkpoVSt4RWhIRUVkd3FoVFZOdU1KQklEb01GanNXdHN2b2ZBdnl1dGUvdi9PdXJTdHBvSGhQMUE2RWVhMlNxdzd4ZlpDMWxxQkJDNVhzT0VZenJFOXpoYm52MHg1NVRIODY1OUtObEZ2RWg4UURVdEh2K2F1RVBOS1dtZ1JpUnV5UVppVWdITzYwWFY3K2NnUGZYTUdCNms3M0hxNlM2emUzd1dadEpLZHo5eEcvSG5OT3Z1NFpyRTh4bXROMGJjVE05YXh1b2Q5bGc0b1RteElZOURJNFllSC9DNXlVakZyL3Fhb3VsRWs5djZkbW13Wjl0K1M3bWNJQTRUSjhjTC9UeW1rWEk3cDNKRDF6d1c5S2xjVjl6bmQxWXh5ZXNlbzVnNVUzZi9GL1VXZW9WUjZHRFFZTkRiZ0lRaytoQkZLMHhZS0NCREhvMGlOTEl5TjhZaXRqRytaNlNPUklBbDhxOVR6cnFiY3h0Rnl1WlpJNGpHTWROU1VaRGtEL0pYZVZWK0tzL0pYMmJEeGVhcVo4YTZxYW5MRDc2VExxKzhyZXQ3L1o0OGZaWHFSc2lySTB2V2ZHVk5kcURUUUhjWll6WmNWZUkxMlAzNFptQ1ZMRkNwRlNsWGFkeXRWSEo5TnIwamdXcC8yajJLWFpwZWJLcldXaFVYYnF6VUwwM3YyS3ZDcmxXeHlxcDJ6cXR4d1h3bUhoVlBpakd4UXp3SFNid2tkb29YeFc2YW5SY0hLaG5EcEtKaHdsV3lvVkNXZ1VueW1qdittUmNMNzZ5NW82R1BHY3pTVkltZi80UlZ5R2c2Q3h6UmY3ai9jL0I3eGFPeEl2RENCZzZmcnRvMmt1NGRJalF1VjIzT0ZlRENON29QM2xadHpYUWVEajBCRnM2b1JhdmtTd3ZDRzRwbWR4dys2U3FZazVhV3pUbFN1eXlmbFNKMEpURXBacWh0TFpLaTY1THJzaVdMMmN3cXNYUWI3TXlwZGsrbG5uYWw1bE81dkVIbnIvWVJzUFd3WFA3NXJGemVlazQ5ckFFdjlkL0F2UDFGR05VWmlnQUFBQWx3U0ZsekFBQU93d0FBRHNNQngyK29aQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFVR0ZwYm5RdVRrVlVJSFl6TGpVdU5ENk56SFlBQUFFbFNVUkJWRWhMeFphOURZTXdFSVdwa0pBb0tGbUNWVElETFFPa1lnbWtTR2taSURPa1Nwc1pxTEpCcExUa3ZjaU93TEt4VGF5THBTY0Y3dWVMYlh5K0xBc1k4endYMEFFNlFWZm9yc1RmZkVkYkVaQnEyd1ZKYXVnTXZTRGZvQTk5NjExZ0JQYlEwMGV4MkJuVEIwUFY4bDEyZ013UTV0aGVaamprMEMwQlRLZGdydHc1V3hqSGhEQ2RhclFDWVcwRFlSWDhxSmpScnFDSUxLR0hMOE15S0JMSzNPVTNIZy9IR0JnREk0Rk1mMXdDcHkyZ2JROThmOUJpbno1NVlHZ0VZQnJSRU5pNWdJbG10a3pmRVRqWWdNR1Z3dUdvOXRnOFpnT0I1a3Z5cTErQmpnOXIvQXRRZkVuRlB4clpZNkUyVis3Z0s2QjRhWk10M21xV2N0ZVRQdVNPSXJDalRxOUM3QmV3bXFWc2k2R2c3RUZsbWlqalJwZHBFdzJvWENOc2dKTzErbThKd1BMa293T1c0QUFBQUFCSlJVNUVya0pnZ2c9PV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L3NvY2lhbHNwcml0ZS5wbmc8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFLQUFBQUE0Q0FZQUFBQjYrdk1EQUFBQUJHZEJUVUVBQUxHUEMveGhCUUFBQUFsd1NGbHpBQUFPd2dBQURzSUJGU2hLZ0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBVUdGcGJuUXVUa1ZVSUhZekxqVXVORDZOekhZQUFDelFTVVJCVkhoZTFYMTNWRlhYOWpWL2ZLOGtMM2twSmpFbW1rUmpieWhZa0NKSWJ3clN4WWE5MTloN2I5aEZFY1NDRmJzaWlBVkZCRUVFYVNKaTR5SklsU0xDQlJGMGZtdGRPSmZiS0JwL0R0OGVZNDV6enQ1cno4azlkN0ZQM2ZPcXFkVVViZHZGYnZyT3EwUm13emZEY3RSMkRCaTc2Nk9DT1ptYk5WaEwwQldXbDMvODJTZjRsNThybzl2OGhzU09MZkZJdmZWSEJYTXk5L1d1djFmZWNPM3FvNmcvNVdEMDVERjdJNSs3ZVlkWERmTzZoZmVHZHpoRzdybFZMMGI3aEZlTjJ4dVpQdG4zem1SRi9ZaWVIZHlpZGJ1STdwbjF3UDhsV0lPMUZQVi9HSHZNN2M5WjUwVzkxMTZId2RZd1dPeU8rcWhnVHVabURkYVMwOWUxWDdaLzhMUTkySGY4RHE2R1BzYlZtMDhRL0pIQm5Nek5Ha05uN0FWckNuL0VwWithUHI3WHR6ZEtkbTdDNnlzQnFMaDZFUlhYZ2o0dWlKTzVXZU9CZ1JhdW1iVjVMT2lQM1hmNzNDQ2YyKzhPeHVZaThya1k4VGxsL3lkZ2J0WndKUzNXRlBSdmRtdXovNTVsYjRqbWpFWFdibmRrNy9kQXpyRjlIeFhNeWR5c3dWcXNLZWovT3Zuay9vR2VrZkNMejBORVdpa2luNGx4KzFuWlJ3VnpNamRyT1ByY0FXdEs5UHZZTG5Kem51eUYvWDdSMk9nZGhta3JBekI2NFZtNC9uWGlvNEk1bVpzMVdNdHBraWRZTytDSHBqNUoyaG9vOWQ2QjBnMHJVRHpKRFMrSE82REl3ZnlqZ2ptWm16VllLMEdyTzY0NXRmT1o3QnMxMmNrcjR0M0orNFhZRlBrQ1V5OWxZbHpnOC84VE1EZHJuRWdxaExQM3JYZVREa1JORHRObzR4WnZxZ25Sa21sSVd6c1BqeWxCSGswZmpwU0pMaDhWek1uY3JNRmFyTW5hUDR3NTZtWkx5WGNpUGg4N293b3dPemdiRTRNeU1kei8rVWNGY3pJM2E3Q1cxWTViWUcyMXZvNHJSSXZjQXpGMVJRQ2NaeHovSkdBdDFtVHRpei8vVkprL2ZSd2x4d2dVMnBsK0VyQVdhMTd1OUV2bGNLL3dyQlZYUlpnU1JEdjgzTE5QQXRaaXpkSGU0ZW0zZXJZVFBYQ3p3ZU5abzVFeXp1bVRnTFZZazdWYnpqZ2pXbk0xRFhPdVpHSG91ZlJQQXRaaVRkWldNeHE4QVpPWG5vUFQ5R09mRkt6SjJ1Ri8vSUtDMFlOUllHc2l3Y3V4UTFDNjNSMWxmZ2ZmQzRXRGJhVWNBaGZYdlZvMFN3TG1GZW9sUzlKa2JhZnRJVytuQjZaaDZKbFBDOVljdml1MDZvNU9SenlneEhzdzF1SFRnalJaVzJQNUpjd0tmQWJYTTZyaGRFSUVzd01wRXZCNlhYSHZXOCthcksxbVBHUWpuS2NkaGNQVVR3dldaTzNiclg1RnZvMEpTcmR0UUZYcUU3eHZlWnViZzVmVHhxRmdnTEVTaWhmOEphVXJPK1lyMTg2YXJEMXc2elVNUFpVSzExTzBjejhoaHAwV1ljaXVVRVJxdGNQOUVUWklIald3UVNSUTNIVVhjd1E1bU9DVVRUOGxCTmdiSTN5d0plNk50RzJRaXpWWlcydE5NSWFlVE1XZ2t5SWw2SGttd21CSE5OWmVUWlhBeGljT2hudVNWTWFxNmw5ZkhXdXl0cHJ4ME0yd20zemtiMlB3WDhmaEZ4aURwRWRwZVBMc3VSSlVhYkIyZks4dWNvbFhmdTRVaXVmUHhLdFZpL0U2K0pMS2ZLeUlERWZaRVY4Nmw5dUpBdWNCeUxjMlVnbm1FVXJaVVYvNW1QNUd1UHRuQzlodXVncm5ZNC9oY3Z6cDM4S2dFMDh4NDJJNlpsM0trSHloamVFYnZETUV0M3ExcVU2V0VaUTBkU0JoK0FBRU81cmk0bWdYUFBZL2lieDdjU3IzUzFIcVk4VHY4VUNBYTMrRVVxTFd4OG1hckszbmZoM094MU9WWUhmMHNTVGhGQXNuSkxlcDZ2TytkYXl0WmpoNEkyd25IdjVibUxEc0xCSWVwQ0k5aTBhajRoS1Vpc3RRVlZVbEIxVWFySjIxZEliME14Wk5Ib044eTM1eTRMcDNwU1Z5KzRHM1ZjVXE5bjA1dDVaYmZPU0FFbmQweTE4eFlOTVZPQng1Qk1kalQrUXcvbndhWENrcEZldFZiVys1bFlOOGNXVnRzcjk1QzcvRUFyajRQY1VjU3NpQWxDSkpRaXIyZGZHNGpqRE5QNUZNNTJQSmxHU3FFTzFxaWN1am5aRVdITlRvZzhNYjJqLzNqKzdIWlRzajNCdldYelUzYWJLMjd2cGdsWi9SeUR0Sk11b3BGcTdqdHNic2w0WmlXRnZOd05VZC9TY2MrbUR3dWVPdDJBZklMeXhTU2pyWkpGU2x3ZG81SzJkTFBxUDQwSDY4TURkUWlhS0pvNVdTOEcxT2RwM3hBcy9MT2RPbCswOThXSm4vRHAwRDl0OXdHWGFISHNMK3lHTTVCRDU4aWFpTVVob2RueWkxeWNadW8rU3JxNVJYdnBVMGJZL0lsaVN6b29iejltRGM3TjRTeVp3a1E2MlZFRDNJSEtIenBvQVRTckc4ZVpFTGNYS2lGS3IraHN6SW13Z2RTb210Z3BzMVdWdDc3VlhZSFg2c2hINWU5MVFtNEpHWUxIQ2Jxajd2VzhmYWFuMEhiWUQxK0lNZmpLMitONUNUWDFCdjhuRWlxdEpnN2V5YUViQmdxRFB5VFBYclJJbm5EcVY5L01wOXJWejhtNFE0eUtMeTZXTnBueXBLV01YMnlOK2F3V3A5RUd3UFBzQkFTa0paSkdWWGYrbjNjc1FZY2ZLSlVqdkhPaDE5aEZldnErb2RtWEtMeTVId3ZCZ0xMcWNyY1RodHZZcVFyci9qL2hBcjNLZHpOMWtrdWxvZ2pKSlBzWERTcGEyYXF4U2ZNc1lSZWFjUG8wcGNLdGNsamU1LzNuSXdWb3BuVGRidXZmb3lCaHg4cUFUTC9RK2d2LzJPa2o3WGNadXFQdTlieDlwcWVzN3JZVEhXOTRNUkVaZlNZUEp4QXFyU1lPM01CZFU3T2MrNGI0UGdKSkl0NVplRDVQbzAraGhWRTNpcitjK3dYSHNSQXc0a3c4WTNSUTUzMGdxbGRNWGxWZkNnVWN5T3Zpalp1TmtCb2dZbFg5TW91T29TblUvUlZhU2lodU9XSzdqV3FRWHVEN0xBZlRwbms4V05RVlpLSTEvZXlVTktjWXI5bnN5ZHFKU0VkemV0VnU1SG1xemRjK1VsV05IZnBncGFPK0l3WUUrczlDS0VrNC9yNm9wLzMzcldWdE4xV2dlek1RYytHTGtxUmovZmM3R040bVB0akRrVEpWOWlycUZ1Z3hDZk9pSDNoYitKajVYcjAyQTJLQVNFL2ZJVHpOY0V3bXIvZlZnZmVDQ0YxZjVrN0x5aGZFV2VWL29HZmduNW1FbUpaM3N3QmZQOFV4cVVQQkNhQXNOTk4rVDRCUzM3elpkeHRjT3ZTSEkyUTVLVHFSUUpqaVlRWFE2VTQ4NDdjVWpTem0yQkZybzRZYUtGczJiYWlLRXJYOW0rdk02eHN1Vk5TUWtpQnhyS3g1RW1hMnN1dXdpTGZROVVvdjNhMjJpMkpCVC9uUk1zQWE5ekhhUEZzakE1L0xFeUhBeXU1Nlg2cG1pWTdMbGZKemRyc3JhYWpzTWFtSTdhLzBGd25uRVV4YTlLbEViQUlYTk9OSXFQdFovTkhDZlpWemtHT2cyaWFORTh1UjFiRVJkYmI1L0M2Wk9sOGFVSDlpckYzbXoySTh4V1g0REYzbnV3M0hkZkR0WWU0UkM5a0QrY3lZcFh2bjJIb3JJM0RTYmd2bHNpSlc1QnkyN2pSVnh1MXd6M0tLbnUwV0ZTUUJTTmZyS2xOQ2xlMmhaa1o0SzgrTHVTNXRLY0xFUk9kcFByeXh6SncyMlYvcTZIYXhiSng1RW1hM2RmR2dBem4vc3EwWHpwVFNVZXJsTlZINUNVSnhmTDJ6eDZhbXlPcnBPZnRkWDYySyttWk5rSDQ1RWZockx5Y3FVRWJBd1hhN0syYU9vb3lSK2VQM0k0Y3ZwcTE0dkNxWk9VRTdDZVByTHhKZnQ5bExoRG12NEEwNVgrTVBOT2hEbmQzNUxGM2ZSaUpHWVVOWmhnRFFWc3ZKYXF4QzNvREhTL2lLQTJQK09lUFYydDJobEtrYnB0clJ4dDZ1SVprcll3YXowVVBYa28xMVowTzB5dXI4RERTU3RiY3YxODVlTklrN1hWRi9uRGhLNXFWZUY5RXJDdS9URCsrSDEwMzBpam9Rb04xbGJyYmJjS1pwUU1obTU3UHdpS3QxdDR1ekZjck1uYXFSUGRKSCs3K0lRZnNuWDcxSXVDS2RXSGE2RTAxRWMydm1TZmp6eTNuamF1LzlRRXhpdk93WGgzQWt6b3lrNkE4ZTVFSEw4cmY3N1pVS0xWMVQ3MmVMSWN0NnlPemZvQUJQN1pGSWwwZUV5a0c4c0Njbzhka05KVjVHWkw2MU8zckZHU0thVjdncko5VlhGd0orYVVpeU5OMXU2NjhEeDkva1FZMFUxblJmeTZSSGtFNURwVjlmWHRud0hlc1REWW1TREh6NXFzcmRiTGRpVXNSdStId2JBOWpVSmszRDNJUWxVQ0tzYnd0aUkvYTdMMkUzcEV4dVVkbmFma21Cb2pTN3QzblNqZXVrWCt2OXJldHQ3NC9Fa1RwUEVsZS9mSXhXYnI2K0xxRDkvRGFQbFptSGpHMDg3aEhWU0RYZkVZc1AwbWlzUVZINXAza240RkplWEVxY0JkbzJIcWxZZ0JheS9nd2g4LzRwNHRKV0IvZlNseTZSNmVVRW9US2NGcTJtVHJWYlhYeGNHeGhYUWZVYmFkTlZtNzgveHpzS0RrTTZRRVVVUnpPdWRUTEZ5bnFyNitIUlgydEJDZDE5Mlc0MmROMWxiclliTUMxblFSMG5mb25rYWg0czBiZkFnVStWbVR0UitOSENUOTI4c0NBNUNsMWF0T1ZOeXRQdmZoOG1vUEpWUTlzZHlXTjNRSXVBK2phT1Z5dWZoc2c3NjQwdVE3OUZ0eUdxYVVKUDEyeWtQWC9TYUdla2NnTlUvNUhseGpzL0xJclNkS3ZJS09HU1dnOVdwLytQLzJBNDFNaGtpdzBwTWk1OGcrcVVRaG5lOEpiYkwxUWtBaDNXYVI3U3VzcHgzMGtmc3p1YTlzSEd1eWRxZTVaMkMxSzRFZXVjVXI0WGNWNTRCY3A2citaWGtsTmdTTFlMTW5EcmRTaTVSMkVmZVIxV0JOMWxiVDdMOE1ObU1QUUhlSVY2TlEvdm8xUGdTSy9LekoyaWxESGVYK1dISEFCV1QyNnFtRW9oWExwWEhpQzZwalZQV3JxeTdiMEFDWHZ2OFdCb3RQdzl3empuWk9IUFJsMEhmN1hRemNFWTRyU1Zrb2ZWMzdsS094eWZlbTZpMXM2SlVqV1U3WmRRczY3RnV0T28rekxiNlhIQm9UTEhTa3lEbTh0M1lFek1wRUJGM3hjcnRvaGZ4RkdBZHhuV3hmWVQwM0xFUStBWWxUTm80MVdidmo3RlBvVDhtZ3Z5MVdDYTJYaHl0OVhLNVRWZDlsYlFSNnV0K1JjRmg2eHFyc0o2dkJtcXl0MXQxNktRYU84NFcyNis1R1FTd1c0ME9neU0rYXJCMnUxVVBwajYyNEc0TVg0OFloczBjUFpQVXp3TXRObTJwSFBpOHZTZjNmUmJheEVRSy8vUWI2aTA3U0lTZ09lcFJ3dXR2a29iUDVEaUtlRmpRMjUrVGl2SVB2UTJkemxCS25vR0hoRlErTEZXZHgrcGZ2a0RpZ0g3MmYxMGNLMGJLNWNseVJVOGRJMmhLR3lGL2RWdEZwaTJ3L1lmMjJjVytVVXVMS2xpZXpKc3JGc2lacmQvanJKR3hvOU5mYmNsY0o3VmJlVXZyc1hGZFh2Y0RSVUR2SHNTWnJxNmxiTG9FRFBRblJHclM3VVNncEtjV0hRSkdmTlZrNzRKdi9vbURXTEpTSHlQL0hxdnJXQzVjdXhYTU5qWStDYkZOVGlYYmZCU2ZvUHpZT09sdGpvTDFGSGxvYmJxSHY2a3U0ZnYvOUxraVMwZ3VndGZLeUVwOHN2NVZYQXN5WG44SEpadC9RdVZrL3hGSFNDRWkwTVVKVnlTdnBMc2k5ZTBmU2RtL01ZTG5ka25mNm1Gdy9vWCs0bTdQUzdwUGw1M1hXWk8xMjlBN29RSTk0Nkd5S1VVS25WUkZLUEZ4WFY3M0EwVkE3eDdFbWE2dDF0VmdFNTRtSDBOTjUxd2VodVBnVkZORVlMdFprYmYvL2ZvMHNNM05rZE9zdVFkN28wZlN5NkF5VUhENGk5K0hmcEtSSVk0VFl2N05rVGRiV20zY2MxblRJNkVPam5kWW1aV2l1Q0VhM0JlZmh1Q01FS1Zrdkd4d04wL05MWUxUcUFucHZ2SzJTVDlEbzd4VUgwMlduY0tMcGY1Rm9UUW5ZcjZjY1V1a2RSdG5DN1VreWIvZHdHMjhyOXJ1aFMvdnh4alc1dmdXWExpakZzU1pydDZWbitRNGVjZEIyajFhQytwcElwYy9MZFhYVkN4d050WE1jYTdLMldpZnpSWENkZEJnYVRycytDSVZGUlZCRVk3aFlrN1hQZmYwVnNpd3NrZEcxbXh5S1BUM2xQbnhWWnFaU2pHS2Y5OWxtVGRiV25ldUgvcFNBdlRkRzBUbU1Na3gzM3NXS2dCUTh6VzM0WWlRKzdRWDZMamtIelRVM1ZYTEo4ZytnUTdESjBwUHcrL0ZyU2tCRHhPbjNVRUxLU0ZlVXhNVWc3K1JSU1Z1YTMyRzVmWExmYXlkdWFIZkRIVDFOUk9wcTRLcVdPaUtYTGxCS21zZFR4eWx4c3lacnQ2YjNRQjEzeEVKcmZaUVNldENWcTJMaHVycnFCWTZHMmptT05WbGJyYjNKZkF5ZVJLT1IvZllQUW41QkFSVFJHQzdXWk8wei82RUV0T3FQOU03cWNpamVKWitBdkNPSzFtOVFpbFBzMTlodDFtUnRuVGxIWWJNN0ZqMDNSRUZ6L1cwSjdIMFNjRFdsQUxtdkduY2I1bFg1RzdqN3g2UHpYMzdvdGpKRXlpUHdxVnJhZU1mRGVORnhIRzN5RlJJdERSR3JvMWt2b3JTN296RGxnVncrVkx4NmhjakY4M0hlZ200cU93M0VQVThQcFlUSk8zNUVKUzlyc25ZcmVoZlVtWkpCa3g2dktZTDNpV0xodXJycWhmNE50WE1jYTdLMldpdTlxWEFjdVJOdFRaZDlFSEx6WGtBUmplRmlUZFkrOWVWL2tEWEFGczg2ZFpGRDNwUnBLZzkzK1FzV0tjVXE5bTNNTm11eWRwOVpSekNRRWxDVC9yTzdyNDJVb051cW05QllGWW9wUnhNUmxKaU52RmZsU24rTG1LNk1iejNNd2JLVE1kQ2NlNHBPcUU5RGZlVk5LWWZBVmRkeUlDV2cwVUkvSFA3dVA1U0FSb2p0MDcxZTNMR3hhUER3cnhoUTlpZ0ZDU1o5VmZLeUptdi9UcWRDcnBRTTNWWkhLS0VYSFNvVkM5ZlZWUzl3Tk5UT2NhekoybXA2WXoyeGNHOGliTmZjK2lCazUrUkNFWTNoWWszV1B2SEZsOGl5dGNlekRwMlZVQjZsL0RvUTc1RFNzK2VRMGF1UHlqNnFlRlRWc1NacmEvMTFHUFplc2VpK0pnTHFxMjlWWTFVNE9pKytnZzV6enFQOXJETm9UOG5WaXg0Ym1hNEpndVc2UzlCYjZrL25MMzVvTyswWTJzODhoVTZMTHRmMkZUZ2FXRHA0MCt2dDgvMXc4QnRPUUJQYzdkV3RYaVF0V1NpWEMva1h6dGVia0xuSERpUGVTSzlPVHRaazdlWVREbUlJSlVObnVycFZSQys2V0ZCS1FLcXJxMTdvMzFBN3g3RW1hNnRwT0cvQ3pJMTB0VGZ0d2djaE15c2JpbWdNRjJ1eXR0Ky92MENXblNOeWhyaWgrTUJCY05LOXBVTkxRNlVpK1FIU2UyZ2hyVzJuRHdKcnNuYXZtWWZnUUkrS09QRTYwMXNjU2xoeEU1MlczVUNucFNIb3VQUjZEVUlrZFoycFRXVWZWVHdLZFk1MHc5WmczakVjK1BwTEpGcVlJa1pUdlY1a1hndVd2eWloSnprUHg0NUN2djk1dklxSmxxQW81RHJTTjI2Z2MwcUxCdmxZazdWL0dYY0F3M2JjUlh1NnY2ZUkzblM3UkxGd1hWMzFRditHMmptT05WbGJUZE41STJadERJUGhqSUFQU3NDTTUzUnhvSUNHRXREa3IwQ0pKbXVmYTlZTTVjbkowczlaK2Z3NWl2ZlRCS0pWYTVFOWVEaUt0bm1nNVBSWmxmbklTZmhNZ3laMHQrNzRYa2pyU09lYkF4MXg4Ri8vUnM4WnZuRHl2b3N1SzhQUWNmbk5UNEpPbExqT1BuVGpkKzVoN1AvcUM5dzFNVUtNQmlWZ3R5NHFjYXRyWjFTOEtwYnVBekhkRWFncnRqSDFkelc3U3pSWnUrbW92UmkrOVE3YUxRL0RuMHZsb1VFdkVmVGVTaGRvTXVDNnV1cUYvZzIxZDFvUkx0RmtiYlVlenU2WXZTa1VBeGRjL3FBRWZKYWVBVVUwbElDc3hacXNIZEdESnFYVERxM01lSTRYcytkRDlHZDdsY2kwdGdVbm5HTGhCSzJyVDEzMXp6UzE4SlFTMEljU1VPc3YzN2NPbm5mb3NCdUdka3REUHdsWWl6VU41eDJwMnZmbHZ4RmwyQSt4OVBRbnBrdG5sYmhuYnkvM3NYTU9IYW96dGk0TzJYcldZazNXYnVLMkI4TTNSNkRIcWx2NG5WNDArQlJnTGRaa2JiVmVUbXRGbzVkZXdOUU5ZUitVZ0ttaVoxQkVRd25JV3F6SjJrRTllbFErbURRWldVNnVTRzNacmw2a2RlMkprcE5uNUw2TXQzUWZzcUYraXUzUHJXd1JwYWVQVGQ4M3FUUmFmQ0xMY00wVm1OUGJ2bTBXMy9na1lDM1d0RngrT24zM3YvOHR1cWl1amdSREkwUjM3S1FTeWNPSHkzM20rM2IyZGNiV3hTRmJ6MXFzeWRyZkR2RVVXUzBMZ2ozZEEyMis2TVluQVd1eEptdXI5Unl3ME0xZ3BDZm0wbHU3MCttOHpIN2hWWmpOdXRqb1pIeWFLb0lpVkNXZzRjeEFDVGRyc0JacnN2YUtiaG8rdnQ4MVFiS3RBNTViMnlGTlF3dXBiYnZnNmU5dDY4U3JrNmZsdnBEbkZqYjF4ak5YYXF1T0VtN1dZSzFEcExtd2MxY2ZwMDJYSjdjWjcvUE9jZGR0V0d5UFFwZmxvV2k5aUV4MEZuNWNNQ2R6c3dacnNTWnI3L3pYdjl6MmZmTU53dlVOa0dob2pGZ05HZ2s3ZFVWMHU0NVNKRTJvZlEreWdrNVJaTnNhdXg1REYzbk16UnFzeFpxcy9ZM0xUcmNXby9kaDZJYWJjS0RFNkU2SHgxYUxROUYwUWNoSFJmT0ZOeVRjck1GYXJNbmFFbitZSGphTDkzTkNUQ1RMak9VN0k3RFNNd3FydldJYWhaemNQQ2hDVlYvbVpHN1c2RGZLazk2RVdTdzF4MW5lc3RYamc5ODN3ZTEreG5qcU9nenBRMFlnZTlqb09wRTdmaXJlMFROcG9SU3NJVU9mZXVLNWpUbVptelVPa0JackN1WThWcXY4ejdVWnQrZWRNVTJTY2ZXNkE3ZDljWERiSC85eFFaek16UnFzeFpxQy9vNS8vbXYvWGtxSUlBMU5SSnRaSXM2eVA1TDYyMHFSZDlSUCtsbDVYYmF0c2V2TXlkeXN3VnFzS2VoL00yam4vdWFqOThLYVJxV3hXeUl4Zm5zMEpuckVmbFF3SjNPelJuTTY5Mk5OT1llc0h2MFh1UFYwV0MzU2RGeVA3bzdyb083UU9Cdzljd0dLVU5XWE9abWJOVmhMMFI1c2ZzY3VQdXUvL2E1eTEvLzdCN3dJZXh2QXhWOWJJT1RQTmhJYytjL1hEY1l6SjNPekJtc3A2anU0WDVwc3NNQXZTM1BLM3JlZHhudWp3N2lQQytaa2J0WmdMVVg5N2YvNHA1dkhQLzRwOHZ6SFA2RUkzNi8vaTVDMjdYQ3RkUnQ0MDNtcnFwakcxckVHYXlucWYrdmk0VVpKSWZwNjhDNThOY1FUWHczZC9YRkJuTXpOR3F3bHA5OTd3Q0p6MnpGYjRpY3NQbEkyZGJtZmVQcUtFK0pwRFlCakZNRjltWU81dEd3V21iT0kvMDgvZmhuOFowdVgyMzE2eHFWWUdVTmthNFowT3d1azI5Y0RiaGRpWk5aRnR1WmdEdWE2M3JxbEMzT3p4c3dqc1c3akR0ekpIYnpuOW1zWHI5c1Zmd2ZNd1Z6TUtleWtNSTIydHJHR0dxSUhkbjNwOVRGclBDUUhndzhGYzhTWjlCUXhwOERmWk93eDh6NHJMc2U3N1k4cG0zUWlVVHp0ZEpKNDJxbjNCUFdaZERKUnpCeDlWbHlKLzJIOGNjbisvK3hMei80TFRjZk05WDEzOEdRc0RwNkpoK2VSYUhnY2pNTE9RKzhIN3NOOW1lUGdxVmlNbWVmN3JxZjFmTlBnbHIrNVBMQ3h5SDY1ZGluNXY2eEhxVHZabzYybjlmWEwzaC9jbHppWWl6bXZFdmVNdzNmZEpoeU5yZkluOTRFRENZWHdpZnQ3WUE3bVlrN21EbFZ2Ylh0L29EN1MxODVIaHNjNlBOdXdtQ3pPRm53d21DTjlEYzNySlU3bS9tNzBFZE1oUG5mZW5VbCtpZE1wcFRpVVVJeDk4Y1U0SUFQZWJneTRMM09jZS9BS1EvYmVlZmZ0cU1PbW4zMENXZ3pia0xpQ1p1aFBvS3RTZTNvNGJEUHhDTGtrSE1hQTl3VDM0YjdNd1Z6TXlkemg2aDNqOHFlTUpuZXF3U2h5c1VZaCtmNFYycHRWdzY1bXFiZ3V0Q3N1MlRPUU9KZ3JmL0pvTVBmb3ZaRzVHOE96TWNvL0EyNWtML1l4d0Z6TXlkeTNkVHFKSGswZGhvZFRoaUJsUE5tbmZRUXcxK09aSTJrazd5alNYQktZdURVaUZ6T3Y1TURsYkRvY1RqMkR3K2wwMk5PeS8vRTAyUEUyZ2Jmcmd4RG5jaVpkd3NWMklScUxBeE0vK3dRY01NYWpjdFQ4TTdDbEI4T081RmpsU0krWEdySnE0NWdCWk9kaFB1b0F6YWlyd2NqOWtqb0hhbU11NW1UdXVHNGRVRGpjaVJ5c3hrTHNzUm12TDU3SDYrdVg2MFQ1K1pOa1RqUWRCWlNjRWhzMWNyRXFIT1lBOFY1UGxLeGZnY0pCTnRYMXp2M0IzSTY3d2w2UEpGKy9qMjJ2eHB6TWZhZHZaNlJNY3NXRE1mYjFJb2E4Vm1RUlJ3NVY5ZlZKbVRnSXpHMjArV2JscE1CTU9KNU1nOHZwTkF3bW03U0JmcWt3b0ttU2xqUmgzbmhmTWh5T2l5VDFycWNiQm5NdzE2U0xtVEFtN3M4K0FjMUhiQmM3VFBXRC9aU2pqY0pBZW8zS2Nvd3ZwcTN5aDhlUk1PdzZFbzZkUjI5aTc2a0l6Tm9RQ091eEJ5VTh6TW5jeVdiNktEOTdFbTh6TThnYUl4YXZRNjZpOGtHUzNHMlVkL1NhZitXamgzZ1RHNE9TTFJ0UTRHaU5ndjVrdDFhRGwvUTZFWmZLZS9Fb0drVmVnbFNmVDNaczk3cTBoYzIyMElwQkVudXhqdys3WGVIbGQvcDFxOVBxTElHU0x0akpETmRuakVFeXpUcVRSYnlQQjRMSHVTSmlzRldkL1ptNzM5Wnc4V0JLTEJmeTNuTTVRYTVhdERUeVRzQ1JtRXpFWlJUalpHd1dET2oxZFJleVR4UGFxMlByQjNNeTkyZWZnQ2JEdDRrSFRqcmFLSGVzQWZRV3M4Vm9YN2o3aEVDVW5vazNsV1djRm9ScUU1NFRRUW5vTzNpUGhJczVtVHVIcHhKV1ZxTHNsQjhLM1Z4bzVMS1JKRkhaaWFPU2VpN3ZLaXBRN244R1JXT0dJWitUeThxd0d2VEtFQy9aQ1l2TG04UjRGSTRZSksxUDZ0d0cxbHV1VnpqNVBZRUFaMW9mYzA0azNaWnQ0M1cyVVR0SkZybVpyOTdnQlRsYVhYcjBFaU5PcDJMQjFlZFllaTFUcnAvdGpwdmx0L1c3VnJ0WHVaSEpqd3dpeURnb2lpWjdpMm5hWkgwbGpieXVRMm1pK0wzaFpFQWt4MkVENWphaUpPRmtZaWNwSjNMVE10dVhndG4rOG5OLy96cjNFR2I3eVNDUzJodHluQkxhSlluOHY1Q0FSc08yaWdkSXp2c2Fkc2d5b2NQdHpMWCt5QzE0VWJQUDMxSDJFTUFBamdVa1FNZlZXOExGbk14ZDZPdUppdHNSS0hDMXh3c3pjcjhTTU1BTXBmdjM0RjBaSnpFeDBMSjR5ZnhxeHl1S0tSeEo1NHpraXNWNHRhWjZRbElsdlY1VXZIaXV0UDZlUm1kWWJycGVJZXM2TmU5U09wNFZWV0QwR1pGS1Y2dHJUMnFmcVFxSlUwV2ZJWnNTY3NtVkRMSnFxM1hKR3JEdFJubUViaWR5cjJMbktockphaERoWkFJMi9aRXRiMTdrb09EU09lU2RPVUl2QnNpL1NWeEVKa2tSNDEzbE9KaVR1ZnR1dWltMlA1YUtnZXhRUmRwR2U1SXgvYXk4NWNmeXk2bGtESmtzYWVlNHhvQTVtZnV6SHdFTmhtd1JXNDgvREt0eEIrdUZCUjFhVFdrdTc5V0krOVg3WFNieGhDL2kxS1VrOUhiZUxlRmhUdWJPMzdzRFlyOGp5RE0zUko0SnVWL0pJSCtRZzJSVUU0ckViSWplWDJPOERya0d0bUNUSUw4NjRYbWtmUHNpVDFxZlpHc05jL2ZnQ2x0eXFoS3c5cHBJRXN0K2ZjdXZQWmZXYy91SVUwL3JIS3dxYVJiYjVyQk11WGpyemRmTHc3VTY0RDQ1VlFtSUowK1ZwK2RxUFdyWWpTcDkwM0s1R0k1OU5IVTR5dE5xOVlxZVBzSnRkcW1TNFdKdTdRMDN4UDBwcWF6SkhJbGg1ZnNRT25RVCtFdzhUVWpQZW9XamRDaldwbGVYK2g5OFJIZ0lhNEt3NUhYSk52V3hscUNhZzhHY3pQM1pKNkMrNnlheE9TVlhRd1pGSnVSa1lFRlRLZk1LQk5lb2R5Z3RMY2ZHZldFWXYvdzhacXdMQkh2Q0dJM1lLK0ZpVHViTzg5cUtVdDk5eUtWMzAxU2haSyszTkNrcUh5UlhtdzBaNllLTmh4b3FpUTREWWJydVNrVi9NaFlTNEhZNFVhNWJmRllwTm9SbVlvamZJMHc3STM5b2t3M2NIWndNeXozeFVoN21zOXdVWEg2elo3c2E4eUEyRURKRDRzSmF6OEVxOHUxN01tZUN4Q0FvaU9iMU11TElQcGZqR0E5RzJJRmpoUEtFemd1Rk5qWWtZdTdlYTYrSkxYMGZTVTE4MkdHcXk4WVkvTHc0QksxV2hPSW5lb1RWZGkwOUlxUVhRVHZRUzdPTWRyeWtON2Q1dlN2UFkvRklnS2tQL2Yxa215WVlEVmtSSjNOLzlnblkxOFZkYkRhYVJyZDZESXBNcU0xdytGN1kwR3YwWW5JL0ZRNjVEMFY1Nk9Yc2lWNk9udEIyMlEzOVlUNlNVWks1bUpPNWMzWnVST25oZzhneDFLczFCOUt2TVNLaVpjSEVzYlVKK1BpUlNyT2hndEhWOWgxc1J2VEN4VjRhRTkzcU54aXZDYXFRTlJZYWZEQVJBWWxaS25PM25KeEw2eXFyZ2g0cW1RaVp1Vjh0djZIWldzNDhLRHU0OXRDYnV2UXZ4SlBIU296N1NyQURGU051L2xRNUU2RDhnTnJuMXV6cklqVWhJbk1nNXU2NTZxcllnczd2QklNZzg3M0o2RUJ2WlJmVFJPOHkrbnRMSzZyd3hheGdyTDJTaXJka2lNU21TQTl6UzVGZC9CcHZxdDRobzZnTXk0SWVveXZOYVRIMHFqVVpZazdtL3V3VFVNZHB2WmpQN1l4RzdGTUo5bm5SY3ZhQ3BzTXU5SEh4b2tucE5FOUNjdmdGNHBLejBOcHNNM282N2FZM1czWkRqeTVBak1qa2lMbVlrN216NmNieDY3QlE1TmxZSTF1dkQzTElrNFVock9lUEdDYk5DWjRQTE5UelVqR0dFekRQMFU1YUgvVkhDeGl1Q3Fvd0kyTWhBZk1EbFcxbEd4cEp1WDNLYVRyUmwrSGhkWk4xVjhxdnFiZXE5bTRaU040dGhOTHM2dVF1Sno5bTNvNGVJVCt4bnMyQ2hGaGVQbDFVYXhQTS9XcmJETUhjNUJRdk5xSHpPMlB5cHBHQVRIemEwY3l6dHpYN21QdjhjMll3M0srbjFmc3hmQ0l5b0U2anBMRlhrb1NIT1puNzgwOUF4L1ZpMDVFSHlMdkZSOG0vUlovc092b045OEh4aTVFNGVlazJJUXBWZE9YNjltMzFTUElpdnhpSHpvWFIxZTl0Qk42SXdXeDNmOGxveUZ6TXFVUGNtWnZXNE8zTGx5Z2duNVlzSGExYVNEeGd0RkE0cTlaSXZIZ3plVWJMeHRTc3Z4Zyt0SG9FakwyTFhQYURvWG8yTW9yOHZRVU1WZ1pVbUpETkJadmRNQXkzM1lZb3YyNWJOVlhmSXMvdllLOFdnWU9YSm16WXMrWlMrZFV1ZjVCekFiMnBNb0M4V3doQ2VVSDNLM2xiMGErbE9KSVNzQ2FXbDA4WFRKT1RsTFlSSjNOckxBMFNtOUhJMVUvd1p2RklSRHQ2WDQ3UFNibnc0cDh6cnNMOVd2MEp5TEZqL082am0zc01qSWlMT1puN2Z5QUIxNG5OYUxUU0hlS3Q1QTJqTzlnTC9XZ0VwSUcvWmllK3BWc3ZsVkp2bU1vcTRSWk05YzQ2Y0M0R0hmdHZoUTV4TWFlTzR6cHh4cm9Wa3JZMzkrOGoxNlkvc25xVDl3dUR2RnV5KyttajdHSWczcEhmVEZsUUVISXNMZVRhaGRnY2F5dVVIanVHbHh2cHJSYzJNT0wrdXRxNDlWdHo5RjErb2NLWURIOEV6eFdESFRIb3YvVUdJcDhJVityMURoeVN4alBSSWlVUEZ3bm55b3ZsVnpyK1RxKzQ2eVBCVWxjQ29hUWQzQ1BaenZUYUppZkEyMElzTHgvTnFmVW81RUNoalRtWlcyTkpvTmpjTTRrc1BLcTlXZlMzazJNQVRkb1JFcEQvMTcra0VYQ1RUQUxtbGxSZ1VlQVR1T3hQeE5NWDFYY1J1R3dKZVlhV3l5UFJqM2lZazdrLy93UjBXQ3MycC9PMlBxNmUwQm04V3c1OUJ1MkNIbzJDcjErWDRTMGwyNXNLOW9VcFIxbDVHY3JvdGdtdnY2RXIwOG8zcnlVN1lNL0pLTFMzM0F3dDRtSk9IZUorTksvMnR6ckt3OE9RUDM0Y2pXQTZ5RFl4UnZHMmJYaEw4NHJMTGw1RXJvTURNbnVTSjR3RVpMM1J3SHFXcmc3Q1dqU0g3dEt6RmNia1p0V1hyaFFGbUhsRW82U1JmaTc4UmR2dm9qa3hNdjE1M1hnWGVjV3NDQ2dQYXQ5Q1l1b1RiNjR0UVFXWlFuSXBvbHRDVWVUWjhtUzJ2R2RoOGpBN2FTekhQNktmQmhOS0dWMEpDenpNeWR3YUN3UEVGcnZ1UVcvclhmUWxzRzFGVnpvSHJLbzV5dkRpMjlraDJCcVNMdVhaUUZmNlRlYmRSTXRsRWRoNU0wTmF2KzFHT2xvdXBjOUNQTXpKM0o5OUFtcmJyUkZiMEdqVnk4VlR5WnFqRjdrbHNLbFFVVkd4eEk2am1INkNRVndxbHF5TDZmWkRhV2twWHI1a1p3UyswcXVpcHlLMzBKWVNzQ2R4TVNkelIvVHBEVFlUWXZzMWNySkVWVllXWFV6RW9TSXBDVytMaXlHbWtTL2J4S1RXYmtOVHMzcWRsL1dzWitucUlwUVNVSHZSbVFyam5iRVNhdzBCZlRaR1lzcWhPeWdzYlhoZTcvYWdSTExRdUNQWG4zbU1pRk4zcVg5NVlOdm1aT3FqaTNpeXMyQ3dIWVpRSHBCN1FYS052UnpYbGRGRmhoREh5N3RHdlpBV1dEdDdqZnNLN2N6SjNCcnovY1dXZEJXclRWZStiRm5CeTI0MGI3Ym1DQ3k1OFBocC9nMXNwK1FTeW82YVJQdGp5UzF3MGduRkk1UVNrT3EwaVljNW1mdC9JQUZYaXkxSEg2QjNBSGVxdE9iUXBIb3RNaTVpdTQwK2xJd0ZoY1Y0UmNsVSthYWNmQUtmb3AzMWx1cms1UmhhYXBMREFuTXhwN2JkYW5GSTgrWjRycXNuc2RYSUhUUUloY3VXb3lxNytxY04zdEtrOWx6WHdjcVdHK3JWTmgwUzFMSCtYRWNQekswMS8xU0ZrY2RkSlJzTXpaWEJNRmdkaEZoUnZ2UUxVbHc1ZnVzeGVsQ2NLa3NPUTVxMXBiMzRYSGxBNjErUllLb2p0YlpJN0crSXNzZlZ0M095RDNnamVVSHRPZXhUZWw0dGE1VVJQc3hKVGpLRmZoNU1hR2RPNXRhY2QwNXNSWWRNclEzVjFoaGE2NlBSZzI2eDFBeUFsSWp2MEh4aEtIYUcxbzUwbmpUcXRWck1ieTZIZzllRnd1c3RxYTQzY1RFbmMzLzJDZGpIbGhLUWJwdDBzdk5BTjBvY1JhZzc3Q1RIaEIzb1pMc042bzRlZE9GUlFLUGVTMVJVbE9CbXpDUDhhdUtPem5ZN0pPaHE3MEV4T3lWY3pNbmMxMzZ0U2NBdVpMMUJ5QnM1Q215endZVnZMQmN1WDRIMG1qWmVwbmRSbDhReDZsdm5wR2J1bm5NcEFTbFplcEN0Qm1QcXFSU3NveDhDUEp1WUo3bVZvYXE4cnF6Q2VqSlNWMThTSk8wbjlCZVcvY2d0UzJ2aDJYTC9Wci9RcUVVSnFFZldHVEo0dm0walRhYzBRTHFNWFVacDVuTmNNT2lEUzcyNjRxSTEvZkRpdzlwSlZDWDBuRnUyUDNNeXQ4YWNzMkxMclhFU1Y0SmU2Nktnc1lZc010d3BBYXR2TklDZjByUmFRb2tXVnB0b2U4SXo4TWNpTWdNbjhMcFF2R3ZxTllpTE9abjdzMC9BSHBhTHhDWkRkcUMxK1NwMHNGeGRKOXFhcjBRbjY3V1MxKzhMYU9RcUt5MUdTT1I5Tk5WYlJPZDk4djJZaXptWis2b2tBZnVTbTBGWGlhTkI5a0I3dkhsYWU2dWtLcGNtdHJ1NDFyZ2RWTWNJc2ZXdE15ZHo5NWg5dk1Kb2V3dzAxa1ZLb0VPT1Z1NlhuNUMvODB2SjZDRVV2cXZ4TktjWVhuVER1Uy85VUdLWEpaZWxmWVMrc2t2RGJUUWxjZjZaOG5OL05FTzhvVFppNlNkbEZSRkRiZ2FLZGhtc3AxakhUbGRKZGxaeS9abVR1ZFZublJaYjBiVEh6blRseTQ0QlBHbTdONDJFd2wvT3QyUCtwSE85M2ZTVVJpZytFWmxvdm9ETXdnbThybGpQWE16SjNKOTlBbHBOUHlnZXR6VWFwb3V2MDB5bGtEcGhzZVE2K2xON1ZsWXU4dkx5OEtvb0grR0p6NkE3K3lxc2FOSzJiRjlUbW9ERG5NeDltUlBReUJUUERVMlE3ZUNFbktIREliNTBSVzVnNHRzMEw3ZHVSNGFXRHA2MUo0ZUVSaUJEMXdETXJmR1hYNFVSSll2Z2F0Q1ZuaDUwV2hpRTlyUFBvdXZjczNTVkhBakRsWUhvT3VzVTJZR2RRTWY1RjhBeFVoZUVPaHdNREduZWFzODVKOHJQdEtBRTFOZkczWjdrWEtDQUtHdHo2ZWNvZTVpQ0NnVlBQbTdrQ2VQM0JsZ3E5V1ZPNWxiLzY1VFlraTQ4MnRHRW5VN3N2VWMvYzZDMVdkNlJvUFhLMnpnVVhmdlNneC85NlBWUGMra3BDWUhYaGNMclRlZUZvdTJ5Y0RBbmMzLzJDV2d5eGxzOGRQa05hRTA2RDcycC9uVkNlN0svWktaY1JrWW1zdWxtYkZGQkhtNUUweDM0VVdlZ08wVytYeC9pY3FNdjJaaTRyM1hYUUxIdklaUkgza2JGdlNTVTNZcEFxWDhBeW1QdW91cEY3YTBTbm1SVXZPOEFlTko0V2h1YXdkYW1FMFNTcGZJNnV5R2s2L1ZENEMvTjBXM21ZVXJBTy9UbGhYMVVHR3lsdytGc3YvSlR6WnZSb1pOK2owT2pxeEtlYmxnbi9mS3pkbnRLMmgrT0dZbDA5L1dTWmFLVnVjcCtIQmRIemdiSGZ5R1Q4T25IeFJiMG14cC9rSVV0Sjg2Zmk4UFFneTVFOWtYbDRFQjBEdlpHWmFNem5kT05QL2xJc3UxTG1IVG1DVm9zb3BsbEJGN25PcUgrdHlWaCtIM3hUWHFNR0lNdXhQM1pKNkRwMk4yVkU5YUhVUkpkZ003VXV1MDVkS2hkZjNvQVJNL1M4Zng1QnZMenNuQTk2aUhVeDV5bHBLM3R4eHk2aElrYndtRTZabmRscklzelhqOTdocEpUWjVGcFk0OE1mU004STB1TkRBTVQ1QXdmaGZLSVdndXdkK1d2a1RONlBFMDA3MUEvMm5WR1dqOFRuR2xHSi9FempydzJwWG0yN1pmZC9LaGdUdVkrL0dNVEpCZ1kwRVJ3Y2kxUVFQYlpzOUlFdk8vb29ESkdWVCt1U3pBMGhDOTVWSGVZZktUU2pyd0oyWG0rT2VFM1FrdHlLUGh1N2cxOE0rZUdaTm1LUnNWbWRDSEMyOS9RZHJORm9maURFbzNCNjF3bjFQOU9kY3hqUjFmMnpQM1pKNkR1WVBmRUdSdHV3SWtPc1p5RVBIcjFWb0VlRTg1QmkwYkJ4MDlGRUtXbElTY3JBNWZDazlIZTdSUjYxY1R6S01vY1R1U2h3cHpNSGRLclYxeXlJLzNhWXk4ZHBMYnVSSlBJMnlQMWo5b0o2S0wyNmpSQ0hzYmJtbW1XWlRmcEIyTGFkcTZPRWVKazE4bUdJNjBIM1pPalJON2Y1SWM0NDhVbmNtMDlJdEdGN0M0KzFzUnk1bUpPNXZiK3o1ZWlDSnBIRzl1ako2STcwTVJ4R2J5NlUyMmVKSm1ycTlCVzN6WnpoZW4xeFo3L2ZpMzYyYzA3MFlYbXlmYW1GdzZhMHNUd0pqUWY5N3Q1MXh2RTl4VERVSXh0U2k4dk1CZHpNdmRubjRBYTF2Tk1MY1o1djJPcmpGazBiM09pZXdUR2I0akFCQVdNV3hlQlNkU1duWk9EUEhvbHFyam9CZTRtMFUrOGs1L0toUFcxOFRPSlkvYm1VRmlPOTM3SDNMdSsrdHJsVk1zL3MrTnB4QktaV09LWmdTblM5VTJRM3JjV21RT2R3WW5IejVnckhqNUdwdjJnMmhpT3JZbC9Sa3VSTWMyYkpTN20zUEhGbHk3T202NjRxVTg3WEdXM0l4Sm1kTmcwb0h1QWZ3Zk13VnpNeWR3Ny92VXYyME0vLzR4d0Ezb1dUT2V5OGJyNmlOZW0rNEtFa3RqcU4zWmVuRGdwclJQYTZsb21HQmdob3A4Um1KTzUvK08wM2JUZHhFUHZCbEhDT0c2SmhpVmRnSmdSekQ4SWQrQkF2MHcwYVAxTnRKdHc2QjF6Zi9ZSnlIOWdkK3Y1NW5xdUcrSXR4KzB1TXgvbkpWWUYwekZlWWtvcWNjRFZFSEhROVJ2aWE2Rmg0bjNITDRuMWgrK1VpMmNPNW1KTzVuYi94eisrM0U2SjR0UGt4N2pqdi94S3h0ak5jZmFYRm5JNFIzTjhnM3Yzd1YyWFFZZ2kzNzRMcmRvb3hYQWY3c3NjekxXTk9KbWJOY2hod0szZmZML2NybE1Pdk80NHhiZjg3NEE1bUlzNWhTK1A1dEhhN3Y3cWE5SGU3NzdINForYTRsalRaaExjc3JKRzNKQ2hPTlc2cmJST2FLdHJTYU0yUEwvNGd1Zm0yZ3I4WHpsdE4vOTVtRmQ4dS9HK1plMG1IUkYzK0J0Z0R1Wml6ditGNVB2L3lQU3dwSTcvc1RBQUFBQUFTVVZPUks1Q1lJST1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9zdG9wLnBuZzwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJ3QUFBQWNDQVlBQUFCeURkK1VBQUFDN21sRFExQkpRME1nVUhKdlptbHNaUUFBZUFHRlZNOXJFMEVVL2padXFkQWlDRnByRHJKNGtDSkpXYXRvUmRRMi9SRmlhd3piSDdaRmtHUXpTZFp1TnV2dUpyV2xpT1RpMFNyZVJlMmhCLytBSG5yd1pDOUtoVnBGS042cktHS2hGeTN4elc1TXRxWHF3TTUrODk0MzczMXZkdDhBRFhMU05QV0FCT1FOeDFLaUVXbHNmRUpxL0lnQWpxSUpRVFFsVmR2c1RpUUdRWU56K1h2bjJIb1BnVnRXdzN2N2Q3SjNyWnJTdHBvSGhQMUE0RWVhMlNxdzd4ZHhDbGtTQW9nODM2RXB4M1FJMytQWTh1eVBPVTU1ZU1HMUR5czl4RmtpZkVBMUxjNS9UYmhUelNYVFFJTklPSlQxY1ZJK25OZUxsTmNkQjJsdVpzYklFTDFQa0thN3pPNnJZcUdjVHZZT2tMMmQ5SDVPczk0K3dpSENDeG10UDBhNGpaNzFqTlUvNG1IaHBPYkVoajBjR0RYMCtHQVZ0eHFwK0RYQ0ZGOFFUU2VpVkhIWkxnM3htSzc5VnZKS2duQ1FPTXBrWVlCeldraFAxMHh1K0xxSEJYMG0xeE92NG5kV1VlRjVqeE5uM3RUZDcwWGFBcTh3RGgwTUdneWFEVWhRRUVVRVlaaXdVRUNHUEJveE5MSnlQeU9yQmh1VGV6SjFKR3E3ZEdKRXNVRjdOdHc5dDFHazNUeitLQ0p4bEVPMUNKTDhRZjRxcjhsUDVYbjV5MXl3MkZiM2xLMmJtcnJ5NER2RjVabTVHaDdYMDhqamMwMWVmSlhVZHBOWFI1YXNlWHE4bXV3YVAreFhsekhtZ2pXUHhIT3crL0V0WDVYTWx5bU1GTVhqVmZQcVM0UjFXakUzMzU5c2Z6czk0aTdQTHJYV2M2MkppemRXbTVkbi9XcEkrKzZxdkpQbVZmbFBYdlh4L0dmTnhHUGlLVEVtZG9ybklZbVh4Uzd4a3RoTHF3dmlZRzNIQ0oyVmhpblNiWkg2Sk5WZ1lKcTg5UzlkUDF0NHZVWi9EUFZSbEJuTTBsU0o5My9DS21RMG5ia09iL3FQMjhmOEYrVDNpdWVmS0FJdmJPREltYnB0VTNIdkVLRmxwVzV6cmdJWHY5Rjk4TFp1YTZOK09Qd0VXRHlyRnExU05aOGd2QUVjZG9kNkh1Z3BtTk9XbHMwNVVvY3NuNU82NmNwaVVzeFEyME5TVXRjbDEyVkxGck9aVldMcGR0aVoweDF1SEtFNVF2ZkVwMHBsay9xdjhSR3cvYkJTK2Ztc1V0bCtUaHJXZ1pmNmI4QzgvVVhBZUl1SkFBQUNBRWxFUVZSSURiMld2MHZEUUJUSFRWcUVRcUMyaytEVVNSSDhCMEtYWXRPL1FEcEtPNG1qZ3lJSUNvSWdPamlLVTR0ajhTOW9LbDFDL3dGQjdOU3A0TlJhQ0FqU1VyL3Z5SVUwSnQ3UkhBMGN1WHYzM3VlYnU3ejdvYzNuOHpYUlk1cG14akFNQzc1VWRqVk55MUlNNmhQVTMxRnMxM1h0WHEvM0xXSnAvd21XU3FYTmREcDlDVWdOSlNPQWtWaHpPcDFlZDd2ZHp6amZXRUhMc2k0UWRJNWl4QVhIMkYzWWIyM2J2b25xL3lQb1RkOHpSbjRRRlNCcnd6Uy9ZSm9QdzlPOElGaXRWdGZINC9Fcm9FVlpzTURQeWVWeSs2MVc2NGY3NmJ4Qzc5Rm85SVNYS2pGQ0ZqMG0xZG5qQzFZcWxScW1vZWJabGIySVNXd09aRk9LYkRTUWpSOHdidkVPZXVNL05tZXoyUW15N2l0b2o2dURzNUZLcFI0aVBueUk3TjBCeDJXQ3lNaFRRTzdDSUdTYUZyYkp0TUdMV3R4bjROM3pLVDJXQVNYMFlSbzZ2bVlQb0VKQ21FeDRnYlJvaENxelVpUmMxSkVZMnlJdlZmMmtSU05rRzdFcXFJQ1Q1VWtqOEZQWFRZSVRkVGdoYWFKamtmYUZib29jU0l0RzZDaml5V0FjSGF2L0RaNERHZStFUGdQUzRrbnptQkFtRTg0MG1DQTJWbW9NdzFIWUdhN0NObEU3Sm9ZMmJ5Ym9IOEIwaEdCaE5rVEFaZnFSTFBWMnU5MmtXRitRR3VWeXVSRnh0RkRYMGc4ZGNaMU9wODRCL0IreWRqNmZQMEpGWmRZNkhwUHJMWTZRckN1OVJQbWZnUXArL21xdWlVSFJsVjZFZzhJcXIvcS85aHZ1cS9LbVNUTUFBQUFBU1VWT1JLNUNZSUk9XV0+PC9kYXRhPgoJPC9maWxlPgo8L3Rvb2xib3h0cGw+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/ToolBox-tpl-autolightbox-jquery-lightbox.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHRvb2xib3h0cGw+Cgk8bmFtZT5hbGJfanF1ZXJ5LWxpZ2h0Ym94PC9uYW1lPgoJPHZlcnNpb24+MC41LjE8L3ZlcnNpb24+Cgk8dG9vbGJveHZlcnNpb24+MS4zLjM8L3Rvb2xib3h2ZXJzaW9uPgoJPGFib3V0PlZHaHBjeUJVYjI5c1FtOTRJRUYxZEc5TWFXZG9kRUp2ZUNCMFpXMXdiR0YwWlNCMWMyVnpJSFJvWlNCcWNYVmxjbmt1YkdsbmFIUmliM2dnYzNsemRHVnRJSFpsY25OcGIyNGdNQzQxUEdKeUlDOCtJRHhpY2lBdlBpQkViMk4xYldWdWRHRjBhVzl1SUdadmNpQmxlSFJ5WVNCdmNIUnBiMjV6SUdOaGJpQmlaU0JtYjNWdVpDQmhkQ0E4WVNCb2NtVm1QU0pvZEhSd09pOHZiR1ZoYm1SeWIzWnBaV2x5WVM1amIyMHZjSEp2YW1WamRITXZhbkYxWlhKNUwyeHBaMmgwWW05NEx5SWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBteGxZVzVrY205MmFXVnBjbUV1WTI5dEwzQnliMnBsWTNSekwycHhkV1Z5ZVM5c2FXZG9kR0p2ZUM4OEwyRStQR0p5SUM4K0lEeGljaUF2UGlCR2FXeGxjeUIwYUdGMElHTnZiV1VnZDJsMGFDQnFjWFZsY25rdGJHbG5hSFJpYjNnZ1lYSmxJSE4wYjNKbFpDQnBiaUJ0YjJSMWJHVnpMMVJ2YjJ4Q2IzZ3ZkR1Z0Y0d4aGRHVnpMMkZzWWw5cWNYVmxjbmt0YkdsbmFIUmliM2d2UEdKeUlDOCtJRHhpY2lBdlBpQnFjWFZsY25rdGJHbG5hSFJpYjNnZ2QyRnpJR0oxYVd4MElIVnphVzVuSUhSb1pTQThZU0JvY21WbVBTSm9kSFJ3T2k4dmFuRjFaWEo1TG1OdmJTSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBtcFJkV1Z5ZVR3dllUNGdiR2xpY21GeWVTNGdhbkYxWlhKNUxXeHBaMmgwWW05NElHeHBZMlZ1YzJWa0lIVnVaR1Z5SUdFZ1BHRWdhSEpsWmowaWFIUjBjRG92TDJOeVpXRjBhWFpsWTI5dGJXOXVjeTV2Y21jdmJHbGpaVzV6WlhNdllua3RjMkV2TWk0MUwySnlMeUlnY21Wc1BTSnNhV05sYm5ObElqNURjbVZoZEdsMlpTQkRiMjF0YjI1eklFRjBkSEpwWW5WMGFXOXVMVk5vWVhKbElFRnNhV3RsSURJdU5TQkNjbUY2YVd3Z1RHbGpaVzV6WlR3dllUNHU8L2Fib3V0PgoJPHNlY3Rpb24+YXV0b2xpZ2h0Ym94PC9zZWN0aW9uPgoJPHRwbHNlY3Rpb24+PC90cGxzZWN0aW9uPgoJPGpxdWVyeT4xPC9qcXVlcnk+Cgk8anF1ZXJ5X293bj4wPC9qcXVlcnlfb3duPgoJPG9wdGlvbnM+WVRvd09udDk8L29wdGlvbnM+Cgk8dHBsY29kZT48L3RwbGNvZGU+Cgk8dHBsY3NzPkx5b3FEUW9nS2lCcVVYVmxjbmtnYkdsbmFIUkNiM2dnY0d4MVoybHVEUW9nS2lCVWFHbHpJR3BSZFdWeWVTQndiSFZuYVc0Z2QyRnpJR2x1YzNCcGNtVmtJR0Z1WkNCaVlYTmxaQ0J2YmlCTWFXZG9kR0p2ZUNBeUlHSjVJRXh2YTJWemFDQkVhR0ZyWVhJZ0tHaDBkSEE2THk5M2QzY3VhSFZrWkd4bGRHOW5aWFJvWlhJdVkyOXRMM0J5YjJwbFkzUnpMMnhwWjJoMFltOTRNaThwRFFvZ0tpQmhibVFnWVdSaGNIUmxaQ0IwYnlCdFpTQm1iM0lnZFhObElHeHBhMlVnWVNCd2JIVm5hVzRnWm5KdmJTQnFVWFZsY25rdURRb2dLaUJBYm1GdFpTQnFjWFZsY25rdGJHbG5hSFJpYjNndE1DNDFMbU56Y3cwS0lDb2dRR0YxZEdodmNpQk1aV0Z1WkhKdklGWnBaV2x5WVNCUWFXNW9ieUF0SUdoMGRIQTZMeTlzWldGdVpISnZkbWxsYVhKaExtTnZiUTBLSUNvZ1FIWmxjbk5wYjI0Z01DNDFEUW9nS2lCQVpHRjBaU0JCY0hKcGJDQXhNU3dnTWpBd09BMEtJQ29nUUdOaGRHVm5iM0o1SUdwUmRXVnllU0J3YkhWbmFXNE5DaUFxSUVCamIzQjVjbWxuYUhRZ0tHTXBJREl3TURnZ1RHVmhibVJ5YnlCV2FXVnBjbUVnVUdsdWFHOGdLR3hsWVc1a2NtOTJhV1ZwY21FdVkyOXRLUTBLSUNvZ1FHeHBZMlZ1YzJVZ1EwTWdRWFIwY21saWRYUnBiMjR0VG04Z1JHVnlhWFpoZEdsMlpTQlhiM0pyY3lBeUxqVWdRbkpoZW1sc0lDMGdhSFIwY0RvdkwyTnlaV0YwYVhabFkyOXRiVzl1Y3k1dmNtY3ZiR2xqWlc1elpYTXZZbmt0Ym1Rdk1pNDFMMkp5TDJSbFpXUXVaVzVmVlZNTkNpQXFJRUJsZUdGdGNHeGxJRlpwYzJsMElHaDBkSEE2THk5c1pXRnVaSEp2ZG1sbGFYSmhMbU52YlM5d2NtOXFaV04wY3k5cWNYVmxjbmt2YkdsbmFIUmliM2d2SUdadmNpQnRiM0psSUdsdVptOXliV0YwYVc5dWN5QmhZbTkxZENCMGFHbHpJR3BSZFdWeWVTQndiSFZuYVc0TkNpQXFMdzBLSTJweGRXVnllUzF2ZG1WeWJHRjVJSHNOQ2lBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtJQ0IwYjNBNklEQTdEUW9nSUd4bFpuUTZJREE3RFFvZ0lIb3RhVzVrWlhnNklEZ3dNRHNOQ2lBZ2QybGtkR2c2SURFd01DVTdEUW9nSUdobGFXZG9kRG9nTlRBd2NIZzdEUXA5RFFvamFuRjFaWEo1TFd4cFoyaDBZbTk0SUhzTkNpQWdjRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPdzBLSUNCMGIzQTZJREE3RFFvZ0lHeGxablE2SURBN0RRb2dJSGRwWkhSb09pQXhNREFsT3cwS0lDQjZMV2x1WkdWNE9pQXhNREF3T3cwS0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdEUW9nSUd4cGJtVXRhR1ZwWjJoME9pQXdPdzBLZlEwS0kycHhkV1Z5ZVMxc2FXZG9kR0p2ZUNCaElHbHRaeUI3SUdKdmNtUmxjam9nYm05dVpUc2dmUTBLSTJ4cFoyaDBZbTk0TFdOdmJuUmhhVzVsY2kxcGJXRm5aUzFpYjNnZ2V3MEtJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3RFFvZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3RFFvZ0lIZHBaSFJvT2lBeU5UQndlRHNOQ2lBZ2FHVnBaMmgwT2lBeU5UQndlRHNOQ2lBZ2JXRnlaMmx1T2lBd0lHRjFkRzg3RFFwOURRb2piR2xuYUhSaWIzZ3RZMjl1ZEdGcGJtVnlMV2x0WVdkbElIc2djR0ZrWkdsdVp6b2dNVEJ3ZURzZ2ZRMEtJMnhwWjJoMFltOTRMV3h2WVdScGJtY2dldzBLSUNCd2IzTnBkR2x2YmpvZ1lXSnpiMngxZEdVN0RRb2dJSFJ2Y0RvZ05EQWxPdzBLSUNCc1pXWjBPaUF3SlRzTkNpQWdhR1ZwWjJoME9pQXlOU1U3RFFvZ0lIZHBaSFJvT2lBeE1EQWxPdzBLSUNCMFpYaDBMV0ZzYVdkdU9pQmpaVzUwWlhJN0RRb2dJR3hwYm1VdGFHVnBaMmgwT2lBd093MEtmUTBLSTJ4cFoyaDBZbTk0TFc1aGRpQjdEUW9nSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzTkNpQWdkRzl3T2lBd093MEtJQ0JzWldaME9pQXdPdzBLSUNCb1pXbG5hSFE2SURFd01DVTdEUW9nSUhkcFpIUm9PaUF4TURBbE93MEtJQ0I2TFdsdVpHVjRPaUF4TURzTkNuME5DaU5zYVdkb2RHSnZlQzFqYjI1MFlXbHVaWEl0YVcxaFoyVXRZbTk0SUQ0Z0kyeHBaMmgwWW05NExXNWhkaUI3SUd4bFpuUTZJREE3SUgwTkNpTnNhV2RvZEdKdmVDMXVZWFlnWVNCN0lHOTFkR3hwYm1VNklHNXZibVU3ZlEwS0kyeHBaMmgwWW05NExXNWhkaTFpZEc1UWNtVjJMQ0FqYkdsbmFIUmliM2d0Ym1GMkxXSjBiazVsZUhRZ2V3MEtJQ0IzYVdSMGFEb2dORGtsT3cwS0lDQm9aV2xuYUhRNklERXdNQ1U3RFFvZ0lDOHFlbTl2YlRvZ01Uc3FMdzBLSUNCa2FYTndiR0Y1T2lCaWJHOWphenNOQ24wTkNpTnNhV2RvZEdKdmVDMXVZWFl0WW5SdVVISmxkaUI3RFFvZ0lHeGxablE2SURBN0RRb2dJR1pzYjJGME9pQnNaV1owT3cwS2ZRMEtJMnhwWjJoMFltOTRMVzVoZGkxaWRHNU9aWGgwSUhzTkNpQWdjbWxuYUhRNklEQTdEUW9nSUdac2IyRjBPaUJ5YVdkb2REc05DbjBOQ2lOc2FXZG9kR0p2ZUMxamIyNTBZV2x1WlhJdGFXMWhaMlV0WkdGMFlTMWliM2dnZXcwS0lDQm1iMjUwT2lBeE1IQjRJRlpsY21SaGJtRXNJRWhsYkhabGRHbGpZU3dnYzJGdWN5MXpaWEpwWmpzTkNpQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmpzTkNpQWdiV0Z5WjJsdU9pQXdJR0YxZEc4N0RRb2dJR3hwYm1VdGFHVnBaMmgwT2lBeExqUmxiVHNOQ2lBZ2IzWmxjbVpzYjNjNklHRjFkRzg3RFFvZ0lIZHBaSFJvT2lBeE1EQWxPdzBLSUNCd1lXUmthVzVuT2lBd0lERXdjSGdnTURzTkNuME5DaU5zYVdkb2RHSnZlQzFqYjI1MFlXbHVaWEl0YVcxaFoyVXRaR0YwWVNCN0RRb2dJSEJoWkdScGJtYzZJREFnTVRCd2VEc05DaUFnWTI5c2IzSTZJQ00yTmpZN0RRcDlEUW9qYkdsbmFIUmliM2d0WTI5dWRHRnBibVZ5TFdsdFlXZGxMV1JoZEdFZ0kyeHBaMmgwWW05NExXbHRZV2RsTFdSbGRHRnBiSE1nZXcwS0lDQjNhV1IwYURvZ056QWxPdzBLSUNCbWJHOWhkRG9nYkdWbWREc05DaUFnZEdWNGRDMWhiR2xuYmpvZ2JHVm1kRHNOQ24wTkNpTnNhV2RvZEdKdmVDMXBiV0ZuWlMxa1pYUmhhV3h6TFdOaGNIUnBiMjRnZXlCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkRzZ2ZRMEtJMnhwWjJoMFltOTRMV2x0WVdkbExXUmxkR0ZwYkhNdFkzVnljbVZ1ZEU1MWJXSmxjaUI3RFFvZ0lHUnBjM0JzWVhrNklHSnNiMk5yT3cwS0lDQmpiR1ZoY2pvZ2JHVm1kRHNOQ2lBZ2NHRmtaR2x1WnkxaWIzUjBiMjA2SURFdU1HVnRPdzBLZlEwS0kyeHBaMmgwWW05NExYTmxZMDVoZGkxaWRHNURiRzl6WlNCN0RRb2dJSGRwWkhSb09pQTJObkI0T3cwS0lDQm1iRzloZERvZ2NtbG5hSFE3RFFvZ0lIQmhaR1JwYm1jdFltOTBkRzl0T2lBd0xqZGxiVHNOQ2c9PTwvdHBsY3NzPgoJPHRwbGpzPlBITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaVcxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOTBaVzF3YkdGMFpYTXZZV3hpWDJweGRXVnllUzFzYVdkb2RHSnZlQzlxY1hWbGNua3ViR2xuYUhSaWIzZ3RNQzQxTG5CaFkyc3Vhbk1pUGp3dmMyTnlhWEIwUGcwS1BITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlQZzBLYWxGMVpYSjVLR1oxYm1OMGFXOXVLQ1FwSUhzTkNna2tLQ2RoTG1GMWRHOXNhV2RvZEdKdmVDY3BMbUYwZEhJb0lIdHlaV3c2SUNKd1lXZGxJbjBwTG14cFoyaDBRbTk0S0hzTkNna0phVzFoWjJWQ2RHNVFjbVYyT2lkYlczSnZiM1JmZFhKc1hWMHZiVzlrZFd4bGN5OVViMjlzUW05NEwzUmxiWEJzWVhSbGN5OWhiR0pmYW5GMVpYSjVMV3hwWjJoMFltOTRMMnhwWjJoMFltOTRMV1JsTFhCeVpYWXVaMmxtSnl3TkNna0phVzFoWjJWQ2RHNU9aWGgwT2lBblcxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOTBaVzF3YkdGMFpYTXZZV3hpWDJweGRXVnllUzFzYVdkb2RHSnZlQzlzYVdkb2RHSnZlQzFrWlMxdVpYaDBMbWRwWmljc0RRb0pDV2x0WVdkbFFuUnVRMnh2YzJVNklDZGJXM0p2YjNSZmRYSnNYVjB2Ylc5a2RXeGxjeTlVYjI5c1FtOTRMM1JsYlhCc1lYUmxjeTloYkdKZmFuRjFaWEo1TFd4cFoyaDBZbTk0TDJ4cFoyaDBZbTk0TFdSbExXTnNiM05sTG1kcFppY05DZ2w5S1RzZ0RRcDlLVHNOQ2p3dmMyTnlhWEIwUGc9PTwvdHBsanM+Cgk8dHBsbW9iaWxlY29kZT48L3RwbG1vYmlsZWNvZGU+Cgk8dHBsbW9iaWxlY3NzPjwvdHBsbW9iaWxlY3NzPgoJPHRwbG1vYmlsZWpzPjwvdHBsbW9iaWxlanM+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9qcXVlcnkubGlnaHRib3gtMC41LnBhY2suanM8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW0x5b3FEUW9nS2lCcVVYVmxjbmtnYkdsbmFIUkNiM2dnY0d4MVoybHVEUW9nS2lCVWFHbHpJR3BSZFdWeWVTQndiSFZuYVc0Z2QyRnpJR2x1YzNCcGNtVmtJR0Z1WkNCaVlYTmxaQ0J2YmlCTWFXZG9kR0p2ZUNBeUlHSjVJRXh2YTJWemFDQkVhR0ZyWVhJZ0tHaDBkSEE2THk5M2QzY3VhSFZrWkd4bGRHOW5aWFJvWlhJdVkyOXRMM0J5YjJwbFkzUnpMMnhwWjJoMFltOTRNaThwRFFvZ0tpQmhibVFnWVdSaGNIUmxaQ0IwYnlCdFpTQm1iM0lnZFhObElHeHBhMlVnWVNCd2JIVm5hVzRnWm5KdmJTQnFVWFZsY25rdURRb2dLaUJBYm1GdFpTQnFjWFZsY25rdGJHbG5hSFJpYjNndE1DNDFMbXB6RFFvZ0tpQkFZWFYwYUc5eUlFeGxZVzVrY204Z1ZtbGxhWEpoSUZCcGJtaHZJQzBnYUhSMGNEb3ZMMnhsWVc1a2NtOTJhV1ZwY21FdVkyOXREUW9nS2lCQWRtVnljMmx2YmlBd0xqVU5DaUFxSUVCa1lYUmxJRUZ3Y21sc0lERXhMQ0F5TURBNERRb2dLaUJBWTJGMFpXZHZjbmtnYWxGMVpYSjVJSEJzZFdkcGJnMEtJQ29nUUdOdmNIbHlhV2RvZENBb1l5a2dNakF3T0NCTVpXRnVaSEp2SUZacFpXbHlZU0JRYVc1b2J5QW9iR1ZoYm1SeWIzWnBaV2x5WVM1amIyMHBEUW9nS2lCQWJHbGpaVzV6WlNCRFEwRjBkSEpwWW5WMGFXOXVMVk5vWVhKbFFXeHBhMlVnTWk0MUlFSnlZWHBwYkNBdElHaDBkSEE2THk5amNtVmhkR2wyWldOdmJXMXZibk11YjNKbkwyeHBZMlZ1YzJWekwySjVMWE5oTHpJdU5TOWljaTlrWldWa0xtVnVYMVZURFFvZ0tpQkFaWGhoYlhCc1pTQldhWE5wZENCb2RIUndPaTh2YkdWaGJtUnliM1pwWldseVlTNWpiMjB2Y0hKdmFtVmpkSE12YW5GMVpYSjVMMnhwWjJoMFltOTRMeUJtYjNJZ2JXOXlaU0JwYm1admNtMWhkR2x2Ym5NZ1lXSnZkWFFnZEdocGN5QnFVWFZsY25rZ2NHeDFaMmx1RFFvZ0tpOE5DbVYyWVd3b1puVnVZM1JwYjI0b2NDeGhMR01zYXl4bExISXBlMlU5Wm5WdVkzUnBiMjRvWXlsN2NtVjBkWEp1S0dNOFlUOG5KenBsS0hCaGNuTmxTVzUwS0dNdllTa3BLU3NvS0dNOVl5VmhLVDR6TlQ5VGRISnBibWN1Wm5KdmJVTm9ZWEpEYjJSbEtHTXJNamtwT21NdWRHOVRkSEpwYm1jb016WXBLWDA3YVdZb0lTY25MbkpsY0d4aFkyVW9MMTR2TEZOMGNtbHVaeWtwZTNkb2FXeGxLR010TFNseVcyVW9ZeWxkUFd0YlkxMThmR1VvWXlrN2F6MWJablZ1WTNScGIyNG9aU2w3Y21WMGRYSnVJSEpiWlYxOVhUdGxQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVKMXhjZHlzbmZUdGpQVEY5TzNkb2FXeGxLR010TFNscFppaHJXMk5kS1hBOWNDNXlaWEJzWVdObEtHNWxkeUJTWldkRmVIQW9KMXhjWWljclpTaGpLU3NuWEZ4aUp5d25aeWNwTEd0YlkxMHBPM0psZEhWeWJpQndmU2duS0RZb0pDbDdKQzR5VGk0elp6MDJLRFFwZXpROU1qTXVNa2dvZXpKQ09sd25Jek0wWENjc01tYzZNQzQ0TERGa09rWXNNVTA2WENjeE9DODFMVE16TFZrdU1UWmNKeXd4ZGpwY0p6RTRMelV0TVhVdE1sRXVNVFpjSnl3eFJUcGNKekU0THpVdE1YVXRNa3d1TVRaY0p5d3hWenBjSnpFNEx6VXRNWFV0TWtrdU1UWmNKeXd4T1RwY0p6RTRMelV0TWtZdU1UWmNKeXd4WmpveE1Dd3lRVG96WkN3eWN6cGNKekZxWENjc01tODZYQ2N6TWx3bkxESnFPbHduWTF3bkxESm1PbHduY0Z3bkxESmtPbHduYmx3bkxHZzZXMTBzT1Rvd2ZTdzBLVHRtSUVrOVRqczJJREl3S0NsN01WZ29UaXhKS1R0MUlFWjlOaUF4V0NneFpTeEpLWHNrS0Z3bk1WVXNJREZUTENBeFVsd25LUzVzS0h0Y0p6RlJYQ2M2WENjeVJWd25mU2s3TVU4b0tUczBMbWd1UWowd096UXVPVDB3T3pjb1NTNUNQVDB4S1hzMExtZ3VNVW9vZGlBeGJTZ3haUzR4TnloY0owcGNKeWtzTVdVdU1UY29YQ2N5ZGx3bktTa3BmV3A3TXpZb1ppQnBQVEE3YVR4SkxrSTdhU3NyS1hzMExtZ3VNVW9vZGlBeGJTaEpXMmxkTGpFM0tGd25TbHduS1N4SlcybGRMakUzS0Z3bk1uWmNKeWtwS1gxOU1tNG9OQzVvV3pRdU9WMWJNRjBoUFRGbExqRTNLRnduU2x3bktTbDdOQzQ1S3l0OVJDZ3BmVFlnTVU4b0tYc2tLRnduYlZ3bktTNHpNU2hjSnp4bElHYzlJbkV0TVRNaVBqd3ZaVDQ4WlNCblBTSnhMVFVpUGp4bElHYzlJalV0Y3kxaUxYY2lQanhsSUdjOUlqVXRjeTFpSWo0OE1YY2daejBpTlMxaUlqNDhaU0F5VmowaUlpQm5QU0kxTFdzaVBqeGhJRW85SWlNaUlHYzlJalV0YXkxV0lqNDhMMkUrUEdFZ1NqMGlJeUlnWnowaU5TMXJMVmdpUGp3dllUNDhMMlUrUEdVZ1p6MGlOUzFaSWo0OFlTQktQU0lqSWlCblBTSTFMVmt0TWpraVBqd3hkeUJYUFNKY0p5czBMakZOSzF3bklqNDhMMkUrUEM5bFBqd3ZaVDQ4TDJVK1BHVWdaejBpTlMxekxXSXRWQzEzSWo0OFpTQm5QU0kxTFhNdFlpMVVJajQ4WlNCblBTSTFMV0l0UVNJK1BERnBJR2M5SWpVdFlpMUJMVEYwSWo0OEx6RnBQand4YVNCblBTSTFMV0l0UVMweFp5SStQQzh4YVQ0OEwyVStQR1VnWnowaU5TMHhjeUkrUEdFZ1NqMGlJeUlnWnowaU5TMHhjeTB5TWlJK1BERjNJRmM5SWx3bkt6UXVNVmNyWENjaVBqd3ZZVDQ4TDJVK1BDOWxQand2WlQ0OEwyVStYQ2NwTzJZZ2VqMHhSQ2dwT3lRb1hDY2pjUzB4TTF3bktTNXNLSHN5U3pvMExqSkNMREpLT2pRdU1tY3NVenA2V3pCZExGQTZlbHN4WFgwcExqRldLQ2s3WmlCU1BURndLQ2s3SkNoY0p5TnhMVFZjSnlrdWJDaDdNVlE2VWxzeFhTc29lbHN6WFM4eE1Da3NNV002VWxzd1hYMHBMa1VvS1Rza0tGd25JM0V0TVRNc0kzRXROVnduS1M1REtEWW9LWHN4WVNncGZTazdKQ2hjSnlNMUxWa3RNamtzSXpVdE1YTXRNakpjSnlrdVF5ZzJLQ2w3TVdFb0tUdDFJRVo5S1Rza0tFY3BMakpIS0RZb0tYdG1JSG85TVVRb0tUc2tLRnduSTNFdE1UTmNKeWt1YkNoN1V6cDZXekJkTEZBNmVsc3hYWDBwTzJZZ1VqMHhjQ2dwT3lRb1hDY2pjUzAxWENjcExtd29lekZVT2xKYk1WMHJLSHBiTTEwdk1UQXBMREZqT2xKYk1GMTlLWDBwZlRZZ1JDZ3BleVFvWENjak5TMVpYQ2NwTGtVb0tUczNLRFF1TVdRcGV5UW9YQ2NqTlMxaUxDTTFMWE10WWkxVUxYY3NJelV0WWkxQkxURm5YQ2NwTGpGaUtDbDlhbnNrS0Z3bkl6VXRZaXdqTlMxckxDTTFMV3N0Vml3ak5TMXJMVmdzSXpVdGN5MWlMVlF0ZHl3ak5TMWlMVUV0TVdkY0p5a3VNV0lvS1gxbUlGRTlkaUF4YWlncE8xRXVNVkE5TmlncGV5UW9YQ2NqTlMxaVhDY3BMakpFS0Z3blYxd25MRFF1YUZzMExqbGRXekJkS1RzeFRpaFJMbE1zVVM1UUtUdFJMakZRUFRZb0tYdDlmVHRSTGxjOU5DNW9XelF1T1YxYk1GMTlPellnTVU0b01XOHNNWElwZTJZZ01VdzlKQ2hjSnlNMUxYTXRZaTEzWENjcExsTW9LVHRtSURGTFBTUW9YQ2NqTlMxekxXSXRkMXduS1M1UUtDazdaaUF4Ymowb01XOHJLRFF1TVdZcU1pa3BPMllnTVhrOUtERnlLeWcwTGpGbUtqSXBLVHRtSURGSlBURk1MVEZ1TzJZZ01ubzlNVXN0TVhrN0pDaGNKeU0xTFhNdFlpMTNYQ2NwTGpObUtIdFRPakZ1TEZBNk1YbDlMRFF1TWtFc05pZ3Bleko1S0NsOUtUczNLQ2d4U1QwOU1Da21KaWd5ZWowOU1Da3BlemNvSkM0elpTNHpZeWw3TVVnb00ySXBmV3A3TVVnb00yRXBmWDBrS0Z3bkl6VXRjeTFpTFZRdGQxd25LUzVzS0h0VE9qRnZmU2s3SkNoY0p5TTFMV3N0Vml3ak5TMXJMVmhjSnlrdWJDaDdVRG94Y2lzb05DNHhaaW95S1gwcGZUczJJREo1S0NsN0pDaGNKeU0xTFZsY0p5a3VNV0lvS1Rza0tGd25JelV0WWx3bktTNHhWaWcyS0NsN01uVW9LVHN5ZENncGZTazdNbklvS1gwN05pQXlkU2dwZXlRb1hDY2pOUzF6TFdJdFZDMTNYQ2NwTGpNNEtGd25NelZjSnlrN0pDaGNKeU0xTFdJdFFTMHhkRnduS1M0eFlpZ3BPemNvTkM1b1d6UXVPVjFiTVYwcGV5UW9YQ2NqTlMxaUxVRXRNWFJjSnlrdU1uQW9OQzVvV3pRdU9WMWJNVjBwTGtVb0tYMDNLRFF1YUM1Q1BqRXBleVFvWENjak5TMWlMVUV0TVdkY0p5a3VNbkFvTkM0eWN5dGNKeUJjSnlzb05DNDVLekVwSzF3bklGd25LelF1TW04clhDY2dYQ2NyTkM1b0xrSXBMa1VvS1gxOU5pQXlkQ2dwZXlRb1hDY2pOUzFyWENjcExrVW9LVHNrS0Z3bkl6VXRheTFXTENNMUxXc3RXRnduS1M1c0tIdGNKMHRjSnpwY0p6RkRJRTBvWENjck5DNHhPU3RjSnlrZ1RDMVBYQ2Q5S1RzM0tEUXVPU0U5TUNsN055ZzBMakZrS1hza0tGd25JelV0YXkxV1hDY3BMbXdvZTF3blMxd25PbHduVFNoY0p5czBMakYySzF3bktTQXhZeUF4TlNVZ1RDMVBYQ2Q5S1M0eE1TZ3BMakZyS0Z3blExd25MRFlvS1hzMExqazlOQzQ1TFRFN1JDZ3BPM1VnUm4wcGZXcDdKQ2hjSnlNMUxXc3RWbHduS1M0eE1TZ3BMakp0S0RZb0tYc2tLRTRwTG13b2Uxd25TMXduT2x3blRTaGNKeXMwTGpGMksxd25LU0F4WXlBeE5TVWdUQzFQWENkOUtYMHNOaWdwZXlRb1Rpa3ViQ2g3WENkTFhDYzZYQ2N4UXlCTktGd25LelF1TVRrclhDY3BJRXd0VDF3bmZTbDlLUzVGS0NrdU1Xc29YQ2REWENjc05pZ3BlelF1T1QwMExqa3RNVHRFS0NrN2RTQkdmU2w5ZlRjb05DNDVJVDBvTkM1b0xrSXRNU2twZXpjb05DNHhaQ2w3SkNoY0p5TTFMV3N0V0Z3bktTNXNLSHRjSjB0Y0p6cGNKMDBvWENjck5DNHhSU3RjSnlrZ01td2dNVFVsSUV3dFQxd25mU2t1TVRFb0tTNHhheWhjSjBOY0p5dzJLQ2w3TkM0NVBUUXVPU3N4TzBRb0tUdDFJRVo5S1gxcWV5UW9YQ2NqTlMxckxWaGNKeWt1TVRFb0tTNHliU2cyS0NsN0pDaE9LUzVzS0h0Y0owdGNKenBjSjAwb1hDY3JOQzR4UlN0Y0p5a2dNbXdnTVRVbElFd3RUMXduZlNsOUxEWW9LWHNrS0U0cExtd29lMXduUzF3bk9sd25NVU1nVFNoY0p5czBMakU1SzF3bktTQk1MVTljSjMwcGZTa3VSU2dwTGpGcktGd25RMXduTERZb0tYczBMams5TkM0NUt6RTdSQ2dwTzNVZ1JuMHBmWDB5YXlncGZUWWdNbXNvS1hza0tHUXBMak13S0RZb01USXBlekpwS0RFeUtYMHBmVFlnTVVjb0tYc2tLR1FwTGpFeEtDbDlOaUF5YVNneE1pbDdOeWd4TWowOU1tZ3BlMVU5TWxvdU1tVTdNWGc5TWpkOWFudFZQVEV5TGpKbE96RjRQVEV5TGpKWmZURTBQVEpZTGpKWEtGVXBMakpWS0NrN055Z29NVFE5UFRRdU1tb3BmSHdvTVRROVBWd25lRnduS1h4OEtGVTlQVEY0S1NsN01XRW9LWDAzS0NneE5EMDlOQzR5WmlsOGZDaFZQVDB6TnlrcGV6Y29OQzQ1SVQwd0tYczBMams5TkM0NUxURTdSQ2dwT3pGSEtDbDlmVGNvS0RFMFBUMDBMakprS1h4OEtGVTlQVE01S1NsN055ZzBMamtoUFNnMExtZ3VRaTB4S1NsN05DNDVQVFF1T1NzeE8wUW9LVHN4UnlncGZYMTlOaUF5Y2lncGV6Y29LRFF1YUM1Q0xURXBQalF1T1NsN01tTTlkaUF4YWlncE96SmpMbGM5TkM1b1d6UXVPU3N4WFZzd1hYMDNLRFF1T1Q0d0tYc3lZajEySURGcUtDazdNbUl1VnowMExtaGJOQzQ1TFRGZFd6QmRmWDAySURGaEtDbDdKQ2hjSnlOeExUVmNKeWt1TW1Fb0tUc2tLRnduSTNFdE1UTmNKeWt1TWxRb05pZ3BleVFvWENjamNTMHhNMXduS1M0eVlTZ3BmU2s3SkNoY0p6RlZMQ0F4VXl3Z01WSmNKeWt1YkNoN1hDY3hVVnduT2x3bk1sTmNKMzBwZlRZZ01VUW9LWHRtSUc4c2NqczNLRWN1TVdnbUprY3VNamdwZTI4OVJ5NHlOaXRITGpKU08zSTlSeTR4YUN0SExqSTRmV29nTnloa0xtMHVNalUrWkM1dExqSTBLWHR2UFdRdWJTNHlVRHR5UFdRdWJTNHlOWDFxZTI4OVpDNXRMakpQTzNJOVpDNXRMakkwZldZZ2VTeElPemNvV2k0eGFDbDdOeWhrTG5RdU1Xd3BlM2s5WkM1MExqRnNmV3A3ZVQxYUxqSTJmVWc5V2k0eGFIMXFJRGNvWkM1MEppWmtMblF1TVVFcGUzazlaQzUwTGpGc08wZzlaQzUwTGpGQmZXb2dOeWhrTG0wcGUzazlaQzV0TGpGc08wZzlaQzV0TGpGQmZUY29janhJS1hzeGVqMUlmV3A3TVhvOWNuMDNLRzg4ZVNsN01VSTliMzFxZXpGQ1BYbDlNakU5ZGlBeGJTZ3hRaXd4ZWl4NUxFZ3BPM1VnTWpGOU96WWdNWEFvS1h0bUlHOHNjanMzS0ZvdU1Wb3BlM0k5V2k0eFdqdHZQVm91TWsxOWFpQTNLR1F1ZENZbVpDNTBMakZHS1h0eVBXUXVkQzR4Ump0dlBXUXVkQzR4V1gxcUlEY29aQzV0S1h0eVBXUXViUzR4Ump0dlBXUXViUzR4V1gweWNUMTJJREZ0S0c4c2NpazdkU0F5Y1gwN05pQXhTQ2d5UXlsN1ppQXllRDEySURKM0tDazdNWEU5TW1nN00yaDdaaUF4Y1QxMklESjNLQ2w5TW00b01YRXRNbmc4TWtNcGZUdDFJRTR1TVRFb1hDZERYQ2NwTGtNb01qQXBmWDBwS0RJektUc25MRFl5TERJd05Dd25mSHg4ZkhObGRIUnBibWR6Zkd4cFoyaDBZbTk0ZkdaMWJtTjBhVzl1ZkdsbWZIeGhZM1JwZG1WSmJXRm5aWHg4YVcxaFoyVjhmR1J2WTNWdFpXNTBmR1JwZG54MllYSjhhV1I4YVcxaFoyVkJjbkpoZVh4OFpXeHpaWHh1WVhaOFkzTnpmR0p2WkhsOGZIaFRZM0p2Ykd4OGZHcHhkV1Z5ZVh4NVUyTnliMnhzZkdOdmJuUmhhVzVsY254a2IyTjFiV1Z1ZEVWc1pXMWxiblI4Y21WMGRYSnVmRzVsZDN4aWIzaDhmSGRwYm1SdmQxZHBaSFJvZkdGeWNsQmhaMlZUYVhwbGMzeGtaWFJoYVd4emZHeGxibWQwYUh4amJHbGphM3hmYzJWMFgybHRZV2RsWDNSdlgzWnBaWGQ4YzJodmQzeG1ZV3h6Wlh4M2FXNWtiM2Q4ZDJsdVpHOTNTR1ZwWjJoMGZHcFJkV1Z5ZVUxaGRHTm9aV1JQWW1wOGFISmxabnhpWVdOclozSnZkVzVrZkc1dmZIVnliSHgwYUdsemZISmxjR1ZoZEh4b1pXbG5hSFI4YjJKcVNXMWhaMlZRY21Wc2IyRmtaWEo4WVhKeVVHRm5aVk5qY205c2JIeDNhV1IwYUh4a1lYUmhmR3RsZVdOdlpHVjhZblJ1VUhKbGRueHpjbU44WW5SdVRtVjRkSHhzYjJGa2FXNW5mSE5sYkdaOGZIVnVZbWx1Wkh4dlltcEZkbVZ1ZEh4dmRtVnliR0Y1Zkd0bGVYeDhaMmxtZkdkbGRFRjBkSEpwWW5WMFpYeHBiV0ZuWlhOOGFXMWhaMlZDYkdGdWEzeGZabWx1YVhOb2ZHaHBaR1Y4YkdWbWRIeG1hWGhsWkU1aGRtbG5ZWFJwYjI1OGIySnFRMnhwWTJ0bFpIeGpiMjUwWVdsdVpYSkNiM0prWlhKVGFYcGxmR04xY25KbGJuUk9kVzFpWlhKOGFXNXVaWEpJWldsbmFIUjhjM0JoYm54SmJXRm5aWHhpYVc1a2ZHTnNhV1Z1ZEZkcFpIUm9mRUZ5Y21GNWZHbHVkRmRwWkhSb2ZHbHVkRWx0WVdkbFYybGtkR2g4WDE5ZloyVjBVR0ZuWlZOamNtOXNiSHhqZFhKRVlYUmxmR2x1ZEVsdFlXZGxTR1ZwWjJoMGZITmxZMDVoZG54allYQjBhVzl1ZkdKMGJueHBiV0ZuWlVKMGJsQnlaWFo4YVcxbmZHVnpZMkZ3WlV0bGVYeHBiblJJWldsbmFIUjhjR0ZuWlVobGFXZG9kSHhqYkdsbGJuUklaV2xuYUhSOGNHRm5aVmRwWkhSb2ZIUnlZVzV6Y0dGeVpXNTBmRjlmWDJkbGRGQmhaMlZUYVhwbGZHbHRZV2RsUW5SdVRtVjRkSHh6WTNKdmJHeFViM0I4WDJScGMyRmliR1ZmYTJWNVltOWhjbVJmYm1GMmFXZGhkR2x2Ym54ZlgxOXdZWFZ6Wlh4cGJuUkVhV1ptVjN4d2RYTm9mR2x1ZEVOMWNuSmxiblJJWldsbmFIUjhhVzUwUTNWeWNtVnVkRmRwWkhSb2ZHbHRZV2RsVEc5aFpHbHVaM3hmY21WemFYcGxYMk52Ym5SaGFXNWxjbDlwYldGblpWOWliM2g4WDNObGRGOXBiblJsY21aaFkyVjhiMjVzYjJGa2ZIWnBjMmxpYVd4cGRIbDhjMlZzWldOMGZHOWlhbVZqZEh4MGIzQjhaVzFpWldSOFptRmtaVWx1ZkdsdFlXZGxRblJ1UTJ4dmMyVjhYM04wWVhKMGZITmpjbTlzYkV4bFpuUjhjR0ZuWlZsUFptWnpaWFI4WDJsdWFYUnBZV3hwZW1WOFlYSnlZWGxRWVdkbFUybDZaWHhpZEc1RGJHOXpaWHhxVVhWbGNubDhiMlptYzJWMFNHVnBaMmgwZkhOamNtOXNiRWhsYVdkb2RIeHBibTVsY2xkcFpIUm9mSHh6WTNKdmJHeE5ZWGhaZkd4cGJtdDhjbVZ0YjNabGZHOWlhbEJ5WlhaOGIySnFUbVY0ZEh4clpYbFViMDVsZUhSOGEyVjVRMjlrWlh4clpYbFViMUJ5WlhaOGIzWmxjbXhoZVU5d1lXTnBkSGw4Ym5Wc2JIeGZhMlY1WW05aGNtUmZZV04wYVc5dWZHdGxlVlJ2UTJ4dmMyVjhYMlZ1WVdKc1pWOXJaWGxpYjJGeVpGOXVZWFpwWjJGMGFXOXVmSEpwWjJoMGZHaHZkbVZ5Zkhkb2FXeGxmSFI0ZEU5bWZHaDBiV3g4WVhKeVlYbFFZV2RsVTJOeWIyeHNmRjl3Y21Wc2IyRmtYMjVsYVdkb1ltOXlYMmx0WVdkbGMzeDBlSFJKYldGblpYeGZjMlYwWDI1aGRtbG5ZWFJwYjI1OFgzTm9iM2RmYVcxaFoyVmZaR0YwWVh4MGFYUnNaWHhFWVhSbGZHUmhkR1Y4WDNOb2IzZGZhVzFoWjJWOGFXNTBSR2xtWmtoOFkyOXVkR0ZwYm1WeVVtVnphWHBsVTNCbFpXUjhiM1psY214aGVVSm5RMjlzYjNKOGJYTjhZWFIwY254b2FXUmtaVzU4WW14aGJtdDhjbVZ6YVhwbGZHVjRkR1Z1Wkh4amJHOXpaWHh2Y0dGamFYUjVmR0poWTJ0bmNtOTFibVJEYjJ4dmNueHVaWGgwZkhCaFoyVllUMlptYzJWMGZHWnVmRzltWm5ObGRGZHBaSFJvZkhOamNtOXNiRmRwWkhSb2ZIQnlaWFo4YzJOeWIyeHNUV0Y0V0h4MmFYTnBZbXhsZkdaaFpHVlBkWFI4ZEc5TWIzZGxja05oYzJWOGMzUjViR1Y4Wm5KdmJVTm9ZWEpEYjJSbGZGTjBjbWx1WjN4RVQwMWZWa3RmUlZORFFWQkZmR1YyWlc1MGZHdGxlV1J2ZDI1OFlYQndaVzVrZkc5bWZHbGpiM3d3TURCOFptRnpkSHhtYjNKOGZITnNhV1JsUkc5M2JueDhNVEF3ZkRJMU1IeHRjMmxsZkRRd01IeGljbTkzYzJWeWZHRnVhVzFoZEdWOGJHbG5hSFJDYjNoOFpHOG5Mbk53YkdsMEtDZDhKeWtzTUN4N2ZTa3BdXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9saWdodGJveC1ibGFuay5naWY8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW1IwbEdPRGxoQVFBQkFJRC9BTURBd0FBQUFDSDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUNSQUVBT3c9PV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2xpZ2h0Ym94LWRlLWNsb3NlLmdpZjwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbUjBsR09EbGhRZ0FXQU9ZQUFGbFpXVkJRVUcxdGJWUlVWSnFhbWxaV1Z0M2QzVkpTVWxGUlVXSmlZdlQwOUZoWVdPbnA2VlZWVmJ5OHZGTlRVLzM5L2VycTZudDdlOHpNektLaW9ubDVlWStQajJabVpreE1UR0JnWVBmMzkwOVBUL2IyOXZyNitucDZlbXhzYlBEdzhPdnI2ODNOemQ3ZTNrdExTK3pzN01mSHgrRGc0RjlmWC92Nys3VzF0WlNVbEtHaG9mejgvSGg0ZUZwYVd1Zm41K1hsNVhaMmRwaVltTlhWMWFXbHBZNk9qcEtTa21Oalk4ckt5bVJrWk8vdjc5dmIyMlZsWmJTMHRMT3pzNGVIaDNOemM5L2YzNm1wcWR6YzNQSHg4VzV1YnBhV2xuQndjSjJkbmJtNXVZYUdobWRuWjJscGFaZVhsNGlJaUUxTlRVNU9Ubng4Zk9QajQyOXZiN0d4c1lTRWhOTFMwbGRYVi83Ky92Ly8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBQUFBQUFBTEFBQUFBQkNBQllBQUFmL2dGcUNnNFNGaG9lSWlZcUxqSTJPajVDUmtvMHRrNWFYV1psYUtUTTBXcG1nV1ZvVFNSMlhwNFdnR2s0WU9nYWZtbG9pS0JoSEhLaTRtajhrQUE4OVBMQ2pHUU1BR0VPSFZsakt5MWRhVlZpdmdsZFkwc3RZQ1FRSzFkWllWb09hRVI0YkFBRk1Rb0lUS0E4QVVVc2d5QVJYOHZMYXo5N1YxZk1PQWhYNTgxZlJZSW1LSUNFQWdBRWZUb2dZQmdBS0VBMklyRlE1VktWQ2dvbGFwdUVieENDQmc0elVFSVhTVWtMQ3VBWUNoaTBJOE9TV0tFTVNLVXBNb0UwanlFSUVDTndVT1RLRWxBTUFDbUFCY01BR3hGaUZyQWl3d3RSS0RVRlZ2Rm14c05QbW9LZ2dteklOR0VvVENCa05BQ3dZUU1FVUtHUVNxNmo5Nk15YkFTenkwMEphaGVwdG10cTdETDUxMWJLRFN0aURLMFNkaFlteEVGWm5Ba3pJRFRuSWdzNjVxVWFlQ0VLc1FRR2lMQ0FFSXl4VGtJS2xpd2wxTkxIejBNZ1JIeEQwYW5LaHdJSURGRFMvVEJydlg5N0RJQmZyVytydm4xNVJJeTZvRHVCaVNvNENyaEZranNnTnkwVGNXaXdzWGlZZzJ6WnVlclVZdUhEZ1JRQUpFUVFwUWI0QUFZVkt1RTZKSW9MRElQRVFud1NwUUtDTWhJLzA2clVVV1hGZ2c0ZndJNm53UUFCSUJJU2ZKSnFrY0VNRkpRZ1VTeFZHeEhBZ0pwcDA0RkpYbVVBQVEzd1RJamdZaGgvTzF1RWpJSllZU2lBQU93PT1dXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9saWdodGJveC1kZS1uZXh0LmdpZjwvZmlsZW5hbWU+CgkgIDxpc2Rpcj4wPC9pc2Rpcj4KCSAgPGRhdGE+PCFbQ0RBVEFbUjBsR09EbGhQd0FnQU1RYUFOWFYxYXVycTJ0cmE5L2YzMkZoWWZUMDlNREF3SFoyZG9HQmdiVzF0ZERRME1MQ3dwYVdsdXJxNnFDZ29JdUxpOHJLeXZyNitzM056YjYrdnRiVzF2bjUrY0hCd2MvUHoxZFhWLy8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBQm9BTEFBQUFBQS9BQ0FBQUFYL29LWmxaR21lYUtxdUxEcTJjQ3pQZEczZmVLN3ZmTy8vd0tCd1NDd2FqeVRBNEZRQUZFd0FRT1BVaUVhblJvSGdGTUFzTXdZQ1pud3dsTHJqTk9JNWRIaE5nZ1BKZ0JFRUFJWUQ0ZHROUkNFUEdBNUVEWUlsQXhobUdRUUNiQmtOQkFRa1hRQndDRVVJa2lRTUdFOEFHQWxjR0pXVWh4Z01SWFFRSkFTb0dRbWpKeEFZQVJsZEJ3aTVkVjlFcldDeHY1VlF0TFlZdUFJWWwwY01CQVVQV3lTRmlpV3dwTUNjMDBTSXNLRWxXbzRGQXBxbEdlRnZSZ2ZJamhrRGtRNEFEcEY4d0JtZmNrYXdEeWdEQjJrSHZPUTJnVUt5b3NrNmdnaUJSTGlnb0tIRGhoSjRKVnhSd2NLQ2l4Z3ZUcUF3c2FQSGp5QkRpaHlwNGdWSkdDSk9BOElJQVFBN11dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2xpZ2h0Ym94LWRlLXByZXYuZ2lmPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtSMGxHT0RsaFB3QWdBTVFiQUlHQmdmVDA5S3VycS8zOS9XRmhZZC9mMzl6YzNMcTZ1bloyZG10cmE1YVdsc0RBd0tDZ29Nckt5clcxdFl1TGkrcnE2cmEydHZ2Nys4ek16TnJhMnY3Ky9ydTd1K1hsNWRYVjFWZFhWLy8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQ0g1QkFFQUFCc0FMQUFBQUFBL0FDQUFBQVh1b0NhT1pHbWVhS3FhMjdhK2NQeTZjbTNmZUs3dmZPLy93S0J3U0N3YWo4SUFac25FQkRTRkFrbjUxRFF4U0JFbXcrMW1zQUFBYVl2VmVMbUVjbEhKZEdRSXovRDRLOG9vbUFKQ0ppc0tJQWhTR25JalpIVUNKQXgwV1FBWkN5T0RXb29aaHlNUEdWVkhpUXdra0ZhU0NXRUFlcFJIQ3hsaW5LaVJaUm1nakJtQlJ3VUVDWmdpb25Pc2xBVVpDTFpEQVFtQUpncVhJMjY2SXdJWm0wYVdkMDFQRGIwTkRRb0VDQ09USkFpS0FvNUJyMmRsQzNwY3Z0cWtVSzExcW53aUVFN3Y4MFVYRkFiNCtmZ0Q5QzhURVFjQ0NqeGdRVUsvRlJVR0tGeTQ4S0REaHhBalNweklod1pGRlMxQ0FBQTddXT48L2RhdGE+Cgk8L2ZpbGU+Cgk8ZmlsZT4KCSAgPGZpbGVuYW1lPi9saWdodGJveC1lbi1jbG9zZS5naWY8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW1IwbEdPRGxoUWdBV0FOVUFBUC8vLy8zOS9mcjYrdmo0K1BYMTlmRHc4T3ZyNitucDZlYm01dVRrNU4vZjM5emMzTnJhMnRmWDE5WFYxZExTMHN2THk4akl5TDYrdnJlM3Q3UzB0TEt5c3ErdnI2aW9xS09qbzU2ZW5wdWJtNWFXbHBHUmtZK1BqNHlNakllSGg0S0Nnb0NBZ0gxOWZYWjJkbk56YzNGeGNXNXVibWxwYVdkbloyUmtaR0ppWWw5ZlgxMWRYVnBhV2xWVlZWTlRVMUJRVUU1T1RrdExTMGxKU1VaR1JnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBQUhBUDhBTEFBQUFBQkNBQllBQUFiL1FJQndTQ3dhajhpa2NzbHNPcC9RcUxRWm1GcXZSQUhuZ1l4c0JFYUN3M0VZSGh3RTVJRnlrWlNMWjdSUVBLNFBCeHphaW1HRXRHZ2NhWE1aTDRVdkgwSVhMdzVIRW9hRkYwTUVJbzhSQUE2UGhVTVdOQzh4S3cxRUVTMHhMelFZUTVRZlkyeUppMFlSaDJVS2xCUkNIQzhYRGhFWlpaZ2NkWXhDQmlRekx6SXFDMEtqcFRNaEJVSVVMeGxIaXNKRUtDaUNBQVFvTEVJdkpFYVlrVWNHSXpLZUtBdCtwVFFnQTBQZTIwVFdSUXJUUllTTUx5amp1VW5PR1lPQmd0UXhFTnNPSEVKaWo0ZzBTNklBNGdwRUJKT0lDeGpmRURtWERnYU1ZeC9pRFNISDhGVTlreU1CVG5yQmd1S2xUTmVJRkNqeDBaTUdNQlVCVmtQcEt1YkwyWEtYS0xGUThITkpnUk0xWTNRd2dvOURTWitPYkJGeEpLR0lJeEZGa3l3d1VjcmpNUTFWaUxEd3Q5T25Ra1JFY0drY1F1SkYxaU1MVUtTTGtXTEZSeGxnVHdLOTFOTUlKYUpDOEdFMTR1MXRrUVVyMHNrZ2tTQ0NWN3hodWJVRjVnQ1hKVVVjTUdKa3BJQUZDd2tPS0hnR25DSERtQS81TEdvR3lpQ3hDeGtqREFpWjhEanZIRXFGV0ZBRG9DaFRPUWNvREtFQURBQzFvZDJZTWdsaHdFSXhDZGxES3Nqd1NLTUNuREZRRkpBeEVxZEpnUTR5Wmp3M1VpR0dqQk44c0tqUDRtSDhFUXNuRUt5ZlAwUUF2U0lCNU5QZno3Ky8raUFBT3c9PV1dPjwvZGF0YT4KCTwvZmlsZT4KCTxmaWxlPgoJICA8ZmlsZW5hbWU+L2xpZ2h0Ym94LWVuLW5leHQuZ2lmPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtSMGxHT0RsaFB3QWdBT1lBQVAvLy8vMzkvZnY3Ky9uNStmZjM5L1gxOWZQejgvSHg4ZS92NyszdDdldnI2K25wNmVmbjUrYm01dVRrNU9MaTR1RGc0TjdlM3R6YzNOalkyTmJXMXRMUzB0RFEwTTdPenNyS3lzakl5TWJHeHNMQ3dzREF3THk4dkxxNnVyYTJ0clMwdExPenM3R3hzYSt2cjYydHJhdXJxNm1wcWFlbnA2V2xwYU9qbzUyZG5adWJtNW1abVpHUmtZK1BqNDJOall1TGk0ZUhoNFdGaFlPRGc0R0JnWUNBZ0g1K2ZucDZlbmg0ZUhaMmRuUjBkSEJ3Y0c1dWJteHNiR3BxYW1ob2FHWm1abVJrWkdKaVltQmdZRjVlWGx4Y1hGcGFXbGhZV0ZaV1ZsUlVWRkpTVWxCUVVFNU9UazFOVFV0TFMwbEpTVWRIUjBWRlJVTkRRLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFSEFGTUFMQUFBQUFBL0FDQUFBQWYvZ0ZOVEFJU0Zob2VJaVlxTGpJaURqWkNSa3BPVWxaYVhtSm1hbTV5ZG5wK2dvYUtqcEtXbXA2aWdBUm9tRjRVQ0hDSUFCaUFsSnJjbkR4UW9yb1FLSlJzT0tTWWxJeVVuSUFTZUFTNVBReEdFQXpaRkFBeENTVUZDUWtVWEREMUdFQURNVFJnV1NFSkdTa05ET0FmTExVbE1Nc29ETlVRQUMwVXpDUXo5eWhoTllBVEl3R1JGZ0FFTkZxaDRVbUhCZ2dETFhQeDR3UVFFQUFFMDdpMHc4aUlSQ3lVaGR2QkFZS2dFbEFXaG1QbG9nT09JQXdBWjhRM2hVUUpGQ2hJRkNCRzRzY1JJaFVNbW9EUklLWkhBaENUellpNElZa1NIeUJydXhNMTRVaVNjb2FCRFZVazhFQ0JGa3hJeGh1QXJJZ05CQWdVS0lBSVFvZVNFa0J0UmlRbGhKZnFEWklFZVJZSUF3V2VrQmFJSVIyb0ErUERreEZXaGRFa0NNTGZrQno0aU9UcEk5dkJnQUEwa0VnQU11SkZrUXFHNXFscnNpSnRDU1E5OFFKcEFXUzNsaEFnbmhnbFJPREphYnBTc29BZ1FVQ3RPdDdnRENNd21TRkRnUUZwREJ4WUlJRlJBd2ZKVTBDa0ZFQkNndW5YcjBUWHh6czY5dS9mdjRNT0xkelJla3FEeWtBSUJBRHM9XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vbGlnaHRib3gtZW4tcHJldi5naWY8L2ZpbGVuYW1lPgoJICA8aXNkaXI+MDwvaXNkaXI+CgkgIDxkYXRhPjwhW0NEQVRBW1IwbEdPRGxoUHdBZ0FPWUFBUC8vLy8zOS9mdjcrL241K2ZqNCtQYjI5dlQwOVBMeTh2RHc4Tzd1N3VycTZ1bnA2ZWZuNStYbDVlUGo0K0hoNGQvZjM5M2QzZHZiMjlyYTJ0alkyTmJXMXRUVTFORFEwTTdPenN6TXpNdkx5OG5KeWNmSHg4WEZ4Y1BEdzhIQndiKy92NzI5dmJ5OHZMcTZ1cmk0dUxhMnRyS3lzcTZ1cnEydHJhdXJxNm1wcWFlbnA2T2pvNkdob1orZm41NmVucHljbkpxYW1waVltSlNVbEpDUWtJK1BqNDJOallXRmhZT0RnNEdCZ1lDQWdIeDhmSHA2ZW5oNGVIWjJkblIwZEhKeWNuRnhjVzl2YjIxdGJXdHJhMmxwYVdWbFpXTmpZMkppWW1CZ1lGNWVYbHhjWEZwYVdsaFlXRlpXVmxSVVZGTlRVMUZSVVU5UFQwMU5UVXRMUzBsSlNVZEhSMEpDUWtCQVFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVIQUZrQUxBQUFBQUEvQUNBQUFBZi9nQUNDZzRTRmhvZUlpWXFHV1ZtTGo1Q1JqNDZTbFphWG1KbWFtNXlkbnArZ29hS2pwS1dtcDZpcG13TVlJQ0FmRlFTQ0U2NGhHUXVDQng0ZnZMd01HaHdCZ3dNYkc2SUZPVkZKeXpzUUFDMVFTa3BJUmlrQUVVdE9TMHhNU2hjMVVSS0RFMG8yeHpwQ0JRY2xWRFlDTFVzU0F4RkJUUlFPVWpRUUZQd0JIMU11QnFtb2d1RWNFQUVBQWpEeFlZQ0ZrZ2FDVmtUNXdHREtpa0lJaUF3cEFLQ0FqeURDUWhYUUVRUkJnUkpXYkFSZ3NVVEVoQkJIa2tCdzhBUkhpQkVrUENDTThVUURBQXRWUkl3cWdDT0traVZKZWt3QXdBS0trU1ZQZ0hRQUlHR0praUpHanVBWUFHRENGQmtBWkNSaE1EU0hFUThkS01oNnRrUURDaW9qblFSSmlETERBWVFJRGtMdUVBTGh5QXlFNTM0WWNwRkVnUUFmU0E1UW5XTE5FSWNwTjVJVUhLb0RDRmRDTHBRNEFDQ0N5b3RyVVdoVUdHMGhnYUFFUTZyd0NIbU1CNUhMZzJBOGNXYWdSNVVORDU1WXVjSWJpd2xCQVdCY09WRXF3SUlHckFVcGtMQldRWVVGQXlSTW1ENGR3YUFERkRpcTJuNkp3SUFCQXNJTCtFNGdPZmRFQWdLb1g3Lyt2UHYzOE9QTG4wKy8vaVZLOWhVMUNnUUFPdz09XV0+PC9kYXRhPgoJPC9maWxlPgoJPGZpbGU+CgkgIDxmaWxlbmFtZT4vbGlnaHRib3gtaWNvLWxvYWRpbmcuZ2lmPC9maWxlbmFtZT4KCSAgPGlzZGlyPjA8L2lzZGlyPgoJICA8ZGF0YT48IVtDREFUQVtSMGxHT0RsaElBQWdBT1lBQVAvLy8vMzkvZnI2K3ZqNCtQWDE5ZlB6OC9EdzhPN3U3dXZyNitucDZlYm01dVRrNU9IaDRkL2YzOXpjM05yYTJ0ZlgxOVhWMWRMUzBzM056Y3ZMeThqSXlNYkd4c1BEdzhIQndiNit2cnk4dkxtNXViZTN0N1MwdExLeXNxK3ZyNjJ0cmFxcXFxaW9xS1dscFo2ZW5wYVdscFNVbEpHUmtZK1BqNHlNaklxS2lvZUhoNFdGaFlLQ2dvQ0FnSDE5Zlh0N2UzaDRlSFoyZG5OemMzRnhjV3hzYkdscGFXSmlZbDlmWDFwYVdsaFlXRlZWVlU1T1RrdExTMFJFUkVGQlFUOC9Qenc4UERjM056SXlNakF3TUMwdExTc3JLeWdvS0NZbUppTWpJeUVoSVI0ZUhod2NIQmtaR1JjWEZ4SVNFZzhQRHcwTkRRb0tDZ2dJQ0FVRkJmNEJBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoK1FRRkNnQlZBQ3dBQUFBQUlBQWdBQUFILzRBQWdvT0VoWWFIaUltS2k0eU5qUUdHQkFnQ2pvWUlFaGNSQ0lNQ0d5d1NsWVFQS3p4QVBDc1FrQVFuUHh1aGdnZ3dTbFMwU1RBSUFRRVFISnVFQ0EwRWlaMUJ0TVZDRzVBQXViNHVPUi9CaHdRa1I4VzFKTkNHRWtKUU5RZUlCQ05GMVZSSElaU0hDTTNQaUFFU1BGSFZQQlRKNkEvWWh3Y2lQazFQVEQ0akJWNFZDbERnQVlnVk1sSm84Q1p3RUFFTEttU28yTURnd0RsSHl6aHQ2TkVFaXI4S3J5Q1FJTUZnRUlNYTQyYmNXNFRneFpJa0tSaEs4REhPUjY5R0RITFFxdEVyQW85eFBHNHlLbEFDaUE4UkFRRWNXTEdrR0pNVEZ4c2RvRUNCb1RJSU5ZUWtFU0tqWk1PQkREYUUyQURCNHRkb0ZVaWM0RVV2VVVaMkZwVjJJRmtTeElSUVF3RW9rTGlRRkowTUo4VitZSEM3QVFnVElkY1FOZGdocGRnUkVja0lGTUIyUUFZVVdqWWNJRUpRNHpLdElCb0FDSmlBNGtXSVhnVldPSmtDeGNiZFFRRTJObWxDaEFVRFhUbWNRQ0ZDd2x1N0hFQnlkSWhhaUlBbkdDUWFCQUNIcEZpT0I0SUNQTWdRWWFVaEFRZ1FRQU9YaEJhVTU0VGFocEtRZXplSnZtZEZYMkF4ZzJUNlFnSU9hSGNVQ0FBaCtRUUZDZ0JWQUN3QUFBQUFId0FnQUFBSC80QlZnb09FaEFnT0RnaUZpNHlNQkJZdk96c3VGUVNObDRzWE9VMVVWRTA1RnBpaVZRZ3VTNTJkU3krS280VVNDQUlRT1ZPb25Ua1FyWVE3UERFWkZEbTFWRkMzdVF5RVRUc2ZMNmVvVEt1RENBRzVWVXNxVlR0T25VODZHSVF2REFDTkk0c3lDQk10UER3c0VwYWtOallRNFl3ZVFvUktKNVlFQ0FqdGdyRVFBdVF0WWpDRFV4VW5QQ3dJWkFTZzRTVUNGVjd3NkZGalE0R0YwNm9VaUlDQkFnUUpyd2hnbkZiZ1F3NGZPMGpBR3BrUlF3OG9uWVNFa0RidFVSVUpBUW1ZWUZZRmlneVIweHJrT0ZJREFRQUNKM2o2QkpycmdRMGtNc0JWeWRDelNoUWhJQUt3dkhTQkJFNTVIM0NnVkxuMUVnQ3RBamRpa0hEQVljWkdBSkVFQkJCUW9OOWJSZ2Myb0xocHQ1Ryt2b1UrK0JCa1l3TE5SZ2hJeUJDQnFjYWdKQ1VBRS9KQUJBcVFERnR0REZxQ29nQ2hnSU1DaUVoU1pVZ0hsZ1ZPRkRub1l3UG9DQ05HUkFBTm9NR01IaTZrTWtKdzR0Mkh0b1NUS0xIaFFCNEFCSy9LQmlqQVlHV1ZBQnlJQ0NMQzRYQkR0MmJkQXNBUVJGQVFETmJ2Q3VJOThZUlI4WXZNVFRpUGZ0SDFWb0VBQUNINUJBVUtBRlVBTEFBQUFBQWVBQjhBQUFmL2dGV0NnNFNFQUFBQkFJV0xqSXVJQ0JNWEVBU0tqWmFFQVJBdVBrQTVJZ2lYb1FBTUwwcUNVRDhnQklJRUJhdVdCQXhWc2dJYVA0Uk5NQXdGRkNRbklSQ05CUjgxT2pVY0NDQkRoVFpWSVRwRlNVSTFGUU9GdFQ1UVVGVThHeGs5aXlNOVVGVGxURFVPaFFjclRZUW5FQ3RKZ3owZktrbmwrRDRiaGdndlRvTk5WRlJCUUNKSEZSZ1hFTGhvZ3ErY0VCQ0ZDSVJZSmlqSWh3QlZNQTRpVU9JZXZpZy9OQlFDZ0dDRkR5STlUc2hpZEdISEUzeEpZRFFZU1FCQkJoQVlFR2hjTkN3SGtTTkNabEI0VmVWUXEwUUJFbDBpRU9IRENBNHJCUUVvSUdIRWlBZ0NRaEVpUUhTUWdBdzZqaURKWVVIcnlBQUVyQUZZMTY1S2t4Wm1tQTA5S1BHaEtBSVoyd1RWaURzSVFNdU5KSWJrSmNGWEtvSU5RKzJlTURpcmNLTUFDQjQ0NW50b2NxTkRCUTRvRlZYNXNRUVVMalIwWlVSU3dvS2RoaHJZYU9KRVh5Z0NKNERNaUdySWdwQkJKVUlocU9Ha3h3VFNFSFE0Z1dLeGJ5eFFYai9ZS0lGOEVZRzZPVWlzbkNyQ3hnc0pXeEVVMEFyaFFGOEk0SktjMkc2NWJ3UWVVTVNUTDEvMHdBanIyTm4zTFNCcjlLSkFBQ0g1QkFVS0FGVUFMQUFBQVFBZ0FCNEFBQWYvZ0ZXQ2c0U0ZWUjBaRElhTGpJVUVJenBDUHk0U2paYUZBUlE4VUZWVVJpb0lnZ0NqbDFVQUJBWUVvd1FnUm9OUU5oQUNDQk1XRUtxTkFBd2dLaU95QkI5RmhoSXJQRDQySUFnQWpBZ3JRazFFTHcwQkR6ZE9WVkJDSkJVeFNZSlFQUjBFaXdBVFBvTkFHNmNaTlQ0OEpBOGNRSVJOTDZHR0FCWHpna0llb3dFSUdqQWdJQUFFRVVLd0hwQkRVQ01KbENRMktva2lCU0NERDA2Q2tyQzRaeWhBaFJVNVhHUVl0NGhCaTROVm5PellRQklmUUFnSVdob1NBT0ZFRGg0MWZNWEV0NnlVcUFJUUxudzQ0VUxGQjBXaURBaVVXU3FBaFJwRW1DVDVnZUllZ3hNNmNvQTQ0Rk1RQWhsTXFJaWxJbVJFRlFFZGdxVGtJYUZuS1FsQXNNYUtkVktqQ2dFU1IvaHBjSHRKQWhHNVZLRGdxQkxnd280bFNXcEE2Rm9GUW84b2N1c040ckRpQkFXbWxnaWNJQ0psTGc4TWd3Z2dPQkNBc2FBSEtYd1FFV0xqQTFmVHpJUjJrRkNBRVVYWWxnQWdpS0NnOUNVQUFuem5hdURDUncySnVTQ2dZR2twd0ljaFZZeVErTDNCeDRyWGpBSm82TkZrRVlMYWhIWlJFSkFiQVFnWkl6Z0srRWlDbzZuZ3BVN3RISFJnUlpJZUY0VGpka1FDU0VTKyt3Mml5d1lWZ0JjZ1BzRUJ5RWdnQUNINUJBVUtBRlVBTEFBQUFBQWdBQjhBQUFmL2dGV0NnNFNGaG9lSWlZTVVFQVNLajRZY05qMDFIQVdRbUJFNVRsVk9OaE1CbUllaFZRRWFRb00vSEFKVkJBMFRtQkFqSkJTT0FSVTlVRlZRUEJjQ0J4czFQSkFOTVVSSU5oYWhDQ1kvUmo0a0NBUVlPazJkUG9vWWcwUWtqZ0FJR3lRWkNBQUZKa2lEU2l5S3VWVkNJZDVWQUFFQTlRY25TWU5NTHd5SkpEczlWalFnWllnQUJ4KzZvQVFaY1FrUkFnb1hHTkJEOUkwRUR5RTlVZ3hVRklBZUFFVUNFRlR3d0VFQ2d3SUVSUjJhQjA0UUNRbU9CczJicUpJQWlCMzVpdFNRUUlvQUJSSWV5S2xza0VPWG9DUXFFQWlDVU1QSXdwaVlMQkFoQkNWSGcxSVdzREZab1ZRVUJWU0RvTmh3SU9qQkN5QThPa0NGeE1DR05VRkdxRkEwRk5CQVE0VURIMVZ1d0RIa1NKQVhFUWdHRUpBUzBnRUlGa0NVTUFFQ2dvQzhLZ2NSa0hEQ3hvNGFKQ0NnaEJ4NWFZd2lWS2c0OFRHaUs2SUdGUlFSSUNGa1NtalJOaVJBUW1HNjBJRVdUVjZIRHVJaGtRUWRTMm8wNER3SWdZdmN1b0YwU0lSZ3hBeExuRkcySWpGRWQ1TWNzQ2dTa0ViODVVY0lMNGc4Z2RLa1IybEY5VGl2M3ZHQlZJVEtPV3FFcUsyeVFtYklDQ0JFT05sNWtBQUNOUFVub0NHQkFBQWgrUVFGQ2dCVkFDd0NBQUVBSGdBZkFBQUgvNEJWZ29PRWdnQUJCQU1BaFl5TmpBQUZGU01kREFLT2w0d0JGemxFUHljTW1JMEFpNE1FSlVsVlVEb1Vob2NCcEtJQkFxT0NCQ1JJZ2prU1ZZY01GUlFJQWFJSEZ4OFFsbFVDRXpSQlBJWUJFak0rUFN3UXdvVUNHenBCTHcra0JCQWRGb1lJS0xoVlFpTUZqQVVyUzFVK0d0ZVBERFZRaEFpTUJDQTlSRFc3amdBZ1dJR3F5aEFTK1JwOUlIR0JBQ1lDRm14VUFSSURZQ01DNjBKVklXQ1JBQ3lObUFLSUpFQmdGc2hMbzhCOUNGSGhBSzhBQlJBNFBNbExRTVFoUkhpUXFCSUF3UWdXR1dqeVl2RGkzU0FMQkREc1FBSUQxRWtBRW5iY3EwS0ZTQWlvTmFxVVNBZ1NBQVFiVTZjRTRiQXhRaFduVDMzK2FPS2tDSXdHUXJBSkhTTHdnSVFOR3lrbXpCUUtRQUFERFNKQVhLZ2lnV3ZjQUJCVStDQVNaRWJEZ0s5UUlpQWhaTkNSRjNBZkllQWdZYStCQ0w4WURJaGd3d21oSGhnYUNjREFRMFVDUVF4TThCZ1NwTWFHREZJTEJjMEVBY1dneVVLb0NGK1NZOFFNSllRa09wcFh4WUpVNGNLUnFBQ0JJMG1UdUJ5QVFCZnVKRVlWRENscXZPaEFNME9QS2R1YnNKQ0pvSUZoalJCbU1JRXVKUWlJdlhFSlpNaVJCSXFUSUN0a0ZsY3BGYWhnd3d3akNIaEpJQUFoK1FRRkNnQlZBQ3dDQUFFQUhnQWZBQUFILzRCVmdvT0VoQUNIaFltS2lnSUlEUWdCaTVLTEVTbzFKQWdBazV1REpFSk5PeGFSbkp4RlVENFhvMVVGREF3RWtnQUZDcStFTHprbG1ZSUlKRFkxSDVDS0J4OHRIQVdFREJFSUFvSUJGenhPVERrVXk0VUFFamxKTlJDVEJDSkhna0FjdElZTUt6MG9ESlBOUEV4Sk5oT3FoQUlRRzl1VEFNSXlMOFdTQWRTYkFBaTBJcUNKbE1FcWlBN2VFOGpnZ0NvQUFRb3FSRERDaGcwVER5SVJnR0FoMTBFQ0gzNDRxU0treEFFQURGTFl5QkNQRXdJVlRBUkJzZUdnQ29JUUtTUzAzSFRBeExjcVRHWWdRRmdBd1RpREFTcllJRkprQndoakNxc1JzR0RpQkFlUGdoaG9FUEZCd29GN0FBUUlJSURBYUNFSUszd01FV0xqdzFkRkFMOFFUTmpRTVdJaEJDaUlRS0ZDcFVtT0MzQVJpTWdCaE1lSkJpMHY3T0RMK01nSlNBWVdHQTI0b2NkSUtFSXdFU0xRQVlnVXhuMWpRTGl3SXNjbENBaEsvS3pTWkVhRFFoaDRnS2FpeEVVSGJGQ2dERmxCZ1FRUlFqQmVFM3J3SXNrVXZxZElxRUJDeUFlSURVQ2hPUG1oaUFBR0cwT1dIT2xSQW9PTUpvU0trR0RRd2NhT0hPTVZGZWpONGtTSFZpeVVFQklDNHBXRUN4S0dTaXBxbGdBSEgzdFZvWVFORWtnVVZWd2s2Q0FFRURWZ2NGUlVSRkh3d1FZTlBLaElJQUFoK1FRRkNnQlZBQ3dBQUFJQUlBQWVBQUFILzRCVmdvT0VoUUVEQVlXS2k0eUNCQklhRFltTmxJb0FFQzg3SlFpVm5ZTUFGRHRITUF5RkJ3UUFuWWVUZ2dna0x4d0ZoQ0FySUFpcGpRSU5HZ3lzVlFnTXNvVkpQQnVvalFja09pRENqUjlEVlVJang0d0VHU2tVQkpVUk5UMHlFcjZMQlFqYWxZOGFFdFNMNVo2REFnRzRoUVVRR2g0WHBlMlVCQmd4UFQ4N0tSN2tFeFNnUUlGM2dpallVRUtGQ3BRaUp6aTFlMFRpaEFaT3JvZzAzTmlEUXJ0TE1Zb2swV0dNQVF3bUd4c08yZEF1QUFZZmdveVlPSUJnUlpLVVZJSmthQ2toUnhNb1FhWVIrTkFEeWtZbk5RUzJReURDeGc0VkVCSTFRQUZraVJNa1BEbzA2d1FBQVlVTERkZzFDTEVpeGdvU0dpSWdFUEF4QUx4Q0JNZzRoWUNodzhZSkNXd1pDVURRWUcwakFoVnNKSUhpWkVpTEJ0VW9wS2loSWhzakJDZHVEdnJSUVJ1QXk2a0NRSWd4T0VtTkNPR3FkSDNSaEZBUkVnZ1FRSkRnQUpVQURUQUYrZURBamhBQ0ZaSUZDUkVCWVlSVEdCa0s3Q3RhQllvUERiVUhFZGpBbzNRVnp4bEUrSER5M0VZRkFnMVdDRWtpeE1XRDBLSVJnTERSZzRlTURSSUtEU0Z4S2dJSkZ5VFNOUXFBUU1LR0RCQlV6M0JlaFVpSkE2a0E0MWNsQWhTWVNFWlRGTmNEYlFPdEU0RUxQMVRCQXdrTXhOTmdJUTE4TU1JdjRCVVNDQUE3XV0+PC9kYXRhPgoJPC9maWxlPgo8L3Rvb2xib3h0cGw+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/ToolBox-tpl-socialshareprivacy-socialshareprivacy.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHRvb2xib3h0cGw+Cgk8bmFtZT5zb2NpYWxzaGFyZXByaXZhY3k8L25hbWU+Cgk8dmVyc2lvbj4xLjQ8L3ZlcnNpb24+Cgk8dG9vbGJveHZlcnNpb24+MS4zLjM8L3Rvb2xib3h2ZXJzaW9uPgoJPGFib3V0PjwvYWJvdXQ+Cgk8c2VjdGlvbj5zb2NpYWxzaGFyZXByaXZhY3k8L3NlY3Rpb24+Cgk8dHBsc2VjdGlvbj48L3RwbHNlY3Rpb24+Cgk8anF1ZXJ5PjE8L2pxdWVyeT4KCTxqcXVlcnlfb3duPjA8L2pxdWVyeV9vd24+Cgk8b3B0aW9ucz5ZVG95T250ek9qZzZJbWx1Wm05c2FXNXJJanR6T2pjME9pSm9kSFJ3T2k4dmQzZDNMbWhsYVhObExtUmxMMk4wTDJGeWRHbHJaV3d2TWkxTGJHbGphM010Wm5WbGNpMXRaV2h5TFVSaGRHVnVjMk5vZFhSNkxURXpNek00TnprdWFIUnRiQ0k3Y3pvNE9pSmhaSFpoYm1ObFpDSTdjem94T2lJeElqdDk8L29wdGlvbnM+Cgk8dHBsY29kZT5QR1JwZGlCcFpEMGljMjlqYVdGc2MyaGhjbVZ3Y21sMllXTjVJajQ4TDJScGRqND08L3RwbGNvZGU+Cgk8dHBsY3NzPkxuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ2V3MEtJQ0JqYkdWaGNqb2dZbTkwYURzTkNpQWdiV0Z5WjJsdU9pQXlNSEI0SURBZ0lXbHRjRzl5ZEdGdWREc05DaUFnYkdsemRDMXpkSGxzWlMxMGVYQmxPaUJ1YjI1bE93MEtJQ0J3WVdSa2FXNW5PaUF3SUNGcGJYQnZjblJoYm5RN0RRb2dJR2hsYVdkb2REb2dNalZ3ZURzTkNpQWdaR2x6Y0d4aGVUb2dZbXh2WTJzN0RRcDlEUW91YzI5amFXRnNYM05vWVhKbFgzQnlhWFpoWTNsZllYSmxZU0JzYVNCN0RRb2dJRzFoY21kcGJqb2dNQ0FoYVcxd2IzSjBZVzUwT3cwS0lDQndZV1JrYVc1bk9pQXdJQ0ZwYlhCdmNuUmhiblE3RFFvZ0lHaGxhV2RvZERvZ01qQndlRHNOQ2lBZ1pteHZZWFE2SUd4bFpuUTdEUXA5RFFvdWMyOWphV0ZzWDNOb1lYSmxYM0J5YVhaaFkzbGZZWEpsWVNCc2FTQXVaSFZ0YlhsZlluUnVJSHNOQ2lBZ1pteHZZWFE2SUd4bFpuUTdEUW9nSUcxaGNtZHBiaTFzWldaME9pQXhNSEI0T3cwS0lDQmpkWEp6YjNJNklIQnZhVzUwWlhJN0RRcDlEUW91YzI5amFXRnNYM05vWVhKbFgzQnlhWFpoWTNsZllYSmxZU0F1Wm1GalpXSnZiMnNnZXcwS0lDQjNhV1IwYURvZ01UZ3djSGc3RFFvZ0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenNOQ24wTkNpNXpiMk5wWVd4ZmMyaGhjbVZmY0hKcGRtRmplVjloY21WaElDNW1ZV05sWW05dmF5QXVabUpmYkdsclpTQnBabkpoYldVZ2V3MEtJQ0IzYVdSMGFEb2dNVFExY0hnN0RRb2dJR2hsYVdkb2REb2dNakZ3ZURzTkNuME5DaTV6YjJOcFlXeGZjMmhoY21WZmNISnBkbUZqZVY5aGNtVmhJQzUwZDJsMGRHVnlJSHNOQ2lBZ2QybGtkR2c2SURFME9IQjRPdzBLZlEwS0xuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ2JHa2daR2wyTG5SM1pXVjBJSHNOQ2lBZ2QybGtkR2c2SURFeE5YQjRPdzBLZlEwS0xuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ0xtZHdiSFZ6SUhzTkNpQWdkMmxrZEdnNklERXlNM0I0T3cwS2ZRMEtMbk52WTJsaGJGOXphR0Z5WlY5d2NtbDJZV041WDJGeVpXRWdiR2tnWkdsMkxtZHdiSFZ6YjI1bElIc05DaUFnZDJsa2RHZzZJRGt3Y0hnN0RRcDlEUW91YzI5amFXRnNYM05vWVhKbFgzQnlhWFpoWTNsZllYSmxZU0JzYVNBdWMzZHBkR05vSUhzTkNpQWdaR2x6Y0d4aGVUb2dhVzVzYVc1bExXSnNiMk5yT3cwS0lDQjBaWGgwTFdsdVpHVnVkRG9nTFRrNU9UbGxiVHNOQ2lBZ1ltRmphMmR5YjNWdVpEb2dkSEpoYm5Od1lYSmxiblFnZFhKc0tGdGJjbTl2ZEY5MWNteGRYUzl0YjJSMWJHVnpMMVJ2YjJ4Q2IzZ3ZhVzFoWjJWekwzTnZZMmxoYkhOb1lYSmxjSEpwZG1GamVTOXZibDl2Wm1ZdWNHNW5LU0J1YnkxeVpYQmxZWFFnTUNBd0lITmpjbTlzYkRzTkNpQWdkMmxrZEdnNklESXpjSGc3RFFvZ0lHaGxhV2RvZERvZ01USndlRHNOQ2lBZ2IzWmxjbVpzYjNjNklHaHBaR1JsYmpzTkNpQWdabXh2WVhRNklHeGxablE3RFFvZ0lHMWhjbWRwYmpvZ05IQjRJREFnTURzTkNpQWdZM1Z5YzI5eU9pQndiMmx1ZEdWeU93MEtmUTBLTG5OdlkybGhiRjl6YUdGeVpWOXdjbWwyWVdONVgyRnlaV0VnYkdrZ0xuTjNhWFJqYUM1dmJpQjdEUW9nSUdKaFkydG5jbTkxYm1RdGNHOXphWFJwYjI0NklEQWdMVEV5Y0hnN0RRcDlEUW91YzI5amFXRnNYM05vWVhKbFgzQnlhWFpoWTNsZllYSmxZU0JzYVM1b1pXeHdYMmx1Wm04Z2V3MEtJQ0J3YjNOcGRHbHZiam9nY21Wc1lYUnBkbVU3RFFwOURRb3VjMjlqYVdGc1gzTm9ZWEpsWDNCeWFYWmhZM2xmWVhKbFlTQnNhUzVvWld4d1gybHVabThnTG1sdVptOHNJQzV6YjJOcFlXeGZjMmhoY21WZmNISnBkbUZqZVY5aGNtVmhJR3hwSUM1b1pXeHdYMmx1Wm04dWFXTnZiaUF1YVc1bWJ5QjdEUW9nSUdScGMzQnNZWGs2SUc1dmJtVTdEUW9nSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzTkNpQWdZbTkwZEc5dE9pQTBNSEI0T3cwS0lDQnNaV1owT2lBd093MEtJQ0IzYVdSMGFEb2dNamt3Y0hnN0RRb2dJSEJoWkdScGJtYzZJREV3Y0hnZ01UVndlRHNOQ2lBZ1ptOXVkQzF6YVhwbE9pQXhNbkI0T3cwS0lDQnNhVzVsTFdobGFXZG9kRG9nTVRad2VEc05DaUFnWm05dWRDMTNaV2xuYUhRNklHSnZiR1E3RFFvZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTmpZMk03RFFvZ0lDMXRiM290WW05eVpHVnlMWEpoWkdsMWN6b2dOSEI0T3cwS0lDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURSd2VEc05DaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dOSEI0T3cwS0lDQXRiVzk2TFdKdmVDMXphR0ZrYjNjNklEQWdNM0I0SURSd2VDQWpPVGs1T3cwS0lDQXRkMlZpYTJsMExXSnZlQzF6YUdGa2IzYzZJREFnTTNCNElEUndlQ0FqT1RrNU93MEtJQ0JpYjNndGMyaGhaRzkzT2lBd0lETndlQ0EwY0hnZ0l6azVPVHNOQ2lBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0kyWmtabUpsWXpzTkNpQWdZMjlzYjNJNklDTXdNREE3RFFvZ0lIb3RhVzVrWlhnNklEVXdNRHNOQ24wTkNpNXpiMk5wWVd4ZmMyaGhjbVZmY0hKcGRtRmplVjloY21WaElHeHBMbWR3YkhWekxtaGxiSEJmYVc1bWJ5QXVhVzVtYnlCN0RRb2dJR3hsWm5RNklDMDJNSEI0T3cwS2ZRMEtMbk52WTJsaGJGOXphR0Z5WlY5d2NtbDJZV041WDJGeVpXRWdiR2tnTG1obGJIQmZhVzVtYnk1cFkyOXVJQzVwYm1adklIc05DaUFnYkdWbWREb2dMVEkwTTNCNE93MEtJQ0IzYVdSMGFEb2dNelV3Y0hnN0RRcDlEUW91YzI5amFXRnNYM05vWVhKbFgzQnlhWFpoWTNsZllYSmxZU0JzYVNBdWFHVnNjRjlwYm1adkxtbGpiMjR1WkdsemNHeGhlU0F1YVc1bWJ5QjdEUW9nSUdScGMzQnNZWGs2SUdKc2IyTnJPdzBLZlEwS0xuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ2JHa3VhR1ZzY0Y5cGJtWnZMbWx1Wm05ZmIyWm1MbVJwYzNCc1lYa2dMbWx1Wm04Z2V3MEtJQ0JrYVhOd2JHRjVPaUJ1YjI1bE93MEtmUTBLTG5OdlkybGhiRjl6YUdGeVpWOXdjbWwyWVdONVgyRnlaV0VnYkdrZ0xtaGxiSEJmYVc1bWJ5NXBZMjl1SUhzTkNpQWdZbUZqYTJkeWIzVnVaRG9nSTJabVppQjFjbXdvVzF0eWIyOTBYM1Z5YkYxZEwyMXZaSFZzWlhNdlZHOXZiRUp2ZUM5cGJXRm5aWE12YzI5amFXRnNjMmhoY21Wd2NtbDJZV041TDJsdVptOHVjRzVuS1NCdWJ5MXlaWEJsWVhRZ1kyVnVkR1Z5SUdObGJuUmxjaUJ6WTNKdmJHdzdEUW9nSUhkcFpIUm9PaUF5TlhCNE93MEtJQ0JvWldsbmFIUTZJREl3Y0hnN0RRb2dJSEJ2YzJsMGFXOXVPaUJ5Wld4aGRHbDJaVHNOQ2lBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPdzBLSUNCMlpYSjBhV05oYkMxaGJHbG5iam9nZEc5d093MEtJQ0JpYjNKa1pYSTZJREp3ZUNCemIyeHBaQ0FqWlRkbE0yVXpPdzBLSUNCaWIzSmtaWEl0Y21sbmFIUXRkMmxrZEdnNklEQTdEUW9nSUMxdGIzb3RZbTl5WkdWeUxYSmhaR2wxY3pvZ05YQjRJREFnTUNBMWNIZzdEUW9nSUMxM1pXSnJhWFF0WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0SURBZ01DQTFjSGc3RFFvZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURWd2VDQXdJREFnTlhCNE93MEtmUTBLTG5OdlkybGhiRjl6YUdGeVpWOXdjbWwyWVdONVgyRnlaV0VnYkdrdWMyVjBkR2x1WjNOZmFXNW1ieUF1YzJWMGRHbHVaM05mYVc1bWIxOXRaVzUxTG05dUlDNW9aV3h3WDJsdVptOHVhV052YmlCN0RRb2dJR0p2Y21SbGNpMTBiM0F0ZDJsa2RHZzZJREE3RFFvZ0lHSnZjbVJsY2kxc1pXWjBMWGRwWkhSb09pQXdPdzBLZlEwS0xuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ2JHa3VjMlYwZEdsdVozTmZhVzVtYnlBdWMyVjBkR2x1WjNOZmFXNW1iMTl0Wlc1MUxuQmxjbTFoWDI5d2RHbHZibDl2Wm1ZZ0xtaGxiSEJmYVc1bWJ5NXBZMjl1SUhzTkNpQWdZbTl5WkdWeUxYSnBaMmgwTFhkcFpIUm9PaUF5Y0hnN0RRb2dJQzF0YjNvdFltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE93MEtJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEVndlRHNOQ2lBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTlhCNE93MEtmUTBLTG5OdlkybGhiRjl6YUdGeVpWOXdjbWwyWVdONVgyRnlaV0VnYkdrdWMyVjBkR2x1WjNOZmFXNW1ieUI3RFFvZ0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUc05DaUFnZEc5d09pQXRNbkI0T3cwS2ZRMEtMbk52WTJsaGJGOXphR0Z5WlY5d2NtbDJZV041WDJGeVpXRWdiR2t1YzJWMGRHbHVaM05mYVc1bWJ5QmhJSHNOQ2lBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPdzBLSUNCdFlYSm5hVzQ2SURBZ0lXbHRjRzl5ZEdGdWREc05DbjBOQ2k1emIyTnBZV3hmYzJoaGNtVmZjSEpwZG1GamVWOWhjbVZoSUd4cExuTmxkSFJwYm1kelgybHVabThnTG5ObGRIUnBibWR6WDJsdVptOWZiV1Z1ZFNCN0RRb2dJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tTTJZMFpqVTdEUW9nSUdKdmNtUmxjam9nTW5CNElITnZiR2xrSUNObE4yVXpaVE03RFFvZ0lDMXRiM290WW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0T3cwS0lDQXRkMlZpYTJsMExXSnZjbVJsY2kxeVlXUnBkWE02SURWd2VEc05DaUFnWW05eVpHVnlMWEpoWkdsMWN6b2dOWEI0T3cwS0lDQXRiVzk2TFdKdmVDMXphR0ZrYjNjNklESndlQ0F5Y0hnZ00zQjRJQ05qTVdNeFl6RTdEUW9nSUMxM1pXSnJhWFF0WW05NExYTm9ZV1J2ZHpvZ01uQjRJREp3ZUNBemNIZ2dJMk14WXpGak1Uc05DaUFnWW05NExYTm9ZV1J2ZHpvZ00zQjRJRE53ZUNBemNIZ2dJMk14WXpGak1Uc05DaUFnYkdWbWREb2dNRHNOQ2lBZ2NHOXphWFJwYjI0NklHRmljMjlzZFhSbE93MEtJQ0IwYjNBNklEQTdEUW9nSUhkcFpIUm9PaUF4TXpWd2VEc05DaUFnZWkxcGJtUmxlRG9nTVRBd01Ec05DbjBOQ2k1emIyTnBZV3hmYzJoaGNtVmZjSEpwZG1GamVWOWhjbVZoSUd4cExuTmxkSFJwYm1kelgybHVabThnTG5ObGRIUnBibWR6WDJsdVptOWZiV1Z1ZFM1dlptWWdldzBLSUNCaWIzSmtaWEl0ZDJsa2RHZzZJREE3RFFvZ0lDMXRiM290WW05NExYTm9ZV1J2ZHpvZ2JtOXVaVHNOQ2lBZ0xYZGxZbXRwZEMxaWIzZ3RjMmhoWkc5M09pQnViMjVsT3cwS0lDQmliM2d0YzJoaFpHOTNPaUJ1YjI1bE93MEtJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIwY21GdWMzQmhjbVZ1ZERzTkNuME5DaTV6YjJOcFlXeGZjMmhoY21WZmNISnBkbUZqZVY5aGNtVmhJR3hwTG5ObGRIUnBibWR6WDJsdVptOGdMbk5sZEhScGJtZHpYMmx1Wm05ZmJXVnVkUzV2Wm1ZZ1ptOXliU0I3RFFvZ0lHUnBjM0JzWVhrNklHNXZibVU3RFFwOURRb3VjMjlqYVdGc1gzTm9ZWEpsWDNCeWFYWmhZM2xmWVhKbFlTQnNhUzV6WlhSMGFXNW5jMTlwYm1adklDNXpaWFIwYVc1bmMxOXBibVp2WDIxbGJuVWdMbk5sZEhScGJtZHpJSHNOQ2lBZ2RHVjRkQzFwYm1SbGJuUTZJQzA1T1RrNVpXMDdEUW9nSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6c05DaUFnWW1GamEyZHliM1Z1WkRvZ0kyWm1aaUIxY213b1cxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOXBiV0ZuWlhNdmMyOWphV0ZzYzJoaGNtVndjbWwyWVdONUwzTmxkSFJwYm1kekxuQnVaeWtnYm04dGNtVndaV0YwSUdObGJuUmxjaUJqWlc1MFpYSWdjMk55YjJ4c093MEtJQ0IzYVdSMGFEb2dNalZ3ZURzTkNpQWdhR1ZwWjJoME9pQXlNSEI0T3cwS0lDQmliM0prWlhJNklESndlQ0J6YjJ4cFpDQWpaVGRsTTJVek93MEtJQ0F0Ylc5NkxXSnZjbVJsY2kxeVlXUnBkWE02SURBZ05YQjRJRFZ3ZUNBd093MEtJQ0F0ZDJWaWEybDBMV0p2Y21SbGNpMXlZV1JwZFhNNklEQWdOWEI0SURWd2VDQXdPdzBLSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUF3SURWd2VDQTFjSGdnTURzTkNpQWdZbTl5WkdWeUxXeGxablE2SURGd2VDQnpiMnhwWkNBalpHUmtPdzBLZlEwS0xuTnZZMmxoYkY5emFHRnlaVjl3Y21sMllXTjVYMkZ5WldFZ2JHa3VjMlYwZEdsdVozTmZhVzVtYnlBdWMyVjBkR2x1WjNOZmFXNW1iMTl0Wlc1MUxtOXVJQzV6WlhSMGFXNW5jeUI3RFFvZ0lHSnZjbVJsY2kxMGIzQXRkMmxrZEdnNklEQTdEUXA5RFFvdWMyOWphV0ZzWDNOb1lYSmxYM0J5YVhaaFkzbGZZWEpsWVNCc2FTNXpaWFIwYVc1bmMxOXBibVp2SUM1elpYUjBhVzVuYzE5cGJtWnZYMjFsYm5VZ1ptOXliU0JtYVdWc1pITmxkQ0I3RFFvZ0lHSnZjbVJsY2kxM2FXUjBhRG9nTURzTkNpQWdiV0Z5WjJsdU9pQXdPdzBLSUNCd1lXUmthVzVuT2lBd0lERXdjSGdnTVRCd2VEc05DbjBOQ2k1emIyTnBZV3hmYzJoaGNtVmZjSEpwZG1GamVWOWhjbVZoSUd4cExuTmxkSFJwYm1kelgybHVabThnTG5ObGRIUnBibWR6WDJsdVptOWZiV1Z1ZFNCbWIzSnRJR1pwWld4a2MyVjBJR3hsWjJWdVpDQjdEUW9nSUdadmJuUXRjMmw2WlRvZ01URndlRHNOQ2lBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0RRb2dJR3hwYm1VdGFHVnBaMmgwT2lBeE5IQjRPdzBLSUNCdFlYSm5hVzQ2SURBN0RRb2dJSEJoWkdScGJtYzZJREV3Y0hnZ01Ec05DaUFnZDJsa2RHZzZJREV4TlhCNE93MEtmUTBLTG5OdlkybGhiRjl6YUdGeVpWOXdjbWwyWVdONVgyRnlaV0VnYkdrdWMyVjBkR2x1WjNOZmFXNW1ieUF1YzJWMGRHbHVaM05mYVc1bWIxOXRaVzUxSUdadmNtMGdabWxsYkdSelpYUWdhVzV3ZFhRZ2V3MEtJQ0JqYkdWaGNqb2dZbTkwYURzTkNpQWdabXh2WVhRNklHeGxablE3RFFvZ0lHMWhjbWRwYmpvZ05IQjRJREV3Y0hnZ05IQjRJREE3RFFwOURRb3VjMjlqYVdGc1gzTm9ZWEpsWDNCeWFYWmhZM2xmWVhKbFlTQnNhUzV6WlhSMGFXNW5jMTlwYm1adklDNXpaWFIwYVc1bmMxOXBibVp2WDIxbGJuVWdabTl5YlNCbWFXVnNaSE5sZENCc1lXSmxiQ0I3RFFvZ0lHUnBjM0JzWVhrNklHbHViR2x1WlMxaWJHOWphenNOQ2lBZ1pteHZZWFE2SUd4bFpuUTdEUW9nSUdadmJuUXRjMmw2WlRvZ01USndlRHNOQ2lBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0RRb2dJR3hwYm1VdGFHVnBaMmgwT2lBeU5IQjRPdzBLSUNBdGJXOTZMWFJ5WVc1emFYUnBiMjQ2SUdOdmJHOXlJQzQxY3lCbFlYTmxMV2x1T3cwS0lDQXRkMlZpYTJsMExYUnlZVzV6YVhScGIyNDZJR052Ykc5eUlDNDFjeUJsWVhObExXbHVPdzBLSUNCMGNtRnVjMmwwYVc5dU9pQmpiMnh2Y2lBdU5YTWdaV0Z6WlMxcGJqc05DbjBOQ2k1emIyTnBZV3hmYzJoaGNtVmZjSEpwZG1GamVWOWhjbVZoSUd4cExuTmxkSFJwYm1kelgybHVabThnTG5ObGRIUnBibWR6WDJsdVptOWZiV1Z1ZFNCbWIzSnRJR1pwWld4a2MyVjBJR3hoWW1Wc0xtTm9aV05yWldRZ2V3MEtJQ0JqYjJ4dmNqb2dJekE1TURzTkNuME5DaU50YVhSMFpTQWpiV2wwZEdWZmJHbHVhM01nZXcwS0lDQnZkbVZ5Wm14dmR6b2dkbWx6YVdKc1pTQWhhVzF3YjNKMFlXNTBPdzBLPC90cGxjc3M+Cgk8dHBsanM+UEhOamNtbHdkQ0IwZVhCbFBTSjBaWGgwTDJwaGRtRnpZM0pwY0hRaUlITnlZejBpVzF0eWIyOTBYM1Z5YkYxZEwyMXZaSFZzWlhNdlZHOXZiRUp2ZUM5MFpXMXdiR0YwWlhNdmFuTXZhbkYxWlhKNUxuTnZZMmxoYkhOb1lYSmxjSEpwZG1GamVTNXRhVzR1YW5NaVBqd3ZjMk55YVhCMFBnMEtEUW84YzJOeWFYQjBJSFI1Y0dVOUluUmxlSFF2YW1GMllYTmpjbWx3ZENJK0RRb3ZMendoVzBORVFWUkJXdzBLYWxGMVpYSjVLR1J2WTNWdFpXNTBLUzV5WldGa2VTaG1kVzVqZEdsdmJpZ2tLU0I3RFFvZ0lDQnBaaWdrS0NjamMyOWphV0ZzYzJoaGNtVndjbWwyWVdONUp5a3BldzBLSUNBZ0lDQWtLQ2NqYzI5amFXRnNjMmhoY21Wd2NtbDJZV041SnlrdWMyOWphV0ZzVTJoaGNtVlFjbWwyWVdONUtIc05DaUFnSUNBZ0lITmxjblpwWTJWeklEb2dldzBLSUNBZ0lDQWdJQ0JtWVdObFltOXZheUE2SUhzTkNpQWdJQ0FnSUNBZ0lDQW5jR1Z5YldGZmIzQjBhVzl1SnpvZ0oyOXVKeXdOQ2lBZ0lDQWdJQ0FnSUNBbmMzUmhkSFZ6SnpvZ0oyOXVKeXdOQ2lBZ0lDQWdJQ0FnSUNBblpIVnRiWGxmYVcxbkp6b2dKMXRiY205dmRGOTFjbXhkWFM5dGIyUjFiR1Z6TDFSdmIyeENiM2d2YVcxaFoyVnpMM052WTJsaGJITm9ZWEpsY0hKcGRtRmplUzltWVdObFltOXZheTV3Ym1jbkxBMEtJQ0FnSUNBZ0lDQWdJQ2QwZUhSZmFXNW1ieWM2SUNkYmRIaDBSbUpKYm1adlhTY3NEUW9nSUNBZ0lDQWdJQ0FnSjNSNGRGOW1ZbDl2Wm1Zbk9pQW5XM1I0ZEVaaVQyWm1YU2NzRFFvZ0lDQWdJQ0FnSUNBZ0ozUjRkRjltWWw5dmJpYzZJQ2RiZEhoMFJtSlBibDBuRFFvZ0lDQWdJQ0FnSUgwc0RRb2dJQ0FnSUNBZ0lIUjNhWFIwWlhJZ09pQjdEUW9nSUNBZ0lDQWdJQ0FnSjNCbGNtMWhYMjl3ZEdsdmJpY2dPaUFuYjI0bkxBMEtJQ0FnSUNBZ0lDQWdJQ2R6ZEdGMGRYTW5PaUFuYjI0bkxBMEtJQ0FnSUNBZ0lDQWdJQ2RrZFcxdGVWOXBiV2NuT2lBblcxdHliMjkwWDNWeWJGMWRMMjF2WkhWc1pYTXZWRzl2YkVKdmVDOXBiV0ZuWlhNdmMyOWphV0ZzYzJoaGNtVndjbWwyWVdONUwzUjNhWFIwWlhJdWNHNW5KeXdOQ2lBZ0lDQWdJQ0FnSUNBbmRIaDBYMmx1Wm04bk9pQW5XM1I0ZEZSM2FYUjBaWEpKYm1adlhTY3NEUW9nSUNBZ0lDQWdJQ0FnSjNSNGRGOTBkMmwwZEdWeVgyOW1aaWM2SUNkYmRIaDBWSGRwZEhSbGNrOW1abDBuTEEwS0lDQWdJQ0FnSUNBZ0lDZDBlSFJmZEhkcGRIUmxjbDl2YmljNklDZGJkSGgwVkhkcGRIUmxjazl1WFNjTkNpQWdJQ0FnSUNBZ2ZTd05DaUFnSUNBZ0lDQWdaM0JzZFhNZ09pQjdEUW9nSUNBZ0lDQWdJQ0FnSjJScGMzQnNZWGxmYm1GdFpTY2dPaUFuUjI5dloyeGxJRkJzZFhNbkxBMEtJQ0FnSUNBZ0lDQWdJQ2R3WlhKdFlWOXZjSFJwYjI0bk9pQW5iMjRuTEEwS0lDQWdJQ0FnSUNBZ0lDZHpkR0YwZFhNbk9pQW5iMjRuTEEwS0lDQWdJQ0FnSUNBZ0lDZGtkVzF0ZVY5cGJXY25PaUFuVzF0eWIyOTBYM1Z5YkYxZEwyMXZaSFZzWlhNdlZHOXZiRUp2ZUM5cGJXRm5aWE12YzI5amFXRnNjMmhoY21Wd2NtbDJZV041TDJkd2JIVnpMbkJ1Wnljc0RRb2dJQ0FnSUNBZ0lDQWdKM1I0ZEY5cGJtWnZKem9nSjF0MGVIUkhjR3gxYzBsdVptOWRKeXdOQ2lBZ0lDQWdJQ0FnSUNBbmRIaDBYMmR3YkhWelgyOW1aaWM2SUNkYmRIaDBSM0JzZFhOUFptWmRKeXdOQ2lBZ0lDQWdJQ0FnSUNBbmRIaDBYM0JzZFhOZmIyNG5PaUFuVzNSNGRFZHdiSFZ6VDI1ZEp3MEtJQ0FnSUNBZ0lDQjlEUW9nSUNBZ0lDQjlMQTBLSUNBZ0lDQWdJQ2RqYzNOZmNHRjBhQ2M2SUNkYlczSnZiM1JmZFhKc1hWMHZiVzlrZFd4bGN5OVViMjlzUW05NEwzUmxiWEJzWVhSbGN5OWpjM012YzI5amFXRnNjMmhoY21Wd2NtbDJZV041TG1OemN5Y3NEUW9nSUNBZ0lDQWdXMmx1Wm05TWFXNXJYUTBLSUNBZ0lDQWdJQ2QwZUhSZmFHVnNjQ2M2SUNkYmRIaDBTR1ZzY0YwbkxDQWdJQTBLSUNBZ0lDQWdJQ2R6WlhSMGFXNW5jMTl3WlhKdFlTYzZJQ2RiZEhoMFUyVjBkR2x1WjNOUVpYSnRZVjBuRFFvZ0lDQWdmU2s3RFFvZ0lIME5DaUFnZlNrN0RRb3ZMMTFkUGcwS1BDOXpZM0pwY0hRKzwvdHBsanM+Cgk8dHBsbW9iaWxlY29kZT48L3RwbG1vYmlsZWNvZGU+Cgk8dHBsbW9iaWxlY3NzPjwvdHBsbW9iaWxlY3NzPgoJPHRwbG1vYmlsZWpzPjwvdHBsbW9iaWxlanM+CjwvdG9vbGJveHRwbD4K]]></data>
	</file>
	<file>
	  <filename>/templates/ToolBox-tpl-twitterfeed-twitterfeed.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHRvb2xib3h0cGw+Cgk8bmFtZT50d2ZfdHdpdHRlcmZlZWQ8L25hbWU+Cgk8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Cgk8dG9vbGJveHZlcnNpb24+MS4zLjU8L3Rvb2xib3h2ZXJzaW9uPgoJPGFib3V0PjwvYWJvdXQ+Cgk8c2VjdGlvbj50d2l0dGVyZmVlZDwvc2VjdGlvbj4KCTx0cGxzZWN0aW9uPjwvdHBsc2VjdGlvbj4KCTxqcXVlcnk+MTwvanF1ZXJ5PgoJPGpxdWVyeV9vd24+MDwvanF1ZXJ5X293bj4KCTxvcHRpb25zPllUb3dPbnQ5PC9vcHRpb25zPgoJPHRwbGNvZGU+UEdScGRpQmpiR0Z6Y3owaWRHSlVkMmwwZEdWeVptVmxaQ0krRFFvOGRXd2dZMnhoYzNNOUluUjNaV1YwTFd4cGMzUWlQZzBLZTJadmNtVmhZMmdnWm5KdmJUMGtkSGRwZEhSbGNtWmxaV1FnYVhSbGJUMXBkR1Z0SUc1aGJXVTlKMlpsWldRbmZRMEtQR3hwZTJsbUlDUnpiV0Z5ZEhrdVptOXlaV0ZqYUM1bVpXVmtMbVpwY25OMGZTQmpiR0Z6Y3owaVptbHljM1FpZTJWc2MyVnBaaUFrYzIxaGNuUjVMbVp2Y21WaFkyZ3VabVZsWkM1c1lYTjBmU0JqYkdGemN6MGliR0Z6ZENKN0wybG1mVDROQ2p4cGJXY2dZMnhoYzNNOUluUjNaV1YwTFdGMllYUmhjaUlnZDJsa2RHZzlJalE0SWlCb1pXbG5hSFE5SWpRNElpQnpjbU05SW5za2FYUmxiUzArYVcxblgzVnliSDBpSUhScGRHeGxQU0o3SkdsMFpXMHRQbUYxZEdodmNuMGlJR0ZzZEQwaWV5UnBkR1Z0TFQ1aGRYUm9iM0o5SWlBdlBnMEtQSE53WVc0Z1kyeGhjM005SW5SM1pXVjBMWFJsZUhRaVBqeGhJR2h5WldZOUluc2thWFJsYlMwK2MyTnlaV1Z1Ym1GdFpWOTFjbXg5SWlCamJHRnpjejBpZEhkbFpYUXRZWFYwYUc5eUlqNTdKR2wwWlcwdFBuTmpjbVZsYm01aGJXVjlQQzloUGpvZ2V5UnBkR1Z0TFQ1MFpYaDBmVHd2YzNCaGJqNE5DbnRwWmlBa2FYUmxiUzArY21WMGQyVmxkRjl6WTNKbFpXNXVZVzFsSUNFOUlDY25mVHh6Y0dGdUlHTnNZWE56UFNKMGQyVmxkQzF5WlhSM1pXVjBaV1JpZVNJK2NtVjBkMlZsZEdWa0lHSjVJSHNrYVhSbGJTMCtjbVYwZDJWbGRGOWhkWFJvYjNKOVBDOXpjR0Z1UG5zdmFXWjlEUW84YzNCaGJpQmpiR0Z6Y3owaWRIZGxaWFF0YkdsdWEzTWlQbnNrYVhSbGJTMCtaR0YwWlY5c2FXNXJmU0FtYldsa1pHOTBPeUI3SkdsMFpXMHRQbkpsY0d4NVgyeHBibXQ5SUNadGFXUmtiM1E3SUhza2FYUmxiUzArY21WMGQyVmxkRjlzYVc1cmZTQW1iV2xrWkc5ME95QjdKR2wwWlcwdFBtWmhkbTl5YVhSbFgyeHBibXQ5UEM5emNHRnVQZzBLUEM5c2FUNE5DbnN2Wm05eVpXRmphSDBOQ2p3dmRXdytEUW84WkdsMklITjBlV3hsUFNKamJHVmhjanBpYjNSb095SStQQzlrYVhZK0RRbzhMMlJwZGo0TkNnPT08L3RwbGNvZGU+Cgk8dHBsY3NzPkxuUmlWSGRwZEhSbGNtWmxaV1FnZXcwS0lDQWdJR1p2Ym5RdFptRnRhV3g1T2lCb1pXeDJaWFJwWTJFc0lDZEhaVzl5WjJsaEp5d2dZWEpwWVd3c0lITmhibk10YzJWeWFXWTdEUW9nSUNBZ2QybGtkR2c2SURNeU1IQjRPdzBLSUNBZ0lIQmhaR1JwYm1jNklERXdjSGc3RFFvZ0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMlptWmpzTkNpQWdJQ0JpYjNKa1pYSXRjbUZrYVhWek9pQTJjSGc3RFFvZ0lDQWdiV0Z5WjJsdUxYSnBaMmgwT2lBeU1IQjRPdzBLSUNBZ0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTkdNa1l5UmpJN0RRcDlEUW91ZEdKVWQybDBkR1Z5Wm1WbFpDQjFiQ0FnZXcwS0lDQWdJRzFoY21kcGJqb2dNQ0F4TUhCNElEQWdNRHNOQ2lBZ0lDQndZV1JrYVc1bk9pQXdPdzBLZlEwS0xuUmlWSGRwZEhSbGNtWmxaV1FnYkdrZ2V3MEtJQ0FnSUdKdmNtUmxjaTFpYjNSMGIyMDZJREZ3ZUNCemIyeHBaQ0FqUmpKR01rWXlPdzBLSUNBZ0lHeHBjM1F0YzNSNWJHVTZJRzV2Ym1VN0RRb2dJQ0FnY0dGa1pHbHVaem9nTVRCd2VDQXlNSEI0SURFd2NIZ2dNVEJ3ZURzTkNpQWdJQ0JtYjI1MExYTnBlbVU2SURFemNIZzdEUW9nSUNBZ2JHbHVaUzFvWldsbmFIUTZJREUyY0hnN0RRb2dJQ0FnYldsdUxXaGxhV2RvZERvZ05EaHdlRHNOQ24wTkNpNTBZbFIzYVhSMFpYSm1aV1ZrSUd4cExteGhjM1FnZXcwS0lDQWdJR0p2Y21SbGNqb2dibTl1WlRzTkNuME5DaTUwWWxSM2FYUjBaWEptWldWa0lHeHBJQ0I3RFFvZ0lDQWdMWGRsWW10cGRDMWliM0prWlhJdGNtRmthWFZ6T2lBNGNIZzdEUW9nSUNBZ0xXMXZlaTFpYjNKa1pYSXRjbUZrYVhWek9pQTRjSGc3RFFvZ0lDQWdMVzF6TFdKdmNtUmxjaTF5WVdScGRYTTZJRGh3ZURzTkNpQWdJQ0F0YnkxaWIzSmtaWEl0Y21Ga2FYVnpPaUE0Y0hnN0RRb2dJQ0FnWW05eVpHVnlMWEpoWkdsMWN6b2dPSEI0T3cwS0lDQWdJR1pzYjJGME9pQnNaV1owT3cwS0lDQWdJRzFoY21kcGJqb2dNQ0F4TUhCNElERXdjSGdnTURzTkNuME5DaTUwWWxSM2FYUjBaWEptWldWa0lHeHBJR2x0WnlCN0RRb2dJQ0FnTFhkbFltdHBkQzFpYjNKa1pYSXRjbUZrYVhWek9pQTRjSGc3RFFvZ0lDQWdMVzF2ZWkxaWIzSmtaWEl0Y21Ga2FYVnpPaUE0Y0hnN0RRb2dJQ0FnTFcxekxXSnZjbVJsY2kxeVlXUnBkWE02SURod2VEc05DaUFnSUNBdGJ5MWliM0prWlhJdGNtRmthWFZ6T2lBNGNIZzdEUW9nSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nT0hCNE93MEtJQ0FnSUdac2IyRjBPaUJzWldaME93MEtJQ0FnSUcxaGNtZHBiam9nTUNBeE1IQjRJREV3Y0hnZ01Ec05DbjBOQ2k1MFlsUjNhWFIwWlhKbVpXVmtJR3hwSUhOd1lXNGdldzBLSUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUExT0hCNE93MEtJQ0FnSUdScGMzQnNZWGs2SUdKc2IyTnJPdzBLZlEwS0xuUmlWSGRwZEhSbGNtWmxaV1FnYkdrZ0xuUjNaV1YwTFdGMWRHaHZjaUI3RFFvZ0lDQWdabTl1ZEMxM1pXbG5hSFE2SUdKdmJHUTdEUW9nSUNBZ2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxPdzBLZlEwS0xuUmlWSGRwZEhSbGNtWmxaV1FnYkdrZ0xuUjNaV1YwTFd4cGJtdHpMQTBLTG5SaVZIZHBkSFJsY21abFpXUWdiR2tnTG5SM1pXVjBMWEpsZEhkbFpYUmxaR0o1SUhzTkNpQWdJQ0JrYVhOd2JHRjVPaUJpYkc5amF6c05DaUFnSUNCamIyeHZjam9nSXprNU9Uc05DaUFnSUNCbWIyNTBMWE5wZW1VNklERXhjSGc3RFFvZ0lDQWdjR0ZrWkdsdVp5MTBiM0E2SURWd2VEc05DbjBOQ2cwS0xuUmlWSGRwZEhSbGNtWmxaV1FnYkdrZ0xuUjNaV1YwTFd4cGJtdHpJR0VnZXcwS0lDQWdJR052Ykc5eU9pQWpPVGs1T3cwS0lDQWdJSFJsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlRzTkNuME5DZzBLTG5SaVZIZHBkSFJsY21abFpXUWdiR2tnTG5SM1pXVjBMV3hwYm10eklHRTZhRzkyWlhJZ2V3MEtJQ0FnSUhSbGVIUXRaR1ZqYjNKaGRHbHZianAxYm1SbGNteHBibVU3RFFwOURRb05DaTUwWWxSM2FYUjBaWEptWldWa0lHeHBJQzUwZDJWbGRDMXlaWFIzWldWMFpXUmllU0I3RFFvZ0lDQWdjR0ZrWkdsdVp6b2dNRHNOQ2lBZ0lDQnRZWEpuYVc0dFltOTBkRzl0T2lBdE5YQjRPdzBLPC90cGxjc3M+Cgk8dHBsanM+SUR4elkzSnBjSFFnZEhsd1pUMGlkR1Y0ZEM5cVlYWmhjMk55YVhCMElqNE5DaUFrS0NjdWRIZGxaWFF0Y0c5d2RYQW5LUzVqYkdsamF5aG1kVzVqZEdsdmJpaGxkbVZ1ZENrZ2V3MEtJQ0FnSUhaaGNpQjNhV1IwYUNBZ1BTQTFOallzRFFvZ0lDQWdJQ0FnSUdobGFXZG9kQ0E5SURVeE1pd05DaUFnSUNBZ0lDQWdiR1ZtZENBZ0lEMGdLQ1FvZDJsdVpHOTNLUzUzYVdSMGFDZ3BJQ0F0SUhkcFpIUm9LU0FnTHlBeUxBMEtJQ0FnSUNBZ0lDQjBiM0FnSUNBZ1BTQW9KQ2gzYVc1a2IzY3BMbWhsYVdkb2RDZ3BJQzBnYUdWcFoyaDBLU0F2SURJc0RRb2dJQ0FnSUNBZ0lIVnliQ0FnSUNBOUlIUm9hWE11YUhKbFppd05DaUFnSUNBZ0lDQWdiM0IwY3lBZ0lEMGdKM04wWVhSMWN6MHhKeUFyRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNjc2QybGtkR2c5SnlBZ0t5QjNhV1IwYUNBZ0t3MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5MR2hsYVdkb2REMG5JQ3NnYUdWcFoyaDBJQ3NOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSnl4MGIzQTlKeUFnSUNBcklIUnZjQ0FnSUNBckRRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDY3NiR1ZtZEQwbklDQWdLeUJzWldaME93MEtEUW9nSUNBZ2QybHVaRzkzTG05d1pXNG9kWEpzTENBbmRIZHBkSFJsY2ljc0lHOXdkSE1wT3cwS0RRb2dJQ0FnY21WMGRYSnVJR1poYkhObE93MEtJQ0I5S1RzOEwzTmpjbWx3ZEQ0TkNnPT08L3RwbGpzPgoJPHRwbG1vYmlsZWNvZGU+PC90cGxtb2JpbGVjb2RlPgoJPHRwbG1vYmlsZWNzcz48L3RwbG1vYmlsZWNzcz4KCTx0cGxtb2JpbGVqcz48L3RwbG1vYmlsZWpzPgo8L3Rvb2xib3h0cGw+Cg==]]></data>
	</file>
	<file>
	  <filename>/ToolBox.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCk1vZHVsZToJCVRvb2xCb3gNClRpdGxlOgkJTWFpbiBjbGFzcw0KVmVyc2lvbjoJMS4zLjgNCkRlc2NyaXB0LjoJQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gbWFkZSBsaWZlIGVhc2llcg0KTGFzdCBNb2QuOgkxOC4xMS4yMDEzDQpBdXRob3I6CQlBbmRpIFBldHpvbGR0IC8gTHVrYXMgQmxhdHRlcg0KRW1haWw6CQlhbmRpQHBldHpvbGR0Lm5ldCAvIGx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2gNCk5vdGVzOg0KTGljZW5jZToJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCgkJCWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQoJCQl0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KCQkJKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCgkJCUhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZA0KCQkJYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlDQoJCQlpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQoJCQlNYWRlIFNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4NCgkJCXNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBTaW1wbGUuDQoJCQlGaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ01TIE1hZGUgU2ltcGxlIG9uIGl0cyB3ZWJzaXRlOg0KCQkJaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy8NCgkJCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KCQkJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCgkJCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCgkJCUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQoJCQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KCQkJYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCgkJCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQoJCQlPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQoNCg0KZGVmaW5lKCdUT09MQk9YX1NFUEFSQVRPUicsICJ7Ki0tLS0tLS0tLS0iKTsNCmRlZmluZSgnVE9PTEJPWF9JREVOVCcsICI8IS0tIFRvb2xCb3ggLS0+XG4iKTsNCmRlZmluZSgnVE9PTEJPWF9DQUNIRScsICI8IS0tIHRiYyAtLT5cbiIpOw0KDQovKioNCiAqIEluY2x1ZGUgVG9vbGJveCBTbWFydHkgRnVuY3Rpb25zDQogKi8NCg0KcmVxdWlyZV9vbmNlKGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ2Z1bmN0aW9ucycuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGJmdW5jdGlvbnMucGhwJykpOw0KcmVxdWlyZV9vbmNlKGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ2Z1bmN0aW9ucycuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGJtb2RpZmllci5waHAnKSk7DQoNCg0KLyoqDQogKiBDbGFzcyBUb29sQm94Lg0KICoNCiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYmFzaWMgZnVuY3Rpb25zIGZvciB0aGUgQ01TbXMgYWRkb24gIlRvb2xCb3giDQogKg0KICovDQoNCmZpbmFsIGNsYXNzIFRvb2xCb3ggZXh0ZW5kcyBDTVNNb2R1bGUgew0KDQoJLy8gY2xhc3MgdmFycw0KCXByaXZhdGUJCSRkYjsNCglwcml2YXRlCQkkc21hcnR5Ow0KCXByaXZhdGUJCSRjb25maWc7DQoJcHVibGljCQkkcGFnZUlkOw0KCXByb3RlY3RlZCAJJHRiUmVkaXJlY3RMb2c7DQoJcHVibGljCQkkdGJNZXRhID0gYXJyYXkoKTsNCglwdWJsaWMJCSR0Yk1ldGFKcyA9IGFycmF5KCk7DQoJcHVibGljCQkkdGJKcXVlcnkgPSBmYWxzZTsNCglwdWJsaWMJCSR0YlVzZWQ7DQoJcHJpdmF0ZQkJJHRiRXZlbnRzOw0KCXByb3RlY3RlZAkkdGJEb25hdGU7DQoJcHJpdmF0ZQkJJHRiZnA7DQoJcHJvdGVjdGVkIAkkdGJMb2dQYXRoOw0KCXByb3RlY3RlZCAJJHRiTG9nRmlsZTsNCglwcm90ZWN0ZWQJJGxvZ1VwZGF0ZXJQYXJhbSA9IGFycmF5KCk7DQoJcHVibGljCQkkdGJtb2JpbGU7DQoJDQoJDQoJLyoNCgkqIENvbnN0cnVjdG9yIGZ1bmN0aW9uDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSANCgl7DQoJCXBhcmVudDo6Q01TTW9kdWxlKCk7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCgkJDQoJCSR0aGlzLT5kYiA9IGNtc21zKCktPkdldERiKCk7DQoJCSR0aGlzLT5zbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCgkJJHRoaXMtPmNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KDQoJICAgIC8vIFJlZ2lzdGVyIGZ1bmN0aW9ucw0KCSAgICAkdGhpcy0+c21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigndGJJbWFnZScsCQkJCSdzbWFydHlfZnVuY3Rpb25fdGJJbWFnZScpOw0KCSAgICAkdGhpcy0+c21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigndGJTZXNzaW9uU2V0JywJCSdzbWFydHlfZnVuY3Rpb25fdGJTZXNzaW9uU2V0Jyk7DQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0YlNlc3Npb25VbnNldCcsCQknc21hcnR5X2Z1bmN0aW9uX3RiU2Vzc2lvblVuc2V0Jyk7DQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0YkdldFBhZ2VIaWVyYXJjaHknLAknc21hcnR5X2Z1bmN0aW9uX3RiR2V0UGFnZUhpZXJhcmNoeScpOw0KCSAgICAkdGhpcy0+c21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigndGJHZXROZXdzQ2F0ZWdvcmllcycsCSdzbWFydHlfZnVuY3Rpb25fdGJHZXROZXdzQ2F0ZWdvcmllcycpOw0KCSAgICAkdGhpcy0+c21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigndGJHZXRVc2VyR3JvdXBzJywJCSdzbWFydHlfZnVuY3Rpb25fdGJHZXRVc2VyR3JvdXBzJyk7DQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0YldyaXRlTG9nJywJCQknc21hcnR5X2Z1bmN0aW9uX3RiV3JpdGVMb2cnKTsNCgkgICAgJHRoaXMtPnNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3RiVmFyRXhwb3J0JywJCQknc21hcnR5X2Z1bmN0aW9uX3RiVmFyRXhwb3J0Jyk7DQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0YlJlZGlyZWN0JywJCQknc21hcnR5X2Z1bmN0aW9uX3RiUmVkaXJlY3QnKTsNCgkgICAgJHRoaXMtPnNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3RiR2V0R2FsbGVyeVRyZWUnLAknc21hcnR5X2Z1bmN0aW9uX3RiR2V0R2FsbGVyeVRyZWUnKTsNCgkgICAgJHRoaXMtPnNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3RiR2V0Q29uZmlnJywJCQknc21hcnR5X2Z1bmN0aW9uX3RiR2V0Q29uZmlnJyk7DQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0YkdldFRlbXBsYXRlVmFycycsCSdzbWFydHlfZnVuY3Rpb25fdGJHZXRUZW1wbGF0ZVZhcnMnKTsNCgkgICAgDQoJICAgIC8vIFJlZ2lzdGVyIG1vZGlmaWVyDQoJICAgICR0aGlzLT5zbWFydHktPnJlZ2lzdGVyX21vZGlmaWVyKCd0YlRydW5jYXRlJywJJ3NtYXJ0eV9tb2RpZmllcl90YlRydW5jYXRlJyk7DQoJCQ0KCSAgICByZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvY2xhc3MuTW9iaWxlX0RldGVjdC5waHAnKTsNCgkgICAgcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvbGliL2NsYXNzLnRiVG9vbHMucGhwJyk7DQoJICAgIHJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2xpYi9jbGFzcy50YlJlZGlyZWN0TG9nLnBocCcpOw0KCSAgICANCgkgICAgLy8gUmVnaXN0ZXIgdGJ0b29scw0KCSAgICAkb2JqID0gdGJUb29sczo6Z2V0X2luc3RhbmNlKCk7DQoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGJ0b29scycsJG9iaik7DQoNCi8vCSAgICAkaW5zdGFuY2UgPSB0YlRvb2xzOjpnZXRfaW5zdGFuY2UoKTsNCi8vICAgCQkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCd0YnRvb2xzJywgJGluc3RhbmNlKTsNCgkgICAgDQoJICAgIA0KCSAgICAvLyBSZWdpc3RlciB0Ym1vYmlsZQ0KCSAgICAkb2JqID0gbmV3IE1vYmlsZV9EZXRlY3QoKTsNCgkgICAgJHRoaXMtPnRibW9iaWxlID0gJG9iajsNCgkgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0Ym1vYmlsZScsJG9iaik7DQoJICAgIA0KCSAgICAvLyBnZXQgTG9nU3VtIEluc3RhbmNlDQoJICAgICR0aGlzLT50YlJlZGlyZWN0TG9nID0gbmV3IHRiUmVkaXJlY3RMb2coJHRoaXMpOw0KCQkNCgkgICAgLy8gTG9nZmlsZSBQZmFkIGZlc3RsZWdlbg0KCSAgICAkdGhpcy0+dGJMb2dQYXRoID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4nbG9nJy5ESVJFQ1RPUllfU0VQQVJBVE9SOw0KCSAgICAkdGhpcy0+c2V0TG9nRmlsZSgndGJMb2cnKTsNCgkgICAgDQoJCSR0aGlzLT50YlVzZWQgPSBmYWxzZTsNCgkJDQoJCSR0aGlzLT50YkV2ZW50cyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkb250X3VzZV9ldmVudF9oYW5kbGVyJykgPyAwIDogMTsNCgkJaWYgKCRfU0VSVkVSWydSRU1PVEVfQUREUiddICE9ICIxMjcuMC4wLjEiKSAkdGhpcy0+dGJEb25hdGUgPSAkdGhpcy0+TGFuZygnZG9uYXRlJyk7DQoJCQ0KCX0NCg0KCS8qKg0KCSogR2V0IHRoZSByZWFsIG5hbWUgb2YgdGhpcyBtb2R1bGUuDQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEdldE5hbWUoKSB7DQoJCXJldHVybiAnVG9vbEJveCc7DQoJfQ0KDQoJLyoqDQoJKiBHZXQgYSBmcmllbmRseSAodHJhbnNsYXRlZCkgbmFtZSBvZiB0aGlzIG1vZHVsZS4NCgkqIEByZXR1cm4gc3RyaW5nDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOw0KCX0NCg0KCS8qKg0KCSogR2V0IHRoZSB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLg0KCSogQHJldHVybiBzdHJpbmcNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KCQlyZXR1cm4gJzEuMy44JzsNCgl9DQoNCgkvKioNCgkqIElzIHRoaXMgYW4gbW9kdWxlIG9ubHkgZm9yIHRoZSBDTVNtcyBiYWNrZW5kPy4NCgkqIEByZXR1cm4gYmxvb2xlYW4NCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBJc0FkbWluT25seSgpIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSogR2V0cyBhIGhlbHAgdGV4dCBmb3IgdGhpcyBtb2R1bGUuDQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQoJCXJldHVybiAkdGhpcy0+dGJEb25hdGUuJHRoaXMtPkxhbmcoJ2hlbHAnKTsNCgl9DQoNCgkvKioNCgkqIEdldHMgdGhlIGF1dGhvciBvZiB0aGlzIG1vZHVsZQ0KCSogQHJldHVybiBzdHJpbmcNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBHZXRBdXRob3IoKSB7DQoJCXJldHVybiAnQW5kaSBQZXR6b2xkdCAvIEx1a2FzIEJsYXR0ZXInOw0KCX0NCg0KCS8qKg0KCSogR2V0cyB0aGUgbW9kdWxlIGF1dGhvcnMgZW1haWwgYWRkcmVzcy4NCgkqIEByZXR1cm4gc3RyaW5nDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7DQoJCXJldHVybiAnYW5kaUBwZXR6b2xkdC5uZXQgLyBsdWthcy5ibGF0dGVyQGJsYXR0ZXJ0ZWNoLmNoJzsNCgl9DQoNCgkvKioNCgkqIEdldCB0aGUgY2hhbmdlbG9nIG9mIHRoaXMgbW9kdWxlDQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsNCgkJcmV0dXJuICR0aGlzLT50YkRvbmF0ZS4kdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7DQoJfQ0KDQoJLyoqDQoJKiBHZXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuDQoJKiBAcmV0dXJuIGFycmF5DQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgew0KCQlyZXR1cm4gYXJyYXkoKTsNCgl9DQoNCgkvKioNCgkqIElzIHRoaXMgYW4gb3B0aW9uYWwgbW9kdWxlIGZvciBDTVNtcz8NCgkqIEByZXR1cm4gYm9vbGVhbg0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkqIEhhcyB0aGlzIG1vZHVsZSBhbiBhZG1pbg0KCSogQHJldHVybiBib29sZWFuDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gSGFzQWRtaW4oKSB7DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCS8qKg0KCSogU2hhbGwgdGhpcyBtb2R1bGUgaGFuZGxlIGV2ZW50cz8NCgkqIEByZXR1cm4gYm9vbGVhbg0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEhhbmRsZXNFdmVudHMoKSB7DQoJCXJldHVybiAkdGhpcy0+dGJFdmVudHMgPyB0cnVlIDogZmFsc2U7DQoJfQ0KCQ0KCS8qKg0KCSogSW4gd2hpY2ggbWFpbiBtZW51IG9mIHRoZSBiYWNrZW5kIHNoYWxsIHRoaXMgbW9kdWxlIGJlPw0KCSogQHJldHVybiBzdHJpbmcNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7DQoJCXJldHVybiAnZXh0ZW5zaW9ucyc7DQoJfQ0KDQoJLyoqDQoJICogSW5pdGFsaXplIEZyb250ZW5kIFBhcmFtcw0KCSAqLw0KCWZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpIHsNCgkJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOw0KCQkNCgkJLy8gUHJldHR5IHVybCByb3V0ZSBmb3Igdmlld2luZyBhIHRvb2xib3ggaW4gYWxsIGl0cyB2YXJpYXRpb25zDQoJCSR1cmxwcmVmaXggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJscHJlZml4JywgJ1t0VF1bYkJdJyk7DQoJCS8vJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy90YlwvKD9QPG1vZD4uKylcLyg/UDxpdGVtaWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcL3QsKD9QPHRlbXBsYXRlPi4qPylcL2QsKD9QPGRldGFpbHRlbXBsYXRlPi4qPykkLycpOw0KCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycuJHVybHByZWZpeC4nXC8oP1A8bW9kPi4rKVwvKD9QPGl0ZW1pZD5bMC05XSspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJyxhcnJheSgnYWN0aW9uJyA9PiAnZGVmYXVsdCcpKTsNCgkJJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nLiR1cmxwcmVmaXguJ1wvKD9QPG1vZD4uKylcLyg/UDxpdGVtaWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx0YmFjdGlvbj5bYS16QS1aXSspJC8nLGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykpOw0KLy8JCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJy4kdXJscHJlZml4LidcLyg/UDxtb2Q+LispXC8oP1A8dGVtcGxhdGU+W2EtekEtWl0rKS0oP1A8bnVtYmVyPlswLTldKyktKD9QPHNob3c+W2EtekEtWl0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KLy8JCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJy4kdXJscHJlZml4LidcLyg/UDxkaXI+LispXC8oP1A8c3RhcnQ+WzAtOV0rKS0oP1A8bnVtYmVyPlswLTldKyktKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcpKTsNCi8vCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycuJHVybHByZWZpeC4nXC8oP1A8ZGlyPi4rKVwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcpKTsNCi8vCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnLycuJHVybHByZWZpeC4nXC8oP1A8c3RhcnQ+WzAtOV0rKS0oP1A8bnVtYmVyPlswLTldKyktKD9QPHNob3c+W2EtekEtWl0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KLy8JCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJy4kdXJscHJlZml4LidcLyg/UDxzdGFydD5bMC05XSspLSg/UDxudW1iZXI+WzAtOV0rKS0oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOw0KLy8JCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvJy4kdXJscHJlZml4LidcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJz0+J2RlZmF1bHQnKSk7DQoJCQ0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGJhY3Rpb24nLENMRUFOX1NUUklORyk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtaWQnLENMRUFOX0lOVCk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZXR1cm5pZCcsQ0xFQU5fSU5UKTsNCgkJDQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJzKCk7DQoJCQ0KCX0NCg0KCS8qKg0KCSogR2V0IGFuIG1vZHVsZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJhY2tlbmQuDQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7DQoJCXJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCgl9DQoNCgkvKioNCgkqIFdoYXQgaXMgdGhlIG1pbmltdW0gdmVyc2lvbiBvZiBDTVNtcyBmb3IgdGhpcyBtb2R1bGU/DQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgew0KCQlyZXR1cm4gJzEuMTAnOw0KCX0NCgkNCg0KCS8qKg0KCSogUmVnaXN0ZXIgRXZlbnQNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBSZWdpc3RlckV2ZW50cygpew0KCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50UG9zdFJlbmRlcicsIGZhbHNlICk7DQoJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3VzZScpKSB7DQoJCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFByZScsIGZhbHNlICk7CQ0KCQkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ05ld3MnLCAnTmV3c0FydGljbGVBZGRlZCcsIGZhbHNlICk7CQ0KCQkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ05ld3MnLCAnTmV3c0FydGljbGVFZGl0ZWQnLCBmYWxzZSApOwkNCgkJCSRvYmogPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoIkNHQmxvZyIpOw0KCQkJaWYoIGlzX29iamVjdCgkb2JqKSApICB7DQoJCQkgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NHQmxvZycsICdDR0Jsb2dBcnRpY2xlQWRkZWQnLCBmYWxzZSApOwkNCgkJCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ0dCbG9nJywgJ0NHQmxvZ0FydGljbGVFZGl0ZWQnLCBmYWxzZSApOw0KCQkJfQ0KCQl9DQoJCWVsc2Ugew0KCQkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudEVkaXRQcmUnLGZhbHNlKTsNCgkJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdOZXdzJywgJ05ld3NBcnRpY2xlQWRkZWQnLGZhbHNlKTsNCgkJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdOZXdzJywgJ05ld3NBcnRpY2xlRWRpdGVkJyxmYWxzZSk7DQoJCQkkb2JqID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCJDR0Jsb2ciKTsNCgkJCWlmKCBpc19vYmplY3QoJG9iaikgKSAgew0KCQkJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDR0Jsb2cnLCAnQ0dCbG9nQXJ0aWNsZUVkaXRlZCcsZmFsc2UpOw0KCQkJfQ0KCQl9DQoJCQ0KLy8JCTIwMTEuMTIuMjIgTEJMIGF1c2tvbW1lbnRpZXJ0LCBkYSBkaXJla3QgaW4gRG9FdmVudCBnZXN0ZXVlcnQgLT4gQ29udGVudFBvc3RSZW5kZXIgd2lyZCBhdWNoIGbDvHIgYW5kZXJlcyBnZW51dHp0DQovLwkJaWYgKCEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZG9udF91c2VfZXZlbnRfaGFuZGxlcicpKSB7DQovLwkJCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJywgZmFsc2UgKTsNCi8vCQkJIyR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQcmVDb21waWxlJywgZmFsc2UgKTsgICAtLT4gZG9lc24ndCB3b3JrDQovLwkJfQ0KCX0NCg0KCS8qKg0KCSogUnVuIEV2ZW50DQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMpIHsNCg0KCQkkdGhpcy0+cGFnZUlkID0gKGludCljbXNtcygpLT5nZXRfdmFyaWFibGUoImNvbnRlbnRfaWQiKTsNCgkJDQovLwkJaWYgKCR0aGlzLT50YkV2ZW50cyBhbmQgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RvbnRfdXNlX2V2ZW50X2hhbmRsZXInKSkgew0KCQlpZiAoJHRoaXMtPnRiRXZlbnRzKSB7DQoJCQkvLyBDaGVjayBldmVudA0KCQkJaWYoJG9yaWdpbmF0b3I9PSdDb3JlJyAmJiAkZXZlbnRuYW1lPT0nQ29udGVudFBvc3RSZW5kZXInKXsNCgkJCQkvLyBDaGVjayBpZiBtb2R1bGUgd2FzIGFscmVhZHkgdXNlZA0KCQkJCWlmICghJHRoaXMtPnRiVXNlZCkgew0KCQkJCQkvLyBTZXQgdGhlIG1vZHVsZSB1c2VkDQoJCQkJCSR0aGlzLT50YlVzZWQgPSB0cnVlOw0KCQkJCQkNCgkJCQkJJGxvZyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0c191c2UnKSA/ICR0aGlzLT50YlJlZGlyZWN0TG9nLT5QcmVwYXJlTG9nVmlzaXQoKSA6IGFycmF5KCk7CS8vIExvZyB2aXNpdA0KCQkJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVidWdfdXNlJykpICR0aGlzLT50YlJlZGlyZWN0TG9nLT5EZWJ1Z01EKCk7CQkJCQkJCS8vIExvZyBkZWJ1Zw0KCQkJCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ29sZHVybF91c2UnKSkgJHRoaXMtPnRiUmVkaXJlY3RMb2ctPlJlZGlyZWN0VVJMKCRsb2cpOwkJCQkvLyBMb29rIGZvciByZWRpcmVjdCB1cmxzDQoJCQkJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHNfNDA0JykpICR0aGlzLT50YlJlZGlyZWN0TG9nLT5Mb2dFcnJvcigkbG9nKTsJCQkJCS8vIExvZyBlcnJvcnMgKGUuZy4gNDA0KQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkvLyBUZW1wbGF0ZSBDU1MgdW5kIEphdmFzY3JpcHQgZWluYmluZGVuCQ0KCQlpZiAoJG9yaWdpbmF0b3IgPT0gJ0NvcmUnICYmICRldmVudG5hbWUgPT0gJ0NvbnRlbnRQb3N0UmVuZGVyJykNCgkJew0KCQkJLy8gQXV0b0xpZ2h0Qm94IGVpbmJpbmRlbg0KCQkJaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfdXNlJykgYW5kICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfbGlnaHRib3gnKSkgew0KCQkJCQ0KCQkJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJjdXJyZW50X2F1dG9saWdodGJveF90ZW1wbGF0ZSIpOw0KCQkJCSR0ZW1wbGF0ZXByb3BzID0gdGJVdGlsczo6Z2V0VGVtcGxhdGVQcm9wcygkdGVtcGxhdGUpOw0KCQkJCSRjb250ZW50c2NvZGUgPSBleHBsb2RlKFRPT0xCT1hfU0VQQVJBVE9SLCAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlKSk7DQoJCQkJDQoJCQkJLy8kY29udGVudCA9IGlzc2V0KCRjb250ZW50c2NvZGVbMF0pID8gJGNvbnRlbnRzY29kZVswXSA6ICcnOw0KCQkJCSRzdHlsZXNoZWV0ID0gaXNzZXQoJGNvbnRlbnRzY29kZVsxXSkgPyBzdHJfcmVwbGFjZSgiKn0iLCAiIiwgJGNvbnRlbnRzY29kZVsxXSkgOiAnJzsNCgkJCQkkamF2YXNjcmlwdCA9IGlzc2V0KCRjb250ZW50c2NvZGVbMl0pID8gc3RyX3JlcGxhY2UoIip9IiwgIiIsICRjb250ZW50c2NvZGVbMl0pIDogJyc7DQoJCQkJJHN0eWxlc2hlZXRtb2JpbGUgPSBpc3NldCgkY29udGVudHNjb2RlWzRdKSA/IHN0cl9yZXBsYWNlKCIqfSIsICIiLCAkY29udGVudHNjb2RlWzRdKSA6ICcnOw0KCQkJCSRqYXZhc2NyaXB0bW9iaWxlID0gaXNzZXQoJGNvbnRlbnRzY29kZVs1XSkgPyBzdHJfcmVwbGFjZSgiKn0iLCAiIiwgJGNvbnRlbnRzY29kZVs1XSkgOiAnJzsNCgkJCQkNCgkJCQkkbW9iaWxlID0gIiI7DQoJCQkJaWYgKGlzc2V0KCR0ZW1wbGF0ZXByb3BzWyd1c2VfbW9iaWxldGVtcGxhdGUnXSkgYW5kICR0aGlzLT50Ym1vYmlsZS0+aXNNb2JpbGUoKSkgew0KCQkJCQkkc3R5bGVzaGVldCA9ICRzdHlsZXNoZWV0bW9iaWxlOw0KCQkJCQkkamF2YXNjcmlwdCA9ICRqYXZhc2NyaXB0bW9iaWxlOw0KCQkJCQkkbW9iaWxlID0gIl9tb2JpbGUiOw0KCQkJCX0NCgkJCQkNCgkJCQlpZiAoIWlzc2V0KCR0aGlzLT50Yk1ldGFbJHRlbXBsYXRlXSkpIHsNCgkJCQkJaWYgKCRzdHlsZXNoZWV0KSAkdGhpcy0+dGJNZXRhWyR0ZW1wbGF0ZV0gPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInLiR0aGlzLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2Nzcy8nLiR0ZW1wbGF0ZS4kbW9iaWxlLicuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiIgLz4nLiJcbiI7DQoJCQkJCWlmICgkdGVtcGxhdGVwcm9wc1snanF1ZXJ5J10pCSR0aGlzLT50YkpxdWVyeSA9IHRydWU7CQ0KCQkJCQlpZiAoJGphdmFzY3JpcHQpCQkJCSR0aGlzLT50Yk1ldGFKc1skdGVtcGxhdGVdID0gdGJVdGlsczo6ZXhlY3V0ZVRlbXBsYXRlU21hcnR5KCRqYXZhc2NyaXB0KS4iXG4iOw0KCQkJCX0NCgkJCX0NCgkJCQ0KCQkJJG1ldGFkYXRhCT0gaW1wbG9kZSgiXG4iLCR0aGlzLT50Yk1ldGEpOw0KCQkJJG1ldGFqcyAJPSBpbXBsb2RlKCJcbiIsJHRoaXMtPnRiTWV0YUpzKTsNCgkJCQ0KCQkJaWYgKCR0aGlzLT50YkpxdWVyeSkgew0KCQkJCSRtZXRhanMgPSB0YlV0aWxzOjpnZXRqUXVlcnkoKS4iXG4iLiRtZXRhanM7DQoJCQl9DQoJCQkNCgkJCWlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgibWluaWZ5IikpIHsNCgkJCQkkbWluaWZ5ID0gYnRNaW5pZnk6Om1pbmlmeUZyb21IdG1sKCRtZXRhZGF0YS4kbWV0YWpzKTsNCgkJCQkkbWV0YWRhdGEJPSAkbWluaWZ5LT5jc3M7DQoJCQkJJG1ldGFqcwkJPSAkbWluaWZ5LT5qcy4kbWluaWZ5LT5qc3NyYzsNCgkJCX0NCgkJCS8vIEhlYWRlciBNZXRhZGF0ZW4gZXJnw6RuemVuDQoJCQlpZiAoKHN0cmxlbih0cmltKCRtZXRhZGF0YSwiXG4iKSkgPiAwIG9yIChzdHJsZW4odHJpbSgkbWV0YWpzLCJcbiIpKSA+IDApIGFuZCAhJHRoaXMtPkdldFByZWZlcmVuY2UoImpzX2Zvb3RlciIpKSkgew0KCQkJCWlmICghJHRoaXMtPkdldFByZWZlcmVuY2UoImpzX2Zvb3RlciIpKSAkbWV0YWRhdGEgLj0iXG4iLiRtZXRhanM7DQoJCQkJJHBhcmFtc1siY29udGVudCJdID0gdGJVdGlsczo6YWRkSHRtbEJlZm9yVGFnKCRwYXJhbXNbImNvbnRlbnQiXSwgJG1ldGFkYXRhLCAiPC9oZWFkPiIpOw0KCQkJfQ0KCQkJCQ0KCQkJCQ0KCQkJLy8gSlMgdm9yIGRlbSA8L2JvZHk+IGVyZ8OkbnplbiwgZmFsbHMgYWt0aXZpZXJ0DQoJCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImpzX2Zvb3RlciIpIGFuZCBzdHJsZW4odHJpbSgkbWV0YWpzLCJcbiIpKSA+IDApIHsNCgkJCQkkcGFyYW1zWyJjb250ZW50Il0gPSB0YlV0aWxzOjphZGRIdG1sQmVmb3JUYWcoJHBhcmFtc1siY29udGVudCJdLCAkbWV0YWpzLCAiPC9ib2R5PiIpOw0KCQkJfQ0KCQl9DQoJCQ0KCQkNCgkJLy8gU2V0IEF1dG9MaWdodEJveCBBdHRyaWJ1dGVzDQoJCSRhdHRyaWJ1dGVzID0gYXJyYXkoKTsNCgkJaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfcmVsJykpCSRhdHRyaWJ1dGVzWydyZWwnXQkJPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b2xpZ2h0Ym94X3JlbCcpOw0KCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF9jbGFzcycpKQkkYXR0cmlidXRlc1snY2xhc3MnXQk9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfY2xhc3MnKTsNCg0KCQkJDQoJCS8vIEV4ZWN1dGUgQXV0b0xpZ2h0Qm94IEV2ZW50DQoJCWlmICgkb3JpZ2luYXRvciA9PSAnQ29yZScgJiYgJGV2ZW50bmFtZSA9PSAnQ29udGVudEVkaXRQcmUnKSB7DQoJCQkvLyBhbHRlcm5hdGl2ZSB6dSBtZXRob2RfZXhpdHM6IGlzX2NhbGxhYmxlKGFycmF5KCRwYXJhbXNbJ2NvbnRlbnQnXSwgJ2dldF9jb250ZW50X2Jsb2NrcycpKQ0KCQkJaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRvbGlnaHRib3hfdXNlJykgJiYgaXNzZXQoJHBhcmFtc1snY29udGVudCddKSAmJiBtZXRob2RfZXhpc3RzKCRwYXJhbXNbJ2NvbnRlbnQnXSwgJ2dldF9jb250ZW50X2Jsb2NrcycpKSB7DQoJCQkJZm9yZWFjaCgkcGFyYW1zWydjb250ZW50J10tPmdldF9jb250ZW50X2Jsb2NrcygpIGFzICRibG9ja19uYW1lID0+ICRibG9ja19pbmZvKQ0KCQkJCXsNCgkJCQkJJHBhcmFtc1snY29udGVudCddLT5TZXRQcm9wZXJ0eVZhbHVlKCRibG9ja19uYW1lLA0KCQkJCQkJQXV0b2xpZ2h0Ym94OjpJbWcyVGh1bWIoJHBhcmFtc1snY29udGVudCddLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja19uYW1lKSwJJGF0dHJpYnV0ZXMpDQoJCQkJCSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCQ0KCQlpZiAoJG9yaWdpbmF0b3IgPT0gJ05ld3MnICYmICgkZXZlbnRuYW1lID09ICdOZXdzQXJ0aWNsZUFkZGVkJyBvciAkZXZlbnRuYW1lID09ICdOZXdzQXJ0aWNsZUVkaXRlZCcpKSB7DQoJCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnKSAmJiBpc3NldCgkcGFyYW1zWydjb250ZW50J10pICYmIGlzc2V0KCRwYXJhbXNbJ25ld3NfaWQnXSkpIA0KCQkJew0KCQkJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IEF1dG9saWdodGJveDo6SW1nMlRodW1iKCRwYXJhbXNbJ2NvbnRlbnQnXSwgJGF0dHJpYnV0ZXMpOw0KCQkJCSR0aGlzLT5kYi0+RXhlY3V0ZSgNCgkJCQkJIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25ld3MgDQoJCQkJCQlTRVQgbmV3c19kYXRhID0gPyANCgkJCQkJCVdIRVJFIG5ld3NfaWQgPSA/IiwgDQoJCQkJCWFycmF5KCRwYXJhbXNbJ2NvbnRlbnQnXSwgJHBhcmFtc1snbmV3c19pZCddKQ0KCQkJCSk7DQoJCQl9DQoJCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnKSAmJiBpc3NldCgkcGFyYW1zWydzdW1tYXJ5J10pICYmIGlzc2V0KCRwYXJhbXNbJ25ld3NfaWQnXSkpIA0KCQkJew0KCQkJCSRwYXJhbXNbJ3N1bW1hcnknXSA9IEF1dG9saWdodGJveDo6SW1nMlRodW1iKCRwYXJhbXNbJ3N1bW1hcnknXSwgJGF0dHJpYnV0ZXMpOw0KCQkJCSR0aGlzLT5kYi0+RXhlY3V0ZSgNCgkJCQkJIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25ld3MgDQoJCQkJCQlTRVQgc3VtbWFyeSA9ID8gDQoJCQkJCQlXSEVSRSBuZXdzX2lkID0gPyIsIA0KCQkJCQlhcnJheSgkcGFyYW1zWydzdW1tYXJ5J10sICRwYXJhbXNbJ25ld3NfaWQnXSkNCgkJCQkpOw0KCQkJfQ0KCQl9DQoJCQ0KCQlpZiAoJG9yaWdpbmF0b3IgPT0gJ0NHQmxvZycgJiYgKCRldmVudG5hbWUgPT0gJ0NHQmxvZ0FydGljbGVBZGRlZCcgb3IgJGV2ZW50bmFtZSA9PSAnQ0dCbG9nQXJ0aWNsZUVkaXRlZCcpKSB7DQoJCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2F1dG9saWdodGJveF91c2UnKSAmJiBpc3NldCgkcGFyYW1zWydjb250ZW50J10pICYmIGlzc2V0KCRwYXJhbXNbJ2NnYmxvZ19pZCddKSkgDQoJCQl7DQoJCQkJJHBhcmFtc1snY29udGVudCddID0gQXV0b2xpZ2h0Ym94OjpJbWcyVGh1bWIoJHBhcmFtc1snY29udGVudCddLCAkYXR0cmlidXRlcyk7DQoJCQkJJHRoaXMtPmRiLT5FeGVjdXRlKA0KCQkJCQkiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfY2dibG9nIA0KCQkJCQkJU0VUIGNnYmxvZ19kYXRhID0gPyANCgkJCQkJCVdIRVJFIGNnYmxvZ19pZCA9ID8iLA0KCQkJCQlhcnJheSgkcGFyYW1zWydjb250ZW50J10sICRwYXJhbXNbJ2NnYmxvZ19pZCddKQ0KCQkJCSk7DQoJCQl9DQoJCX0NCgl9DQoJDQoJLyoqDQoJICogDQoJICogRsO8Z3QgZGVtIEJhY2tlbmRoZWFkIGVpbiBKYXZhc2NyaXB0IC8gQ1NTIGhpbnp1DQoJICoNCgkgKiBAYWNjZXNzIHB1YmxpYw0KCSAqIEByZXR1cm4gSGVhZGVyIEpTIGFuZCBDU1MNCgkgKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpew0KDQoJCWdsb2JhbCAkaWQ7DQoJCSRzY3JpcHQgPSAiPCEtLSBUb29sQm94IC0tPlxuIjsNCgkJJHNjcmlwdCAuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJy4kdGhpcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvVG9vbEJveEJhY2tlbmRTdHlsZXMuY3NzIiAvPicuIlxuIjsNCgkJJHNjcmlwdC49ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIgJy4kdGhpcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9qcy9Ub29sQm94QmFja2VuZEpTLmpzIj48L3NjcmlwdD4nLiJcbiI7DQoJCSRzY3JpcHQuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iICcuJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvanMvanF1ZXJ5LmNvbG9ycGlja2VyLmpzIj48L3NjcmlwdD4nLiJcbiI7DQoJCSRzY3JpcHQuPSAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJy4kdGhpcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9Ub29sQm94L3RlbXBsYXRlcy9jc3MvanF1ZXJ5LmNvbG9ycGlja2VyLmNzcyIgLz4nLiJcbiI7DQoJCQ0KCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfdXNlJykpIHsNCgkJCSRhcnJheSA9IGFycmF5KCk7DQoJCQkkYXJyYXlbJ2Rpc2FibGVfdGhlbWUnXSA9IHRydWU7DQoJCQkkdXJsID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fbG9nVXBkYXRlcicsICcnLCAnJywgJGFycmF5LCAnJywgdHJ1ZSkpOyANCgkJCSRzY3JpcHQuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iICcuJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvanMvanF1ZXJ5LnBlcmlvZGljYWx1cGRhdGVyLmpzIj48L3NjcmlwdD4nLiJcbiI7DQoJCX0NCgkJJHNjcmlwdC49IjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KCQkJCWpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCgkJCQkJDQoJICAgICAgICAgICAgICAgICQoJyMiLiRpZC4id210X2NvbG9yJykuY29sb3JwaWNrZXIoew0KCQkJCQlhbHRGaWVsZDogJyMiLiRpZC4id210X2NvbG9yJywNCgkJCQkJYWx0UHJvcGVydGllczogJ2JhY2tncm91bmQtY29sb3IsY29sb3InLA0KCQkJCQlhbHRBbHBoYTogdHJ1ZSwNCgkJCQkJYWxwaGE6IHRydWUNCgkJCQl9KTsNCgkgICAgICAgICAgICAgICAgDQoJICAgICAgICAgICAgICAgIA0KCSAgICAgICAgICAgICAgICAiOw0KCQlpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RhaWxfdXNlJykpIHsNCgkJCSRzY3JpcHQuPSIJDQoJCQkJCS8vIFdlbm4gVGFpbGxvZ2FyZWEgZXhpc3RpZXJ0LCBsb2dnaW5nIHN0YXJ0ZW4NCgkJCQkJaWYgKCQoJyN0YWlsbG9nYXJlYScpLmxlbmd0aCA+IDApew0KCQkJCQkJdmFyIGxvZ0ZpbGUgPSAkKCdpbnB1dFtuYW1lPVwiIi4kaWQuImxvZ0ZpbGVcIl0nKS52YWwoKTsgDQoJCQkJCQl2YXIga2V5IAk9ICQoJ2lucHV0W25hbWU9XCIiLiRpZC4ia2V5XCJdJykudmFsKCk7DQoJCQkJCQl2YXIgaCAgCQk9ICQoJ2lucHV0W25hbWU9XCIiLiRpZC4iaFwiXScpLnZhbCgpOw0KCQkJCQkJdmFyIGxpbmVzICAJPSAkKCdpbnB1dFtuYW1lPVwiIi4kaWQuImxpbmVzXCJdJykudmFsKCk7DQoJCQkJCQkkKCcjdGFpbGxvZ2FyZWEnKVswXS5zY3JvbGxUb3AgPSAkKCcjdGFpbGxvZ2FyZWEnKVswXS5zY3JvbGxIZWlnaHQ7DQoJCQkJCQkkLlBlcmlvZGljYWxVcGRhdGVyKCciLiR1cmwuIiYiLiRpZC4iZj0nK2xvZ0ZpbGUrJyYiLiRpZC4iaz0nK2tleSsnJiIuJGlkLiJoPScraCsnJiIuJGlkLiJsPScrbGluZXMsIHsNCgkJCQkJCQltZXRob2Q6ICdwb3N0JywgICAgICAgICANCgkJCQkJCQltaW5UaW1lb3V0OiAxMDAwLA0KCQkJCQkJCW1heFRpbWVvdXQ6IDgwMDAsDQoJCQkJCQkJbXVsdGlwbGllcjogMiwNCgkJCQkJCQl0eXBlOiAnaHRtbCcgDQoJCQkJCQl9LCBmdW5jdGlvbihkYXRhKSB7DQoJCQkJCQkJCSQoJyN0YWlsbG9nYXJlYScpWzBdLnRleHRDb250ZW50ICA9ICQoJyN0YWlsbG9nYXJlYScpWzBdLnRleHRDb250ZW50ICsgZGF0YQ0KCQkJCQkJCQkkKCcjdGFpbGxvZ2FyZWEnKVswXS5zY3JvbGxUb3AgPSAkKCcjdGFpbGxvZ2FyZWEnKVswXS5zY3JvbGxIZWlnaHQ7DQoJCQkJCQl9KTsNCgkJCQkJfQ0KCQkJCQkiOw0KCQl9DQoJCSRzY3JpcHQuPSINCgkJCQlpZiAoISQoJyN1c2VfbW9iaWxldGVtcGxhdGUnKS5pcygnOmNoZWNrZWQnKSkgew0KCQkJICAgICAgJCgnI21vYmlsZScpLmhpZGUoKTsNCgkJCSAgICAgICQoJyNtb2JpbGVfYycpLmhpZGUoKTsNCgkJCSAgICB9DQoJCQkJJCgnI3VzZV9tb2JpbGV0ZW1wbGF0ZScpLmNsaWNrKGZ1bmN0aW9uKCl7DQoJCQkJICAgIGlmKCAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKSApIHsNCgkJCQkgICAgICAkKCcjbW9iaWxlJykuc2hvdygpOw0KCQkJCSAgICAgICQoJyNtb2JpbGVfYycpLnNob3coKTsNCgkJCQkgICAgfQ0KCQkJCSAgICBlbHNlIHsNCgkJCQkgICAgICAkKCcjbW9iaWxlJykuaGlkZSgpOw0KCQkJCSAgICAgICQoJyNtb2JpbGVfYycpLmhpZGUoKTsNCgkJCQkgICAgICAkKCcjZGVza3RvcCcpLmF0dHIoJ2NsYXNzJywnYWN0aXZlJyk7DQoJCQkJICAgICAgJCgnI2Rlc2t0b3BfYycpLmF0dHIoJ3N0eWxlJywnZGlzcGxheTpibG9jaycpOw0KCQkJCSAgICAgICQoJyNtb2JpbGUnKS5hdHRyKCdjbGFzcycsJycpOw0KCQkJCSAgICB9DQoJCQkJICB9KTsNCgkJCX0pOw0KCQkJPC9zY3JpcHQ+IjsNCgkJDQoJCQ0KCQkkc2NyaXB0IC49ICc8bGluayBocmVmPSInLiR0aGlzLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1Rvb2xCb3gvdGVtcGxhdGVzL2pzL2ZpbGV1cGxvYWRlci9maWxldXBsb2FkZXIuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPicuIlxuIjsNCgkJJHNjcmlwdCAuPSAnPHNjcmlwdCBzcmM9IicuJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvVG9vbEJveC90ZW1wbGF0ZXMvanMvZmlsZXVwbG9hZGVyL2ZpbGV1cGxvYWRlci5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4nLiJcbiI7DQoJCQ0KCQlyZXR1cm4gJHNjcmlwdDsNCgl9DQoNCgkvKioNCgkqIFNldCBwYXJhbWV0ZXJzIGZvciB0aGlzIG1vZHVsZS4NCgkqIEByZXR1cm4gc3RyaW5nDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCg0KCQkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCgkJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbW9kJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbW1vZCcpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZCcsQ0xFQU5fU1RSSU5HKTsNCg0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0ZW1wbGF0ZScsICcnLCAkdGhpcy0+bGFuZygncGFyYW10ZW1wbGF0ZScpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOw0KDQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RldGFpbHRlbXBsYXRlJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWRldGFpbHRlbXBsYXRlJykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGV0YWlsdGVtcGxhdGUnLENMRUFOX1NUUklORyk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdmaWxlJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWZpbGUnKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmaWxlJyxDTEVBTl9TVFJJTkcpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGVsaW1pdGVyJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWRlbGltaXRlcicpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RlbGltaXRlcicsQ0xFQU5fU1RSSU5HKTsNCgkJDQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2ZpbGVjaGFyc2V0JywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWZpbGVjaGFyc2V0JykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZmlsZWNoYXJzZXQnLENMRUFOX1NUUklORyk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhY3Rpb24nLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtYWN0aW9uJykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWN0aW9uJyxDTEVBTl9TVFJJTkcpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc29ydGJ5JywgJycsICR0aGlzLT5sYW5nKCdwYXJhbXNvcnRieScpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRieScsQ0xFQU5fU1RSSU5HKTsNCgkJDQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3NvcnRvcmRlcicsICcnLCAkdGhpcy0+bGFuZygncGFyYW1zb3J0b3JkZXInKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzb3J0b3JkZXInLENMRUFOX1NUUklORyk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd1c2VybmFtZScsICcnLCAkdGhpcy0+bGFuZygncGFyYW11c2VybmFtZScpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3VzZXJuYW1lJyxDTEVBTl9TVFJJTkcpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbGlzdCcsICcnLCAkdGhpcy0+bGFuZygncGFyYW1saXN0JykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbGlzdCcsQ0xFQU5fU1RSSU5HKTsNCg0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdzZWFyY2gnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtc2VhcmNoJykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2VhcmNoJyxDTEVBTl9TVFJJTkcpOw0KCQkNCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignY291bnQnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtY291bnQnKSk7DQoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb3VudCcsQ0xFQU5fSU5UKTsNCgkJDQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVmb3JtYXQnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtZGF0ZWZvcm1hdCcpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVmb3JtYXQnLENMRUFOX1NUUklORyk7DQoJCQ0KCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjYWNoZXRpbWUnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtY2FjaGV0aW1lJykpOw0KCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2FjaGV0aW1lJyxDTEVBTl9JTlQpOw0KDQoJCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NvbnNvbGVsb2cnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtY29uc29sZWxvZycpKTsNCgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvbnNvbGVsb2cnLENMRUFOX05PTkUpOw0KCQkNCi8vCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdpbWFnZScsICcnLCAkdGhpcy0+bGFuZygncGFyYW1pbWFnZScpKTsNCi8vCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW1hZ2UnLENMRUFOX1NUUklORyk7DQovLwkJDQovLwkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignaGVpZ2h0JywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWhlaWdodCcpKTsNCi8vCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGVpZ2h0JyxDTEVBTl9JTlQpOw0KLy8JCQ0KLy8JCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3dpZHRoJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbXdpZHRoJykpOw0KLy8JCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3aWR0aCcsQ0xFQU5fSU5UKTsNCi8vCQkNCi8vCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhbHQnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtYWx0JykpOw0KLy8JCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbHQnLENMRUFOX1NUUklORyk7DQovLw0KLy8JCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RpdGxlJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbXRpdGxlJykpOw0KLy8JCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aXRsZScsQ0xFQU5fU1RSSU5HKTsNCi8vCQkNCi8vCQkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdjbGFzcycsICcnLCAkdGhpcy0+bGFuZygncGFyYW1pZCcpKTsNCi8vCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2xhc3MnLENMRUFOX1NUUklORyk7DQovLw0KLy8JCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2lkJywgJycsICR0aGlzLT5sYW5nKCdwYXJhbWNsYXNzJykpOw0KLy8JCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZCcsQ0xFQU5fU1RSSU5HKTsNCi8vDQovLwkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc3R5bGUnLCAnJywgJHRoaXMtPmxhbmcoJ3BhcmFtc3R5bGUnKSk7DQovLwkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0eWxlJyxDTEVBTl9TVFJJTkcpOw0KLy8JCQ0KLy8JCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ25vX3RhZycsICcnLCAkdGhpcy0+bGFuZygncGFyYW1ub3RhZycpKTsNCi8vCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbm9fdGFnJyxDTEVBTl9TVFJJTkcpOw0KCQkNCgkJIyR0aGlzLT5SZWdpc3RlclJvdXRlKCcvW3NTXWl0ZW1hcC54bWxcLyg/UDxtb2RlPlswLTldKykkLycpOw0KDQoJCS8vIE1vZHVsZSBwYXJhbXMNCgkJLy8gJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigncGFyYW1OYW1lJywnZGVmYXVsdFZhbHVlJywnSGVscERlc2NyaXB0aW9uJyk7DQoNCgkJLy8gRm9ybSBwYXJhbXMNCgkJLy8gJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhcmFtTmFtZScsQ0xFQU5fVFlQRSk7DQoJCS8vIENMRUFOX1RZUEUgY291bGQgYmUgQ0xFQU5fTk9ORSAvIENMRUFOX1NUUklORyAvIENMRUFOX0lOVCAvIENMRUFOX0ZMT0FUIC8gQ0xFQU5fRklMRQ0KCQkjJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhZ2VpZCcsQ0xFQU5fSU5UKTsNCgkJIyR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwYWdlYWxpYXMnLENMRUFOX1NUUklORyk7DQoJCSMkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbGlua3ZhbHVlJyxDTEVBTl9TVFJJTkcpOw0KDQoJfQ0KDQoJLyoqDQoJICogSW5pdGFsaXplIHBhcmFtcyBmb3IgYmFja2VuZA0KCSAqLw0KCWZ1bmN0aW9uIEluaXRpYWxpemVBZG1pbigpIHsNCgkgICR0aGlzLT5TZXRQYXJhbWV0ZXJzKCk7DQoJfQ0KDQoJLyoqDQoJICogRW5hYmxlIExhenlMb2FkIGluIEZyb250ZW5kDQoJICogQHJldHVybiBib29sZWFuDQoJICovDQoJZnVuY3Rpb24gTGF6eUxvYWRGcm9udGVuZCgpIHsNCgkgIHJldHVybiBGQUxTRTsNCgl9DQoJDQoJLyoqDQoJKiBTZXRzIHRoZSBwZXJtaXNzaW9uIGZvciB0aGlzIG1vZHVsZS4NCgkqIEByZXR1cm4gc3RyaW5nDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgew0KCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRvb2xCb3gnKTsNCgl9DQoNCgkvKioNCgkqIEdldHMgYSBtZXNzYWdlIHRvIGRpc3BsYXkgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlDQoJKiBAcmV0dXJuIHN0cmluZw0KCSovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KCX0NCg0KCS8qKg0KCSogR2V0cyBhIG1lc3NhZ2UgdG8gZGlzcGx5IGFmdGVyIHVuaW5zdGFsbGluZyB0aGlzIG1vZHVsZS4NCgkqIEByZXR1cm4gc3RyaW5nDQoJKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQoJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KCX0NCg0KCS8qKg0KCSogR2V0cyBhIG1lc3NhZ2UgYmVmb3JlIHVuaW5zdGFsbGluZyB0aGlzIG1vZHVsZQ0KCSogQHJldHVybiBzdHJpbmcNCgkqLw0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkgew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3ByZXVuaW5zdGFsbCcpOw0KCX0NCg0KCXB1YmxpYyBmaW5hbCBmdW5jdGlvbiBnZXRUcGxUb2tlbigpDQoJew0KCQlyZXR1cm4gYXJyYXkoImFsYl8iLCJ0d2ZfIiwiY3N2c3VtXyIsImNzdmRldF8iKTsNCgl9ICAgDQoJDQoJLyoqDQoJICogDQoJICogRGVmaW5pZXJ0IGRlbiBOYW1lbiBkZXMgTG9nZmlsZXMNCgkgKiBAcGFyYW0gJGZpbGVuYW1lDQoJICovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIHNldExvZ0ZpbGUoJGZpbGVuYW1lKXsNCgkJaWYgKCFAaXNfZGlyKCR0aGlzLT50YkxvZ1BhdGgpKSB7DQoJCQlAbWtkaXIoJHRoaXMtPnRiTG9nUGF0aCwwNzU1KTsNCgkJfQkNCgkJDQoJCS8vIEFsbGVzIHdhcyBuaWNodCBhbHBoYW51bWVyaXNjaCBpc3QsIGVyc2V0emVuDQoJCSRmaWxlbmFtZSA9IHByZWdfcmVwbGFjZSgnL1teYS16MC05Xy1dL2lzVScsICcnLCAkZmlsZW5hbWUpOw0KCQkJCQ0KCQkkdGhpcy0+dGJMb2dGaWxlID0gJGZpbGVuYW1lLiIubG9nIjsNCgkJDQoJCS8vIExvZ2ZpbGUgZXJzdGVsbGVuLCBmYWxscyBub2NoIG5pY2h0IHZvcmhhbmRlbg0KCQlpZiAoIWZpbGVfZXhpc3RzKCR0aGlzLT50YkxvZ1BhdGguJHRoaXMtPnRiTG9nRmlsZSkpIHsNCgkJCSRmcCA9IEBmb3BlbigkdGhpcy0+dGJMb2dQYXRoLiR0aGlzLT50YkxvZ0ZpbGUsICJ3Iik7DQoJCQlAZmNsb3NlKCRmcCk7DQoJCX0NCgl9DQoJDQoJLyoqDQoJICogDQoJICogU2NocmVpYnQgaW5zIExvZ2ZpbGUNCgkgKiBAcGFyYW0gJG1lc3NhZ2UNCgkgKi8NCglwdWJsaWMgZmluYWwgZnVuY3Rpb24gbHdyaXRlKCRtZXNzYWdlKXsNCgkJaWYgKCEkdGhpcy0+dGJmcCkgJHRoaXMtPmxvcGVuKCk7DQoJCS8vJHNjcmlwdF9uYW1lID0gcGF0aGluZm8oJF9TRVJWRVJbJ1BIUF9TRUxGJ10sIFBBVEhJTkZPX0ZJTEVOQU1FKTsNCgkJJHRpbWUgPSBkYXRlKCdZLW0tZCBIOmk6cycpOw0KCQlpZiAoaXNfYXJyYXkoJG1lc3NhZ2UpKSAkbWVzc2FnZSA9IHByaW50X3IoJG1lc3NhZ2UsdHJ1ZSk7DQoJCWlmIChpc19vYmplY3QoJG1lc3NhZ2UpKSAkbWVzc2FnZSA9IHByaW50X3IoJG1lc3NhZ2UsdHJ1ZSk7DQoJCWZ3cml0ZSgkdGhpcy0+ZnAsICR0aW1lLiIgIi4kbWVzc2FnZS4iXG4iKTsNCgl9DQoJCQ0KCS8qKg0KCSAqIA0KCSAqIMOWZmZuZXQgZGFzIExvZ2ZpbGUgenVtIHNjaHJlaWJlbg0KCSAqLw0KCXByaXZhdGUgZmluYWwgZnVuY3Rpb24gbG9wZW4oKSB7DQoJCSR0aGlzLT5mcCA9IGZvcGVuKCR0aGlzLT50YkxvZ1BhdGguJHRoaXMtPnRiTG9nRmlsZSwgJ2EnKTsNCgl9DQoNCgkvKioNCgkgKiANCgkgKiBFcnpldWd0IGVpbmUgWnVmYWxsc3JlaWhlIGF1cyBaYWhsZW4gdW5kIEJ1Y2hzdGFiZW4NCgkgKiBAYmFzZWQgb24gaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9kZS9mdW5jdGlvbi5yYW5kLnBocCMxMDYwMDQNCgkgKiBAcGFyYW0gaW50ICRsZW5ndGggLSBMw6RuZ2UgZGVzIFJhbmRvbS1TdHJpbmdzDQoJICovDQoJcHVibGljIGZpbmFsIGZ1bmN0aW9uIHJhbmRvbUFscGhhTnVtKCRsZW5ndGgpIHsNCgkgICAgJHJhbmdlTWluID0gcG93KDM2LCAkbGVuZ3RoLTEpOyAvL3NtYWxsZXN0IG51bWJlciB0byBnaXZlIGxlbmd0aCBkaWdpdHMgaW4gYmFzZSAzNg0KCSAgICAkcmFuZ2VNYXggPSBwb3coMzYsICRsZW5ndGgpLTE7IC8vbGFyZ2VzdCBudW1iZXIgdG8gZ2l2ZSBsZW5ndGggZGlnaXRzIGluIGJhc2UgMzYNCgkgICAgJGJhc2UxMFJhbmQgPSBtdF9yYW5kKCRyYW5nZU1pbiwgJHJhbmdlTWF4KTsgLy9nZXQgdGhlIHJhbmRvbSBudW1iZXINCgkgICAgJG5ld1JhbmQgPSBiYXNlX2NvbnZlcnQoJGJhc2UxMFJhbmQsIDEwLCAzNik7IC8vY29udmVydCBpdA0KCSAgIA0KCSAgICByZXR1cm4gJG5ld1JhbmQ7IC8vc3BpdCBpdCBvdXQNCgl9DQoJDQoNCn0gLy8gRW5kIG9mIGNsYXNzDQoNCg0KLy8gRU9G]]></data>
	</file>
</module>
