<?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>JQueryFU</name>
	<version>1.1.0</version>
  <mincmsversion>1.10.0</mincmsversion>
	<help><![CDATA[CQk8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4KCQk8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlZ3JhdGlvbiBvZiB0aGUgZ3JlYXQgcGx1Z2luIEpRdWVyeSBGaWxlIFVwbG9hZCBpbnRvIHRoZSBncmVhdCBDbXMgTWFkZSBTaW1wbGU8L3A+CgkJPHA+U2VlIG1vcmUgb24gaHR0cDovL2JsdWVpbXAuZ2l0aHViLmNvbS9qUXVlcnktRmlsZS1VcGxvYWQvPC9wPgoJCTxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4KCQk8cD5Xcml0ZSBpbnRvIHlvdXIgY29udGVudCA6IHtKUXVlcnlGVX0gPC9wPgoJCTxoMz5Ib3cgZG8gSSB1c2UgaXQgPyAoQWR2YW5jZSB1c2FnZSk8L2gzPgoJCTxwPllvdSBjYW4gZWFzaWx5IGFzc29jaWF0ZSB0aGlzIG1vZHVsZSB3aXRoIEZFVSBhbmQgY3JlYXRlIGEgZGlmZmVyZW50IHVwbG9hZCBwbGF0Zm9ybSBmb3IgZWFjaCBvZiB5b3VyIHVzZXI8L3A+CgkJPHA+IEV4YW1wbGUgb2YgY29kZSA8L3A+CgkJPHByZSBzdHlsZT0ibWFyZ2luOiA1cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYig3MSwgNjgsIDY4KTsgY29sb3I6IHJnYigyLCAxODcsIDApOyBwYWRkaW5nOiA1cHg7Ij4KCQkJe2lmICRjY3VzZXItPm1lbWJlcm9mKCJBZG1pbiIpfQoJCQkJe0pRdWVyeUZVIHRlbXBsYXRlPSJmdWxsIiBudW1iZXI9MTAwIGFjY2VwdF9maWxlX3R5cGVzPScvXC4odHh0fGdpZnxqcGU/Z3xwbmd8cHNkfHBkZikkL2knfQoJCQl7ZWxzZX0KCQkJCXtKUXVlcnlGVSB0ZW1wbGF0ZT0iYmFzaWMiIG51bWJlcj0xMCBhY2NlcHRfZmlsZV90eXBlcz0nL1wuKGdpZnxqcGU/Z3xwbmcpJC9pJ30KCQkJey9pZn0KCQk8L3ByZT4KCQk8aDM+SG93IGNhbiBpIGFjdGl2YXRlIHRoZSBjbGllbnQncyBzaWRlIHJlc2l6aW5nID8gKEFkdmFuY2UgdXNhZ2UpPC9oMz4KCQk8cD5KUXVlcnkgRmlsZSBVcGxvYWQgY2FuIHJlc2l6ZSB0aGUgYmlnIHBpY3R1cmVzIEJFRk9SRSBzdGFydGluZyB0aGUgdXBsb2Fkcy4gVG8gYWN0aXZhdGUgdGhpcyBmdW5jdGlvbiwgeW91IG11c3QgbW9kaWZ5IHRoZSBmaWxlIC4vbW9kdWxlcy9KUXVlcnlGVS9qcWZ1L2pzL2pxdWVyeS5maWxldXBsb2FkLWZwLmpzIGFuZCB1bmNvbW1lbnQgdGhlIGNvZGUgbGluZSA0MiA6IDwvcD4KCQk8cHJlIHN0eWxlPSJtYXJnaW46IDVweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDcxLCA2OCwgNjgpOyBjb2xvcjogcmdiKDIsIDE4NywgMCk7IHBhZGRpbmc6IDVweDsiPgogICAgICAgICAgICAgIHByb2Nlc3M6IFsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAqLwogICAgICAgICAgICBdLAoJCTwvcHJlPgoJCQoJCTxwPnRvPC9wPgoJCQoJCTxwcmUgc3R5bGU9Im1hcmdpbjogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEsIDY4LCA2OCk7IGNvbG9yOiByZ2IoMiwgMTg3LCAwKTsgcGFkZGluZzogNXB4OyI+CiAgICAgICAgICAgICAgcHJvY2VzczogWwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgXSwKCQk8L3ByZT4KCQk8cD4gSXQncyB2ZXJ5IHNpbXBsZSBidXQgPHNwYW4gc3R5bGU9ImNvbG9yOiNGMDAiPnlvdSBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlc2VzIGNoYW5nZXMgd2lsbCBiZSBsb3N0IG9uIHRoZSBuZXh0IHVwZ3JhZGUgb2YgbXkgbW9kdWxlPC9zcGFuPi4gSSBkb24ndCBoYXZlIG90aGVyIHNvbHV0aW9uLiBTb3JyeSBmb3IgdGhhdC4gQlRXIElmIHlvdSBoYXZlIGEgc29sdXRpb24sIGRvbid0IGhlc2l0ZSB0byBjb250YWN0IG1lICE8L3A+PGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DR0V4dGVuc2lvbnMgPSZndDsgMS4zNzwvbGk+PC91bD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtJmVncmF2ZTt0cmUgdXRpbGlzJmVhY3V0ZTsgcG91ciBzcCZlYWN1dGU7Y2lmaWVyIGRhbnMgcXVlbGxlIGxhbmd1ZSBhZmZpY2hlciBsZSBtb2R1bGUgZGFucyBsYSBwYXJ0aWUgcHVibGlxdWUuIENlIHBhcmFtJmVncmF2ZTt0cmUgbiYjMDM5O2VzdCBwYXMgc3VwcG9ydCZlYWN1dGU7IG91IHV0aWxlIHBvdXIgdG91cyBsZXMgbW9kdWxlcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGFjY2VwdF9maWxlX3R5cGVzPSIvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pIiAtIFJlZ2V4IG9mIHRoZSBmaWxlcyBleHRlbnNpb25zIHRoYXQgYXJlIGFsbG93ZWQuIEJ5IERlZmF1bHQgOiAnL1wuKHR4dHxnaWZ8anBlP2d8cG5nKSQvaSc8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG51bWJlcj0iOTk5OTkiIC0gTnVtYmVyIG9mIGZpbGVzIHRoYXQgY2FuIGJlIGluIHRoZSB1cGxvYWRzIGRpcmVjdG9yeSBhdCB0aGUgc2FtZSB0aW1lPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBtYXhfd2lkdGg9IjAiIC0gVGhlIG1heCB3aWR0aCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1heF93aWR0aD0xNTA8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1heF9oZWlnaHQ9IjAiIC0gVGhlIG1heF9oZWlnaHQgZm9yIHRoZSBpbWFnZXMgdXBsb2FkZWQuIEV4ZW1wbGUgOiBtYXhfaGVpZ2h0PTE1MDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbWluX3dpZHRoPSIwIiAtIFRoZSBtaW4gd2lkdGggZm9yIHRoZSBpbWFnZXMgdXBsb2FkZWQuIEV4ZW1wbGUgOiBtaW5fd2lkdGg9MTUwLiBCeSBEZWZhdWx0IDogbWluX3dpZHRoPTA8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1pbl9oZWlnaHQ9IjAiIC0gVGhlIG1pbiBoZWlnaHQgZm9yIHRoZSBpbWFnZXMgdXBsb2FkZWQuIEV4ZW1wbGUgOiBtaW5faGVpZ2h0PTE1MC4gQnkgRGVmYXVsdCA6IG1pbl9oZWlnaHQ9MDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2xlYW5fbmFtZT0idHJ1ZSIgLSBpZiB0cnVlLCB3aWxsIHJlcGxhY2UgYWNjZW50cywgc3BhY2VzIGFuZCBvdGhlciBzcGFjaWFscyBjYXJhY3RlcnMgYnkgc29tZSBtb3JlIGNsZWFuPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkaXJfcGF0aD0iXHVwbG9hZHNcanF1ZXJ5ZnUiIC0gdGhlIGRpcmVjdG9yeSB1c2VkIHRvIHVwbG9hZCBmaWxlcy4gQmUgY2FyZWZ1bGwsIHVzZSAiLyIgb3IgIlwiIGludG8gVW5peCBvciBXaW5kb3dzIHN5c3RlbTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGlyX3VybD0iL3VwbG9hZHMvanF1ZXJ5ZnUiIC0gdGhlIHVybCB1c2VkIHRvIGRpc3BsYXkgdXBsb2FkZWQgZmlsZXM8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHRlbXBsYXRlPSJmdWxsIiAtIFRoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZS4gQXJlIGFsbG93ZWQgOiAiZnVsbCIsICJiYXNpYyIgYW5kIGFsbCB0aGUgdGVtcGxhdGVzIGludG8gdGhlICIvbW9kdWxlcy9KUXVlcnlGVS90ZW1wbGF0ZXMiIGRpcmVjdG9yeTwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBLZXZpbiBEYW5lemlzIChha2EgQmVzcykgJmx0O2NvbnRhY3QgYXQgZnVyaWUgcG9pbnQgYmUmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4xLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz4tLSBNaXNzaW5nIExhbmd1YWdlc3RyaW5nIC0gbW9kdWxlOkpRdWVyeUZVIHN0cmluZzpjaGFuZ2Vsb2ctLTxiciAvPg==]]></about>
	<description><![CDATA[You can easily associate this module with FEU and create a different upload platform for each of your user. You can also simply use it as an open upload platform for your visitors with lot of parameters.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.37</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKJG15RmluZGVyID0gbmV3IE15RmluZGVyKCRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RtcCcuRElSRUNUT1JZX1NFUEFSQVRPUi4nY2FjaGUnLkRJUkVDVE9SWV9TRVBBUkFUT1IpOwoKJHBhcmFtZXRlcnMgPSBhcnJheSgpOwoKLy9CeSBkZWZhdWx0IDogJy9cLih0eHR8Z2lmfGpwZT9nfHBuZykkL2knCmlmKGlzc2V0KCRwYXJhbXNbJ2FjY2VwdF9maWxlX3R5cGVzJ10pKSB7CgkkcGFyYW1ldGVyc1snYWNjZXB0X2ZpbGVfdHlwZXMnXSA9IGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydhY2NlcHRfZmlsZV90eXBlcyddLEVOVF9RVU9URVMsJ1VURi04Jyk7Cn0KLy9CeSBkZWZhdWx0IDogbnVsbAppZihpc3NldCgkcGFyYW1zWydudW1iZXInXSkpIHsKCSRwYXJhbWV0ZXJzWydtYXhfbnVtYmVyX29mX2ZpbGVzJ10gPSAkcGFyYW1zWydudW1iZXInXTsKfQovL0J5IGRlZmF1bHQgOiBudWxsCmlmKGlzc2V0KCRwYXJhbXNbJ21heF93aWR0aCddKSkgewoJJHBhcmFtZXRlcnNbJ21heF93aWR0aCddID0gJHBhcmFtc1snbWF4X3dpZHRoJ107Cn0KLy9CeSBkZWZhdWx0IDogbnVsbAppZihpc3NldCgkcGFyYW1zWydtYXhfaGVpZ2h0J10pKSB7CgkkcGFyYW1ldGVyc1snbWF4X2hlaWdodCddID0gJHBhcmFtc1snbWF4X2hlaWdodCddOwp9Ci8vQnkgZGVmYXVsdCA6IDEgKHB4KQppZihpc3NldCgkcGFyYW1zWydtaW5fd2lkdGgnXSkpIHsKCSRwYXJhbWV0ZXJzWydtaW5fd2lkdGgnXSA9ICRwYXJhbXNbJ21pbl93aWR0aCddOwp9Ci8vQnkgZGVmYXVsdCA6IDEgKHB4KQppZihpc3NldCgkcGFyYW1zWydtaW5faGVpZ2h0J10pKSB7CgkkcGFyYW1ldGVyc1snbWluX2hlaWdodCddID0gJHBhcmFtc1snbWluX2hlaWdodCddOwp9Ci8vQnkgZGVmYXVsdCA6IHRydWUKaWYoaXNzZXQoJHBhcmFtc1snY2xlYW5fbmFtZSddKSkgewoJJHBhcmFtZXRlcnNbJ2NsZWFuX25hbWUnXSA9ICRwYXJhbXNbJ2NsZWFuX25hbWUnXTsKfQovL0J5IGRlZmF1bHQgOiAiXHVwbG9hZHNcanF1ZXJ5ZnUiCmlmKGlzc2V0KCRwYXJhbXNbJ2Rpcl9wYXRoJ10pKSB7CgkkcGFyYW1ldGVyc1snZGlyX3BhdGgnXSA9ICRwYXJhbXNbJ2Rpcl9wYXRoJ107Cn0KLy9CeSBkZWZhdWx0IDogIi91cGxvYWRzL2pxdWVyeWZ1IgppZihpc3NldCgkcGFyYW1zWydkaXJfdXJsJ10pKSB7CgkkcGFyYW1ldGVyc1snZGlyX3VybCddID0gJHBhcmFtc1snZGlyX3VybCddOwp9CgokdHBsID0gIWVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlJ10pP1RNUExfUFJFRklYX0RJU1BMQVkuJHBhcmFtc1sndGVtcGxhdGUnXTpUTVBMX1BSRUZJWF9ESVNQTEFZLiR0aGlzLT5HZXRQcmVmZXJlbmNlKERFRkFVTFRfRElTUExBWV9UTVBMX1BSRUZfTkFNRSk7CgovL0NyZWF0ZSBza2VsZXRvbiBmcm9tIHRlbXBsYXRlIApsaXN0KCRuYW1lLCAkaGFzaCkgPSAkbXlGaW5kZXItPm1ha2VUaGVGaWxlKCR0aGlzLCAkY29uZmlnLCAkcGFyYW1ldGVycyk7Cgokc21hcnR5LT5hc3NpZ24oJ3BhdGgnLCRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLidtb2R1bGVzJy4nLycuJHRoaXMtPkdldE5hbWUoKS4nLycuImpxZnUiKTsKJHNtYXJ0eS0+YXNzaWduKCduYW1lJywkbmFtZSk7CiRzbWFydHktPmFzc2lnbignaGFzaCcsJGhhc2gpOwoKCiRodG1sID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkdHBsKTsKCmVjaG8gJGh0bWw7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKaWYgKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpxdWVyeUZVJykpIHsKICByZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHRhYiA9ICcnOwppZiAoIWVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpIHsKCSR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107Cn0KCiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCiR0YWJfaGVhZGVyID0gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwokdGFiX2hlYWRlciAuPSAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlJyksJ3RlbXBsYXRlJyA9PSAkdGFiKTsKJHNtYXJ0eS0+YXNzaWduKCdzdGFydF90ZW1wbGF0ZV90YWInLCR0aGlzLT5TdGFydFRhYigndGVtcGxhdGUnLCAkcGFyYW1zKSk7CgoKJHNtYXJ0eS0+YXNzaWduKCd0YWJzX3N0YXJ0JywkdGFiX2hlYWRlci4kdGhpcy0+RW5kVGFiSGVhZGVycygpLiR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKSk7CiRzbWFydHktPmFzc2lnbigndGFiX2VuZCcsJHRoaXMtPkVuZFRhYigpKTsKJHNtYXJ0eS0+YXNzaWduKCd0YWJzX2VuZCcsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKCmlmKCFlbXB0eSgkcGFyYW1zWydtc2cnXSkpeyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHBhcmFtc1snbXNnJ10pKTsgfQppZighZW1wdHkoJHBhcmFtc1snZXJyJ10pKXsgJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJHBhcmFtc1snZXJyJ10pKTsgfQoKLyoqIFRFTVBMQVRFIFBBUlQgKiovCiRzbWFydHktPmFzc2lnbignaGVhZGluZ19kaXNwbGF5JywgJHRoaXMtPkxhbmcoJ2hlYWRpbmdfZGlzcGxheScpKTsKJHNtYXJ0eS0+YXNzaWduKAoJJ2xpc3RfZGlzcGxheV90ZW1wbGF0ZXMnLCAKCSR0aGlzLT5TaG93VGVtcGxhdGVMaXN0KAoJCSRpZCwgCgkJJHJldHVybmlkLCAKCQlUTVBMX1BSRUZJWF9ESVNQTEFZLCAKCQknZGVmYXVsdF8nLlRNUExfUFJFRklYX0RJU1BMQVkuJ190ZW1wbGF0ZV9jb250ZW50cycsCgkJJ3RlbXBsYXRlJywKCQknY3VycmVudF8nLlRNUExfUFJFRklYX0RJU1BMQVkuJ190ZW1wbGF0ZScsCgkJJHRoaXMtPkxhbmcoJ3RpdGxlX2Rpc3BsYXknKSwKCQkkdGhpcy0+TGFuZygndGV4dF9kaXNwbGF5X2VkaXQnKSwKCQknZGVmYXVsdGFkbWluJwoJKQopOwovKiogVEVNUExBVEUgUEFSVCAqKi8KCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW4udHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/jqfu/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/cors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/cors/postmessage.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUw+CjwhLS0KLyoKKiBqUXVlcnkgRmlsZSBVcGxvYWQgUGx1Z2luIHBvc3RNZXNzYWdlIEFQSSAxLjEuMQoqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAoqCiogQ29weXJpZ2h0IDIwMTEsIFNlYmFzdGlhbiBUc2NoYW4KKiBodHRwczovL2JsdWVpbXAubmV0CioKKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKi8KLS0+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPmpRdWVyeSBGaWxlIFVwbG9hZCBQbHVnaW4gcG9zdE1lc3NhZ2UgQVBJPC90aXRsZT4KPHNjcmlwdCBzcmM9Ii8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuOC4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5Pgo8c2NyaXB0PgovKmpzbGludCB1bnBhcmFtOiB0cnVlLCByZWdleHA6IHRydWUgKi8KLypnbG9iYWwgJCwgQmxvYiwgRm9ybURhdGEsIGxvY2F0aW9uICovCid1c2Ugc3RyaWN0JzsKdmFyIG9yaWdpbiA9IC9eaHR0cDpcL1wvZXhhbXBsZS5vcmcvLAogICAgdGFyZ2V0ID0gbmV3IFJlZ0V4cCgnXihodHRwKHMpPzopP1xcL1xcLycgKyBsb2NhdGlvbi5ob3N0ICsgJ1xcLycpOwokKHdpbmRvdykub24oJ21lc3NhZ2UnLCBmdW5jdGlvbiAoZSkgewogICAgZSA9IGUub3JpZ2luYWxFdmVudDsKICAgIHZhciBzID0gZS5kYXRhLAogICAgICAgIHhociA9ICQuYWpheFNldHRpbmdzLnhocigpLAogICAgICAgIGY7CiAgICBpZiAoIW9yaWdpbi50ZXN0KGUub3JpZ2luKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignT3JpZ2luICInICsgZS5vcmlnaW4gKyAnIiBkb2VzIG5vdCBtYXRjaCAnICsgb3JpZ2luKTsKICAgIH0KICAgIGlmICghdGFyZ2V0LnRlc3QoZS5kYXRhLnVybCkpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCAiJyArIGUuZGF0YS51cmwgKyAnIiBkb2VzIG5vdCBtYXRjaCAnICsgdGFyZ2V0KTsKICAgIH0KICAgICQoeGhyLnVwbG9hZCkub24oJ3Byb2dyZXNzJywgZnVuY3Rpb24gKGV2KSB7CiAgICAgICAgZXYgPSBldi5vcmlnaW5hbEV2ZW50OwogICAgICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgaWQ6IHMuaWQsCiAgICAgICAgICAgIHR5cGU6IGV2LnR5cGUsCiAgICAgICAgICAgIHRpbWVTdGFtcDogZXYudGltZVN0YW1wLAogICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiBldi5sZW5ndGhDb21wdXRhYmxlLAogICAgICAgICAgICBsb2FkZWQ6IGV2LmxvYWRlZCwKICAgICAgICAgICAgdG90YWw6IGV2LnRvdGFsCiAgICAgICAgfSwgZS5vcmlnaW4pOwogICAgfSk7CiAgICBzLnhociA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4geGhyOwogICAgfTsKICAgIGlmICghKHMuZGF0YSBpbnN0YW5jZW9mIEJsb2IpKSB7CiAgICAgICAgZiA9IG5ldyBGb3JtRGF0YSgpOwogICAgICAgICQuZWFjaChzLmRhdGEsIGZ1bmN0aW9uIChpLCB2KSB7CiAgICAgICAgICAgIGYuYXBwZW5kKHYubmFtZSwgdi52YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgICAgcy5kYXRhID0gZjsKICAgIH0KICAgICQuYWpheChzKS5hbHdheXMoZnVuY3Rpb24gKHJlc3VsdCwgc3RhdHVzVGV4dCwganFYSFIpIHsKICAgICAgICBpZiAoIWpxWEhSLmRvbmUpIHsKICAgICAgICAgICAganFYSFIgPSByZXN1bHQ7CiAgICAgICAgICAgIHJlc3VsdCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgaWQ6IHMuaWQsCiAgICAgICAgICAgIHN0YXR1czoganFYSFIuc3RhdHVzLAogICAgICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0LAogICAgICAgICAgICByZXN1bHQ6IHJlc3VsdCwKICAgICAgICAgICAgaGVhZGVyczoganFYSFIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICB9LCBlLm9yaWdpbik7CiAgICB9KTsKfSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/jqfu/cors/result.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIEhUTUw+CjwhLS0KLyoKKiBqUXVlcnkgSWZyYW1lIFRyYW5zcG9ydCBQbHVnaW4gUmVkaXJlY3QgUGFnZSAyLjAuMQoqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAoqCiogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW4KKiBodHRwczovL2JsdWVpbXAubmV0CioKKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKKi8KLS0+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPmpRdWVyeSBJZnJhbWUgVHJhbnNwb3J0IFBsdWdpbiBSZWRpcmVjdCBQYWdlPC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KPHNjcmlwdD4KZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9ZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudD1kZWNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zbGljZSgxKSk7Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap-ie6.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsNCi5uYXZiYXItZml4ZWQtdG9we3Bvc2l0aW9uOmFic29sdXRlO30NCi5uYXZiYXIgLm5hdiBsaXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7fQ0KLm5hdmJhciAubmF2IGxpIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTBweCAxMXB4O2xpbmUtaGVpZ2h0OjE5cHg7Y29sb3I6I2ZmZjt9DQouc3BhbjEsLnNwYW4yLC5zcGFuMywuc3BhbjQsLnNwYW41LC5zcGFuNiwuc3BhbjcsLnNwYW44LC5zcGFuOSwuc3BhbjEwLC5zcGFuMTEsLnNwYW4xMntkaXNwbGF5OmlubGluZTtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjIwcHg7fQ0KLm1vZGFse3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7ZmlsdGVyOm5vbmU7fQ0KaW5wdXR7d2lkdGg6YXV0bzt9DQo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap-image-gallery.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsNCi5tb2RhbC1nYWxsZXJ5e3dpZHRoOmF1dG87bWF4LWhlaWdodDpub25lO30NCi5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1ib2R5e21heC1oZWlnaHQ6bm9uZTt9DQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtdGl0bGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LWhlaWdodDo1NHB4O292ZXJmbG93OmhpZGRlbjt9DQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtaW1hZ2V7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOmF1dG87bWluLXdpZHRoOjEyOHB4O21pbi1oZWlnaHQ6MTI4cHg7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyO30NCi5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1pbWFnZTpob3ZlcjpiZWZvcmUsLm1vZGFsLWdhbGxlcnkgLm1vZGFsLWltYWdlOmhvdmVyOmFmdGVye2NvbnRlbnQ6J+KAuSc7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjE1cHg7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW4tdG9wOi0yMHB4O2ZvbnQtc2l6ZTo2MHB4O2ZvbnQtd2VpZ2h0OjEwMDtsaW5lLWhlaWdodDozMHB4O2NvbG9yOiNmZmZmZmY7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDojMjIyMjIyO2JvcmRlcjozcHggc29saWQgI2ZmZmZmZjstd2Via2l0LWJvcmRlci1yYWRpdXM6MjNweDstbW96LWJvcmRlci1yYWRpdXM6MjNweDtib3JkZXItcmFkaXVzOjIzcHg7b3BhY2l0eTowLjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApO3otaW5kZXg6MTt9DQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtaW1hZ2U6aG92ZXI6YWZ0ZXJ7Y29udGVudDon4oC6JztsZWZ0OmF1dG87cmlnaHQ6MTVweDt9DQoubW9kYWwtc2luZ2xlIC5tb2RhbC1pbWFnZTpob3ZlcjpiZWZvcmUsLm1vZGFsLXNpbmdsZSAubW9kYWwtaW1hZ2U6aG92ZXI6YWZ0ZXJ7ZGlzcGxheTpub25lO30NCi5tb2RhbC1sb2FkaW5nIC5tb2RhbC1pbWFnZXtiYWNrZ3JvdW5kOnVybCguLi9pbWcvbG9hZGluZy5naWYpIGNlbnRlciBuby1yZXBlYXQ7fQ0KLm1vZGFsLWdhbGxlcnkuZmFkZSAubW9kYWwtaW1hZ2V7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVhc2UsIGhlaWdodCAwLjE1cyBlYXNlOy1tb3otdHJhbnNpdGlvbjp3aWR0aCAwLjE1cyBlYXNlLCBoZWlnaHQgMC4xNXMgZWFzZTstbXMtdHJhbnNpdGlvbjp3aWR0aCAwLjE1cyBlYXNlLCBoZWlnaHQgMC4xNXMgZWFzZTstby10cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVhc2UsIGhlaWdodCAwLjE1cyBlYXNlO3RyYW5zaXRpb246d2lkdGggMC4xNXMgZWFzZSwgaGVpZ2h0IDAuMTVzIGVhc2U7fQ0KLm1vZGFsLWdhbGxlcnkgLm1vZGFsLWltYWdlICp7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7b3BhY2l0eTowO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO30NCi5tb2RhbC1nYWxsZXJ5LmZhZGUgLm1vZGFsLWltYWdlICp7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC41cyBsaW5lYXI7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgMC41cyBsaW5lYXI7LW1zLXRyYW5zaXRpb246b3BhY2l0eSAwLjVzIGxpbmVhcjstby10cmFuc2l0aW9uOm9wYWNpdHkgMC41cyBsaW5lYXI7dHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgbGluZWFyO30NCi5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1pbWFnZSAqLmlue29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30NCi5tb2RhbC1mdWxsc2NyZWVue2JvcmRlcjpub25lOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbjt9DQoubW9kYWwtZnVsbHNjcmVlbi5tb2RhbC1sb2FkaW5ne2JvcmRlcjowOy13ZWJraXQtYm94LXNoYWRvdzpub25lOy1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTt9DQoubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtYm9keXtwYWRkaW5nOjA7fQ0KLm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLWhlYWRlciwubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtZm9vdGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7bGVmdDowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO29wYWNpdHk6MDt6LWluZGV4OjIwMDA7fQ0KLm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLWZvb3Rlcnt0b3A6YXV0bztib3R0b206MDt9DQoubW9kYWwtZnVsbHNjcmVlbiAuY2xvc2UsLm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLXRpdGxle2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAwIDJweCByZ2JhKDMzLCAzMywgMzMsIDAuOCk7fQ0KLm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLWhlYWRlcjpob3ZlciwubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtZm9vdGVyOmhvdmVye29wYWNpdHk6MTt9DQpAbWVkaWEgKG1heC13aWR0aDo0ODBweCl7Lm1vZGFsLWdhbGxlcnkgLmJ0biBzcGFue2Rpc3BsYXk6bm9uZTt9fQ0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap-responsive.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4eyp6b29tOjE7fQ0KLmNsZWFyZml4OmJlZm9yZSwuY2xlYXJmaXg6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5jbGVhcmZpeDphZnRlcntjbGVhcjpib3RoO30NCi5oaWRlLXRleHR7Zm9udDowLzAgYTtjb2xvcjp0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7fQ0KLmlucHV0LWJsb2NrLWxldmVse2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI4cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7fQ0KLmhpZGRlbntkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW47fQ0KLnZpc2libGUtcGhvbmV7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fQ0KLnZpc2libGUtdGFibGV0e2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30NCi5oaWRkZW4tZGVza3RvcHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9DQpAbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUtcGhvbmV7ZGlzcGxheTppbmhlcml0ICFpbXBvcnRhbnQ7fSAuaGlkZGVuLXBob25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30gLmhpZGRlbi1kZXNrdG9we2Rpc3BsYXk6aW5oZXJpdCAhaW1wb3J0YW50O30gLnZpc2libGUtZGVza3RvcHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5NzlweCl7LnZpc2libGUtdGFibGV0e2Rpc3BsYXk6aW5oZXJpdCAhaW1wb3J0YW50O30gLmhpZGRlbi10YWJsZXR7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fSAuaGlkZGVuLWRlc2t0b3B7ZGlzcGxheTppbmhlcml0ICFpbXBvcnRhbnQ7fSAudmlzaWJsZS1kZXNrdG9we2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50IDt9fUBtZWRpYSAobWF4LXdpZHRoOjQ4MHB4KXsubmF2LWNvbGxhcHNley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO30gLnBhZ2UtaGVhZGVyIGgxIHNtYWxse2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MThweDt9IGlucHV0W3R5cGU9ImNoZWNrYm94Il0saW5wdXRbdHlwZT0icmFkaW8iXXtib3JkZXI6MXB4IHNvbGlkICNjY2M7fSAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwPmxhYmVse2Zsb2F0Om5vbmU7d2lkdGg6YXV0bztwYWRkaW5nLXRvcDowO3RleHQtYWxpZ246bGVmdDt9IC5mb3JtLWhvcml6b250YWwgLmNvbnRyb2xze21hcmdpbi1sZWZ0OjA7fSAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxpc3R7cGFkZGluZy10b3A6MDt9IC5mb3JtLWhvcml6b250YWwgLmZvcm0tYWN0aW9uc3twYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHg7fSAubW9kYWx7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwcHg7cmlnaHQ6MTBweDtsZWZ0OjEwcHg7d2lkdGg6YXV0bzttYXJnaW46MDt9IC5tb2RhbC5mYWRlLmlue3RvcDphdXRvO30gLm1vZGFsLWhlYWRlciAuY2xvc2V7cGFkZGluZzoxMHB4O21hcmdpbjotMTBweDt9IC5jYXJvdXNlbC1jYXB0aW9ue3Bvc2l0aW9uOnN0YXRpYzt9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXtib2R5e3BhZGRpbmctcmlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MjBweDt9IC5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItZml4ZWQtYm90dG9te21hcmdpbi1yaWdodDotMjBweDttYXJnaW4tbGVmdDotMjBweDt9IC5jb250YWluZXItZmx1aWR7cGFkZGluZzowO30gLmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bm9uZTt3aWR0aDphdXRvO2NsZWFyOm5vbmU7dGV4dC1hbGlnbjpsZWZ0O30gLmRsLWhvcml6b250YWwgZGR7bWFyZ2luLWxlZnQ6MDt9IC5jb250YWluZXJ7d2lkdGg6YXV0bzt9IC5yb3ctZmx1aWR7d2lkdGg6MTAwJTt9IC5yb3csLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6MDt9IFtjbGFzcyo9InNwYW4iXSwucm93LWZsdWlkIFtjbGFzcyo9InNwYW4iXXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bzttYXJnaW4tbGVmdDowO30gLmlucHV0LWxhcmdlLC5pbnB1dC14bGFyZ2UsLmlucHV0LXh4bGFyZ2UsaW5wdXRbY2xhc3MqPSJzcGFuIl0sc2VsZWN0W2NsYXNzKj0ic3BhbiJdLHRleHRhcmVhW2NsYXNzKj0ic3BhbiJdLC51bmVkaXRhYmxlLWlucHV0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI4cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7fSAuaW5wdXQtcHJlcGVuZCBpbnB1dCwuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kIGlucHV0W2NsYXNzKj0ic3BhbiJdLC5pbnB1dC1hcHBlbmQgaW5wdXRbY2xhc3MqPSJzcGFuIl17ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bzt9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5NzlweCl7LnJvd3ttYXJnaW4tbGVmdDotMjBweDsqem9vbToxO30gLnJvdzpiZWZvcmUsLnJvdzphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fSAucm93OmFmdGVye2NsZWFyOmJvdGg7fSBbY2xhc3MqPSJzcGFuIl17ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoyMHB4O30gLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLXRvcCAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtYm90dG9tIC5jb250YWluZXJ7d2lkdGg6NzI0cHg7fSAuc3BhbjEye3dpZHRoOjcyNHB4O30gLnNwYW4xMXt3aWR0aDo2NjJweDt9IC5zcGFuMTB7d2lkdGg6NjAwcHg7fSAuc3Bhbjl7d2lkdGg6NTM4cHg7fSAuc3Bhbjh7d2lkdGg6NDc2cHg7fSAuc3Bhbjd7d2lkdGg6NDE0cHg7fSAuc3BhbjZ7d2lkdGg6MzUycHg7fSAuc3BhbjV7d2lkdGg6MjkwcHg7fSAuc3BhbjR7d2lkdGg6MjI4cHg7fSAuc3BhbjN7d2lkdGg6MTY2cHg7fSAuc3BhbjJ7d2lkdGg6MTA0cHg7fSAuc3BhbjF7d2lkdGg6NDJweDt9IC5vZmZzZXQxMnttYXJnaW4tbGVmdDo3NjRweDt9IC5vZmZzZXQxMXttYXJnaW4tbGVmdDo3MDJweDt9IC5vZmZzZXQxMHttYXJnaW4tbGVmdDo2NDBweDt9IC5vZmZzZXQ5e21hcmdpbi1sZWZ0OjU3OHB4O30gLm9mZnNldDh7bWFyZ2luLWxlZnQ6NTE2cHg7fSAub2Zmc2V0N3ttYXJnaW4tbGVmdDo0NTRweDt9IC5vZmZzZXQ2e21hcmdpbi1sZWZ0OjM5MnB4O30gLm9mZnNldDV7bWFyZ2luLWxlZnQ6MzMwcHg7fSAub2Zmc2V0NHttYXJnaW4tbGVmdDoyNjhweDt9IC5vZmZzZXQze21hcmdpbi1sZWZ0OjIwNnB4O30gLm9mZnNldDJ7bWFyZ2luLWxlZnQ6MTQ0cHg7fSAub2Zmc2V0MXttYXJnaW4tbGVmdDo4MnB4O30gLnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjE7fSAucm93LWZsdWlkOmJlZm9yZSwucm93LWZsdWlkOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3ctZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDttYXJnaW4tbGVmdDoyLjc2MjQzMDkzOSU7Km1hcmdpbi1sZWZ0OjIuNzA5MjM5NDQ5NjM4Mjk4JTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJdOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7fSAucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6OTkuOTk5OTk5OTkzJTsqd2lkdGg6OTkuOTQ2ODA4NTAzNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMTF7d2lkdGg6OTEuNDM2NDY0MDgyJTsqd2lkdGg6OTEuMzgzMjcyNTkyNjM4MjklO30gLnJvdy1mbHVpZCAuc3BhbjEwe3dpZHRoOjgyLjg3MjkyODE3MTAwMDAxJTsqd2lkdGg6ODIuODE5NzM2NjgxNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zMDkzOTIyNiU7KndpZHRoOjc0LjI1NjIwMDc3MDYzODI5JTt9IC5yb3ctZmx1aWQgLnNwYW44e3dpZHRoOjY1Ljc0NTg1NjM0OTAwMDAxJTsqd2lkdGg6NjUuNjkyNjY0ODU5NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuN3t3aWR0aDo1Ny4xODIzMjA0MzgwMDAwMDUlOyp3aWR0aDo1Ny4xMjkxMjg5NDg2MzgzMDQlO30gLnJvdy1mbHVpZCAuc3BhbjZ7d2lkdGg6NDguNjE4Nzg0NTI3JTsqd2lkdGg6NDguNTY1NTkzMDM3NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuNXt3aWR0aDo0MC4wNTUyNDg2MTYlOyp3aWR0aDo0MC4wMDIwNTcxMjY2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW40e3dpZHRoOjMxLjQ5MTcxMjcwNSU7KndpZHRoOjMxLjQzODUyMTIxNTYzODMlO30gLnJvdy1mbHVpZCAuc3BhbjN7d2lkdGg6MjIuOTI4MTc2Nzk0JTsqd2lkdGg6MjIuODc0OTg1MzA0NjM4Mjk3JTt9IC5yb3ctZmx1aWQgLnNwYW4ye3dpZHRoOjE0LjM2NDY0MDg4MyU7KndpZHRoOjE0LjMxMTQ0OTM5MzYzODI5OCU7fSAucm93LWZsdWlkIC5zcGFuMXt3aWR0aDo1LjgwMTEwNDk3MiU7KndpZHRoOjUuNzQ3OTEzNDgyNjM4Mjk4JTt9IGlucHV0LHRleHRhcmVhLC51bmVkaXRhYmxlLWlucHV0e21hcmdpbi1sZWZ0OjA7fSBpbnB1dC5zcGFuMTIsdGV4dGFyZWEuc3BhbjEyLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMnt3aWR0aDo3MTRweDt9IGlucHV0LnNwYW4xMSx0ZXh0YXJlYS5zcGFuMTEsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjExe3dpZHRoOjY1MnB4O30gaW5wdXQuc3BhbjEwLHRleHRhcmVhLnNwYW4xMCwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMTB7d2lkdGg6NTkwcHg7fSBpbnB1dC5zcGFuOSx0ZXh0YXJlYS5zcGFuOSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuOXt3aWR0aDo1MjhweDt9IGlucHV0LnNwYW44LHRleHRhcmVhLnNwYW44LC51bmVkaXRhYmxlLWlucHV0LnNwYW44e3dpZHRoOjQ2NnB4O30gaW5wdXQuc3BhbjcsdGV4dGFyZWEuc3BhbjcsLnVuZWRpdGFibGUtaW5wdXQuc3Bhbjd7d2lkdGg6NDA0cHg7fSBpbnB1dC5zcGFuNix0ZXh0YXJlYS5zcGFuNiwudW5lZGl0YWJsZS1pbnB1dC5zcGFuNnt3aWR0aDozNDJweDt9IGlucHV0LnNwYW41LHRleHRhcmVhLnNwYW41LC51bmVkaXRhYmxlLWlucHV0LnNwYW41e3dpZHRoOjI4MHB4O30gaW5wdXQuc3BhbjQsdGV4dGFyZWEuc3BhbjQsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjR7d2lkdGg6MjE4cHg7fSBpbnB1dC5zcGFuMyx0ZXh0YXJlYS5zcGFuMywudW5lZGl0YWJsZS1pbnB1dC5zcGFuM3t3aWR0aDoxNTZweDt9IGlucHV0LnNwYW4yLHRleHRhcmVhLnNwYW4yLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ye3dpZHRoOjk0cHg7fSBpbnB1dC5zcGFuMSx0ZXh0YXJlYS5zcGFuMSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMXt3aWR0aDozMnB4O319QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsucm93e21hcmdpbi1sZWZ0Oi0zMHB4Oyp6b29tOjE7fSAucm93OmJlZm9yZSwucm93OmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IFtjbGFzcyo9InNwYW4iXXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjMwcHg7fSAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtdG9wIC5jb250YWluZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLmNvbnRhaW5lcnt3aWR0aDoxMTcwcHg7fSAuc3BhbjEye3dpZHRoOjExNzBweDt9IC5zcGFuMTF7d2lkdGg6MTA3MHB4O30gLnNwYW4xMHt3aWR0aDo5NzBweDt9IC5zcGFuOXt3aWR0aDo4NzBweDt9IC5zcGFuOHt3aWR0aDo3NzBweDt9IC5zcGFuN3t3aWR0aDo2NzBweDt9IC5zcGFuNnt3aWR0aDo1NzBweDt9IC5zcGFuNXt3aWR0aDo0NzBweDt9IC5zcGFuNHt3aWR0aDozNzBweDt9IC5zcGFuM3t3aWR0aDoyNzBweDt9IC5zcGFuMnt3aWR0aDoxNzBweDt9IC5zcGFuMXt3aWR0aDo3MHB4O30gLm9mZnNldDEye21hcmdpbi1sZWZ0OjEyMzBweDt9IC5vZmZzZXQxMXttYXJnaW4tbGVmdDoxMTMwcHg7fSAub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6MTAzMHB4O30gLm9mZnNldDl7bWFyZ2luLWxlZnQ6OTMwcHg7fSAub2Zmc2V0OHttYXJnaW4tbGVmdDo4MzBweDt9IC5vZmZzZXQ3e21hcmdpbi1sZWZ0OjczMHB4O30gLm9mZnNldDZ7bWFyZ2luLWxlZnQ6NjMwcHg7fSAub2Zmc2V0NXttYXJnaW4tbGVmdDo1MzBweDt9IC5vZmZzZXQ0e21hcmdpbi1sZWZ0OjQzMHB4O30gLm9mZnNldDN7bWFyZ2luLWxlZnQ6MzMwcHg7fSAub2Zmc2V0MnttYXJnaW4tbGVmdDoyMzBweDt9IC5vZmZzZXQxe21hcmdpbi1sZWZ0OjEzMHB4O30gLnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjE7fSAucm93LWZsdWlkOmJlZm9yZSwucm93LWZsdWlkOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3ctZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDttYXJnaW4tbGVmdDoyLjU2NDEwMjU2NCU7Km1hcmdpbi1sZWZ0OjIuNTEwOTExMDc0NjM4Mjk4JTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJdOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7fSAucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6MTAwJTsqd2lkdGg6OTkuOTQ2ODA4NTEwNjM4MjklO30gLnJvdy1mbHVpZCAuc3BhbjExe3dpZHRoOjkxLjQ1Mjk5MTQ1MzAwMDAxJTsqd2lkdGg6OTEuMzk5Nzk5OTYzNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMTB7d2lkdGg6ODIuOTA1OTgyOTA2JTsqd2lkdGg6ODIuODUyNzkxNDE2NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zNTg5NzQzNTklOyp3aWR0aDo3NC4zMDU3ODI4Njk2MzgyOSU7fSAucm93LWZsdWlkIC5zcGFuOHt3aWR0aDo2NS44MTE5NjU4MTIwMDAwMSU7KndpZHRoOjY1Ljc1ODc3NDMyMjYzODMlO30gLnJvdy1mbHVpZCAuc3Bhbjd7d2lkdGg6NTcuMjY0OTU3MjY1JTsqd2lkdGg6NTcuMjExNzY1Nzc1NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC43MTc5NDg3MTglOyp3aWR0aDo0OC42NjQ3NTcyMjg2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW41e3dpZHRoOjQwLjE3MDk0MDE3MTAwMDAwNSU7KndpZHRoOjQwLjExNzc0ODY4MTYzODMwNCU7fSAucm93LWZsdWlkIC5zcGFuNHt3aWR0aDozMS42MjM5MzE2MjQlOyp3aWR0aDozMS41NzA3NDAxMzQ2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW4ze3dpZHRoOjIzLjA3NjkyMzA3NyU7KndpZHRoOjIzLjAyMzczMTU4NzYzODMlO30gLnJvdy1mbHVpZCAuc3BhbjJ7d2lkdGg6MTQuNTI5OTE0NTMwMDAwMDAxJTsqd2lkdGg6MTQuNDc2NzIzMDQwNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMXt3aWR0aDo1Ljk4MjkwNTk4MyU7KndpZHRoOjUuOTI5NzE0NDkzNjM4Mjk4JTt9IGlucHV0LHRleHRhcmVhLC51bmVkaXRhYmxlLWlucHV0e21hcmdpbi1sZWZ0OjA7fSBpbnB1dC5zcGFuMTIsdGV4dGFyZWEuc3BhbjEyLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMnt3aWR0aDoxMTYwcHg7fSBpbnB1dC5zcGFuMTEsdGV4dGFyZWEuc3BhbjExLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMXt3aWR0aDoxMDYwcHg7fSBpbnB1dC5zcGFuMTAsdGV4dGFyZWEuc3BhbjEwLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMHt3aWR0aDo5NjBweDt9IGlucHV0LnNwYW45LHRleHRhcmVhLnNwYW45LC51bmVkaXRhYmxlLWlucHV0LnNwYW45e3dpZHRoOjg2MHB4O30gaW5wdXQuc3BhbjgsdGV4dGFyZWEuc3BhbjgsLnVuZWRpdGFibGUtaW5wdXQuc3Bhbjh7d2lkdGg6NzYwcHg7fSBpbnB1dC5zcGFuNyx0ZXh0YXJlYS5zcGFuNywudW5lZGl0YWJsZS1pbnB1dC5zcGFuN3t3aWR0aDo2NjBweDt9IGlucHV0LnNwYW42LHRleHRhcmVhLnNwYW42LC51bmVkaXRhYmxlLWlucHV0LnNwYW42e3dpZHRoOjU2MHB4O30gaW5wdXQuc3BhbjUsdGV4dGFyZWEuc3BhbjUsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjV7d2lkdGg6NDYwcHg7fSBpbnB1dC5zcGFuNCx0ZXh0YXJlYS5zcGFuNCwudW5lZGl0YWJsZS1pbnB1dC5zcGFuNHt3aWR0aDozNjBweDt9IGlucHV0LnNwYW4zLHRleHRhcmVhLnNwYW4zLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ze3dpZHRoOjI2MHB4O30gaW5wdXQuc3BhbjIsdGV4dGFyZWEuc3BhbjIsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjJ7d2lkdGg6MTYwcHg7fSBpbnB1dC5zcGFuMSx0ZXh0YXJlYS5zcGFuMSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMXt3aWR0aDo2MHB4O30gLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6LTMwcHg7fSAudGh1bWJuYWlscz5saXttYXJnaW4tbGVmdDozMHB4O30gLnJvdy1mbHVpZCAudGh1bWJuYWlsc3ttYXJnaW4tbGVmdDowO319QG1lZGlhIChtYXgtd2lkdGg6OTc5cHgpe2JvZHl7cGFkZGluZy10b3A6MDt9IC5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItZml4ZWQtYm90dG9te3Bvc2l0aW9uOnN0YXRpYzt9IC5uYXZiYXItZml4ZWQtdG9we21hcmdpbi1ib3R0b206MThweDt9IC5uYXZiYXItZml4ZWQtYm90dG9te21hcmdpbi10b3A6MThweDt9IC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1pbm5lcntwYWRkaW5nOjVweDt9IC5uYXZiYXIgLmNvbnRhaW5lcnt3aWR0aDphdXRvO3BhZGRpbmc6MDt9IC5uYXZiYXIgLmJyYW5ke3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6MTBweDttYXJnaW46MCAwIDAgLTVweDt9IC5uYXYtY29sbGFwc2V7Y2xlYXI6Ym90aDt9IC5uYXYtY29sbGFwc2UgLm5hdntmbG9hdDpub25lO21hcmdpbjowIDAgOXB4O30gLm5hdi1jb2xsYXBzZSAubmF2Pmxpe2Zsb2F0Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXY+bGk+YXttYXJnaW4tYm90dG9tOjJweDt9IC5uYXYtY29sbGFwc2UgLm5hdj4uZGl2aWRlci12ZXJ0aWNhbHtkaXNwbGF5Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXYgLm5hdi1oZWFkZXJ7Y29sb3I6Izk5OTk5OTt0ZXh0LXNoYWRvdzpub25lO30gLm5hdi1jb2xsYXBzZSAubmF2PmxpPmEsLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBhe3BhZGRpbmc6NnB4IDE1cHg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojOTk5OTk5Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDt9IC5uYXYtY29sbGFwc2UgLmJ0bntwYWRkaW5nOjRweCAxMHB4IDRweDtmb250LXdlaWdodDpub3JtYWw7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30gLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBsaStsaSBhe21hcmdpbi1ib3R0b206MnB4O30gLm5hdi1jb2xsYXBzZSAubmF2PmxpPmE6aG92ZXIsLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBhOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzIyMjIyMjt9IC5uYXYtY29sbGFwc2UuaW4gLmJ0bi1ncm91cHtwYWRkaW5nOjA7bWFyZ2luLXRvcDo1cHg7fSAubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOnN0YXRpYzt0b3A6YXV0bztsZWZ0OmF1dG87ZGlzcGxheTpibG9jaztmbG9hdDpub25lO21heC13aWR0aDpub25lO3BhZGRpbmc6MDttYXJnaW46MCAxNXB4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm94LXNoYWRvdzpub25lOy1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTt9IC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnU6YmVmb3JlLC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnU6YWZ0ZXJ7ZGlzcGxheTpub25lO30gLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSAuZGl2aWRlcntkaXNwbGF5Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXZiYXItZm9ybSwubmF2LWNvbGxhcHNlIC5uYXZiYXItc2VhcmNoe2Zsb2F0Om5vbmU7cGFkZGluZzo5cHggMTVweDttYXJnaW46OXB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgIzIyMjIyMjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjIyMjIyOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTt9IC5uYXZiYXIgLm5hdi1jb2xsYXBzZSAubmF2LnB1bGwtcmlnaHR7ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowO30gLm5hdi1jb2xsYXBzZSwubmF2LWNvbGxhcHNlLmNvbGxhcHNle2hlaWdodDowO292ZXJmbG93OmhpZGRlbjt9IC5uYXZiYXIgLmJ0bi1uYXZiYXJ7ZGlzcGxheTpibG9jazt9IC5uYXZiYXItc3RhdGljIC5uYXZiYXItaW5uZXJ7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctbGVmdDoxMHB4O319QG1lZGlhIChtaW4td2lkdGg6OTgwcHgpey5uYXYtY29sbGFwc2UuY29sbGFwc2V7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlICFpbXBvcnRhbnQ7fX0NCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2s7fQ0KYXVkaW8sY2FudmFzLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTsqem9vbToxO30NCmF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7fQ0KaHRtbHtmb250LXNpemU6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlO30NCmE6Zm9jdXN7b3V0bGluZTp0aGluIGRvdHRlZCAjMzMzO291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHg7fQ0KYTpob3ZlcixhOmFjdGl2ZXtvdXRsaW5lOjA7fQ0Kc3ViLHN1cHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7fQ0Kc3Vwe3RvcDotMC41ZW07fQ0Kc3Vie2JvdHRvbTotMC4yNWVtO30NCmltZ3ttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOjA7LW1zLWludGVycG9sYXRpb24tbW9kZTpiaWN1YmljO30NCiNtYXBfY2FudmFzIGltZ3ttYXgtd2lkdGg6bm9uZTt9DQpidXR0b24saW5wdXQsc2VsZWN0LHRleHRhcmVhe21hcmdpbjowO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt9DQpidXR0b24saW5wdXR7Km92ZXJmbG93OnZpc2libGU7bGluZS1oZWlnaHQ6bm9ybWFsO30NCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjA7fQ0KYnV0dG9uLGlucHV0W3R5cGU9ImJ1dHRvbiJdLGlucHV0W3R5cGU9InJlc2V0Il0saW5wdXRbdHlwZT0ic3VibWl0Il17Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjt9DQppbnB1dFt0eXBlPSJzZWFyY2giXXstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDt9DQppbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbixpbnB1dFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTt9DQp0ZXh0YXJlYXtvdmVyZmxvdzphdXRvO3ZlcnRpY2FsLWFsaWduOnRvcDt9DQouY2xlYXJmaXh7Knpvb206MTt9DQouY2xlYXJmaXg6YmVmb3JlLC5jbGVhcmZpeDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQ0KLmNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGg7fQ0KLmhpZGUtdGV4dHtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDt9DQouaW5wdXQtYmxvY2stbGV2ZWx7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9DQpib2R5e21hcmdpbjowO2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojMzMzMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjt9DQphe2NvbG9yOiMwMDg4Y2M7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fQ0KYTpob3Zlcntjb2xvcjojMDA1NTgwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KLnJvd3ttYXJnaW4tbGVmdDotMjBweDsqem9vbToxO30NCi5yb3c6YmVmb3JlLC5yb3c6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQpbY2xhc3MqPSJzcGFuIl17ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoyMHB4O30NCi5jb250YWluZXIsLm5hdmJhci1maXhlZC10b3AgLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVye3dpZHRoOjk0MHB4O30NCi5zcGFuMTJ7d2lkdGg6OTQwcHg7fQ0KLnNwYW4xMXt3aWR0aDo4NjBweDt9DQouc3BhbjEwe3dpZHRoOjc4MHB4O30NCi5zcGFuOXt3aWR0aDo3MDBweDt9DQouc3Bhbjh7d2lkdGg6NjIwcHg7fQ0KLnNwYW43e3dpZHRoOjU0MHB4O30NCi5zcGFuNnt3aWR0aDo0NjBweDt9DQouc3BhbjV7d2lkdGg6MzgwcHg7fQ0KLnNwYW40e3dpZHRoOjMwMHB4O30NCi5zcGFuM3t3aWR0aDoyMjBweDt9DQouc3BhbjJ7d2lkdGg6MTQwcHg7fQ0KLnNwYW4xe3dpZHRoOjYwcHg7fQ0KLm9mZnNldDEye21hcmdpbi1sZWZ0Ojk4MHB4O30NCi5vZmZzZXQxMXttYXJnaW4tbGVmdDo5MDBweDt9DQoub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6ODIwcHg7fQ0KLm9mZnNldDl7bWFyZ2luLWxlZnQ6NzQwcHg7fQ0KLm9mZnNldDh7bWFyZ2luLWxlZnQ6NjYwcHg7fQ0KLm9mZnNldDd7bWFyZ2luLWxlZnQ6NTgwcHg7fQ0KLm9mZnNldDZ7bWFyZ2luLWxlZnQ6NTAwcHg7fQ0KLm9mZnNldDV7bWFyZ2luLWxlZnQ6NDIwcHg7fQ0KLm9mZnNldDR7bWFyZ2luLWxlZnQ6MzQwcHg7fQ0KLm9mZnNldDN7bWFyZ2luLWxlZnQ6MjYwcHg7fQ0KLm9mZnNldDJ7bWFyZ2luLWxlZnQ6MTgwcHg7fQ0KLm9mZnNldDF7bWFyZ2luLWxlZnQ6MTAwcHg7fQ0KLnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjE7fQ0KLnJvdy1mbHVpZDpiZWZvcmUsLnJvdy1mbHVpZDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQ0KLnJvdy1mbHVpZDphZnRlcntjbGVhcjpib3RoO30NCi5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDttYXJnaW4tbGVmdDoyLjEyNzY1OTU3NCU7Km1hcmdpbi1sZWZ0OjIuMDc0NDY4MDg0NjM4Mjk3NyU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7fQ0KLnJvdy1mbHVpZCBbY2xhc3MqPSJzcGFuIl06Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MDt9DQoucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6OTkuOTk5OTk5OTg5OTk5OTklOyp3aWR0aDo5OS45NDY4MDg1MDA2MzgyOCU7fQ0KLnJvdy1mbHVpZCAuc3BhbjExe3dpZHRoOjkxLjQ4OTM2MTY5MyU7KndpZHRoOjkxLjQzNjE3MDIwMzYzODMlO30NCi5yb3ctZmx1aWQgLnNwYW4xMHt3aWR0aDo4Mi45Nzg3MjMzOTU5OTk5OSU7KndpZHRoOjgyLjkyNTUzMTkwNjYzODI4JTt9DQoucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC40NjgwODUwOTklOyp3aWR0aDo3NC40MTQ4OTM2MDk2MzgzJTt9DQoucm93LWZsdWlkIC5zcGFuOHt3aWR0aDo2NS45NTc0NDY4MDE5OTk5OSU7KndpZHRoOjY1LjkwNDI1NTMxMjYzODI4JTt9DQoucm93LWZsdWlkIC5zcGFuN3t3aWR0aDo1Ny40NDY4MDg1MDUlOyp3aWR0aDo1Ny4zOTM2MTcwMTU2MzgzJTt9DQoucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC45MzYxNzAyMDc5OTk5OSU7KndpZHRoOjQ4Ljg4Mjk3ODcxODYzODI5JTt9DQoucm93LWZsdWlkIC5zcGFuNXt3aWR0aDo0MC40MjU1MzE5MTElOyp3aWR0aDo0MC4zNzIzNDA0MjE2MzgzJTt9DQoucm93LWZsdWlkIC5zcGFuNHt3aWR0aDozMS45MTQ4OTM2MTQlOyp3aWR0aDozMS44NjE3MDIxMjQ2MzgzJTt9DQoucm93LWZsdWlkIC5zcGFuM3t3aWR0aDoyMy40MDQyNTUzMTclOyp3aWR0aDoyMy4zNTEwNjM4Mjc2MzgzJTt9DQoucm93LWZsdWlkIC5zcGFuMnt3aWR0aDoxNC44OTM2MTcwMiU7KndpZHRoOjE0Ljg0MDQyNTUzMDYzODMlO30NCi5yb3ctZmx1aWQgLnNwYW4xe3dpZHRoOjYuMzgyOTc4NzIzJTsqd2lkdGg6Ni4zMjk3ODcyMzM2MzgyOTglO30NCi5jb250YWluZXJ7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzsqem9vbToxO30NCi5jb250YWluZXI6YmVmb3JlLC5jb250YWluZXI6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5jb250YWluZXI6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQouY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MjBweDsqem9vbToxO30NCi5jb250YWluZXItZmx1aWQ6YmVmb3JlLC5jb250YWluZXItZmx1aWQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5jb250YWluZXItZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQpwe21hcmdpbjowIDAgOXB4O30NCnAgc21hbGx7Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTk5OTt9DQoubGVhZHttYXJnaW4tYm90dG9tOjE4cHg7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6MjAwO2xpbmUtaGVpZ2h0OjI3cHg7fQ0KaDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDpib2xkO2NvbG9yOmluaGVyaXQ7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVsZWdpYmlsaXR5O30NCmgxIHNtYWxsLGgyIHNtYWxsLGgzIHNtYWxsLGg0IHNtYWxsLGg1IHNtYWxsLGg2IHNtYWxse2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojOTk5OTk5O30NCmgxe2ZvbnQtc2l6ZTozMHB4O2xpbmUtaGVpZ2h0OjM2cHg7fQ0KaDEgc21hbGx7Zm9udC1zaXplOjE4cHg7fQ0KaDJ7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MzZweDt9DQpoMiBzbWFsbHtmb250LXNpemU6MThweDt9DQpoM3tmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyN3B4O30NCmgzIHNtYWxse2ZvbnQtc2l6ZToxNHB4O30NCmg0LGg1LGg2e2xpbmUtaGVpZ2h0OjE4cHg7fQ0KaDR7Zm9udC1zaXplOjE0cHg7fQ0KaDQgc21hbGx7Zm9udC1zaXplOjEycHg7fQ0KaDV7Zm9udC1zaXplOjEycHg7fQ0KaDZ7Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTk5OTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fQ0KLnBhZ2UtaGVhZGVye3BhZGRpbmctYm90dG9tOjE3cHg7bWFyZ2luOjE4cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlZWVlO30NCi5wYWdlLWhlYWRlciBoMXtsaW5lLWhlaWdodDoxO30NCnVsLG9se3BhZGRpbmc6MDttYXJnaW46MCAwIDlweCAyNXB4O30NCnVsIHVsLHVsIG9sLG9sIG9sLG9sIHVse21hcmdpbi1ib3R0b206MDt9DQp1bHtsaXN0LXN0eWxlOmRpc2M7fQ0Kb2x7bGlzdC1zdHlsZTpkZWNpbWFsO30NCmxpe2xpbmUtaGVpZ2h0OjE4cHg7fQ0KdWwudW5zdHlsZWQsb2wudW5zdHlsZWR7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmU7fQ0KZGx7bWFyZ2luLWJvdHRvbToxOHB4O30NCmR0LGRke2xpbmUtaGVpZ2h0OjE4cHg7fQ0KZHR7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxN3B4O30NCmRke21hcmdpbi1sZWZ0OjlweDt9DQouZGwtaG9yaXpvbnRhbCBkdHtmbG9hdDpsZWZ0O3dpZHRoOjEyMHB4O292ZXJmbG93OmhpZGRlbjtjbGVhcjpsZWZ0O3RleHQtYWxpZ246cmlnaHQ7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7fQ0KLmRsLWhvcml6b250YWwgZGR7bWFyZ2luLWxlZnQ6MTMwcHg7fQ0KaHJ7bWFyZ2luOjE4cHggMDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWVlZWVlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmZmZmY7fQ0Kc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGQ7fQ0KZW17Zm9udC1zdHlsZTppdGFsaWM7fQ0KLm11dGVke2NvbG9yOiM5OTk5OTk7fQ0KYWJiclt0aXRsZV17Y3Vyc29yOmhlbHA7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICM5OTk5OTk7fQ0KYWJici5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO30NCmJsb2NrcXVvdGV7cGFkZGluZzowIDAgMCAxNXB4O21hcmdpbjowIDAgMThweDtib3JkZXItbGVmdDo1cHggc29saWQgI2VlZWVlZTt9DQpibG9ja3F1b3RlIHB7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjMwMDtsaW5lLWhlaWdodDoyMi41cHg7fQ0KYmxvY2txdW90ZSBzbWFsbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjE4cHg7Y29sb3I6Izk5OTk5OTt9DQpibG9ja3F1b3RlIHNtYWxsOmJlZm9yZXtjb250ZW50OidcMjAxNCBcMDBBMCc7fQ0KYmxvY2txdW90ZS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNlZWVlZWU7Ym9yZGVyLWxlZnQ6MDt9DQpibG9ja3F1b3RlLnB1bGwtcmlnaHQgcCxibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGx7dGV4dC1hbGlnbjpyaWdodDt9DQpxOmJlZm9yZSxxOmFmdGVyLGJsb2NrcXVvdGU6YmVmb3JlLGJsb2NrcXVvdGU6YWZ0ZXJ7Y29udGVudDoiIjt9DQphZGRyZXNze2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToxOHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2xpbmUtaGVpZ2h0OjE4cHg7fQ0Kc21hbGx7Zm9udC1zaXplOjEwMCU7fQ0KY2l0ZXtmb250LXN0eWxlOm5vcm1hbDt9DQpjb2RlLHByZXtwYWRkaW5nOjAgM3B4IDJweDtmb250LWZhbWlseTpNZW5sbyxNb25hY28sQ29uc29sYXMsIkNvdXJpZXIgTmV3Iixtb25vc3BhY2U7Zm9udC1zaXplOjEycHg7Y29sb3I6IzMzMzMzMzstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7fQ0KY29kZXtwYWRkaW5nOjJweCA0cHg7Y29sb3I6I2QxNDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjk7Ym9yZGVyOjFweCBzb2xpZCAjZTFlMWU4O30NCnByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OC41cHg7bWFyZ2luOjAgMCA5cHg7Zm9udC1zaXplOjEyLjAyNXB4O2xpbmUtaGVpZ2h0OjE4cHg7d29yZC1icmVhazpicmVhay1hbGw7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlO3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9DQpwcmUucHJldHR5cHJpbnR7bWFyZ2luLWJvdHRvbToxOHB4O30NCnByZSBjb2Rle3BhZGRpbmc6MDtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7fQ0KLnByZS1zY3JvbGxhYmxle21heC1oZWlnaHQ6MzQwcHg7b3ZlcmZsb3cteTpzY3JvbGw7fQ0KZm9ybXttYXJnaW46MCAwIDE4cHg7fQ0KZmllbGRzZXR7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO30NCmxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206MjdweDtmb250LXNpemU6MTkuNXB4O2xpbmUtaGVpZ2h0OjM2cHg7Y29sb3I6IzMzMzMzMztib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1O30NCmxlZ2VuZCBzbWFsbHtmb250LXNpemU6MTMuNXB4O2NvbG9yOiM5OTk5OTk7fQ0KbGFiZWwsaW5wdXQsYnV0dG9uLHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDpub3JtYWw7bGluZS1oZWlnaHQ6MThweDt9DQppbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7fQ0KbGFiZWx7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjVweDt9DQpzZWxlY3QsdGV4dGFyZWEsaW5wdXRbdHlwZT0idGV4dCJdLGlucHV0W3R5cGU9InBhc3N3b3JkIl0saW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSxpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLGlucHV0W3R5cGU9ImRhdGUiXSxpbnB1dFt0eXBlPSJtb250aCJdLGlucHV0W3R5cGU9InRpbWUiXSxpbnB1dFt0eXBlPSJ3ZWVrIl0saW5wdXRbdHlwZT0ibnVtYmVyIl0saW5wdXRbdHlwZT0iZW1haWwiXSxpbnB1dFt0eXBlPSJ1cmwiXSxpbnB1dFt0eXBlPSJzZWFyY2giXSxpbnB1dFt0eXBlPSJ0ZWwiXSxpbnB1dFt0eXBlPSJjb2xvciJdLC51bmVkaXRhYmxlLWlucHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxOHB4O3BhZGRpbmc6NHB4O21hcmdpbi1ib3R0b206OXB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE4cHg7Y29sb3I6IzU1NTU1NTt9DQppbnB1dCx0ZXh0YXJlYXt3aWR0aDoyMTBweDt9DQp0ZXh0YXJlYXtoZWlnaHQ6YXV0bzt9DQp0ZXh0YXJlYSxpbnB1dFt0eXBlPSJ0ZXh0Il0saW5wdXRbdHlwZT0icGFzc3dvcmQiXSxpbnB1dFt0eXBlPSJkYXRldGltZSJdLGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0saW5wdXRbdHlwZT0iZGF0ZSJdLGlucHV0W3R5cGU9Im1vbnRoIl0saW5wdXRbdHlwZT0idGltZSJdLGlucHV0W3R5cGU9IndlZWsiXSxpbnB1dFt0eXBlPSJudW1iZXIiXSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3R5cGU9InVybCJdLGlucHV0W3R5cGU9InNlYXJjaCJdLGlucHV0W3R5cGU9InRlbCJdLGlucHV0W3R5cGU9ImNvbG9yIl0sLnVuZWRpdGFibGUtaW5wdXR7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO2JvcmRlcjoxcHggc29saWQgI2NjY2NjYzstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXIgbGluZWFyIDAuMnMsYm94LXNoYWRvdyBsaW5lYXIgMC4yczstbW96LXRyYW5zaXRpb246Ym9yZGVyIGxpbmVhciAwLjJzLGJveC1zaGFkb3cgbGluZWFyIDAuMnM7LW1zLXRyYW5zaXRpb246Ym9yZGVyIGxpbmVhciAwLjJzLGJveC1zaGFkb3cgbGluZWFyIDAuMnM7LW8tdHJhbnNpdGlvbjpib3JkZXIgbGluZWFyIDAuMnMsYm94LXNoYWRvdyBsaW5lYXIgMC4yczt0cmFuc2l0aW9uOmJvcmRlciBsaW5lYXIgMC4ycyxib3gtc2hhZG93IGxpbmVhciAwLjJzO30NCnRleHRhcmVhOmZvY3VzLGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyxpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmZvY3VzLGlucHV0W3R5cGU9ImRhdGV0aW1lIl06Zm9jdXMsaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXTpmb2N1cyxpbnB1dFt0eXBlPSJkYXRlIl06Zm9jdXMsaW5wdXRbdHlwZT0ibW9udGgiXTpmb2N1cyxpbnB1dFt0eXBlPSJ0aW1lIl06Zm9jdXMsaW5wdXRbdHlwZT0id2VlayJdOmZvY3VzLGlucHV0W3R5cGU9Im51bWJlciJdOmZvY3VzLGlucHV0W3R5cGU9ImVtYWlsIl06Zm9jdXMsaW5wdXRbdHlwZT0idXJsIl06Zm9jdXMsaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9jdXMsaW5wdXRbdHlwZT0idGVsIl06Zm9jdXMsaW5wdXRbdHlwZT0iY29sb3IiXTpmb2N1cywudW5lZGl0YWJsZS1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6cmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7b3V0bGluZTowO291dGxpbmU6dGhpbiBkb3R0ZWQgXDk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpO30NCmlucHV0W3R5cGU9InJhZGlvIl0saW5wdXRbdHlwZT0iY2hlY2tib3giXXttYXJnaW46M3B4IDA7Km1hcmdpbi10b3A6MDtsaW5lLWhlaWdodDpub3JtYWw7Y3Vyc29yOnBvaW50ZXI7fQ0KaW5wdXRbdHlwZT0ic3VibWl0Il0saW5wdXRbdHlwZT0icmVzZXQiXSxpbnB1dFt0eXBlPSJidXR0b24iXSxpbnB1dFt0eXBlPSJyYWRpbyJdLGlucHV0W3R5cGU9ImNoZWNrYm94Il17d2lkdGg6YXV0bzt9DQoudW5lZGl0YWJsZS10ZXh0YXJlYXt3aWR0aDphdXRvO2hlaWdodDphdXRvO30NCnNlbGVjdCxpbnB1dFt0eXBlPSJmaWxlIl17aGVpZ2h0OjI4cHg7Km1hcmdpbi10b3A6NHB4O2xpbmUtaGVpZ2h0OjI4cHg7fQ0Kc2VsZWN0e3dpZHRoOjIyMHB4O2JvcmRlcjoxcHggc29saWQgI2JiYjt9DQpzZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0bzt9DQpzZWxlY3Q6Zm9jdXMsaW5wdXRbdHlwZT0iZmlsZSJdOmZvY3VzLGlucHV0W3R5cGU9InJhZGlvIl06Zm9jdXMsaW5wdXRbdHlwZT0iY2hlY2tib3giXTpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkICMzMzM7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweDt9DQoucmFkaW8sLmNoZWNrYm94e21pbi1oZWlnaHQ6MThweDtwYWRkaW5nLWxlZnQ6MThweDt9DQoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0Oi0xOHB4O30NCi5jb250cm9scz4ucmFkaW86Zmlyc3QtY2hpbGQsLmNvbnRyb2xzPi5jaGVja2JveDpmaXJzdC1jaGlsZHtwYWRkaW5nLXRvcDo1cHg7fQ0KLnJhZGlvLmlubGluZSwuY2hlY2tib3guaW5saW5le2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctdG9wOjVweDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlO30NCi5yYWRpby5pbmxpbmUrLnJhZGlvLmlubGluZSwuY2hlY2tib3guaW5saW5lKy5jaGVja2JveC5pbmxpbmV7bWFyZ2luLWxlZnQ6MTBweDt9DQouaW5wdXQtbWluaXt3aWR0aDo2MHB4O30NCi5pbnB1dC1zbWFsbHt3aWR0aDo5MHB4O30NCi5pbnB1dC1tZWRpdW17d2lkdGg6MTUwcHg7fQ0KLmlucHV0LWxhcmdle3dpZHRoOjIxMHB4O30NCi5pbnB1dC14bGFyZ2V7d2lkdGg6MjcwcHg7fQ0KLmlucHV0LXh4bGFyZ2V7d2lkdGg6NTMwcHg7fQ0KaW5wdXRbY2xhc3MqPSJzcGFuIl0sc2VsZWN0W2NsYXNzKj0ic3BhbiJdLHRleHRhcmVhW2NsYXNzKj0ic3BhbiJdLC51bmVkaXRhYmxlLWlucHV0W2NsYXNzKj0ic3BhbiJdLC5yb3ctZmx1aWQgaW5wdXRbY2xhc3MqPSJzcGFuIl0sLnJvdy1mbHVpZCBzZWxlY3RbY2xhc3MqPSJzcGFuIl0sLnJvdy1mbHVpZCB0ZXh0YXJlYVtjbGFzcyo9InNwYW4iXSwucm93LWZsdWlkIC51bmVkaXRhYmxlLWlucHV0W2NsYXNzKj0ic3BhbiJde2Zsb2F0Om5vbmU7bWFyZ2luLWxlZnQ6MDt9DQouaW5wdXQtYXBwZW5kIGlucHV0W2NsYXNzKj0ic3BhbiJdLC5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPSJzcGFuIl0sLmlucHV0LXByZXBlbmQgaW5wdXRbY2xhc3MqPSJzcGFuIl0sLmlucHV0LXByZXBlbmQgLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPSJzcGFuIl0sLnJvdy1mbHVpZCAuaW5wdXQtcHJlcGVuZCBbY2xhc3MqPSJzcGFuIl0sLnJvdy1mbHVpZCAuaW5wdXQtYXBwZW5kIFtjbGFzcyo9InNwYW4iXXtkaXNwbGF5OmlubGluZS1ibG9jazt9DQppbnB1dCx0ZXh0YXJlYSwudW5lZGl0YWJsZS1pbnB1dHttYXJnaW4tbGVmdDowO30NCmlucHV0LnNwYW4xMix0ZXh0YXJlYS5zcGFuMTIsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjEye3dpZHRoOjkzMHB4O30NCmlucHV0LnNwYW4xMSx0ZXh0YXJlYS5zcGFuMTEsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjExe3dpZHRoOjg1MHB4O30NCmlucHV0LnNwYW4xMCx0ZXh0YXJlYS5zcGFuMTAsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjEwe3dpZHRoOjc3MHB4O30NCmlucHV0LnNwYW45LHRleHRhcmVhLnNwYW45LC51bmVkaXRhYmxlLWlucHV0LnNwYW45e3dpZHRoOjY5MHB4O30NCmlucHV0LnNwYW44LHRleHRhcmVhLnNwYW44LC51bmVkaXRhYmxlLWlucHV0LnNwYW44e3dpZHRoOjYxMHB4O30NCmlucHV0LnNwYW43LHRleHRhcmVhLnNwYW43LC51bmVkaXRhYmxlLWlucHV0LnNwYW43e3dpZHRoOjUzMHB4O30NCmlucHV0LnNwYW42LHRleHRhcmVhLnNwYW42LC51bmVkaXRhYmxlLWlucHV0LnNwYW42e3dpZHRoOjQ1MHB4O30NCmlucHV0LnNwYW41LHRleHRhcmVhLnNwYW41LC51bmVkaXRhYmxlLWlucHV0LnNwYW41e3dpZHRoOjM3MHB4O30NCmlucHV0LnNwYW40LHRleHRhcmVhLnNwYW40LC51bmVkaXRhYmxlLWlucHV0LnNwYW40e3dpZHRoOjI5MHB4O30NCmlucHV0LnNwYW4zLHRleHRhcmVhLnNwYW4zLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ze3dpZHRoOjIxMHB4O30NCmlucHV0LnNwYW4yLHRleHRhcmVhLnNwYW4yLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ye3dpZHRoOjEzMHB4O30NCmlucHV0LnNwYW4xLHRleHRhcmVhLnNwYW4xLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xe3dpZHRoOjUwcHg7fQ0KaW5wdXRbZGlzYWJsZWRdLHNlbGVjdFtkaXNhYmxlZF0sdGV4dGFyZWFbZGlzYWJsZWRdLGlucHV0W3JlYWRvbmx5XSxzZWxlY3RbcmVhZG9ubHldLHRleHRhcmVhW3JlYWRvbmx5XXtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZWVlZWVlO2JvcmRlci1jb2xvcjojZGRkO30NCmlucHV0W3R5cGU9InJhZGlvIl1bZGlzYWJsZWRdLGlucHV0W3R5cGU9ImNoZWNrYm94Il1bZGlzYWJsZWRdLGlucHV0W3R5cGU9InJhZGlvIl1bcmVhZG9ubHldLGlucHV0W3R5cGU9ImNoZWNrYm94Il1bcmVhZG9ubHlde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7fQ0KLmNvbnRyb2wtZ3JvdXAud2FybmluZz5sYWJlbCwuY29udHJvbC1ncm91cC53YXJuaW5nIC5oZWxwLWJsb2NrLC5jb250cm9sLWdyb3VwLndhcm5pbmcgLmhlbHAtaW5saW5le2NvbG9yOiNjMDk4NTM7fQ0KLmNvbnRyb2wtZ3JvdXAud2FybmluZyAuY2hlY2tib3gsLmNvbnRyb2wtZ3JvdXAud2FybmluZyAucmFkaW8sLmNvbnRyb2wtZ3JvdXAud2FybmluZyBpbnB1dCwuY29udHJvbC1ncm91cC53YXJuaW5nIHNlbGVjdCwuY29udHJvbC1ncm91cC53YXJuaW5nIHRleHRhcmVhe2NvbG9yOiNjMDk4NTM7Ym9yZGVyLWNvbG9yOiNjMDk4NTM7fQ0KLmNvbnRyb2wtZ3JvdXAud2FybmluZyAuY2hlY2tib3g6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyAucmFkaW86Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyBpbnB1dDpmb2N1cywuY29udHJvbC1ncm91cC53YXJuaW5nIHNlbGVjdDpmb2N1cywuY29udHJvbC1ncm91cC53YXJuaW5nIHRleHRhcmVhOmZvY3Vze2JvcmRlci1jb2xvcjojYTQ3ZTNjOy13ZWJraXQtYm94LXNoYWRvdzowIDAgNnB4ICNkYmM1OWU7LW1vei1ib3gtc2hhZG93OjAgMCA2cHggI2RiYzU5ZTtib3gtc2hhZG93OjAgMCA2cHggI2RiYzU5ZTt9DQouY29udHJvbC1ncm91cC53YXJuaW5nIC5pbnB1dC1wcmVwZW5kIC5hZGQtb24sLmNvbnRyb2wtZ3JvdXAud2FybmluZyAuaW5wdXQtYXBwZW5kIC5hZGQtb257Y29sb3I6I2MwOTg1MztiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNjMDk4NTM7fQ0KLmNvbnRyb2wtZ3JvdXAuZXJyb3I+bGFiZWwsLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLmhlbHAtYmxvY2ssLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLmhlbHAtaW5saW5le2NvbG9yOiNiOTRhNDg7fQ0KLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLmNoZWNrYm94LC5jb250cm9sLWdyb3VwLmVycm9yIC5yYWRpbywuY29udHJvbC1ncm91cC5lcnJvciBpbnB1dCwuY29udHJvbC1ncm91cC5lcnJvciBzZWxlY3QsLmNvbnRyb2wtZ3JvdXAuZXJyb3IgdGV4dGFyZWF7Y29sb3I6I2I5NGE0ODtib3JkZXItY29sb3I6I2I5NGE0ODt9DQouY29udHJvbC1ncm91cC5lcnJvciAuY2hlY2tib3g6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLnJhZGlvOmZvY3VzLC5jb250cm9sLWdyb3VwLmVycm9yIGlucHV0OmZvY3VzLC5jb250cm9sLWdyb3VwLmVycm9yIHNlbGVjdDpmb2N1cywuY29udHJvbC1ncm91cC5lcnJvciB0ZXh0YXJlYTpmb2N1c3tib3JkZXItY29sb3I6Izk1M2IzOTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDZweCAjZDU5MzkyOy1tb3otYm94LXNoYWRvdzowIDAgNnB4ICNkNTkzOTI7Ym94LXNoYWRvdzowIDAgNnB4ICNkNTkzOTI7fQ0KLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLmlucHV0LXByZXBlbmQgLmFkZC1vbiwuY29udHJvbC1ncm91cC5lcnJvciAuaW5wdXQtYXBwZW5kIC5hZGQtb257Y29sb3I6I2I5NGE0ODtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGU7Ym9yZGVyLWNvbG9yOiNiOTRhNDg7fQ0KLmNvbnRyb2wtZ3JvdXAuc3VjY2Vzcz5sYWJlbCwuY29udHJvbC1ncm91cC5zdWNjZXNzIC5oZWxwLWJsb2NrLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgLmhlbHAtaW5saW5le2NvbG9yOiM0Njg4NDc7fQ0KLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuY2hlY2tib3gsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAucmFkaW8sLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyBpbnB1dCwuY29udHJvbC1ncm91cC5zdWNjZXNzIHNlbGVjdCwuY29udHJvbC1ncm91cC5zdWNjZXNzIHRleHRhcmVhe2NvbG9yOiM0Njg4NDc7Ym9yZGVyLWNvbG9yOiM0Njg4NDc7fQ0KLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuY2hlY2tib3g6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAucmFkaW86Zm9jdXMsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyBpbnB1dDpmb2N1cywuY29udHJvbC1ncm91cC5zdWNjZXNzIHNlbGVjdDpmb2N1cywuY29udHJvbC1ncm91cC5zdWNjZXNzIHRleHRhcmVhOmZvY3Vze2JvcmRlci1jb2xvcjojMzU2NjM1Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgNnB4ICM3YWJhN2I7LW1vei1ib3gtc2hhZG93OjAgMCA2cHggIzdhYmE3Yjtib3gtc2hhZG93OjAgMCA2cHggIzdhYmE3Yjt9DQouY29udHJvbC1ncm91cC5zdWNjZXNzIC5pbnB1dC1wcmVwZW5kIC5hZGQtb24sLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaW5wdXQtYXBwZW5kIC5hZGQtb257Y29sb3I6IzQ2ODg0NztiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiM0Njg4NDc7fQ0KaW5wdXQ6Zm9jdXM6cmVxdWlyZWQ6aW52YWxpZCx0ZXh0YXJlYTpmb2N1czpyZXF1aXJlZDppbnZhbGlkLHNlbGVjdDpmb2N1czpyZXF1aXJlZDppbnZhbGlke2NvbG9yOiNiOTRhNDg7Ym9yZGVyLWNvbG9yOiNlZTVmNWI7fQ0KaW5wdXQ6Zm9jdXM6cmVxdWlyZWQ6aW52YWxpZDpmb2N1cyx0ZXh0YXJlYTpmb2N1czpyZXF1aXJlZDppbnZhbGlkOmZvY3VzLHNlbGVjdDpmb2N1czpyZXF1aXJlZDppbnZhbGlkOmZvY3Vze2JvcmRlci1jb2xvcjojZTkzMjJkOy13ZWJraXQtYm94LXNoYWRvdzowIDAgNnB4ICNmOGI5Yjc7LW1vei1ib3gtc2hhZG93OjAgMCA2cHggI2Y4YjliNztib3gtc2hhZG93OjAgMCA2cHggI2Y4YjliNzt9DQouZm9ybS1hY3Rpb25ze3BhZGRpbmc6MTdweCAyMHB4IDE4cHg7bWFyZ2luLXRvcDoxOHB4O21hcmdpbi1ib3R0b206MThweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTsqem9vbToxO30NCi5mb3JtLWFjdGlvbnM6YmVmb3JlLC5mb3JtLWFjdGlvbnM6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5mb3JtLWFjdGlvbnM6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQoudW5lZGl0YWJsZS1pbnB1dHtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyLWNvbG9yOiNlZWU7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDI1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wMjUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wMjUpO30NCjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiM5OTk5OTk7fQ0KOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTk5OTk5O30NCjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTk5OTk5O30NCi5oZWxwLWJsb2NrLC5oZWxwLWlubGluZXtjb2xvcjojNTU1NTU1O30NCi5oZWxwLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo5cHg7fQ0KLmhlbHAtaW5saW5le2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTtwYWRkaW5nLWxlZnQ6NXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTsqem9vbToxO30NCi5pbnB1dC1wcmVwZW5kLC5pbnB1dC1hcHBlbmR7bWFyZ2luLWJvdHRvbTo1cHg7fQ0KLmlucHV0LXByZXBlbmQgaW5wdXQsLmlucHV0LWFwcGVuZCBpbnB1dCwuaW5wdXQtcHJlcGVuZCBzZWxlY3QsLmlucHV0LWFwcGVuZCBzZWxlY3QsLmlucHV0LXByZXBlbmQgLnVuZWRpdGFibGUtaW5wdXQsLmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tYm90dG9tOjA7Km1hcmdpbi1sZWZ0OjA7dmVydGljYWwtYWxpZ246bWlkZGxlOy13ZWJraXQtYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDstbW96LWJvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7Ym9yZGVyLXJhZGl1czowIDNweCAzcHggMDt9DQouaW5wdXQtcHJlcGVuZCBpbnB1dDpmb2N1cywuaW5wdXQtYXBwZW5kIGlucHV0OmZvY3VzLC5pbnB1dC1wcmVwZW5kIHNlbGVjdDpmb2N1cywuaW5wdXQtYXBwZW5kIHNlbGVjdDpmb2N1cywuaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dDpmb2N1cywuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0OmZvY3Vze3otaW5kZXg6Mjt9DQouaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0e2JvcmRlci1sZWZ0LWNvbG9yOiNjY2M7fQ0KLmlucHV0LXByZXBlbmQgLmFkZC1vbiwuaW5wdXQtYXBwZW5kIC5hZGQtb257ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bztoZWlnaHQ6MThweDttaW4td2lkdGg6MTZweDtwYWRkaW5nOjRweCA1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmZmZmO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO30NCi5pbnB1dC1wcmVwZW5kIC5hZGQtb24sLmlucHV0LWFwcGVuZCAuYWRkLW9uLC5pbnB1dC1wcmVwZW5kIC5idG4sLmlucHV0LWFwcGVuZCAuYnRue21hcmdpbi1sZWZ0Oi0xcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowO30NCi5pbnB1dC1wcmVwZW5kIC5hY3RpdmUsLmlucHV0LWFwcGVuZCAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2E5ZGJhOTtib3JkZXItY29sb3I6IzQ2YTU0Njt9DQouaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5pbnB1dC1wcmVwZW5kIC5idG57bWFyZ2luLXJpZ2h0Oi0xcHg7fQ0KLmlucHV0LXByZXBlbmQgLmFkZC1vbjpmaXJzdC1jaGlsZCwuaW5wdXQtcHJlcGVuZCAuYnRuOmZpcnN0LWNoaWxkey13ZWJraXQtYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7Ym9yZGVyLXJhZGl1czozcHggMCAwIDNweDt9DQouaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1hcHBlbmQgc2VsZWN0LC5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXR7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDtib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4O30NCi5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXR7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjY2M7Ym9yZGVyLWxlZnQtY29sb3I6I2VlZTt9DQouaW5wdXQtYXBwZW5kIC5hZGQtb246bGFzdC1jaGlsZCwuaW5wdXQtYXBwZW5kIC5idG46bGFzdC1jaGlsZHstd2Via2l0LWJvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7LW1vei1ib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO2JvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7fQ0KLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCBzZWxlY3QsLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0ey13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDt9DQouaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgLmFkZC1vbjpmaXJzdC1jaGlsZCwuaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgLmJ0bjpmaXJzdC1jaGlsZHttYXJnaW4tcmlnaHQ6LTFweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4O2JvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7fQ0KLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC5hZGQtb246bGFzdC1jaGlsZCwuaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgLmJ0bjpsYXN0LWNoaWxke21hcmdpbi1sZWZ0Oi0xcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwOy1tb3otYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO30NCi5zZWFyY2gtcXVlcnl7cGFkZGluZy1yaWdodDoxNHB4O3BhZGRpbmctcmlnaHQ6NHB4IFw5O3BhZGRpbmctbGVmdDoxNHB4O3BhZGRpbmctbGVmdDo0cHggXDk7bWFyZ2luLWJvdHRvbTowOy13ZWJraXQtYm9yZGVyLXJhZGl1czoxNHB4Oy1tb3otYm9yZGVyLXJhZGl1czoxNHB4O2JvcmRlci1yYWRpdXM6MTRweDt9DQouZm9ybS1zZWFyY2ggaW5wdXQsLmZvcm0taW5saW5lIGlucHV0LC5mb3JtLWhvcml6b250YWwgaW5wdXQsLmZvcm0tc2VhcmNoIHRleHRhcmVhLC5mb3JtLWlubGluZSB0ZXh0YXJlYSwuZm9ybS1ob3Jpem9udGFsIHRleHRhcmVhLC5mb3JtLXNlYXJjaCBzZWxlY3QsLmZvcm0taW5saW5lIHNlbGVjdCwuZm9ybS1ob3Jpem9udGFsIHNlbGVjdCwuZm9ybS1zZWFyY2ggLmhlbHAtaW5saW5lLC5mb3JtLWlubGluZSAuaGVscC1pbmxpbmUsLmZvcm0taG9yaXpvbnRhbCAuaGVscC1pbmxpbmUsLmZvcm0tc2VhcmNoIC51bmVkaXRhYmxlLWlucHV0LC5mb3JtLWlubGluZSAudW5lZGl0YWJsZS1pbnB1dCwuZm9ybS1ob3Jpem9udGFsIC51bmVkaXRhYmxlLWlucHV0LC5mb3JtLXNlYXJjaCAuaW5wdXQtcHJlcGVuZCwuZm9ybS1pbmxpbmUgLmlucHV0LXByZXBlbmQsLmZvcm0taG9yaXpvbnRhbCAuaW5wdXQtcHJlcGVuZCwuZm9ybS1zZWFyY2ggLmlucHV0LWFwcGVuZCwuZm9ybS1pbmxpbmUgLmlucHV0LWFwcGVuZCwuZm9ybS1ob3Jpem9udGFsIC5pbnB1dC1hcHBlbmR7ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lO21hcmdpbi1ib3R0b206MDsqem9vbToxO30NCi5mb3JtLXNlYXJjaCAuaGlkZSwuZm9ybS1pbmxpbmUgLmhpZGUsLmZvcm0taG9yaXpvbnRhbCAuaGlkZXtkaXNwbGF5Om5vbmU7fQ0KLmZvcm0tc2VhcmNoIGxhYmVsLC5mb3JtLWlubGluZSBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazt9DQouZm9ybS1zZWFyY2ggLmlucHV0LWFwcGVuZCwuZm9ybS1pbmxpbmUgLmlucHV0LWFwcGVuZCwuZm9ybS1zZWFyY2ggLmlucHV0LXByZXBlbmQsLmZvcm0taW5saW5lIC5pbnB1dC1wcmVwZW5ke21hcmdpbi1ib3R0b206MDt9DQouZm9ybS1zZWFyY2ggLnJhZGlvLC5mb3JtLXNlYXJjaCAuY2hlY2tib3gsLmZvcm0taW5saW5lIC5yYWRpbywuZm9ybS1pbmxpbmUgLmNoZWNrYm94e3BhZGRpbmctbGVmdDowO21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fQ0KLmZvcm0tc2VhcmNoIC5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLC5mb3JtLXNlYXJjaCAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwuZm9ybS1pbmxpbmUgLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0sLmZvcm0taW5saW5lIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJde2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjNweDttYXJnaW4tbGVmdDowO30NCi5jb250cm9sLWdyb3Vwe21hcmdpbi1ib3R0b206OXB4O30NCmxlZ2VuZCsuY29udHJvbC1ncm91cHttYXJnaW4tdG9wOjE4cHg7LXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlOnNlcGFyYXRlO30NCi5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtZ3JvdXB7bWFyZ2luLWJvdHRvbToxOHB4Oyp6b29tOjE7fQ0KLmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1ncm91cDpiZWZvcmUsLmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1ncm91cDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQ0KLmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1ncm91cDphZnRlcntjbGVhcjpib3RoO30NCi5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWx7ZmxvYXQ6bGVmdDt3aWR0aDoxNDBweDtwYWRkaW5nLXRvcDo1cHg7dGV4dC1hbGlnbjpyaWdodDt9DQouZm9ybS1ob3Jpem9udGFsIC5jb250cm9sc3sqZGlzcGxheTppbmxpbmUtYmxvY2s7KnBhZGRpbmctbGVmdDoyMHB4O21hcmdpbi1sZWZ0OjE2MHB4OyptYXJnaW4tbGVmdDowO30NCi5mb3JtLWhvcml6b250YWwgLmNvbnRyb2xzOmZpcnN0LWNoaWxkeypwYWRkaW5nLWxlZnQ6MTYwcHg7fQ0KLmZvcm0taG9yaXpvbnRhbCAuaGVscC1ibG9ja3ttYXJnaW4tdG9wOjlweDttYXJnaW4tYm90dG9tOjA7fQ0KLmZvcm0taG9yaXpvbnRhbCAuZm9ybS1hY3Rpb25ze3BhZGRpbmctbGVmdDoxNjBweDt9DQp0YWJsZXttYXgtd2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO30NCi50YWJsZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MThweDt9DQoudGFibGUgdGgsLnRhYmxlIHRke3BhZGRpbmc6OHB4O2xpbmUtaGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkZGRkO30NCi50YWJsZSB0aHtmb250LXdlaWdodDpib2xkO30NCi50YWJsZSB0aGVhZCB0aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207fQ0KLnRhYmxlIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZSBjb2xncm91cCt0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwudGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3A6MDt9DQoudGFibGUgdGJvZHkrdGJvZHl7Ym9yZGVyLXRvcDoycHggc29saWQgI2RkZGRkZDt9DQoudGFibGUtY29uZGVuc2VkIHRoLC50YWJsZS1jb25kZW5zZWQgdGR7cGFkZGluZzo0cHggNXB4O30NCi50YWJsZS1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkICNkZGRkZGQ7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlOypib3JkZXItY29sbGFwc2U6Y29sbGFwc2VkO2JvcmRlci1sZWZ0OjA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30NCi50YWJsZS1ib3JkZXJlZCB0aCwudGFibGUtYm9yZGVyZWQgdGR7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGRkZGQ7fQ0KLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZS1ib3JkZXJlZCBjb2xncm91cCt0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgY29sZ3JvdXArdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowO30NCi50YWJsZS1ib3JkZXJlZCB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGR7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo0cHg7fQ0KLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIHRib2R5OmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo0cHg7fQ0KLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkey13ZWJraXQtYm9yZGVyLXJhZGl1czowIDAgMCA0cHg7LW1vei1ib3JkZXItcmFkaXVzOjAgMCAwIDRweDtib3JkZXItcmFkaXVzOjAgMCAwIDRweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjRweDt9DQoudGFibGUtYm9yZGVyZWQgdGhlYWQ6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkey13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NHB4O30NCi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHRkLC50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHRoe2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTt9DQoudGFibGUgdGJvZHkgdHI6aG92ZXIgdGQsLnRhYmxlIHRib2R5IHRyOmhvdmVyIHRoe2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTt9DQp0YWJsZSAuc3BhbjF7ZmxvYXQ6bm9uZTt3aWR0aDo0NHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW4ye2Zsb2F0Om5vbmU7d2lkdGg6MTI0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjN7ZmxvYXQ6bm9uZTt3aWR0aDoyMDRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuNHtmbG9hdDpub25lO3dpZHRoOjI4NHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW41e2Zsb2F0Om5vbmU7d2lkdGg6MzY0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjZ7ZmxvYXQ6bm9uZTt3aWR0aDo0NDRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuN3tmbG9hdDpub25lO3dpZHRoOjUyNHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW44e2Zsb2F0Om5vbmU7d2lkdGg6NjA0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3Bhbjl7ZmxvYXQ6bm9uZTt3aWR0aDo2ODRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTB7ZmxvYXQ6bm9uZTt3aWR0aDo3NjRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTF7ZmxvYXQ6bm9uZTt3aWR0aDo4NDRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTJ7ZmxvYXQ6bm9uZTt3aWR0aDo5MjRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTN7ZmxvYXQ6bm9uZTt3aWR0aDoxMDA0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjE0e2Zsb2F0Om5vbmU7d2lkdGg6MTA4NHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW4xNXtmbG9hdDpub25lO3dpZHRoOjExNjRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTZ7ZmxvYXQ6bm9uZTt3aWR0aDoxMjQ0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjE3e2Zsb2F0Om5vbmU7d2lkdGg6MTMyNHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW4xOHtmbG9hdDpub25lO3dpZHRoOjE0MDRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMTl7ZmxvYXQ6bm9uZTt3aWR0aDoxNDg0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjIwe2Zsb2F0Om5vbmU7d2lkdGg6MTU2NHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW4yMXtmbG9hdDpub25lO3dpZHRoOjE2NDRweDttYXJnaW4tbGVmdDowO30NCnRhYmxlIC5zcGFuMjJ7ZmxvYXQ6bm9uZTt3aWR0aDoxNzI0cHg7bWFyZ2luLWxlZnQ6MDt9DQp0YWJsZSAuc3BhbjIze2Zsb2F0Om5vbmU7d2lkdGg6MTgwNHB4O21hcmdpbi1sZWZ0OjA7fQ0KdGFibGUgLnNwYW4yNHtmbG9hdDpub25lO3dpZHRoOjE4ODRweDttYXJnaW4tbGVmdDowO30NCltjbGFzc149Imljb24tIl0sW2NsYXNzKj0iIGljb24tIl17ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDsqbWFyZ2luLXJpZ2h0Oi4zZW07bGluZS1oZWlnaHQ6MTRweDt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LXRvcDtiYWNrZ3JvdW5kLWltYWdlOnVybCgiLi4vaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLnBuZyIpO2JhY2tncm91bmQtcG9zaXRpb246MTRweCAxNHB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDt9DQpbY2xhc3NePSJpY29uLSJdOmxhc3QtY2hpbGQsW2NsYXNzKj0iIGljb24tIl06bGFzdC1jaGlsZHsqbWFyZ2luLWxlZnQ6MDt9DQouaWNvbi13aGl0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiLi4vaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLXdoaXRlLnBuZyIpO30NCi5pY29uLWdsYXNze2JhY2tncm91bmQtcG9zaXRpb246MCAwO30NCi5pY29uLW11c2lje2JhY2tncm91bmQtcG9zaXRpb246LTI0cHggMDt9DQouaWNvbi1zZWFyY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAwO30NCi5pY29uLWVudmVsb3Ble2JhY2tncm91bmQtcG9zaXRpb246LTcycHggMDt9DQouaWNvbi1oZWFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDA7fQ0KLmljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAwO30NCi5pY29uLXN0YXItZW1wdHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMDt9DQouaWNvbi11c2Vye2JhY2tncm91bmQtcG9zaXRpb246LTE2OHB4IDA7fQ0KLmljb24tZmlsbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAwO30NCi5pY29uLXRoLWxhcmdle2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IDA7fQ0KLmljb24tdGh7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggMDt9DQouaWNvbi10aC1saXN0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IDA7fQ0KLmljb24tb2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMjg4cHggMDt9DQouaWNvbi1yZW1vdmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggMDt9DQouaWNvbi16b29tLWlue2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IDA7fQ0KLmljb24tem9vbS1vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzYwcHggMDt9DQouaWNvbi1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggMDt9DQouaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggMDt9DQouaWNvbi1jb2d7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggMDt9DQouaWNvbi10cmFzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAwO30NCi5pY29uLWhvbWV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yNHB4O30NCi5pY29uLWZpbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtMjRweDt9DQouaWNvbi10aW1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTI0cHg7fQ0KLmljb24tcm9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IC0yNHB4O30NCi5pY29uLWRvd25sb2FkLWFsdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0yNHB4O30NCi5pY29uLWRvd25sb2Fke2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0yNHB4O30NCi5pY29uLXVwbG9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMjRweDt9DQouaWNvbi1pbmJveHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAtMjRweDt9DQouaWNvbi1wbGF5LWNpcmNsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMjRweDt9DQouaWNvbi1yZXBlYXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTI0cHg7fQ0KLmljb24tcmVmcmVzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMjRweDt9DQouaWNvbi1saXN0LWFsdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtMjRweDt9DQouaWNvbi1sb2Nre2JhY2tncm91bmQtcG9zaXRpb246LTI4N3B4IC0yNHB4O30NCi5pY29uLWZsYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggLTI0cHg7fQ0KLmljb24taGVhZHBob25lc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAtMjRweDt9DQouaWNvbi12b2x1bWUtb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC0yNHB4O30NCi5pY29uLXZvbHVtZS1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IC0yNHB4O30NCi5pY29uLXZvbHVtZS11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtMjRweDt9DQouaWNvbi1xcmNvZGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTI0cHg7fQ0KLmljb24tYmFyY29kZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtMjRweDt9DQouaWNvbi10YWd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC00OHB4O30NCi5pY29uLXRhZ3N7YmFja2dyb3VuZC1wb3NpdGlvbjotMjVweCAtNDhweDt9DQouaWNvbi1ib29re2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHg7fQ0KLmljb24tYm9va21hcmt7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtNDhweDt9DQouaWNvbi1wcmludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4O30NCi5pY29uLWNhbWVyYXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtNDhweDt9DQouaWNvbi1mb250e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC00OHB4O30NCi5pY29uLWJvbGR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY3cHggLTQ4cHg7fQ0KLmljb24taXRhbGlje2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC00OHB4O30NCi5pY29uLXRleHQtaGVpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IC00OHB4O30NCi5pY29uLXRleHQtd2lkdGh7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHg7fQ0KLmljb24tYWxpZ24tbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtNDhweDt9DQouaWNvbi1hbGlnbi1jZW50ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjg4cHggLTQ4cHg7fQ0KLmljb24tYWxpZ24tcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggLTQ4cHg7fQ0KLmljb24tYWxpZ24tanVzdGlmeXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAtNDhweDt9DQouaWNvbi1saXN0e2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC00OHB4O30NCi5pY29uLWluZGVudC1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IC00OHB4O30NCi5pY29uLWluZGVudC1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtNDhweDt9DQouaWNvbi1mYWNldGltZS12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MzJweCAtNDhweDt9DQouaWNvbi1waWN0dXJle2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC00OHB4O30NCi5pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTcycHg7fQ0KLmljb24tbWFwLW1hcmtlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC03MnB4O30NCi5pY29uLWFkanVzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC03MnB4O30NCi5pY29uLXRpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtNzJweDt9DQouaWNvbi1lZGl0e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTcycHg7fQ0KLmljb24tc2hhcmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTcycHg7fQ0KLmljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTcycHg7fQ0KLmljb24tbW92ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAtNzJweDt9DQouaWNvbi1zdGVwLWJhY2t3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC03MnB4O30NCi5pY29uLWZhc3QtYmFja3dhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTcycHg7fQ0KLmljb24tYmFja3dhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTcycHg7fQ0KLmljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtNzJweDt9DQouaWNvbi1wYXVzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODhweCAtNzJweDt9DQouaWNvbi1zdG9we2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC03MnB4O30NCi5pY29uLWZvcndhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTcycHg7fQ0KLmljb24tZmFzdC1mb3J3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC03MnB4O30NCi5pY29uLXN0ZXAtZm9yd2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtNzJweDt9DQouaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtNzJweDt9DQouaWNvbi1jaGV2cm9uLWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTcycHg7fQ0KLmljb24tY2hldnJvbi1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtNzJweDt9DQouaWNvbi1wbHVzLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4O30NCi5pY29uLW1pbnVzLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtOTZweDt9DQouaWNvbi1yZW1vdmUtc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC05NnB4O30NCi5pY29uLW9rLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtOTZweDt9DQouaWNvbi1xdWVzdGlvbi1zaWdue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHg7fQ0KLmljb24taW5mby1zaWdue2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC05NnB4O30NCi5pY29uLXNjcmVlbnNob3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHg7fQ0KLmljb24tcmVtb3ZlLWNpcmNsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAtOTZweDt9DQouaWNvbi1vay1jaXJjbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTk2cHg7fQ0KLmljb24tYmFuLWNpcmNsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtOTZweDt9DQouaWNvbi1hcnJvdy1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC05NnB4O30NCi5pY29uLWFycm93LXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IC05NnB4O30NCi5pY29uLWFycm93LXVwe2JhY2tncm91bmQtcG9zaXRpb246LTI4OXB4IC05NnB4O30NCi5pY29uLWFycm93LWRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggLTk2cHg7fQ0KLmljb24tc2hhcmUtYWx0e2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC05NnB4O30NCi5pY29uLXJlc2l6ZS1mdWxse2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC05NnB4O30NCi5pY29uLXJlc2l6ZS1zbWFsbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtOTZweDt9DQouaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTQwOHB4IC05NnB4O30NCi5pY29uLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTQzM3B4IC05NnB4O30NCi5pY29uLWFzdGVyaXNre2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC05NnB4O30NCi5pY29uLWV4Y2xhbWF0aW9uLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjBweDt9DQouaWNvbi1naWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTI0cHggLTEyMHB4O30NCi5pY29uLWxlYWZ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTIwcHg7fQ0KLmljb24tZmlyZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IC0xMjBweDt9DQouaWNvbi1leWUtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMjBweDt9DQouaWNvbi1leWUtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTEyMHB4O30NCi5pY29uLXdhcm5pbmctc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTIwcHg7fQ0KLmljb24tcGxhbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTEyMHB4O30NCi5pY29uLWNhbGVuZGFye2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMjBweDt9DQouaWNvbi1yYW5kb217YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTEyMHB4O30NCi5pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyMHB4O30NCi5pY29uLW1hZ25ldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtMTIwcHg7fQ0KLmljb24tY2hldnJvbi11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODhweCAtMTIwcHg7fQ0KLmljb24tY2hldnJvbi1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxM3B4IC0xMTlweDt9DQouaWNvbi1yZXR3ZWV0e2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC0xMjBweDt9DQouaWNvbi1zaG9wcGluZy1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC0xMjBweDt9DQouaWNvbi1mb2xkZXItY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTEyMHB4O30NCi5pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTQwOHB4IC0xMjBweDt9DQouaWNvbi1yZXNpemUtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTExOXB4O30NCi5pY29uLXJlc2l6ZS1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC0xMThweDt9DQouaWNvbi1oZGR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNDRweDt9DQouaWNvbi1idWxsaG9ybntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC0xNDRweDt9DQouaWNvbi1iZWxse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4O30NCi5pY29uLWNlcnRpZmljYXRle2JhY2tncm91bmQtcG9zaXRpb246LTcycHggLTE0NHB4O30NCi5pY29uLXRodW1icy11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNDRweDt9DQouaWNvbi10aHVtYnMtZG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMTQ0cHg7fQ0KLmljb24taGFuZC1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTQ0cHg7fQ0KLmljb24taGFuZC1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTE2OHB4IC0xNDRweDt9DQouaWNvbi1oYW5kLXVwe2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xNDRweDt9DQouaWNvbi1oYW5kLWRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTE0NHB4O30NCi5pY29uLWNpcmNsZS1hcnJvdy1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTQ0cHg7fQ0KLmljb24tY2lyY2xlLWFycm93LWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTE0NHB4O30NCi5pY29uLWNpcmNsZS1hcnJvdy11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODhweCAtMTQ0cHg7fQ0KLmljb24tY2lyY2xlLWFycm93LWRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggLTE0NHB4O30NCi5pY29uLWdsb2Jle2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC0xNDRweDt9DQouaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMzYwcHggLTE0NHB4O30NCi5pY29uLXRhc2tze2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IC0xNDRweDt9DQouaWNvbi1maWx0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTE0NHB4O30NCi5pY29uLWJyaWVmY2FzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MzJweCAtMTQ0cHg7fQ0KLmljb24tZnVsbHNjcmVlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtMTQ0cHg7fQ0KLmRyb3B1cCwuZHJvcGRvd257cG9zaXRpb246cmVsYXRpdmU7fQ0KLmRyb3Bkb3duLXRvZ2dsZXsqbWFyZ2luLWJvdHRvbTotM3B4O30NCi5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGV7b3V0bGluZTowO30NCi5jYXJldHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjRweCBzb2xpZCAjMDAwMDAwO2JvcmRlci1yaWdodDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbnRlbnQ6IiI7b3BhY2l0eTowLjM7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MzApO30NCi5kcm9wZG93biAuY2FyZXR7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWxlZnQ6MnB4O30NCi5kcm9wZG93bjpob3ZlciAuY2FyZXQsLm9wZW4gLmNhcmV0e29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30NCi5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDt6LWluZGV4OjEwMDA7ZGlzcGxheTpub25lO2Zsb2F0OmxlZnQ7bWluLXdpZHRoOjE2MHB4O3BhZGRpbmc6NHB4IDA7bWFyZ2luOjFweCAwIDA7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7KmJvcmRlci1yaWdodC13aWR0aDoycHg7KmJvcmRlci1ib3R0b20td2lkdGg6MnB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7LW1vei1ib3gtc2hhZG93OjAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpO2JveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7LW1vei1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZztiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7fQ0KLmRyb3Bkb3duLW1lbnUucHVsbC1yaWdodHtyaWdodDowO2xlZnQ6YXV0bzt9DQouZHJvcGRvd24tbWVudSAuZGl2aWRlcnsqd2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjo4cHggMXB4OyptYXJnaW46LTVweCAwIDVweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZTVlNWU1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmZmZmY7fQ0KLmRyb3Bkb3duLW1lbnUgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDE1cHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDpub3JtYWw7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojMzMzMzMzO3doaXRlLXNwYWNlOm5vd3JhcDt9DQouZHJvcGRvd24tbWVudSBsaT5hOmhvdmVyLC5kcm9wZG93bi1tZW51IC5hY3RpdmU+YSwuZHJvcGRvd24tbWVudSAuYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDg4Y2M7fQ0KLm9wZW57KnotaW5kZXg6MTAwMDt9DQoub3Blbj4uZHJvcGRvd24tbWVudXtkaXNwbGF5OmJsb2NrO30NCi5wdWxsLXJpZ2h0Pi5kcm9wZG93bi1tZW51e3JpZ2h0OjA7bGVmdDphdXRvO30NCi5kcm9wdXAgLmNhcmV0LC5uYXZiYXItZml4ZWQtYm90dG9tIC5kcm9wZG93biAuY2FyZXR7Ym9yZGVyLXRvcDowO2JvcmRlci1ib3R0b206NHB4IHNvbGlkICMwMDAwMDA7Y29udGVudDoiXDIxOTEiO30NCi5kcm9wdXAgLmRyb3Bkb3duLW1lbnUsLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAlO21hcmdpbi1ib3R0b206MXB4O30NCi50eXBlYWhlYWR7bWFyZ2luLXRvcDoycHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30NCi53ZWxse21pbi1oZWlnaHQ6MjBweDtwYWRkaW5nOjE5cHg7bWFyZ2luLWJvdHRvbToyMHB4O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXI6MXB4IHNvbGlkICNlZWU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7fQ0KLndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjE1KTt9DQoud2VsbC1sYXJnZXtwYWRkaW5nOjI0cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4O30NCi53ZWxsLXNtYWxse3BhZGRpbmc6OXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDt9DQouZmFkZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC4xNXMgbGluZWFyOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTVzIGxpbmVhcjstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTVzIGxpbmVhcjstby10cmFuc2l0aW9uOm9wYWNpdHkgMC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAwLjE1cyBsaW5lYXI7fQ0KLmZhZGUuaW57b3BhY2l0eToxO30NCi5jb2xsYXBzZXtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uOmhlaWdodCAwLjM1cyBlYXNlOy1tb3otdHJhbnNpdGlvbjpoZWlnaHQgMC4zNXMgZWFzZTstbXMtdHJhbnNpdGlvbjpoZWlnaHQgMC4zNXMgZWFzZTstby10cmFuc2l0aW9uOmhlaWdodCAwLjM1cyBlYXNlO3RyYW5zaXRpb246aGVpZ2h0IDAuMzVzIGVhc2U7fQ0KLmNvbGxhcHNlLmlue2hlaWdodDphdXRvO30NCi5jbG9zZXtmbG9hdDpyaWdodDtmb250LXNpemU6MjBweDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjE4cHg7Y29sb3I6IzAwMDAwMDt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmZmZmY7b3BhY2l0eTowLjI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjApO30NCi5jbG9zZTpob3Zlcntjb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MC40O2ZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTt9DQpidXR0b24uY2xvc2V7cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7fQ0KLmJ0bntkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7cGFkZGluZzo0cHggMTBweCA0cHg7bWFyZ2luLWJvdHRvbTowOyptYXJnaW4tbGVmdDouM2VtO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE4cHg7KmxpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6IzMzMzMzMzt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OypiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2ZmZmZmZiksIHRvKCNlNmU2ZTYpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7KmJvcmRlcjowO2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7Ym9yZGVyLWNvbG9yOiNlNmU2ZTYgI2U2ZTZlNiAjYmZiZmJmO2JvcmRlci1ib3R0b20tY29sb3I6I2IzYjNiMzstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNlNmU2ZTYnLCBHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTsqem9vbToxOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTt9DQouYnRuOmhvdmVyLC5idG46YWN0aXZlLC5idG4uYWN0aXZlLC5idG4uZGlzYWJsZWQsLmJ0bltkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2OypiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7fQ0KLmJ0bjphY3RpdmUsLmJ0bi5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2NjY2NjIFw5O30NCi5idG46Zmlyc3QtY2hpbGR7Km1hcmdpbi1sZWZ0OjA7fQ0KLmJ0bjpob3Zlcntjb2xvcjojMzMzMzMzO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjsqYmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5O2JhY2tncm91bmQtcG9zaXRpb246MCAtMTVweDstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjstbW96LXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjstbXMtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIDAuMXMgbGluZWFyOy1vLXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7fQ0KLmJ0bjpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkICMzMzM7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweDt9DQouYnRuLmFjdGl2ZSwuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7YmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5IFw5O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTUpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTUpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30NCi5idG4uZGlzYWJsZWQsLmJ0bltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtvcGFjaXR5OjAuNjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NjUpOy13ZWJraXQtYm94LXNoYWRvdzpub25lOy1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTt9DQouYnRuLWxhcmdle3BhZGRpbmc6OXB4IDE0cHg7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDt9DQouYnRuLWxhcmdlIFtjbGFzc149Imljb24tIl17bWFyZ2luLXRvcDoxcHg7fQ0KLmJ0bi1zbWFsbHtwYWRkaW5nOjVweCA5cHg7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MTZweDt9DQouYnRuLXNtYWxsIFtjbGFzc149Imljb24tIl17bWFyZ2luLXRvcDotMXB4O30NCi5idG4tbWluaXtwYWRkaW5nOjJweCA2cHg7Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MTRweDt9DQouYnRuLXByaW1hcnksLmJ0bi1wcmltYXJ5OmhvdmVyLC5idG4td2FybmluZywuYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi1kYW5nZXIsLmJ0bi1kYW5nZXI6aG92ZXIsLmJ0bi1zdWNjZXNzLC5idG4tc3VjY2Vzczpob3ZlciwuYnRuLWluZm8sLmJ0bi1pbmZvOmhvdmVyLC5idG4taW52ZXJzZSwuYnRuLWludmVyc2U6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpO30NCi5idG4tcHJpbWFyeS5hY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuYnRuLWluZm8uYWN0aXZlLC5idG4taW52ZXJzZS5hY3RpdmV7Y29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTt9DQouYnRue2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7fQ0KLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzAwNzRjYzsqYmFja2dyb3VuZC1jb2xvcjojMDA1NWNjO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMwMDg4Y2MsICMwMDU1Y2MpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCMwMDg4Y2MpLCB0bygjMDA1NWNjKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMwMDg4Y2MsICMwMDU1Y2MpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzAwODhjYywgIzAwNTVjYyk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMwMDg4Y2MsICMwMDU1Y2MpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgIzAwODhjYywgIzAwNTVjYyk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiMwMDU1Y2MgIzAwNTVjYyAjMDAzNTgwO2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDA4OGNjJywgZW5kQ29sb3JzdHI9JyMwMDU1Y2MnLCBHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTt9DQouYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkuYWN0aXZlLC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuYnRuLXByaW1hcnlbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzAwNTVjYzsqYmFja2dyb3VuZC1jb2xvcjojMDA0YWIzO30NCi5idG4tcHJpbWFyeTphY3RpdmUsLmJ0bi1wcmltYXJ5LmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDQwOTkgXDk7fQ0KLmJ0bi13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZhYTczMjsqYmFja2dyb3VuZC1jb2xvcjojZjg5NDA2O2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCNmYmI0NTApLCB0bygjZjg5NDA2KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiNmODk0MDYgI2Y4OTQwNiAjYWQ2NzA0O2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmJiNDUwJywgZW5kQ29sb3JzdHI9JyNmODk0MDYnLCBHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTt9DQouYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcuYWN0aXZlLC5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLXdhcm5pbmdbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNjsqYmFja2dyb3VuZC1jb2xvcjojZGY4NTA1O30NCi5idG4td2FybmluZzphY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjNjc2MDUgXDk7fQ0KLmJ0bi1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZGE0ZjQ5OypiYWNrZ3JvdW5kLWNvbG9yOiNiZDM2MmY7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2JkMzYyZik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2VlNWY1YiksIHRvKCNiZDM2MmYpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2JkMzYyZik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYmQzNjJmKTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2JkMzYyZik7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYmQzNjJmKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6I2JkMzYyZiAjYmQzNjJmICM4MDI0MjA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNlZTVmNWInLCBlbmRDb2xvcnN0cj0nI2JkMzYyZicsIEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO30NCi5idG4tZGFuZ2VyOmhvdmVyLC5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLmJ0bi1kYW5nZXIuZGlzYWJsZWQsLmJ0bi1kYW5nZXJbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2JkMzYyZjsqYmFja2dyb3VuZC1jb2xvcjojYTkzMDJhO30NCi5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojOTQyYTI1IFw5O30NCi5idG4tc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM1YmI3NWI7KmJhY2tncm91bmQtY29sb3I6IzUxYTM1MTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTFhMzUxKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjNjJjNDYyKSwgdG8oIzUxYTM1MSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTFhMzUxKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1MWEzNTEpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTFhMzUxKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1MWEzNTEpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojNTFhMzUxICM1MWEzNTEgIzM4NzAzODtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzYyYzQ2MicsIGVuZENvbG9yc3RyPScjNTFhMzUxJywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7fQ0KLmJ0bi1zdWNjZXNzOmhvdmVyLC5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiM1MWEzNTE7KmJhY2tncm91bmQtY29sb3I6IzQ5OTI0OTt9DQouYnRuLXN1Y2Nlc3M6YWN0aXZlLC5idG4tc3VjY2Vzcy5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNDA4MTQwIFw5O30NCi5idG4taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM0OWFmY2Q7KmJhY2tncm91bmQtY29sb3I6IzJmOTZiNDtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMmY5NmI0KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjNWJjMGRlKSwgdG8oIzJmOTZiNCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMmY5NmI0KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMyZjk2YjQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMmY5NmI0KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMyZjk2YjQpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojMmY5NmI0ICMyZjk2YjQgIzFmNjM3Nztib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzViYzBkZScsIGVuZENvbG9yc3RyPScjMmY5NmI0JywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7fQ0KLmJ0bi1pbmZvOmhvdmVyLC5idG4taW5mbzphY3RpdmUsLmJ0bi1pbmZvLmFjdGl2ZSwuYnRuLWluZm8uZGlzYWJsZWQsLmJ0bi1pbmZvW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMyZjk2YjQ7KmJhY2tncm91bmQtY29sb3I6IzJhODVhMDt9DQouYnRuLWluZm86YWN0aXZlLC5idG4taW5mby5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMjQ3NDhjIFw5O30NCi5idG4taW52ZXJzZXtiYWNrZ3JvdW5kLWNvbG9yOiM0MTQxNDE7KmJhY2tncm91bmQtY29sb3I6IzIyMjIyMjtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNTU1NTU1LCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjNTU1NTU1KSwgdG8oIzIyMjIyMikpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNTU1NTU1LCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM1NTU1NTUsICMyMjIyMjIpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNTU1NTU1LCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICM1NTU1NTUsICMyMjIyMjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojMjIyMjIyICMyMjIyMjIgIzAwMDAwMDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzU1NTU1NScsIGVuZENvbG9yc3RyPScjMjIyMjIyJywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7fQ0KLmJ0bi1pbnZlcnNlOmhvdmVyLC5idG4taW52ZXJzZTphY3RpdmUsLmJ0bi1pbnZlcnNlLmFjdGl2ZSwuYnRuLWludmVyc2UuZGlzYWJsZWQsLmJ0bi1pbnZlcnNlW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7KmJhY2tncm91bmQtY29sb3I6IzE1MTUxNTt9DQouYnRuLWludmVyc2U6YWN0aXZlLC5idG4taW52ZXJzZS5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4IFw5O30NCmJ1dHRvbi5idG4saW5wdXRbdHlwZT0ic3VibWl0Il0uYnRueypwYWRkaW5nLXRvcDoycHg7KnBhZGRpbmctYm90dG9tOjJweDt9DQpidXR0b24uYnRuOjotbW96LWZvY3VzLWlubmVyLGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bjo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjA7fQ0KYnV0dG9uLmJ0bi5idG4tbGFyZ2UsaW5wdXRbdHlwZT0ic3VibWl0Il0uYnRuLmJ0bi1sYXJnZXsqcGFkZGluZy10b3A6N3B4OypwYWRkaW5nLWJvdHRvbTo3cHg7fQ0KYnV0dG9uLmJ0bi5idG4tc21hbGwsaW5wdXRbdHlwZT0ic3VibWl0Il0uYnRuLmJ0bi1zbWFsbHsqcGFkZGluZy10b3A6M3B4OypwYWRkaW5nLWJvdHRvbTozcHg7fQ0KYnV0dG9uLmJ0bi5idG4tbWluaSxpbnB1dFt0eXBlPSJzdWJtaXQiXS5idG4uYnRuLW1pbml7KnBhZGRpbmctdG9wOjFweDsqcGFkZGluZy1ib3R0b206MXB4O30NCi5idG4tZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7Km1hcmdpbi1sZWZ0Oi4zZW07Knpvb206MTt9DQouYnRuLWdyb3VwOmJlZm9yZSwuYnRuLWdyb3VwOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9DQouYnRuLWdyb3VwOmFmdGVye2NsZWFyOmJvdGg7fQ0KLmJ0bi1ncm91cDpmaXJzdC1jaGlsZHsqbWFyZ2luLWxlZnQ6MDt9DQouYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLWxlZnQ6NXB4O30NCi5idG4tdG9vbGJhcnttYXJnaW4tdG9wOjlweDttYXJnaW4tYm90dG9tOjlweDt9DQouYnRuLXRvb2xiYXIgLmJ0bi1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7Knpvb206MTt9DQouYnRuLWdyb3VwPi5idG57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDt9DQouYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweDt9DQouYnRuLWdyb3VwPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGV7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo0cHg7fQ0KLmJ0bi1ncm91cD4uYnRuLmxhcmdlOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7fQ0KLmJ0bi1ncm91cD4uYnRuLmxhcmdlOmxhc3QtY2hpbGQsLmJ0bi1ncm91cD4ubGFyZ2UuZHJvcGRvd24tdG9nZ2xley13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4O30NCi5idG4tZ3JvdXA+LmJ0bjpob3ZlciwuYnRuLWdyb3VwPi5idG46Zm9jdXMsLmJ0bi1ncm91cD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwPi5idG4uYWN0aXZle3otaW5kZXg6Mjt9DQouYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xle291dGxpbmU6MDt9DQouYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGV7KnBhZGRpbmctdG9wOjRweDtwYWRkaW5nLXJpZ2h0OjhweDsqcGFkZGluZy1ib3R0b206NHB4O3BhZGRpbmctbGVmdDo4cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDFweCAwIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDFweCAwIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym94LXNoYWRvdzppbnNldCAxcHggMCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpLGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30NCi5idG4tZ3JvdXA+LmJ0bi1taW5pLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nLXJpZ2h0OjVweDtwYWRkaW5nLWxlZnQ6NXB4O30NCi5idG4tZ3JvdXA+LmJ0bi1zbWFsbC5kcm9wZG93bi10b2dnbGV7KnBhZGRpbmctdG9wOjRweDsqcGFkZGluZy1ib3R0b206NHB4O30NCi5idG4tZ3JvdXA+LmJ0bi1sYXJnZS5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1yaWdodDoxMnB4O3BhZGRpbmctbGVmdDoxMnB4O30NCi5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtaW1hZ2U6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTUpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7fQ0KLmJ0bi1ncm91cC5vcGVuIC5idG4uZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjt9DQouYnRuLWdyb3VwLm9wZW4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDU1Y2M7fQ0KLmJ0bi1ncm91cC5vcGVuIC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojZjg5NDA2O30NCi5idG4tZ3JvdXAub3BlbiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojYmQzNjJmO30NCi5idG4tZ3JvdXAub3BlbiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6IzUxYTM1MTt9DQouYnRuLWdyb3VwLm9wZW4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiMyZjk2YjQ7fQ0KLmJ0bi1ncm91cC5vcGVuIC5idG4taW52ZXJzZS5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojMjIyMjIyO30NCi5idG4gLmNhcmV0e21hcmdpbi10b3A6N3B4O21hcmdpbi1sZWZ0OjA7fQ0KLmJ0bjpob3ZlciAuY2FyZXQsLm9wZW4uYnRuLWdyb3VwIC5jYXJldHtvcGFjaXR5OjE7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTt9DQouYnRuLW1pbmkgLmNhcmV0e21hcmdpbi10b3A6NXB4O30NCi5idG4tc21hbGwgLmNhcmV0e21hcmdpbi10b3A6NnB4O30NCi5idG4tbGFyZ2UgLmNhcmV0e21hcmdpbi10b3A6NnB4O2JvcmRlci10b3Atd2lkdGg6NXB4O2JvcmRlci1yaWdodC13aWR0aDo1cHg7Ym9yZGVyLWxlZnQtd2lkdGg6NXB4O30NCi5kcm9wdXAgLmJ0bi1sYXJnZSAuY2FyZXR7Ym9yZGVyLXRvcDowO2JvcmRlci1ib3R0b206NXB4IHNvbGlkICMwMDAwMDA7fQ0KLmJ0bi1wcmltYXJ5IC5jYXJldCwuYnRuLXdhcm5pbmcgLmNhcmV0LC5idG4tZGFuZ2VyIC5jYXJldCwuYnRuLWluZm8gLmNhcmV0LC5idG4tc3VjY2VzcyAuY2FyZXQsLmJ0bi1pbnZlcnNlIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiNmZmZmZmY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmZmZmO29wYWNpdHk6MC43NTtmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7fQ0KLmFsZXJ0e3BhZGRpbmc6OHB4IDM1cHggOHB4IDE0cHg7bWFyZ2luLWJvdHRvbToxOHB4O2NvbG9yOiNjMDk4NTM7dGV4dC1zaGFkb3c6MCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7YmFja2dyb3VuZC1jb2xvcjojZmNmOGUzO2JvcmRlcjoxcHggc29saWQgI2ZiZWVkNTstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7fQ0KLmFsZXJ0LWhlYWRpbmd7Y29sb3I6aW5oZXJpdDt9DQouYWxlcnQgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2xpbmUtaGVpZ2h0OjE4cHg7fQ0KLmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzQ2ODg0NztiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiNkNmU5YzY7fQ0KLmFsZXJ0LWRhbmdlciwuYWxlcnQtZXJyb3J7Y29sb3I6I2I5NGE0ODtiYWNrZ3JvdW5kLWNvbG9yOiNmMmRlZGU7Ym9yZGVyLWNvbG9yOiNlZWQzZDc7fQ0KLmFsZXJ0LWluZm97Y29sb3I6IzNhODdhZDtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiNiY2U4ZjE7fQ0KLmFsZXJ0LWJsb2Nre3BhZGRpbmctdG9wOjE0cHg7cGFkZGluZy1ib3R0b206MTRweDt9DQouYWxlcnQtYmxvY2s+cCwuYWxlcnQtYmxvY2s+dWx7bWFyZ2luLWJvdHRvbTowO30NCi5hbGVydC1ibG9jayBwK3B7bWFyZ2luLXRvcDo1cHg7fQ0KLm5hdnttYXJnaW4tYm90dG9tOjE4cHg7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmU7fQ0KLm5hdj5saT5he2Rpc3BsYXk6YmxvY2s7fQ0KLm5hdj5saT5hOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZWVlZTt9DQoubmF2Pi5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O30NCi5uYXYgLm5hdi1oZWFkZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweCAxNXB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojOTk5OTk5O3RleHQtc2hhZG93OjAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt9DQoubmF2IGxpKy5uYXYtaGVhZGVye21hcmdpbi10b3A6OXB4O30NCi5uYXYtbGlzdHtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7bWFyZ2luLWJvdHRvbTowO30NCi5uYXYtbGlzdD5saT5hLC5uYXYtbGlzdCAubmF2LWhlYWRlcnttYXJnaW4tcmlnaHQ6LTE1cHg7bWFyZ2luLWxlZnQ6LTE1cHg7dGV4dC1zaGFkb3c6MCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7fQ0KLm5hdi1saXN0PmxpPmF7cGFkZGluZzozcHggMTVweDt9DQoubmF2LWxpc3Q+LmFjdGl2ZT5hLC5uYXYtbGlzdD4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7YmFja2dyb3VuZC1jb2xvcjojMDA4OGNjO30NCi5uYXYtbGlzdCBbY2xhc3NePSJpY29uLSJde21hcmdpbi1yaWdodDoycHg7fQ0KLm5hdi1saXN0IC5kaXZpZGVyeyp3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjhweCAxcHg7Km1hcmdpbjotNXB4IDAgNXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZmZmZjt9DQoubmF2LXRhYnMsLm5hdi1waWxsc3sqem9vbToxO30NCi5uYXYtdGFiczpiZWZvcmUsLm5hdi1waWxsczpiZWZvcmUsLm5hdi10YWJzOmFmdGVyLC5uYXYtcGlsbHM6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5uYXYtdGFiczphZnRlciwubmF2LXBpbGxzOmFmdGVye2NsZWFyOmJvdGg7fQ0KLm5hdi10YWJzPmxpLC5uYXYtcGlsbHM+bGl7ZmxvYXQ6bGVmdDt9DQoubmF2LXRhYnM+bGk+YSwubmF2LXBpbGxzPmxpPmF7cGFkZGluZy1yaWdodDoxMnB4O3BhZGRpbmctbGVmdDoxMnB4O21hcmdpbi1yaWdodDoycHg7bGluZS1oZWlnaHQ6MTRweDt9DQoubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDt9DQoubmF2LXRhYnM+bGl7bWFyZ2luLWJvdHRvbTotMXB4O30NCi5uYXYtdGFicz5saT5he3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHg7bGluZS1oZWlnaHQ6MThweDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDt9DQoubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZWVlZSAjZWVlZWVlICNkZGRkZGQ7fQ0KLm5hdi10YWJzPi5hY3RpdmU+YSwubmF2LXRhYnM+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiM1NTU1NTU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O30NCi5uYXYtcGlsbHM+bGk+YXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4O21hcmdpbi10b3A6MnB4O21hcmdpbi1ib3R0b206MnB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDt9DQoubmF2LXBpbGxzPi5hY3RpdmU+YSwubmF2LXBpbGxzPi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmZmZmO2JhY2tncm91bmQtY29sb3I6IzAwODhjYzt9DQoubmF2LXN0YWNrZWQ+bGl7ZmxvYXQ6bm9uZTt9DQoubmF2LXN0YWNrZWQ+bGk+YXttYXJnaW4tcmlnaHQ6MDt9DQoubmF2LXRhYnMubmF2LXN0YWNrZWR7Ym9yZGVyLWJvdHRvbTowO30NCi5uYXYtdGFicy5uYXYtc3RhY2tlZD5saT5he2JvcmRlcjoxcHggc29saWQgI2RkZDstd2Via2l0LWJvcmRlci1yYWRpdXM6MDstbW96LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7fQ0KLm5hdi10YWJzLm5hdi1zdGFja2VkPmxpOmZpcnN0LWNoaWxkPmF7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy1tb3otYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO30NCi5uYXYtdGFicy5uYXYtc3RhY2tlZD5saTpsYXN0LWNoaWxkPmF7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgNHB4IDRweDtib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4O30NCi5uYXYtdGFicy5uYXYtc3RhY2tlZD5saT5hOmhvdmVye3otaW5kZXg6Mjtib3JkZXItY29sb3I6I2RkZDt9DQoubmF2LXBpbGxzLm5hdi1zdGFja2VkPmxpPmF7bWFyZ2luLWJvdHRvbTozcHg7fQ0KLm5hdi1waWxscy5uYXYtc3RhY2tlZD5saTpsYXN0LWNoaWxkPmF7bWFyZ2luLWJvdHRvbToxcHg7fQ0KLm5hdi10YWJzIC5kcm9wZG93bi1tZW51ey13ZWJraXQtYm9yZGVyLXJhZGl1czowIDAgNXB4IDVweDstbW96LWJvcmRlci1yYWRpdXM6MCAwIDVweCA1cHg7Ym9yZGVyLXJhZGl1czowIDAgNXB4IDVweDt9DQoubmF2LXBpbGxzIC5kcm9wZG93bi1tZW51ey13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9DQoubmF2LXRhYnMgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXQsLm5hdi1waWxscyAuZHJvcGRvd24tdG9nZ2xlIC5jYXJldHttYXJnaW4tdG9wOjZweDtib3JkZXItdG9wLWNvbG9yOiMwMDg4Y2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA4OGNjO30NCi5uYXYtdGFicyAuZHJvcGRvd24tdG9nZ2xlOmhvdmVyIC5jYXJldCwubmF2LXBpbGxzIC5kcm9wZG93bi10b2dnbGU6aG92ZXIgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzAwNTU4MDtib3JkZXItYm90dG9tLWNvbG9yOiMwMDU1ODA7fQ0KLm5hdi10YWJzIC5hY3RpdmUgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXQsLm5hdi1waWxscyAuYWN0aXZlIC5kcm9wZG93bi10b2dnbGUgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzMzMzMzMztib3JkZXItYm90dG9tLWNvbG9yOiMzMzMzMzM7fQ0KLm5hdj4uZHJvcGRvd24uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzAwMDAwMDtjdXJzb3I6cG9pbnRlcjt9DQoubmF2LXRhYnMgLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSwubmF2LXBpbGxzIC5vcGVuIC5kcm9wZG93bi10b2dnbGUsLm5hdj5saS5kcm9wZG93bi5vcGVuLmFjdGl2ZT5hOmhvdmVye2NvbG9yOiNmZmZmZmY7YmFja2dyb3VuZC1jb2xvcjojOTk5OTk5O2JvcmRlci1jb2xvcjojOTk5OTk5O30NCi5uYXYgbGkuZHJvcGRvd24ub3BlbiAuY2FyZXQsLm5hdiBsaS5kcm9wZG93bi5vcGVuLmFjdGl2ZSAuY2FyZXQsLm5hdiBsaS5kcm9wZG93bi5vcGVuIGE6aG92ZXIgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6I2ZmZmZmZjtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZmZmY7b3BhY2l0eToxO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7fQ0KLnRhYnMtc3RhY2tlZCAub3Blbj5hOmhvdmVye2JvcmRlci1jb2xvcjojOTk5OTk5O30NCi50YWJiYWJsZXsqem9vbToxO30NCi50YWJiYWJsZTpiZWZvcmUsLnRhYmJhYmxlOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9DQoudGFiYmFibGU6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQoudGFiLWNvbnRlbnR7b3ZlcmZsb3c6YXV0bzt9DQoudGFicy1iZWxvdz4ubmF2LXRhYnMsLnRhYnMtcmlnaHQ+Lm5hdi10YWJzLC50YWJzLWxlZnQ+Lm5hdi10YWJze2JvcmRlci1ib3R0b206MDt9DQoudGFiLWNvbnRlbnQ+LnRhYi1wYW5lLC5waWxsLWNvbnRlbnQ+LnBpbGwtcGFuZXtkaXNwbGF5Om5vbmU7fQ0KLnRhYi1jb250ZW50Pi5hY3RpdmUsLnBpbGwtY29udGVudD4uYWN0aXZle2Rpc3BsYXk6YmxvY2s7fQ0KLnRhYnMtYmVsb3c+Lm5hdi10YWJze2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7fQ0KLnRhYnMtYmVsb3c+Lm5hdi10YWJzPmxpe21hcmdpbi10b3A6LTFweDttYXJnaW4tYm90dG9tOjA7fQ0KLnRhYnMtYmVsb3c+Lm5hdi10YWJzPmxpPmF7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgNHB4IDRweDtib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4O30NCi50YWJzLWJlbG93Pi5uYXYtdGFicz5saT5hOmhvdmVye2JvcmRlci10b3AtY29sb3I6I2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O30NCi50YWJzLWJlbG93Pi5uYXYtdGFicz4uYWN0aXZlPmEsLnRhYnMtYmVsb3c+Lm5hdi10YWJzPi5hY3RpdmU+YTpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgI2RkZCAjZGRkICNkZGQ7fQ0KLnRhYnMtbGVmdD4ubmF2LXRhYnM+bGksLnRhYnMtcmlnaHQ+Lm5hdi10YWJzPmxpe2Zsb2F0Om5vbmU7fQ0KLnRhYnMtbGVmdD4ubmF2LXRhYnM+bGk+YSwudGFicy1yaWdodD4ubmF2LXRhYnM+bGk+YXttaW4td2lkdGg6NzRweDttYXJnaW4tcmlnaHQ6MDttYXJnaW4tYm90dG9tOjNweDt9DQoudGFicy1sZWZ0Pi5uYXYtdGFic3tmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoxOXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDt9DQoudGFicy1sZWZ0Pi5uYXYtdGFicz5saT5he21hcmdpbi1yaWdodDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggMCAwIDRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHg7Ym9yZGVyLXJhZGl1czo0cHggMCAwIDRweDt9DQoudGFicy1sZWZ0Pi5uYXYtdGFicz5saT5hOmhvdmVye2JvcmRlci1jb2xvcjojZWVlZWVlICNkZGRkZGQgI2VlZWVlZSAjZWVlZWVlO30NCi50YWJzLWxlZnQ+Lm5hdi10YWJzIC5hY3RpdmU+YSwudGFicy1sZWZ0Pi5uYXYtdGFicyAuYWN0aXZlPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNkZGQgdHJhbnNwYXJlbnQgI2RkZCAjZGRkOypib3JkZXItcmlnaHQtY29sb3I6I2ZmZmZmZjt9DQoudGFicy1yaWdodD4ubmF2LXRhYnN7ZmxvYXQ6cmlnaHQ7bWFyZ2luLWxlZnQ6MTlweDtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZDt9DQoudGFicy1yaWdodD4ubmF2LXRhYnM+bGk+YXttYXJnaW4tbGVmdDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czowIDRweCA0cHggMDstbW96LWJvcmRlci1yYWRpdXM6MCA0cHggNHB4IDA7Ym9yZGVyLXJhZGl1czowIDRweCA0cHggMDt9DQoudGFicy1yaWdodD4ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZWVlZSAjZWVlZWVlICNlZWVlZWUgI2RkZGRkZDt9DQoudGFicy1yaWdodD4ubmF2LXRhYnMgLmFjdGl2ZT5hLC50YWJzLXJpZ2h0Pi5uYXYtdGFicyAuYWN0aXZlPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNkZGQgI2RkZCAjZGRkIHRyYW5zcGFyZW50Oypib3JkZXItbGVmdC1jb2xvcjojZmZmZmZmO30NCi5uYXZiYXJ7KnBvc2l0aW9uOnJlbGF0aXZlOyp6LWluZGV4OjI7bWFyZ2luLWJvdHRvbToxOHB4O292ZXJmbG93OnZpc2libGU7fQ0KLm5hdmJhci1pbm5lcnttaW4taGVpZ2h0OjQwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctbGVmdDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzJjMmMyYztiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzMzMzMzMyksIHRvKCMyMjIyMjIpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzMzMzLCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMzMzMzMzMnLCBlbmRDb2xvcnN0cj0nIzIyMjIyMicsIEdyYWRpZW50VHlwZT0wKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSksaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOy1tb3otYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSxpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSxpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7fQ0KLm5hdmJhciAuY29udGFpbmVye3dpZHRoOmF1dG87fQ0KLm5hdi1jb2xsYXBzZS5jb2xsYXBzZXtoZWlnaHQ6YXV0bzt9DQoubmF2YmFye2NvbG9yOiM5OTk5OTk7fQ0KLm5hdmJhciAuYnJhbmQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fQ0KLm5hdmJhciAuYnJhbmR7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3BhZGRpbmc6OHB4IDIwcHggMTJweDttYXJnaW4tbGVmdDotMjBweDtmb250LXNpemU6MjBweDtmb250LXdlaWdodDoyMDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojOTk5OTk5O30NCi5uYXZiYXIgLm5hdmJhci10ZXh0e21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDo0MHB4O30NCi5uYXZiYXIgLm5hdmJhci1saW5re2NvbG9yOiM5OTk5OTk7fQ0KLm5hdmJhciAubmF2YmFyLWxpbms6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt9DQoubmF2YmFyIC5idG4sLm5hdmJhciAuYnRuLWdyb3Vwe21hcmdpbi10b3A6NXB4O30NCi5uYXZiYXIgLmJ0bi1ncm91cCAuYnRue21hcmdpbjowO30NCi5uYXZiYXItZm9ybXttYXJnaW4tYm90dG9tOjA7Knpvb206MTt9DQoubmF2YmFyLWZvcm06YmVmb3JlLC5uYXZiYXItZm9ybTphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQ0KLm5hdmJhci1mb3JtOmFmdGVye2NsZWFyOmJvdGg7fQ0KLm5hdmJhci1mb3JtIGlucHV0LC5uYXZiYXItZm9ybSBzZWxlY3QsLm5hdmJhci1mb3JtIC5yYWRpbywubmF2YmFyLWZvcm0gLmNoZWNrYm94e21hcmdpbi10b3A6NXB4O30NCi5uYXZiYXItZm9ybSBpbnB1dCwubmF2YmFyLWZvcm0gc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206MDt9DQoubmF2YmFyLWZvcm0gaW5wdXRbdHlwZT0iaW1hZ2UiXSwubmF2YmFyLWZvcm0gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwubmF2YmFyLWZvcm0gaW5wdXRbdHlwZT0icmFkaW8iXXttYXJnaW4tdG9wOjNweDt9DQoubmF2YmFyLWZvcm0gLmlucHV0LWFwcGVuZCwubmF2YmFyLWZvcm0gLmlucHV0LXByZXBlbmR7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwO30NCi5uYXZiYXItZm9ybSAuaW5wdXQtYXBwZW5kIGlucHV0LC5uYXZiYXItZm9ybSAuaW5wdXQtcHJlcGVuZCBpbnB1dHttYXJnaW4tdG9wOjA7fQ0KLm5hdmJhci1zZWFyY2h7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDttYXJnaW4tdG9wOjZweDttYXJnaW4tYm90dG9tOjA7fQ0KLm5hdmJhci1zZWFyY2ggLnNlYXJjaC1xdWVyeXtwYWRkaW5nOjRweCA5cHg7Zm9udC1mYW1pbHk6IkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTNweDtmb250LXdlaWdodDpub3JtYWw7bGluZS1oZWlnaHQ6MTtjb2xvcjojZmZmZmZmO2JhY2tncm91bmQtY29sb3I6IzYyNjI2Mjtib3JkZXI6MXB4IHNvbGlkICMxNTE1MTU7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOy13ZWJraXQtdHJhbnNpdGlvbjpub25lOy1tb3otdHJhbnNpdGlvbjpub25lOy1tcy10cmFuc2l0aW9uOm5vbmU7LW8tdHJhbnNpdGlvbjpub25lO3RyYW5zaXRpb246bm9uZTt9DQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I2NjY2NjYzt9DQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojY2NjY2NjO30NCi5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2NjY2NjYzt9DQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5OmZvY3VzLC5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnkuZm9jdXNlZHtwYWRkaW5nOjVweCAxMHB4O2NvbG9yOiMzMzMzMzM7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmZmZmO2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtib3JkZXI6MDtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTstbW96LWJveC1zaGFkb3c6MCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO2JveC1zaGFkb3c6MCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO30NCi5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItZml4ZWQtYm90dG9te3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjA7bGVmdDowO3otaW5kZXg6MTAzMDttYXJnaW4tYm90dG9tOjA7fQ0KLm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1pbm5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLWlubmVye3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MDstd2Via2l0LWJvcmRlci1yYWRpdXM6MDstbW96LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7fQ0KLm5hdmJhci1maXhlZC10b3AgLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVye3dpZHRoOjk0MHB4O30NCi5uYXZiYXItZml4ZWQtdG9we3RvcDowO30NCi5uYXZiYXItZml4ZWQtYm90dG9te2JvdHRvbTowO30NCi5uYXZiYXIgLm5hdntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjA7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O21hcmdpbjowIDEwcHggMCAwO30NCi5uYXZiYXIgLm5hdi5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O30NCi5uYXZiYXIgLm5hdj5saXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7fQ0KLm5hdmJhciAubmF2PmxpPmF7ZmxvYXQ6bm9uZTtwYWRkaW5nOjlweCAxMHB4IDExcHg7bGluZS1oZWlnaHQ6MTlweDtjb2xvcjojOTk5OTk5O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7fQ0KLm5hdmJhciAuYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NHB4IDEwcHggNHB4O21hcmdpbjo1cHggNXB4IDZweDtsaW5lLWhlaWdodDoxOHB4O30NCi5uYXZiYXIgLmJ0bi1ncm91cHtwYWRkaW5nOjVweCA1cHggNnB4O21hcmdpbjowO30NCi5uYXZiYXIgLm5hdj5saT5hOmhvdmVye2NvbG9yOiNmZmZmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt9DQoubmF2YmFyIC5uYXYgLmFjdGl2ZT5hLC5uYXZiYXIgLm5hdiAuYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7fQ0KLm5hdmJhciAuZGl2aWRlci12ZXJ0aWNhbHt3aWR0aDoxcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOjAgOXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMzMzMzMzO30NCi5uYXZiYXIgLm5hdi5wdWxsLXJpZ2h0e21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjEwcHg7fQ0KLm5hdmJhciAuYnRuLW5hdmJhcntkaXNwbGF5Om5vbmU7ZmxvYXQ6cmlnaHQ7cGFkZGluZzo3cHggMTBweDttYXJnaW4tcmlnaHQ6NXB4O21hcmdpbi1sZWZ0OjVweDtiYWNrZ3JvdW5kLWNvbG9yOiMyYzJjMmM7KmJhY2tncm91bmQtY29sb3I6IzIyMjIyMjtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzMzMzLCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjMzMzMzMzKSwgdG8oIzIyMjIyMikpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzMzMzLCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojMjIyMjIyICMyMjIyMjIgIzAwMDAwMDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzMzMzMzMycsIGVuZENvbG9yc3RyPScjMjIyMjIyJywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3NSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpO30NCi5uYXZiYXIgLmJ0bi1uYXZiYXI6aG92ZXIsLm5hdmJhciAuYnRuLW5hdmJhcjphY3RpdmUsLm5hdmJhciAuYnRuLW5hdmJhci5hY3RpdmUsLm5hdmJhciAuYnRuLW5hdmJhci5kaXNhYmxlZCwubmF2YmFyIC5idG4tbmF2YmFyW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7KmJhY2tncm91bmQtY29sb3I6IzE1MTUxNTt9DQoubmF2YmFyIC5idG4tbmF2YmFyOmFjdGl2ZSwubmF2YmFyIC5idG4tbmF2YmFyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDggXDk7fQ0KLm5hdmJhciAuYnRuLW5hdmJhciAuaWNvbi1iYXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxOHB4O2hlaWdodDoycHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1Oy13ZWJraXQtYm9yZGVyLXJhZGl1czoxcHg7LW1vei1ib3JkZXItcmFkaXVzOjFweDtib3JkZXItcmFkaXVzOjFweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpOy1tb3otYm94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7Ym94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7fQ0KLmJ0bi1uYXZiYXIgLmljb24tYmFyKy5pY29uLWJhcnttYXJnaW4tdG9wOjNweDt9DQoubmF2YmFyIC5kcm9wZG93bi1tZW51OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTdweDtsZWZ0OjlweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmlnaHQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206N3B4IHNvbGlkICNjY2M7Ym9yZGVyLWxlZnQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLCAwLCAwLCAwLjIpO2NvbnRlbnQ6Jyc7fQ0KLm5hdmJhciAuZHJvcGRvd24tbWVudTphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTZweDtsZWZ0OjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJpZ2h0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjZweCBzb2xpZCAjZmZmZmZmO2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtjb250ZW50OicnO30NCi5uYXZiYXItZml4ZWQtYm90dG9tIC5kcm9wZG93bi1tZW51OmJlZm9yZXt0b3A6YXV0bztib3R0b206LTdweDtib3JkZXItdG9wOjdweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b206MDtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4yKTt9DQoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24tbWVudTphZnRlcnt0b3A6YXV0bztib3R0b206LTZweDtib3JkZXItdG9wOjZweCBzb2xpZCAjZmZmZmZmO2JvcmRlci1ib3R0b206MDt9DQoubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXQsLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4gLmNhcmV0e2JvcmRlci10b3AtY29sb3I6I2ZmZmZmZjtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZmZmY7fQ0KLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLmFjdGl2ZSAuY2FyZXR7b3BhY2l0eToxO2ZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7fQ0KLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZSwubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24uYWN0aXZlPi5kcm9wZG93bi10b2dnbGUsLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4uYWN0aXZlPi5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt9DQoubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24uYWN0aXZlPi5kcm9wZG93bi10b2dnbGU6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt9DQoubmF2YmFyIC5wdWxsLXJpZ2h0IC5kcm9wZG93bi1tZW51LC5uYXZiYXIgLmRyb3Bkb3duLW1lbnUucHVsbC1yaWdodHtyaWdodDowO2xlZnQ6YXV0bzt9DQoubmF2YmFyIC5wdWxsLXJpZ2h0IC5kcm9wZG93bi1tZW51OmJlZm9yZSwubmF2YmFyIC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQ6YmVmb3Jle3JpZ2h0OjEycHg7bGVmdDphdXRvO30NCi5uYXZiYXIgLnB1bGwtcmlnaHQgLmRyb3Bkb3duLW1lbnU6YWZ0ZXIsLm5hdmJhciAuZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0OmFmdGVye3JpZ2h0OjEzcHg7bGVmdDphdXRvO30NCi5icmVhZGNydW1ie3BhZGRpbmc6N3B4IDE0cHg7bWFyZ2luOjAgMCAxOHB4O2xpc3Qtc3R5bGU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmYmZiZmI7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNmNWY1ZjUpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNmNWY1ZjUpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCNmZmZmZmYpLCB0bygjZjVmNWY1KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNmNWY1ZjUpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZjVmNWY1KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXI6MXB4IHNvbGlkICNkZGQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmZmZmZicsIGVuZENvbG9yc3RyPScjZjVmNWY1JywgR3JhZGllbnRUeXBlPTApOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZmZmY7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgI2ZmZmZmZjtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgI2ZmZmZmZjt9DQouYnJlYWRjcnVtYiBsaXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmZmZmOyp6b29tOjE7fQ0KLmJyZWFkY3J1bWIgLmRpdmlkZXJ7cGFkZGluZzowIDVweDtjb2xvcjojOTk5OTk5O30NCi5icmVhZGNydW1iIC5hY3RpdmUgYXtjb2xvcjojMzMzMzMzO30NCi5wYWdpbmF0aW9ue2hlaWdodDozNnB4O21hcmdpbjoxOHB4IDA7fQ0KLnBhZ2luYXRpb24gdWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowOy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDsqem9vbToxOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTstbW96LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTt9DQoucGFnaW5hdGlvbiBsaXtkaXNwbGF5OmlubGluZTt9DQoucGFnaW5hdGlvbiBhe2Zsb2F0OmxlZnQ7cGFkZGluZzowIDE0cHg7bGluZS1oZWlnaHQ6MzRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLWxlZnQtd2lkdGg6MDt9DQoucGFnaW5hdGlvbiBhOmhvdmVyLC5wYWdpbmF0aW9uIC5hY3RpdmUgYXtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7fQ0KLnBhZ2luYXRpb24gLmFjdGl2ZSBhe2NvbG9yOiM5OTk5OTk7Y3Vyc29yOmRlZmF1bHQ7fQ0KLnBhZ2luYXRpb24gLmRpc2FibGVkIHNwYW4sLnBhZ2luYXRpb24gLmRpc2FibGVkIGEsLnBhZ2luYXRpb24gLmRpc2FibGVkIGE6aG92ZXJ7Y29sb3I6Izk5OTk5OTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O30NCi5wYWdpbmF0aW9uIGxpOmZpcnN0LWNoaWxkIGF7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7Ym9yZGVyLXJhZGl1czozcHggMCAwIDNweDt9DQoucGFnaW5hdGlvbiBsaTpsYXN0LWNoaWxkIGF7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwOy1tb3otYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO30NCi5wYWdpbmF0aW9uLWNlbnRlcmVke3RleHQtYWxpZ246Y2VudGVyO30NCi5wYWdpbmF0aW9uLXJpZ2h0e3RleHQtYWxpZ246cmlnaHQ7fQ0KLnBhZ2Vye21hcmdpbi1ib3R0b206MThweDttYXJnaW4tbGVmdDowO3RleHQtYWxpZ246Y2VudGVyO2xpc3Qtc3R5bGU6bm9uZTsqem9vbToxO30NCi5wYWdlcjpiZWZvcmUsLnBhZ2VyOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9DQoucGFnZXI6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQoucGFnZXIgbGl7ZGlzcGxheTppbmxpbmU7fQ0KLnBhZ2VyIGF7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo1cHggMTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtYm9yZGVyLXJhZGl1czoxNXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxNXB4O2JvcmRlci1yYWRpdXM6MTVweDt9DQoucGFnZXIgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7fQ0KLnBhZ2VyIC5uZXh0IGF7ZmxvYXQ6cmlnaHQ7fQ0KLnBhZ2VyIC5wcmV2aW91cyBhe2Zsb2F0OmxlZnQ7fQ0KLnBhZ2VyIC5kaXNhYmxlZCBhLC5wYWdlciAuZGlzYWJsZWQgYTpob3Zlcntjb2xvcjojOTk5OTk5O2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2ZmZjt9DQoubW9kYWwtb3BlbiAuZHJvcGRvd24tbWVudXt6LWluZGV4OjIwNTA7fQ0KLm1vZGFsLW9wZW4gLmRyb3Bkb3duLm9wZW57KnotaW5kZXg6MjA1MDt9DQoubW9kYWwtb3BlbiAucG9wb3Zlcnt6LWluZGV4OjIwNjA7fQ0KLm1vZGFsLW9wZW4gLnRvb2x0aXB7ei1pbmRleDoyMDcwO30NCi5tb2RhbC1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNDA7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwO30NCi5tb2RhbC1iYWNrZHJvcC5mYWRle29wYWNpdHk6MDt9DQoubW9kYWwtYmFja2Ryb3AsLm1vZGFsLWJhY2tkcm9wLmZhZGUuaW57b3BhY2l0eTowLjg7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO30NCi5tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6NTAlO2xlZnQ6NTAlO3otaW5kZXg6MTA1MDt3aWR0aDo1NjBweDttYXJnaW46LTI1MHB4IDAgMCAtMjgwcHg7b3ZlcmZsb3c6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjMpOypib3JkZXI6MXB4IHNvbGlkICM5OTk7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpOy1tb3otYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpO2JveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDstbW96LWJhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7fQ0KLm1vZGFsLmZhZGV7dG9wOi0yNSU7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBsaW5lYXIsdG9wIDAuM3MgZWFzZS1vdXQ7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBsaW5lYXIsdG9wIDAuM3MgZWFzZS1vdXQ7LW1zLXRyYW5zaXRpb246b3BhY2l0eSAwLjNzIGxpbmVhcix0b3AgMC4zcyBlYXNlLW91dDstby10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBsaW5lYXIsdG9wIDAuM3MgZWFzZS1vdXQ7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgbGluZWFyLHRvcCAwLjNzIGVhc2Utb3V0O30NCi5tb2RhbC5mYWRlLmlue3RvcDo1MCU7fQ0KLm1vZGFsLWhlYWRlcntwYWRkaW5nOjlweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7fQ0KLm1vZGFsLWhlYWRlciAuY2xvc2V7bWFyZ2luLXRvcDoycHg7fQ0KLm1vZGFsLWJvZHl7bWF4LWhlaWdodDo0MDBweDtwYWRkaW5nOjE1cHg7b3ZlcmZsb3cteTphdXRvO30NCi5tb2RhbC1mb3Jte21hcmdpbi1ib3R0b206MDt9DQoubW9kYWwtZm9vdGVye3BhZGRpbmc6MTRweCAxNXB4IDE1cHg7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246cmlnaHQ7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgNnB4IDZweDtib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4Oyp6b29tOjE7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgI2ZmZmZmZjstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCAjZmZmZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCAjZmZmZmZmO30NCi5tb2RhbC1mb290ZXI6YmVmb3JlLC5tb2RhbC1mb290ZXI6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi5tb2RhbC1mb290ZXI6YWZ0ZXJ7Y2xlYXI6Ym90aDt9DQoubW9kYWwtZm9vdGVyIC5idG4rLmJ0bnttYXJnaW4tYm90dG9tOjA7bWFyZ2luLWxlZnQ6NXB4O30NCi5tb2RhbC1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweDt9DQoudG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMjA7ZGlzcGxheTpibG9jaztwYWRkaW5nOjVweDtmb250LXNpemU6MTFweDtvcGFjaXR5OjA7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCk7dmlzaWJpbGl0eTp2aXNpYmxlO30NCi50b29sdGlwLmlue29wYWNpdHk6MC44O2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTt9DQoudG9vbHRpcC50b3B7bWFyZ2luLXRvcDotMnB4O30NCi50b29sdGlwLnJpZ2h0e21hcmdpbi1sZWZ0OjJweDt9DQoudG9vbHRpcC5ib3R0b217bWFyZ2luLXRvcDoycHg7fQ0KLnRvb2x0aXAubGVmdHttYXJnaW4tbGVmdDotMnB4O30NCi50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvd3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQ0KLnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjVweCBzb2xpZCAjMDAwMDAwO30NCi50b29sdGlwLmJvdHRvbSAudG9vbHRpcC1hcnJvd3t0b3A6MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgIzAwMDAwMDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQ0KLnRvb2x0aXAucmlnaHQgLnRvb2x0aXAtYXJyb3d7dG9wOjUwJTtsZWZ0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgIzAwMDAwMDtib3JkZXItYm90dG9tOjVweCBzb2xpZCB0cmFuc3BhcmVudDt9DQoudG9vbHRpcC1pbm5lcnttYXgtd2lkdGg6MjAwcHg7cGFkZGluZzozcHggOHB4O2NvbG9yOiNmZmZmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9DQoudG9vbHRpcC1hcnJvd3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowO2hlaWdodDowO30NCi5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwMTA7ZGlzcGxheTpub25lO3BhZGRpbmc6NXB4O30NCi5wb3BvdmVyLnRvcHttYXJnaW4tdG9wOi01cHg7fQ0KLnBvcG92ZXIucmlnaHR7bWFyZ2luLWxlZnQ6NXB4O30NCi5wb3BvdmVyLmJvdHRvbXttYXJnaW4tdG9wOjVweDt9DQoucG9wb3Zlci5sZWZ0e21hcmdpbi1sZWZ0Oi01cHg7fQ0KLnBvcG92ZXIudG9wIC5hcnJvd3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQ0KLnBvcG92ZXIucmlnaHQgLmFycm93e3RvcDo1MCU7bGVmdDowO21hcmdpbi10b3A6LTVweDtib3JkZXItdG9wOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQ0KLnBvcG92ZXIuYm90dG9tIC5hcnJvd3t0b3A6MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgIzAwMDAwMDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQ0KLnBvcG92ZXIubGVmdCAuYXJyb3d7dG9wOjUwJTtyaWdodDowO21hcmdpbi10b3A6LTVweDtib3JkZXItdG9wOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo1cHggc29saWQgIzAwMDAwMDt9DQoucG9wb3ZlciAuYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDt9DQoucG9wb3Zlci1pbm5lcnt3aWR0aDoyODBweDtwYWRkaW5nOjNweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojMDAwMDAwO2JhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwLjgpOy13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzOjZweDtib3JkZXItcmFkaXVzOjZweDstd2Via2l0LWJveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTstbW96LWJveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTtib3gtc2hhZG93OjAgM3B4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7fQ0KLnBvcG92ZXItdGl0bGV7cGFkZGluZzo5cHggMTVweDtsaW5lLWhlaWdodDoxO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVlOy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7Ym9yZGVyLXJhZGl1czozcHggM3B4IDAgMDt9DQoucG9wb3Zlci1jb250ZW50e3BhZGRpbmc6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAzcHggM3B4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgM3B4IDNweDtib3JkZXItcmFkaXVzOjAgMCAzcHggM3B4Oy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94Oy1tb3otYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDt9DQoucG9wb3Zlci1jb250ZW50IHAsLnBvcG92ZXItY29udGVudCB1bCwucG9wb3Zlci1jb250ZW50IG9se21hcmdpbi1ib3R0b206MDt9DQoudGh1bWJuYWlsc3ttYXJnaW4tbGVmdDotMjBweDtsaXN0LXN0eWxlOm5vbmU7Knpvb206MTt9DQoudGh1bWJuYWlsczpiZWZvcmUsLnRodW1ibmFpbHM6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30NCi50aHVtYm5haWxzOmFmdGVye2NsZWFyOmJvdGg7fQ0KLnJvdy1mbHVpZCAudGh1bWJuYWlsc3ttYXJnaW4tbGVmdDowO30NCi50aHVtYm5haWxzPmxpe2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbToxOHB4O21hcmdpbi1sZWZ0OjIwcHg7fQ0KLnRodW1ibmFpbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NHB4O2xpbmUtaGVpZ2h0OjE7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOy1tb3otYm94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7fQ0KYS50aHVtYm5haWw6aG92ZXJ7Ym9yZGVyLWNvbG9yOiMwMDg4Y2M7LXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDRweCByZ2JhKDAsIDEwNSwgMjE0LCAwLjI1KTstbW96LWJveC1zaGFkb3c6MCAxcHggNHB4IHJnYmEoMCwgMTA1LCAyMTQsIDAuMjUpO2JveC1zaGFkb3c6MCAxcHggNHB4IHJnYmEoMCwgMTA1LCAyMTQsIDAuMjUpO30NCi50aHVtYm5haWw+aW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzt9DQoudGh1bWJuYWlsIC5jYXB0aW9ue3BhZGRpbmc6OXB4O30NCi5sYWJlbCwuYmFkZ2V7Zm9udC1zaXplOjEwLjk5OHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MTRweDtjb2xvcjojZmZmZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2JhY2tncm91bmQtY29sb3I6Izk5OTk5OTt9DQoubGFiZWx7cGFkZGluZzoxcHggNHB4IDJweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7fQ0KLmJhZGdle3BhZGRpbmc6MXB4IDlweCAycHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjlweDstbW96LWJvcmRlci1yYWRpdXM6OXB4O2JvcmRlci1yYWRpdXM6OXB4O30NCmEubGFiZWw6aG92ZXIsYS5iYWRnZTpob3Zlcntjb2xvcjojZmZmZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO30NCi5sYWJlbC1pbXBvcnRhbnQsLmJhZGdlLWltcG9ydGFudHtiYWNrZ3JvdW5kLWNvbG9yOiNiOTRhNDg7fQ0KLmxhYmVsLWltcG9ydGFudFtocmVmXSwuYmFkZ2UtaW1wb3J0YW50W2hyZWZde2JhY2tncm91bmQtY29sb3I6Izk1M2IzOTt9DQoubGFiZWwtd2FybmluZywuYmFkZ2Utd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmODk0MDY7fQ0KLmxhYmVsLXdhcm5pbmdbaHJlZl0sLmJhZGdlLXdhcm5pbmdbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojYzY3NjA1O30NCi5sYWJlbC1zdWNjZXNzLC5iYWRnZS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzQ2ODg0Nzt9DQoubGFiZWwtc3VjY2Vzc1tocmVmXSwuYmFkZ2Utc3VjY2Vzc1tocmVmXXtiYWNrZ3JvdW5kLWNvbG9yOiMzNTY2MzU7fQ0KLmxhYmVsLWluZm8sLmJhZGdlLWluZm97YmFja2dyb3VuZC1jb2xvcjojM2E4N2FkO30NCi5sYWJlbC1pbmZvW2hyZWZdLC5iYWRnZS1pbmZvW2hyZWZde2JhY2tncm91bmQtY29sb3I6IzJkNjk4Nzt9DQoubGFiZWwtaW52ZXJzZSwuYmFkZ2UtaW52ZXJzZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMzMzMzM7fQ0KLmxhYmVsLWludmVyc2VbaHJlZl0sLmJhZGdlLWludmVyc2VbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO30NCkAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwO30gdG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7fX1ALW1vei1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMDt9IHRve2JhY2tncm91bmQtcG9zaXRpb246MCAwO319QC1tcy1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMDt9IHRve2JhY2tncm91bmQtcG9zaXRpb246MCAwO319QC1vLWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246MCAwO30gdG97YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDA7fX1Aa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDA7fSB0b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDt9fS5wcm9ncmVzc3toZWlnaHQ6MThweDttYXJnaW4tYm90dG9tOjE4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSwgI2Y5ZjlmOSk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSwgI2Y5ZjlmOSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2Y1ZjVmNSksIHRvKCNmOWY5ZjkpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSwgI2Y5ZjlmOSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1LCAjZjlmOWY5KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICNmNWY1ZjUsICNmOWY5ZjkpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmNWY1ZjUnLCBlbmRDb2xvcnN0cj0nI2Y5ZjlmOScsIEdyYWRpZW50VHlwZT0wKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMSk7fQ0KLnByb2dyZXNzIC5iYXJ7d2lkdGg6MDtoZWlnaHQ6MThweDtmb250LXNpemU6MTJweDtjb2xvcjojZmZmZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7YmFja2dyb3VuZC1jb2xvcjojMGU5MGQyO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMTQ5YmRmLCAjMDQ4MGJlKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjMTQ5YmRmKSwgdG8oIzA0ODBiZSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMTQ5YmRmLCAjMDQ4MGJlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMxNDliZGYsICMwNDgwYmUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgIzE0OWJkZiwgIzA0ODBiZSk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzE0OWJkZiwgIzA0ODBiZSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMTQ5YmRmJywgZW5kQ29sb3JzdHI9JyMwNDgwYmUnLCBHcmFkaWVudFR5cGU9MCk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy1tcy1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdHJhbnNpdGlvbjp3aWR0aCAwLjZzIGVhc2U7LW1vei10cmFuc2l0aW9uOndpZHRoIDAuNnMgZWFzZTstbXMtdHJhbnNpdGlvbjp3aWR0aCAwLjZzIGVhc2U7LW8tdHJhbnNpdGlvbjp3aWR0aCAwLjZzIGVhc2U7dHJhbnNpdGlvbjp3aWR0aCAwLjZzIGVhc2U7fQ0KLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiMxNDliZGY7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4Oy1tb3otYmFja2dyb3VuZC1zaXplOjQwcHggNDBweDstby1iYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4O2JhY2tncm91bmQtc2l6ZTo0MHB4IDQwcHg7fQ0KLnByb2dyZXNzLmFjdGl2ZSAuYmFyey13ZWJraXQtYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTstbW96LWFuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7LW1zLWFuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7LW8tYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlO30NCi5wcm9ncmVzcy1kYW5nZXIgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNkZDUxNGM7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNjNDNjMzUpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNjNDNjMzUpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCNlZTVmNWIpLCB0bygjYzQzYzM1KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNjNDNjMzUpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYzQzYzM1KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNlZTVmNWInLCBlbmRDb2xvcnN0cj0nI2M0M2MzNScsIEdyYWRpZW50VHlwZT0wKTt9DQoucHJvZ3Jlc3MtZGFuZ2VyLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNlZTVmNWI7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7fQ0KLnByb2dyZXNzLXN1Y2Nlc3MgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiM1ZWI5NWU7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1N2E5NTcpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1N2E5NTcpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCM2MmM0NjIpLCB0bygjNTdhOTU3KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1N2E5NTcpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzU3YTk1Nyk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM2MmM0NjInLCBlbmRDb2xvcnN0cj0nIzU3YTk1NycsIEdyYWRpZW50VHlwZT0wKTt9DQoucHJvZ3Jlc3Mtc3VjY2Vzcy5wcm9ncmVzcy1zdHJpcGVkIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojNjJjNDYyO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNzUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO30NCi5wcm9ncmVzcy1pbmZvIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojNGJiMWNmO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjNWJjMGRlKSwgdG8oIzMzOWJiOSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzMzOWJiOSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjNWJjMGRlJywgZW5kQ29sb3JzdHI9JyMzMzliYjknLCBHcmFkaWVudFR5cGU9MCk7fQ0KLnByb2dyZXNzLWluZm8ucHJvZ3Jlc3Mtc3RyaXBlZCAuYmFye2JhY2tncm91bmQtY29sb3I6IzViYzBkZTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTt9DQoucHJvZ3Jlc3Mtd2FybmluZyAuYmFye2JhY2tncm91bmQtY29sb3I6I2ZhYTczMjtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oI2ZiYjQ1MCksIHRvKCNmODk0MDYpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmJiNDUwLCAjZjg5NDA2KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZiYjQ1MCcsIGVuZENvbG9yc3RyPScjZjg5NDA2JywgR3JhZGllbnRUeXBlPTApO30NCi5wcm9ncmVzcy13YXJuaW5nLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmYmI0NTA7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7fQ0KLmFjY29yZGlvbnttYXJnaW4tYm90dG9tOjE4cHg7fQ0KLmFjY29yZGlvbi1ncm91cHttYXJnaW4tYm90dG9tOjJweDtib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30NCi5hY2NvcmRpb24taGVhZGluZ3tib3JkZXItYm90dG9tOjA7fQ0KLmFjY29yZGlvbi1oZWFkaW5nIC5hY2NvcmRpb24tdG9nZ2xle2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo4cHggMTVweDt9DQouYWNjb3JkaW9uLXRvZ2dsZXtjdXJzb3I6cG9pbnRlcjt9DQouYWNjb3JkaW9uLWlubmVye3BhZGRpbmc6OXB4IDE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTt9DQouY2Fyb3VzZWx7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWJvdHRvbToxOHB4O2xpbmUtaGVpZ2h0OjE7fQ0KLmNhcm91c2VsLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO30NCi5jYXJvdXNlbCAuaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7LXdlYmtpdC10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDstbW96LXRyYW5zaXRpb246MC42cyBlYXNlLWluLW91dCBsZWZ0Oy1tcy10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDstby10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDt0cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDt9DQouY2Fyb3VzZWwgLml0ZW0+aW1ne2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MTt9DQouY2Fyb3VzZWwgLmFjdGl2ZSwuY2Fyb3VzZWwgLm5leHQsLmNhcm91c2VsIC5wcmV2e2Rpc3BsYXk6YmxvY2s7fQ0KLmNhcm91c2VsIC5hY3RpdmV7bGVmdDowO30NCi5jYXJvdXNlbCAubmV4dCwuY2Fyb3VzZWwgLnByZXZ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTt9DQouY2Fyb3VzZWwgLm5leHR7bGVmdDoxMDAlO30NCi5jYXJvdXNlbCAucHJldntsZWZ0Oi0xMDAlO30NCi5jYXJvdXNlbCAubmV4dC5sZWZ0LC5jYXJvdXNlbCAucHJldi5yaWdodHtsZWZ0OjA7fQ0KLmNhcm91c2VsIC5hY3RpdmUubGVmdHtsZWZ0Oi0xMDAlO30NCi5jYXJvdXNlbCAuYWN0aXZlLnJpZ2h0e2xlZnQ6MTAwJTt9DQouY2Fyb3VzZWwtY29udHJvbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NDAlO2xlZnQ6MTVweDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbi10b3A6LTIwcHg7Zm9udC1zaXplOjYwcHg7Zm9udC13ZWlnaHQ6MTAwO2xpbmUtaGVpZ2h0OjMwcHg7Y29sb3I6I2ZmZmZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOiMyMjIyMjI7Ym9yZGVyOjNweCBzb2xpZCAjZmZmZmZmOy13ZWJraXQtYm9yZGVyLXJhZGl1czoyM3B4Oy1tb3otYm9yZGVyLXJhZGl1czoyM3B4O2JvcmRlci1yYWRpdXM6MjNweDtvcGFjaXR5OjAuNTtmaWx0ZXI6YWxwaGEob3BhY2l0eT01MCk7fQ0KLmNhcm91c2VsLWNvbnRyb2wucmlnaHR7cmlnaHQ6MTVweDtsZWZ0OmF1dG87fQ0KLmNhcm91c2VsLWNvbnRyb2w6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvcGFjaXR5OjAuOTtmaWx0ZXI6YWxwaGEob3BhY2l0eT05MCk7fQ0KLmNhcm91c2VsLWNhcHRpb257cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7cGFkZGluZzoxMHB4IDE1cHggNXB4O2JhY2tncm91bmQ6IzMzMzMzMztiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMC43NSk7fQ0KLmNhcm91c2VsLWNhcHRpb24gaDQsLmNhcm91c2VsLWNhcHRpb24gcHtjb2xvcjojZmZmZmZmO30NCi5oZXJvLXVuaXR7cGFkZGluZzo2MHB4O21hcmdpbi1ib3R0b206MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4O30NCi5oZXJvLXVuaXQgaDF7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZTo2MHB4O2xpbmUtaGVpZ2h0OjE7bGV0dGVyLXNwYWNpbmc6LTFweDtjb2xvcjppbmhlcml0O30NCi5oZXJvLXVuaXQgcHtmb250LXNpemU6MThweDtmb250LXdlaWdodDoyMDA7bGluZS1oZWlnaHQ6MjdweDtjb2xvcjppbmhlcml0O30NCi5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O30NCi5wdWxsLWxlZnR7ZmxvYXQ6bGVmdDt9DQouaGlkZXtkaXNwbGF5Om5vbmU7fQ0KLnNob3d7ZGlzcGxheTpibG9jazt9DQouaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVuO30NCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/jquery.fileupload-ui.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsNCi8qDQogKiBqUXVlcnkgRmlsZSBVcGxvYWQgVUkgUGx1Z2luIENTUyA2LjMNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQouZmlsZWlucHV0LWJ1dHRvbiB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgZmxvYXQ6IGxlZnQ7DQogIG1hcmdpbi1yaWdodDogNHB4Ow0KfQ0KLmZpbGVpbnB1dC1idXR0b24gaW5wdXQgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIHRvcDogMDsNCiAgcmlnaHQ6IDA7DQogIG1hcmdpbjogMDsNCiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDsNCiAgYm9yZGVyLXdpZHRoOiAwIDAgMTAwcHggMjAwcHg7DQogIG9wYWNpdHk6IDA7DQogIGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsNCiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzAwcHgsIDApIHNjYWxlKDQpOw0KICBkaXJlY3Rpb246IGx0cjsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KLmZpbGV1cGxvYWQtYnV0dG9uYmFyIC5idG4sDQouZmlsZXVwbG9hZC1idXR0b25iYXIgLnRvZ2dsZSB7DQogIG1hcmdpbi1ib3R0b206IDVweDsNCn0NCi5maWxlcyAucHJvZ3Jlc3Mgew0KICB3aWR0aDogMjAwcHg7DQp9DQoucHJvZ3Jlc3MtYW5pbWF0ZWQgLmJhciB7DQogIGJhY2tncm91bmQ6IHVybCguLi9pbWcvcHJvZ3Jlc3NiYXIuZ2lmKSAhaW1wb3J0YW50Ow0KICBmaWx0ZXI6IG5vbmU7DQp9DQouZmlsZXVwbG9hZC1sb2FkaW5nIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBsZWZ0OiA1MCU7DQogIHdpZHRoOiAxMjhweDsNCiAgaGVpZ2h0OiAxMjhweDsNCiAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9sb2FkaW5nLmdpZikgY2VudGVyIG5vLXJlcGVhdDsNCiAgZGlzcGxheTogbm9uZTsNCn0NCi5maWxldXBsb2FkLXByb2Nlc3NpbmcgLmZpbGV1cGxvYWQtbG9hZGluZyB7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQovKiBGaXggZm9yIElFIDY6ICovDQoqaHRtbCAuZmlsZWlucHV0LWJ1dHRvbiB7DQogIGxpbmUtaGVpZ2h0OiAyMnB4Ow0KICBtYXJnaW46IDFweCAtM3B4IDAgMDsNCn0NCg0KLyogRml4IGZvciBJRSA3OiAqLw0KKitodG1sIC5maWxlaW5wdXQtYnV0dG9uIHsNCiAgbWFyZ2luOiAxcHggMCAwIDA7DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkgew0KICAuZmlsZXMgLmJ0biBzcGFuIHsNCiAgICBkaXNwbGF5OiBub25lOw0KICB9DQogIC5maWxlcyAucHJldmlldyAqIHsNCiAgICB3aWR0aDogNDBweDsNCiAgfQ0KICAuZmlsZXMgLm5hbWUgKiB7DQogICAgd2lkdGg6IDgwcHg7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsNCiAgfQ0KICAuZmlsZXMgLnByb2dyZXNzIHsNCiAgICB3aWR0aDogMjBweDsNCiAgfQ0KICAuZmlsZXMgLmRlbGV0ZSB7DQogICAgd2lkdGg6IDYwcHg7DQogIH0NCn0NCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsNCi8qDQogKiBqUXVlcnkgRmlsZSBVcGxvYWQgUGx1Z2luIENTUyBFeGFtcGxlIDEuMA0KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkDQogKg0KICogQ29weXJpZ2h0IDIwMTIsIFNlYmFzdGlhbiBUc2NoYW4NCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQNCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6DQogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KICovDQoNCmJvZHl7DQogIHBhZGRpbmctdG9wOiA2MHB4Ow0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/img/glyphicons-halflings-white.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAdUAAACfCAMAAACY07N7AAAC2VBMVEX///8AAAAAAAD5+fn///8AAAD////9/f1tbW0AAAD///////////8AAAAAAAD////w8PD+/v729vYAAAD8/PwAAAAAAAD////////a2toAAADCwsL09PT////////09PT39/f///8AAAAAAACzs7P9/f0AAADi4uKwsLD////////7+/vn5+f+/v7///8AAADt7e0AAADPz88AAAD9/f329vbt7e37+/vn5+f6+vrh4eGSkpL+/v7+/v7BwcGYmJh0dHTh4eHQ0NAAAADz8/O7u7uhoaGAgID9/f3U1NRiYmL////V1dX4+Pjc3Nz6+vr7+/vp6en7+/v9/f39/f3R0dHy8vL8/Pz4+Pjr6+v8/Py2trbGxsbl5eXu7u719fX9/f1lZWVnZ2fw8PC2trbg4OD39/f6+vrp6enl5eX6+vr4+PjLy8v///+EhITx8fF4eHj39/fd3d35+fnIyMjS0tLs7Oz6+vre3t7i4uLm5ubz8/Obm5uoqKilpaXc3Nzu7u7////x8fHJycnw8PD////////e3t7Gxsa8vLzr6+vW1tbQ0NDi4uL5+fn09PTi4uLs7Oz19fW0tLT////9/f37+/v8/Pz6+vrm5uYAAADk5OT8/Pz39/ewsLCZmZn9/f3s7Oz8/PzBwcHp6en////a2trw8PDw8PD19fXx8fH+/v74+Pj+/v6Ojo7i4uL7+/v5+fnc3Nz////y8vL6+vqfn5/t7e339/f29vbo6Ojz8/P6+vr19fX19fWmpqbLy8v6+vr4+PjT09Pr6+v6+vrr6+uqqqrz8/Pt7e2ioqLPz8/a2trW1taioqLr6+vi4uL5+flVVVXNzc3////W1tbj4+Ph4eHq6ur8/Pz////29vb7+/vz8/P09PTMzMz////////5+fn19fX////y8vL9/f0AAADZ2dn8/Pz7+/v8/Pzp6em/v7/7+/vq6urp6en+/v7////4ck/mAAAA8nRSTlMAGgDUzwIP8SMQ759fCgUvqfDGFeIYA78fbxNTt98/hsV/BhdD4Q1rRI+vwo3ATxJTD18IoKWasozTETbQ4D40IX5hC6dAMR7RXydvEsRuotKLkZCATYahkzOxQlFqmbZwJiUhFWy1wyJYcXI7gB2XIEFbgjxg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]]></data>
	</file>
	<file>
	  <filename>/jqfu/img/glyphicons-halflings.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAdUAAACfCAQAAAAFBIvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZGMjM5QjMzN0VCMTExRTE4MTlBQjZENkFGQkE4NDFGIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZGMjM5QjMyN0VCMTExRTE4MTlBQjZENkFGQkE4NDFGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkM3RjExNzQwNzIwNjgxMTg4QzZCNDlBQkI4MTk1Q0EiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDM4MDExNzQw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]]></data>
	</file>
	<file>
	  <filename>/jqfu/img/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/jqfu/img/progressbar.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/jqfu/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/js/bootstrap-image-gallery.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Iix0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImxvYWQtaW1hZ2UiLCJib290c3RyYXAiXSxhKTphKHdpbmRvdy5qUXVlcnksd2luZG93LmxvYWRJbWFnZSl9KShmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IixhLmV4dGVuZChhLmZuLm1vZGFsLmRlZmF1bHRzLHtkZWxlZ2F0ZTpkb2N1bWVudCxzZWxlY3RvcjpudWxsLGZpbHRlcjoiKiIsaW5kZXg6MCxocmVmOm51bGwscHJlbG9hZFJhbmdlOjIsb2Zmc2V0V2lkdGg6MTAwLG9mZnNldEhlaWdodDoyMDAsY2FudmFzOiExLHNsaWRlc2hvdzowLGltYWdlQ2xpY2tEaXZpc2lvbjouNX0pO3ZhciBjPWEuZm4ubW9kYWwuQ29uc3RydWN0b3IucHJvdG90eXBlLnNob3csZD1hLmZuLm1vZGFsLkNvbnN0cnVjdG9yLnByb3RvdHlwZS5oaWRlO2EuZXh0ZW5kKGEuZm4ubW9kYWwuQ29uc3RydWN0b3IucHJvdG90eXBlLHtpbml0TGlua3M6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9dGhpcy5vcHRpb25zLGQ9Yy5zZWxlY3Rvcnx8ImFbZGF0YS10YXJnZXQ9IitjLnRhcmdldCsiXSI7dGhpcy4kbGlua3M9YShjLmRlbGVnYXRlKS5maW5kKGQpLmZpbHRlcihjLmZpbHRlcikuZWFjaChmdW5jdGlvbihhKXtiLmdldFVybCh0aGlzKT09PWMuaHJlZiYmKGMuaW5kZXg9YSl9KSx0aGlzLiRsaW5rc1tjLmluZGV4XXx8KGMuaW5kZXg9MCl9LGdldFVybDpmdW5jdGlvbihiKXtyZXR1cm4gYi5ocmVmfHxhKGIpLmRhdGEoImhyZWYiKX0sc3RhcnRTbGlkZVNob3c6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMub3B0aW9ucy5zbGlkZXNob3cmJih0aGlzLl9zbGlkZVNob3c9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLm5leHQoKX0sdGhpcy5vcHRpb25zLnNsaWRlc2hvdykpfSxzdG9wU2xpZGVTaG93OmZ1bmN0aW9uKCl7d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9zbGlkZVNob3cpfSx0b2dnbGVTbGlkZVNob3c6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1zbGlkZXNob3ciKTt0aGlzLm9wdGlvbnMuc2xpZGVzaG93Pyh0aGlzLm9wdGlvbnMuc2xpZGVzaG93PTAsdGhpcy5zdG9wU2xpZGVTaG93KCkpOih0aGlzLm9wdGlvbnMuc2xpZGVzaG93PWEuZGF0YSgic2xpZGVzaG93Iil8fDVlMyx0aGlzLnN0YXJ0U2xpZGVTaG93KCkpLGEuZmluZCgiaSIpLnRvZ2dsZUNsYXNzKCJpY29uLXBsYXkgaWNvbi1wYXVzZSIpfSxwcmVsb2FkSW1hZ2VzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGM9Yi5pbmRleCtiLnByZWxvYWRSYW5nZSsxLGQsZTtmb3IoZT1iLmluZGV4LWIucHJlbG9hZFJhbmdlO2U8YztlKz0xKWQ9dGhpcy4kbGlua3NbZV0sZCYmZSE9PWIuaW5kZXgmJmEoIjxpbWc+IikucHJvcCgic3JjIix0aGlzLmdldFVybChkKSl9LGxvYWRJbWFnZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz10aGlzLiRlbGVtZW50LGQ9dGhpcy5vcHRpb25zLmluZGV4LGU9dGhpcy5nZXRVcmwodGhpcy4kbGlua3NbZF0pLGY7dGhpcy5hYm9ydExvYWQoKSx0aGlzLnN0b3BTbGlkZVNob3coKSxjLnRyaWdnZXIoImJlZm9yZUxvYWQiKSx0aGlzLl9sb2FkaW5nVGltZW91dD13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2MuYWRkQ2xhc3MoIm1vZGFsLWxvYWRpbmciKX0sMTAwKSxmPWMuZmluZCgiLm1vZGFsLWltYWdlIikuY2hpbGRyZW4oKS5yZW1vdmVDbGFzcygiaW4iKSx3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2YucmVtb3ZlKCl9LDNlMyksYy5maW5kKCIubW9kYWwtdGl0bGUiKS50ZXh0KHRoaXMuJGxpbmtzW2RdLnRpdGxlKSxjLmZpbmQoIi5tb2RhbC1kb3dubG9hZCIpLnByb3AoImhyZWYiLGUpLHRoaXMuX2xvYWRpbmdJbWFnZT1iKGUsZnVuY3Rpb24oYil7YS5pbWc9Yix3aW5kb3cuY2xlYXJUaW1lb3V0KGEuX2xvYWRpbmdUaW1lb3V0KSxjLnJlbW92ZUNsYXNzKCJtb2RhbC1sb2FkaW5nIiksYy50cmlnZ2VyKCJsb2FkIiksYS5zaG93SW1hZ2UoYiksYS5zdGFydFNsaWRlU2hvdygpfSx0aGlzLl9sb2FkSW1hZ2VPcHRpb25zKSx0aGlzLnByZWxvYWRJbWFnZXMoKX0sc2hvd0ltYWdlOmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuJGVsZW1lbnQsZD1hLnN1cHBvcnQudHJhbnNpdGlvbiYmYy5oYXNDbGFzcygiZmFkZSIpLGU9ZD9jLmFuaW1hdGU6Yy5jc3MsZj1jLmZpbmQoIi5tb2RhbC1pbWFnZSIpLGcsaDtmLmNzcyh7d2lkdGg6Yi53aWR0aCxoZWlnaHQ6Yi5oZWlnaHR9KSxjLmZpbmQoIi5tb2RhbC10aXRsZSIpLmNzcyh7d2lkdGg6TWF0aC5tYXgoYi53aWR0aCwzODApfSksYSh3aW5kb3cpLndpZHRoKCk+NDgwJiYoZCYmKGc9Yy5jbG9uZSgpLmhpZGUoKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSksZS5jYWxsKGMuc3RvcCgpLHsibWFyZ2luLXRvcCI6LSgoZ3x8Yykub3V0ZXJIZWlnaHQoKS8yKSwibWFyZ2luLWxlZnQiOi0oKGd8fGMpLm91dGVyV2lkdGgoKS8yKX0pLGcmJmcucmVtb3ZlKCkpLGYuYXBwZW5kKGIpLGg9Yi5vZmZzZXRXaWR0aCxjLnRyaWdnZXIoImRpc3BsYXkiKSxkP2MuaXMoIjp2aXNpYmxlIik/YShiKS5vbihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oZCl7ZC50YXJnZXQ9PT1iJiYoYShiKS5vZmYoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSxjLnRyaWdnZXIoImRpc3BsYXllZCIpKX0pLmFkZENsYXNzKCJpbiIpOihhKGIpLmFkZENsYXNzKCJpbiIpLGMub25lKCJzaG93biIsZnVuY3Rpb24oKXtjLnRyaWdnZXIoImRpc3BsYXllZCIpfSkpOihhKGIpLmFkZENsYXNzKCJpbiIpLGMudHJpZ2dlcigiZGlzcGxheWVkIikpfSxhYm9ydExvYWQ6ZnVuY3Rpb24oKXt0aGlzLl9sb2FkaW5nSW1hZ2UmJih0aGlzLl9sb2FkaW5nSW1hZ2Uub25sb2FkPXRoaXMuX2xvYWRpbmdJbWFnZS5vbmVycm9yPW51bGwpLHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fbG9hZGluZ1RpbWVvdXQpfSxwcmV2OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO2EuaW5kZXgtPTEsYS5pbmRleDwwJiYoYS5pbmRleD10aGlzLiRsaW5rcy5sZW5ndGgtMSksdGhpcy5sb2FkSW1hZ2UoKX0sbmV4dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9uczthLmluZGV4Kz0xLGEuaW5kZXg+dGhpcy4kbGlua3MubGVuZ3RoLTEmJihhLmluZGV4PTApLHRoaXMubG9hZEltYWdlKCl9LGtleUhhbmRsZXI6ZnVuY3Rpb24oYSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6Y2FzZSAzODphLnByZXZlbnREZWZhdWx0KCksdGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTpjYXNlIDQwOmEucHJldmVudERlZmF1bHQoKSx0aGlzLm5leHQoKX19LHdoZWVsSGFuZGxlcjpmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksYT1hLm9yaWdpbmFsRXZlbnQsdGhpcy5fd2hlZWxDb3VudGVyPXRoaXMuX3doZWVsQ291bnRlcnx8MCx0aGlzLl93aGVlbENvdW50ZXIrPWEud2hlZWxEZWx0YXx8YS5kZXRhaWx8fDA7aWYoYS53aGVlbERlbHRhJiZ0aGlzLl93aGVlbENvdW50ZXI+PTEyMHx8IWEud2hlZWxEZWx0YSYmdGhpcy5fd2hlZWxDb3VudGVyPDApdGhpcy5wcmV2KCksdGhpcy5fd2hlZWxDb3VudGVyPTA7ZWxzZSBpZihhLndoZWVsRGVsdGEmJnRoaXMuX3doZWVsQ291bnRlcjw9LTEyMHx8IWEud2hlZWxEZWx0YSYmdGhpcy5fd2hlZWxDb3VudGVyPjApdGhpcy5uZXh0KCksdGhpcy5fd2hlZWxDb3VudGVyPTB9LGluaXRHYWxsZXJ5RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPXRoaXMuJGVsZW1lbnQ7Yy5maW5kKCIubW9kYWwtaW1hZ2UiKS5vbigiY2xpY2subW9kYWwtZ2FsbGVyeSIsZnVuY3Rpb24oYyl7dmFyIGQ9YSh0aGlzKTtiLiRsaW5rcy5sZW5ndGg9PT0xP2IuaGlkZSgpOihjLnBhZ2VYLWQub2Zmc2V0KCkubGVmdCkvZC53aWR0aCgpPGIub3B0aW9ucy5pbWFnZUNsaWNrRGl2aXNpb24/Yi5wcmV2KGMpOmIubmV4dChjKX0pLGMuZmluZCgiLm1vZGFsLXByZXYiKS5vbigiY2xpY2subW9kYWwtZ2FsbGVyeSIsZnVuY3Rpb24oYSl7Yi5wcmV2KGEpfSksYy5maW5kKCIubW9kYWwtbmV4dCIpLm9uKCJjbGljay5tb2RhbC1nYWxsZXJ5IixmdW5jdGlvbihhKXtiLm5leHQoYSl9KSxjLmZpbmQoIi5tb2RhbC1zbGlkZXNob3ciKS5vbigiY2xpY2subW9kYWwtZ2FsbGVyeSIsZnVuY3Rpb24oYSl7Yi50b2dnbGVTbGlkZVNob3coYSl9KSxhKGRvY3VtZW50KS5vbigia2V5ZG93bi5tb2RhbC1nYWxsZXJ5IixmdW5jdGlvbihhKXtiLmtleUhhbmRsZXIoYSl9KS5vbigibW91c2V3aGVlbC5tb2RhbC1nYWxsZXJ5LCBET01Nb3VzZVNjcm9sbC5tb2RhbC1nYWxsZXJ5IixmdW5jdGlvbihhKXtiLndoZWVsSGFuZGxlcihhKX0pfSxkZXN0cm95R2FsbGVyeUV2ZW50czpmdW5jdGlvbigpe3ZhciBiPXRoaXMuJGVsZW1lbnQ7dGhpcy5hYm9ydExvYWQoKSx0aGlzLnN0b3BTbGlkZVNob3coKSxiLmZpbmQoIi5tb2RhbC1pbWFnZSwgLm1vZGFsLXByZXYsIC5tb2RhbC1uZXh0LCAubW9kYWwtc2xpZGVzaG93Iikub2ZmKCJjbGljay5tb2RhbC1nYWxsZXJ5IiksYShkb2N1bWVudCkub2ZmKCJrZXlkb3duLm1vZGFsLWdhbGxlcnkiKS5vZmYoIm1vdXNld2hlZWwubW9kYWwtZ2FsbGVyeSwgRE9NTW91c2VTY3JvbGwubW9kYWwtZ2FsbGVyeSIpfSxzaG93OmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNTaG93biYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygibW9kYWwtZ2FsbGVyeSIpKXt2YXIgYj10aGlzLiRlbGVtZW50LGQ9dGhpcy5vcHRpb25zLGU9YSh3aW5kb3cpLndpZHRoKCksZj1hKHdpbmRvdykuaGVpZ2h0KCk7Yi5oYXNDbGFzcygibW9kYWwtZnVsbHNjcmVlbiIpPyh0aGlzLl9sb2FkSW1hZ2VPcHRpb25zPXttYXhXaWR0aDplLG1heEhlaWdodDpmLGNhbnZhczpkLmNhbnZhc30sYi5oYXNDbGFzcygibW9kYWwtZnVsbHNjcmVlbi1zdHJldGNoIikmJih0aGlzLl9sb2FkSW1hZ2VPcHRpb25zLm1pbldpZHRoPWUsdGhpcy5fbG9hZEltYWdlT3B0aW9ucy5taW5IZWlnaHQ9ZikpOnRoaXMuX2xvYWRJbWFnZU9wdGlvbnM9e21heFdpZHRoOmUtZC5vZmZzZXRXaWR0aCxtYXhIZWlnaHQ6Zi1kLm9mZnNldEhlaWdodCxjYW52YXM6ZC5jYW52YXN9LGU+NDgwJiZiLmNzcyh7Im1hcmdpbi10b3AiOi0oYi5vdXRlckhlaWdodCgpLzIpLCJtYXJnaW4tbGVmdCI6LShiLm91dGVyV2lkdGgoKS8yKX0pLHRoaXMuaW5pdEdhbGxlcnlFdmVudHMoKSx0aGlzLmluaXRMaW5rcygpLHRoaXMuJGxpbmtzLmxlbmd0aCYmKGIuZmluZCgiLm1vZGFsLXNsaWRlc2hvdywgLm1vZGFsLXByZXYsIC5tb2RhbC1uZXh0IikudG9nZ2xlKHRoaXMuJGxpbmtzLmxlbmd0aCE9PTEpLGIudG9nZ2xlQ2xhc3MoIm1vZGFsLXNpbmdsZSIsdGhpcy4kbGlua3MubGVuZ3RoPT09MSksdGhpcy5sb2FkSW1hZ2UoKSl9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIm1vZGFsLWdhbGxlcnkiKSYmKHRoaXMub3B0aW9ucy5kZWxlZ2F0ZT1kb2N1bWVudCx0aGlzLm9wdGlvbnMuaHJlZj1udWxsLHRoaXMuZGVzdHJveUdhbGxlcnlFdmVudHMoKSksZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSksYShmdW5jdGlvbigpe2EoZG9jdW1lbnQuYm9keSkub24oImNsaWNrLm1vZGFsLWdhbGxlcnkuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsLWdhbGxlcnkiXScsZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKSxkPWMuZGF0YSgpLGU9YShkLnRhcmdldCksZj1lLmRhdGEoIm1vZGFsIiksZztmfHwoZD1hLmV4dGVuZChlLmRhdGEoKSxkKSksZC5zZWxlY3Rvcnx8KGQuc2VsZWN0b3I9ImFbcmVsPWdhbGxlcnldIiksZz1hKGIudGFyZ2V0KS5jbG9zZXN0KGQuc2VsZWN0b3IpLGcubGVuZ3RoJiZlLmxlbmd0aCYmKGIucHJldmVudERlZmF1bHQoKSxkLmhyZWY9Zy5wcm9wKCJocmVmIil8fGcuZGF0YSgiaHJlZiIpLGQuZGVsZWdhdGU9Z1swXSE9PXRoaXM/dGhpczpkb2N1bWVudCxmJiZhLmV4dGVuZChmLm9wdGlvbnMsZCksZS5tb2RhbChkKSl9KX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/bootstrap.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqDQoqIEJvb3RzdHJhcC5qcyBieSBAZmF0ICYgQG1kbw0KKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVyLCBJbmMuDQoqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC50eHQNCiovDQohZnVuY3Rpb24oYSl7YShmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IixhLnN1cHBvcnQudHJhbnNpdGlvbj1mdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIixtc1RyYW5zaXRpb246Ik1TVHJhbnNpdGlvbkVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9LGM7Zm9yKGMgaW4gYilpZihhLnN0eWxlW2NdIT09dW5kZWZpbmVkKXJldHVybiBiW2NdfSgpO3JldHVybiBhJiZ7ZW5kOmF9fSgpfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGM9ZnVuY3Rpb24oYyl7YShjKS5vbigiY2xpY2siLGIsdGhpcy5jbG9zZSl9O2MucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGYoKXtlLnRyaWdnZXIoImNsb3NlZCIpLnJlbW92ZSgpfXZhciBjPWEodGhpcyksZD1jLmF0dHIoImRhdGEtdGFyZ2V0IiksZTtkfHwoZD1jLmF0dHIoImhyZWYiKSxkPWQmJmQucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSksZT1hKGQpLGImJmIucHJldmVudERlZmF1bHQoKSxlLmxlbmd0aHx8KGU9Yy5oYXNDbGFzcygiYWxlcnQiKT9jOmMucGFyZW50KCkpLGUudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlIikpO2lmKGIuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJmUuaGFzQ2xhc3MoImZhZGUiKT9lLm9uKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmKTpmKCl9LGEuZm4uYWxlcnQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImFsZXJ0Iik7ZXx8ZC5kYXRhKCJhbGVydCIsZT1uZXcgYyh0aGlzKSksdHlwZW9mIGI9PSJzdHJpbmciJiZlW2JdLmNhbGwoZCl9KX0sYS5mbi5hbGVydC5Db25zdHJ1Y3Rvcj1jLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLmFsZXJ0LmRhdGEtYXBpIixiLGMucHJvdG90eXBlLmNsb3NlKX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxhLmZuLmJ1dHRvbi5kZWZhdWx0cyxjKX07Yi5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9ImRpc2FibGVkIixjPXRoaXMuJGVsZW1lbnQsZD1jLmRhdGEoKSxlPWMuaXMoImlucHV0Iik/InZhbCI6Imh0bWwiO2ErPSJUZXh0IixkLnJlc2V0VGV4dHx8Yy5kYXRhKCJyZXNldFRleHQiLGNbZV0oKSksY1tlXShkW2FdfHx0aGlzLm9wdGlvbnNbYV0pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthPT0ibG9hZGluZ1RleHQiP2MuYWRkQ2xhc3MoYikuYXR0cihiLGIpOmMucmVtb3ZlQ2xhc3MoYikucmVtb3ZlQXR0cihiKX0sMCl9LGIucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQucGFyZW50KCdbZGF0YS10b2dnbGU9ImJ1dHRvbnMtcmFkaW8iXScpO2EmJmEuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbGVtZW50LnRvZ2dsZUNsYXNzKCJhY3RpdmUiKX0sYS5mbi5idXR0b249ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJ1dHRvbiIpLGY9dHlwZW9mIGM9PSJvYmplY3QiJiZjO2V8fGQuZGF0YSgiYnV0dG9uIixlPW5ldyBiKHRoaXMsZikpLGM9PSJ0b2dnbGUiP2UudG9nZ2xlKCk6YyYmZS5zZXRTdGF0ZShjKX0pfSxhLmZuLmJ1dHRvbi5kZWZhdWx0cz17bG9hZGluZ1RleHQ6ImxvYWRpbmcuLi4ifSxhLmZuLmJ1dHRvbi5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLmJ1dHRvbi5kYXRhLWFwaSIsIltkYXRhLXRvZ2dsZV49YnV0dG9uXSIsZnVuY3Rpb24oYil7dmFyIGM9YShiLnRhcmdldCk7Yy5oYXNDbGFzcygiYnRuIil8fChjPWMuY2xvc2VzdCgiLmJ0biIpKSxjLmJ1dHRvbigidG9nZ2xlIil9KX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1jLHRoaXMub3B0aW9ucy5zbGlkZSYmdGhpcy5zbGlkZSh0aGlzLm9wdGlvbnMuc2xpZGUpLHRoaXMub3B0aW9ucy5wYXVzZT09ImhvdmVyIiYmdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlciIsYS5wcm94eSh0aGlzLnBhdXNlLHRoaXMpKS5vbigibW91c2VsZWF2ZSIsYS5wcm94eSh0aGlzLmN5Y2xlLHRoaXMpKX07Yi5wcm90b3R5cGU9e2N5Y2xlOmZ1bmN0aW9uKGIpe3JldHVybiBifHwodGhpcy5wYXVzZWQ9ITEpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSx0bzpmdW5jdGlvbihiKXt2YXIgYz10aGlzLiRlbGVtZW50LmZpbmQoIi5hY3RpdmUiKSxkPWMucGFyZW50KCkuY2hpbGRyZW4oKSxlPWQuaW5kZXgoYyksZj10aGlzO2lmKGI+ZC5sZW5ndGgtMXx8YjwwKXJldHVybjtyZXR1cm4gdGhpcy5zbGlkaW5nP3RoaXMuJGVsZW1lbnQub25lKCJzbGlkIixmdW5jdGlvbigpe2YudG8oYil9KTplPT1iP3RoaXMucGF1c2UoKS5jeWNsZSgpOnRoaXMuc2xpZGUoYj5lPyJuZXh0IjoicHJldiIsYShkW2JdKSl9LHBhdXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhfHwodGhpcy5wYXVzZWQ9ITApLGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCksdGhpcy5pbnRlcnZhbD1udWxsLHRoaXN9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLnNsaWRpbmcpcmV0dXJuO3JldHVybiB0aGlzLnNsaWRlKCJuZXh0Iil9LHByZXY6ZnVuY3Rpb24oKXtpZih0aGlzLnNsaWRpbmcpcmV0dXJuO3JldHVybiB0aGlzLnNsaWRlKCJwcmV2Iil9LHNsaWRlOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy4kZWxlbWVudC5maW5kKCIuYWN0aXZlIiksZT1jfHxkW2JdKCksZj10aGlzLmludGVydmFsLGc9Yj09Im5leHQiPyJsZWZ0IjoicmlnaHQiLGg9Yj09Im5leHQiPyJmaXJzdCI6Imxhc3QiLGk9dGhpcyxqPWEuRXZlbnQoInNsaWRlIik7dGhpcy5zbGlkaW5nPSEwLGYmJnRoaXMucGF1c2UoKSxlPWUubGVuZ3RoP2U6dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbSIpW2hdKCk7aWYoZS5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuO2lmKGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoaik7aWYoai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47ZS5hZGRDbGFzcyhiKSxlWzBdLm9mZnNldFdpZHRoLGQuYWRkQ2xhc3MoZyksZS5hZGRDbGFzcyhnKSx0aGlzLiRlbGVtZW50Lm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oKXtlLnJlbW92ZUNsYXNzKFtiLGddLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGQucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGddLmpvaW4oIiAiKSksaS5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLiRlbGVtZW50LnRyaWdnZXIoInNsaWQiKX0sMCl9KX1lbHNle3RoaXMuJGVsZW1lbnQudHJpZ2dlcihqKTtpZihqLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjtkLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxlLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJzbGlkIil9cmV0dXJuIGYmJnRoaXMuY3ljbGUoKSx0aGlzfX0sYS5mbi5jYXJvdXNlbD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiY2Fyb3VzZWwiKSxmPWEuZXh0ZW5kKHt9LGEuZm4uY2Fyb3VzZWwuZGVmYXVsdHMsdHlwZW9mIGM9PSJvYmplY3QiJiZjKTtlfHxkLmRhdGEoImNhcm91c2VsIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ibnVtYmVyIj9lLnRvKGMpOnR5cGVvZiBjPT0ic3RyaW5nInx8KGM9Zi5zbGlkZSk/ZVtjXSgpOmYuaW50ZXJ2YWwmJmUuY3ljbGUoKX0pfSxhLmZuLmNhcm91c2VsLmRlZmF1bHRzPXtpbnRlcnZhbDo1ZTMscGF1c2U6ImhvdmVyIn0sYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLmNhcm91c2VsLmRhdGEtYXBpIiwiW2RhdGEtc2xpZGVdIixmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMpLGQsZT1hKGMuYXR0cigiZGF0YS10YXJnZXQiKXx8KGQ9Yy5hdHRyKCJocmVmIikpJiZkLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGY9IWUuZGF0YSgibW9kYWwiKSYmYS5leHRlbmQoe30sZS5kYXRhKCksYy5kYXRhKCkpO2UuY2Fyb3VzZWwoZiksYi5wcmV2ZW50RGVmYXVsdCgpfSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYS5mbi5jb2xsYXBzZS5kZWZhdWx0cyxjKSx0aGlzLm9wdGlvbnMucGFyZW50JiYodGhpcy4kcGFyZW50PWEodGhpcy5vcHRpb25zLnBhcmVudCkpLHRoaXMub3B0aW9ucy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9O2IucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpiLGRpbWVuc2lvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sc2hvdzpmdW5jdGlvbigpe3ZhciBiLGMsZCxlO2lmKHRoaXMudHJhbnNpdGlvbmluZylyZXR1cm47Yj10aGlzLmRpbWVuc2lvbigpLGM9YS5jYW1lbENhc2UoWyJzY3JvbGwiLGJdLmpvaW4oIi0iKSksZD10aGlzLiRwYXJlbnQmJnRoaXMuJHBhcmVudC5maW5kKCI+IC5hY2NvcmRpb24tZ3JvdXAgPiAuaW4iKTtpZihkJiZkLmxlbmd0aCl7ZT1kLmRhdGEoImNvbGxhcHNlIik7aWYoZSYmZS50cmFuc2l0aW9uaW5nKXJldHVybjtkLmNvbGxhcHNlKCJoaWRlIiksZXx8ZC5kYXRhKCJjb2xsYXBzZSIsbnVsbCl9dGhpcy4kZWxlbWVudFtiXSgwKSx0aGlzLnRyYW5zaXRpb24oImFkZENsYXNzIixhLkV2ZW50KCJzaG93IiksInNob3duIiksdGhpcy4kZWxlbWVudFtiXSh0aGlzLiRlbGVtZW50WzBdW2NdKX0saGlkZTpmdW5jdGlvbigpe3ZhciBiO2lmKHRoaXMudHJhbnNpdGlvbmluZylyZXR1cm47Yj10aGlzLmRpbWVuc2lvbigpLHRoaXMucmVzZXQodGhpcy4kZWxlbWVudFtiXSgpKSx0aGlzLnRyYW5zaXRpb24oInJlbW92ZUNsYXNzIixhLkV2ZW50KCJoaWRlIiksImhpZGRlbiIpLHRoaXMuJGVsZW1lbnRbYl0oMCl9LHJlc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZGltZW5zaW9uKCk7cmV0dXJuIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIilbYl0oYXx8ImF1dG8iKVswXS5vZmZzZXRXaWR0aCx0aGlzLiRlbGVtZW50W2EhPT1udWxsPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oImNvbGxhcHNlIiksdGhpc30sdHJhbnNpdGlvbjpmdW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpcyxmPWZ1bmN0aW9uKCl7Yy50eXBlPT0ic2hvdyImJmUucmVzZXQoKSxlLnRyYW5zaXRpb25pbmc9MCxlLiRlbGVtZW50LnRyaWdnZXIoZCl9O3RoaXMuJGVsZW1lbnQudHJpZ2dlcihjKTtpZihjLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjt0aGlzLnRyYW5zaXRpb25pbmc9MSx0aGlzLiRlbGVtZW50W2JdKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJjb2xsYXBzZSIpP3RoaXMuJGVsZW1lbnQub25lKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmKTpmKCl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXNbdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKT8iaGlkZSI6InNob3ciXSgpfX0sYS5mbi5jb2xsYXBzZT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiY29sbGFwc2UiKSxmPXR5cGVvZiBjPT0ib2JqZWN0IiYmYztlfHxkLmRhdGEoImNvbGxhcHNlIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ic3RyaW5nIiYmZVtjXSgpfSl9LGEuZm4uY29sbGFwc2UuZGVmYXVsdHM9e3RvZ2dsZTohMH0sYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLmNvbGxhcHNlLmRhdGEtYXBpIiwiW2RhdGEtdG9nZ2xlPWNvbGxhcHNlXSIsZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKSxkLGU9Yy5hdHRyKCJkYXRhLXRhcmdldCIpfHxiLnByZXZlbnREZWZhdWx0KCl8fChkPWMuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpLGY9YShlKS5kYXRhKCJjb2xsYXBzZSIpPyJ0b2dnbGUiOmMuZGF0YSgpO2EoZSkuY29sbGFwc2UoZil9KX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZCgpe2EoYikucGFyZW50KCkucmVtb3ZlQ2xhc3MoIm9wZW4iKX0idXNlIHN0cmljdCI7dmFyIGI9J1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsYz1mdW5jdGlvbihiKXt2YXIgYz1hKGIpLm9uKCJjbGljay5kcm9wZG93bi5kYXRhLWFwaSIsdGhpcy50b2dnbGUpO2EoImh0bWwiKS5vbigiY2xpY2suZHJvcGRvd24uZGF0YS1hcGkiLGZ1bmN0aW9uKCl7Yy5wYXJlbnQoKS5yZW1vdmVDbGFzcygib3BlbiIpfSl9O2MucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjLHRvZ2dsZTpmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMpLGUsZixnO2lmKGMuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpcmV0dXJuO3JldHVybiBmPWMuYXR0cigiZGF0YS10YXJnZXQiKSxmfHwoZj1jLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSksZT1hKGYpLGUubGVuZ3RofHwoZT1jLnBhcmVudCgpKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKSxkKCksZ3x8ZS50b2dnbGVDbGFzcygib3BlbiIpLCExfX0sYS5mbi5kcm9wZG93bj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiZHJvcGRvd24iKTtlfHxkLmRhdGEoImRyb3Bkb3duIixlPW5ldyBjKHRoaXMpKSx0eXBlb2YgYj09InN0cmluZyImJmVbYl0uY2FsbChkKX0pfSxhLmZuLmRyb3Bkb3duLkNvbnN0cnVjdG9yPWMsYShmdW5jdGlvbigpe2EoImh0bWwiKS5vbigiY2xpY2suZHJvcGRvd24uZGF0YS1hcGkiLGQpLGEoImJvZHkiKS5vbigiY2xpY2suZHJvcGRvd24iLCIuZHJvcGRvd24gZm9ybSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjbGljay5kcm9wZG93bi5kYXRhLWFwaSIsYixjLnByb3RvdHlwZS50b2dnbGUpfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXtmdW5jdGlvbiBjKCl7dmFyIGI9dGhpcyxjPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLiRlbGVtZW50Lm9mZihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpLGQuY2FsbChiKX0sNTAwKTt0aGlzLiRlbGVtZW50Lm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYyksZC5jYWxsKGIpfSl9ZnVuY3Rpb24gZChhKXt0aGlzLiRlbGVtZW50LmhpZGUoKS50cmlnZ2VyKCJoaWRkZW4iKSxlLmNhbGwodGhpcyl9ZnVuY3Rpb24gZShiKXt2YXIgYz10aGlzLGQ9dGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpPyJmYWRlIjoiIjtpZih0aGlzLmlzU2hvd24mJnRoaXMub3B0aW9ucy5iYWNrZHJvcCl7dmFyIGU9YS5zdXBwb3J0LnRyYW5zaXRpb24mJmQ7dGhpcy4kYmFja2Ryb3A9YSgnPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgJytkKyciIC8+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksdGhpcy5vcHRpb25zLmJhY2tkcm9wIT0ic3RhdGljIiYmdGhpcy4kYmFja2Ryb3AuY2xpY2soYS5wcm94eSh0aGlzLmhpZGUsdGhpcykpLGUmJnRoaXMuJGJhY2tkcm9wWzBdLm9mZnNldFdpZHRoLHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLGU/dGhpcy4kYmFja2Ryb3Aub25lKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxiKTpiKCl9ZWxzZSF0aGlzLmlzU2hvd24mJnRoaXMuJGJhY2tkcm9wPyh0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGJhY2tkcm9wLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsYS5wcm94eShmLHRoaXMpKTpmLmNhbGwodGhpcykpOmImJmIoKX1mdW5jdGlvbiBmKCl7dGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH1mdW5jdGlvbiBnKCl7dmFyIGI9dGhpczt0aGlzLmlzU2hvd24mJnRoaXMub3B0aW9ucy5rZXlib2FyZD9hKGRvY3VtZW50KS5vbigia2V5dXAuZGlzbWlzcy5tb2RhbCIsZnVuY3Rpb24oYSl7YS53aGljaD09MjcmJmIuaGlkZSgpfSk6dGhpcy5pc1Nob3dufHxhKGRvY3VtZW50KS5vZmYoImtleXVwLmRpc21pc3MubW9kYWwiKX0idXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRlbGVtZW50PWEoYikuZGVsZWdhdGUoJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLCJjbGljay5kaXNtaXNzLm1vZGFsIixhLnByb3h5KHRoaXMuaGlkZSx0aGlzKSl9O2IucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpiLHRvZ2dsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW3RoaXMuaXNTaG93bj8iaGlkZSI6InNob3ciXSgpfSxzaG93OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWEuRXZlbnQoInNob3ciKTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoYyk7aWYodGhpcy5pc1Nob3dufHxjLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjthKCJib2R5IikuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmlzU2hvd249ITAsZy5jYWxsKHRoaXMpLGUuY2FsbCh0aGlzLGZ1bmN0aW9uKCl7dmFyIGM9YS5zdXBwb3J0LnRyYW5zaXRpb24mJmIuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKTtiLiRlbGVtZW50LnBhcmVudCgpLmxlbmd0aHx8Yi4kZWxlbWVudC5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSxiLiRlbGVtZW50LnNob3coKSxjJiZiLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoLGIuJGVsZW1lbnQuYWRkQ2xhc3MoImluIiksYz9iLiRlbGVtZW50Lm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oKXtiLiRlbGVtZW50LnRyaWdnZXIoInNob3duIil9KTpiLiRlbGVtZW50LnRyaWdnZXIoInNob3duIil9KX0saGlkZTpmdW5jdGlvbihiKXtiJiZiLnByZXZlbnREZWZhdWx0KCk7dmFyIGU9dGhpcztiPWEuRXZlbnQoImhpZGUiKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoYik7aWYoIXRoaXMuaXNTaG93bnx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5pc1Nob3duPSExLGEoImJvZHkiKS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGcuY2FsbCh0aGlzKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/Yy5jYWxsKHRoaXMpOmQuY2FsbCh0aGlzKX19LGEuZm4ubW9kYWw9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoIm1vZGFsIiksZj1hLmV4dGVuZCh7fSxhLmZuLm1vZGFsLmRlZmF1bHRzLGQuZGF0YSgpLHR5cGVvZiBjPT0ib2JqZWN0IiYmYyk7ZXx8ZC5kYXRhKCJtb2RhbCIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyI/ZVtjXSgpOmYuc2hvdyYmZS5zaG93KCl9KX0sYS5mbi5tb2RhbC5kZWZhdWx0cz17YmFja2Ryb3A6ITAsa2V5Ym9hcmQ6ITAsc2hvdzohMH0sYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMpLGQsZT1hKGMuYXR0cigiZGF0YS10YXJnZXQiKXx8KGQ9Yy5hdHRyKCJocmVmIikpJiZkLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGY9ZS5kYXRhKCJtb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHt9LGUuZGF0YSgpLGMuZGF0YSgpKTtiLnByZXZlbnREZWZhdWx0KCksZS5tb2RhbChmKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInRvb2x0aXAiLGEsYil9O2IucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpiLGluaXQ6ZnVuY3Rpb24oYixjLGQpe3ZhciBlLGY7dGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy5lbmFibGVkPSEwLHRoaXMub3B0aW9ucy50cmlnZ2VyIT0ibWFudWFsIiYmKGU9dGhpcy5vcHRpb25zLnRyaWdnZXI9PSJob3ZlciI/Im1vdXNlZW50ZXIiOiJmb2N1cyIsZj10aGlzLm9wdGlvbnMudHJpZ2dlcj09ImhvdmVyIj8ibW91c2VsZWF2ZSI6ImJsdXIiLHRoaXMuJGVsZW1lbnQub24oZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGYsdGhpcy5vcHRpb25zLnNlbGVjdG9yLGEucHJveHkodGhpcy5sZWF2ZSx0aGlzKSkpLHRoaXMub3B0aW9ucy5zZWxlY3Rvcj90aGlzLl9vcHRpb25zPWEuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx7dHJpZ2dlcjoibWFudWFsIixzZWxlY3RvcjoiIn0pOnRoaXMuZml4VGl0bGUoKX0sZ2V0T3B0aW9uczpmdW5jdGlvbihiKXtyZXR1cm4gYj1hLmV4dGVuZCh7fSxhLmZuW3RoaXMudHlwZV0uZGVmYXVsdHMsYix0aGlzLiRlbGVtZW50LmRhdGEoKSksYi5kZWxheSYmdHlwZW9mIGIuZGVsYXk9PSJudW1iZXIiJiYoYi5kZWxheT17c2hvdzpiLmRlbGF5LGhpZGU6Yi5kZWxheX0pLGJ9LGVudGVyOmZ1bmN0aW9uKGIpe3ZhciBjPWEoYi5jdXJyZW50VGFyZ2V0KVt0aGlzLnR5cGVdKHRoaXMuX29wdGlvbnMpLmRhdGEodGhpcy50eXBlKTtpZighYy5vcHRpb25zLmRlbGF5fHwhYy5vcHRpb25zLmRlbGF5LnNob3cpcmV0dXJuIGMuc2hvdygpO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLGMuaG92ZXJTdGF0ZT0iaW4iLHRoaXMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5ob3ZlclN0YXRlPT0iaW4iJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpfSxsZWF2ZTpmdW5jdGlvbihiKXt2YXIgYz1hKGIuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSk7dGhpcy50aW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtpZighYy5vcHRpb25zLmRlbGF5fHwhYy5vcHRpb25zLmRlbGF5LmhpZGUpcmV0dXJuIGMuaGlkZSgpO2MuaG92ZXJTdGF0ZT0ib3V0Iix0aGlzLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2MuaG92ZXJTdGF0ZT09Im91dCImJmMuaGlkZSgpfSxjLm9wdGlvbnMuZGVsYXkuaGlkZSl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZztpZih0aGlzLmhhc0NvbnRlbnQoKSYmdGhpcy5lbmFibGVkKXthPXRoaXMudGlwKCksdGhpcy5zZXRDb250ZW50KCksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmYS5hZGRDbGFzcygiZmFkZSIpLGY9dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQ9PSJmdW5jdGlvbiI/dGhpcy5vcHRpb25zLnBsYWNlbWVudC5jYWxsKHRoaXMsYVswXSx0aGlzLiRlbGVtZW50WzBdKTp0aGlzLm9wdGlvbnMucGxhY2VtZW50LGI9L2luLy50ZXN0KGYpLGEucmVtb3ZlKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYXBwZW5kVG8oYj90aGlzLiRlbGVtZW50OmRvY3VtZW50LmJvZHkpLGM9dGhpcy5nZXRQb3NpdGlvbihiKSxkPWFbMF0ub2Zmc2V0V2lkdGgsZT1hWzBdLm9mZnNldEhlaWdodDtzd2l0Y2goYj9mLnNwbGl0KCIgIilbMV06Zil7Y2FzZSJib3R0b20iOmc9e3RvcDpjLnRvcCtjLmhlaWdodCxsZWZ0OmMubGVmdCtjLndpZHRoLzItZC8yfTticmVhaztjYXNlInRvcCI6Zz17dG9wOmMudG9wLWUsbGVmdDpjLmxlZnQrYy53aWR0aC8yLWQvMn07YnJlYWs7Y2FzZSJsZWZ0IjpnPXt0b3A6Yy50b3ArYy5oZWlnaHQvMi1lLzIsbGVmdDpjLmxlZnQtZH07YnJlYWs7Y2FzZSJyaWdodCI6Zz17dG9wOmMudG9wK2MuaGVpZ2h0LzItZS8yLGxlZnQ6Yy5sZWZ0K2Mud2lkdGh9fWEuY3NzKGcpLmFkZENsYXNzKGYpLmFkZENsYXNzKCJpbiIpfX0saXNIVE1MOmZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYSE9InN0cmluZyJ8fGEuY2hhckF0KDApPT09IjwiJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09PSI+IiYmYS5sZW5ndGg+PTN8fC9eKD86W148XSo8W1x3XFddKz5bXj5dKiQpLy5leGVjKGEpfSxzZXRDb250ZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKTthLmZpbmQoIi50b29sdGlwLWlubmVyIilbdGhpcy5pc0hUTUwoYik/Imh0bWwiOiJ0ZXh0Il0oYiksYS5yZW1vdmVDbGFzcygiZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQiKX0saGlkZTpmdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt2YXIgYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5vZmYoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKS5yZW1vdmUoKX0sNTAwKTtjLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYiksYy5yZW1vdmUoKX0pfXZhciBiPXRoaXMsYz10aGlzLnRpcCgpO2MucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJHRpcC5oYXNDbGFzcygiZmFkZSIpP2QoKTpjLnJlbW92ZSgpfSxmaXhUaXRsZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8dHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpIT0ic3RyaW5nIikmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikucmVtb3ZlQXR0cigidGl0bGUiKX0saGFzQ29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKGIpe3JldHVybiBhLmV4dGVuZCh7fSxiP3t0b3A6MCxsZWZ0OjB9OnRoaXMuJGVsZW1lbnQub2Zmc2V0KCkse3dpZHRoOnRoaXMuJGVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OnRoaXMuJGVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0fSl9LGdldFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwodHlwZW9mIGMudGl0bGU9PSJmdW5jdGlvbiI/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpLGF9LHRpcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR0aXA9dGhpcy4kdGlwfHxhKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSl9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudFswXS5wYXJlbnROb2RlfHwodGhpcy5oaWRlKCksdGhpcy4kZWxlbWVudD1udWxsLHRoaXMub3B0aW9ucz1udWxsKX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSx0b2dnbGVFbmFibGVkOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXNbdGhpcy50aXAoKS5oYXNDbGFzcygiaW4iKT8iaGlkZSI6InNob3ciXSgpfX0sYS5mbi50b29sdGlwPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJ0b29sdGlwIiksZj10eXBlb2YgYz09Im9iamVjdCImJmM7ZXx8ZC5kYXRhKCJ0b29sdGlwIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ic3RyaW5nIiYmZVtjXSgpfSl9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1iLGEuZm4udG9vbHRpcC5kZWZhdWx0cz17YW5pbWF0aW9uOiEwLHBsYWNlbWVudDoidG9wIixzZWxlY3RvcjohMSx0ZW1wbGF0ZTonPGRpdiBjbGFzcz0idG9vbHRpcCI+PGRpdiBjbGFzcz0idG9vbHRpcC1hcnJvdyI+PC9kaXY+PGRpdiBjbGFzcz0idG9vbHRpcC1pbm5lciI+PC9kaXY+PC9kaXY+Jyx0cmlnZ2VyOiJob3ZlciIsdGl0bGU6IiIsZGVsYXk6MH19KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2IucHJvdG90eXBlPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOmIsc2V0Q29udGVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCksYz10aGlzLmdldENvbnRlbnQoKTthLmZpbmQoIi5wb3BvdmVyLXRpdGxlIilbdGhpcy5pc0hUTUwoYik/Imh0bWwiOiJ0ZXh0Il0oYiksYS5maW5kKCIucG9wb3Zlci1jb250ZW50ID4gKiIpW3RoaXMuaXNIVE1MKGMpPyJodG1sIjoidGV4dCJdKGMpLGEucmVtb3ZlQ2xhc3MoImZhZGUgdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0IGluIil9LGhhc0NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sZ2V0Q29udGVudDpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kZWxlbWVudCxjPXRoaXMub3B0aW9ucztyZXR1cm4gYT1iLmF0dHIoImRhdGEtY29udGVudCIpfHwodHlwZW9mIGMuY29udGVudD09ImZ1bmN0aW9uIj9jLmNvbnRlbnQuY2FsbChiWzBdKTpjLmNvbnRlbnQpLGF9LHRpcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR0aXB8fCh0aGlzLiR0aXA9YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpKSx0aGlzLiR0aXB9fSksYS5mbi5wb3BvdmVyPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJwb3BvdmVyIiksZj10eXBlb2YgYz09Im9iamVjdCImJmM7ZXx8ZC5kYXRhKCJwb3BvdmVyIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ic3RyaW5nIiYmZVtjXSgpfSl9LGEuZm4ucG9wb3Zlci5Db25zdHJ1Y3Rvcj1iLGEuZm4ucG9wb3Zlci5kZWZhdWx0cz1hLmV4dGVuZCh7fSxhLmZuLnRvb2x0aXAuZGVmYXVsdHMse3BsYWNlbWVudDoicmlnaHQiLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJwb3BvdmVyLWlubmVyIj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48cD48L3A+PC9kaXY+PC9kaXY+PC9kaXY+J30pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiLGMpe3ZhciBkPWEucHJveHkodGhpcy5wcm9jZXNzLHRoaXMpLGU9YShiKS5pcygiYm9keSIpP2Eod2luZG93KTphKGIpLGY7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGEuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzLGMpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9ZS5vbigic2Nyb2xsLnNjcm9sbC5kYXRhLWFwaSIsZCksdGhpcy5zZWxlY3Rvcj0odGhpcy5vcHRpb25zLnRhcmdldHx8KGY9YShiKS5hdHRyKCJocmVmIikpJiZmLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIil8fCIiKSsiIC5uYXYgbGkgPiBhIix0aGlzLiRib2R5PWEoImJvZHkiKSx0aGlzLnJlZnJlc2goKSx0aGlzLnByb2Nlc3MoKX0idXNlIHN0cmljdCIsYi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmIscmVmcmVzaDpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYzt0aGlzLm9mZnNldHM9YShbXSksdGhpcy50YXJnZXRzPWEoW10pLGM9dGhpcy4kYm9keS5maW5kKHRoaXMuc2VsZWN0b3IpLm1hcChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyksYz1iLmRhdGEoInRhcmdldCIpfHxiLmF0dHIoImhyZWYiKSxkPS9eI1x3Ly50ZXN0KGMpJiZhKGMpO3JldHVybiBkJiZjLmxlbmd0aCYmW1tkLnBvc2l0aW9uKCkudG9wLGNdXXx8bnVsbH0pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVswXS1iWzBdfSkuZWFjaChmdW5jdGlvbigpe2Iub2Zmc2V0cy5wdXNoKHRoaXNbMF0pLGIudGFyZ2V0cy5wdXNoKHRoaXNbMV0pfSl9LHByb2Nlc3M6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRzY3JvbGxFbGVtZW50LnNjcm9sbFRvcCgpK3RoaXMub3B0aW9ucy5vZmZzZXQsYj10aGlzLiRzY3JvbGxFbGVtZW50WzBdLnNjcm9sbEhlaWdodHx8dGhpcy4kYm9keVswXS5zY3JvbGxIZWlnaHQsYz1iLXRoaXMuJHNjcm9sbEVsZW1lbnQuaGVpZ2h0KCksZD10aGlzLm9mZnNldHMsZT10aGlzLnRhcmdldHMsZj10aGlzLmFjdGl2ZVRhcmdldCxnO2lmKGE+PWMpcmV0dXJuIGYhPShnPWUubGFzdCgpWzBdKSYmdGhpcy5hY3RpdmF0ZShnKTtmb3IoZz1kLmxlbmd0aDtnLS07KWYhPWVbZ10mJmE+PWRbZ10mJighZFtnKzFdfHxhPD1kW2crMV0pJiZ0aGlzLmFjdGl2YXRlKGVbZ10pfSxhY3RpdmF0ZTpmdW5jdGlvbihiKXt2YXIgYyxkO3RoaXMuYWN0aXZlVGFyZ2V0PWIsYSh0aGlzLnNlbGVjdG9yKS5wYXJlbnQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksZD10aGlzLnNlbGVjdG9yKydbZGF0YS10YXJnZXQ9IicrYisnIl0sJyt0aGlzLnNlbGVjdG9yKydbaHJlZj0iJytiKyciXScsYz1hKGQpLnBhcmVudCgibGkiKS5hZGRDbGFzcygiYWN0aXZlIiksYy5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikmJihjPWMuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIikpLGMudHJpZ2dlcigiYWN0aXZhdGUiKX19LGEuZm4uc2Nyb2xsc3B5PWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJzY3JvbGxzcHkiKSxmPXR5cGVvZiBjPT0ib2JqZWN0IiYmYztlfHxkLmRhdGEoInNjcm9sbHNweSIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLnNjcm9sbHNweS5Db25zdHJ1Y3Rvcj1iLGEuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzPXtvZmZzZXQ6MTB9LGEoZnVuY3Rpb24oKXthKCdbZGF0YS1zcHk9InNjcm9sbCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyk7Yi5zY3JvbGxzcHkoYi5kYXRhKCkpfSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmIsc2hvdzpmdW5jdGlvbigpe3ZhciBiPXRoaXMuZWxlbWVudCxjPWIuY2xvc2VzdCgidWw6bm90KC5kcm9wZG93bi1tZW51KSIpLGQ9Yi5hdHRyKCJkYXRhLXRhcmdldCIpLGUsZixnO2R8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKTtpZihiLnBhcmVudCgibGkiKS5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuO2U9Yy5maW5kKCIuYWN0aXZlIGEiKS5sYXN0KClbMF0sZz1hLkV2ZW50KCJzaG93Iix7cmVsYXRlZFRhcmdldDplfSksYi50cmlnZ2VyKGcpO2lmKGcuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2Y9YShkKSx0aGlzLmFjdGl2YXRlKGIucGFyZW50KCJsaSIpLGMpLHRoaXMuYWN0aXZhdGUoZixmLnBhcmVudCgpLGZ1bmN0aW9uKCl7Yi50cmlnZ2VyKHt0eXBlOiJzaG93biIscmVsYXRlZFRhcmdldDplfSl9KX0sYWN0aXZhdGU6ZnVuY3Rpb24oYixjLGQpe2Z1bmN0aW9uIGcoKXtlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxiLmFkZENsYXNzKCJhY3RpdmUiKSxmPyhiWzBdLm9mZnNldFdpZHRoLGIuYWRkQ2xhc3MoImluIikpOmIucmVtb3ZlQ2xhc3MoImZhZGUiKSxiLnBhcmVudCgiLmRyb3Bkb3duLW1lbnUiKSYmYi5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSxkJiZkKCl9dmFyIGU9Yy5maW5kKCI+IC5hY3RpdmUiKSxmPWQmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiZlLmhhc0NsYXNzKCJmYWRlIik7Zj9lLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZyk6ZygpLGUucmVtb3ZlQ2xhc3MoImluIil9fSxhLmZuLnRhYj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgidGFiIik7ZXx8ZC5kYXRhKCJ0YWIiLGU9bmV3IGIodGhpcykpLHR5cGVvZiBjPT0ic3RyaW5nIiYmZVtjXSgpfSl9LGEuZm4udGFiLkNvbnN0cnVjdG9yPWIsYShmdW5jdGlvbigpe2EoImJvZHkiKS5vbigiY2xpY2sudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXSwgW2RhdGEtdG9nZ2xlPSJwaWxsIl0nLGZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKSxhKHRoaXMpLnRhYigic2hvdyIpfSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYS5mbi50eXBlYWhlYWQuZGVmYXVsdHMsYyksdGhpcy5tYXRjaGVyPXRoaXMub3B0aW9ucy5tYXRjaGVyfHx0aGlzLm1hdGNoZXIsdGhpcy5zb3J0ZXI9dGhpcy5vcHRpb25zLnNvcnRlcnx8dGhpcy5zb3J0ZXIsdGhpcy5oaWdobGlnaHRlcj10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ZXJ8fHRoaXMuaGlnaGxpZ2h0ZXIsdGhpcy51cGRhdGVyPXRoaXMub3B0aW9ucy51cGRhdGVyfHx0aGlzLnVwZGF0ZXIsdGhpcy4kbWVudT1hKHRoaXMub3B0aW9ucy5tZW51KS5hcHBlbmRUbygiYm9keSIpLHRoaXMuc291cmNlPXRoaXMub3B0aW9ucy5zb3VyY2UsdGhpcy5zaG93bj0hMSx0aGlzLmxpc3RlbigpfTtiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YixzZWxlY3Q6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRtZW51LmZpbmQoIi5hY3RpdmUiKS5hdHRyKCJkYXRhLXZhbHVlIik7cmV0dXJuIHRoaXMuJGVsZW1lbnQudmFsKHRoaXMudXBkYXRlcihhKSkuY2hhbmdlKCksdGhpcy5oaWRlKCl9LHVwZGF0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYj1hLmV4dGVuZCh7fSx0aGlzLiRlbGVtZW50Lm9mZnNldCgpLHtoZWlnaHQ6dGhpcy4kZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KTtyZXR1cm4gdGhpcy4kbWVudS5jc3Moe3RvcDpiLnRvcCtiLmhlaWdodCxsZWZ0OmIubGVmdH0pLHRoaXMuJG1lbnUuc2hvdygpLHRoaXMuc2hvd249ITAsdGhpc30saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRtZW51LmhpZGUoKSx0aGlzLnNob3duPSExLHRoaXN9LGxvb2t1cDpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQsZTtyZXR1cm4gdGhpcy5xdWVyeT10aGlzLiRlbGVtZW50LnZhbCgpLHRoaXMucXVlcnk/KGQ9YS5ncmVwKHRoaXMuc291cmNlLGZ1bmN0aW9uKGEpe3JldHVybiBjLm1hdGNoZXIoYSl9KSxkPXRoaXMuc29ydGVyKGQpLGQubGVuZ3RoP3RoaXMucmVuZGVyKGQuc2xpY2UoMCx0aGlzLm9wdGlvbnMuaXRlbXMpKS5zaG93KCk6dGhpcy5zaG93bj90aGlzLmhpZGUoKTp0aGlzKTp0aGlzLnNob3duP3RoaXMuaGlkZSgpOnRoaXN9LG1hdGNoZXI6ZnVuY3Rpb24oYSl7cmV0dXJufmEudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSl9LHNvcnRlcjpmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9W10sZTt3aGlsZShlPWEuc2hpZnQoKSllLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNlKCkpP35lLmluZGV4T2YodGhpcy5xdWVyeSk/Yy5wdXNoKGUpOmQucHVzaChlKTpiLnB1c2goZSk7cmV0dXJuIGIuY29uY2F0KGMsZCl9LGhpZ2hsaWdodGVyOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucXVlcnkucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpO3JldHVybiBhLnJlcGxhY2UobmV3IFJlZ0V4cCgiKCIrYisiKSIsImlnIiksZnVuY3Rpb24oYSxiKXtyZXR1cm4iPHN0cm9uZz4iK2IrIjwvc3Ryb25nPiJ9KX0scmVuZGVyOmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7cmV0dXJuIGI9YShiKS5tYXAoZnVuY3Rpb24oYixkKXtyZXR1cm4gYj1hKGMub3B0aW9ucy5pdGVtKS5hdHRyKCJkYXRhLXZhbHVlIixkKSxiLmZpbmQoImEiKS5odG1sKGMuaGlnaGxpZ2h0ZXIoZCkpLGJbMF19KSxiLmZpcnN0KCkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJG1lbnUuaHRtbChiKSx0aGlzfSxuZXh0OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuJG1lbnUuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxkPWMubmV4dCgpO2QubGVuZ3RofHwoZD1hKHRoaXMuJG1lbnUuZmluZCgibGkiKVswXSkpLGQuYWRkQ2xhc3MoImFjdGl2ZSIpfSxwcmV2OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuJG1lbnUuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxjPWIucHJldigpO2MubGVuZ3RofHwoYz10aGlzLiRtZW51LmZpbmQoImxpIikubGFzdCgpKSxjLmFkZENsYXNzKCJhY3RpdmUiKX0sbGlzdGVuOmZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5vbigiYmx1ciIsYS5wcm94eSh0aGlzLmJsdXIsdGhpcykpLm9uKCJrZXlwcmVzcyIsYS5wcm94eSh0aGlzLmtleXByZXNzLHRoaXMpKS5vbigia2V5dXAiLGEucHJveHkodGhpcy5rZXl1cCx0aGlzKSksKGEuYnJvd3Nlci53ZWJraXR8fGEuYnJvd3Nlci5tc2llKSYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93biIsYS5wcm94eSh0aGlzLmtleXByZXNzLHRoaXMpKSx0aGlzLiRtZW51Lm9uKCJjbGljayIsYS5wcm94eSh0aGlzLmNsaWNrLHRoaXMpKS5vbigibW91c2VlbnRlciIsImxpIixhLnByb3h5KHRoaXMubW91c2VlbnRlcix0aGlzKSl9LGtleXVwOmZ1bmN0aW9uKGEpe3N3aXRjaChhLmtleUNvZGUpe2Nhc2UgNDA6Y2FzZSAzODpicmVhaztjYXNlIDk6Y2FzZSAxMzppZighdGhpcy5zaG93bilyZXR1cm47dGhpcy5zZWxlY3QoKTticmVhaztjYXNlIDI3OmlmKCF0aGlzLnNob3duKXJldHVybjt0aGlzLmhpZGUoKTticmVhaztkZWZhdWx0OnRoaXMubG9va3VwKCl9YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCl9LGtleXByZXNzOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLnNob3duKXJldHVybjtzd2l0Y2goYS5rZXlDb2RlKXtjYXNlIDk6Y2FzZSAxMzpjYXNlIDI3OmEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIDM4OmlmKGEudHlwZSE9ImtleWRvd24iKWJyZWFrO2EucHJldmVudERlZmF1bHQoKSx0aGlzLnByZXYoKTticmVhaztjYXNlIDQwOmlmKGEudHlwZSE9ImtleWRvd24iKWJyZWFrO2EucHJldmVudERlZmF1bHQoKSx0aGlzLm5leHQoKX1hLnN0b3BQcm9wYWdhdGlvbigpfSxibHVyOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2IuaGlkZSgpfSwxNTApfSxjbGljazpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSx0aGlzLnNlbGVjdCgpfSxtb3VzZWVudGVyOmZ1bmN0aW9uKGIpe3RoaXMuJG1lbnUuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxhKGIuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoImFjdGl2ZSIpfX0sYS5mbi50eXBlYWhlYWQ9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoInR5cGVhaGVhZCIpLGY9dHlwZW9mIGM9PSJvYmplY3QiJiZjO2V8fGQuZGF0YSgidHlwZWFoZWFkIixlPW5ldyBiKHRoaXMsZikpLHR5cGVvZiBjPT0ic3RyaW5nIiYmZVtjXSgpfSl9LGEuZm4udHlwZWFoZWFkLmRlZmF1bHRzPXtzb3VyY2U6W10saXRlbXM6OCxtZW51Oic8dWwgY2xhc3M9InR5cGVhaGVhZCBkcm9wZG93bi1tZW51Ij48L3VsPicsaXRlbTonPGxpPjxhIGhyZWY9IiMiPjwvYT48L2xpPid9LGEuZm4udHlwZWFoZWFkLkNvbnN0cnVjdG9yPWIsYShmdW5jdGlvbigpe2EoImJvZHkiKS5vbigiZm9jdXMudHlwZWFoZWFkLmRhdGEtYXBpIiwnW2RhdGEtcHJvdmlkZT0idHlwZWFoZWFkIl0nLGZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyk7aWYoYy5kYXRhKCJ0eXBlYWhlYWQiKSlyZXR1cm47Yi5wcmV2ZW50RGVmYXVsdCgpLGMudHlwZWFoZWFkKGMuZGF0YSgpKX0pfSl9KHdpbmRvdy5qUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/canvas-to-blob.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLkhUTUxDYW52YXNFbGVtZW50JiZhLkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZSxjPWEuQmxvYkJ1aWxkZXJ8fGEuV2ViS2l0QmxvYkJ1aWxkZXJ8fGEuTW96QmxvYkJ1aWxkZXIsZD1jJiZhLmF0b2ImJmEuQXJyYXlCdWZmZXImJmEuVWludDhBcnJheSYmZnVuY3Rpb24oYSl7dmFyIGIsZCxlLGYsZyxoO2Euc3BsaXQoIiwiKVswXS5pbmRleE9mKCJiYXNlNjQiKT49MD9iPWF0b2IoYS5zcGxpdCgiLCIpWzFdKTpiPWRlY29kZVVSSUNvbXBvbmVudChhLnNwbGl0KCIsIilbMV0pLGQ9bmV3IEFycmF5QnVmZmVyKGIubGVuZ3RoKSxlPW5ldyBVaW50OEFycmF5KGQpO2ZvcihmPTA7ZjxiLmxlbmd0aDtmKz0xKWVbZl09Yi5jaGFyQ29kZUF0KGYpO3JldHVybiBnPW5ldyBjLGcuYXBwZW5kKGQpLGg9YS5zcGxpdCgiLCIpWzBdLnNwbGl0KCI6IilbMV0uc3BsaXQoIjsiKVswXSxnLmdldEJsb2IoaCl9O2EuSFRNTENhbnZhc0VsZW1lbnQmJiFiLnRvQmxvYiYmKGIubW96R2V0QXNGaWxlP2IudG9CbG9iPWZ1bmN0aW9uKGEsYil7YSh0aGlzLm1vekdldEFzRmlsZSgiYmxvYiIsYikpfTpiLnRvRGF0YVVSTCYmZCYmKGIudG9CbG9iPWZ1bmN0aW9uKGEsYil7YShkKHRoaXMudG9EYXRhVVJMKGIpKSl9KSksdHlwZW9mIGRlZmluZSE9InVuZGVmaW5lZCImJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KTphLmRhdGFVUkx0b0Jsb2I9ZH0pKHRoaXMpOw==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/cors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/js/cors/jquery.postmessage-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBwb3N0TWVzc2FnZSBUcmFuc3BvcnQgUGx1Z2luIDEuMQ0KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkDQogKg0KICogQ29weXJpZ2h0IDIwMTEsIFNlYmFzdGlhbiBUc2NoYW4NCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQNCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6DQogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KICovDQoNCi8qanNsaW50IHVucGFyYW06IHRydWUsIG5vbWVuOiB0cnVlICovDQovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgZG9jdW1lbnQgKi8NCg0KKGZ1bmN0aW9uIChmYWN0b3J5KSB7DQogICAgJ3VzZSBzdHJpY3QnOw0KICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsNCiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6DQogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6DQogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7DQogICAgfQ0KfShmdW5jdGlvbiAoJCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIHZhciBjb3VudGVyID0gMCwNCiAgICAgICAgbmFtZXMgPSBbDQogICAgICAgICAgICAnYWNjZXB0cycsDQogICAgICAgICAgICAnY2FjaGUnLA0KICAgICAgICAgICAgJ2NvbnRlbnRzJywNCiAgICAgICAgICAgICdjb250ZW50VHlwZScsDQogICAgICAgICAgICAnY3Jvc3NEb21haW4nLA0KICAgICAgICAgICAgJ2RhdGEnLA0KICAgICAgICAgICAgJ2RhdGFUeXBlJywNCiAgICAgICAgICAgICdoZWFkZXJzJywNCiAgICAgICAgICAgICdpZk1vZGlmaWVkJywNCiAgICAgICAgICAgICdtaW1lVHlwZScsDQogICAgICAgICAgICAncGFzc3dvcmQnLA0KICAgICAgICAgICAgJ3Byb2Nlc3NEYXRhJywNCiAgICAgICAgICAgICd0aW1lb3V0JywNCiAgICAgICAgICAgICd0cmFkaXRpb25hbCcsDQogICAgICAgICAgICAndHlwZScsDQogICAgICAgICAgICAndXJsJywNCiAgICAgICAgICAgICd1c2VybmFtZScNCiAgICAgICAgXSwNCiAgICAgICAgY29udmVydCA9IGZ1bmN0aW9uIChwKSB7DQogICAgICAgICAgICByZXR1cm4gcDsNCiAgICAgICAgfTsNCg0KICAgICQuYWpheFNldHVwKHsNCiAgICAgICAgY29udmVydGVyczogew0KICAgICAgICAgICAgJ3Bvc3RtZXNzYWdlIHRleHQnOiBjb252ZXJ0LA0KICAgICAgICAgICAgJ3Bvc3RtZXNzYWdlIGpzb24nOiBjb252ZXJ0LA0KICAgICAgICAgICAgJ3Bvc3RtZXNzYWdlIGh0bWwnOiBjb252ZXJ0DQogICAgICAgIH0NCiAgICB9KTsNCg0KICAgICQuYWpheFRyYW5zcG9ydCgncG9zdG1lc3NhZ2UnLCBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSAmJiB3aW5kb3cucG9zdE1lc3NhZ2UpIHsNCiAgICAgICAgICAgIHZhciBpZnJhbWUsDQogICAgICAgICAgICAgICAgbG9jID0gJCgnPGE+JykucHJvcCgnaHJlZicsIG9wdGlvbnMucG9zdE1lc3NhZ2UpWzBdLA0KICAgICAgICAgICAgICAgIHRhcmdldCA9IGxvYy5wcm90b2NvbCArICcvLycgKyBsb2MuaG9zdCwNCiAgICAgICAgICAgICAgICB4aHJVcGxvYWQgPSBvcHRpb25zLnhocigpLnVwbG9hZDsNCiAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKF8sIGNvbXBsZXRlQ2FsbGJhY2spIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdwb3N0bWVzc2FnZS10cmFuc3BvcnQtJyArIChjb3VudGVyICs9IDEpDQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROYW1lID0gJ21lc3NhZ2UuJyArIG1lc3NhZ2UuaWQ7DQogICAgICAgICAgICAgICAgICAgIGlmcmFtZSA9ICQoDQogICAgICAgICAgICAgICAgICAgICAgICAnPGlmcmFtZSBzdHlsZT0iZGlzcGxheTpub25lOyIgc3JjPSInICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBvc3RNZXNzYWdlICsgJyIgbmFtZT0iJyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5pZCArICciPjwvaWZyYW1lPicNCiAgICAgICAgICAgICAgICAgICAgKS5iaW5kKCdsb2FkJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG5hbWVzLCBmdW5jdGlvbiAoaSwgbmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VbbmFtZV0gPSBvcHRpb25zW25hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmRhdGFUeXBlID0gbWVzc2FnZS5kYXRhVHlwZS5yZXBsYWNlKCdwb3N0bWVzc2FnZSAnLCAnJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykuYmluZChldmVudE5hbWUsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUub3JpZ2luYWxFdmVudDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUuZGF0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUub3JpZ2luID09PSB0YXJnZXQgJiYgZGF0YS5pZCA9PT0gbWVzc2FnZS5pZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvZ3Jlc3MnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYuaW5pdEV2ZW50KGRhdGEudHlwZSwgZmFsc2UsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQoZXYsIGRhdGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyVXBsb2FkLmRpc3BhdGNoRXZlbnQoZXYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVDYWxsYmFjaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1c1RleHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Bvc3RtZXNzYWdlOiBkYXRhLnJlc3VsdH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5oZWFkZXJzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLnVuYmluZChldmVudE5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVbMF0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldA0KICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWUucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgfSk7DQoNCn0pKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/cors/jquery.xdr-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBYRG9tYWluUmVxdWVzdCBUcmFuc3BvcnQgUGx1Z2luIDEuMS4yDQogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQNCiAqDQogKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhbg0KICogaHR0cHM6Ly9ibHVlaW1wLm5ldA0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKg0KICogQmFzZWQgb24gSnVsaWFuIEF1Ym91cmcncyBhamF4SG9va3MgeGRyLmpzOg0KICogaHR0cHM6Ly9naXRodWIuY29tL2phdWJvdXJnL2FqYXhIb29rcy8NCiAqLw0KDQovKmpzbGludCB1bnBhcmFtOiB0cnVlICovDQovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgWERvbWFpblJlcXVlc3QgKi8NCg0KKGZ1bmN0aW9uIChmYWN0b3J5KSB7DQogICAgJ3VzZSBzdHJpY3QnOw0KICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsNCiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6DQogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6DQogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7DQogICAgfQ0KfShmdW5jdGlvbiAoJCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCiAgICBpZiAod2luZG93LlhEb21haW5SZXF1ZXN0ICYmICEkLnN1cHBvcnQuY29ycykgew0KICAgICAgICAkLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24gKHMpIHsNCiAgICAgICAgICAgIGlmIChzLmNyb3NzRG9tYWluICYmIHMuYXN5bmMpIHsNCiAgICAgICAgICAgICAgICBpZiAocy50aW1lb3V0KSB7DQogICAgICAgICAgICAgICAgICAgIHMueGRyVGltZW91dCA9IHMudGltZW91dDsNCiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHMudGltZW91dDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdmFyIHhkcjsNCiAgICAgICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiAoaGVhZGVycywgY29tcGxldGVDYWxsYmFjaykgew0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3RhdHVzLCBzdGF0dXNUZXh0LCByZXNwb25zZXMsIHJlc3BvbnNlSGVhZGVycykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmxvYWQgPSB4ZHIub25lcnJvciA9IHhkci5vbnRpbWVvdXQgPSAkLm5vb3A7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGRyID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKHN0YXR1cywgc3RhdHVzVGV4dCwgcmVzcG9uc2VzLCByZXNwb25zZUhlYWRlcnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgeGRyID0gbmV3IFhEb21haW5SZXF1ZXN0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBYRG9tYWluUmVxdWVzdCBvbmx5IHN1cHBvcnRzIEdFVCBhbmQgUE9TVDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnR5cGUgPT09ICdERUxFVEUnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy51cmwgPSBzLnVybCArICgvXD8vLnRlc3Qocy51cmwpID8gJyYnIDogJz8nKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbWV0aG9kPURFTEVURSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50eXBlID0gJ1BPU1QnOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzLnR5cGUgPT09ICdQVVQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy51cmwgPSBzLnVybCArICgvXD8vLnRlc3Qocy51cmwpID8gJyYnIDogJz8nKSArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbWV0aG9kPVBVVCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50eXBlID0gJ1BPU1QnOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9wZW4ocy50eXBlLCBzLnVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICB4ZHIub25sb2FkID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPSycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXh0OiB4ZHIucmVzcG9uc2VUZXh0fSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogJyArIHhkci5jb250ZW50VHlwZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soNDA0LCAnTm90IEZvdW5kJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMueGRyVGltZW91dCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKDAsICd0aW1lb3V0Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIudGltZW91dCA9IHMueGRyVGltZW91dDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5zZW5kKChzLmhhc0NvbnRlbnQgJiYgcy5kYXRhKSB8fCBudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ZHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIub25lcnJvciA9ICQubm9vcCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KfSkpOw0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload-fp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBGaWxlIFByb2Nlc3NpbmcgUGx1Z2luIDEuMA0KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkDQogKg0KICogQ29weXJpZ2h0IDIwMTIsIFNlYmFzdGlhbiBUc2NoYW4NCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQNCiAqDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6DQogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KICovDQoNCi8qanNsaW50IG5vbWVuOiB0cnVlLCB1bnBhcmFtOiB0cnVlLCByZWdleHA6IHRydWUgKi8NCi8qZ2xvYmFsIGRlZmluZSwgd2luZG93LCBkb2N1bWVudCAqLw0KDQooZnVuY3Rpb24gKGZhY3RvcnkpIHsNCiAgICAndXNlIHN0cmljdCc7DQogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgew0KICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToNCiAgICAgICAgZGVmaW5lKFsNCiAgICAgICAgICAgICdqcXVlcnknLA0KICAgICAgICAgICAgJ2xvYWQtaW1hZ2UnLA0KICAgICAgICAgICAgJ2NhbnZhcy10by1ibG9iJywNCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkJw0KICAgICAgICBdLCBmYWN0b3J5KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6DQogICAgICAgIGZhY3RvcnkoDQogICAgICAgICAgICB3aW5kb3cualF1ZXJ5LA0KICAgICAgICAgICAgd2luZG93LmxvYWRJbWFnZQ0KICAgICAgICApOw0KICAgIH0NCn0oZnVuY3Rpb24gKCQsIGxvYWRJbWFnZSkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIC8vIFRoZSBGaWxlIFVwbG9hZCBJUCB2ZXJzaW9uIGV4dGVuZHMgdGhlIGJhc2ljIGZpbGV1cGxvYWQgd2lkZ2V0DQogICAgLy8gd2l0aCBmaWxlIHByb2Nlc3NpbmcgZnVuY3Rpb25hbGl0eToNCiAgICAkLndpZGdldCgnYmx1ZWltcEZQLmZpbGV1cGxvYWQnLCAkLmJsdWVpbXAuZmlsZXVwbG9hZCwgew0KDQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIGZpbGUgcHJvY2Vzc2luZyBhY3Rpb25zOg0KICAgICAgICAgICAgcHJvY2VzczogWw0KICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2xvYWQnLA0KICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sDQogICAgICAgICAgICAgICAgICAgIG1heEZpbGVTaXplOiAyMDAwMDAwMCAvLyAyME1CDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3Jlc2l6ZScsDQogICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxOTIwLA0KICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsDQogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiA4MDAsDQogICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogNjAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKi8NCiAgICAgICAgICAgIF0sDQoNCiAgICAgICAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUNCiAgICAgICAgICAgIC8vIGZpbGV1cGxvYWQgd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wIG9yIGFkZA0KICAgICAgICAgICAgLy8gQVBJIGNhbGwpLiBTZWUgdGhlIGJhc2ljIGZpbGUgdXBsb2FkIHdpZGdldCBmb3IgbW9yZSBpbmZvcm1hdGlvbjoNCiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbGV1cGxvYWQoJ3Byb2Nlc3MnLCBkYXRhKS5kb25lKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgZGF0YS5zdWJtaXQoKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBwcm9jZXNzQWN0aW9uczogew0KICAgICAgICAgICAgLy8gTG9hZHMgdGhlIGltYWdlIGdpdmVuIHZpYSBkYXRhLmZpbGVzIGFuZCBkYXRhLmluZGV4DQogICAgICAgICAgICAvLyBhcyBjYW52YXMgZWxlbWVudC4NCiAgICAgICAgICAgIC8vIEFjY2VwdHMgdGhlIG9wdGlvbnMgZmlsZVR5cGVzIChyZWd1bGFyIGV4cHJlc3Npb24pDQogICAgICAgICAgICAvLyBhbmQgbWF4RmlsZVNpemUgKGludGVnZXIpIHRvIGxpbWl0IHRoZSBmaWxlcyB0byBsb2FkOg0KICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGZpbGUgPSBkYXRhLmZpbGVzW2RhdGEuaW5kZXhdLA0KICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCk7DQogICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudCAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS50b0Jsb2IgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5tYXhGaWxlU2l6ZSkgIT09ICdudW1iZXInIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplIDwgb3B0aW9ucy5tYXhGaWxlU2l6ZSkgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICghb3B0aW9ucy5maWxlVHlwZXMgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVUeXBlcy50ZXN0KGZpbGUudHlwZSkpKSB7DQogICAgICAgICAgICAgICAgICAgIGxvYWRJbWFnZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoY2FudmFzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jYW52YXMgPSBjYW52YXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKHRoYXQsIFtkYXRhXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAge2NhbnZhczogdHJ1ZX0NCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0V2l0aCh0aGF0LCBbZGF0YV0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBSZXNpemVzIHRoZSBpbWFnZSBnaXZlbiBhcyBkYXRhLmNhbnZhcyBhbmQgdXBkYXRlcw0KICAgICAgICAgICAgLy8gZGF0YS5jYW52YXMgd2l0aCB0aGUgcmVzaXplZCBpbWFnZS4NCiAgICAgICAgICAgIC8vIEFjY2VwdHMgdGhlIG9wdGlvbnMgbWF4V2lkdGgsIG1heEhlaWdodCwgbWluV2lkdGggYW5kDQogICAgICAgICAgICAvLyBtaW5IZWlnaHQgdG8gc2NhbGUgdGhlIGdpdmVuIGltYWdlOg0KICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgew0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhbnZhcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgY2FudmFzID0gbG9hZEltYWdlLnNjYWxlKGRhdGEuY2FudmFzLCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy53aWR0aCAhPT0gZGF0YS5jYW52YXMud2lkdGggfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ICE9PSBkYXRhLmNhbnZhcy5oZWlnaHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY2FudmFzID0gY2FudmFzOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIFNhdmVzIHRoZSBwcm9jZXNzZWQgaW1hZ2UgZ2l2ZW4gYXMgZGF0YS5jYW52YXMNCiAgICAgICAgICAgIC8vIGlucGxhY2UgYXQgZGF0YS5pbmRleCBvZiBkYXRhLmZpbGVzOg0KICAgICAgICAgICAgc2F2ZTogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIGlmIG5vIHByb2Nlc3NpbmcgaGFzIGhhcHBlbmVkOg0KICAgICAgICAgICAgICAgIGlmICghZGF0YS5jYW52YXMgfHwgIWRhdGEucHJvY2Vzc2VkKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgICAgIGZpbGUgPSBkYXRhLmZpbGVzW2RhdGEuaW5kZXhdLA0KICAgICAgICAgICAgICAgICAgICBuYW1lID0gZmlsZS5uYW1lLA0KICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksDQogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gKGJsb2IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmxvYi5uYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gYmxvYi50eXBlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2IubmFtZSA9IGZpbGUubmFtZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGUubmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iLm5hbWUgPSBmaWxlLm5hbWUucmVwbGFjZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9cLi4rJC8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBibG9iLnR5cGUuc3Vic3RyKDYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWF0ZWQgYmxvYiBhdCB0aGUgcG9zaXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSBmaWxlcyBsaXN0Og0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlc1tkYXRhLmluZGV4XSA9IGJsb2I7DQogICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCwgW2RhdGFdKTsNCiAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAvLyBVc2UgY2FudmFzLm1vekdldEFzRmlsZSBkaXJlY3RseSwgdG8gcmV0YWluIHRoZSBmaWxlbmFtZSwgYXMNCiAgICAgICAgICAgICAgICAvLyBHZWNrbyBkb2Vzbid0IHN1cHBvcnQgdGhlIGZpbGVuYW1lIG9wdGlvbiBmb3IgRm9ybURhdGEuYXBwZW5kOg0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhbnZhcy5tb3pHZXRBc0ZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YS5jYW52YXMubW96R2V0QXNGaWxlKA0KICAgICAgICAgICAgICAgICAgICAgICAgKC9eaW1hZ2VcLyhqcGVnfHBuZykkLy50ZXN0KGZpbGUudHlwZSkgJiYgbmFtZSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5hbWUgJiYgbmFtZS5yZXBsYWNlKC9cLi4rJC8sICcnKSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2InKSArICcucG5nJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZQ0KICAgICAgICAgICAgICAgICAgICApKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbnZhcy50b0Jsb2IoY2FsbGJhY2ssIGZpbGUudHlwZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBkZmQucHJvbWlzZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIC8vIFJlc2l6ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGluZGV4IGFuZCBzdG9yZXMgdGhlIGNyZWF0ZWQgYmxvYiBhdA0KICAgICAgICAvLyB0aGUgb3JpZ2luYWwgcG9zaXRpb24gb2YgdGhlIGZpbGVzIGxpc3QsIHJldHVybnMgYSBQcm9taXNlIG9iamVjdDoNCiAgICAgICAgX3Byb2Nlc3NGaWxlOiBmdW5jdGlvbiAoZmlsZXMsIGluZGV4LCBvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpLnJlc29sdmVXaXRoKHRoYXQsIFt7DQogICAgICAgICAgICAgICAgICAgIGZpbGVzOiBmaWxlcywNCiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4DQogICAgICAgICAgICAgICAgfV0pLA0KICAgICAgICAgICAgICAgIGNoYWluID0gZGZkLnByb21pc2UoKTsNCiAgICAgICAgICAgIHRoYXQuX3Byb2Nlc3NpbmcgKz0gMTsNCiAgICAgICAgICAgICQuZWFjaChvcHRpb25zLnByb2Nlc3MsIGZ1bmN0aW9uIChpLCBzZXR0aW5ncykgew0KICAgICAgICAgICAgICAgIGNoYWluID0gY2hhaW4ucGlwZShmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wcm9jZXNzQWN0aW9uc1tzZXR0aW5ncy5hY3Rpb25dDQogICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCh0aGlzLCBkYXRhLCBzZXR0aW5ncyk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGNoYWluLmFsd2F5cyhmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgdGhhdC5fcHJvY2Vzc2luZyAtPSAxOw0KICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9wcm9jZXNzaW5nID09PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuZWxlbWVudA0KICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdmaWxldXBsb2FkLXByb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmICh0aGF0Ll9wcm9jZXNzaW5nID09PSAxKSB7DQogICAgICAgICAgICAgICAgdGhhdC5lbGVtZW50LmFkZENsYXNzKCdmaWxldXBsb2FkLXByb2Nlc3NpbmcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBjaGFpbjsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBQcm9jZXNzZXMgdGhlIGZpbGVzIGdpdmVuIGFzIGZpbGVzIHByb3BlcnR5IG9mIHRoZSBkYXRhIHBhcmFtZXRlciwNCiAgICAgICAgLy8gcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IHRoYXQgYWxsb3dzIHRvIGJpbmQgYSBkb25lIGhhbmRsZXIsIHdoaWNoDQogICAgICAgIC8vIHdpbGwgYmUgaW52b2tlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCBmaWxlcyAoaW5wbGFjZSkgaXMgZG9uZToNCiAgICAgICAgcHJvY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywNCiAgICAgICAgICAgICAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgZGF0YSk7DQogICAgICAgICAgICBpZiAob3B0aW9ucy5wcm9jZXNzICYmIG9wdGlvbnMucHJvY2Vzcy5sZW5ndGggJiYNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsNCiAgICAgICAgICAgICAgICAkLmVhY2goZGF0YS5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3Byb2Nlc3NpbmdRdWV1ZSA9IHRoYXQuX3Byb2Nlc3NpbmdRdWV1ZS5waXBlKA0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcHJvY2Vzc0ZpbGUoZGF0YS5maWxlcywgaW5kZXgsIG9wdGlvbnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hbHdheXMoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKHRoYXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzaW5nUXVldWU7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2NyZWF0ZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgJC5ibHVlaW1wLmZpbGV1cGxvYWQucHJvdG90eXBlLl9jcmVhdGUuY2FsbCh0aGlzKTsNCiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmcgPSAwOw0KICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ1F1ZXVlID0gJC5EZWZlcnJlZCgpLnJlc29sdmVXaXRoKHRoaXMpDQogICAgICAgICAgICAgICAgLnByb21pc2UoKTsNCiAgICAgICAgfQ0KDQogICAgfSk7DQoNCn0pKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload-ui.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBVc2VyIEludGVyZmFjZSBQbHVnaW4gNi44LjINCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQovKmpzbGludCBub21lbjogdHJ1ZSwgdW5wYXJhbTogdHJ1ZSwgcmVnZXhwOiB0cnVlICovDQovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgZG9jdW1lbnQsIFVSTCwgd2Via2l0VVJMLCBGaWxlUmVhZGVyICovDQoNCihmdW5jdGlvbiAoZmFjdG9yeSkgew0KICAgICd1c2Ugc3RyaWN0JzsNCiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7DQogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOg0KICAgICAgICBkZWZpbmUoWw0KICAgICAgICAgICAgJ2pxdWVyeScsDQogICAgICAgICAgICAndG1wbCcsDQogICAgICAgICAgICAnbG9hZC1pbWFnZScsDQogICAgICAgICAgICAnLi9qcXVlcnkuZmlsZXVwbG9hZC1mcCcNCiAgICAgICAgXSwgZmFjdG9yeSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOg0KICAgICAgICBmYWN0b3J5KA0KICAgICAgICAgICAgd2luZG93LmpRdWVyeSwNCiAgICAgICAgICAgIHdpbmRvdy50bXBsLA0KICAgICAgICAgICAgd2luZG93LmxvYWRJbWFnZQ0KICAgICAgICApOw0KICAgIH0NCn0oZnVuY3Rpb24gKCQsIHRtcGwsIGxvYWRJbWFnZSkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIC8vIFRoZSBVSSB2ZXJzaW9uIGV4dGVuZHMgdGhlIEZQIChmaWxlIHByb2Nlc3NpbmcpIHZlcnNpb24gb3IgdGhlIGJhc2ljDQogICAgLy8gZmlsZSB1cGxvYWQgd2lkZ2V0IGFuZCBhZGRzIGNvbXBsZXRlIHVzZXIgaW50ZXJmYWNlIGludGVyYWN0aW9uOg0KICAgIHZhciBwYXJlbnRXaWRnZXQgPSAoJC5ibHVlaW1wRlAgfHwgJC5ibHVlaW1wKS5maWxldXBsb2FkOw0KICAgICQud2lkZ2V0KCdibHVlaW1wVUkuZmlsZXVwbG9hZCcsIHBhcmVudFdpZGdldCwgew0KDQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGZpbGVzIGFkZGVkIHRvIHRoZSB3aWRnZXQgYXJlIHVwbG9hZGVkIGFzIHNvb24NCiAgICAgICAgICAgIC8vIGFzIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc3RhcnQgYnV0dG9ucy4gVG8gZW5hYmxlIGF1dG9tYXRpYw0KICAgICAgICAgICAgLy8gdXBsb2Fkcywgc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWU6DQogICAgICAgICAgICBhdXRvVXBsb2FkOiBmYWxzZSwNCiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgb3B0aW9uIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGZpbGVzIHRoYXQgYXJlDQogICAgICAgICAgICAvLyBhbGxvd2VkIHRvIGJlIHVwbG9hZGVkIHVzaW5nIHRoaXMgd2lkZ2V0Og0KICAgICAgICAgICAgbWF4TnVtYmVyT2ZGaWxlczogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gYWxsb3dlZCBmaWxlIHNpemU6DQogICAgICAgICAgICBtYXhGaWxlU2l6ZTogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gVGhlIG1pbmltdW0gYWxsb3dlZCBmaWxlIHNpemU6DQogICAgICAgICAgICBtaW5GaWxlU2l6ZTogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYWxsb3dlZCBmaWxlIHR5cGVzLCBtYXRjaGVzDQogICAgICAgICAgICAvLyBhZ2FpbnN0IGVpdGhlciBmaWxlIHR5cGUgb3IgZmlsZSBuYW1lOg0KICAgICAgICAgICAgYWNjZXB0RmlsZVR5cGVzOiAgLy4rJC9pLA0KICAgICAgICAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBkZWZpbmUgZm9yIHdoaWNoIGZpbGVzIGEgcHJldmlldw0KICAgICAgICAgICAgLy8gaW1hZ2UgaXMgc2hvd24sIG1hdGNoZWQgYWdhaW5zdCB0aGUgZmlsZSB0eXBlOg0KICAgICAgICAgICAgcHJldmlld1NvdXJjZUZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywNCiAgICAgICAgICAgIC8vIFRoZSBtYXhpbXVtIGZpbGUgc2l6ZSBvZiBpbWFnZXMgdGhhdCBhcmUgdG8gYmUgZGlzcGxheWVkIGFzIHByZXZpZXc6DQogICAgICAgICAgICBwcmV2aWV3U291cmNlTWF4RmlsZVNpemU6IDUwMDAwMDAsIC8vIDVNQg0KICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gd2lkdGggb2YgdGhlIHByZXZpZXcgaW1hZ2VzOg0KICAgICAgICAgICAgcHJldmlld01heFdpZHRoOiA4MCwNCiAgICAgICAgICAgIC8vIFRoZSBtYXhpbXVtIGhlaWdodCBvZiB0aGUgcHJldmlldyBpbWFnZXM6DQogICAgICAgICAgICBwcmV2aWV3TWF4SGVpZ2h0OiA4MCwNCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIHByZXZpZXcgaW1hZ2VzIGFyZSBkaXNwbGF5ZWQgYXMgY2FudmFzIGVsZW1lbnRzDQogICAgICAgICAgICAvLyBpZiBzdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXIuIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBmYWxzZQ0KICAgICAgICAgICAgLy8gdG8gYWx3YXlzIGRpc3BsYXkgcHJldmlldyBpbWFnZXMgYXMgaW1nIGVsZW1lbnRzOg0KICAgICAgICAgICAgcHJldmlld0FzQ2FudmFzOiB0cnVlLA0KICAgICAgICAgICAgLy8gVGhlIElEIG9mIHRoZSB1cGxvYWQgdGVtcGxhdGU6DQogICAgICAgICAgICB1cGxvYWRUZW1wbGF0ZUlkOiAndGVtcGxhdGUtdXBsb2FkJywNCiAgICAgICAgICAgIC8vIFRoZSBJRCBvZiB0aGUgZG93bmxvYWQgdGVtcGxhdGU6DQogICAgICAgICAgICBkb3dubG9hZFRlbXBsYXRlSWQ6ICd0ZW1wbGF0ZS1kb3dubG9hZCcsDQogICAgICAgICAgICAvLyBUaGUgY29udGFpbmVyIGZvciB0aGUgbGlzdCBvZiBmaWxlcy4gSWYgdW5kZWZpbmVkLCBpdCBpcyBzZXQgdG8NCiAgICAgICAgICAgIC8vIGFuIGVsZW1lbnQgd2l0aCBjbGFzcyAiZmlsZXMiIGluc2lkZSBvZiB0aGUgd2lkZ2V0IGVsZW1lbnQ6DQogICAgICAgICAgICBmaWxlc0NvbnRhaW5lcjogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZmlsZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSBmaWxlcyBjb250YWluZXIuDQogICAgICAgICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdHJ1ZSwgdG8gcHJlcGVuZCBmaWxlcyBpbnN0ZWFkOg0KICAgICAgICAgICAgcHJlcGVuZEZpbGVzOiBmYWxzZSwNCiAgICAgICAgICAgIC8vIFRoZSBleHBlY3RlZCBkYXRhIHR5cGUgb2YgdGhlIHVwbG9hZCByZXNwb25zZSwgc2V0cyB0aGUgZGF0YVR5cGUNCiAgICAgICAgICAgIC8vIG9wdGlvbiBvZiB0aGUgJC5hamF4IHVwbG9hZCByZXF1ZXN0czoNCiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsDQoNCiAgICAgICAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgZmlsZXVwbG9hZA0KICAgICAgICAgICAgLy8gd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wIG9yIGFkZCBBUEkgY2FsbCkuDQogICAgICAgICAgICAvLyBTZWUgdGhlIGJhc2ljIGZpbGUgdXBsb2FkIHdpZGdldCBmb3IgbW9yZSBpbmZvcm1hdGlvbjoNCiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpLA0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhhdC5vcHRpb25zLA0KICAgICAgICAgICAgICAgICAgICBmaWxlcyA9IGRhdGEuZmlsZXM7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5maWxldXBsb2FkKCdwcm9jZXNzJywgZGF0YSkuZG9uZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX2FkanVzdE1heE51bWJlck9mRmlsZXMoLWZpbGVzLmxlbmd0aCk7DQogICAgICAgICAgICAgICAgICAgIGRhdGEuaXNBZGp1c3RlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMudmFsaWQgPSBkYXRhLmlzVmFsaWRhdGVkID0gdGhhdC5fdmFsaWRhdGUoZmlsZXMpOw0KICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSB0aGF0Ll9yZW5kZXJVcGxvYWQoZmlsZXMpLmRhdGEoJ2RhdGEnLCBkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lclsNCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHJlcGVuZEZpbGVzID8gJ3ByZXBlbmQnIDogJ2FwcGVuZCcNCiAgICAgICAgICAgICAgICAgICAgXShkYXRhLmNvbnRleHQpOw0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9yZW5kZXJQcmV2aWV3cyhmaWxlcywgZGF0YS5jb250ZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3coZGF0YS5jb250ZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihkYXRhLmNvbnRleHQpLmRvbmUoDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGF0Ll90cmlnZ2VyKCdhZGRlZCcsIGUsIGRhdGEpICE9PSBmYWxzZSkgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25zLmF1dG9VcGxvYWQgfHwgZGF0YS5hdXRvVXBsb2FkKSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRvVXBsb2FkICE9PSBmYWxzZSAmJiBkYXRhLmlzVmFsaWRhdGVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3RhcnQgb2YgZWFjaCBmaWxlIHVwbG9hZCByZXF1ZXN0Og0KICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpOw0KICAgICAgICAgICAgICAgIGlmICghZGF0YS5pc1ZhbGlkYXRlZCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNBZGp1c3RlZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fYWRqdXN0TWF4TnVtYmVyT2ZGaWxlcygtZGF0YS5maWxlcy5sZW5ndGgpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC5fdmFsaWRhdGUoZGF0YS5maWxlcykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0ICYmIGRhdGEuZGF0YVR5cGUgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YVR5cGUuc3Vic3RyKDAsIDYpID09PSAnaWZyYW1lJykgew0KICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWUgVHJhbnNwb3J0IGRvZXMgbm90IHN1cHBvcnQgcHJvZ3Jlc3MgZXZlbnRzLg0KICAgICAgICAgICAgICAgICAgICAvLyBJbiBsYWNrIG9mIGFuIGluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3MgYmFyLCB3ZSBzZXQNCiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByb2dyZXNzIHRvIDEwMCUsIHNob3dpbmcgdGhlIGZ1bGwgYW5pbWF0ZWQgYmFyOg0KICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQNCiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcucHJvZ3Jlc3MnKS5hZGRDbGFzcygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgJ3Byb2dyZXNzLWFuaW1hdGVkJw0KICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5iYXInKS5jc3MoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludCgxMDAsIDEwKSArICclJw0KICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX3RyaWdnZXIoJ3NlbnQnLCBlLCBkYXRhKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCB1cGxvYWRzOg0KICAgICAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpLA0KICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTsNCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7DQogICAgICAgICAgICAgICAgICAgIGRhdGEuY29udGV4dC5lYWNoKGZ1bmN0aW9uIChpbmRleCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGUgPSAoJC5pc0FycmF5KGRhdGEucmVzdWx0KSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnJlc3VsdFtpbmRleF0pIHx8IHtlcnJvcjogJ2VtcHR5UmVzdWx0J307DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZS5lcnJvcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2FkanVzdE1heE51bWJlck9mRmlsZXMoMSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKCQodGhpcykpLmRvbmUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gdGhhdC5fcmVuZGVyRG93bmxvYWQoW2ZpbGVdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygnaGVpZ2h0Jywgbm9kZS5oZWlnaHQoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKG5vZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9mb3JjZVJlZmxvdyh0ZW1wbGF0ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24odGVtcGxhdGUpLmRvbmUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjb21wbGV0ZWQnLCBlLCBkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRoYXQuX3JlbmRlckRvd25sb2FkKGRhdGEucmVzdWx0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKHRoYXQub3B0aW9ucy5maWxlc0NvbnRhaW5lcik7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KHRlbXBsYXRlKTsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbih0ZW1wbGF0ZSkuZG9uZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NvbXBsZXRlZCcsIGUsIGRhdGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZmFpbGVkIChhYm9ydCBvciBlcnJvcikgdXBsb2FkczoNCiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKSwNCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU7DQogICAgICAgICAgICAgICAgdGhhdC5fYWRqdXN0TWF4TnVtYmVyT2ZGaWxlcyhkYXRhLmZpbGVzLmxlbmd0aCk7DQogICAgICAgICAgICAgICAgaWYgKGRhdGEuY29udGV4dCkgew0KICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yVGhyb3duICE9PSAnYWJvcnQnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGUgPSBkYXRhLmZpbGVzW2luZGV4XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmVycm9yID0gZmlsZS5lcnJvciB8fCBkYXRhLmVycm9yVGhyb3duIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbigkKHRoaXMpKS5kb25lKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9ICQodGhpcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRoYXQuX3JlbmRlckRvd25sb2FkKFtmaWxlXSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZUFsbChub2RlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KHRlbXBsYXRlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24odGVtcGxhdGUpLmRvbmUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmYWlsZWQnLCBlLCBkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbigkKHRoaXMpKS5kb25lKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZmFpbGVkJywgZSwgZGF0YSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZXJyb3JUaHJvd24gIT09ICdhYm9ydCcpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fYWRqdXN0TWF4TnVtYmVyT2ZGaWxlcygtZGF0YS5maWxlcy5sZW5ndGgpOw0KICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSB0aGF0Ll9yZW5kZXJVcGxvYWQoZGF0YS5maWxlcykNCiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0aGF0Lm9wdGlvbnMuZmlsZXNDb250YWluZXIpDQogICAgICAgICAgICAgICAgICAgICAgICAuZGF0YSgnZGF0YScsIGRhdGEpOw0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9mb3JjZVJlZmxvdyhkYXRhLmNvbnRleHQpOw0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKGRhdGEuY29udGV4dCkuZG9uZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWxlZCcsIGUsIGRhdGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWxlZCcsIGUsIGRhdGEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkIHByb2dyZXNzIGV2ZW50czoNCiAgICAgICAgICAgIHByb2dyZXNzOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQpIHsNCiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0LmZpbmQoJy5iYXInKS5jc3MoDQogICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkgKyAnJScNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGdsb2JhbCB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOg0KICAgICAgICAgICAgcHJvZ3Jlc3NhbGw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCcuZmlsZXVwbG9hZC1wcm9ncmVzcycpDQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuYmFyJykuY3NzKA0KICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCAqIDEwMCwgMTApICsgJyUnDQogICAgICAgICAgICAgICAgICAgICkuZW5kKCkNCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcy1leHRlbmRlZCcpLmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5odG1sKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoJ2ZpbGV1cGxvYWQnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX3JlbmRlckV4dGVuZGVkUHJvZ3Jlc3MoZGF0YSkNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0YXJ0LCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0YXJ0IGV2ZW50Og0KICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKTsNCiAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKCQodGhpcykuZmluZCgnLmZpbGV1cGxvYWQtcHJvZ3Jlc3MnKSkuZG9uZSgNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RhcnRlZCcsIGUpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdG9wLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6DQogICAgICAgICAgICBzdG9wOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdmaWxldXBsb2FkJyk7DQogICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbigkKHRoaXMpLmZpbmQoJy5maWxldXBsb2FkLXByb2dyZXNzJykpLmRvbmUoDQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmJhcicpLmNzcygnd2lkdGgnLCAnMCUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnByb2dyZXNzLWV4dGVuZGVkJykuaHRtbCgnJm5ic3A7Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdzdG9wcGVkJywgZSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBmaWxlIGRlbGV0aW9uOg0KICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpOw0KICAgICAgICAgICAgICAgIGlmIChkYXRhLnVybCkgew0KICAgICAgICAgICAgICAgICAgICAkLmFqYXgoZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX2FkanVzdE1heE51bWJlck9mRmlsZXMoMSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oZGF0YS5jb250ZXh0KS5kb25lKA0KICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZGVzdHJveWVkJywgZSwgZGF0YSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIC8vIExpbmsgaGFuZGxlciwgdGhhdCBhbGxvd3MgdG8gZG93bmxvYWQgZmlsZXMNCiAgICAgICAgLy8gYnkgZHJhZyAmIGRyb3Agb2YgdGhlIGxpbmtzIHRvIHRoZSBkZXNrdG9wOg0KICAgICAgICBfZW5hYmxlRHJhZ1RvRGVza3RvcDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGxpbmsgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgIHVybCA9IGxpbmsucHJvcCgnaHJlZicpLA0KICAgICAgICAgICAgICAgIG5hbWUgPSBsaW5rLnByb3AoJ2Rvd25sb2FkJyksDQogICAgICAgICAgICAgICAgdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KICAgICAgICAgICAgbGluay5iaW5kKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgNCiAgICAgICAgICAgICAgICAgICAgICAgICdEb3dubG9hZFVSTCcsDQogICAgICAgICAgICAgICAgICAgICAgICBbdHlwZSwgbmFtZSwgdXJsXS5qb2luKCc6JykNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfYWRqdXN0TWF4TnVtYmVyT2ZGaWxlczogZnVuY3Rpb24gKG9wZXJhbmQpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLm1heE51bWJlck9mRmlsZXMgPT09ICdudW1iZXInKSB7DQogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1heE51bWJlck9mRmlsZXMgKz0gb3BlcmFuZDsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1heE51bWJlck9mRmlsZXMgPCAxKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVGaWxlSW5wdXRCdXR0b24oKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVGaWxlSW5wdXRCdXR0b24oKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2Zvcm1hdEZpbGVTaXplOiBmdW5jdGlvbiAoYnl0ZXMpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgYnl0ZXMgIT09ICdudW1iZXInKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDAwMDApIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gKGJ5dGVzIC8gMTAwMDAwMDAwMCkudG9GaXhlZCgyKSArICcgR0InOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDApIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gKGJ5dGVzIC8gMTAwMDAwMCkudG9GaXhlZCgyKSArICcgTUInOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIChieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEtCJzsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZm9ybWF0Qml0cmF0ZTogZnVuY3Rpb24gKGJpdHMpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgYml0cyAhPT0gJ251bWJlcicpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoYml0cyA+PSAxMDAwMDAwMDAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIChiaXRzIC8gMTAwMDAwMDAwMCkudG9GaXhlZCgyKSArICcgR2JpdC9zJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChiaXRzID49IDEwMDAwMDApIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gKGJpdHMgLyAxMDAwMDAwKS50b0ZpeGVkKDIpICsgJyBNYml0L3MnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGJpdHMgPj0gMTAwMCkgew0KICAgICAgICAgICAgICAgIHJldHVybiAoYml0cyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIGtiaXQvcyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gYml0cyArICcgYml0L3MnOw0KICAgICAgICB9LA0KDQogICAgICAgIF9mb3JtYXRUaW1lOiBmdW5jdGlvbiAoc2Vjb25kcykgew0KICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzZWNvbmRzICogMTAwMCksDQogICAgICAgICAgICAgICAgZGF5cyA9IHBhcnNlSW50KHNlY29uZHMgLyA4NjQwMCwgMTApOw0KICAgICAgICAgICAgZGF5cyA9IGRheXMgPyBkYXlzICsgJ2QgJyA6ICcnOw0KICAgICAgICAgICAgcmV0dXJuIGRheXMgKw0KICAgICAgICAgICAgICAgICgnMCcgKyBkYXRlLmdldFVUQ0hvdXJzKCkpLnNsaWNlKC0yKSArICc6JyArDQogICAgICAgICAgICAgICAgKCcwJyArIGRhdGUuZ2V0VVRDTWludXRlcygpKS5zbGljZSgtMikgKyAnOicgKw0KICAgICAgICAgICAgICAgICgnMCcgKyBkYXRlLmdldFVUQ1NlY29uZHMoKSkuc2xpY2UoLTIpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9mb3JtYXRQZXJjZW50YWdlOiBmdW5jdGlvbiAoZmxvYXRWYWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIChmbG9hdFZhbHVlICogMTAwKS50b0ZpeGVkKDIpICsgJyAlJzsNCiAgICAgICAgfSwNCg0KICAgICAgICBfcmVuZGVyRXh0ZW5kZWRQcm9ncmVzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXRCaXRyYXRlKGRhdGEuYml0cmF0ZSkgKyAnIHwgJyArDQogICAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0VGltZSgNCiAgICAgICAgICAgICAgICAgICAgKGRhdGEudG90YWwgLSBkYXRhLmxvYWRlZCkgKiA4IC8gZGF0YS5iaXRyYXRlDQogICAgICAgICAgICAgICAgKSArICcgfCAnICsNCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRQZXJjZW50YWdlKA0KICAgICAgICAgICAgICAgICAgICBkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwNCiAgICAgICAgICAgICAgICApICsgJyB8ICcgKw0KICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdEZpbGVTaXplKGRhdGEubG9hZGVkKSArICcgLyAnICsNCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRGaWxlU2l6ZShkYXRhLnRvdGFsKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfaGFzRXJyb3I6IGZ1bmN0aW9uIChmaWxlKSB7DQogICAgICAgICAgICBpZiAoZmlsZS5lcnJvcikgew0KICAgICAgICAgICAgICAgIHJldHVybiBmaWxlLmVycm9yOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBhZGRlZCBmaWxlcyBpcyBzdWJ0cmFjdGVkIGZyb20NCiAgICAgICAgICAgIC8vIG1heE51bWJlck9mRmlsZXMgYmVmb3JlIHZhbGlkYXRpb24sIHNvIHdlIGNoZWNrIGlmDQogICAgICAgICAgICAvLyBtYXhOdW1iZXJPZkZpbGVzIGlzIGJlbG93IDAgKGluc3RlYWQgb2YgYmVsb3cgMSk6DQogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1heE51bWJlck9mRmlsZXMgPCAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICdtYXhOdW1iZXJPZkZpbGVzJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIEZpbGVzIGFyZSBhY2NlcHRlZCBpZiBlaXRoZXIgdGhlIGZpbGUgdHlwZSBvciB0aGUgZmlsZSBuYW1lDQogICAgICAgICAgICAvLyBtYXRjaGVzIGFnYWluc3QgdGhlIGFjY2VwdEZpbGVUeXBlcyByZWd1bGFyIGV4cHJlc3Npb24sIGFzDQogICAgICAgICAgICAvLyBvbmx5IGJyb3dzZXJzIHdpdGggc3VwcG9ydCBmb3IgdGhlIEZpbGUgQVBJIHJlcG9ydCB0aGUgdHlwZToNCiAgICAgICAgICAgIGlmICghKHRoaXMub3B0aW9ucy5hY2NlcHRGaWxlVHlwZXMudGVzdChmaWxlLnR5cGUpIHx8DQogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5hY2NlcHRGaWxlVHlwZXMudGVzdChmaWxlLm5hbWUpKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiAnYWNjZXB0RmlsZVR5cGVzJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubWF4RmlsZVNpemUgJiYNCiAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplID4gdGhpcy5vcHRpb25zLm1heEZpbGVTaXplKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICdtYXhGaWxlU2l6ZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodHlwZW9mIGZpbGUuc2l6ZSA9PT0gJ251bWJlcicgJiYNCiAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplIDwgdGhpcy5vcHRpb25zLm1pbkZpbGVTaXplKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICdtaW5GaWxlU2l6ZSc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgfSwNCg0KICAgICAgICBfdmFsaWRhdGU6IGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIHZhbGlkID0gISFmaWxlcy5sZW5ndGg7DQogICAgICAgICAgICAkLmVhY2goZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSB0aGF0Ll9oYXNFcnJvcihmaWxlKTsNCiAgICAgICAgICAgICAgICBpZiAoZmlsZS5lcnJvcikgew0KICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJuIHZhbGlkOw0KICAgICAgICB9LA0KDQogICAgICAgIF9yZW5kZXJUZW1wbGF0ZTogZnVuY3Rpb24gKGZ1bmMsIGZpbGVzKSB7DQogICAgICAgICAgICBpZiAoIWZ1bmMpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gJCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMoew0KICAgICAgICAgICAgICAgIGZpbGVzOiBmaWxlcywNCiAgICAgICAgICAgICAgICBmb3JtYXRGaWxlU2l6ZTogdGhpcy5fZm9ybWF0RmlsZVNpemUsDQogICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiAkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiAkKHRoaXMub3B0aW9ucy50ZW1wbGF0ZXNDb250YWluZXIpLmh0bWwocmVzdWx0KS5jaGlsZHJlbigpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9yZW5kZXJQcmV2aWV3OiBmdW5jdGlvbiAoZmlsZSwgbm9kZSkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsDQogICAgICAgICAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpOw0KICAgICAgICAgICAgcmV0dXJuICgobG9hZEltYWdlICYmIGxvYWRJbWFnZSgNCiAgICAgICAgICAgICAgICBmaWxlLA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChpbWcpIHsNCiAgICAgICAgICAgICAgICAgICAgbm9kZS5hcHBlbmQoaW1nKTsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3cobm9kZSk7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24obm9kZSkuZG9uZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgobm9kZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICBpZiAoISQuY29udGFpbnMoZG9jdW1lbnQuYm9keSwgbm9kZVswXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG5vdCBwYXJ0IG9mIHRoZSBET00sDQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGV2ZW50cyBhcmUgbm90IHRyaWdnZXJlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcmVzb2x2ZSBtYW51YWxseToNCiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aChub2RlKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogb3B0aW9ucy5wcmV2aWV3TWF4V2lkdGgsDQogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogb3B0aW9ucy5wcmV2aWV3TWF4SGVpZ2h0LA0KICAgICAgICAgICAgICAgICAgICBjYW52YXM6IG9wdGlvbnMucHJldmlld0FzQ2FudmFzDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKSkgfHwgZGZkLnJlc29sdmVXaXRoKG5vZGUpKSAmJiBkZmQ7DQogICAgICAgIH0sDQoNCiAgICAgICAgX3JlbmRlclByZXZpZXdzOiBmdW5jdGlvbiAoZmlsZXMsIG5vZGVzKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsNCiAgICAgICAgICAgIG5vZGVzLmZpbmQoJy5wcmV2aWV3IHNwYW4nKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkgew0KICAgICAgICAgICAgICAgIHZhciBmaWxlID0gZmlsZXNbaW5kZXhdOw0KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnByZXZpZXdTb3VyY2VGaWxlVHlwZXMudGVzdChmaWxlLnR5cGUpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMucHJldmlld1NvdXJjZU1heEZpbGVTaXplKSAhPT0gJ251bWJlcicgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc2l6ZSA8IG9wdGlvbnMucHJldmlld1NvdXJjZU1heEZpbGVTaXplKSkgew0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9wcm9jZXNzaW5nUXVldWUgPSB0aGF0Ll9wcm9jZXNzaW5nUXVldWUucGlwZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGZkID0gJC5EZWZlcnJlZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcmVuZGVyUHJldmlldyhmaWxlLCAkKGVsZW1lbnQpKS5kb25lKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKHRoYXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2luZ1F1ZXVlOw0KICAgICAgICB9LA0KDQogICAgICAgIF9yZW5kZXJVcGxvYWQ6IGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclRlbXBsYXRlKA0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cGxvYWRUZW1wbGF0ZSwNCiAgICAgICAgICAgICAgICBmaWxlcw0KICAgICAgICAgICAgKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfcmVuZGVyRG93bmxvYWQ6IGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclRlbXBsYXRlKA0KICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlLA0KICAgICAgICAgICAgICAgIGZpbGVzDQogICAgICAgICAgICApLmZpbmQoJ2FbZG93bmxvYWRdJykuZWFjaCh0aGlzLl9lbmFibGVEcmFnVG9EZXNrdG9wKS5lbmQoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfc3RhcnRIYW5kbGVyOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgdmFyIGJ1dHRvbiA9ICQodGhpcyksDQogICAgICAgICAgICAgICAgdGVtcGxhdGUgPSBidXR0b24uY2xvc2VzdCgnLnRlbXBsYXRlLXVwbG9hZCcpLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB0ZW1wbGF0ZS5kYXRhKCdkYXRhJyk7DQogICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnN1Ym1pdCAmJiAhZGF0YS5qcVhIUiAmJiBkYXRhLnN1Ym1pdCgpKSB7DQogICAgICAgICAgICAgICAgYnV0dG9uLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2NhbmNlbEhhbmRsZXI6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB2YXIgdGVtcGxhdGUgPSAkKHRoaXMpLmNsb3Nlc3QoJy50ZW1wbGF0ZS11cGxvYWQnKSwNCiAgICAgICAgICAgICAgICBkYXRhID0gdGVtcGxhdGUuZGF0YSgnZGF0YScpIHx8IHt9Ow0KICAgICAgICAgICAgaWYgKCFkYXRhLmpxWEhSKSB7DQogICAgICAgICAgICAgICAgZGF0YS5lcnJvclRocm93biA9ICdhYm9ydCc7DQogICAgICAgICAgICAgICAgZS5kYXRhLmZpbGV1cGxvYWQuX3RyaWdnZXIoJ2ZhaWwnLCBlLCBkYXRhKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZGF0YS5qcVhIUi5hYm9ydCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9kZWxldGVIYW5kbGVyOiBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgdmFyIGJ1dHRvbiA9ICQodGhpcyk7DQogICAgICAgICAgICBlLmRhdGEuZmlsZXVwbG9hZC5fdHJpZ2dlcignZGVzdHJveScsIGUsIHsNCiAgICAgICAgICAgICAgICBjb250ZXh0OiBidXR0b24uY2xvc2VzdCgnLnRlbXBsYXRlLWRvd25sb2FkJyksDQogICAgICAgICAgICAgICAgdXJsOiBidXR0b24uYXR0cignZGF0YS11cmwnKSwNCiAgICAgICAgICAgICAgICB0eXBlOiBidXR0b24uYXR0cignZGF0YS10eXBlJykgfHwgJ0RFTEVURScsDQogICAgICAgICAgICAgICAgZGF0YVR5cGU6IGUuZGF0YS5maWxldXBsb2FkLm9wdGlvbnMuZGF0YVR5cGUNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9LA0KDQogICAgICAgIF9mb3JjZVJlZmxvdzogZnVuY3Rpb24gKG5vZGUpIHsNCiAgICAgICAgICAgIHRoaXMuX3JlZmxvdyA9ICQuc3VwcG9ydC50cmFuc2l0aW9uICYmDQogICAgICAgICAgICAgICAgbm9kZS5sZW5ndGggJiYgbm9kZVswXS5vZmZzZXRXaWR0aDsNCiAgICAgICAgfSwNCg0KICAgICAgICBfdHJhbnNpdGlvbjogZnVuY3Rpb24gKG5vZGUpIHsNCiAgICAgICAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCk7DQogICAgICAgICAgICBpZiAoJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgbm9kZS5oYXNDbGFzcygnZmFkZScpKSB7DQogICAgICAgICAgICAgICAgbm9kZS5iaW5kKA0KICAgICAgICAgICAgICAgICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsDQogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVzcG9uZCB0byBvdGhlciB0cmFuc2l0aW9ucyBldmVudHMNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjb250YWluZXIgZWxlbWVudCwgZS5nLiBmcm9tIGJ1dHRvbiBlbGVtZW50czoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gbm9kZVswXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudW5iaW5kKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKG5vZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgKS50b2dnbGVDbGFzcygnaW4nKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgbm9kZS50b2dnbGVDbGFzcygnaW4nKTsNCiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgobm9kZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZGZkOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0QnV0dG9uQmFyRXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGZpbGVVcGxvYWRCdXR0b25CYXIgPSB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGV1cGxvYWQtYnV0dG9uYmFyJyksDQogICAgICAgICAgICAgICAgZmlsZXNMaXN0ID0gdGhpcy5vcHRpb25zLmZpbGVzQ29udGFpbmVyLA0KICAgICAgICAgICAgICAgIG5zID0gdGhpcy5vcHRpb25zLm5hbWVzcGFjZTsNCiAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLnN0YXJ0JykNCiAgICAgICAgICAgICAgICAuYmluZCgnY2xpY2suJyArIG5zLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgICAgIGZpbGVzTGlzdC5maW5kKCcuc3RhcnQgYnV0dG9uJykuY2xpY2soKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLmNhbmNlbCcpDQogICAgICAgICAgICAgICAgLmJpbmQoJ2NsaWNrLicgKyBucywgZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmNhbmNlbCBidXR0b24nKS5jbGljaygpOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgZmlsZVVwbG9hZEJ1dHRvbkJhci5maW5kKCcuZGVsZXRlJykNCiAgICAgICAgICAgICAgICAuYmluZCgnY2xpY2suJyArIG5zLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICAgICAgICAgIGZpbGVzTGlzdC5maW5kKCcuZGVsZXRlIGlucHV0OmNoZWNrZWQnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgLnNpYmxpbmdzKCdidXR0b24nKS5jbGljaygpOw0KICAgICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkQnV0dG9uQmFyLmZpbmQoJy50b2dnbGUnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICBmaWxlVXBsb2FkQnV0dG9uQmFyLmZpbmQoJy50b2dnbGUnKQ0KICAgICAgICAgICAgICAgIC5iaW5kKCdjaGFuZ2UuJyArIG5zLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmRlbGV0ZSBpbnB1dCcpLnByb3AoDQogICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tlZCcsDQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpDQogICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2Rlc3Ryb3lCdXR0b25CYXJFdmVudEhhbmRsZXJzOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGV1cGxvYWQtYnV0dG9uYmFyIGJ1dHRvbicpDQogICAgICAgICAgICAgICAgLnVuYmluZCgnY2xpY2suJyArIHRoaXMub3B0aW9ucy5uYW1lc3BhY2UpOw0KICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJy5maWxldXBsb2FkLWJ1dHRvbmJhciAudG9nZ2xlJykNCiAgICAgICAgICAgICAgICAudW5iaW5kKCdjaGFuZ2UuJyArIHRoaXMub3B0aW9ucy5uYW1lc3BhY2UpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5faW5pdEV2ZW50SGFuZGxlcnMuY2FsbCh0aGlzKTsNCiAgICAgICAgICAgIHZhciBldmVudERhdGEgPSB7ZmlsZXVwbG9hZDogdGhpc307DQogICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZXNDb250YWluZXINCiAgICAgICAgICAgICAgICAuZGVsZWdhdGUoDQogICAgICAgICAgICAgICAgICAgICcuc3RhcnQgYnV0dG9uJywNCiAgICAgICAgICAgICAgICAgICAgJ2NsaWNrLicgKyB0aGlzLm9wdGlvbnMubmFtZXNwYWNlLA0KICAgICAgICAgICAgICAgICAgICBldmVudERhdGEsDQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0SGFuZGxlcg0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAuZGVsZWdhdGUoDQogICAgICAgICAgICAgICAgICAgICcuY2FuY2VsIGJ1dHRvbicsDQogICAgICAgICAgICAgICAgICAgICdjbGljay4nICsgdGhpcy5vcHRpb25zLm5hbWVzcGFjZSwNCiAgICAgICAgICAgICAgICAgICAgZXZlbnREYXRhLA0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYW5jZWxIYW5kbGVyDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIC5kZWxlZ2F0ZSgNCiAgICAgICAgICAgICAgICAgICAgJy5kZWxldGUgYnV0dG9uJywNCiAgICAgICAgICAgICAgICAgICAgJ2NsaWNrLicgKyB0aGlzLm9wdGlvbnMubmFtZXNwYWNlLA0KICAgICAgICAgICAgICAgICAgICBldmVudERhdGEsDQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUhhbmRsZXINCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgdGhpcy5faW5pdEJ1dHRvbkJhckV2ZW50SGFuZGxlcnMoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZGVzdHJveUV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOw0KICAgICAgICAgICAgdGhpcy5fZGVzdHJveUJ1dHRvbkJhckV2ZW50SGFuZGxlcnMoKTsNCiAgICAgICAgICAgIG9wdGlvbnMuZmlsZXNDb250YWluZXINCiAgICAgICAgICAgICAgICAudW5kZWxlZ2F0ZSgnLnN0YXJ0IGJ1dHRvbicsICdjbGljay4nICsgb3B0aW9ucy5uYW1lc3BhY2UpDQogICAgICAgICAgICAgICAgLnVuZGVsZWdhdGUoJy5jYW5jZWwgYnV0dG9uJywgJ2NsaWNrLicgKyBvcHRpb25zLm5hbWVzcGFjZSkNCiAgICAgICAgICAgICAgICAudW5kZWxlZ2F0ZSgnLmRlbGV0ZSBidXR0b24nLCAnY2xpY2suJyArIG9wdGlvbnMubmFtZXNwYWNlKTsNCiAgICAgICAgICAgIHBhcmVudFdpZGdldC5wcm90b3R5cGUuX2Rlc3Ryb3lFdmVudEhhbmRsZXJzLmNhbGwodGhpcyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2VuYWJsZUZpbGVJbnB1dEJ1dHRvbjogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJy5maWxlaW5wdXQtYnV0dG9uIGlucHV0JykNCiAgICAgICAgICAgICAgICAucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSkNCiAgICAgICAgICAgICAgICAucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2Rpc2FibGVGaWxlSW5wdXRCdXR0b246IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCcpDQogICAgICAgICAgICAgICAgLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSkNCiAgICAgICAgICAgICAgICAucGFyZW50KCkuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXRUZW1wbGF0ZXM6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOw0KICAgICAgICAgICAgb3B0aW9ucy50ZW1wbGF0ZXNDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KA0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZXNDb250YWluZXIucHJvcCgnbm9kZU5hbWUnKQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIGlmICh0bXBsKSB7DQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudXBsb2FkVGVtcGxhdGVJZCkgew0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwbG9hZFRlbXBsYXRlID0gdG1wbChvcHRpb25zLnVwbG9hZFRlbXBsYXRlSWQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlSWQpIHsNCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlID0gdG1wbChvcHRpb25zLmRvd25sb2FkVGVtcGxhdGVJZCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0RmlsZXNDb250YWluZXI6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOw0KICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsZXNDb250YWluZXIgPT09IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZXNDb250YWluZXIgPSB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGVzJyk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5maWxlc0NvbnRhaW5lciBpbnN0YW5jZW9mICQpKSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lciA9ICQob3B0aW9ucy5maWxlc0NvbnRhaW5lcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXRTcGVjaWFsT3B0aW9uczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5faW5pdFNwZWNpYWxPcHRpb25zLmNhbGwodGhpcyk7DQogICAgICAgICAgICB0aGlzLl9pbml0RmlsZXNDb250YWluZXIoKTsNCiAgICAgICAgICAgIHRoaXMuX2luaXRUZW1wbGF0ZXMoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBwYXJlbnRXaWRnZXQucHJvdG90eXBlLl9jcmVhdGUuY2FsbCh0aGlzKTsNCiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPcHRpb25zTGlzdC5wdXNoKA0KICAgICAgICAgICAgICAgICdmaWxlc0NvbnRhaW5lcicsDQogICAgICAgICAgICAgICAgJ3VwbG9hZFRlbXBsYXRlSWQnLA0KICAgICAgICAgICAgICAgICdkb3dubG9hZFRlbXBsYXRlSWQnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgaWYgKCEkLmJsdWVpbXBGUCkgew0KICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZSA9ICQuRGVmZXJyZWQoKS5yZXNvbHZlV2l0aCh0aGlzKS5wcm9taXNlKCk7DQogICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2luZ1F1ZXVlOw0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBwYXJlbnRXaWRnZXQucHJvdG90eXBlLmVuYWJsZS5jYWxsKHRoaXMpOw0KICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJ2lucHV0LCBidXR0b24nKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsNCiAgICAgICAgICAgIHRoaXMuX2VuYWJsZUZpbGVJbnB1dEJ1dHRvbigpOw0KICAgICAgICB9LA0KDQogICAgICAgIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dCwgYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsNCiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVGaWxlSW5wdXRCdXR0b24oKTsNCiAgICAgICAgICAgIHBhcmVudFdpZGdldC5wcm90b3R5cGUuZGlzYWJsZS5jYWxsKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICB9KTsNCg0KfSkpOw0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBQbHVnaW4gNS4xMS4yDQogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQNCiAqDQogKiBDb3B5cmlnaHQgMjAxMCwgU2ViYXN0aWFuIFRzY2hhbg0KICogaHR0cHM6Ly9ibHVlaW1wLm5ldA0KICoNCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToNCiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKi8NCg0KLypqc2xpbnQgbm9tZW46IHRydWUsIHVucGFyYW06IHRydWUsIHJlZ2V4cDogdHJ1ZSAqLw0KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50LCBCbG9iLCBGb3JtRGF0YSwgbG9jYXRpb24gKi8NCg0KKGZ1bmN0aW9uIChmYWN0b3J5KSB7DQogICAgJ3VzZSBzdHJpY3QnOw0KICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsNCiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6DQogICAgICAgIGRlZmluZShbDQogICAgICAgICAgICAnanF1ZXJ5JywNCiAgICAgICAgICAgICdqcXVlcnkudWkud2lkZ2V0Jw0KICAgICAgICBdLCBmYWN0b3J5KTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6DQogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7DQogICAgfQ0KfShmdW5jdGlvbiAoJCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIC8vIFRoZSBGaWxlUmVhZGVyIEFQSSBpcyBub3QgYWN0dWFsbHkgdXNlZCwgYnV0IHdvcmtzIGFzIGZlYXR1cmUgZGV0ZWN0aW9uLA0KICAgIC8vIGFzIGUuZy4gU2FmYXJpIHN1cHBvcnRzIFhIUiBmaWxlIHVwbG9hZHMgdmlhIHRoZSBGb3JtRGF0YSBBUEksDQogICAgLy8gYnV0IG5vdCBub24tbXVsdGlwYXJ0IFhIUiBmaWxlIHVwbG9hZHM6DQogICAgJC5zdXBwb3J0LnhockZpbGVVcGxvYWQgPSAhISh3aW5kb3cuWE1MSHR0cFJlcXVlc3RVcGxvYWQgJiYgd2luZG93LkZpbGVSZWFkZXIpOw0KICAgICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQgPSAhIXdpbmRvdy5Gb3JtRGF0YTsNCg0KICAgIC8vIFRoZSBmaWxldXBsb2FkIHdpZGdldCBsaXN0ZW5zIGZvciBjaGFuZ2UgZXZlbnRzIG9uIGZpbGUgaW5wdXQgZmllbGRzIGRlZmluZWQNCiAgICAvLyB2aWEgZmlsZUlucHV0IHNldHRpbmcgYW5kIHBhc3RlIG9yIGRyb3AgZXZlbnRzIG9mIHRoZSBnaXZlbiBkcm9wWm9uZS4NCiAgICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBqUXVlcnkgV2lkZ2V0IG1ldGhvZHMsIHRoZSBmaWxldXBsb2FkIHdpZGdldA0KICAgIC8vIGV4cG9zZXMgdGhlICJhZGQiIGFuZCAic2VuZCIgbWV0aG9kcywgdG8gYWRkIG9yIGRpcmVjdGx5IHNlbmQgZmlsZXMgdXNpbmcNCiAgICAvLyB0aGUgZmlsZXVwbG9hZCBBUEkuDQogICAgLy8gQnkgZGVmYXVsdCwgZmlsZXMgYWRkZWQgdmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBwYXN0ZSwgZHJhZyAmIGRyb3Agb3INCiAgICAvLyAiYWRkIiBtZXRob2QgYXJlIHVwbG9hZGVkIGltbWVkaWF0ZWx5LCBidXQgaXQgaXMgcG9zc2libGUgdG8gb3ZlcnJpZGUNCiAgICAvLyB0aGUgImFkZCIgY2FsbGJhY2sgb3B0aW9uIHRvIHF1ZXVlIGZpbGUgdXBsb2Fkcy4NCiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywgew0KDQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIC8vIFRoZSBuYW1lc3BhY2UgdXNlZCBmb3IgZXZlbnQgaGFuZGxlciBiaW5kaW5nIG9uIHRoZSBkcm9wWm9uZSBhbmQNCiAgICAgICAgICAgIC8vIGZpbGVJbnB1dCBjb2xsZWN0aW9ucy4NCiAgICAgICAgICAgIC8vIElmIG5vdCBzZXQsIHRoZSBuYW1lIG9mIHRoZSB3aWRnZXQgKCJmaWxldXBsb2FkIikgaXMgdXNlZC4NCiAgICAgICAgICAgIG5hbWVzcGFjZTogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gVGhlIGRyb3AgdGFyZ2V0IGNvbGxlY3Rpb24sIGJ5IHRoZSBkZWZhdWx0IHRoZSBjb21wbGV0ZSBkb2N1bWVudC4NCiAgICAgICAgICAgIC8vIFNldCB0byBudWxsIG9yIGFuIGVtcHR5IGNvbGxlY3Rpb24gdG8gZGlzYWJsZSBkcmFnICYgZHJvcCBzdXBwb3J0Og0KICAgICAgICAgICAgZHJvcFpvbmU6ICQoZG9jdW1lbnQpLA0KICAgICAgICAgICAgLy8gVGhlIGZpbGUgaW5wdXQgZmllbGQgY29sbGVjdGlvbiwgdGhhdCBpcyBsaXN0ZW5lZCBmb3IgY2hhbmdlIGV2ZW50cy4NCiAgICAgICAgICAgIC8vIElmIHVuZGVmaW5lZCwgaXQgaXMgc2V0IHRvIHRoZSBmaWxlIGlucHV0IGZpZWxkcyBpbnNpZGUNCiAgICAgICAgICAgIC8vIG9mIHRoZSB3aWRnZXQgZWxlbWVudCBvbiBwbHVnaW4gaW5pdGlhbGl6YXRpb24uDQogICAgICAgICAgICAvLyBTZXQgdG8gbnVsbCBvciBhbiBlbXB0eSBjb2xsZWN0aW9uIHRvIGRpc2FibGUgdGhlIGNoYW5nZSBsaXN0ZW5lci4NCiAgICAgICAgICAgIGZpbGVJbnB1dDogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCBhIGNsb25lIGFmdGVyDQogICAgICAgICAgICAvLyBlYWNoIGlucHV0IGZpZWxkIGNoYW5nZSBldmVudC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgaWZyYW1lIHRyYW5zcG9ydA0KICAgICAgICAgICAgLy8gcXVldWVzIGFuZCBhbGxvd3MgY2hhbmdlIGV2ZW50cyB0byBiZSBmaXJlZCBmb3IgdGhlIHNhbWUgZmlsZQ0KICAgICAgICAgICAgLy8gc2VsZWN0aW9uLCBidXQgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2U6DQogICAgICAgICAgICByZXBsYWNlRmlsZUlucHV0OiB0cnVlLA0KICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgZmlsZSBmb3JtIGRhdGEgKHRoZSByZXF1ZXN0IGFyZ3VtZW50IG5hbWUpLg0KICAgICAgICAgICAgLy8gSWYgdW5kZWZpbmVkIG9yIGVtcHR5LCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZCBpcw0KICAgICAgICAgICAgLy8gdXNlZCwgb3IgImZpbGVzW10iIGlmIHRoZSBmaWxlIGlucHV0IG5hbWUgcHJvcGVydHkgaXMgYWxzbyBlbXB0eSwNCiAgICAgICAgICAgIC8vIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzOg0KICAgICAgICAgICAgcGFyYW1OYW1lOiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBlYWNoIGZpbGUgb2YgYSBzZWxlY3Rpb24gaXMgdXBsb2FkZWQgdXNpbmcgYW4gaW5kaXZpZHVhbA0KICAgICAgICAgICAgLy8gcmVxdWVzdCBmb3IgWEhSIHR5cGUgdXBsb2Fkcy4gU2V0IHRvIGZhbHNlIHRvIHVwbG9hZCBmaWxlDQogICAgICAgICAgICAvLyBzZWxlY3Rpb25zIGluIG9uZSByZXF1ZXN0IGVhY2g6DQogICAgICAgICAgICBzaW5nbGVGaWxlVXBsb2FkczogdHJ1ZSwNCiAgICAgICAgICAgIC8vIFRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZmlsZXMgdXBsb2FkZWQgd2l0aCBvbmUgWEhSIHJlcXVlc3QsDQogICAgICAgICAgICAvLyBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gMDoNCiAgICAgICAgICAgIGxpbWl0TXVsdGlGaWxlVXBsb2FkczogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gaXNzdWUgYWxsIGZpbGUgdXBsb2FkIHJlcXVlc3RzDQogICAgICAgICAgICAvLyBpbiBhIHNlcXVlbnRpYWwgb3JkZXI6DQogICAgICAgICAgICBzZXF1ZW50aWFsVXBsb2FkczogZmFsc2UsDQogICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXBsb2FkcywNCiAgICAgICAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOg0KICAgICAgICAgICAgbGltaXRDb25jdXJyZW50VXBsb2FkczogdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gZm9yY2UgaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOg0KICAgICAgICAgICAgZm9yY2VJZnJhbWVUcmFuc3BvcnQ6IGZhbHNlLA0KICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHJlZGlyZWN0IHVybCBvbiB0aGUNCiAgICAgICAgICAgIC8vIG9yaWdpbiBzZXJ2ZXIsIGZvciBjcm9zcy1kb21haW4gaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOg0KICAgICAgICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIHJlZGlyZWN0IHVybCwgc2VudCBhcyBwYXJ0IG9mIHRoZSBmb3JtDQogICAgICAgICAgICAvLyBkYXRhIGFuZCBzZXQgdG8gJ3JlZGlyZWN0JyBpZiB0aGlzIG9wdGlvbiBpcyBlbXB0eToNCiAgICAgICAgICAgIHJlZGlyZWN0UGFyYW1OYW1lOiB1bmRlZmluZWQsDQogICAgICAgICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdGhlIGxvY2F0aW9uIG9mIGEgcG9zdE1lc3NhZ2Ugd2luZG93LA0KICAgICAgICAgICAgLy8gdG8gZW5hYmxlIHBvc3RNZXNzYWdlIHRyYW5zcG9ydCB1cGxvYWRzOg0KICAgICAgICAgICAgcG9zdE1lc3NhZ2U6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFhIUiBmaWxlIHVwbG9hZHMgYXJlIHNlbnQgYXMgbXVsdGlwYXJ0L2Zvcm0tZGF0YS4NCiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGlzIGFsd2F5cyB1c2luZyBtdWx0aXBhcnQvZm9ybS1kYXRhLg0KICAgICAgICAgICAgLy8gU2V0IHRvIGZhbHNlIHRvIGVuYWJsZSBub24tbXVsdGlwYXJ0IFhIUiB1cGxvYWRzOg0KICAgICAgICAgICAgbXVsdGlwYXJ0OiB0cnVlLA0KICAgICAgICAgICAgLy8gVG8gdXBsb2FkIGxhcmdlIGZpbGVzIGluIHNtYWxsZXIgY2h1bmtzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24NCiAgICAgICAgICAgIC8vIHRvIGEgcHJlZmVycmVkIG1heGltdW0gY2h1bmsgc2l6ZS4gSWYgc2V0IHRvIDAsIG51bGwgb3IgdW5kZWZpbmVkLA0KICAgICAgICAgICAgLy8gb3IgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgQmxvYiBBUEksIGZpbGVzIHdpbGwNCiAgICAgICAgICAgIC8vIGJlIHVwbG9hZGVkIGFzIGEgd2hvbGUuDQogICAgICAgICAgICBtYXhDaHVua1NpemU6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIFdoZW4gYSBub24tbXVsdGlwYXJ0IHVwbG9hZCBvciBhIGNodW5rZWQgbXVsdGlwYXJ0IHVwbG9hZCBoYXMgYmVlbg0KICAgICAgICAgICAgLy8gYWJvcnRlZCwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSB1cGxvYWQgYnkgc2V0dGluZw0KICAgICAgICAgICAgLy8gaXQgdG8gdGhlIHNpemUgb2YgdGhlIGFscmVhZHkgdXBsb2FkZWQgYnl0ZXMuIFRoaXMgb3B0aW9uIGlzIG1vc3QNCiAgICAgICAgICAgIC8vIHVzZWZ1bCB3aGVuIG1vZGlmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgaW5zaWRlIG9mIHRoZSAiYWRkIiBvcg0KICAgICAgICAgICAgLy8gInNlbmQiIGNhbGxiYWNrcywgYXMgdGhlIG9wdGlvbnMgYXJlIGNsb25lZCBmb3IgZWFjaCBmaWxlIHVwbG9hZC4NCiAgICAgICAgICAgIHVwbG9hZGVkQnl0ZXM6IHVuZGVmaW5lZCwNCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIGZpbGUgdXBsb2FkcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZQ0KICAgICAgICAgICAgLy8gZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uLiBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2UgdG8NCiAgICAgICAgICAgIC8vIHByZXZlbnQgcmVjYWxjdWxhdGluZyB0aGUgZ2xvYmFsIHByb2dyZXNzIGRhdGE6DQogICAgICAgICAgICByZWNhbGN1bGF0ZVByb2dyZXNzOiB0cnVlLA0KICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBhbmQgdHJpZ2dlciBwcm9ncmVzcyBldmVudHM6DQogICAgICAgICAgICBwcm9ncmVzc0ludGVydmFsOiAxMDAsDQogICAgICAgICAgICAvLyBJbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gY2FsY3VsYXRlIHByb2dyZXNzIGJpdHJhdGU6DQogICAgICAgICAgICBiaXRyYXRlSW50ZXJ2YWw6IDUwMCwNCg0KICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBmb3JtIGRhdGEgdG8gYmUgc2VudCBhbG9uZyB3aXRoIHRoZSBmaWxlIHVwbG9hZHMgY2FuIGJlIHNldA0KICAgICAgICAgICAgLy8gdXNpbmcgdGhpcyBvcHRpb24sIHdoaWNoIGFjY2VwdHMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5hbWUgYW5kDQogICAgICAgICAgICAvLyB2YWx1ZSBwcm9wZXJ0aWVzLCBhIGZ1bmN0aW9uIHJldHVybmluZyBzdWNoIGFuIGFycmF5LCBhIEZvcm1EYXRhDQogICAgICAgICAgICAvLyBvYmplY3QgKGZvciBYSFIgZmlsZSB1cGxvYWRzKSwgb3IgYSBzaW1wbGUgb2JqZWN0Lg0KICAgICAgICAgICAgLy8gVGhlIGZvcm0gb2YgdGhlIGZpcnN0IGZpbGVJbnB1dCBpcyBnaXZlbiBhcyBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uOg0KICAgICAgICAgICAgZm9ybURhdGE6IGZ1bmN0aW9uIChmb3JtKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZvcm0uc2VyaWFsaXplQXJyYXkoKTsNCiAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgZmlsZXVwbG9hZA0KICAgICAgICAgICAgLy8gd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wLCBwYXN0ZSBvciBhZGQgQVBJIGNhbGwpLg0KICAgICAgICAgICAgLy8gSWYgdGhlIHNpbmdsZUZpbGVVcGxvYWRzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGlzIGNhbGxiYWNrIHdpbGwgYmUNCiAgICAgICAgICAgIC8vIGNhbGxlZCBvbmNlIGZvciBlYWNoIGZpbGUgaW4gdGhlIHNlbGVjdGlvbiBmb3IgWEhSIGZpbGUgdXBsYW9kcywgZWxzZQ0KICAgICAgICAgICAgLy8gb25jZSBmb3IgZWFjaCBmaWxlIHNlbGVjdGlvbi4NCiAgICAgICAgICAgIC8vIFRoZSB1cGxvYWQgc3RhcnRzIHdoZW4gdGhlIHN1Ym1pdCBtZXRob2QgaXMgaW52b2tlZCBvbiB0aGUgZGF0YSBwYXJhbWV0ZXIuDQogICAgICAgICAgICAvLyBUaGUgZGF0YSBvYmplY3QgY29udGFpbnMgYSBmaWxlcyBwcm9wZXJ0eSBob2xkaW5nIHRoZSBhZGRlZCBmaWxlcw0KICAgICAgICAgICAgLy8gYW5kIGFsbG93cyB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLg0KICAgICAgICAgICAgLy8gTGlzdGVuZXJzIGZvciB0aGlzIGNhbGxiYWNrIGNhbiBhbHNvIGJlIGJvdW5kIHRoZSBmb2xsb3dpbmcgd2F5Og0KICAgICAgICAgICAgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRhZGQnLCBmdW5jKTsNCiAgICAgICAgICAgIC8vIGRhdGEuc3VibWl0KCkgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGFuZCBhbGxvd3MgdG8gYXR0YWNoIGFkZGl0aW9uYWwNCiAgICAgICAgICAgIC8vIGhhbmRsZXJzIHVzaW5nIGpRdWVyeSdzIERlZmVycmVkIGNhbGxiYWNrczoNCiAgICAgICAgICAgIC8vIGRhdGEuc3VibWl0KCkuZG9uZShmdW5jKS5mYWlsKGZ1bmMpLmFsd2F5cyhmdW5jKTsNCiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgICAgICBkYXRhLnN1Ym1pdCgpOw0KICAgICAgICAgICAgfSwNCg0KICAgICAgICAgICAgLy8gT3RoZXIgY2FsbGJhY2tzOg0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdWJtaXQgZXZlbnQgb2YgZWFjaCBmaWxlIHVwbG9hZDoNCiAgICAgICAgICAgIC8vIHN1Ym1pdDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN1Ym1pdCcsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdGFydCBvZiBlYWNoIGZpbGUgdXBsb2FkIHJlcXVlc3Q6DQogICAgICAgICAgICAvLyBzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2Fkc2VuZCcsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgdXBsb2FkczoNCiAgICAgICAgICAgIC8vIGRvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRkb25lJywgZnVuYyk7DQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZmFpbGVkIChhYm9ydCBvciBlcnJvcikgdXBsb2FkczoNCiAgICAgICAgICAgIC8vIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRmYWlsJywgZnVuYyk7DQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgY29tcGxldGVkIChzdWNjZXNzLCBhYm9ydCBvciBlcnJvcikgcmVxdWVzdHM6DQogICAgICAgICAgICAvLyBhbHdheXM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRhbHdheXMnLCBmdW5jKTsNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOg0KICAgICAgICAgICAgLy8gcHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwcm9ncmVzcycsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGdsb2JhbCB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOg0KICAgICAgICAgICAgLy8gcHJvZ3Jlc3NhbGw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwcm9ncmVzc2FsbCcsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZHMgc3RhcnQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RhcnQgZXZlbnQ6DQogICAgICAgICAgICAvLyBzdGFydDogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN0YXJ0JywgZnVuYyk7DQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdG9wLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6DQogICAgICAgICAgICAvLyBzdG9wOiBmdW5jdGlvbiAoZSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2Fkc3RvcCcsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNoYW5nZSBldmVudHMgb2YgdGhlIGZpbGVJbnB1dCBjb2xsZWN0aW9uOg0KICAgICAgICAgICAgLy8gY2hhbmdlOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2hhbmdlJywgZnVuYyk7DQogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgcGFzdGUgZXZlbnRzIHRvIHRoZSBkcm9wWm9uZSBjb2xsZWN0aW9uOg0KICAgICAgICAgICAgLy8gcGFzdGU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwYXN0ZScsIGZ1bmMpOw0KICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGRyb3AgZXZlbnRzIG9mIHRoZSBkcm9wWm9uZSBjb2xsZWN0aW9uOg0KICAgICAgICAgICAgLy8gZHJvcDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyb3AnLCBmdW5jKTsNCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBkcmFnb3ZlciBldmVudHMgb2YgdGhlIGRyb3Bab25lIGNvbGxlY3Rpb246DQogICAgICAgICAgICAvLyBkcmFnb3ZlcjogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyYWdvdmVyJywgZnVuYyk7DQoNCiAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4gb3B0aW9ucyBhcmUgdXNlZCBhcyBzZXR0aW5ncyBvYmplY3QgZm9yIHRoZSBhamF4IGNhbGxzLg0KICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgalF1ZXJ5IGFqYXggc2V0dGluZ3MgcmVxdWlyZWQgZm9yIHRoZSBmaWxlIHVwbG9hZHM6DQogICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsDQogICAgICAgICAgICBjb250ZW50VHlwZTogZmFsc2UsDQogICAgICAgICAgICBjYWNoZTogZmFsc2UNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBBIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHJlcXVpcmUgYSByZWZyZXNoIGFmdGVyIGFzc2lnbmluZyBhIG5ldyB2YWx1ZToNCiAgICAgICAgX3JlZnJlc2hPcHRpb25zTGlzdDogWw0KICAgICAgICAgICAgJ25hbWVzcGFjZScsDQogICAgICAgICAgICAnZHJvcFpvbmUnLA0KICAgICAgICAgICAgJ2ZpbGVJbnB1dCcsDQogICAgICAgICAgICAnbXVsdGlwYXJ0JywNCiAgICAgICAgICAgICdmb3JjZUlmcmFtZVRyYW5zcG9ydCcNCiAgICAgICAgXSwNCg0KICAgICAgICBfQml0cmF0ZVRpbWVyOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9ICsobmV3IERhdGUoKSk7DQogICAgICAgICAgICB0aGlzLmxvYWRlZCA9IDA7DQogICAgICAgICAgICB0aGlzLmJpdHJhdGUgPSAwOw0KICAgICAgICAgICAgdGhpcy5nZXRCaXRyYXRlID0gZnVuY3Rpb24gKG5vdywgbG9hZGVkLCBpbnRlcnZhbCkgew0KICAgICAgICAgICAgICAgIHZhciB0aW1lRGlmZiA9IG5vdyAtIHRoaXMudGltZXN0YW1wOw0KICAgICAgICAgICAgICAgIGlmICghdGhpcy5iaXRyYXRlIHx8ICFpbnRlcnZhbCB8fCB0aW1lRGlmZiA+IGludGVydmFsKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IChsb2FkZWQgLSB0aGlzLmxvYWRlZCkgKiAoMTAwMCAvIHRpbWVEaWZmKSAqIDg7DQogICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gbG9hZGVkOw0KICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IG5vdzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYml0cmF0ZTsNCiAgICAgICAgICAgIH07DQogICAgICAgIH0sDQoNCiAgICAgICAgX2lzWEhSVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zLmZvcmNlSWZyYW1lVHJhbnNwb3J0ICYmDQogICAgICAgICAgICAgICAgKCghb3B0aW9ucy5tdWx0aXBhcnQgJiYgJC5zdXBwb3J0LnhockZpbGVVcGxvYWQpIHx8DQogICAgICAgICAgICAgICAgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldEZvcm1EYXRhOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgdmFyIGZvcm1EYXRhOw0KICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmZvcm1EYXRhID09PSAnZnVuY3Rpb24nKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybURhdGEob3B0aW9ucy5mb3JtKTsNCiAgICAgICAgICAgIH0NCgkJCWlmICgkLmlzQXJyYXkob3B0aW9ucy5mb3JtRGF0YSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YTsNCiAgICAgICAgICAgIH0NCgkJCWlmIChvcHRpb25zLmZvcm1EYXRhKSB7DQogICAgICAgICAgICAgICAgZm9ybURhdGEgPSBbXTsNCiAgICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5mb3JtRGF0YSwgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZX0pOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHJldHVybiBmb3JtRGF0YTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBbXTsNCiAgICAgICAgfSwNCg0KICAgICAgICBfZ2V0VG90YWw6IGZ1bmN0aW9uIChmaWxlcykgew0KICAgICAgICAgICAgdmFyIHRvdGFsID0gMDsNCiAgICAgICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7DQogICAgICAgICAgICAgICAgdG90YWwgKz0gZmlsZS5zaXplIHx8IDE7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIHJldHVybiB0b3RhbDsNCiAgICAgICAgfSwNCg0KICAgICAgICBfb25Qcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHsNCiAgICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHsNCiAgICAgICAgICAgICAgICB2YXIgbm93ID0gKyhuZXcgRGF0ZSgpKSwNCiAgICAgICAgICAgICAgICAgICAgdG90YWwsDQogICAgICAgICAgICAgICAgICAgIGxvYWRlZDsNCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5fdGltZSAmJiBkYXRhLnByb2dyZXNzSW50ZXJ2YWwgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgIChub3cgLSBkYXRhLl90aW1lIDwgZGF0YS5wcm9ncmVzc0ludGVydmFsKSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgIT09IGUudG90YWwpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBkYXRhLl90aW1lID0gbm93Ow0KICAgICAgICAgICAgICAgIHRvdGFsID0gZGF0YS50b3RhbCB8fCB0aGlzLl9nZXRUb3RhbChkYXRhLmZpbGVzKTsNCiAgICAgICAgICAgICAgICBsb2FkZWQgPSBwYXJzZUludCgNCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgLyBlLnRvdGFsICogKGRhdGEuY2h1bmtTaXplIHx8IHRvdGFsKSwNCiAgICAgICAgICAgICAgICAgICAgMTANCiAgICAgICAgICAgICAgICApICsgKGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwKTsNCiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgKz0gbG9hZGVkIC0gKGRhdGEubG9hZGVkIHx8IGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwKTsNCiAgICAgICAgICAgICAgICBkYXRhLmxlbmd0aENvbXB1dGFibGUgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGRhdGEubG9hZGVkID0gbG9hZGVkOw0KICAgICAgICAgICAgICAgIGRhdGEudG90YWwgPSB0b3RhbDsNCiAgICAgICAgICAgICAgICBkYXRhLmJpdHJhdGUgPSBkYXRhLl9iaXRyYXRlVGltZXIuZ2V0Qml0cmF0ZSgNCiAgICAgICAgICAgICAgICAgICAgbm93LA0KICAgICAgICAgICAgICAgICAgICBsb2FkZWQsDQogICAgICAgICAgICAgICAgICAgIGRhdGEuYml0cmF0ZUludGVydmFsDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIHByb2dyZXNzIGV2ZW50IHdpdGggYSB0b3RhbCBkYXRhIHByb3BlcnR5IHNldA0KICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBmaWxlIHNpemUocykgb2YgdGhlIGN1cnJlbnQgdXBsb2FkIGFuZCBhIGxvYWRlZCBkYXRhDQogICAgICAgICAgICAgICAgLy8gcHJvcGVydHkgY2FsY3VsYXRlZCBhY2NvcmRpbmdseToNCiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdwcm9ncmVzcycsIGUsIGRhdGEpOw0KICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSBnbG9iYWwgcHJvZ3Jlc3MgZXZlbnQgZm9yIGFsbCBjdXJyZW50IGZpbGUgdXBsb2FkcywNCiAgICAgICAgICAgICAgICAvLyBpbmNsdWRpbmcgYWpheCBjYWxscyBxdWV1ZWQgZm9yIHNlcXVlbnRpYWwgZmlsZSB1cGxvYWRzOg0KICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ3Byb2dyZXNzYWxsJywgZSwgew0KICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IHRoaXMuX2xvYWRlZCwNCiAgICAgICAgICAgICAgICAgICAgdG90YWw6IHRoaXMuX3RvdGFsLA0KICAgICAgICAgICAgICAgICAgICBiaXRyYXRlOiB0aGlzLl9iaXRyYXRlVGltZXIuZ2V0Qml0cmF0ZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vdywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYml0cmF0ZUludGVydmFsDQogICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfaW5pdFByb2dyZXNzTGlzdGVuZXI6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54aHIgPyBvcHRpb25zLnhocigpIDogJC5hamF4U2V0dGluZ3MueGhyKCk7DQogICAgICAgICAgICAvLyBBY2Nlc3NzIHRvIHRoZSBuYXRpdmUgWEhSIG9iamVjdCBpcyByZXF1aXJlZCB0byBhZGQgZXZlbnQgbGlzdGVuZXJzDQogICAgICAgICAgICAvLyBmb3IgdGhlIHVwbG9hZCBwcm9ncmVzcyBldmVudDoNCiAgICAgICAgICAgIGlmICh4aHIudXBsb2FkKSB7DQogICAgICAgICAgICAgICAgJCh4aHIudXBsb2FkKS5iaW5kKCdwcm9ncmVzcycsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBvZSA9IGUub3JpZ2luYWxFdmVudDsNCiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9ncmVzcyBldmVudCBwcm9wZXJ0aWVzIGdldCBjb3BpZWQgb3ZlcjoNCiAgICAgICAgICAgICAgICAgICAgZS5sZW5ndGhDb21wdXRhYmxlID0gb2UubGVuZ3RoQ29tcHV0YWJsZTsNCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgPSBvZS5sb2FkZWQ7DQogICAgICAgICAgICAgICAgICAgIGUudG90YWwgPSBvZS50b3RhbDsNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcyhlLCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBvcHRpb25zLnhociA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhocjsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0WEhSRGF0YTogZnVuY3Rpb24gKG9wdGlvbnMpIHsNCiAgICAgICAgICAgIHZhciBmb3JtRGF0YSwNCiAgICAgICAgICAgICAgICBmaWxlID0gb3B0aW9ucy5maWxlc1swXSwNCiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgbm9uLW11bHRpcGFydCBzZXR0aW5nIGlmIG5vdCBzdXBwb3J0ZWQ6DQogICAgICAgICAgICAgICAgbXVsdGlwYXJ0ID0gb3B0aW9ucy5tdWx0aXBhcnQgfHwgISQuc3VwcG9ydC54aHJGaWxlVXBsb2FkLA0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IG9wdGlvbnMucGFyYW1OYW1lWzBdOw0KICAgICAgICAgICAgaWYgKCFtdWx0aXBhcnQgfHwgb3B0aW9ucy5ibG9iKSB7DQogICAgICAgICAgICAgICAgLy8gRm9yIG5vbi1tdWx0aXBhcnQgdXBsb2FkcyBhbmQgY2h1bmtlZCB1cGxvYWRzLA0KICAgICAgICAgICAgICAgIC8vIGZpbGUgbWV0YSBkYXRhIGlzIG5vdCBwYXJ0IG9mIHRoZSByZXF1ZXN0IGJvZHksDQogICAgICAgICAgICAgICAgLy8gc28gd2UgdHJhbnNtaXQgdGhpcyBkYXRhIGFzIHBhcnQgb2YgdGhlIEhUVFAgaGVhZGVycy4NCiAgICAgICAgICAgICAgICAvLyBGb3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzLCB0aGVzZSBoZWFkZXJzIG11c3QgYmUgYWxsb3dlZA0KICAgICAgICAgICAgICAgIC8vIHZpYSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIG9yIHJlbW92ZWQgdXNpbmcNCiAgICAgICAgICAgICAgICAvLyB0aGUgYmVmb3JlU2VuZCBjYWxsYmFjazoNCiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSAkLmV4dGVuZChvcHRpb25zLmhlYWRlcnMsIHsNCiAgICAgICAgICAgICAgICAgICAgJ1gtRmlsZS1OYW1lJzogZmlsZS5uYW1lLA0KICAgICAgICAgICAgICAgICAgICAnWC1GaWxlLVR5cGUnOiBmaWxlLnR5cGUsDQogICAgICAgICAgICAgICAgICAgICdYLUZpbGUtU2l6ZSc6IGZpbGUuc2l6ZQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5ibG9iKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIE5vbi1jaHVua2VkIG5vbi1tdWx0aXBhcnQgdXBsb2FkOg0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gZmlsZS50eXBlOw0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEgPSBmaWxlOw0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW11bHRpcGFydCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBDaHVua2VkIG5vbi1tdWx0aXBhcnQgdXBsb2FkOg0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG9wdGlvbnMuYmxvYjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAobXVsdGlwYXJ0ICYmICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQpIHsNCiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSkgew0KICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cucG9zdE1lc3NhZ2UgZG9lcyBub3QgYWxsb3cgc2VuZGluZyBGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAvLyBvYmplY3RzLCBzbyB3ZSBqdXN0IGFkZCB0aGUgRmlsZS9CbG9iIG9iamVjdHMgdG8NCiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGZvcm1EYXRhIGFycmF5IGFuZCBsZXQgdGhlIHBvc3RNZXNzYWdlIHdpbmRvdw0KICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIEZvcm1EYXRhIG9iamVjdCBvdXQgb2YgdGhpcyBhcnJheToNCiAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YShvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYmxvYikgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcGFyYW1OYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25zLmJsb2INCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0gfHwgcGFyYW1OYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5mb3JtRGF0YSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGE7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkLm5hbWUsIGZpZWxkLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChwYXJhbU5hbWUsIG9wdGlvbnMuYmxvYiwgZmlsZS5uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWxlIG9iamVjdHMgYXJlIGFsc28gQmxvYiBpbnN0YW5jZXMuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjaGVjayBhbGxvd3MgdGhlIHRlc3RzIHRvIHJ1biB3aXRoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVtbXkgb2JqZWN0czoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIEJsb2IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWVbaW5kZXhdIHx8IHBhcmFtTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEgPSBmb3JtRGF0YTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIEJsb2IgcmVmZXJlbmNlIGlzIG5vdCBuZWVkZWQgYW55bW9yZSwgZnJlZSBtZW1vcnk6DQogICAgICAgICAgICBvcHRpb25zLmJsb2IgPSBudWxsOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0SWZyYW1lU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBpZnJhbWUgZW5hYmxlcyB0aGUgaWZyYW1lIHRyYW5zcG9ydDoNCiAgICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGUgPSAnaWZyYW1lICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7DQogICAgICAgICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBhY2NlcHRzIGEgc2VyaWFsaXplZCBhcnJheSBhcyBmb3JtIGRhdGE6DQogICAgICAgICAgICBvcHRpb25zLmZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7DQogICAgICAgICAgICAvLyBBZGQgcmVkaXJlY3QgdXJsIHRvIGZvcm0gZGF0YSBvbiBjcm9zcy1kb21haW4gdXBsb2FkczoNCiAgICAgICAgICAgIGlmIChvcHRpb25zLnJlZGlyZWN0ICYmICQoJzxhPjwvYT4nKS5wcm9wKCdocmVmJywgb3B0aW9ucy51cmwpDQogICAgICAgICAgICAgICAgICAgIC5wcm9wKCdob3N0JykgIT09IGxvY2F0aW9uLmhvc3QpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm1EYXRhLnB1c2goew0KICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25zLnJlZGlyZWN0UGFyYW1OYW1lIHx8ICdyZWRpcmVjdCcsDQogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25zLnJlZGlyZWN0DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2luaXREYXRhU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7DQogICAgICAgICAgICBpZiAodGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsNCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NodW5rZWRVcGxvYWQob3B0aW9ucywgdHJ1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRYSFJEYXRhKG9wdGlvbnMpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc0xpc3RlbmVyKG9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSkgew0KICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBwb3N0bWVzc2FnZSBlbmFibGVzIHRoZQ0KICAgICAgICAgICAgICAgICAgICAvLyBwb3N0TWVzc2FnZSB0cmFuc3BvcnQ6DQogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGUgPSAncG9zdG1lc3NhZ2UgJyArIChvcHRpb25zLmRhdGFUeXBlIHx8ICcnKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuX2luaXRJZnJhbWVTZXR0aW5ncyhvcHRpb25zLCAnaWZyYW1lJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX2dldFBhcmFtTmFtZTogZnVuY3Rpb24gKG9wdGlvbnMpIHsNCiAgICAgICAgICAgIHZhciBmaWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KSwNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBvcHRpb25zLnBhcmFtTmFtZTsNCiAgICAgICAgICAgIGlmICghcGFyYW1OYW1lKSB7DQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW107DQogICAgICAgICAgICAgICAgZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSAkKHRoaXMpLA0KICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXScsDQogICAgICAgICAgICAgICAgICAgICAgICBpID0gKGlucHV0LnByb3AoJ2ZpbGVzJykgfHwgWzFdKS5sZW5ndGg7DQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUucHVzaChuYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBbZmlsZUlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXSddOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSBpZiAoISQuaXNBcnJheShwYXJhbU5hbWUpKSB7DQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW3BhcmFtTmFtZV07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcGFyYW1OYW1lOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0Rm9ybVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgICAgICAgLy8gUmV0cmlldmUgbWlzc2luZyBvcHRpb25zIGZyb20gdGhlIGlucHV0IGZpZWxkIGFuZCB0aGUNCiAgICAgICAgICAgIC8vIGFzc29jaWF0ZWQgZm9ybSwgaWYgYXZhaWxhYmxlOg0KICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcm0gfHwgIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm0gPSAkKG9wdGlvbnMuZmlsZUlucHV0LnByb3AoJ2Zvcm0nKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKTsNCiAgICAgICAgICAgIGlmICghb3B0aW9ucy51cmwpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMuZm9ybS5wcm9wKCdhY3Rpb24nKSB8fCBsb2NhdGlvbi5ocmVmOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSAiUE9TVCIgb3IgIlBVVCI6DQogICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAob3B0aW9ucy50eXBlIHx8IG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSB8fCAnJykNCiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09ICdQT1NUJyAmJiBvcHRpb25zLnR5cGUgIT09ICdQVVQnKSB7DQogICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9nZXRBSkFYU2V0dGluZ3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpOw0KICAgICAgICAgICAgdGhpcy5faW5pdEZvcm1TZXR0aW5ncyhvcHRpb25zKTsNCiAgICAgICAgICAgIHRoaXMuX2luaXREYXRhU2V0dGluZ3Mob3B0aW9ucyk7DQogICAgICAgICAgICByZXR1cm4gb3B0aW9uczsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBNYXBzIGpxWEhSIGNhbGxiYWNrcyB0byB0aGUgZXF1aXZhbGVudA0KICAgICAgICAvLyBtZXRob2RzIG9mIHRoZSBnaXZlbiBQcm9taXNlIG9iamVjdDoNCiAgICAgICAgX2VuaGFuY2VQcm9taXNlOiBmdW5jdGlvbiAocHJvbWlzZSkgew0KICAgICAgICAgICAgcHJvbWlzZS5zdWNjZXNzID0gcHJvbWlzZS5kb25lOw0KICAgICAgICAgICAgcHJvbWlzZS5lcnJvciA9IHByb21pc2UuZmFpbDsNCiAgICAgICAgICAgIHByb21pc2UuY29tcGxldGUgPSBwcm9taXNlLmFsd2F5czsNCiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOw0KICAgICAgICB9LA0KDQogICAgICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCBlbmhhbmNlZCB3aXRoDQogICAgICAgIC8vIHRoZSBqcVhIUiBtZXRob2RzIGFib3J0LCBzdWNjZXNzLCBlcnJvciBhbmQgY29tcGxldGU6DQogICAgICAgIF9nZXRYSFJQcm9taXNlOiBmdW5jdGlvbiAocmVzb2x2ZU9yUmVqZWN0LCBjb250ZXh0LCBhcmdzKSB7DQogICAgICAgICAgICB2YXIgZGZkID0gJC5EZWZlcnJlZCgpLA0KICAgICAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpOw0KICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgdGhpcy5vcHRpb25zLmNvbnRleHQgfHwgcHJvbWlzZTsNCiAgICAgICAgICAgIGlmIChyZXNvbHZlT3JSZWplY3QgPT09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgoY29udGV4dCwgYXJncyk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmVPclJlamVjdCA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICBkZmQucmVqZWN0V2l0aChjb250ZXh0LCBhcmdzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHByb21pc2UuYWJvcnQgPSBkZmQucHJvbWlzZTsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBVcGxvYWRzIGEgZmlsZSBpbiBtdWx0aXBsZSwgc2VxdWVudGlhbCByZXF1ZXN0cw0KICAgICAgICAvLyBieSBzcGxpdHRpbmcgdGhlIGZpbGUgdXAgaW4gbXVsdGlwbGUgYmxvYiBjaHVua3MuDQogICAgICAgIC8vIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRydWUsIG9ubHkgdGVzdHMgaWYgdGhlIGZpbGUNCiAgICAgICAgLy8gc2hvdWxkIGJlIHVwbG9hZGVkIGluIGNodW5rcywgYnV0IGRvZXMgbm90IGludm9rZSBhbnkNCiAgICAgICAgLy8gdXBsb2FkIHJlcXVlc3RzOg0KICAgICAgICBfY2h1bmtlZFVwbG9hZDogZnVuY3Rpb24gKG9wdGlvbnMsIHRlc3RPbmx5KSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sDQogICAgICAgICAgICAgICAgZnMgPSBmaWxlLnNpemUsDQogICAgICAgICAgICAgICAgdWIgPSBvcHRpb25zLnVwbG9hZGVkQnl0ZXMgPSBvcHRpb25zLnVwbG9hZGVkQnl0ZXMgfHwgMCwNCiAgICAgICAgICAgICAgICBtY3MgPSBvcHRpb25zLm1heENodW5rU2l6ZSB8fCBmcywNCiAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIEJsb2IgbWV0aG9kcyB3aXRoIHRoZSBzbGljZSBpbXBsZW1lbnRhdGlvbg0KICAgICAgICAgICAgICAgIC8vIGFjY29yZGluZyB0byB0aGUgVzNDIEJsb2IgQVBJIHNwZWNpZmljYXRpb246DQogICAgICAgICAgICAgICAgc2xpY2UgPSBmaWxlLndlYmtpdFNsaWNlIHx8IGZpbGUubW96U2xpY2UgfHwgZmlsZS5zbGljZSwNCiAgICAgICAgICAgICAgICB1cGxvYWQsDQogICAgICAgICAgICAgICAgbiwNCiAgICAgICAgICAgICAgICBqcVhIUiwNCiAgICAgICAgICAgICAgICBwaXBlOw0KICAgICAgICAgICAgaWYgKCEodGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykgJiYgc2xpY2UgJiYgKHViIHx8IG1jcyA8IGZzKSkgfHwNCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHRlc3RPbmx5KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodWIgPj0gZnMpIHsNCiAgICAgICAgICAgICAgICBmaWxlLmVycm9yID0gJ3VwbG9hZGVkQnl0ZXMnOw0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRYSFJQcm9taXNlKA0KICAgICAgICAgICAgICAgICAgICBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb250ZXh0LA0KICAgICAgICAgICAgICAgICAgICBbbnVsbCwgJ2Vycm9yJywgZmlsZS5lcnJvcl0NCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gbiBpcyB0aGUgbnVtYmVyIG9mIGJsb2JzIHRvIHVwbG9hZCwNCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWQgdmlhIGZpbGVzaXplLCB1cGxvYWRlZCBieXRlcyBhbmQgbWF4IGNodW5rIHNpemU6DQogICAgICAgICAgICBuID0gTWF0aC5jZWlsKChmcyAtIHViKSAvIG1jcyk7DQogICAgICAgICAgICAvLyBUaGUgY2h1bmsgdXBsb2FkIG1ldGhvZCBhY2NlcHRpbmcgdGhlIGNodW5rIG51bWJlciBhcyBwYXJhbWV0ZXI6DQogICAgICAgICAgICB1cGxvYWQgPSBmdW5jdGlvbiAoaSkgew0KICAgICAgICAgICAgICAgIGlmICghaSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fZ2V0WEhSUHJvbWlzZSh0cnVlLCBvcHRpb25zLmNvbnRleHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyBVcGxvYWQgdGhlIGJsb2JzIGluIHNlcXVlbnRpYWwgb3JkZXI6DQogICAgICAgICAgICAgICAgcmV0dXJuIHVwbG9hZChpIC09IDEpLnBpcGUoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgb3B0aW9ucyBvYmplY3QgZm9yIGVhY2ggY2h1bmsgdXBsb2FkOg0KICAgICAgICAgICAgICAgICAgICB2YXIgbyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgby5ibG9iID0gc2xpY2UuY2FsbCgNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsDQogICAgICAgICAgICAgICAgICAgICAgICB1YiArIGkgKiBtY3MsDQogICAgICAgICAgICAgICAgICAgICAgICB1YiArIChpICsgMSkgKiBtY3MNCiAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY2h1bmsgc2l6ZSwgYXMgdGhlIGJsb2IgaXRzZWxmDQogICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgZGVyZWZlcmVuY2VkIGFmdGVyIGRhdGEgcHJvY2Vzc2luZzoNCiAgICAgICAgICAgICAgICAgICAgby5jaHVua1NpemUgPSBvLmJsb2Iuc2l6ZTsNCiAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgdXBsb2FkIGRhdGEgKHRoZSBibG9iIGFuZCBwb3RlbnRpYWwgZm9ybSBkYXRhKToNCiAgICAgICAgICAgICAgICAgICAgdGhhdC5faW5pdFhIUkRhdGEobyk7DQogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBwcm9ncmVzcyBsaXN0ZW5lcnMgZm9yIHRoaXMgY2h1bmsgdXBsb2FkOg0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NMaXN0ZW5lcihvKTsNCiAgICAgICAgICAgICAgICAgICAganFYSFIgPSAoJC5hamF4KG8pIHx8IHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UsIG8uY29udGV4dCkpDQogICAgICAgICAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgaWYgdXBsb2FkIGlzIGRvbmUgYW5kDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gcHJvZ3Jlc3MgZXZlbnQgaGFzIGJlZW4gaW52b2tlZCBmb3IgdGhpcyBjaHVuazoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8ubG9hZGVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uUHJvZ3Jlc3MoJC5FdmVudCgncHJvZ3Jlc3MnLCB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiBvLmNodW5rU2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsOiBvLmNodW5rU2l6ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXBsb2FkZWRCeXRlcyA9IG8udXBsb2FkZWRCeXRlcyArPQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNodW5rU2l6ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4ganFYSFI7DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBwaXBlZCBQcm9taXNlIG9iamVjdCwgZW5oYW5jZWQgd2l0aCBhbiBhYm9ydCBtZXRob2QsDQogICAgICAgICAgICAvLyB3aGljaCBpcyBkZWxlZ2F0ZWQgdG8gdGhlIGpxWEhSIG9iamVjdCBvZiB0aGUgY3VycmVudCB1cGxvYWQsDQogICAgICAgICAgICAvLyBhbmQganFYSFIgY2FsbGJhY2tzIG1hcHBlZCB0byB0aGUgZXF1aXZhbGVudCBQcm9taXNlIG1ldGhvZHM6DQogICAgICAgICAgICBwaXBlID0gdXBsb2FkKG4pOw0KICAgICAgICAgICAgcGlwZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTsNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocGlwZSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2JlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlID09PSAwKSB7DQogICAgICAgICAgICAgICAgLy8gdGhlIHN0YXJ0IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIGFuIHVwbG9hZCBzdGFydHMNCiAgICAgICAgICAgICAgICAvLyBhbmQgbm8gb3RoZXIgdXBsb2FkcyBhcmUgY3VycmVudGx5IHJ1bm5pbmcsDQogICAgICAgICAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDoNCiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdzdGFydCcpOw0KICAgICAgICAgICAgICAgIC8vIFNldCB0aW1lciBmb3IgZ2xvYmFsIGJpdHJhdGUgcHJvZ3Jlc3MgY2FsY3VsYXRpb246DQogICAgICAgICAgICAgICAgdGhpcy5fYml0cmF0ZVRpbWVyID0gbmV3IHRoaXMuX0JpdHJhdGVUaW1lcigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5fYWN0aXZlICs9IDE7DQogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOg0KICAgICAgICAgICAgdGhpcy5fbG9hZGVkICs9IGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwOw0KICAgICAgICAgICAgdGhpcy5fdG90YWwgKz0gdGhpcy5fZ2V0VG90YWwoZGF0YS5maWxlcyk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uRG9uZTogZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIsIG9wdGlvbnMpIHsNCiAgICAgICAgICAgIGlmICghdGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsNCiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBwcm9ncmVzcyBldmVudCBmb3IgZWFjaCBpZnJhbWUgbG9hZDoNCiAgICAgICAgICAgICAgICB0aGlzLl9vblByb2dyZXNzKCQuRXZlbnQoJ3Byb2dyZXNzJywgew0KICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICBsb2FkZWQ6IDEsDQogICAgICAgICAgICAgICAgICAgIHRvdGFsOiAxDQogICAgICAgICAgICAgICAgfSksIG9wdGlvbnMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgb3B0aW9ucy5yZXN1bHQgPSByZXN1bHQ7DQogICAgICAgICAgICBvcHRpb25zLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOw0KICAgICAgICAgICAgb3B0aW9ucy5qcVhIUiA9IGpxWEhSOw0KICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcignZG9uZScsIG51bGwsIG9wdGlvbnMpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9vbkZhaWw6IGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24sIG9wdGlvbnMpIHsNCiAgICAgICAgICAgIG9wdGlvbnMuanFYSFIgPSBqcVhIUjsNCiAgICAgICAgICAgIG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7DQogICAgICAgICAgICBvcHRpb25zLmVycm9yVGhyb3duID0gZXJyb3JUaHJvd247DQogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdmYWlsJywgbnVsbCwgb3B0aW9ucyk7DQogICAgICAgICAgICBpZiAob3B0aW9ucy5yZWNhbGN1bGF0ZVByb2dyZXNzKSB7DQogICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBmYWlsZWQgKGVycm9yIG9yIGFib3J0KSBmaWxlIHVwbG9hZCBmcm9tDQogICAgICAgICAgICAgICAgLy8gdGhlIGdsb2JhbCBwcm9ncmVzcyBjYWxjdWxhdGlvbjoNCiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgLT0gb3B0aW9ucy5sb2FkZWQgfHwgb3B0aW9ucy51cGxvYWRlZEJ5dGVzIHx8IDA7DQogICAgICAgICAgICAgICAgdGhpcy5fdG90YWwgLT0gb3B0aW9ucy50b3RhbCB8fCB0aGlzLl9nZXRUb3RhbChvcHRpb25zLmZpbGVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfb25BbHdheXM6IGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IsIG9wdGlvbnMpIHsNCiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZSAtPSAxOw0KICAgICAgICAgICAgb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1czsNCiAgICAgICAgICAgIGlmIChqcVhIUm9yRXJyb3IgJiYganFYSFJvckVycm9yLmFsd2F5cykgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuanFYSFIgPSBqcVhIUm9yRXJyb3I7DQogICAgICAgICAgICAgICAgb3B0aW9ucy5yZXN1bHQgPSBqcVhIUm9yUmVzdWx0Ow0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmpxWEhSID0ganFYSFJvclJlc3VsdDsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmVycm9yVGhyb3duID0ganFYSFJvckVycm9yOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcignYWx3YXlzJywgbnVsbCwgb3B0aW9ucyk7DQogICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlID09PSAwKSB7DQogICAgICAgICAgICAgICAgLy8gVGhlIHN0b3AgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYWxsIHVwbG9hZHMgaGF2ZQ0KICAgICAgICAgICAgICAgIC8vIGJlZW4gY29tcGxldGVkLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6DQogICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcignc3RvcCcpOw0KICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOg0KICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRoaXMuX3RvdGFsID0gMDsNCiAgICAgICAgICAgICAgICB0aGlzLl9iaXRyYXRlVGltZXIgPSBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9vblNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsDQogICAgICAgICAgICAgICAganFYSFIsDQogICAgICAgICAgICAgICAgc2xvdCwNCiAgICAgICAgICAgICAgICBwaXBlLA0KICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGF0Ll9nZXRBSkFYU2V0dGluZ3MoZGF0YSksDQogICAgICAgICAgICAgICAgc2VuZCA9IGZ1bmN0aW9uIChyZXNvbHZlLCBhcmdzKSB7DQogICAgICAgICAgICAgICAgICAgIHRoYXQuX3NlbmRpbmcgKz0gMTsNCiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOg0KICAgICAgICAgICAgICAgICAgICBvcHRpb25zLl9iaXRyYXRlVGltZXIgPSBuZXcgdGhhdC5fQml0cmF0ZVRpbWVyKCk7DQogICAgICAgICAgICAgICAgICAgIGpxWEhSID0ganFYSFIgfHwgKA0KICAgICAgICAgICAgICAgICAgICAgICAgKHJlc29sdmUgIT09IGZhbHNlICYmDQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdzZW5kJywgZSwgb3B0aW9ucykgIT09IGZhbHNlICYmDQogICAgICAgICAgICAgICAgICAgICAgICAodGhhdC5fY2h1bmtlZFVwbG9hZChvcHRpb25zKSB8fCAkLmFqYXgob3B0aW9ucykpKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgb3B0aW9ucy5jb250ZXh0LCBhcmdzKQ0KICAgICAgICAgICAgICAgICAgICApLmRvbmUoZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uRG9uZShyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkZhaWwoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuYWx3YXlzKGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3NlbmRpbmcgLT0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uQWx3YXlzKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSb3JSZXN1bHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0YXR1cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUm9yRXJyb3IsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucw0KICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzID4gdGhhdC5fc2VuZGluZykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IHF1ZXVlZCB1cGxvYWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IGJlZW4gYWJvcnRlZDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0U2xvdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHRTbG90LmlzUmVqZWN0ZWQoKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QucmVzb2x2ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUjsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgdGhpcy5fYmVmb3JlU2VuZChlLCBvcHRpb25zKTsNCiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VxdWVudGlhbFVwbG9hZHMgfHwNCiAgICAgICAgICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzICYmDQogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzIDw9IHRoaXMuX3NlbmRpbmcpKSB7DQogICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzID4gMSkgew0KICAgICAgICAgICAgICAgICAgICBzbG90ID0gJC5EZWZlcnJlZCgpOw0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbG90cy5wdXNoKHNsb3QpOw0KICAgICAgICAgICAgICAgICAgICBwaXBlID0gc2xvdC5waXBlKHNlbmQpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHBpcGUgPSAodGhpcy5fc2VxdWVuY2UgPSB0aGlzLl9zZXF1ZW5jZS5waXBlKHNlbmQsIHNlbmQpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBwaXBlZCBQcm9taXNlIG9iamVjdCwgZW5oYW5jZWQgd2l0aCBhbiBhYm9ydCBtZXRob2QsDQogICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgZGVsZWdhdGVkIHRvIHRoZSBqcVhIUiBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgdXBsb2FkLA0KICAgICAgICAgICAgICAgIC8vIGFuZCBqcVhIUiBjYWxsYmFja3MgbWFwcGVkIHRvIHRoZSBlcXVpdmFsZW50IFByb21pc2UgbWV0aG9kczoNCiAgICAgICAgICAgICAgICBwaXBlLmFib3J0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFt1bmRlZmluZWQsICdhYm9ydCcsICdhYm9ydCddOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWpxWEhSKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QucmVqZWN0V2l0aChhcmdzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW5kKGZhbHNlLCBhcmdzKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwaXBlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBzZW5kKCk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uQWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLA0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWUsDQogICAgICAgICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpLA0KICAgICAgICAgICAgICAgIGxpbWl0ID0gb3B0aW9ucy5saW1pdE11bHRpRmlsZVVwbG9hZHMsDQogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gdGhpcy5fZ2V0UGFyYW1OYW1lKG9wdGlvbnMpLA0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCwNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTbGljZSwNCiAgICAgICAgICAgICAgICBmaWxlU2V0LA0KICAgICAgICAgICAgICAgIGk7DQogICAgICAgICAgICBpZiAoIShvcHRpb25zLnNpbmdsZUZpbGVVcGxvYWRzIHx8IGxpbWl0KSB8fA0KICAgICAgICAgICAgICAgICAgICAhdGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsNCiAgICAgICAgICAgICAgICBmaWxlU2V0ID0gW2RhdGEuZmlsZXNdOw0KICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtwYXJhbU5hbWVdOw0KICAgICAgICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyAmJiBsaW1pdCkgew0KICAgICAgICAgICAgICAgIGZpbGVTZXQgPSBbXTsNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTsNCiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YS5maWxlcy5sZW5ndGg7IGkgKz0gbGltaXQpIHsNCiAgICAgICAgICAgICAgICAgICAgZmlsZVNldC5wdXNoKGRhdGEuZmlsZXMuc2xpY2UoaSwgaSArIGxpbWl0KSk7DQogICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lLnNsaWNlKGksIGkgKyBsaW1pdCk7DQogICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lU2xpY2UubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTbGljZSA9IHBhcmFtTmFtZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQucHVzaChwYXJhbU5hbWVTbGljZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBwYXJhbU5hbWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBkYXRhLm9yaWdpbmFsRmlsZXMgPSBkYXRhLmZpbGVzOw0KICAgICAgICAgICAgJC5lYWNoKGZpbGVTZXQgfHwgZGF0YS5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7DQogICAgICAgICAgICAgICAgdmFyIG5ld0RhdGEgPSAkLmV4dGVuZCh7fSwgZGF0YSk7DQogICAgICAgICAgICAgICAgbmV3RGF0YS5maWxlcyA9IGZpbGVTZXQgPyBlbGVtZW50IDogW2VsZW1lbnRdOw0KICAgICAgICAgICAgICAgIG5ld0RhdGEucGFyYW1OYW1lID0gcGFyYW1OYW1lU2V0W2luZGV4XTsNCiAgICAgICAgICAgICAgICBuZXdEYXRhLnN1Ym1pdCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgbmV3RGF0YS5qcVhIUiA9IHRoaXMuanFYSFIgPQ0KICAgICAgICAgICAgICAgICAgICAgICAgKHRoYXQuX3RyaWdnZXIoJ3N1Ym1pdCcsIGUsIHRoaXMpICE9PSBmYWxzZSkgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uU2VuZChlLCB0aGlzKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuanFYSFI7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCA9IHRoYXQuX3RyaWdnZXIoJ2FkZCcsIGUsIG5ld0RhdGEpKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBGaWxlIE5vcm1hbGl6YXRpb24gZm9yIEdlY2tvIDEuOS4xIChGaXJlZm94IDMuNSkgc3VwcG9ydDoNCiAgICAgICAgX25vcm1hbGl6ZUZpbGU6IGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgew0KICAgICAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gdW5kZWZpbmVkICYmIGZpbGUuc2l6ZSA9PT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlTmFtZTsNCiAgICAgICAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9yZXBsYWNlRmlsZUlucHV0OiBmdW5jdGlvbiAoaW5wdXQpIHsNCiAgICAgICAgICAgIHZhciBpbnB1dENsb25lID0gaW5wdXQuY2xvbmUodHJ1ZSk7DQogICAgICAgICAgICAkKCc8Zm9ybT48L2Zvcm0+JykuYXBwZW5kKGlucHV0Q2xvbmUpWzBdLnJlc2V0KCk7DQogICAgICAgICAgICAvLyBEZXRhY2hpbmcgYWxsb3dzIHRvIGluc2VydCB0aGUgZmlsZUlucHV0IG9uIGFub3RoZXIgZm9ybQ0KICAgICAgICAgICAgLy8gd2l0aG91dCBsb29zaW5nIHRoZSBmaWxlIGlucHV0IHZhbHVlOg0KICAgICAgICAgICAgaW5wdXQuYWZ0ZXIoaW5wdXRDbG9uZSkuZGV0YWNoKCk7DQogICAgICAgICAgICAvLyBBdm9pZCBtZW1vcnkgbGVha3Mgd2l0aCB0aGUgZGV0YWNoZWQgZmlsZSBpbnB1dDoNCiAgICAgICAgICAgICQuY2xlYW5EYXRhKGlucHV0LnVuYmluZCgncmVtb3ZlJykpOw0KICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgb3JpZ2luYWwgZmlsZSBpbnB1dCBlbGVtZW50IGluIHRoZSBmaWxlSW5wdXQNCiAgICAgICAgICAgIC8vIGNvbGxlY3Rpb24gd2l0aCB0aGUgY2xvbmUsIHdoaWNoIGhhcyBiZWVuIGNvcGllZCBpbmNsdWRpbmcNCiAgICAgICAgICAgIC8vIGV2ZW50IGhhbmRsZXJzOg0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMub3B0aW9ucy5maWxlSW5wdXQubWFwKGZ1bmN0aW9uIChpLCBlbCkgew0KICAgICAgICAgICAgICAgIGlmIChlbCA9PT0gaW5wdXRbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0Q2xvbmVbMF07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBlbDsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgLy8gSWYgdGhlIHdpZGdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBvbiB0aGUgZmlsZSBpbnB1dCBpdHNlbGYsDQogICAgICAgICAgICAvLyBvdmVycmlkZSB0aGlzLmVsZW1lbnQgd2l0aCB0aGUgZmlsZSBpbnB1dCBjbG9uZToNCiAgICAgICAgICAgIGlmIChpbnB1dFswXSA9PT0gdGhpcy5lbGVtZW50WzBdKSB7DQogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gaW5wdXRDbG9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfb25DaGFuZ2U6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7DQogICAgICAgICAgICAgICAgICAgIGZpbGVzOiAkLmVhY2goJC5tYWtlQXJyYXkoZS50YXJnZXQuZmlsZXMpLCB0aGF0Ll9ub3JtYWxpemVGaWxlKSwNCiAgICAgICAgICAgICAgICAgICAgZmlsZUlucHV0OiAkKGUudGFyZ2V0KSwNCiAgICAgICAgICAgICAgICAgICAgZm9ybTogJChlLnRhcmdldC5mb3JtKQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICBpZiAoIWRhdGEuZmlsZXMubGVuZ3RoKSB7DQogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpbGVzIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUsIHRoZSBicm93c2VyIGRvZXMgbm90DQogICAgICAgICAgICAgICAgLy8gc3VwcG9ydCB0aGUgRmlsZSBBUEkgYW5kIHdlIGFkZCBhIHBzZXVkbyBGaWxlIG9iamVjdCB3aXRoDQogICAgICAgICAgICAgICAgLy8gdGhlIGlucHV0IHZhbHVlIGFzIG5hbWUgd2l0aCBwYXRoIGluZm9ybWF0aW9uIHJlbW92ZWQ6DQogICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IFt7bmFtZTogZS50YXJnZXQudmFsdWUucmVwbGFjZSgvXi4qXFwvLCAnJyl9XTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMucmVwbGFjZUZpbGVJbnB1dCkgew0KICAgICAgICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YS5maWxlSW5wdXQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHRoYXQuX3RyaWdnZXIoJ2NoYW5nZScsIGUsIGRhdGEpID09PSBmYWxzZSB8fA0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uUGFzdGU6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLA0KICAgICAgICAgICAgICAgIGNiZCA9IGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLA0KICAgICAgICAgICAgICAgIGl0ZW1zID0gKGNiZCAmJiBjYmQuaXRlbXMpIHx8IFtdLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7ZmlsZXM6IFtdfTsNCiAgICAgICAgICAgICQuZWFjaChpdGVtcywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7DQogICAgICAgICAgICAgICAgdmFyIGZpbGUgPSBpdGVtLmdldEFzRmlsZSAmJiBpdGVtLmdldEFzRmlsZSgpOw0KICAgICAgICAgICAgICAgIGlmIChmaWxlKSB7DQogICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMucHVzaChmaWxlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKCdwYXN0ZScsIGUsIGRhdGEpID09PSBmYWxzZSB8fA0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uRHJvcDogZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgIHZhciB0aGF0ID0gZS5kYXRhLmZpbGV1cGxvYWQsDQogICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLA0KICAgICAgICAgICAgICAgIGRhdGEgPSB7DQogICAgICAgICAgICAgICAgICAgIGZpbGVzOiAkLmVhY2goDQogICAgICAgICAgICAgICAgICAgICAgICAkLm1ha2VBcnJheShkYXRhVHJhbnNmZXIgJiYgZGF0YVRyYW5zZmVyLmZpbGVzKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX25vcm1hbGl6ZUZpbGUNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcignZHJvcCcsIGUsIGRhdGEpID09PSBmYWxzZSB8fA0KICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX29uRHJhZ092ZXI6IGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLA0KICAgICAgICAgICAgICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyID0gZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjsNCiAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKCdkcmFnb3ZlcicsIGUpID09PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXIpIHsNCiAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IGRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ2NvcHknOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIG5zID0gdGhpcy5vcHRpb25zLm5hbWVzcGFjZTsNCiAgICAgICAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZCh0aGlzLm9wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRyb3Bab25lDQogICAgICAgICAgICAgICAgICAgIC5iaW5kKCdkcmFnb3Zlci4nICsgbnMsIHtmaWxldXBsb2FkOiB0aGlzfSwgdGhpcy5fb25EcmFnT3ZlcikNCiAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ2Ryb3AuJyArIG5zLCB7ZmlsZXVwbG9hZDogdGhpc30sIHRoaXMuX29uRHJvcCkNCiAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ3Bhc3RlLicgKyBucywge2ZpbGV1cGxvYWQ6IHRoaXN9LCB0aGlzLl9vblBhc3RlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maWxlSW5wdXQNCiAgICAgICAgICAgICAgICAuYmluZCgnY2hhbmdlLicgKyBucywge2ZpbGV1cGxvYWQ6IHRoaXN9LCB0aGlzLl9vbkNoYW5nZSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX2Rlc3Ryb3lFdmVudEhhbmRsZXJzOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgbnMgPSB0aGlzLm9wdGlvbnMubmFtZXNwYWNlOw0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmRyb3Bab25lDQogICAgICAgICAgICAgICAgLnVuYmluZCgnZHJhZ292ZXIuJyArIG5zLCB0aGlzLl9vbkRyYWdPdmVyKQ0KICAgICAgICAgICAgICAgIC51bmJpbmQoJ2Ryb3AuJyArIG5zLCB0aGlzLl9vbkRyb3ApDQogICAgICAgICAgICAgICAgLnVuYmluZCgncGFzdGUuJyArIG5zLCB0aGlzLl9vblBhc3RlKTsNCiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maWxlSW5wdXQNCiAgICAgICAgICAgICAgICAudW5iaW5kKCdjaGFuZ2UuJyArIG5zLCB0aGlzLl9vbkNoYW5nZSk7DQogICAgICAgIH0sDQoNCiAgICAgICAgX3NldE9wdGlvbjogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsNCiAgICAgICAgICAgIHZhciByZWZyZXNoID0gJC5pbkFycmF5KGtleSwgdGhpcy5fcmVmcmVzaE9wdGlvbnNMaXN0KSAhPT0gLTE7DQogICAgICAgICAgICBpZiAocmVmcmVzaCkgew0KICAgICAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudEhhbmRsZXJzKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5jYWxsKHRoaXMsIGtleSwgdmFsdWUpOw0KICAgICAgICAgICAgaWYgKHJlZnJlc2gpIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9pbml0U3BlY2lhbE9wdGlvbnMoKTsNCiAgICAgICAgICAgICAgICB0aGlzLl9pbml0RXZlbnRIYW5kbGVycygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9LA0KDQogICAgICAgIF9pbml0U3BlY2lhbE9wdGlvbnM6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOw0KICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsZUlucHV0ID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMuZWxlbWVudC5pcygnaW5wdXQ6ZmlsZScpID8NCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA6IHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dDpmaWxlJyk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5maWxlSW5wdXQgaW5zdGFuY2VvZiAkKSkgew0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gJChvcHRpb25zLmZpbGVJbnB1dCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoIShvcHRpb25zLmRyb3Bab25lIGluc3RhbmNlb2YgJCkpIHsNCiAgICAgICAgICAgICAgICBvcHRpb25zLmRyb3Bab25lID0gJChvcHRpb25zLmRyb3Bab25lKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwNCg0KICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsNCiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgb3B0aW9ucyBzZXQgdmlhIEhUTUw1IGRhdGEtYXR0cmlidXRlczoNCiAgICAgICAgICAgICQuZXh0ZW5kKG9wdGlvbnMsICQodGhpcy5lbGVtZW50WzBdLmNsb25lTm9kZShmYWxzZSkpLmRhdGEoKSk7DQogICAgICAgICAgICBvcHRpb25zLm5hbWVzcGFjZSA9IG9wdGlvbnMubmFtZXNwYWNlIHx8IHRoaXMud2lkZ2V0TmFtZTsNCiAgICAgICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpOw0KICAgICAgICAgICAgdGhpcy5fc2xvdHMgPSBbXTsNCiAgICAgICAgICAgIHRoaXMuX3NlcXVlbmNlID0gdGhpcy5fZ2V0WEhSUHJvbWlzZSh0cnVlKTsNCiAgICAgICAgICAgIHRoaXMuX3NlbmRpbmcgPSB0aGlzLl9hY3RpdmUgPSB0aGlzLl9sb2FkZWQgPSB0aGlzLl90b3RhbCA9IDA7DQogICAgICAgICAgICB0aGlzLl9pbml0RXZlbnRIYW5kbGVycygpOw0KICAgICAgICB9LA0KDQogICAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudEhhbmRsZXJzKCk7DQogICAgICAgICAgICAkLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpOw0KICAgICAgICB9LA0KDQogICAgICAgIGVuYWJsZTogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLmVuYWJsZS5jYWxsKHRoaXMpOw0KICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50SGFuZGxlcnMoKTsNCiAgICAgICAgfSwNCg0KICAgICAgICBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpOw0KICAgICAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLmRpc2FibGUuY2FsbCh0aGlzKTsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgYWRkaW5nIGZpbGVzDQogICAgICAgIC8vIHVzaW5nIHRoZSBmaWxldXBsb2FkIEFQSS4gVGhlIGRhdGEgcGFyYW1ldGVyIGFjY2VwdHMgYW4gb2JqZWN0IHdoaWNoDQogICAgICAgIC8vIG11c3QgaGF2ZSBhIGZpbGVzIHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6DQogICAgICAgIC8vIC5maWxldXBsb2FkKCdhZGQnLCB7ZmlsZXM6IGZpbGVzTGlzdH0pOw0KICAgICAgICBhZGQ6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICBpZiAoIWRhdGEgfHwgdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZGF0YS5maWxlcyA9ICQuZWFjaCgkLm1ha2VBcnJheShkYXRhLmZpbGVzKSwgdGhpcy5fbm9ybWFsaXplRmlsZSk7DQogICAgICAgICAgICB0aGlzLl9vbkFkZChudWxsLCBkYXRhKTsNCiAgICAgICAgfSwNCg0KICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3Mgc2VuZGluZyBmaWxlcw0KICAgICAgICAvLyB1c2luZyB0aGUgZmlsZXVwbG9hZCBBUEkuIFRoZSBkYXRhIHBhcmFtZXRlciBhY2NlcHRzIGFuIG9iamVjdCB3aGljaA0KICAgICAgICAvLyBtdXN0IGhhdmUgYSBmaWxlcyBwcm9wZXJ0eSBhbmQgY2FuIGNvbnRhaW4gYWRkaXRpb25hbCBvcHRpb25zOg0KICAgICAgICAvLyAuZmlsZXVwbG9hZCgnc2VuZCcsIHtmaWxlczogZmlsZXNMaXN0fSk7DQogICAgICAgIC8vIFRoZSBtZXRob2QgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGZvciB0aGUgZmlsZSB1cGxvYWQgY2FsbC4NCiAgICAgICAgc2VuZDogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIGlmIChkYXRhICYmICF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHsNCiAgICAgICAgICAgICAgICBkYXRhLmZpbGVzID0gJC5lYWNoKCQubWFrZUFycmF5KGRhdGEuZmlsZXMpLCB0aGlzLl9ub3JtYWxpemVGaWxlKTsNCiAgICAgICAgICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29uU2VuZChudWxsLCBkYXRhKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgZGF0YSAmJiBkYXRhLmNvbnRleHQpOw0KICAgICAgICB9DQoNCiAgICB9KTsNCg0KfSkpOw0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.iframe-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBJZnJhbWUgVHJhbnNwb3J0IFBsdWdpbiAxLjQNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQovKmpzbGludCB1bnBhcmFtOiB0cnVlLCBub21lbjogdHJ1ZSAqLw0KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50ICovDQoNCihmdW5jdGlvbiAoZmFjdG9yeSkgew0KICAgICd1c2Ugc3RyaWN0JzsNCiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7DQogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOg0KICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOg0KICAgICAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpOw0KICAgIH0NCn0oZnVuY3Rpb24gKCQpIHsNCiAgICAndXNlIHN0cmljdCc7DQoNCiAgICAvLyBIZWxwZXIgdmFyaWFibGUgdG8gY3JlYXRlIHVuaXF1ZSBuYW1lcyBmb3IgdGhlIHRyYW5zcG9ydCBpZnJhbWVzOg0KICAgIHZhciBjb3VudGVyID0gMDsNCg0KICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGFjY2VwdHMgdGhyZWUgYWRkaXRpb25hbCBvcHRpb25zOg0KICAgIC8vIG9wdGlvbnMuZmlsZUlucHV0OiBhIGpRdWVyeSBjb2xsZWN0aW9uIG9mIGZpbGUgaW5wdXQgZmllbGRzDQogICAgLy8gb3B0aW9ucy5wYXJhbU5hbWU6IHRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhLA0KICAgIC8vICBvdmVycmlkZXMgdGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGZpbGUgaW5wdXQgZmllbGQocyksDQogICAgLy8gIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLg0KICAgIC8vIG9wdGlvbnMuZm9ybURhdGE6IGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLA0KICAgIC8vICBlcXVpdmFsZW50IHRvIHRoZSByZXR1cm4gZGF0YSBvZiAuc2VyaWFsaXplQXJyYXkoKSwgZS5nLjoNCiAgICAvLyAgW3tuYW1lOiAnYScsIHZhbHVlOiAxfSwge25hbWU6ICdiJywgdmFsdWU6IDJ9XQ0KICAgICQuYWpheFRyYW5zcG9ydCgnaWZyYW1lJywgZnVuY3Rpb24gKG9wdGlvbnMpIHsNCiAgICAgICAgaWYgKG9wdGlvbnMuYXN5bmMgJiYgKG9wdGlvbnMudHlwZSA9PT0gJ1BPU1QnIHx8IG9wdGlvbnMudHlwZSA9PT0gJ0dFVCcpKSB7DQogICAgICAgICAgICB2YXIgZm9ybSwNCiAgICAgICAgICAgICAgICBpZnJhbWU7DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChfLCBjb21wbGV0ZUNhbGxiYWNrKSB7DQogICAgICAgICAgICAgICAgICAgIGZvcm0gPSAkKCc8Zm9ybSBzdHlsZT0iZGlzcGxheTpub25lOyI+PC9mb3JtPicpOw0KICAgICAgICAgICAgICAgICAgICAvLyBqYXZhc2NyaXB0OmZhbHNlIGFzIGluaXRpYWwgaWZyYW1lIHNyYw0KICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyB3YXJuaW5nIHBvcHVwcyBvbiBIVFRQUyBpbiBJRTYuDQogICAgICAgICAgICAgICAgICAgIC8vIElFIHZlcnNpb25zIGJlbG93IElFOCBjYW5ub3Qgc2V0IHRoZSBuYW1lIHByb3BlcnR5IG9mDQogICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIERPTSwNCiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2Ugc2V0IHRoZSBuYW1lIGFsb25nIHdpdGggdGhlIGlmcmFtZSBIVE1MIG1hcmt1cDoNCiAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gJCgNCiAgICAgICAgICAgICAgICAgICAgICAgICc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxzZTsiIG5hbWU9ImlmcmFtZS10cmFuc3BvcnQtJyArDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50ZXIgKz0gMSkgKyAnIj48L2lmcmFtZT4nDQogICAgICAgICAgICAgICAgICAgICkuYmluZCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlSW5wdXRDbG9uZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lcyA9ICQuaXNBcnJheShvcHRpb25zLnBhcmFtTmFtZSkgPw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgOiBbb3B0aW9ucy5wYXJhbU5hbWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVuYmluZCgnbG9hZCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JhcCBpbiBhIHRyeS9jYXRjaCBibG9jayB0byBjYXRjaCBleGNlcHRpb25zIHRocm93bg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBhY2Nlc3MgY3Jvc3MtZG9tYWluIGlmcmFtZSBjb250ZW50czoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gaWZyYW1lLmNvbnRlbnRzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb29nbGUgQ2hyb21lIGFuZCBGaXJlZm94IGRvIG5vdCB0aHJvdyBhbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIHdoZW4gY2FsbGluZyBpZnJhbWUuY29udGVudHMoKSBvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzbyB3ZSB1bmlmeSB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmxlbmd0aCB8fCAhcmVzcG9uc2VbMF0uZmlyc3RDaGlsZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY29tcGxldGUgY2FsbGJhY2sgcmV0dXJucyB0aGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2Ugb2JqZWN0Og0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydpZnJhbWUnOiByZXNwb25zZX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4IGZvciBJRSBlbmRsZXNzIHByb2dyZXNzIGJhciBhY3Rpdml0eSBidWcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGhhcHBlbnMgb24gZm9ybSBzdWJtaXRzIHRvIGlmcmFtZSB0YXJnZXRzKToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7Ij48L2lmcmFtZT4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGZvcm0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCd0YXJnZXQnLCBpZnJhbWUucHJvcCgnbmFtZScpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdhY3Rpb24nLCBvcHRpb25zLnVybCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnbWV0aG9kJywgb3B0aW9ucy50eXBlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZvcm1EYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZm9ybURhdGEsIGZ1bmN0aW9uIChpbmRleCwgZmllbGQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlucHV0IHR5cGU9ImhpZGRlbiIvPicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnbmFtZScsIGZpZWxkLm5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKGZpZWxkLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGZvcm0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsZUlucHV0ICYmIG9wdGlvbnMuZmlsZUlucHV0Lmxlbmd0aCAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPT09ICdQT1NUJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dENsb25lcyA9IG9wdGlvbnMuZmlsZUlucHV0LmNsb25lKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IGEgY2xvbmUgZm9yIGVhY2ggZmlsZSBpbnB1dCBmaWVsZDoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5hZnRlcihmdW5jdGlvbiAoaW5kZXgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVJbnB1dENsb25lc1tpbmRleF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFyYW1OYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKGluZGV4KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnByb3AoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZXNbaW5kZXhdIHx8IG9wdGlvbnMucGFyYW1OYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kaW5nIHRoZSBmaWxlIGlucHV0IGZpZWxkcyB0byB0aGUgaGlkZGVuIGZvcm0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmVzIHRoZW0gZnJvbSB0aGVpciBvcmlnaW5hbCBsb2NhdGlvbjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQob3B0aW9ucy5maWxlSW5wdXQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdlbmN0eXBlJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmN0eXBlIG11c3QgYmUgc2V0IGFzIGVuY29kaW5nIGZvciBJRToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ2VuY29kaW5nJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGZpbGUgaW5wdXQgZmllbGRzIGF0IHRoZWlyIG9yaWdpbmFsIGxvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBieSByZXBsYWNpbmcgdGhlIGNsb25lcyB3aXRoIHRoZSBvcmlnaW5hbHM6DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZUlucHV0Q2xvbmVzICYmIGZpbGVJbnB1dENsb25lcy5sZW5ndGgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaW5wdXQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lID0gJChmaWxlSW5wdXRDbG9uZXNbaW5kZXhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChpbnB1dCkucHJvcCgnbmFtZScsIGNsb25lLnByb3AoJ25hbWUnKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLnJlcGxhY2VXaXRoKGlucHV0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIGZvcm0uYXBwZW5kKGlmcmFtZSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBqYXZhc2NyaXB0OmZhbHNlIGFzIGlmcmFtZSBzcmMgYWJvcnRzIHRoZSByZXF1ZXN0DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgcHJldmVudHMgd2FybmluZyBwb3B1cHMgb24gSFRUUFMgaW4gSUU2Lg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2F0IGlzIHVzZWQgdG8gYXZvaWQgdGhlICJTY3JpcHQgVVJMIiBKU0xpbnQgZXJyb3I6DQogICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudW5iaW5kKCdsb2FkJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnc3JjJywgJ2phdmFzY3JpcHQnLmNvbmNhdCgnOmZhbHNlOycpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQogICAgICAgIH0NCiAgICB9KTsNCg0KICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IHJldHVybnMgdGhlIGlmcmFtZSBjb250ZW50IGRvY3VtZW50IGFzIHJlc3BvbnNlLg0KICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkcyBjb252ZXJ0ZXJzIGZyb20gaWZyYW1lIHRvIHRleHQsIGpzb24sIGh0bWwsIGFuZCBzY3JpcHQ6DQogICAgJC5hamF4U2V0dXAoew0KICAgICAgICBjb252ZXJ0ZXJzOiB7DQogICAgICAgICAgICAnaWZyYW1lIHRleHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICAnaWZyYW1lIGpzb24nOiBmdW5jdGlvbiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICQucGFyc2VKU09OKCQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKSk7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgJ2lmcmFtZSBodG1sJzogZnVuY3Rpb24gKGlmcmFtZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiAkKGlmcmFtZVswXS5ib2R5KS5odG1sKCk7DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgJ2lmcmFtZSBzY3JpcHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICQuZ2xvYmFsRXZhbCgkKGlmcmFtZVswXS5ib2R5KS50ZXh0KCkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfSk7DQoNCn0pKTsNCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2MS43LjIganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLw0KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY3koYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjdShhKXtpZighY2pbYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NrfHwoY2s9Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjay5mcmFtZUJvcmRlcj1jay53aWR0aD1jay5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjayk7aWYoIWNsfHwhY2suY3JlYXRlRWxlbWVudCljbD0oY2suY29udGVudFdpbmRvd3x8Y2suY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjbC53cml0ZSgoZi5zdXBwb3J0LmJveE1vZGVsPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY2wuY2xvc2UoKTtkPWNsLmNyZWF0ZUVsZW1lbnQoYSksY2wuYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNrKX1jalthXT1lfXJldHVybiBjalthXX1mdW5jdGlvbiBjdChhLGIpe3ZhciBjPXt9O2YuZWFjaChjcC5jb25jYXQuYXBwbHkoW10sY3Auc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjcygpe2NxPWJ9ZnVuY3Rpb24gY3IoKXtzZXRUaW1lb3V0KGNzLDApO3JldHVybiBjcT1mLm5vdygpfWZ1bmN0aW9uIGNpKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2goKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2IoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNhKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gYl8oYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkQudGVzdChhKT9kKGEsZSk6Yl8oYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Ij9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZighYyYmZi50eXBlKGIpPT09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpYl8oYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGIkKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gYlooYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJTLGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9YlooYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9YlooYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJZKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYk8pLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiQihhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiPzE6MCxnPTQ7aWYoZD4wKXtpZihjIT09ImJvcmRlciIpZm9yKDtlPGc7ZSs9MiljfHwoZC09cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIitieFtlXSkpfHwwKSxjPT09Im1hcmdpbiI/ZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrYnhbZV0pKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrYnhbZV0rIldpZHRoIikpfHwwO3JldHVybiBkKyJweCJ9ZD1ieShhLGIpO2lmKGQ8MHx8ZD09bnVsbClkPWEuc3R5bGVbYl07aWYoYnQudGVzdChkKSlyZXR1cm4gZDtkPXBhcnNlRmxvYXQoZCl8fDA7aWYoYylmb3IoO2U8ZztlKz0yKWQrPXBhcnNlRmxvYXQoZi5jc3MoYSwicGFkZGluZyIrYnhbZV0pKXx8MCxjIT09InBhZGRpbmciJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK2J4W2VdKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrYnhbZV0pKXx8MCk7cmV0dXJuIGQrInB4In1mdW5jdGlvbiBibyhhKXt2YXIgYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2JoLmFwcGVuZENoaWxkKGIpLGIuaW5uZXJIVE1MPWEub3V0ZXJIVE1MO3JldHVybiBiLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gYm4oYSl7dmFyIGI9KGEubm9kZU5hbWV8fCIiKS50b0xvd2VyQ2FzZSgpO2I9PT0iaW5wdXQiP2JtKGEpOmIhPT0ic2NyaXB0IiYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiZmLmdyZXAoYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSxibSl9ZnVuY3Rpb24gYm0oYSl7aWYoYS50eXBlPT09ImNoZWNrYm94Inx8YS50eXBlPT09InJhZGlvIilhLmRlZmF1bHRDaGVja2VkPWEuY2hlY2tlZH1mdW5jdGlvbiBibChhKXtyZXR1cm4gdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTp0eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsIT0idW5kZWZpbmVkIj9hLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKTpbXX1mdW5jdGlvbiBiayhhLGIpe3ZhciBjO2Iubm9kZVR5cGU9PT0xJiYoYi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGM9PT0ib2JqZWN0Ij9iLm91dGVySFRNTD1hLm91dGVySFRNTDpjIT09ImlucHV0Inx8YS50eXBlIT09ImNoZWNrYm94IiYmYS50eXBlIT09InJhZGlvIj9jPT09Im9wdGlvbiI/Yi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDpjPT09ImlucHV0Inx8Yz09PSJ0ZXh0YXJlYSI/Yi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWU6Yz09PSJzY3JpcHQiJiZiLnRleHQhPT1hLnRleHQmJihiLnRleHQ9YS50ZXh0KTooYS5jaGVja2VkJiYoYi5kZWZhdWx0Q2hlY2tlZD1iLmNoZWNrZWQ9YS5jaGVja2VkKSxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpLGIucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyksYi5yZW1vdmVBdHRyaWJ1dGUoIl9zdWJtaXRfYXR0YWNoZWQiKSxiLnJlbW92ZUF0dHJpYnV0ZSgiX2NoYW5nZV9hdHRhY2hlZCIpKX1mdW5jdGlvbiBiaihhLGIpe2lmKGIubm9kZVR5cGU9PT0xJiYhIWYuaGFzRGF0YShhKSl7dmFyIGMsZCxlLGc9Zi5fZGF0YShhKSxoPWYuX2RhdGEoYixnKSxpPWcuZXZlbnRzO2lmKGkpe2RlbGV0ZSBoLmhhbmRsZSxoLmV2ZW50cz17fTtmb3IoYyBpbiBpKWZvcihkPTAsZT1pW2NdLmxlbmd0aDtkPGU7ZCsrKWYuZXZlbnQuYWRkKGIsYyxpW2NdW2RdKX1oLmRhdGEmJihoLmRhdGE9Zi5leHRlbmQoe30saC5kYXRhKSl9fWZ1bmN0aW9uIGJpKGEsYil7cmV0dXJuIGYubm9kZU5hbWUoYSwidGFibGUiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIFUoYSl7dmFyIGI9Vi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxlbWVudChiLnBvcCgpKTtyZXR1cm4gY31mdW5jdGlvbiBUKGEsYixjKXtiPWJ8fDA7aWYoZi5pc0Z1bmN0aW9uKGIpKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3ZhciBlPSEhYi5jYWxsKGEsZCxhKTtyZXR1cm4gZT09PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBhPT09Yj09PWN9KTtpZih0eXBlb2YgYj09InN0cmluZyIpe3ZhciBkPWYuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT09MX0pO2lmKE8udGVzdChiKSlyZXR1cm4gZi5maWx0ZXIoYixkLCFjKTtiPWYuZmlsdGVyKGIsZCl9cmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGYuaW5BcnJheShhLGIpPj0wPT09Y30pfWZ1bmN0aW9uIFMoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExfWZ1bmN0aW9uIEsoKXtyZXR1cm4hMH1mdW5jdGlvbiBKKCl7cmV0dXJuITF9ZnVuY3Rpb24gbihhLGIsYyl7dmFyIGQ9YisiZGVmZXIiLGU9YisicXVldWUiLGc9YisibWFyayIsaD1mLl9kYXRhKGEsZCk7aCYmKGM9PT0icXVldWUifHwhZi5fZGF0YShhLGUpKSYmKGM9PT0ibWFyayJ8fCFmLl9kYXRhKGEsZykpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IWYuX2RhdGEoYSxlKSYmIWYuX2RhdGEoYSxnKSYmKGYucmVtb3ZlRGF0YShhLGQsITApLGguZmlyZSgpKX0sMCl9ZnVuY3Rpb24gbShhKXtmb3IodmFyIGIgaW4gYSl7aWYoYj09PSJkYXRhIiYmZi5pc0VtcHR5T2JqZWN0KGFbYl0pKWNvbnRpbnVlO2lmKGIhPT0idG9KU09OIilyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBsKGEsYyxkKXtpZihkPT09YiYmYS5ub2RlVHlwZT09PTEpe3ZhciBlPSJkYXRhLSIrYy5yZXBsYWNlKGssIi0kMSIpLnRvTG93ZXJDYXNlKCk7ZD1hLmdldEF0dHJpYnV0ZShlKTtpZih0eXBlb2YgZD09InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09PSJmYWxzZSI/ITE6ZD09PSJudWxsIj9udWxsOmYuaXNOdW1lcmljKGQpPytkOmoudGVzdChkKT9mLnBhcnNlSlNPTihkKTpkfWNhdGNoKGcpe31mLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIGgoYSl7dmFyIGI9Z1thXT17fSxjLGQ7YT1hLnNwbGl0KC9ccysvKTtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBjPWEuZG9jdW1lbnQsZD1hLm5hdmlnYXRvcixlPWEubG9jYXRpb24sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIEooKXtpZighZS5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEosMSk7cmV0dXJufWUucmVhZHkoKX19dmFyIGU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGUuZm4uaW5pdChhLGIsaCl9LGY9YS5qUXVlcnksZz1hLiQsaCxpPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxqPS9cUy8saz0vXlxzKy8sbD0vXHMrJC8sbT0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT4pPyQvLG49L15bXF0sOnt9XHNdKiQvLG89L1xcKD86WyJcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZyxwPS8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZyxxPS8oPzpefDp8LCkoPzpccypcWykrL2cscj0vKHdlYmtpdClbIFwvXShbXHcuXSspLyxzPS8ob3BlcmEpKD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspLyx0PS8obXNpZSkgKFtcdy5dKykvLHU9Lyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKSk/Lyx2PS8tKFthLXpdfFswLTldKS9pZyx3PS9eLW1zLS8seD1mdW5jdGlvbihhLGIpe3JldHVybihiKyIiKS50b1VwcGVyQ2FzZSgpfSx5PWQudXNlckFnZW50LHosQSxCLEM9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxEPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksRT1BcnJheS5wcm90b3R5cGUucHVzaCxGPUFycmF5LnByb3RvdHlwZS5zbGljZSxHPVN0cmluZy5wcm90b3R5cGUudHJpbSxIPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLEk9e307ZS5mbj1lLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZSxpbml0OmZ1bmN0aW9uKGEsZCxmKXt2YXIgZyxoLGosaztpZighYSlyZXR1cm4gdGhpcztpZihhLm5vZGVUeXBlKXt0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTE7cmV0dXJuIHRoaXN9aWYoYT09PSJib2R5IiYmIWQmJmMuYm9keSl7dGhpcy5jb250ZXh0PWMsdGhpc1swXT1jLmJvZHksdGhpcy5zZWxlY3Rvcj1hLHRoaXMubGVuZ3RoPTE7cmV0dXJuIHRoaXN9aWYodHlwZW9mIGE9PSJzdHJpbmciKXthLmNoYXJBdCgwKSE9PSI8Inx8YS5jaGFyQXQoYS5sZW5ndGgtMSkhPT0iPiJ8fGEubGVuZ3RoPDM/Zz1pLmV4ZWMoYSk6Zz1bbnVsbCxhLG51bGxdO2lmKGcmJihnWzFdfHwhZCkpe2lmKGdbMV0pe2Q9ZCBpbnN0YW5jZW9mIGU/ZFswXTpkLGs9ZD9kLm93bmVyRG9jdW1lbnR8fGQ6YyxqPW0uZXhlYyhhKSxqP2UuaXNQbGFpbk9iamVjdChkKT8oYT1bYy5jcmVhdGVFbGVtZW50KGpbMV0pXSxlLmZuLmF0dHIuY2FsbChhLGQsITApKTphPVtrLmNyZWF0ZUVsZW1lbnQoalsxXSldOihqPWUuYnVpbGRGcmFnbWVudChbZ1sxXV0sW2tdKSxhPShqLmNhY2hlYWJsZT9lLmNsb25lKGouZnJhZ21lbnQpOmouZnJhZ21lbnQpLmNoaWxkTm9kZXMpO3JldHVybiBlLm1lcmdlKHRoaXMsYSl9aD1jLmdldEVsZW1lbnRCeUlkKGdbMl0pO2lmKGgmJmgucGFyZW50Tm9kZSl7aWYoaC5pZCE9PWdbMl0pcmV0dXJuIGYuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09aH10aGlzLmNvbnRleHQ9Yyx0aGlzLnNlbGVjdG9yPWE7cmV0dXJuIHRoaXN9cmV0dXJuIWR8fGQuanF1ZXJ5PyhkfHxmKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoZCkuZmluZChhKX1pZihlLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGYucmVhZHkoYSk7YS5zZWxlY3RvciE9PWImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCk7cmV0dXJuIGUubWFrZUFycmF5KGEsdGhpcyl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS43LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gRi5jYWxsKHRoaXMsMCl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD90aGlzLnRvQXJyYXkoKTphPDA/dGhpc1t0aGlzLmxlbmd0aCthXTp0aGlzW2FdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuY29uc3RydWN0b3IoKTtlLmlzQXJyYXkoYSk/RS5hcHBseShkLGEpOmUubWVyZ2UoZCxhKSxkLnByZXZPYmplY3Q9dGhpcyxkLmNvbnRleHQ9dGhpcy5jb250ZXh0LGI9PT0iZmluZCI/ZC5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrYzpiJiYoZC5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyIuIitiKyIoIitjKyIpIik7cmV0dXJuIGR9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZS5lYWNoKHRoaXMsYSxiKX0scmVhZHk6ZnVuY3Rpb24oYSl7ZS5iaW5kUmVhZHkoKSxBLmFkZChhKTtyZXR1cm4gdGhpc30sZXE6ZnVuY3Rpb24oYSl7YT0rYTtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLGErMSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEYuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsRi5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhlLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6RSxzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0sZS5mbi5pbml0LnByb3RvdHlwZT1lLmZuLGUuZXh0ZW5kPWUuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYyxkLGYsZyxoLGk9YXJndW1lbnRzWzBdfHx7fSxqPTEsaz1hcmd1bWVudHMubGVuZ3RoLGw9ITE7dHlwZW9mIGk9PSJib29sZWFuIiYmKGw9aSxpPWFyZ3VtZW50c1sxXXx8e30saj0yKSx0eXBlb2YgaSE9Im9iamVjdCImJiFlLmlzRnVuY3Rpb24oaSkmJihpPXt9KSxrPT09aiYmKGk9dGhpcywtLWopO2Zvcig7ajxrO2orKylpZigoYT1hcmd1bWVudHNbal0pIT1udWxsKWZvcihjIGluIGEpe2Q9aVtjXSxmPWFbY107aWYoaT09PWYpY29udGludWU7bCYmZiYmKGUuaXNQbGFpbk9iamVjdChmKXx8KGc9ZS5pc0FycmF5KGYpKSk/KGc/KGc9ITEsaD1kJiZlLmlzQXJyYXkoZCk/ZDpbXSk6aD1kJiZlLmlzUGxhaW5PYmplY3QoZCk/ZDp7fSxpW2NdPWUuZXh0ZW5kKGwsaCxmKSk6ZiE9PWImJihpW2NdPWYpfXJldHVybiBpfSxlLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihiKXthLiQ9PT1lJiYoYS4kPWcpLGImJmEualF1ZXJ5PT09ZSYmKGEualF1ZXJ5PWYpO3JldHVybiBlfSxpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP2UucmVhZHlXYWl0Kys6ZS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMCYmIS0tZS5yZWFkeVdhaXR8fGEhPT0hMCYmIWUuaXNSZWFkeSl7aWYoIWMuYm9keSlyZXR1cm4gc2V0VGltZW91dChlLnJlYWR5LDEpO2UuaXNSZWFkeT0hMDtpZihhIT09ITAmJi0tZS5yZWFkeVdhaXQ+MClyZXR1cm47QS5maXJlV2l0aChjLFtlXSksZS5mbi50cmlnZ2VyJiZlKGMpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpfX0sYmluZFJlYWR5OmZ1bmN0aW9uKCl7aWYoIUEpe0E9ZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iik7aWYoYy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIilyZXR1cm4gc2V0VGltZW91dChlLnJlYWR5LDEpO2lmKGMuYWRkRXZlbnRMaXN0ZW5lciljLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIsITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZS5yZWFkeSwhMSk7ZWxzZSBpZihjLmF0dGFjaEV2ZW50KXtjLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEIpLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsZS5yZWFkeSk7dmFyIGI9ITE7dHJ5e2I9YS5mcmFtZUVsZW1lbnQ9PW51bGx9Y2F0Y2goZCl7fWMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZiJiZKKCl9fX0saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBlKGEpPT09ImZ1bmN0aW9uIn0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gZS50eXBlKGEpPT09ImFycmF5In0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGwmJmE9PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoYSkpJiZpc0Zpbml0ZShhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6SVtDLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZS50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGUuaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFELmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIUQuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfXZhciBkO2ZvcihkIGluIGEpO3JldHVybiBkPT09Ynx8RC5jYWxsKGEsZCl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihuLnRlc3QoYi5yZXBsYWNlKG8sIkAiKS5yZXBsYWNlKHAsIl0iKS5yZXBsYWNlKHEsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe2lmKHR5cGVvZiBjIT0ic3RyaW5nInx8IWMpcmV0dXJuIG51bGw7dmFyIGQsZjt0cnl7YS5ET01QYXJzZXI/KGY9bmV3IERPTVBhcnNlcixkPWYucGFyc2VGcm9tU3RyaW5nKGMsInRleHQveG1sIikpOihkPW5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIiksZC5hc3luYz0iZmFsc2UiLGQubG9hZFhNTChjKSl9Y2F0Y2goZyl7ZD1ifSghZHx8IWQuZG9jdW1lbnRFbGVtZW50fHxkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJmUuZXJyb3IoIkludmFsaWQgWE1MOiAiK2MpO3JldHVybiBkfSxub29wOmZ1bmN0aW9uKCl7fSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGIpe2ImJmoudGVzdChiKSYmKGEuZXhlY1NjcmlwdHx8ZnVuY3Rpb24oYil7YS5ldmFsLmNhbGwoYSxiKX0pKGIpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh3LCJtcy0iKS5yZXBsYWNlKHYseCl9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9VcHBlckNhc2UoKT09PWIudG9VcHBlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZz0wLGg9YS5sZW5ndGgsaT1oPT09Ynx8ZS5pc0Z1bmN0aW9uKGEpO2lmKGQpe2lmKGkpe2ZvcihmIGluIGEpaWYoYy5hcHBseShhW2ZdLGQpPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5hcHBseShhW2crK10sZCk9PT0hMSlicmVha31lbHNlIGlmKGkpe2ZvcihmIGluIGEpaWYoYy5jYWxsKGFbZl0sZixhW2ZdKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuY2FsbChhW2ddLGcsYVtnKytdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOkc/ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6Ry5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjooYSsiIikucmVwbGFjZShrLCIiKS5yZXBsYWNlKGwsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtpZihhIT1udWxsKXt2YXIgZD1lLnR5cGUoYSk7YS5sZW5ndGg9PW51bGx8fGQ9PT0ic3RyaW5nInx8ZD09PSJmdW5jdGlvbiJ8fGQ9PT0icmVnZXhwInx8ZS5pc1dpbmRvdyhhKT9FLmNhbGwoYyxhKTplLm1lcmdlKGMsYSl9cmV0dXJuIGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKEgpcmV0dXJuIEguY2FsbChiLGEsYyk7ZD1iLmxlbmd0aCxjPWM/YzwwP01hdGgubWF4KDAsZCtjKTpjOjA7Zm9yKDtjPGQ7YysrKWlmKGMgaW4gYiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5sZW5ndGgsZT0wO2lmKHR5cGVvZiBjLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBmPWMubGVuZ3RoO2U8ZjtlKyspYVtkKytdPWNbZV07ZWxzZSB3aGlsZShjW2VdIT09YilhW2QrK109Y1tlKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU7Yz0hIWM7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWU9ISFiKGFbZl0sZiksYyE9PWUmJmQucHVzaChhW2ZdKTtyZXR1cm4gZH0sbWFwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnLGg9W10saT0wLGo9YS5sZW5ndGgsaz1hIGluc3RhbmNlb2YgZXx8aiE9PWImJnR5cGVvZiBqPT0ibnVtYmVyIiYmKGo+MCYmYVswXSYmYVtqLTFdfHxqPT09MHx8ZS5pc0FycmF5KGEpKTtpZihrKWZvcig7aTxqO2krKylmPWMoYVtpXSxpLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtlbHNlIGZvcihnIGluIGEpZj1jKGFbZ10sZyxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7cmV0dXJuIGguY29uY2F0LmFwcGx5KFtdLGgpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYz09InN0cmluZyIpe3ZhciBkPWFbY107Yz1hLGE9ZH1pZighZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBiO3ZhciBmPUYuY2FsbChhcmd1bWVudHMsMiksZz1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGMsZi5jb25jYXQoRi5jYWxsKGFyZ3VtZW50cykpKX07Zy5ndWlkPWEuZ3VpZD1hLmd1aWR8fGcuZ3VpZHx8ZS5ndWlkKys7cmV0dXJuIGd9LGFjY2VzczpmdW5jdGlvbihhLGMsZCxmLGcsaCxpKXt2YXIgaixrPWQ9PW51bGwsbD0wLG09YS5sZW5ndGg7aWYoZCYmdHlwZW9mIGQ9PSJvYmplY3QiKXtmb3IobCBpbiBkKWUuYWNjZXNzKGEsYyxsLGRbbF0sMSxoLGYpO2c9MX1lbHNlIGlmKGYhPT1iKXtqPWk9PT1iJiZlLmlzRnVuY3Rpb24oZiksayYmKGo/KGo9YyxjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKGUoYSksYyl9KTooYy5jYWxsKGEsZiksYz1udWxsKSk7aWYoYylmb3IoO2w8bTtsKyspYyhhW2xdLGQsaj9mLmNhbGwoYVtsXSxsLGMoYVtsXSxkKSk6ZixpKTtnPTF9cmV0dXJuIGc/YTprP2MuY2FsbChhKTptP2MoYVswXSxkKTpofSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1yLmV4ZWMoYSl8fHMuZXhlYyhhKXx8dC5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ1LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SVsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSx6PWUudWFNYXRjaCh5KSx6LmJyb3dzZXImJihlLmJyb3dzZXJbei5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj16LnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIiAiKSYmKGs9L15bXHNceEEwXSsvLGw9L1tcc1x4QTBdKyQvKSxoPWUoYyksYy5hZGRFdmVudExpc3RlbmVyP0I9ZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIsITEpLGUucmVhZHkoKX06Yy5hdHRhY2hFdmVudCYmKEI9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixCKSxlLnJlYWR5KCkpfSk7cmV0dXJuIGV9KCksZz17fTtmLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPWE/Z1thXXx8aChhKTp7fTt2YXIgYz1bXSxkPVtdLGUsaSxqLGssbCxtLG49ZnVuY3Rpb24oYil7dmFyIGQsZSxnLGgsaTtmb3IoZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKylnPWJbZF0saD1mLnR5cGUoZyksaD09PSJhcnJheSI/bihnKTpoPT09ImZ1bmN0aW9uIiYmKCFhLnVuaXF1ZXx8IXAuaGFzKGcpKSYmYy5wdXNoKGcpfSxvPWZ1bmN0aW9uKGIsZil7Zj1mfHxbXSxlPSFhLm1lbW9yeXx8W2IsZl0saT0hMCxqPSEwLG09a3x8MCxrPTAsbD1jLmxlbmd0aDtmb3IoO2MmJm08bDttKyspaWYoY1ttXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aj0hMSxjJiYoYS5vbmNlP2U9PT0hMD9wLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCkscC5maXJlV2l0aChlWzBdLGVbMV0pKSl9LHA9e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO24oYXJndW1lbnRzKSxqP2w9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaz1hLG8oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2omJmY8PWwmJihsLS0sZjw9bSYmbS0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJnAuZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaj9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbyhiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe3AuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhaX19O3JldHVybiBwfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtpLmRvbmUuYXBwbHkoaSxhcmd1bWVudHMpLmZhaWwuYXBwbHkoaSxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxwaXBlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltiLCJyZWplY3QiXSxwcm9ncmVzczpbYywibm90aWZ5Il19LGZ1bmN0aW9uKGEsYil7dmFyIGM9YlswXSxlPWJbMV0sZztmLmlzRnVuY3Rpb24oYyk/aVthXShmdW5jdGlvbigpe2c9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyYmZi5pc0Z1bmN0aW9uKGcucHJvbWlzZSk/Zy5wcm9taXNlKCkudGhlbihkLnJlc29sdmUsZC5yZWplY3QsZC5ub3RpZnkpOmRbZSsiV2l0aCJdKHRoaXM9PT1pP2Q6dGhpcyxbZ10pfSk6aVthXShkW2VdKX0pfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpYT1oO2Vsc2UgZm9yKHZhciBiIGluIGgpYVtiXT1oW2JdO3JldHVybiBhfX0saT1oLnByb21pc2Uoe30pLGo7Zm9yKGogaW4gZylpW2pdPWdbal0uZmlyZSxpW2orIldpdGgiXT1nW2pdLmZpcmVXaXRoO2kuZG9uZShmdW5jdGlvbigpe2U9InJlc29sdmVkIn0sYy5kaXNhYmxlLGQubG9jaykuZmFpbChmdW5jdGlvbigpe2U9InJlamVjdGVkIn0sYi5kaXNhYmxlLGQubG9jayksYSYmYS5jYWxsKGksaSk7cmV0dXJuIGl9LHdoZW46ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gbShhKXtyZXR1cm4gZnVuY3Rpb24oYil7ZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpiLGoubm90aWZ5V2l0aChrLGUpfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihjKXtiW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmMsLS1nfHxqLnJlc29sdmVXaXRoKGosYil9fXZhciBiPWkuY2FsbChhcmd1bWVudHMsMCksYz0wLGQ9Yi5sZW5ndGgsZT1BcnJheShkKSxnPWQsaD1kLGo9ZDw9MSYmYSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpmLkRlZmVycmVkKCksaz1qLnByb21pc2UoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZiW2NdLnByb21pc2UmJmYuaXNGdW5jdGlvbihiW2NdLnByb21pc2UpP2JbY10ucHJvbWlzZSgpLnRoZW4obChjKSxqLnJlamVjdCxtKGMpKTotLWc7Z3x8ai5yZXNvbHZlV2l0aChqLGIpfWVsc2UgaiE9PWEmJmoucmVzb2x2ZVdpdGgoaixkP1thXTpbXSk7cmV0dXJuIGt9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGcsaCxpLGosayxsLG0sbixvLHA9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxxPWMuZG9jdW1lbnRFbGVtZW50O3Auc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0IikscC5pbm5lckhUTUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3RvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxlPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighZHx8IWQubGVuZ3RofHwhZSlyZXR1cm57fTtnPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksaD1nLmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGk9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxiPXtsZWFkaW5nV2hpdGVzcGFjZTpwLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhcC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDplLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NS8udGVzdChlLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhZS5zdHlsZS5jc3NGbG9hdCxjaGVja09uOmkudmFsdWU9PT0ib24iLG9wdFNlbGVjdGVkOmguc2VsZWN0ZWQsZ2V0U2V0QXR0cmlidXRlOnAuY2xhc3NOYW1lIT09InQiLGVuY3R5cGU6ISFjLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGh0bWw1Q2xvbmU6Yy5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCE9PSI8Om5hdj48LzpuYXY+IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAscGl4ZWxNYXJnaW46ITB9LGYuYm94TW9kZWw9Yi5ib3hNb2RlbD1jLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCIsaS5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFoLmRpc2FibGVkO3RyeXtkZWxldGUgcC50ZXN0fWNhdGNoKHIpe2IuZGVsZXRlRXhwYW5kbz0hMX0hcC5hZGRFdmVudExpc3RlbmVyJiZwLmF0dGFjaEV2ZW50JiZwLmZpcmVFdmVudCYmKHAuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7Yi5ub0Nsb25lRXZlbnQ9ITF9KSxwLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGk9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGkudmFsdWU9InQiLGkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiLnJhZGlvVmFsdWU9aS52YWx1ZT09PSJ0IixpLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxpLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxwLmFwcGVuZENoaWxkKGkpLGo9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksai5hcHBlbmRDaGlsZChwLmxhc3RDaGlsZCksYi5jaGVja0Nsb25lPWouY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuYXBwZW5kQ2hlY2tlZD1pLmNoZWNrZWQsai5yZW1vdmVDaGlsZChpKSxqLmFwcGVuZENoaWxkKHApO2lmKHAuYXR0YWNoRXZlbnQpZm9yKG4gaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSltPSJvbiIrbixvPW0gaW4gcCxvfHwocC5zZXRBdHRyaWJ1dGUobSwicmV0dXJuOyIpLG89dHlwZW9mIHBbbV09PSJmdW5jdGlvbiIpLGJbbisiQnViYmxlcyJdPW87ai5yZW1vdmVDaGlsZChwKSxqPWc9aD1wPWk9bnVsbCxmKGZ1bmN0aW9uKCl7dmFyIGQsZSxnLGgsaSxqLGwsbSxuLHEscixzLHQsdT1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07IXV8fChtPTEsdD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjoiLHI9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsiLHM9dCsiMDt2aXNpYmlsaXR5OmhpZGRlbjsiLG49InN0eWxlPSciK3IrdCsiNXB4IHNvbGlkICMwMDA7IixxPSI8ZGl2ICIrbisiZGlzcGxheTpibG9jazsnPjxkaXYgc3R5bGU9JyIrdCsiMDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsnPjwvZGl2PjwvZGl2PiIrIjx0YWJsZSAiK24rIicgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz4iKyI8dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiIsZD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD1zKyJ3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOiIrbSsicHgiLHUuaW5zZXJ0QmVmb3JlKGQsdS5maXJzdENoaWxkKSxwPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5hcHBlbmRDaGlsZChwKSxwLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9JyIrdCsiMDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGs9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxvPWtbMF0ub2Zmc2V0SGVpZ2h0PT09MCxrWzBdLnN0eWxlLmRpc3BsYXk9IiIsa1sxXS5zdHlsZS5kaXNwbGF5PSJub25lIixiLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1vJiZrWzBdLm9mZnNldEhlaWdodD09PTAsYS5nZXRDb21wdXRlZFN0eWxlJiYocC5pbm5lckhUTUw9IiIsbD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGwuc3R5bGUud2lkdGg9IjAiLGwuc3R5bGUubWFyZ2luUmlnaHQ9IjAiLHAuc3R5bGUud2lkdGg9IjJweCIscC5hcHBlbmRDaGlsZChsKSxiLnJlbGlhYmxlTWFyZ2luUmlnaHQ9KHBhcnNlSW50KChhLmdldENvbXB1dGVkU3R5bGUobCxudWxsKXx8e21hcmdpblJpZ2h0OjB9KS5tYXJnaW5SaWdodCwxMCl8fDApPT09MCksdHlwZW9mIHAuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihwLmlubmVySFRNTD0iIixwLnN0eWxlLndpZHRoPXAuc3R5bGUucGFkZGluZz0iMXB4IixwLnN0eWxlLmJvcmRlcj0wLHAuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIscC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUiLHAuc3R5bGUuem9vbT0xLGIuaW5saW5lQmxvY2tOZWVkc0xheW91dD1wLm9mZnNldFdpZHRoPT09MyxwLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixwLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIixwLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NXB4Oyc+PC9kaXY+IixiLnNocmlua1dyYXBCbG9ja3M9cC5vZmZzZXRXaWR0aCE9PTMpLHAuc3R5bGUuY3NzVGV4dD1yK3MscC5pbm5lckhUTUw9cSxlPXAuZmlyc3RDaGlsZCxnPWUuZmlyc3RDaGlsZCxpPWUubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLGo9e2RvZXNOb3RBZGRCb3JkZXI6Zy5vZmZzZXRUb3AhPT01LGRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzOmkub2Zmc2V0VG9wPT09NX0sZy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGcuc3R5bGUudG9wPSIyMHB4IixqLmZpeGVkUG9zaXRpb249Zy5vZmZzZXRUb3A9PT0yMHx8Zy5vZmZzZXRUb3A9PT0xNSxnLnN0eWxlLnBvc2l0aW9uPWcuc3R5bGUudG9wPSIiLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGouc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWcub2Zmc2V0VG9wPT09LTUsai5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD11Lm9mZnNldFRvcCE9PW0sYS5nZXRDb21wdXRlZFN0eWxlJiYocC5zdHlsZS5tYXJnaW5Ub3A9IjElIixiLnBpeGVsTWFyZ2luPShhLmdldENvbXB1dGVkU3R5bGUocCxudWxsKXx8e21hcmdpblRvcDowfSkubWFyZ2luVG9wIT09IjElIiksdHlwZW9mIGQuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihkLnN0eWxlLnpvb209MSksdS5yZW1vdmVDaGlsZChkKSxsPXA9ZD1udWxsLGYuZXh0ZW5kKGIsaikpfSk7cmV0dXJuIGJ9KCk7dmFyIGo9L14oPzpcey4qXH18XFsuKlxdKSQvLGs9LyhbQS1aXSkvZztmLmV4dGVuZCh7Y2FjaGU6e30sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKGYuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXthPWEubm9kZVR5cGU/Zi5jYWNoZVthW2YuZXhwYW5kb11dOmFbZi5leHBhbmRvXTtyZXR1cm4hIWEmJiFtKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZyxoLGksaj1mLmV4cGFuZG8saz10eXBlb2YgYz09InN0cmluZyIsbD1hLm5vZGVUeXBlLG09bD9mLmNhY2hlOmEsbj1sP2Fbal06YVtqXSYmaixvPWM9PT0iZXZlbnRzIjtpZigoIW58fCFtW25dfHwhbyYmIWUmJiFtW25dLmRhdGEpJiZrJiZkPT09YilyZXR1cm47bnx8KGw/YVtqXT1uPSsrZi51dWlkOm49aiksbVtuXXx8KG1bbl09e30sbHx8KG1bbl0udG9KU09OPWYubm9vcCkpO2lmKHR5cGVvZiBjPT0ib2JqZWN0Inx8dHlwZW9mIGM9PSJmdW5jdGlvbiIpZT9tW25dPWYuZXh0ZW5kKG1bbl0sYyk6bVtuXS5kYXRhPWYuZXh0ZW5kKG1bbl0uZGF0YSxjKTtnPWg9bVtuXSxlfHwoaC5kYXRhfHwoaC5kYXRhPXt9KSxoPWguZGF0YSksZCE9PWImJihoW2YuY2FtZWxDYXNlKGMpXT1kKTtpZihvJiYhaFtjXSlyZXR1cm4gZy5ldmVudHM7az8oaT1oW2NdLGk9PW51bGwmJihpPWhbZi5jYW1lbENhc2UoYyldKSk6aT1oO3JldHVybiBpfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGUsZyxoPWYuZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP2YuY2FjaGU6YSxrPWk/YVtoXTpoO2lmKCFqW2tdKXJldHVybjtpZihiKXtkPWM/altrXTpqW2tdLmRhdGE7aWYoZCl7Zi5pc0FycmF5KGIpfHwoYiBpbiBkP2I9W2JdOihiPWYuY2FtZWxDYXNlKGIpLGIgaW4gZD9iPVtiXTpiPWIuc3BsaXQoIiAiKSkpO2ZvcihlPTAsZz1iLmxlbmd0aDtlPGc7ZSsrKWRlbGV0ZSBkW2JbZV1dO2lmKCEoYz9tOmYuaXNFbXB0eU9iamVjdCkoZCkpcmV0dXJufX1pZighYyl7ZGVsZXRlIGpba10uZGF0YTtpZighbShqW2tdKSlyZXR1cm59Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fCFqLnNldEludGVydmFsP2RlbGV0ZSBqW2tdOmpba109bnVsbCxpJiYoZi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8/ZGVsZXRlIGFbaF06YS5yZW1vdmVBdHRyaWJ1dGU/YS5yZW1vdmVBdHRyaWJ1dGUoaCk6YVtoXT1udWxsKX19LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kYXRhKGEsYixjLCEwKX0sYWNjZXB0RGF0YTpmdW5jdGlvbihhKXtpZihhLm5vZGVOYW1lKXt2YXIgYj1mLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGIpcmV0dXJuIGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9cmV0dXJuITB9fSksZi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlLGcsaCxpLGo9dGhpc1swXSxrPTAsbT1udWxsO2lmKGE9PT1iKXtpZih0aGlzLmxlbmd0aCl7bT1mLmRhdGEoaik7aWYoai5ub2RlVHlwZT09PTEmJiFmLl9kYXRhKGosInBhcnNlZEF0dHJzIikpe2c9ai5hdHRyaWJ1dGVzO2ZvcihpPWcubGVuZ3RoO2s8aTtrKyspaD1nW2tdLm5hbWUsaC5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGg9Zi5jYW1lbENhc2UoaC5zdWJzdHJpbmcoNSkpLGwoaixoLG1baF0pKTtmLl9kYXRhKGosInBhcnNlZEF0dHJzIiwhMCl9fXJldHVybiBtfWlmKHR5cGVvZiBhPT0ib2JqZWN0IilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kYXRhKHRoaXMsYSl9KTtkPWEuc3BsaXQoIi4iLDIpLGRbMV09ZFsxXT8iLiIrZFsxXToiIixlPWRbMV0rIiEiO3JldHVybiBmLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGMpe2lmKGM9PT1iKXttPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2UsW2RbMF1dKSxtPT09YiYmaiYmKG09Zi5kYXRhKGosYSksbT1sKGosYSxtKSk7cmV0dXJuIG09PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTptfWRbMV09Yyx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2UsZCksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitlLGQpfSl9LG51bGwsYyxhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZi5leHRlbmQoe19tYXJrOmZ1bmN0aW9uKGEsYil7YSYmKGI9KGJ8fCJmeCIpKyJtYXJrIixmLl9kYXRhKGEsYiwoZi5fZGF0YShhLGIpfHwwKSsxKSl9LF91bm1hcms6ZnVuY3Rpb24oYSxiLGMpe2EhPT0hMCYmKGM9YixiPWEsYT0hMSk7aWYoYil7Yz1jfHwiZngiO3ZhciBkPWMrIm1hcmsiLGU9YT8wOihmLl9kYXRhKGIsZCl8fDEpLTE7ZT9mLl9kYXRhKGIsZCxlKTooZi5yZW1vdmVEYXRhKGIsZCwhMCksbihiLGMsIm1hcmsiKSl9fSxxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIixkPWYuX2RhdGEoYSxiKSxjJiYoIWR8fGYuaXNBcnJheShjKT9kPWYuX2RhdGEoYSxiLGYubWFrZUFycmF5KGMpKTpkLnB1c2goYykpO3JldHVybiBkfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU9e307ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGYuX2RhdGEoYSxiKyIucnVuIixlKSxkLmNhbGwoYSxmdW5jdGlvbigpe2YuZGVxdWV1ZShhLGIpfSxlKSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSAiK2IrIi5ydW4iLCEwKSxuKGEsYiwicXVldWUiKSl9fSksZi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9Mjt0eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT0iZngiLGQtLSk7aWYoYXJndW1lbnRzLmxlbmd0aDxkKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIGM9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zi5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwhMCkpaCsrLGwuYWRkKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKGMpfX0pO3ZhciBvPS9bXG5cdFxyXS9nLHA9L1xzKy8scT0vXHIvZyxyPS9eKD86YnV0dG9ufGlucHV0KSQvaSxzPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLHQ9L15hKD86cmVhKT8kL2ksdT0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSx2PWYuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGUsdyx4LHk7Zi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmLmF0dHIsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlQXR0cih0aGlzLGEpfSl9LHByb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7YT1mLnByb3BGaXhbYV18fGE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPWIsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYyl7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nIil7Yj1hLnNwbGl0KHApO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtlPXRoaXNbY107aWYoZS5ub2RlVHlwZT09PTEpaWYoIWUuY2xhc3NOYW1lJiZiLmxlbmd0aD09PTEpZS5jbGFzc05hbWU9YTtlbHNle2c9IiAiK2UuY2xhc3NOYW1lKyIgIjtmb3IoaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl+Zy5pbmRleE9mKCIgIitiW2hdKyIgIil8fChnKz1iW2hdKyIgIik7ZS5jbGFzc05hbWU9Zi50cmltKGcpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGgsaSxqO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHApO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe2g9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpO2ZvcihpPTAsaj1jLmxlbmd0aDtpPGo7aSsrKWg9aC5yZXBsYWNlKCIgIitjW2ldKyIgIiwiICIpO2cuY2xhc3NOYW1lPWYudHJpbShoKX1lbHNlIGcuY2xhc3NOYW1lPSIifX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYSxkPXR5cGVvZiBiPT0iYm9vbGVhbiI7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGUsZz0wLGg9Zih0aGlzKSxpPWIsaj1hLnNwbGl0KHApO3doaWxlKGU9altnKytdKWk9ZD9pOiFoLmhhc0NsYXNzKGUpLGhbaT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7Zm9yKDtjPGQ7YysrKWlmKHRoaXNbY10ubm9kZVR5cGU9PT0xJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnPXRoaXNbMF07e2lmKCEhYXJndW1lbnRzLmxlbmd0aCl7ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLnR5cGVdfHxmLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9aWYoZyl7Yz1mLnZhbEhvb2tzW2cudHlwZV18fGYudmFsSG9va3NbZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZihjJiYiZ2V0ImluIGMmJihkPWMuZ2V0KGcsInZhbHVlIikpIT09YilyZXR1cm4gZDtkPWcudmFsdWU7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kLnJlcGxhY2UocSwiIik6ZD09bnVsbD8iIjpkfX19fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCEhYSYmaiE9PTMmJmohPT04JiZqIT09Mil7aWYoZSYmYyBpbiBmLmF0dHJGbilyZXR1cm4gZihhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufWlmKGgmJiJzZXQiaW4gaCYmaSYmKGc9aC5zZXQoYSxkLGMpKSE9PWIpcmV0dXJuIGc7YS5zZXRBdHRyaWJ1dGUoYywiIitkKTtyZXR1cm4gZH1pZihoJiYiZ2V0ImluIGgmJmkmJihnPWguZ2V0KGEsYykpIT09bnVsbClyZXR1cm4gZztnPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBnPT09bnVsbD9iOmd9fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaCxpPTA7aWYoYiYmYS5ub2RlVHlwZT09PTEpe2Q9Yi50b0xvd2VyQ2FzZSgpLnNwbGl0KHApLGc9ZC5sZW5ndGg7Zm9yKDtpPGc7aSsrKWU9ZFtpXSxlJiYoYz1mLnByb3BGaXhbZV18fGUsaD11LnRlc3QoZSksaHx8Zi5hdHRyKGEsZSwiIiksYS5yZW1vdmVBdHRyaWJ1dGUodj9lOmMpLGgmJmMgaW4gYSYmKGFbY109ITEpKX19LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoci50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUpZi5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighZi5zdXBwb3J0LnJhZGlvVmFsdWUmJmI9PT0icmFkaW8iJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpO3JldHVybiBifX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oYSxiKXtpZih3JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB3LmdldChhLGIpO3JldHVybiBiIGluIGE/YS52YWx1ZTpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuc2V0KGEsYixjKTthLnZhbHVlPWJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaT1hLm5vZGVUeXBlO2lmKCEhYSYmaSE9PTMmJmkhPT04JiZpIT09Mil7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnMudGVzdChhLm5vZGVOYW1lKXx8dC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiaW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgseD17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT1mLnByb3AoYSxjKTtyZXR1cm4gZT09PSEwfHx0eXBlb2YgZSE9ImJvb2xlYW4iJiYoZD1hLmdldEF0dHJpYnV0ZU5vZGUoYykpJiZkLm5vZGVWYWx1ZSE9PSExP2MudG9Mb3dlckNhc2UoKTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2I9PT0hMT9mLnJlbW92ZUF0dHIoYSxjKTooZD1mLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gY319LHZ8fCh5PXtuYW1lOiEwLGlkOiEwLGNvb3JkczohMH0sdz1mLnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQ7ZD1hLmdldEF0dHJpYnV0ZU5vZGUoYyk7cmV0dXJuIGQmJih5W2NdP2Qubm9kZVZhbHVlIT09IiI6ZC5zcGVjaWZpZWQpP2Qubm9kZVZhbHVlOmJ9LHNldDpmdW5jdGlvbihhLGIsZCl7dmFyIGU9YS5nZXRBdHRyaWJ1dGVOb2RlKGQpO2V8fChlPWMuY3JlYXRlQXR0cmlidXRlKGQpLGEuc2V0QXR0cmlidXRlTm9kZShlKSk7cmV0dXJuIGUubm9kZVZhbHVlPWIrIiJ9fSxmLmF0dHJIb29rcy50YWJpbmRleC5zZXQ9dy5zZXQsZi5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGIpe2YuYXR0ckhvb2tzW2JdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2JdLHtzZXQ6ZnVuY3Rpb24oYSxjKXtpZihjPT09IiIpe2Euc2V0QXR0cmlidXRlKGIsImF1dG8iKTtyZXR1cm4gY319fSl9KSxmLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e2dldDp3LmdldCxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2I9PT0iIiYmKGI9ImZhbHNlIiksdy5zZXQoYSxiLGMpfX0pLGYuc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8Zi5lYWNoKFsiaHJlZiIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxjKXtmLmF0dHJIb29rc1tjXT1mLmV4dGVuZChmLmF0dHJIb29rc1tjXSx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBkPWEuZ2V0QXR0cmlidXRlKGMsMik7cmV0dXJuIGQ9PT1udWxsP2I6ZH19KX0pLGYuc3VwcG9ydC5zdHlsZXx8KGYuYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpfHxifSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0PSIiK2J9fSksZi5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoZi5wcm9wSG9va3Muc2VsZWN0ZWQ9Zi5leHRlbmQoZi5wcm9wSG9va3Muc2VsZWN0ZWQse2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7YiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KTtyZXR1cm4gbnVsbH19KSksZi5zdXBwb3J0LmVuY3R5cGV8fChmLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKSxmLnN1cHBvcnQuY2hlY2tPbnx8Zi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Zi52YWxIb29rc1t0aGlzXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidmFsdWUiKT09PW51bGw/Im9uIjphLnZhbHVlfX19KSxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPWYuZXh0ZW5kKGYudmFsSG9va3NbdGhpc10se3NldDpmdW5jdGlvbihhLGIpe2lmKGYuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPWYuaW5BcnJheShmKGEpLnZhbCgpLGIpPj0wfX0pfSk7dmFyIHo9L14oPzp0ZXh0YXJlYXxpbnB1dHxzZWxlY3QpJC9pLEE9L14oW15cLl0qKT8oPzpcLiguKykpPyQvLEI9Lyg/Ol58XHMpaG92ZXIoXC5cUyspP1xiLyxDPS9ea2V5LyxEPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxFPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxGPS9eKFx3KikoPzojKFtcd1wtXSspKT8oPzpcLihbXHdcLV0rKSk/JC8sRz1mdW5jdGlvbigNCmEpe3ZhciBiPUYuZXhlYyhhKTtiJiYoYlsxXT0oYlsxXXx8IiIpLnRvTG93ZXJDYXNlKCksYlszXT1iWzNdJiZuZXcgUmVnRXhwKCIoPzpefFxccykiK2JbM10rIig/Olxcc3wkKSIpKTtyZXR1cm4gYn0sSD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYXR0cmlidXRlc3x8e307cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHwoYy5pZHx8e30pLnZhbHVlPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KChjWyJjbGFzcyJdfHx7fSkudmFsdWUpKX0sST1mdW5jdGlvbihhKXtyZXR1cm4gZi5ldmVudC5zcGVjaWFsLmhvdmVyP2E6YS5yZXBsYWNlKEIsIm1vdXNlZW50ZXIkMSBtb3VzZWxlYXZlJDEiKX07Zi5ldmVudD17YWRkOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaSxqLGssbCxtLG4sbyxwLHEscixzO2lmKCEoYS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHwhY3x8IWR8fCEoaD1mLl9kYXRhKGEpKSkpe2QuaGFuZGxlciYmKHA9ZCxkPXAuaGFuZGxlcixnPXAuc2VsZWN0b3IpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyksaj1oLmV2ZW50cyxqfHwoaC5ldmVudHM9aj17fSksaT1oLmhhbmRsZSxpfHwoaC5oYW5kbGU9aT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiYoIWF8fGYuZXZlbnQudHJpZ2dlcmVkIT09YS50eXBlKT9mLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGkuZWxlbSxhcmd1bWVudHMpOmJ9LGkuZWxlbT1hKSxjPWYudHJpbShJKGMpKS5zcGxpdCgiICIpO2ZvcihrPTA7azxjLmxlbmd0aDtrKyspe2w9QS5leGVjKGNba10pfHxbXSxtPWxbMV0sbj0obFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHM9Zi5ldmVudC5zcGVjaWFsW21dfHx7fSxtPShnP3MuZGVsZWdhdGVUeXBlOnMuYmluZFR5cGUpfHxtLHM9Zi5ldmVudC5zcGVjaWFsW21dfHx7fSxvPWYuZXh0ZW5kKHt0eXBlOm0sb3JpZ1R5cGU6bFsxXSxkYXRhOmUsaGFuZGxlcjpkLGd1aWQ6ZC5ndWlkLHNlbGVjdG9yOmcscXVpY2s6ZyYmRyhnKSxuYW1lc3BhY2U6bi5qb2luKCIuIil9LHApLHI9alttXTtpZighcil7cj1qW21dPVtdLHIuZGVsZWdhdGVDb3VudD0wO2lmKCFzLnNldHVwfHxzLnNldHVwLmNhbGwoYSxlLG4saSk9PT0hMSlhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKG0saSwhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK20saSl9cy5hZGQmJihzLmFkZC5jYWxsKGEsbyksby5oYW5kbGVyLmd1aWR8fChvLmhhbmRsZXIuZ3VpZD1kLmd1aWQpKSxnP3Iuc3BsaWNlKHIuZGVsZWdhdGVDb3VudCsrLDAsbyk6ci5wdXNoKG8pLGYuZXZlbnQuZ2xvYmFsW21dPSEwfWE9bnVsbH19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZz1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSksaCxpLGosayxsLG0sbixvLHAscSxyLHM7aWYoISFnJiYhIShvPWcuZXZlbnRzKSl7Yj1mLnRyaW0oSShifHwiIikpLnNwbGl0KCIgIik7Zm9yKGg9MDtoPGIubGVuZ3RoO2grKyl7aT1BLmV4ZWMoYltoXSl8fFtdLGo9az1pWzFdLGw9aVsyXTtpZighail7Zm9yKGogaW4gbylmLmV2ZW50LnJlbW92ZShhLGorYltoXSxjLGQsITApO2NvbnRpbnVlfXA9Zi5ldmVudC5zcGVjaWFsW2pdfHx7fSxqPShkP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUpfHxqLHI9b1tqXXx8W10sbT1yLmxlbmd0aCxsPWw/bmV3IFJlZ0V4cCgiKF58XFwuKSIrbC5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTpudWxsO2ZvcihuPTA7bjxyLmxlbmd0aDtuKyspcz1yW25dLChlfHxrPT09cy5vcmlnVHlwZSkmJighY3x8Yy5ndWlkPT09cy5ndWlkKSYmKCFsfHxsLnRlc3Qocy5uYW1lc3BhY2UpKSYmKCFkfHxkPT09cy5zZWxlY3Rvcnx8ZD09PSIqKiImJnMuc2VsZWN0b3IpJiYoci5zcGxpY2Uobi0tLDEpLHMuc2VsZWN0b3ImJnIuZGVsZWdhdGVDb3VudC0tLHAucmVtb3ZlJiZwLnJlbW92ZS5jYWxsKGEscykpO3IubGVuZ3RoPT09MCYmbSE9PXIubGVuZ3RoJiYoKCFwLnRlYXJkb3dufHxwLnRlYXJkb3duLmNhbGwoYSxsKT09PSExKSYmZi5yZW1vdmVFdmVudChhLGosZy5oYW5kbGUpLGRlbGV0ZSBvW2pdKX1mLmlzRW1wdHlPYmplY3QobykmJihxPWcuaGFuZGxlLHEmJihxLmVsZW09bnVsbCksZi5yZW1vdmVEYXRhKGEsWyJldmVudHMiLCJoYW5kbGUiXSwhMCkpfX0sY3VzdG9tRXZlbnQ6e2dldERhdGE6ITAsc2V0RGF0YTohMCxjaGFuZ2VEYXRhOiEwfSx0cmlnZ2VyOmZ1bmN0aW9uKGMsZCxlLGcpe2lmKCFlfHxlLm5vZGVUeXBlIT09MyYmZS5ub2RlVHlwZSE9PTgpe3ZhciBoPWMudHlwZXx8YyxpPVtdLGosayxsLG0sbixvLHAscSxyLHM7aWYoRS50ZXN0KGgrZi5ldmVudC50cmlnZ2VyZWQpKXJldHVybjtoLmluZGV4T2YoIiEiKT49MCYmKGg9aC5zbGljZSgwLC0xKSxrPSEwKSxoLmluZGV4T2YoIi4iKT49MCYmKGk9aC5zcGxpdCgiLiIpLGg9aS5zaGlmdCgpLGkuc29ydCgpKTtpZigoIWV8fGYuZXZlbnQuY3VzdG9tRXZlbnRbaF0pJiYhZi5ldmVudC5nbG9iYWxbaF0pcmV0dXJuO2M9dHlwZW9mIGM9PSJvYmplY3QiP2NbZi5leHBhbmRvXT9jOm5ldyBmLkV2ZW50KGgsYyk6bmV3IGYuRXZlbnQoaCksYy50eXBlPWgsYy5pc1RyaWdnZXI9ITAsYy5leGNsdXNpdmU9ayxjLm5hbWVzcGFjZT1pLmpvaW4oIi4iKSxjLm5hbWVzcGFjZV9yZT1jLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpOm51bGwsbz1oLmluZGV4T2YoIjoiKTwwPyJvbiIraDoiIjtpZighZSl7aj1mLmNhY2hlO2ZvcihsIGluIGopaltsXS5ldmVudHMmJmpbbF0uZXZlbnRzW2hdJiZmLmV2ZW50LnRyaWdnZXIoYyxkLGpbbF0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZSksZD1kIT1udWxsP2YubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxwPWYuZXZlbnQuc3BlY2lhbFtoXXx8e307aWYocC50cmlnZ2VyJiZwLnRyaWdnZXIuYXBwbHkoZSxkKT09PSExKXJldHVybjtyPVtbZSxwLmJpbmRUeXBlfHxoXV07aWYoIWcmJiFwLm5vQnViYmxlJiYhZi5pc1dpbmRvdyhlKSl7cz1wLmRlbGVnYXRlVHlwZXx8aCxtPUUudGVzdChzK2gpP2U6ZS5wYXJlbnROb2RlLG49bnVsbDtmb3IoO207bT1tLnBhcmVudE5vZGUpci5wdXNoKFttLHNdKSxuPW07biYmbj09PWUub3duZXJEb2N1bWVudCYmci5wdXNoKFtuLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvd3x8YSxzXSl9Zm9yKGw9MDtsPHIubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2wrKyltPXJbbF1bMF0sYy50eXBlPXJbbF1bMV0scT0oZi5fZGF0YShtLCJldmVudHMiKXx8e30pW2MudHlwZV0mJmYuX2RhdGEobSwiaGFuZGxlIikscSYmcS5hcHBseShtLGQpLHE9byYmbVtvXSxxJiZmLmFjY2VwdERhdGEobSkmJnEuYXBwbHkobSxkKT09PSExJiZjLnByZXZlbnREZWZhdWx0KCk7Yy50eXBlPWgsIWcmJiFjLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIXAuX2RlZmF1bHR8fHAuX2RlZmF1bHQuYXBwbHkoZS5vd25lckRvY3VtZW50LGQpPT09ITEpJiYoaCE9PSJjbGljayJ8fCFmLm5vZGVOYW1lKGUsImEiKSkmJmYuYWNjZXB0RGF0YShlKSYmbyYmZVtoXSYmKGghPT0iZm9jdXMiJiZoIT09ImJsdXIifHxjLnRhcmdldC5vZmZzZXRXaWR0aCE9PTApJiYhZi5pc1dpbmRvdyhlKSYmKG49ZVtvXSxuJiYoZVtvXT1udWxsKSxmLmV2ZW50LnRyaWdnZXJlZD1oLGVbaF0oKSxmLmV2ZW50LnRyaWdnZXJlZD1iLG4mJihlW29dPW4pKTtyZXR1cm4gYy5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihjKXtjPWYuZXZlbnQuZml4KGN8fGEuZXZlbnQpO3ZhciBkPShmLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10sZT1kLmRlbGVnYXRlQ291bnQsZz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxoPSFjLmV4Y2x1c2l2ZSYmIWMubmFtZXNwYWNlLGk9Zi5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9LGo9W10sayxsLG0sbixvLHAscSxyLHMsdCx1O2dbMF09YyxjLmRlbGVnYXRlVGFyZ2V0PXRoaXM7aWYoIWkucHJlRGlzcGF0Y2h8fGkucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGMpIT09ITEpe2lmKGUmJighYy5idXR0b258fGMudHlwZSE9PSJjbGljayIpKXtuPWYodGhpcyksbi5jb250ZXh0PXRoaXMub3duZXJEb2N1bWVudHx8dGhpcztmb3IobT1jLnRhcmdldDttIT10aGlzO209bS5wYXJlbnROb2RlfHx0aGlzKWlmKG0uZGlzYWJsZWQhPT0hMCl7cD17fSxyPVtdLG5bMF09bTtmb3Ioaz0wO2s8ZTtrKyspcz1kW2tdLHQ9cy5zZWxlY3RvcixwW3RdPT09YiYmKHBbdF09cy5xdWljaz9IKG0scy5xdWljayk6bi5pcyh0KSkscFt0XSYmci5wdXNoKHMpO3IubGVuZ3RoJiZqLnB1c2goe2VsZW06bSxtYXRjaGVzOnJ9KX19ZC5sZW5ndGg+ZSYmai5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGUpfSk7Zm9yKGs9MDtrPGoubGVuZ3RoJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cT1qW2tdLGMuY3VycmVudFRhcmdldD1xLmVsZW07Zm9yKGw9MDtsPHEubWF0Y2hlcy5sZW5ndGgmJiFjLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7bCsrKXtzPXEubWF0Y2hlc1tsXTtpZihofHwhYy5uYW1lc3BhY2UmJiFzLm5hbWVzcGFjZXx8Yy5uYW1lc3BhY2VfcmUmJmMubmFtZXNwYWNlX3JlLnRlc3Qocy5uYW1lc3BhY2UpKWMuZGF0YT1zLmRhdGEsYy5oYW5kbGVPYmo9cyxvPSgoZi5ldmVudC5zcGVjaWFsW3Mub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxzLmhhbmRsZXIpLmFwcGx5KHEuZWxlbSxnKSxvIT09YiYmKGMucmVzdWx0PW8sbz09PSExJiYoYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpKX19aS5wb3N0RGlzcGF0Y2gmJmkucG9zdERpc3BhdGNoLmNhbGwodGhpcyxjKTtyZXR1cm4gYy5yZXN1bHR9fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7YS53aGljaD09bnVsbCYmKGEud2hpY2g9Yi5jaGFyQ29kZSE9bnVsbD9iLmNoYXJDb2RlOmIua2V5Q29kZSk7cmV0dXJuIGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGQpe3ZhciBlLGYsZyxoPWQuYnV0dG9uLGk9ZC5mcm9tRWxlbWVudDthLnBhZ2VYPT1udWxsJiZkLmNsaWVudFghPW51bGwmJihlPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGMsZj1lLmRvY3VtZW50RWxlbWVudCxnPWUuYm9keSxhLnBhZ2VYPWQuY2xpZW50WCsoZiYmZi5zY3JvbGxMZWZ0fHxnJiZnLnNjcm9sbExlZnR8fDApLShmJiZmLmNsaWVudExlZnR8fGcmJmcuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1kLmNsaWVudFkrKGYmJmYuc2Nyb2xsVG9wfHxnJiZnLnNjcm9sbFRvcHx8MCktKGYmJmYuY2xpZW50VG9wfHxnJiZnLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmkmJihhLnJlbGF0ZWRUYXJnZXQ9aT09PWEudGFyZ2V0P2QudG9FbGVtZW50OmkpLCFhLndoaWNoJiZoIT09YiYmKGEud2hpY2g9aCYxPzE6aCYyPzM6aCY0PzI6MCk7cmV0dXJuIGF9fSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtmLmV4cGFuZG9dKXJldHVybiBhO3ZhciBkLGUsZz1hLGg9Zi5ldmVudC5maXhIb29rc1thLnR5cGVdfHx7fSxpPWgucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoaC5wcm9wcyk6dGhpcy5wcm9wczthPWYuRXZlbnQoZyk7Zm9yKGQ9aS5sZW5ndGg7ZDspZT1pWy0tZF0sYVtlXT1nW2VdO2EudGFyZ2V0fHwoYS50YXJnZXQ9Zy5zcmNFbGVtZW50fHxjKSxhLnRhcmdldC5ub2RlVHlwZT09PTMmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9PT1iJiYoYS5tZXRhS2V5PWEuY3RybEtleSk7cmV0dXJuIGguZmlsdGVyP2guZmlsdGVyKGEsZyk6YX0sc3BlY2lhbDp7cmVhZHk6e3NldHVwOmYuYmluZFJlYWR5fSxsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e2RlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e2RlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtmLmlzV2luZG93KHRoaXMpJiYodGhpcy5vbmJlZm9yZXVubG9hZD1jKX0sdGVhcmRvd246ZnVuY3Rpb24oYSxiKXt0aGlzLm9uYmVmb3JldW5sb2FkPT09YiYmKHRoaXMub25iZWZvcmV1bmxvYWQ9bnVsbCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Zi5leHRlbmQobmV3IGYuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP2YuZXZlbnQudHJpZ2dlcihlLG51bGwsYik6Zi5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sZi5ldmVudC5oYW5kbGU9Zi5ldmVudC5kaXNwYXRjaCxmLnJlbW92ZUV2ZW50PWMucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX06ZnVuY3Rpb24oYSxiLGMpe2EuZGV0YWNoRXZlbnQmJmEuZGV0YWNoRXZlbnQoIm9uIitiLGMpfSxmLkV2ZW50PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgZi5FdmVudCkpcmV0dXJuIG5ldyBmLkV2ZW50KGEsYik7YSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8YS5yZXR1cm5WYWx1ZT09PSExfHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCk/SzpKKTp0aGlzLnR5cGU9YSxiJiZmLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxmLm5vdygpLHRoaXNbZi5leHBhbmRvXT0hMH0sZi5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9Szt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1LO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1LLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDpKLGlzUHJvcGFnYXRpb25TdG9wcGVkOkosaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6Sn0sZi5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0sZnVuY3Rpb24oYSxiKXtmLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZD1hLnJlbGF0ZWRUYXJnZXQsZT1hLmhhbmRsZU9iaixnPWUuc2VsZWN0b3IsaDtpZighZHx8ZCE9PWMmJiFmLmNvbnRhaW5zKGMsZCkpYS50eXBlPWUub3JpZ1R5cGUsaD1lLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iO3JldHVybiBofX19KSxmLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7aWYoZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpcmV0dXJuITE7Zi5ldmVudC5hZGQodGhpcywiY2xpY2suX3N1Ym1pdCBrZXlwcmVzcy5fc3VibWl0IixmdW5jdGlvbihhKXt2YXIgYz1hLnRhcmdldCxkPWYubm9kZU5hbWUoYywiaW5wdXQiKXx8Zi5ub2RlTmFtZShjLCJidXR0b24iKT9jLmZvcm06YjtkJiYhZC5fc3VibWl0X2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoZCwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxkLl9zdWJtaXRfYXR0YWNoZWQ9ITApfSl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihhKXthLl9zdWJtaXRfYnViYmxlJiYoZGVsZXRlIGEuX3N1Ym1pdF9idWJibGUsdGhpcy5wYXJlbnROb2RlJiYhYS5pc1RyaWdnZXImJmYuZXZlbnQuc2ltdWxhdGUoInN1Ym1pdCIsdGhpcy5wYXJlbnROb2RlLGEsITApKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtpZihmLm5vZGVOYW1lKHRoaXMsImZvcm0iKSlyZXR1cm4hMTtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpfX0pLGYuc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoZi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtpZih6LnRlc3QodGhpcy5ub2RlTmFtZSkpe2lmKHRoaXMudHlwZT09PSJjaGVja2JveCJ8fHRoaXMudHlwZT09PSJyYWRpbyIpZi5ldmVudC5hZGQodGhpcywicHJvcGVydHljaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50LnByb3BlcnR5TmFtZT09PSJjaGVja2VkIiYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMCl9KSxmLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLl9qdXN0X2NoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RfY2hhbmdlZD0hMSxmLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCkpfSk7cmV0dXJuITF9Zi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7ei50ZXN0KGIubm9kZU5hbWUpJiYhYi5fY2hhbmdlX2F0dGFjaGVkJiYoZi5ldmVudC5hZGQoYiwiY2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmIWEuaXNTaW11bGF0ZWQmJiFhLmlzVHJpZ2dlciYmZi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxiLl9jaGFuZ2VfYXR0YWNoZWQ9ITApfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtpZih0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fGIudHlwZSE9PSJyYWRpbyImJmIudHlwZSE9PSJjaGVja2JveCIpcmV0dXJuIGEuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2YuZXZlbnQucmVtb3ZlKHRoaXMsIi5fY2hhbmdlIik7cmV0dXJuIHoudGVzdCh0aGlzLm5vZGVOYW1lKX19KSxmLnN1cHBvcnQuZm9jdXNpbkJ1YmJsZXN8fGYuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgZD0wLGU9ZnVuY3Rpb24oYSl7Zi5ldmVudC5zaW11bGF0ZShiLGEudGFyZ2V0LGYuZXZlbnQuZml4KGEpLCEwKX07Zi5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe2QrKz09PTAmJmMuYWRkRXZlbnRMaXN0ZW5lcihhLGUsITApfSx0ZWFyZG93bjpmdW5jdGlvbigpey0tZD09PTAmJmMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGUsITApfX19KSxmLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxjLGQsZSxnKXt2YXIgaCxpO2lmKHR5cGVvZiBhPT0ib2JqZWN0Iil7dHlwZW9mIGMhPSJzdHJpbmciJiYoZD1kfHxjLGM9Yik7Zm9yKGkgaW4gYSl0aGlzLm9uKGksYyxkLGFbaV0sZyk7cmV0dXJuIHRoaXN9ZD09bnVsbCYmZT09bnVsbD8oZT1jLGQ9Yz1iKTplPT1udWxsJiYodHlwZW9mIGM9PSJzdHJpbmciPyhlPWQsZD1iKTooZT1kLGQ9YyxjPWIpKTtpZihlPT09ITEpZT1KO2Vsc2UgaWYoIWUpcmV0dXJuIHRoaXM7Zz09PTEmJihoPWUsZT1mdW5jdGlvbihhKXtmKCkub2ZmKGEpO3JldHVybiBoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWguZ3VpZHx8KGguZ3VpZD1mLmd1aWQrKykpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LmFkZCh0aGlzLGEsZSxkLGMpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxjLGQpe2lmKGEmJmEucHJldmVudERlZmF1bHQmJmEuaGFuZGxlT2JqKXt2YXIgZT1hLmhhbmRsZU9iajtmKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihlLm5hbWVzcGFjZT9lLm9yaWdUeXBlKyIuIitlLm5hbWVzcGFjZTplLm9yaWdUeXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1KKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksQy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxELnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xfHxkPT09OXx8ZD09PTExKXtpZih0eXBlb2YgYS50ZXh0Q29udGVudD09InN0cmluZyIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYodHlwZW9mIGEuaW5uZXJUZXh0PT0ic3RyaW5nIilyZXR1cm4gYS5pbm5lclRleHQucmVwbGFjZShrLCIiKTtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpZSs9bihhKX1lbHNlIGlmKGQ9PT0zfHxkPT09NClyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoYj0wO2M9YVtiXTtiKyspYy5ub2RlVHlwZSE9PTgmJihlKz1uKGMpKTtyZXR1cm4gZX0sbz1tLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT0ic3RyaW5nIixkPWMmJiFsLnRlc3QoYiksZT1jJiYhZDtkJiYoYj1iLnRvTG93ZXJDYXNlKCkpO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGgsaDtmPGc7ZisrKWlmKGg9YVtmXSl7d2hpbGUoKGg9aC5wcmV2aW91c1NpYmxpbmcpJiZoLm5vZGVUeXBlIT09MSk7YVtmXT1lfHxoJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2h8fCExOmg9PT1ifWUmJm0uZmlsdGVyKGIsYSwhMCl9LCI+IjpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9dHlwZW9mIGI9PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiFsLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7by5tYXRjaC5nbG9iYWxQT1M9cDt2YXIgcz1mdW5jdGlvbihhLGIpe2E9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKTtpZihiKXtiLnB1c2guYXBwbHkoYixhKTtyZXR1cm4gYn1yZXR1cm4gYX07dHJ5e0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGMuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsMClbMF0ubm9kZVR5cGV9Y2F0Y2godCl7cz1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD1ifHxbXTtpZihnLmNhbGwoYSk9PT0iW29iamVjdCBBcnJheV0iKUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsYSk7ZWxzZSBpZih0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZT1hLmxlbmd0aDtjPGU7YysrKWQucHVzaChhW2NdKTtlbHNlIGZvcig7YVtjXTtjKyspZC5wdXNoKGFbY10pO3JldHVybiBkfX12YXIgdSx2O2MuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP3U9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7aD0hMDtyZXR1cm4gMH1pZighYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbnx8IWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24pcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/LTE6MTtyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSY0Py0xOjF9Oih1PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoYS5zb3VyY2VJbmRleCYmYi5zb3VyY2VJbmRleClyZXR1cm4gYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O3ZhciBjLGQsZT1bXSxmPVtdLGc9YS5wYXJlbnROb2RlLGk9Yi5wYXJlbnROb2RlLGo9ZztpZihnPT09aSlyZXR1cm4gdihhLGIpO2lmKCFnKXJldHVybi0xO2lmKCFpKXJldHVybiAxO3doaWxlKGopZS51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2o9aTt3aGlsZShqKWYudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtjPWUubGVuZ3RoLGQ9Zi5sZW5ndGg7Zm9yKHZhciBrPTA7azxjJiZrPGQ7aysrKWlmKGVba10hPT1mW2tdKXJldHVybiB2KGVba10sZltrXSk7cmV0dXJuIGs9PT1jP3YoYSxmW2tdLC0xKTp2KGVba10sYiwxKX0sdj1mdW5jdGlvbihhLGIsYyl7aWYoYT09PWIpcmV0dXJuIGM7dmFyIGQ9YS5uZXh0U2libGluZzt3aGlsZShkKXtpZihkPT09YilyZXR1cm4tMTtkPWQubmV4dFNpYmxpbmd9cmV0dXJuIDF9KSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKSxlPWMuZG9jdW1lbnRFbGVtZW50O2EuaW5uZXJIVE1MPSI8YSBuYW1lPSciK2QrIicvPiIsZS5pbnNlcnRCZWZvcmUoYSxlLmZpcnN0Q2hpbGQpLGMuZ2V0RWxlbWVudEJ5SWQoZCkmJihvLmZpbmQuSUQ9ZnVuY3Rpb24oYSxjLGQpe2lmKHR5cGVvZiBjLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWQpe3ZhciBlPWMuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGU/ZS5pZD09PWFbMV18fHR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09YVsxXT9bZV06YjpbXX19LG8uZmlsdGVyLklEPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9InVuZGVmaW5lZCImJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmMmJmMubm9kZVZhbHVlPT09Yn0pLGUucmVtb3ZlQ2hpbGQoYSksZT1hPW51bGx9KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuYXBwZW5kQ2hpbGQoYy5jcmVhdGVDb21tZW50KCIiKSksYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aD4wJiYoby5maW5kLlRBRz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSk7aWYoYVsxXT09PSIqIil7dmFyIGQ9W107Zm9yKHZhciBlPTA7Y1tlXTtlKyspY1tlXS5ub2RlVHlwZT09PTEmJmQucHVzaChjW2VdKTtjPWR9cmV0dXJuIGN9KSxhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsYS5maXJzdENoaWxkJiZ0eXBlb2YgYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSE9InVuZGVmaW5lZCImJmEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSE9PSIjIiYmKG8uYXR0ckhhbmRsZS5ocmVmPWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIsMil9KSxhPW51bGx9KCksYy5xdWVyeVNlbGVjdG9yQWxsJiZmdW5jdGlvbigpe3ZhciBhPW0sYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9Il9fc2l6emxlX18iO2IuaW5uZXJIVE1MPSI8cCBjbGFzcz0nVEVTVCc+PC9wPiI7aWYoIWIucXVlcnlTZWxlY3RvckFsbHx8Yi5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aCE9PTApe209ZnVuY3Rpb24oYixlLGYsZyl7ZT1lfHxjO2lmKCFnJiYhbS5pc1hNTChlKSl7dmFyIGg9L14oXHcrJCl8XlwuKFtcd1wtXSskKXxeIyhbXHdcLV0rJCkvLmV4ZWMoYik7aWYoaCYmKGUubm9kZVR5cGU9PT0xfHxlLm5vZGVUeXBlPT09OSkpe2lmKGhbMV0pcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKSxmKTtpZihoWzJdJiZvLmZpbmQuQ0xBU1MmJmUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gcyhlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaFsyXSksZil9aWYoZS5ub2RlVHlwZT09PTkpe2lmKGI9PT0iYm9keSImJmUuYm9keSlyZXR1cm4gcyhbZS5ib2R5XSxmKTtpZihoJiZoWzNdKXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGhbM10pO2lmKCFpfHwhaS5wYXJlbnROb2RlKXJldHVybiBzKFtdLGYpO2lmKGkuaWQ9PT1oWzNdKXJldHVybiBzKFtpXSxmKX10cnl7cmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKGIpLGYpfWNhdGNoKGope319ZWxzZSBpZihlLm5vZGVUeXBlPT09MSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09Im9iamVjdCIpe3ZhciBrPWUsbD1lLmdldEF0dHJpYnV0ZSgiaWQiKSxuPWx8fGQscD1lLnBhcmVudE5vZGUscT0vXlxzKlsrfl0vLnRlc3QoYik7bD9uPW4ucmVwbGFjZSgvJy9nLCJcXCQmIik6ZS5zZXRBdHRyaWJ1dGUoImlkIixuKSxxJiZwJiYoZT1lLnBhcmVudE5vZGUpO3RyeXtpZighcXx8cClyZXR1cm4gcyhlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZD0nIituKyInXSAiK2IpLGYpfWNhdGNoKHIpe31maW5hbGx5e2x8fGsucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGEoYixlLGYsZyl9O2Zvcih2YXIgZSBpbiBhKW1bZV09YVtlXTtiPW51bGx9fSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5kb2N1bWVudEVsZW1lbnQsYj1hLm1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxhLm1zTWF0Y2hlc1NlbGVjdG9yO2lmKGIpe3ZhciBkPSFiLmNhbGwoYy5jcmVhdGVFbGVtZW50KCJkaXYiKSwiZGl2IiksZT0hMTt0cnl7Yi5jYWxsKGMuZG9jdW1lbnRFbGVtZW50LCJbdGVzdCE9JyddOnNpenpsZSIpfWNhdGNoKGYpe2U9ITB9bS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxjKXtjPWMucmVwbGFjZSgvXD1ccyooW14nIlxdXSopXHMqXF0vZywiPSckMSddIik7aWYoIW0uaXNYTUwoYSkpdHJ5e2lmKGV8fCFvLm1hdGNoLlBTRVVETy50ZXN0KGMpJiYhLyE9Ly50ZXN0KGMpKXt2YXIgZj1iLmNhbGwoYSxjKTtpZihmfHwhZHx8YS5kb2N1bWVudCYmYS5kb2N1bWVudC5ub2RlVHlwZSE9PTExKXJldHVybiBmfX1jYXRjaChnKXt9cmV0dXJuIG0oYyxudWxsLG51bGwsW2FdKS5sZW5ndGg+MH19fSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKCEhYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGghPT0wKXthLmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKGEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpcmV0dXJuO28ub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1MiKSxvLmZpbmQuQ0xBU1M9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPSJ1bmRlZmluZWQiJiYhYylyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGFbMV0pfSxhPW51bGx9fSgpLGMuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zP20uY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9PWImJihhLmNvbnRhaW5zP2EuY29udGFpbnMoYik6ITApfTpjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNil9Om0uY29udGFpbnM9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sbS5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj0oYT9hLm93bmVyRG9jdW1lbnR8fGE6MCkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiP2Iubm9kZU5hbWUhPT0iSFRNTCI6ITF9O3ZhciB5PWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPVtdLGY9IiIsZz1iLm5vZGVUeXBlP1tiXTpiO3doaWxlKGQ9by5tYXRjaC5QU0VVRE8uZXhlYyhhKSlmKz1kWzBdLGE9YS5yZXBsYWNlKG8ubWF0Y2guUFNFVURPLCIiKTthPW8ucmVsYXRpdmVbYV0/YSsiKiI6YTtmb3IodmFyIGg9MCxpPWcubGVuZ3RoO2g8aTtoKyspbShhLGdbaF0sZSxjKTtyZXR1cm4gbS5maWx0ZXIoZixlKX07bS5hdHRyPWYuYXR0cixtLnNlbGVjdG9ycy5hdHRyTWFwPXt9LGYuZmluZD1tLGYuZXhwcj1tLnNlbGVjdG9ycyxmLmV4cHJbIjoiXT1mLmV4cHIuZmlsdGVycyxmLnVuaXF1ZT1tLnVuaXF1ZVNvcnQsZi50ZXh0PW0uZ2V0VGV4dCxmLmlzWE1MRG9jPW0uaXNYTUwsZi5jb250YWlucz1tLmNvbnRhaW5zfSgpO3ZhciBMPS9VbnRpbCQvLE09L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8sTj0vLC8sTz0vXi5bXjojXFtcLixdKiQvLFA9QXJyYXkucHJvdG90eXBlLnNsaWNlLFE9Zi5leHByLm1hdGNoLmdsb2JhbFBPUyxSPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2YuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYyxkO2lmKHR5cGVvZiBhIT0ic3RyaW5nIilyZXR1cm4gZihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylpZihmLmNvbnRhaW5zKGJbY10sdGhpcykpcmV0dXJuITB9KTt2YXIgZT10aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsYSksZyxoLGk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2c9ZS5sZW5ndGgsZi5maW5kKGEsdGhpc1tjXSxlKTtpZihjPjApZm9yKGg9ZztoPGUubGVuZ3RoO2grKylmb3IoaT0wO2k8ZztpKyspaWYoZVtpXT09PWVbaF0pe2Uuc3BsaWNlKGgtLSwxKTticmVha319cmV0dXJuIGV9LGhhczpmdW5jdGlvbihhKXt2YXIgYj1mKGEpO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGM9Yi5sZW5ndGg7YTxjO2ErKylpZihmLmNvbnRhaW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsYSwhMSksIm5vdCIsYSl9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGEsITApLCJmaWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJih0eXBlb2YgYT09InN0cmluZyI/US50ZXN0KGEpP2YoYSx0aGlzLmNvbnRleHQpLmluZGV4KHRoaXNbMF0pPj0wOmYuZmlsdGVyKGEsdGhpcykubGVuZ3RoPjA6dGhpcy5maWx0ZXIoYSkubGVuZ3RoPjApfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZCxlLGc9dGhpc1swXTtpZihmLmlzQXJyYXkoYSkpe3ZhciBoPTE7d2hpbGUoZyYmZy5vd25lckRvY3VtZW50JiZnIT09Yil7Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylmKGcpLmlzKGFbZF0pJiZjLnB1c2goe3NlbGVjdG9yOmFbZF0sZWxlbTpnLGxldmVsOmh9KTtnPWcucGFyZW50Tm9kZSxoKyt9cmV0dXJuIGN9dmFyIGk9US50ZXN0KGEpfHx0eXBlb2YgYSE9InN0cmluZyI/ZihhLGJ8fHRoaXMuY29udGV4dCk6MDtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO3doaWxlKGcpe2lmKGk/aS5pbmRleChnKT4tMTpmLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGcsYSkpe2MucHVzaChnKTticmVha31nPWcucGFyZW50Tm9kZTtpZighZ3x8IWcub3duZXJEb2N1bWVudHx8Zz09PWJ8fGcubm9kZVR5cGU9PT0xMSlicmVha319Yz1jLmxlbmd0aD4xP2YudW5pcXVlKGMpOmM7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMsImNsb3Nlc3QiLGEpfSxpbmRleDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMucHJldkFsbCgpLmxlbmd0aDotMTtpZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGYuaW5BcnJheSh0aGlzWzBdLGYoYSkpO3JldHVybiBmLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09InN0cmluZyI/ZihhLGIpOmYubWFrZUFycmF5KGEmJmEubm9kZVR5cGU/W2FdOmEpLGQ9Zi5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhTKGNbMF0pfHxTKGRbMF0pP2Q6Zi51bmlxdWUoZCkpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9fSksZi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpmLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9Zi5tYXAodGhpcyxiLGMpO0wudGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1mLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFSW2FdP2YudW5pcXVlKGUpOmUsKHRoaXMubGVuZ3RoPjF8fE4udGVzdChkKSkmJk0udGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsUC5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX19KSxmLmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9uKGEsYixjKXtjJiYoYT0iOm5vdCgiK2ErIikiKTtyZXR1cm4gYi5sZW5ndGg9PT0xP2YuZmluZC5tYXRjaGVzU2VsZWN0b3IoYlswXSxhKT9bYlswXV06W106Zi5maW5kLm1hdGNoZXMoYSxiKX0sZGlyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1bXSxnPWFbY107d2hpbGUoZyYmZy5ub2RlVHlwZSE9PTkmJihkPT09Ynx8Zy5ub2RlVHlwZSE9PTF8fCFmKGcpLmlzKGQpKSlnLm5vZGVUeXBlPT09MSYmZS5wdXNoKGcpLGc9Z1tjXTtyZXR1cm4gZX0sbnRoOmZ1bmN0aW9uKGEsYixjLGQpe2I9Ynx8MTt2YXIgZT0wO2Zvcig7YTthPWFbY10paWYoYS5ub2RlVHlwZT09PTEmJisrZT09PWIpYnJlYWs7cmV0dXJuIGF9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IoO2E7YT1hLm5leHRTaWJsaW5nKWEubm9kZVR5cGU9PT0xJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pO3ZhciBWPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIixXPS8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csWD0vXlxzKy8sWT0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2lnLFo9LzwoW1x3Ol0rKS8sJD0vPHRib2R5L2ksXz0vPHwmIz9cdys7LyxiYT0vPCg/OnNjcmlwdHxzdHlsZSkvaSxiYj0vPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLGJjPW5ldyBSZWdFeHAoIjwoPzoiK1YrIilbXFxzLz5dIiwiaSIpLGJkPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmY9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmc9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYmg9VShjKTtiZy5vcHRncm91cD1iZy5vcHRpb24sYmcudGJvZHk9YmcudGZvb3Q9YmcuY29sZ3JvdXA9YmcuY2FwdGlvbj1iZy50aGVhZCxiZy50aD1iZy50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJnLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWI/Zi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8YykuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHdyYXBBbGw6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPWYoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTEpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtmKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Zi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGYodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Zg0KLmNsZWFuKGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsdGhpcy50b0FycmF5KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhhLCJiZWZvcmUiLGFyZ3VtZW50cyl9fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsZi5jbGVhbihhcmd1bWVudHMpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmdW5jdGlvbihhKXt2YXIgYz10aGlzWzBdfHx7fSxkPTAsZT10aGlzLmxlbmd0aDtpZihhPT09YilyZXR1cm4gYy5ub2RlVHlwZT09PTE/Yy5pbm5lckhUTUwucmVwbGFjZShXLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJhLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFYLnRlc3QoYSkpJiYhYmdbKFouZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKFksIjwkMT48LyQyPiIpO3RyeXtmb3IoO2Q8ZTtkKyspYz10aGlzW2RdfHx7fSxjLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksYy5pbm5lckhUTUw9YSk7Yz0wfWNhdGNoKGcpe319YyYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyksZD1jLmh0bWwoKTtjLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk7dHlwZW9mIGEhPSJzdHJpbmciJiYoYT1mKGEpLmRldGFjaCgpKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtmKHRoaXMpLnJlbW92ZSgpLGI/ZihiKS5iZWZvcmUoYSk6ZihjKS5hcHBlbmQoYSl9KX1yZXR1cm4gdGhpcy5sZW5ndGg/dGhpcy5wdXNoU3RhY2soZihmLmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSk6dGhpc30sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFmLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYmQudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlzKS5kb21NYW5pcChhLGMsZCwhMCl9KTtpZihmLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1mKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhpc1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZi5zdXBwb3J0LnBhcmVudE5vZGUmJmkmJmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVuZ3RoP2U9e2ZyYWdtZW50Oml9OmU9Zi5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxoPWUuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RDaGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmYubm9kZU5hbWUoZywidHIiKTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZC5jYWxsKGM/YmkodGhpc1tsXSxnKTp0aGlzW2xdLGUuY2FjaGVhYmxlfHxtPjEmJmw8bj9mLmNsb25lKGgsITAsITApOmgpfWsubGVuZ3RoJiZmLmVhY2goayxmdW5jdGlvbihhLGIpe2Iuc3JjP2YuYWpheCh7dHlwZToiR0VUIixnbG9iYWw6ITEsdXJsOmIuc3JjLGFzeW5jOiExLGRhdGFUeXBlOiJzY3JpcHQifSk6Zi5nbG9iYWxFdmFsKChiLnRleHR8fGIudGV4dENvbnRlbnR8fGIuaW5uZXJIVE1MfHwiIikucmVwbGFjZShiZiwiLyokMCovIikpLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfSl9cmV0dXJuIHRoaXN9fSksZi5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxnLGgsaSxqPWFbMF07YiYmYlswXSYmKGk9YlswXS5vd25lckRvY3VtZW50fHxiWzBdKSxpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnR8fChpPWMpLGEubGVuZ3RoPT09MSYmdHlwZW9mIGo9PSJzdHJpbmciJiZqLmxlbmd0aDw1MTImJmk9PT1jJiZqLmNoYXJBdCgwKT09PSI8IiYmIWJiLnRlc3QoaikmJihmLnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJkLnRlc3QoaikpJiYoZi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fCFiYy50ZXN0KGopKSYmKGc9ITAsaD1mLmZyYWdtZW50c1tqXSxoJiZoIT09MSYmKGU9aCkpLGV8fChlPWkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGYuY2xlYW4oYSxpLGUsZCkpLGcmJihmLmZyYWdtZW50c1tqXT1oP2U6MSk7cmV0dXJue2ZyYWdtZW50OmUsY2FjaGVhYmxlOmd9fSxmLmZyYWdtZW50cz17fSxmLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyl7dmFyIGQ9W10sZT1mKGMpLGc9dGhpcy5sZW5ndGg9PT0xJiZ0aGlzWzBdLnBhcmVudE5vZGU7aWYoZyYmZy5ub2RlVHlwZT09PTExJiZnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xKXtlW2JdKHRoaXNbMF0pO3JldHVybiB0aGlzfWZvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9KGg+MD90aGlzLmNsb25lKCEwKTp0aGlzKS5nZXQoKTtmKGVbaF0pW2JdKGopLGQ9ZC5jb25jYXQoail9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQsYSxlLnNlbGVjdG9yKX19KSxmLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZyxoPWYuc3VwcG9ydC5odG1sNUNsb25lfHxmLmlzWE1MRG9jKGEpfHwhYmMudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2EuY2xvbmVOb2RlKCEwKTpibyhhKTtpZigoIWYuc3VwcG9ydC5ub0Nsb25lRXZlbnR8fCFmLnN1cHBvcnQubm9DbG9uZUNoZWNrZWQpJiYoYS5ub2RlVHlwZT09PTF8fGEubm9kZVR5cGU9PT0xMSkmJiFmLmlzWE1MRG9jKGEpKXtiayhhLGgpLGQ9YmwoYSksZT1ibChoKTtmb3IoZz0wO2RbZ107KytnKWVbZ10mJmJrKGRbZ10sZVtnXSl9aWYoYil7YmooYSxoKTtpZihjKXtkPWJsKGEpLGU9YmwoaCk7Zm9yKGc9MDtkW2ddOysrZyliaihkW2ddLGVbZ10pfX1kPWU9bnVsbDtyZXR1cm4gaH0sY2xlYW46ZnVuY3Rpb24oYSxiLGQsZSl7dmFyIGcsaCxpLGo9W107Yj1ifHxjLHR5cGVvZiBiLmNyZWF0ZUVsZW1lbnQ9PSJ1bmRlZmluZWQiJiYoYj1iLm93bmVyRG9jdW1lbnR8fGJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8Yyk7Zm9yKHZhciBrPTAsbDsobD1hW2tdKSE9bnVsbDtrKyspe3R5cGVvZiBsPT0ibnVtYmVyIiYmKGwrPSIiKTtpZighbCljb250aW51ZTtpZih0eXBlb2YgbD09InN0cmluZyIpaWYoIV8udGVzdChsKSlsPWIuY3JlYXRlVGV4dE5vZGUobCk7ZWxzZXtsPWwucmVwbGFjZShZLCI8JDE+PC8kMj4iKTt2YXIgbT0oWi5leGVjKGwpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG49YmdbbV18fGJnLl9kZWZhdWx0LG89blswXSxwPWIuY3JlYXRlRWxlbWVudCgiZGl2IikscT1iaC5jaGlsZE5vZGVzLHI7Yj09PWM/YmguYXBwZW5kQ2hpbGQocCk6VShiKS5hcHBlbmRDaGlsZChwKSxwLmlubmVySFRNTD1uWzFdK2wrblsyXTt3aGlsZShvLS0pcD1wLmxhc3RDaGlsZDtpZighZi5zdXBwb3J0LnRib2R5KXt2YXIgcz0kLnRlc3QobCksdD1tPT09InRhYmxlIiYmIXM/cC5maXJzdENoaWxkJiZwLmZpcnN0Q2hpbGQuY2hpbGROb2RlczpuWzFdPT09Ijx0YWJsZT4iJiYhcz9wLmNoaWxkTm9kZXM6W107Zm9yKGk9dC5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHRbaV0sInRib2R5IikmJiF0W2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZ0W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodFtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmWC50ZXN0KGwpJiZwLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKFguZXhlYyhsKVswXSkscC5maXJzdENoaWxkKSxsPXAuY2hpbGROb2RlcyxwJiYocC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHApLHEubGVuZ3RoPjAmJihyPXFbcS5sZW5ndGgtMV0sciYmci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocikpKX12YXIgdTtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYobFswXSYmdHlwZW9mICh1PWwubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHU7aSsrKWJuKGxbaV0pO2Vsc2UgYm4obCk7bC5ub2RlVHlwZT9qLnB1c2gobCk6aj1mLm1lcmdlKGosbCl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiZS50ZXN0KGEudHlwZSl9O2ZvcihrPTA7altrXTtrKyspe2g9altrXTtpZihlJiZmLm5vZGVOYW1lKGgsInNjcmlwdCIpJiYoIWgudHlwZXx8YmUudGVzdChoLnR5cGUpKSllLnB1c2goaC5wYXJlbnROb2RlP2gucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKTpoKTtlbHNle2lmKGgubm9kZVR5cGU9PT0xKXt2YXIgdj1mLmdyZXAoaC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZyk7ai5zcGxpY2UuYXBwbHkoaixbaysxLDBdLmNvbmNhdCh2KSl9ZC5hcHBlbmRDaGlsZChoKX19fXJldHVybiBqfSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPWYuY2FjaGUsZT1mLmV2ZW50LnNwZWNpYWwsZz1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kbztmb3IodmFyIGg9MCxpOyhpPWFbaF0pIT1udWxsO2grKyl7aWYoaS5ub2RlTmFtZSYmZi5ub0RhdGFbaS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSljb250aW51ZTtjPWlbZi5leHBhbmRvXTtpZihjKXtiPWRbY107aWYoYiYmYi5ldmVudHMpe2Zvcih2YXIgaiBpbiBiLmV2ZW50cyllW2pdP2YuZXZlbnQucmVtb3ZlKGksaik6Zi5yZW1vdmVFdmVudChpLGosYi5oYW5kbGUpO2IuaGFuZGxlJiYoYi5oYW5kbGUuZWxlbT1udWxsKX1nP2RlbGV0ZSBpW2YuZXhwYW5kb106aS5yZW1vdmVBdHRyaWJ1dGUmJmkucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyksZGVsZXRlIGRbY119fX19KTt2YXIgYnA9L2FscGhhXChbXildKlwpL2ksYnE9L29wYWNpdHk9KFteKV0qKS8sYnI9LyhbQS1aXXxebXMpL2csYnM9L15bXC0rXT8oPzpcZCpcLik/XGQrJC9pLGJ0PS9eLT8oPzpcZCpcLik/XGQrKD8hcHgpW15cZFxzXSskL2ksYnU9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnY9L15tYXJnaW4vLGJ3PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxieD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGJ5LGJ6LGJBO2YuZm4uY3NzPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSxhLGMsYXJndW1lbnRzLmxlbmd0aD4xKX0sZi5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1ieShhLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y31yZXR1cm4gYS5zdHlsZS5vcGFjaXR5fX19LGNzc051bWJlcjp7ZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmYuc3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFhJiZhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJiEhYS5zdHlsZSl7dmFyIGcsaCxpPWYuY2FtZWxDYXNlKGMpLGo9YS5zdHlsZSxrPWYuY3NzSG9va3NbaV07Yz1mLmNzc1Byb3BzW2ldfHxpO2lmKGQ9PT1iKXtpZihrJiYiZ2V0ImluIGsmJihnPWsuZ2V0KGEsITEsZSkpIT09YilyZXR1cm4gZztyZXR1cm4galtjXX1oPXR5cGVvZiBkLGg9PT0ic3RyaW5nIiYmKGc9YnUuZXhlYyhkKSkmJihkPSsoZ1sxXSsxKSorZ1syXStwYXJzZUZsb2F0KGYuY3NzKGEsYykpLGg9Im51bWJlciIpO2lmKGQ9PW51bGx8fGg9PT0ibnVtYmVyIiYmaXNOYU4oZCkpcmV0dXJuO2g9PT0ibnVtYmVyIiYmIWYuY3NzTnVtYmVyW2ldJiYoZCs9InB4Iik7aWYoIWt8fCEoInNldCJpbiBrKXx8KGQ9ay5zZXQoYSxkKSkhPT1iKXRyeXtqW2NdPWR9Y2F0Y2gobCl7fX19LGNzczpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZztjPWYuY2FtZWxDYXNlKGMpLGc9Zi5jc3NIb29rc1tjXSxjPWYuY3NzUHJvcHNbY118fGMsYz09PSJjc3NGbG9hdCImJihjPSJmbG9hdCIpO2lmKGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxkKSkhPT1iKXJldHVybiBlO2lmKGJ5KXJldHVybiBieShhLGMpfSxzd2FwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fSxlLGY7Zm9yKGYgaW4gYilkW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5jYWxsKGEpO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1kW2ZdO3JldHVybiBlfX0pLGYuY3VyQ1NTPWYuY3NzLGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGJ6PWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaD1hLnN0eWxlO2I9Yi5yZXBsYWNlKGJyLCItJDEiKS50b0xvd2VyQ2FzZSgpLChkPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykmJihlPWQuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKSYmKGM9ZS5nZXRQcm9wZXJ0eVZhbHVlKGIpLGM9PT0iIiYmIWYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSYmKGM9Zi5zdHlsZShhLGIpKSksIWYuc3VwcG9ydC5waXhlbE1hcmdpbiYmZSYmYnYudGVzdChiKSYmYnQudGVzdChjKSYmKGc9aC53aWR0aCxoLndpZHRoPWMsYz1lLndpZHRoLGgud2lkdGg9Zyk7cmV0dXJuIGN9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiQT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09bnVsbCYmZyYmKGU9Z1tiXSkmJihmPWUpLGJ0LnRlc3QoZikmJihjPWcubGVmdCxkPWEucnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZS5sZWZ0LGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGcubGVmdD1iPT09ImZvbnRTaXplIj8iMWVtIjpmLGY9Zy5waXhlbExlZnQrInB4IixnLmxlZnQ9YyxkJiYoYS5ydW50aW1lU3R5bGUubGVmdD1kKSk7cmV0dXJuIGY9PT0iIj8iYXV0byI6Zn0pLGJ5PWJ6fHxiQSxmLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7Zi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiBhLm9mZnNldFdpZHRoIT09MD9iQihhLGIsZCk6Zi5zd2FwKGEsYncsZnVuY3Rpb24oKXtyZXR1cm4gYkIoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBicy50ZXN0KGIpP2IrInB4IjpifX19KSxmLnN1cHBvcnQub3BhY2l0eXx8KGYuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGJxLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT9wYXJzZUZsb2F0KFJlZ0V4cC4kMSkvMTAwKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bGUsZT1mLmlzTnVtZXJpYyhiKT8iYWxwaGEob3BhY2l0eT0iK2IqMTAwKyIpIjoiIixnPWQmJmQuZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy56b29tPTE7aWYoYj49MSYmZi50cmltKGcucmVwbGFjZShicCwiIikpPT09IiIpe2MucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKTtpZihkJiYhZC5maWx0ZXIpcmV0dXJufWMuZmlsdGVyPWJwLnRlc3QoZyk/Zy5yZXBsYWNlKGJwLGUpOmcrIiAiK2V9fSksZihmdW5jdGlvbigpe2Yuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0fHwoZi5jc3NIb29rcy5tYXJnaW5SaWdodD17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGYuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe3JldHVybiBiP2J5KGEsIm1hcmdpbi1yaWdodCIpOmEuc3R5bGUubWFyZ2luUmlnaHR9KX19KX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KSxmLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe2YuY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe3ZhciBkLGU9dHlwZW9mIGM9PSJzdHJpbmciP2Muc3BsaXQoIiAiKTpbY10sZj17fTtmb3IoZD0wO2Q8NDtkKyspZlthK2J4W2RdK2JdPWVbZF18fGVbZC0yXXx8ZVswXTtyZXR1cm4gZn19fSk7dmFyIGJDPS8lMjAvZyxiRD0vXFtcXSQvLGJFPS9ccj9cbi9nLGJGPS8jLiokLyxiRz0vXiguKj8pOlsgXHRdKihbXlxyXG5dKilccj8kL21nLGJIPS9eKD86Y29sb3J8ZGF0ZXxkYXRldGltZXxkYXRldGltZS1sb2NhbHxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxiST0vXig/OmFib3V0fGFwcHxhcHBcLXN0b3JhZ2V8LitcLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLGJKPS9eKD86R0VUfEhFQUQpJC8sYks9L15cL1wvLyxiTD0vXD8vLGJNPS88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLGJOPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pLGJPPS9ccysvLGJQPS8oWz8mXSlfPVteJl0qLyxiUT0vXihbXHdcK1wuXC1dKzopKD86XC9cLyhbXlwvPyM6XSopKD86OihcZCspKT8pPy8sYlI9Zi5mbi5sb2FkLGJTPXt9LGJUPXt9LGJVLGJWLGJXPVsiKi8iXStbIioiXTt0cnl7YlU9ZS5ocmVmfWNhdGNoKGJYKXtiVT1jLmNyZWF0ZUVsZW1lbnQoImEiKSxiVS5ocmVmPSIiLGJVPWJVLmhyZWZ9YlY9YlEuZXhlYyhiVS50b0xvd2VyQ2FzZSgpKXx8W10sZi5mbi5leHRlbmQoe2xvYWQ6ZnVuY3Rpb24oYSxjLGQpe2lmKHR5cGVvZiBhIT0ic3RyaW5nIiYmYlIpcmV0dXJuIGJSLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGU9YS5pbmRleE9mKCIgIik7aWYoZT49MCl7dmFyIGc9YS5zbGljZShlLGEubGVuZ3RoKTthPWEuc2xpY2UoMCxlKX12YXIgaD0iR0VUIjtjJiYoZi5pc0Z1bmN0aW9uKGMpPyhkPWMsYz1iKTp0eXBlb2YgYz09Im9iamVjdCImJihjPWYucGFyYW0oYyxmLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksaD0iUE9TVCIpKTt2YXIgaT10aGlzO2YuYWpheCh7dXJsOmEsdHlwZTpoLGRhdGFUeXBlOiJodG1sIixkYXRhOmMsY29tcGxldGU6ZnVuY3Rpb24oYSxiLGMpe2M9YS5yZXNwb25zZVRleHQsYS5pc1Jlc29sdmVkKCkmJihhLmRvbmUoZnVuY3Rpb24oYSl7Yz1hfSksaS5odG1sKGc/ZigiPGRpdj4iKS5hcHBlbmQoYy5yZXBsYWNlKGJNLCIiKSkuZmluZChnKTpjKSksZCYmaS5lYWNoKGQsW2MsYixhXSl9fSk7cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBmLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHM/Zi5tYWtlQXJyYXkodGhpcy5lbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5jaGVja2VkfHxiTi50ZXN0KHRoaXMubm9kZU5hbWUpfHxiSC50ZXN0KHRoaXMudHlwZSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9Zih0aGlzKS52YWwoKTtyZXR1cm4gYz09bnVsbD9udWxsOmYuaXNBcnJheShjKT9mLm1hcChjLGZ1bmN0aW9uKGEsYyl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShiRSwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoYkUsIlxyXG4iKX19KS5nZXQoKX19KSxmLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7Zi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLGYuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGMpe2ZbY109ZnVuY3Rpb24oYSxkLGUsZyl7Zi5pc0Z1bmN0aW9uKGQpJiYoZz1nfHxlLGU9ZCxkPWIpO3JldHVybiBmLmFqYXgoe3R5cGU6Yyx1cmw6YSxkYXRhOmQsc3VjY2VzczplLGRhdGFUeXBlOmd9KX19KSxmLmV4dGVuZCh7Z2V0U2NyaXB0OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGYuZ2V0KGEsYixjLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZ2V0KGEsYixjLCJqc29uIil9LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe2I/YiQoYSxmLmFqYXhTZXR0aW5ncyk6KGI9YSxhPWYuYWpheFNldHRpbmdzKSxiJChhLGIpO3JldHVybiBhfSxhamF4U2V0dGluZ3M6e3VybDpiVSxpc0xvY2FsOmJJLnRlc3QoYlZbMV0pLGdsb2JhbDohMCx0eXBlOiJHRVQiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIix0ZXh0OiJ0ZXh0L3BsYWluIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLCIqIjpiV30sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOmEuU3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOmYucGFyc2VKU09OLCJ0ZXh0IHhtbCI6Zi5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e2NvbnRleHQ6ITAsdXJsOiEwfX0sYWpheFByZWZpbHRlcjpiWShiUyksYWpheFRyYW5zcG9ydDpiWShiVCksYWpheDpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIHcoYSxjLGwsbSl7aWYocyE9PTIpe3M9MixxJiZjbGVhclRpbWVvdXQocSkscD1iLG49bXx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjA7dmFyIG8scix1LHc9Yyx4PWw/Y2EoZCx2LGwpOmIseSx6O2lmKGE+PTIwMCYmYTwzMDB8fGE9PT0zMDQpe2lmKGQuaWZNb2RpZmllZCl7aWYoeT12LmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpZi5sYXN0TW9kaWZpZWRba109eTtpZih6PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0YWciKSlmLmV0YWdba109en1pZihhPT09MzA0KXc9Im5vdG1vZGlmaWVkIixvPSEwO2Vsc2UgdHJ5e3I9Y2IoZCx4KSx3PSJzdWNjZXNzIixvPSEwfWNhdGNoKEEpe3c9InBhcnNlcmVycm9yIix1PUF9fWVsc2V7dT13O2lmKCF3fHxhKXc9ImVycm9yIixhPDAmJihhPTApfXYuc3RhdHVzPWEsdi5zdGF0dXNUZXh0PSIiKyhjfHx3KSxvP2gucmVzb2x2ZVdpdGgoZSxbcix3LHZdKTpoLnJlamVjdFdpdGgoZSxbdix3LHVdKSx2LnN0YXR1c0NvZGUoaiksaj1iLHQmJmcudHJpZ2dlcigiYWpheCIrKG8/IlN1Y2Nlc3MiOiJFcnJvciIpLFt2LGQsbz9yOnVdKSxpLmZpcmVXaXRoKGUsW3Ysd10pLHQmJihnLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3YsZF0pLC0tZi5hY3RpdmV8fGYuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSl9fXR5cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGQ9Zi5hamF4U2V0dXAoe30sYyksZT1kLmNvbnRleHR8fGQsZz1lIT09ZCYmKGUubm9kZVR5cGV8fGUgaW5zdGFuY2VvZiBmKT9mKGUpOmYuZXZlbnQsaD1mLkRlZmVycmVkKCksaT1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxqPWQuc3RhdHVzQ29kZXx8e30sayxsPXt9LG09e30sbixvLHAscSxyLHM9MCx0LHUsdj17cmVhZHlTdGF0ZTowLHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXtpZighcyl7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO2E9bVtjXT1tW2NdfHxhLGxbYV09Yn1yZXR1cm4gdGhpc30sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHM9PT0yP246bnVsbH0sZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGM7aWYocz09PTIpe2lmKCFvKXtvPXt9O3doaWxlKGM9YkcuZXhlYyhuKSlvW2NbMV0udG9Mb3dlckNhc2UoKV09Y1syXX1jPW9bYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gYz09PWI/bnVsbDpjfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3N8fChkLm1pbWVUeXBlPWEpO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXthPWF8fCJhYm9ydCIscCYmcC5hYm9ydChhKSx3KDAsYSk7cmV0dXJuIHRoaXN9fTtoLnByb21pc2Uodiksdi5zdWNjZXNzPXYuZG9uZSx2LmVycm9yPXYuZmFpbCx2LmNvbXBsZXRlPWkuYWRkLHYuc3RhdHVzQ29kZT1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjtpZihzPDIpZm9yKGIgaW4gYSlqW2JdPVtqW2JdLGFbYl1dO2Vsc2UgYj1hW3Yuc3RhdHVzXSx2LnRoZW4oYixiKX1yZXR1cm4gdGhpc30sZC51cmw9KChhfHxkLnVybCkrIiIpLnJlcGxhY2UoYkYsIiIpLnJlcGxhY2UoYkssYlZbMV0rIi8vIiksZC5kYXRhVHlwZXM9Zi50cmltKGQuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5zcGxpdChiTyksZC5jcm9zc0RvbWFpbj09bnVsbCYmKHI9YlEuZXhlYyhkLnVybC50b0xvd2VyQ2FzZSgpKSxkLmNyb3NzRG9tYWluPSEoIXJ8fHJbMV09PWJWWzFdJiZyWzJdPT1iVlsyXSYmKHJbM118fChyWzFdPT09Imh0dHA6Ij84MDo0NDMpKT09KGJWWzNdfHwoYlZbMV09PT0iaHR0cDoiPzgwOjQ0MykpKSksZC5kYXRhJiZkLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZC5kYXRhIT0ic3RyaW5nIiYmKGQuZGF0YT1mLnBhcmFtKGQuZGF0YSxkLnRyYWRpdGlvbmFsKSksYlooYlMsZCxjLHYpO2lmKHM9PT0yKXJldHVybiExO3Q9ZC5nbG9iYWwsZC50eXBlPWQudHlwZS50b1VwcGVyQ2FzZSgpLGQuaGFzQ29udGVudD0hYkoudGVzdChkLnR5cGUpLHQmJmYuYWN0aXZlKys9PT0wJiZmLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFkLmhhc0NvbnRlbnQpe2QuZGF0YSYmKGQudXJsKz0oYkwudGVzdChkLnVybCk/IiYiOiI/IikrZC5kYXRhLGRlbGV0ZSBkLmRhdGEpLGs9ZC51cmw7aWYoZC5jYWNoZT09PSExKXt2YXIgeD1mLm5vdygpLHk9ZC51cmwucmVwbGFjZShiUCwiJDFfPSIreCk7ZC51cmw9eSsoeT09PWQudXJsPyhiTC50ZXN0KGQudXJsKT8iJiI6Ij8iKSsiXz0iK3g6IiIpfX0oZC5kYXRhJiZkLmhhc0NvbnRlbnQmJmQuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJnYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixkLmNvbnRlbnRUeXBlKSxkLmlmTW9kaWZpZWQmJihrPWt8fGQudXJsLGYubGFzdE1vZGlmaWVkW2tdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixmLmxhc3RNb2RpZmllZFtrXSksZi5ldGFnW2tdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLGYuZXRhZ1trXSkpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixkLmRhdGFUeXBlc1swXSYmZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXT9kLmFjY2VwdHNbZC5kYXRhVHlwZXNbMF1dKyhkLmRhdGFUeXBlc1swXSE9PSIqIj8iLCAiK2JXKyI7IHE9MC4wMSI6IiIpOmQuYWNjZXB0c1siKiJdKTtmb3IodSBpbiBkLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKHUsZC5oZWFkZXJzW3VdKTtpZihkLmJlZm9yZVNlbmQmJihkLmJlZm9yZVNlbmQuY2FsbChlLHYsZCk9PT0hMXx8cz09PTIpKXt2LmFib3J0KCk7cmV0dXJuITF9Zm9yKHUgaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdlt1XShkW3VdKTtwPWJaKGJULGQsYyx2KTtpZighcCl3KC0xLCJObyBUcmFuc3BvcnQiKTtlbHNle3YucmVhZHlTdGF0ZT0xLHQmJmcudHJpZ2dlcigiYWpheFNlbmQiLFt2LGRdKSxkLmFzeW5jJiZkLnRpbWVvdXQ+MCYmKHE9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0sZC50aW1lb3V0KSk7dHJ5e3M9MSxwLnNlbmQobCx3KX1jYXRjaCh6KXtpZihzPDIpdygtMSx6KTtlbHNlIHRocm93IHp9fXJldHVybiB2fSxwYXJhbTpmdW5jdGlvbihhLGMpe3ZhciBkPVtdLGU9ZnVuY3Rpb24oYSxiKXtiPWYuaXNGdW5jdGlvbihiKT9iKCk6YixkW2QubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07Yz09PWImJihjPWYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKTtpZihmLmlzQXJyYXkoYSl8fGEuanF1ZXJ5JiYhZi5pc1BsYWluT2JqZWN0KGEpKWYuZWFjaChhLGZ1bmN0aW9uKCl7ZSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcih2YXIgZyBpbiBhKWJfKGcsYVtnXSxjLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKGJDLCIrIil9fSksZi5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9fSk7dmFyIGNjPWYubm93KCksY2Q9LyhcPSlcPygmfCQpfFw/XD8vaTtmLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZXhwYW5kbysiXyIrY2MrK319KSxmLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZT10eXBlb2YgYi5kYXRhPT0ic3RyaW5nIiYmL15hcHBsaWNhdGlvblwveFwtd3d3XC1mb3JtXC11cmxlbmNvZGVkLy50ZXN0KGIuY29udGVudFR5cGUpO2lmKGIuZGF0YVR5cGVzWzBdPT09Impzb25wInx8Yi5qc29ucCE9PSExJiYoY2QudGVzdChiLnVybCl8fGUmJmNkLnRlc3QoYi5kYXRhKSkpe3ZhciBnLGg9Yi5qc29ucENhbGxiYWNrPWYuaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxpPWFbaF0saj1iLnVybCxrPWIuZGF0YSxsPSIkMSIraCsiJDIiO2IuanNvbnAhPT0hMSYmKGo9ai5yZXBsYWNlKGNkLGwpLGIudXJsPT09aiYmKGUmJihrPWsucmVwbGFjZShjZCxsKSksYi5kYXRhPT09ayYmKGorPSgvXD8vLnRlc3Qoaik/IiYiOiI/IikrYi5qc29ucCsiPSIraCkpKSxiLnVybD1qLGIuZGF0YT1rLGFbaF09ZnVuY3Rpb24oYSl7Zz1bYV19LGQuYWx3YXlzKGZ1bmN0aW9uKCl7YVtoXT1pLGcmJmYuaXNGdW5jdGlvbihpKSYmYVtoXShnWzBdKX0pLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe2d8fGYuZXJyb3IoaCsiIHdhcyBub3QgY2FsbGVkIik7cmV0dXJuIGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIjtyZXR1cm4ic2NyaXB0In19KSxmLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L2phdmFzY3JpcHR8ZWNtYXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7Zi5nbG9iYWxFdmFsKGEpO3JldHVybiBhfX19KSxmLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7YS5jYWNoZT09PWImJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLGYuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgZCxlPWMuaGVhZHx8Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxjLmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihmLGcpe2Q9Yy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxkLmFzeW5jPSJhc3luYyIsYS5zY3JpcHRDaGFyc2V0JiYoZC5jaGFyc2V0PWEuc2NyaXB0Q2hhcnNldCksZC5zcmM9YS51cmwsZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oYSxjKXtpZihjfHwhZC5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGQucmVhZHlTdGF0ZSkpZC5vbmxvYWQ9ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxlJiZkLnBhcmVudE5vZGUmJmUucmVtb3ZlQ2hpbGQoZCksZD1iLGN8fGcoMjAwLCJzdWNjZXNzIil9LGUuaW5zZXJ0QmVmb3JlKGQsZS5maXJzdENoaWxkKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkLm9ubG9hZCgwLDEpfX19fSk7dmFyIGNlPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBjZyljZ1thXSgwLDEpfTohMSxjZj0wLGNnO2YuYWpheFNldHRpbmdzLnhocj1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xvY2FsJiZjaCgpfHxjaSgpfTpjaCxmdW5jdGlvbihhKXtmLmV4dGVuZChmLnN1cHBvcnQse2FqYXg6ISFhLGNvcnM6ISFhJiYid2l0aENyZWRlbnRpYWxzImluIGF9KX0oZi5hamF4U2V0dGluZ3MueGhyKCkpLGYuc3VwcG9ydC5hamF4JiZmLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYyl7aWYoIWMuY3Jvc3NEb21haW58fGYuc3VwcG9ydC5jb3JzKXt2YXIgZDtyZXR1cm57c2VuZDpmdW5jdGlvbihlLGcpe3ZhciBoPWMueGhyKCksaSxqO2MudXNlcm5hbWU/aC5vcGVuKGMudHlwZSxjLnVybCxjLmFzeW5jLGMudXNlcm5hbWUsYy5wYXNzd29yZCk6aC5vcGVuKGMudHlwZSxjLnVybCxjLmFzeW5jKTtpZihjLnhockZpZWxkcylmb3IoaiBpbiBjLnhockZpZWxkcyloW2pdPWMueGhyRmllbGRzW2pdO2MubWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlKGMubWltZVR5cGUpLCFjLmNyb3NzRG9tYWluJiYhZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdJiYoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO3RyeXtmb3IoaiBpbiBlKWguc2V0UmVxdWVzdEhlYWRlcihqLGVbal0pfWNhdGNoKGspe31oLnNlbmQoYy5oYXNDb250ZW50JiZjLmRhdGF8fG51bGwpLGQ9ZnVuY3Rpb24oYSxlKXt2YXIgaixrLGwsbSxuO3RyeXtpZihkJiYoZXx8aC5yZWFkeVN0YXRlPT09NCkpe2Q9YixpJiYoaC5vbnJlYWR5c3RhdGVjaGFuZ2U9Zi5ub29wLGNlJiZkZWxldGUgY2dbaV0pO2lmKGUpaC5yZWFkeVN0YXRlIT09NCYmaC5hYm9ydCgpO2Vsc2V7aj1oLnN0YXR1cyxsPWguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksbT17fSxuPWgucmVzcG9uc2VYTUwsbiYmbi5kb2N1bWVudEVsZW1lbnQmJihtLnhtbD1uKTt0cnl7bS50ZXh0PWgucmVzcG9uc2VUZXh0fWNhdGNoKGEpe310cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjZixjZSYmKGNnfHwoY2c9e30sZihhKS51bmxvYWQoY2UpKSxjZ1tpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY2o9e30sY2ssY2wsY209L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNuPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY28sY3A9W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY3E7Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjdCgic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSwoZT09PSIiJiZmLmNzcyhkLCJkaXNwbGF5Iik9PT0ibm9uZSJ8fCFmLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZCkpJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGN1KGQubm9kZU5hbWUpKSk7Zm9yKGc9MDtnPGg7ZysrKXtkPXRoaXNbZ107aWYoZC5zdHlsZSl7ZT1kLnN0eWxlLmRpc3BsYXk7aWYoZT09PSIifHxlPT09Im5vbmUiKWQuc3R5bGUuZGlzcGxheT1mLl9kYXRhKGQsIm9sZGRpc3BsYXkiKXx8IiJ9fXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN0KCJoaWRlIiwzKSxhLGIsYyk7dmFyIGQsZSxnPTAsaD10aGlzLmxlbmd0aDtmb3IoO2c8aDtnKyspZD10aGlzW2ddLGQuc3R5bGUmJihlPWYuY3NzKGQsImRpc3BsYXkiKSxlIT09Im5vbmUiJiYhZi5fZGF0YShkLCJvbGRkaXNwbGF5IikmJmYuX2RhdGEoZCwib2xkZGlzcGxheSIsZSkpO2ZvcihnPTA7ZzxoO2crKyl0aGlzW2ddLnN0eWxlJiYodGhpc1tnXS5zdHlsZS5kaXNwbGF5PSJub25lIik7cmV0dXJuIHRoaXN9LF90b2dnbGU6Zi5mbi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10eXBlb2YgYT09ImJvb2xlYW4iO2YuaXNGdW5jdGlvbihhKSYmZi5pc0Z1bmN0aW9uKGIpP3RoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kP2E6Zih0aGlzKS5pcygiOmhpZGRlbiIpO2YodGhpcylbYj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKGN0KCJ0b2dnbGUiLDMpLGEsYixjKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGcoKXtlLnF1ZXVlPT09ITEmJmYuX21hcmsodGhpcyk7dmFyIGI9Zi5leHRlbmQoe30sZSksYz10aGlzLm5vZGVUeXBlPT09MSxkPWMmJmYodGhpcykuaXMoIjpoaWRkZW4iKSxnLGgsaSxqLGssbCxtLG4sbyxwLHE7Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSk7aWYoKGs9Zi5jc3NIb29rc1tnXSkmJiJleHBhbmQiaW4gayl7bD1rLmV4cGFuZChhW2ddKSxkZWxldGUgYVtnXTtmb3IoaSBpbiBsKWkgaW4gYXx8KGFbaV09bFtpXSl9fWZvcihnIGluIGEpe2g9YVtnXSxmLmlzQXJyYXkoaCk/KGIuYW5pbWF0ZWRQcm9wZXJ0aWVzW2ddPWhbMV0saD1hW2ddPWhbMF0pOmIuYW5pbWF0ZWRQcm9wZXJ0aWVzW2ddPWIuc3BlY2lhbEVhc2luZyYmYi5zcGVjaWFsRWFzaW5nW2ddfHxiLmVhc2luZ3x8InN3aW5nIjtpZihoPT09ImhpZGUiJiZkfHxoPT09InNob3ciJiYhZClyZXR1cm4gYi5jb21wbGV0ZS5jYWxsKHRoaXMpO2MmJihnPT09ImhlaWdodCJ8fGc9PT0id2lkdGgiKSYmKGIub3ZlcmZsb3c9W3RoaXMuc3R5bGUub3ZlcmZsb3csdGhpcy5zdHlsZS5vdmVyZmxvd1gsdGhpcy5zdHlsZS5vdmVyZmxvd1ldLGYuY3NzKHRoaXMsImRpc3BsYXkiKT09PSJpbmxpbmUiJiZmLmNzcyh0aGlzLCJmbG9hdCIpPT09Im5vbmUiJiYoIWYuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0fHxjdSh0aGlzLm5vZGVOYW1lKT09PSJpbmxpbmUiP3RoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIjp0aGlzLnN0eWxlLnpvb209MSkpfWIub3ZlcmZsb3chPW51bGwmJih0aGlzLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKTtmb3IoaSBpbiBhKWo9bmV3IGYuZngodGhpcyxiLGkpLGg9YVtpXSxjbS50ZXN0KGgpPyhxPWYuX2RhdGEodGhpcywidG9nZ2xlIitpKXx8KGg9PT0idG9nZ2xlIj9kPyJzaG93IjoiaGlkZSI6MCkscT8oZi5fZGF0YSh0aGlzLCJ0b2dnbGUiK2kscT09PSJzaG93Ij8iaGlkZSI6InNob3ciKSxqW3FdKCkpOmpbaF0oKSk6KG09Y24uZXhlYyhoKSxuPWouY3VyKCksbT8obz1wYXJzZUZsb2F0KG1bMl0pLHA9bVszXXx8KGYuY3NzTnVtYmVyW2ldPyIiOiJweCIpLHAhPT0icHgiJiYoZi5zdHlsZSh0aGlzLGksKG98fDEpK3ApLG49KG98fDEpL2ouY3VyKCkqbixmLnN0eWxlKHRoaXMsaSxuK3ApKSxtWzFdJiYobz0obVsxXT09PSItPSI/LTE6MSkqbytuKSxqLmN1c3RvbShuLG8scCkpOmouY3VzdG9tKG4saCwiIikpO3JldHVybiEwfXZhciBlPWYuc3BlZWQoYixjLGQpO2lmKGYuaXNFbXB0eU9iamVjdChhKSlyZXR1cm4gdGhpcy5lYWNoKGUuY29tcGxldGUsWyExXSk7YT1mLmV4dGVuZCh7fSxhKTtyZXR1cm4gZS5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGUucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxjLGQpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGQ9YyxjPWEsYT1iKSxjJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Z1bmN0aW9uIGgoYSxiLGMpe3ZhciBlPWJbY107Zi5yZW1vdmVEYXRhKGEsYywhMCksZS5zdG9wKGQpfXZhciBiLGM9ITEsZT1mLnRpbWVycyxnPWYuX2RhdGEodGhpcyk7ZHx8Zi5fdW5tYXJrKCEwLHRoaXMpO2lmKGE9PW51bGwpZm9yKGIgaW4gZylnW2JdJiZnW2JdLnN0b3AmJmIuaW5kZXhPZigiLnJ1biIpPT09Yi5sZW5ndGgtNCYmaCh0aGlzLGcsYik7ZWxzZSBnW2I9YSsiLnJ1biJdJiZnW2JdLnN0b3AmJmgodGhpcyxnLGIpO2ZvcihiPWUubGVuZ3RoO2ItLTspZVtiXS5lbGVtPT09dGhpcyYmKGE9PW51bGx8fGVbYl0ucXVldWU9PT1hKSYmKGQ/ZVtiXSghMCk6ZVtiXS5zYXZlU3RhdGUoKSxjPSEwLGUuc3BsaWNlKGIsMSkpOyghZHx8IWMpJiZmLmRlcXVldWUodGhpcyxhKX0pfX0pLGYuZWFjaCh7c2xpZGVEb3duOmN0KCJzaG93IiwxKSxzbGlkZVVwOmN0KCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpjdCgidG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxmLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJnR5cGVvZiBhPT0ib2JqZWN0Ij9mLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fGYuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhZi5pc0Z1bmN0aW9uKGIpJiZifTtkLmR1cmF0aW9uPWYuZngub2ZmPzA6dHlwZW9mIGQuZHVyYXRpb249PSJudW1iZXIiP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBmLmZ4LnNwZWVkcz9mLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTpmLmZ4LnNwZWVkcy5fZGVmYXVsdDtpZihkLnF1ZXVlPT1udWxsfHxkLnF1ZXVlPT09ITApZC5xdWV1ZT0iZngiO2Qub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbihhKXtmLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWU/Zi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSk6YSE9PSExJiZmLl91bm1hcmsodGhpcyl9O3JldHVybiBkfSxlYXNpbmc6e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLU1hdGguY29zKGEqTWF0aC5QSSkvMisuNX19LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxjLGQpe2Z1bmN0aW9uIGgoYSl7cmV0dXJuIGUuc3RlcChhKX12YXIgZT10aGlzLGc9Zi5meDt0aGlzLnN0YXJ0VGltZT1jcXx8Y3IoKSx0aGlzLmVuZD1jLHRoaXMubm93PXRoaXMuc3RhcnQ9YSx0aGlzLnBvcz10aGlzLnN0YXRlPTAsdGhpcy51bml0PWR8fHRoaXMudW5pdHx8KGYuY3NzTnVtYmVyW3RoaXMucHJvcF0/IiI6InB4IiksaC5xdWV1ZT10aGlzLm9wdGlvbnMucXVldWUsaC5lbGVtPXRoaXMuZWxlbSxoLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2YuX2RhdGEoZS5lbGVtLCJmeHNob3ciK2UucHJvcCk9PT1iJiYoZS5vcHRpb25zLmhpZGU/Zi5fZGF0YShlLmVsZW0sImZ4c2hvdyIrZS5wcm9wLGUuc3RhcnQpOmUub3B0aW9ucy5zaG93JiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3AsZS5lbmQpKX0saCgpJiZmLnRpbWVycy5wdXNoKGgpJiYhY28mJihjbz1zZXRJbnRlcnZhbChnLnRpY2ssZy5pbnRlcnZhbCkpfSxzaG93OmZ1bmN0aW9uKCl7dmFyIGE9Zi5fZGF0YSh0aGlzLmVsZW0sImZ4c2hvdyIrdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWF8fGYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLnNob3c9ITAsYSE9PWI/dGhpcy5jdXN0b20odGhpcy5jdXIoKSxhKTp0aGlzLmN1c3RvbSh0aGlzLnByb3A9PT0id2lkdGgifHx0aGlzLnByb3A9PT0iaGVpZ2h0Ij8xOjAsdGhpcy5jdXIoKSksZih0aGlzLmVsZW0pLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09Zi5fZGF0YSh0aGlzLmVsZW0sImZ4c2hvdyIrdGhpcy5wcm9wKXx8Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuaGlkZT0hMCx0aGlzLmN1c3RvbSh0aGlzLmN1cigpLDApfSxzdGVwOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPWNxfHxjcigpLGc9ITAsaD10aGlzLmVsZW0saT10aGlzLm9wdGlvbnM7aWYoYXx8ZT49aS5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQsdGhpcy5wb3M9dGhpcy5zdGF0ZT0xLHRoaXMudXBkYXRlKCksaS5hbmltYXRlZFByb3BlcnRpZXNbdGhpcy5wcm9wXT0hMDtmb3IoYiBpbiBpLmFuaW1hdGVkUHJvcGVydGllcylpLmFuaW1hdGVkUHJvcGVydGllc1tiXSE9PSEwJiYoZz0hMSk7aWYoZyl7aS5vdmVyZmxvdyE9bnVsbCYmIWYuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzJiZmLmVhY2goWyIiLCJYIiwiWSJdLGZ1bmN0aW9uKGEsYil7aC5zdHlsZVsib3ZlcmZsb3ciK2JdPWkub3ZlcmZsb3dbYV19KSxpLmhpZGUmJmYoaCkuaGlkZSgpO2lmKGkuaGlkZXx8aS5zaG93KWZvcihiIGluIGkuYW5pbWF0ZWRQcm9wZXJ0aWVzKWYuc3R5bGUoaCxiLGkub3JpZ1tiXSksZi5yZW1vdmVEYXRhKGgsImZ4c2hvdyIrYiwhMCksZi5yZW1vdmVEYXRhKGgsInRvZ2dsZSIrYiwhMCk7ZD1pLmNvbXBsZXRlLGQmJihpLmNvbXBsZXRlPSExLGQuY2FsbChoKSl9cmV0dXJuITF9aS5kdXJhdGlvbj09SW5maW5pdHk/dGhpcy5ub3c9ZTooYz1lLXRoaXMuc3RhcnRUaW1lLHRoaXMuc3RhdGU9Yy9pLmR1cmF0aW9uLHRoaXMucG9zPWYuZWFzaW5nW2kuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF1dKHRoaXMuc3RhdGUsYywwLDEsaS5kdXJhdGlvbiksdGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpLHRoaXMudXBkYXRlKCk7cmV0dXJuITB9fSxmLmV4dGVuZChmLmZ4LHt0aWNrOmZ1bmN0aW9uKCl7dmFyIGEsYj1mLnRpbWVycyxjPTA7Zm9yKDtjPGIubGVuZ3RoO2MrKylhPWJbY10sIWEoKSYmYltjXT09PWEmJmIuc3BsaWNlKGMtLSwxKTtiLmxlbmd0aHx8Zi5meC5zdG9wKCl9LGludGVydmFsOjEzLHN0b3A6ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGNvKSxjbz1udWxsfSxzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihhKXtmLnN0eWxlKGEuZWxlbSwib3BhY2l0eSIsYS5ub3cpfSxfZGVmYXVsdDpmdW5jdGlvbihhKXthLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsP2EuZWxlbS5zdHlsZVthLnByb3BdPWEubm93K2EudW5pdDphLmVsZW1bYS5wcm9wXT1hLm5vd319fSksZi5lYWNoKGNwLmNvbmNhdC5hcHBseShbXSxjcCksZnVuY3Rpb24oYSxiKXtiLmluZGV4T2YoIm1hcmdpbiIpJiYoZi5meC5zdGVwW2JdPWZ1bmN0aW9uKGEpe2Yuc3R5bGUoYS5lbGVtLGIsTWF0aC5tYXgoMCxhLm5vdykrYS51bml0KX0pfSksZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBmLmdyZXAoZi50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9KTt2YXIgY3YsY3c9L150KD86YWJsZXxkfGgpJC9pLGN4PS9eKD86Ym9keXxodG1sKSQvaTsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0ImluIGMuZG9jdW1lbnRFbGVtZW50P2N2PWZ1bmN0aW9uKGEsYixjLGQpe3RyeXtkPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7fWlmKCFkfHwhZi5jb250YWlucyhjLGEpKXJldHVybiBkP3t0b3A6ZC50b3AsbGVmdDpkLmxlZnR9Ont0b3A6MCxsZWZ0OjB9O3ZhciBnPWIuYm9keSxoPWN5KGIpLGk9Yy5jbGllbnRUb3B8fGcuY2xpZW50VG9wfHwwLGo9Yy5jbGllbnRMZWZ0fHxnLmNsaWVudExlZnR8fDAsaz1oLnBhZ2VZT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwmJmMuc2Nyb2xsVG9wfHxnLnNjcm9sbFRvcCxsPWgucGFnZVhPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmYy5zY3JvbGxMZWZ0fHxnLnNjcm9sbExlZnQsbT1kLnRvcCtrLWksbj1kLmxlZnQrbC1qO3JldHVybnt0b3A6bSxsZWZ0Om59fTpjdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1hLm9mZnNldFBhcmVudCxnPWEsaD1iLmJvZHksaT1iLmRlZmF1bHRWaWV3LGo9aT9pLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTphLmN1cnJlbnRTdHlsZSxrPWEub2Zmc2V0VG9wLGw9YS5vZmZzZXRMZWZ0O3doaWxlKChhPWEucGFyZW50Tm9kZSkmJmEhPT1oJiZhIT09Yyl7aWYoZi5zdXBwb3J0LmZpeGVkUG9zaXRpb24mJmoucG9zaXRpb249PT0iZml4ZWQiKWJyZWFrO2Q9aT9pLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTphLmN1cnJlbnRTdHlsZSxrLT1hLnNjcm9sbFRvcCxsLT1hLnNjcm9sbExlZnQsYT09PWUmJihrKz1hLm9mZnNldFRvcCxsKz1hLm9mZnNldExlZnQsZi5zdXBwb3J0LmRvZXNOb3RBZGRCb3JkZXImJighZi5zdXBwb3J0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzfHwhY3cudGVzdChhLm5vZGVOYW1lKSkmJihrKz1wYXJzZUZsb2F0KGQuYm9yZGVyVG9wV2lkdGgpfHwwLGwrPXBhcnNlRmxvYXQoZC5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxnPWUsZT1hLm9mZnNldFBhcmVudCksZi5zdXBwb3J0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90VmlzaWJsZSYmZC5vdmVyZmxvdyE9PSJ2aXNpYmxlIiYmKGsrPXBhcnNlRmxvYXQoZC5ib3JkZXJUb3BXaWR0aCl8fDAsbCs9cGFyc2VGbG9hdChkLmJvcmRlckxlZnRXaWR0aCl8fDApLGo9ZH1pZihqLnBvc2l0aW9uPT09InJlbGF0aXZlInx8ai5wb3NpdGlvbj09PSJzdGF0aWMiKWsrPWgub2Zmc2V0VG9wLGwrPWgub2Zmc2V0TGVmdDtmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmai5wb3NpdGlvbj09PSJmaXhlZCImJihrKz1NYXRoLm1heChjLnNjcm9sbFRvcCxoLnNjcm9sbFRvcCksbCs9TWF0aC5tYXgoYy5zY3JvbGxMZWZ0LGguc2Nyb2xsTGVmdCkpO3JldHVybnt0b3A6ayxsZWZ0Omx9fSxmLmZuLm9mZnNldD1mdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGM9dGhpc1swXSxkPWMmJmMub3duZXJEb2N1bWVudDtpZighZClyZXR1cm4gbnVsbDtpZihjPT09ZC5ib2R5KXJldHVybiBmLm9mZnNldC5ib2R5T2Zmc2V0KGMpO3JldHVybiBjdihjLGQsZC5kb2N1bWVudEVsZW1lbnQpfSxmLm9mZnNldD17Ym9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxjPWEub2Zmc2V0TGVmdDtmLnN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQmJihiKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjKz1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDApO3JldHVybnt0b3A6YixsZWZ0OmN9fSxzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWYuY3NzKGEsInBvc2l0aW9uIik7ZD09PSJzdGF0aWMiJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKTt2YXIgZT1mKGEpLGc9ZS5vZmZzZXQoKSxoPWYuY3NzKGEsInRvcCIpLGk9Zi5jc3MoYSwibGVmdCIpLGo9KGQ9PT0iYWJzb2x1dGUifHxkPT09ImZpeGVkIikmJmYuaW5BcnJheSgiYXV0byIsW2gsaV0pPi0xLGs9e30sbD17fSxtLG47aj8obD1lLnBvc2l0aW9uKCksbT1sLnRvcCxuPWwubGVmdCk6KG09cGFyc2VGbG9hdChoKXx8MCxuPXBhcnNlRmxvYXQoaSl8fDApLGYuaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxnKSksYi50b3AhPW51bGwmJihrLnRvcD1iLnRvcC1nLnRvcCttKSxiLmxlZnQhPW51bGwmJihrLmxlZnQ9Yi5sZWZ0LWcubGVmdCtuKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxrKTplLmNzcyhrKX19LGYuZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWN4LnRlc3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtjLnRvcC09cGFyc2VGbG9hdChmLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYy5sZWZ0LT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpbkxlZnQiKSl8fDAsZC50b3ArPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAsZC5sZWZ0Kz1wYXJzZUZsb2F0KGYuY3NzKGJbMF0sImJvcmRlckxlZnRXaWR0aCIpKXx8MDtyZXR1cm57dG9wOmMudG9wLWQudG9wLGxlZnQ6Yy5sZWZ0LWQubGVmdH19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjLmJvZHk7d2hpbGUoYSYmIWN4LnRlc3QoYS5ub2RlTmFtZSkmJmYuY3NzKGEsInBvc2l0aW9uIik9PT0ic3RhdGljIilhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfSl9fSksZi5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYyl7dmFyIGQ9L1kvLnRlc3QoYyk7Zi5mblthXT1mdW5jdGlvbihlKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmdW5jdGlvbihhLGUsZyl7dmFyIGg9Y3koYSk7aWYoZz09PWIpcmV0dXJuIGg/YyBpbiBoP2hbY106Zi5zdXBwb3J0LmJveE1vZGVsJiZoLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtlXXx8aC5kb2N1bWVudC5ib2R5W2VdOmFbZV07aD9oLnNjcm9sbFRvKGQ/ZihoKS5zY3JvbGxMZWZ0KCk6ZyxkP2c6ZihoKS5zY3JvbGxUb3AoKSk6YVtlXT1nfSxhLGUsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxmLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGMpe3ZhciBkPSJjbGllbnQiK2EsZT0ic2Nyb2xsIithLGc9Im9mZnNldCIrYTtmLmZuWyJpbm5lciIrYV09ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGMsInBhZGRpbmciKSk6dGhpc1tjXSgpOm51bGx9LGYuZm5bIm91dGVyIithXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGMsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbY10oKTpudWxsfSxmLmZuW2NdPWZ1bmN0aW9uKGEpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEsYyxoKXt2YXIgaSxqLGssbDtpZihmLmlzV2luZG93KGEpKXtpPWEuZG9jdW1lbnQsaj1pLmRvY3VtZW50RWxlbWVudFtkXTtyZXR1cm4gZi5zdXBwb3J0LmJveE1vZGVsJiZqfHxpLmJvZHkmJmkuYm9keVtkXXx8an1pZihhLm5vZGVUeXBlPT09OSl7aT1hLmRvY3VtZW50RWxlbWVudDtpZihpW2RdPj1pW2VdKXJldHVybiBpW2RdO3JldHVybiBNYXRoLm1heChhLmJvZHlbZV0saVtlXSxhLmJvZHlbZ10saVtnXSl9aWYoaD09PWIpe2s9Zi5jc3MoYSxjKSxsPXBhcnNlRmxvYXQoayk7cmV0dXJuIGYuaXNOdW1lcmljKGwpP2w6a31mKGEpLmNzcyhjLGgpfSxjLGEsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxhLmpRdWVyeT1hLiQ9Zix0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kJiZkZWZpbmUuYW1kLmpRdWVyeSYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KX0pKHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/load-image.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihhLGMsZCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIiksZixnO3JldHVybiBlLm9uZXJyb3I9YyxlLm9ubG9hZD1mdW5jdGlvbigpe2cmJmIucmV2b2tlT2JqZWN0VVJMKGcpLGMoYi5zY2FsZShlLGQpKX0sd2luZG93LkJsb2ImJmEgaW5zdGFuY2VvZiBCbG9ifHx3aW5kb3cuRmlsZSYmYSBpbnN0YW5jZW9mIEZpbGU/Zj1nPWIuY3JlYXRlT2JqZWN0VVJMKGEpOmY9YSxmPyhlLnNyYz1mLGUpOmIucmVhZEZpbGUoYSxmdW5jdGlvbihhKXtlLnNyYz1hfSl9LGM9d2luZG93LmNyZWF0ZU9iamVjdFVSTCYmd2luZG93fHx3aW5kb3cuVVJMJiZVUkx8fHdpbmRvdy53ZWJraXRVUkwmJndlYmtpdFVSTDtiLnNjYWxlPWZ1bmN0aW9uKGEsYil7Yj1ifHx7fTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxkPWEud2lkdGgsZT1hLmhlaWdodCxmPU1hdGgubWF4KChiLm1pbldpZHRofHxkKS9kLChiLm1pbkhlaWdodHx8ZSkvZSk7cmV0dXJuIGY+MSYmKGQ9cGFyc2VJbnQoZCpmLDEwKSxlPXBhcnNlSW50KGUqZiwxMCkpLGY9TWF0aC5taW4oKGIubWF4V2lkdGh8fGQpL2QsKGIubWF4SGVpZ2h0fHxlKS9lKSxmPDEmJihkPXBhcnNlSW50KGQqZiwxMCksZT1wYXJzZUludChlKmYsMTApKSxhLmdldENvbnRleHR8fGIuY2FudmFzJiZjLmdldENvbnRleHQ/KGMud2lkdGg9ZCxjLmhlaWdodD1lLGMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoYSwwLDAsZCxlKSxjKTooYS53aWR0aD1kLGEuaGVpZ2h0PWUsYSl9LGIuY3JlYXRlT2JqZWN0VVJMPWZ1bmN0aW9uKGEpe3JldHVybiBjP2MuY3JlYXRlT2JqZWN0VVJMKGEpOiExfSxiLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXtyZXR1cm4gYz9jLnJldm9rZU9iamVjdFVSTChhKTohMX0sYi5yZWFkRmlsZT1mdW5jdGlvbihhLGIpe2lmKHdpbmRvdy5GaWxlUmVhZGVyJiZGaWxlUmVhZGVyLnByb3RvdHlwZS5yZWFkQXNEYXRhVVJMKXt2YXIgYz1uZXcgRmlsZVJlYWRlcjtyZXR1cm4gYy5vbmxvYWQ9ZnVuY3Rpb24oYSl7YihhLnRhcmdldC5yZXN1bHQpfSxjLnJlYWRBc0RhdGFVUkwoYSksY31yZXR1cm4hMX0sdHlwZW9mIGRlZmluZSE9InVuZGVmaW5lZCImJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KTphLmxvYWRJbWFnZT1ifSkodGhpcyk7]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/locale.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBQbHVnaW4gTG9jYWxpemF0aW9uIEV4YW1wbGUgNi41LjENCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDEyLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQovKmdsb2JhbCB3aW5kb3cgKi8NCg0Kd2luZG93LmxvY2FsZSA9IHsNCiAgICAiZmlsZXVwbG9hZCI6IHsNCiAgICAgICAgImVycm9ycyI6IHsNCiAgICAgICAgICAgICJtYXhGaWxlU2l6ZSI6ICJGaWxlIGlzIHRvbyBiaWciLA0KICAgICAgICAgICAgIm1pbkZpbGVTaXplIjogIkZpbGUgaXMgdG9vIHNtYWxsIiwNCiAgICAgICAgICAgICJhY2NlcHRGaWxlVHlwZXMiOiAiRmlsZXR5cGUgbm90IGFsbG93ZWQiLA0KICAgICAgICAgICAgIm1heE51bWJlck9mRmlsZXMiOiAiTWF4IG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCIsDQogICAgICAgICAgICAidXBsb2FkZWRCeXRlcyI6ICJVcGxvYWRlZCBieXRlcyBleGNlZWQgZmlsZSBzaXplIiwNCiAgICAgICAgICAgICJlbXB0eVJlc3VsdCI6ICJFbXB0eSBmaWxlIHVwbG9hZCByZXN1bHQiDQogICAgICAgIH0sDQogICAgICAgICJlcnJvciI6ICJFcnJvciIsDQogICAgICAgICJzdGFydCI6ICJTdGFydCIsDQogICAgICAgICJjYW5jZWwiOiAiQ2FuY2VsIiwNCiAgICAgICAgImRlc3Ryb3kiOiAiRGVsZXRlIg0KICAgIH0NCn07DQo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/main.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBGaWxlIFVwbG9hZCBQbHVnaW4gSlMgRXhhbXBsZSA2LjcNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZA0KICoNCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuDQogKiBodHRwczovL2JsdWVpbXAubmV0DQogKg0KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOg0KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQNCiAqLw0KDQovKmpzbGludCBub21lbjogdHJ1ZSwgdW5wYXJhbTogdHJ1ZSwgcmVnZXhwOiB0cnVlICovDQovKmdsb2JhbCAkLCB3aW5kb3csIGRvY3VtZW50ICovDQoNCiQoZnVuY3Rpb24gKCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIC8vIEluaXRpYWxpemUgdGhlIGpRdWVyeSBGaWxlIFVwbG9hZCB3aWRnZXQ6DQogICAgJCgnI2ZpbGV1cGxvYWQnKS5maWxldXBsb2FkKCk7DQoNCiAgICAvLyBFbmFibGUgaWZyYW1lIGNyb3NzLWRvbWFpbiBhY2Nlc3MgdmlhIHJlZGlyZWN0IG9wdGlvbjoNCiAgICAkKCcjZmlsZXVwbG9hZCcpLmZpbGV1cGxvYWQoDQogICAgICAgICdvcHRpb24nLA0KICAgICAgICAncmVkaXJlY3QnLA0KICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKA0KICAgICAgICAgICAgL1wvW15cL10qJC8sDQogICAgICAgICAgICAnL2NvcnMvcmVzdWx0Lmh0bWw/JXMnDQogICAgICAgICkNCiAgICApOw0KDQogICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2JsdWVpbXAuZ2l0aHViLmNvbScpIHsNCiAgICAgICAgLy8gRGVtbyBzZXR0aW5nczoNCiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5maWxldXBsb2FkKCdvcHRpb24nLCB7DQogICAgICAgICAgICB1cmw6ICcvL2pxdWVyeS1maWxlLXVwbG9hZC5hcHBzcG90LmNvbS8nLA0KICAgICAgICAgICAgbWF4RmlsZVNpemU6IDUwMDAwMDAsDQogICAgICAgICAgICBhY2NlcHRGaWxlVHlwZXM6IC8oXC58XC8pKGdpZnxqcGU/Z3xwbmcpJC9pLA0KICAgICAgICAgICAgcHJvY2VzczogWw0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnbG9hZCcsDQogICAgICAgICAgICAgICAgICAgIGZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywNCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUINCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywNCiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDE0NDAsDQogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogOTAwDQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgXQ0KICAgICAgICB9KTsNCiAgICAgICAgLy8gVXBsb2FkIHNlcnZlciBzdGF0dXMgY2hlY2sgZm9yIGJyb3dzZXJzIHdpdGggQ09SUyBzdXBwb3J0Og0KICAgICAgICBpZiAoJC5zdXBwb3J0LmNvcnMpIHsNCiAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgdXJsOiAnLy9qcXVlcnktZmlsZS11cGxvYWQuYXBwc3BvdC5jb20vJywNCiAgICAgICAgICAgICAgICB0eXBlOiAnSEVBRCcNCiAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICQoJzxzcGFuIGNsYXNzPSJhbGVydCBhbGVydC1lcnJvciIvPicpDQogICAgICAgICAgICAgICAgICAgIC50ZXh0KCdVcGxvYWQgc2VydmVyIGN1cnJlbnRseSB1bmF2YWlsYWJsZSAtICcgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkpDQogICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbygnI2ZpbGV1cGxvYWQnKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gTG9hZCBleGlzdGluZyBmaWxlczoNCiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5lYWNoKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpczsNCiAgICAgICAgICAgICQuZ2V0SlNPTih0aGlzLmFjdGlvbiwgZnVuY3Rpb24gKHJlc3VsdCkgew0KICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICAkKHRoYXQpLmZpbGV1cGxvYWQoJ29wdGlvbicsICdkb25lJykNCiAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKHRoYXQsIG51bGwsIHtyZXN1bHQ6IHJlc3VsdH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9DQoNCn0pOw0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/tmpl.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihhLGMpe3ZhciBkPS9bXlx3XC1cLjpdLy50ZXN0KGEpP25ldyBGdW5jdGlvbihiLmFyZysiLHRtcGwiLCJ2YXIgX2U9dG1wbC5lbmNvZGUiK2IuaGVscGVyKyIsX3M9JyIrYS5yZXBsYWNlKGIucmVnZXhwLGIuZnVuYykrIic7cmV0dXJuIF9zOyIpOmIuY2FjaGVbYV09Yi5jYWNoZVthXXx8YihiLmxvYWQoYSkpO3JldHVybiBjP2QoYyxiKTpmdW5jdGlvbihhKXtyZXR1cm4gZChhLGIpfX07Yi5jYWNoZT17fSxiLmxvYWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpLmlubmVySFRNTH0sYi5yZWdleHA9LyhbXHMnXFxdKSg/IVteJV0qJVx9KXwoPzpceyUoPXwjKShbXHNcU10rPyklXH0pfChceyUpfCglXH0pL2csYi5mdW5jPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihiKXJldHVybnsiXG4iOiJcXG4iLCJcciI6IlxcciIsIlx0IjoiXFx0IiwiICI6IiAifVthXXx8IlxcIithO2lmKGMpcmV0dXJuIGM9PT0iPSI/IicrX2UoIitkKyIpKyciOiInKygiK2QrInx8JycpKyciO2lmKGUpcmV0dXJuIic7IjtpZihmKXJldHVybiJfcys9JyJ9LGIuZW5jUmVnPS9bPD4mIidceDAwXS9nLGIuZW5jTWFwPXsiPCI6IiZsdDsiLCI+IjoiJmd0OyIsIiYiOiImYW1wOyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSxiLmVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGF8fCIiKS5yZXBsYWNlKGIuZW5jUmVnLGZ1bmN0aW9uKGEpe3JldHVybiBiLmVuY01hcFthXXx8IiJ9KX0sYi5hcmc9Im8iLGIuaGVscGVyPSIscHJpbnQ9ZnVuY3Rpb24ocyxlKXtfcys9ZSYmKHN8fCcnKXx8X2Uocyk7fSxpbmNsdWRlPWZ1bmN0aW9uKHMsZCl7X3MrPXRtcGwocyxkKTt9Iix0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShmdW5jdGlvbigpe3JldHVybiBifSk6YS50bXBsPWJ9KSh0aGlzKTs=]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/js/vendor/jquery.ui.widget.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS44LjE4K2FtZA0KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkDQogKg0KICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuDQogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlDQogKg0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQNCiAqLw0KDQooZnVuY3Rpb24gKGZhY3RvcnkpIHsNCiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSB7DQogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOg0KICAgICAgICBkZWZpbmUoWyJqcXVlcnkiXSwgZmFjdG9yeSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOg0KICAgICAgICBmYWN0b3J5KGpRdWVyeSk7DQogICAgfQ0KfShmdW5jdGlvbiggJCwgdW5kZWZpbmVkICkgew0KDQovLyBqUXVlcnkgMS40Kw0KaWYgKCAkLmNsZWFuRGF0YSApIHsNCgl2YXIgX2NsZWFuRGF0YSA9ICQuY2xlYW5EYXRhOw0KCSQuY2xlYW5EYXRhID0gZnVuY3Rpb24oIGVsZW1zICkgew0KCQlmb3IgKCB2YXIgaSA9IDAsIGVsZW07IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHsNCgkJCXRyeSB7DQoJCQkJJCggZWxlbSApLnRyaWdnZXJIYW5kbGVyKCAicmVtb3ZlIiApOw0KCQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvODIzNQ0KCQkJfSBjYXRjaCggZSApIHt9DQoJCX0NCgkJX2NsZWFuRGF0YSggZWxlbXMgKTsNCgl9Ow0KfSBlbHNlIHsNCgl2YXIgX3JlbW92ZSA9ICQuZm4ucmVtb3ZlOw0KCSQuZm4ucmVtb3ZlID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBrZWVwRGF0YSApIHsNCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsNCgkJCWlmICggIWtlZXBEYXRhICkgew0KCQkJCWlmICggIXNlbGVjdG9yIHx8ICQuZmlsdGVyKCBzZWxlY3RvciwgWyB0aGlzIF0gKS5sZW5ndGggKSB7DQoJCQkJCSQoICIqIiwgdGhpcyApLmFkZCggWyB0aGlzIF0gKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCQkJdHJ5IHsNCgkJCQkJCQkkKCB0aGlzICkudHJpZ2dlckhhbmRsZXIoICJyZW1vdmUiICk7DQoJCQkJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1DQoJCQkJCQl9IGNhdGNoKCBlICkge30NCgkJCQkJfSk7DQoJCQkJfQ0KCQkJfQ0KCQkJcmV0dXJuIF9yZW1vdmUuY2FsbCggJCh0aGlzKSwgc2VsZWN0b3IsIGtlZXBEYXRhICk7DQoJCX0pOw0KCX07DQp9DQoNCiQud2lkZ2V0ID0gZnVuY3Rpb24oIG5hbWUsIGJhc2UsIHByb3RvdHlwZSApIHsNCgl2YXIgbmFtZXNwYWNlID0gbmFtZS5zcGxpdCggIi4iIClbIDAgXSwNCgkJZnVsbE5hbWU7DQoJbmFtZSA9IG5hbWUuc3BsaXQoICIuIiApWyAxIF07DQoJZnVsbE5hbWUgPSBuYW1lc3BhY2UgKyAiLSIgKyBuYW1lOw0KDQoJaWYgKCAhcHJvdG90eXBlICkgew0KCQlwcm90b3R5cGUgPSBiYXNlOw0KCQliYXNlID0gJC5XaWRnZXQ7DQoJfQ0KDQoJLy8gY3JlYXRlIHNlbGVjdG9yIGZvciBwbHVnaW4NCgkkLmV4cHJbICI6IiBdWyBmdWxsTmFtZSBdID0gZnVuY3Rpb24oIGVsZW0gKSB7DQoJCXJldHVybiAhISQuZGF0YSggZWxlbSwgbmFtZSApOw0KCX07DQoNCgkkWyBuYW1lc3BhY2UgXSA9ICRbIG5hbWVzcGFjZSBdIHx8IHt9Ow0KCSRbIG5hbWVzcGFjZSBdWyBuYW1lIF0gPSBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHsNCgkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlDQoJCWlmICggYXJndW1lbnRzLmxlbmd0aCApIHsNCgkJCXRoaXMuX2NyZWF0ZVdpZGdldCggb3B0aW9ucywgZWxlbWVudCApOw0KCQl9DQoJfTsNCg0KCXZhciBiYXNlUHJvdG90eXBlID0gbmV3IGJhc2UoKTsNCgkvLyB3ZSBuZWVkIHRvIG1ha2UgdGhlIG9wdGlvbnMgaGFzaCBhIHByb3BlcnR5IGRpcmVjdGx5IG9uIHRoZSBuZXcgaW5zdGFuY2UNCgkvLyBvdGhlcndpc2Ugd2UnbGwgbW9kaWZ5IHRoZSBvcHRpb25zIGhhc2ggb24gdGhlIHByb3RvdHlwZSB0aGF0IHdlJ3JlDQoJLy8gaW5oZXJpdGluZyBmcm9tDQovLwkkLmVhY2goIGJhc2VQcm90b3R5cGUsIGZ1bmN0aW9uKCBrZXksIHZhbCApIHsNCi8vCQlpZiAoICQuaXNQbGFpbk9iamVjdCh2YWwpICkgew0KLy8JCQliYXNlUHJvdG90eXBlWyBrZXkgXSA9ICQuZXh0ZW5kKCB7fSwgdmFsICk7DQovLwkJfQ0KLy8JfSk7DQoJYmFzZVByb3RvdHlwZS5vcHRpb25zID0gJC5leHRlbmQoIHRydWUsIHt9LCBiYXNlUHJvdG90eXBlLm9wdGlvbnMgKTsNCgkkWyBuYW1lc3BhY2UgXVsgbmFtZSBdLnByb3RvdHlwZSA9ICQuZXh0ZW5kKCB0cnVlLCBiYXNlUHJvdG90eXBlLCB7DQoJCW5hbWVzcGFjZTogbmFtZXNwYWNlLA0KCQl3aWRnZXROYW1lOiBuYW1lLA0KCQl3aWRnZXRFdmVudFByZWZpeDogJFsgbmFtZXNwYWNlIF1bIG5hbWUgXS5wcm90b3R5cGUud2lkZ2V0RXZlbnRQcmVmaXggfHwgbmFtZSwNCgkJd2lkZ2V0QmFzZUNsYXNzOiBmdWxsTmFtZQ0KCX0sIHByb3RvdHlwZSApOw0KDQoJJC53aWRnZXQuYnJpZGdlKCBuYW1lLCAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdICk7DQp9Ow0KDQokLndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbiggbmFtZSwgb2JqZWN0ICkgew0KCSQuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zICkgew0KCQl2YXIgaXNNZXRob2RDYWxsID0gdHlwZW9mIG9wdGlvbnMgPT09ICJzdHJpbmciLA0KCQkJYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKCBhcmd1bWVudHMsIDEgKSwNCgkJCXJldHVyblZhbHVlID0gdGhpczsNCg0KCQkvLyBhbGxvdyBtdWx0aXBsZSBoYXNoZXMgdG8gYmUgcGFzc2VkIG9uIGluaXQNCgkJb3B0aW9ucyA9ICFpc01ldGhvZENhbGwgJiYgYXJncy5sZW5ndGggPw0KCQkJJC5leHRlbmQuYXBwbHkoIG51bGwsIFsgdHJ1ZSwgb3B0aW9ucyBdLmNvbmNhdChhcmdzKSApIDoNCgkJCW9wdGlvbnM7DQoNCgkJLy8gcHJldmVudCBjYWxscyB0byBpbnRlcm5hbCBtZXRob2RzDQoJCWlmICggaXNNZXRob2RDYWxsICYmIG9wdGlvbnMuY2hhckF0KCAwICkgPT09ICJfIiApIHsNCgkJCXJldHVybiByZXR1cm5WYWx1ZTsNCgkJfQ0KDQoJCWlmICggaXNNZXRob2RDYWxsICkgew0KCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCXZhciBpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgbmFtZSApLA0KCQkJCQltZXRob2RWYWx1ZSA9IGluc3RhbmNlICYmICQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSA/DQoJCQkJCQlpbnN0YW5jZVsgb3B0aW9ucyBdLmFwcGx5KCBpbnN0YW5jZSwgYXJncyApIDoNCgkJCQkJCWluc3RhbmNlOw0KCQkJCS8vIFRPRE86IGFkZCB0aGlzIGJhY2sgaW4gMS45IGFuZCB1c2UgJC5lcnJvcigpIChzZWUgIzU5NzIpDQovLwkJCQlpZiAoICFpbnN0YW5jZSApIHsNCi8vCQkJCQl0aHJvdyAiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiICsgbmFtZSArICIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIgKw0KLy8JCQkJCQkiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciICsgb3B0aW9ucyArICInIjsNCi8vCQkJCX0NCi8vCQkJCWlmICggISQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSApIHsNCi8vCQkJCQl0aHJvdyAibm8gc3VjaCBtZXRob2QgJyIgKyBvcHRpb25zICsgIicgZm9yICIgKyBuYW1lICsgIiB3aWRnZXQgaW5zdGFuY2UiOw0KLy8JCQkJfQ0KLy8JCQkJdmFyIG1ldGhvZFZhbHVlID0gaW5zdGFuY2VbIG9wdGlvbnMgXS5hcHBseSggaW5zdGFuY2UsIGFyZ3MgKTsNCgkJCQlpZiAoIG1ldGhvZFZhbHVlICE9PSBpbnN0YW5jZSAmJiBtZXRob2RWYWx1ZSAhPT0gdW5kZWZpbmVkICkgew0KCQkJCQlyZXR1cm5WYWx1ZSA9IG1ldGhvZFZhbHVlOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfSk7DQoJCX0gZWxzZSB7DQoJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJCQkJdmFyIGluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBuYW1lICk7DQoJCQkJaWYgKCBpbnN0YW5jZSApIHsNCgkJCQkJaW5zdGFuY2Uub3B0aW9uKCBvcHRpb25zIHx8IHt9ICkuX2luaXQoKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkLmRhdGEoIHRoaXMsIG5hbWUsIG5ldyBvYmplY3QoIG9wdGlvbnMsIHRoaXMgKSApOw0KCQkJCX0NCgkJCX0pOw0KCQl9DQoNCgkJcmV0dXJuIHJldHVyblZhbHVlOw0KCX07DQp9Ow0KDQokLldpZGdldCA9IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkgew0KCS8vIGFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCBpbml0aWFsaXppbmcgZm9yIHNpbXBsZSBpbmhlcml0YW5jZQ0KCWlmICggYXJndW1lbnRzLmxlbmd0aCApIHsNCgkJdGhpcy5fY3JlYXRlV2lkZ2V0KCBvcHRpb25zLCBlbGVtZW50ICk7DQoJfQ0KfTsNCg0KJC5XaWRnZXQucHJvdG90eXBlID0gew0KCXdpZGdldE5hbWU6ICJ3aWRnZXQiLA0KCXdpZGdldEV2ZW50UHJlZml4OiAiIiwNCglvcHRpb25zOiB7DQoJCWRpc2FibGVkOiBmYWxzZQ0KCX0sDQoJX2NyZWF0ZVdpZGdldDogZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7DQoJCS8vICQud2lkZ2V0LmJyaWRnZSBzdG9yZXMgdGhlIHBsdWdpbiBpbnN0YW5jZSwgYnV0IHdlIGRvIGl0IGFueXdheQ0KCQkvLyBzbyB0aGF0IGl0J3Mgc3RvcmVkIGV2ZW4gYmVmb3JlIHRoZSBfY3JlYXRlIGZ1bmN0aW9uIHJ1bnMNCgkJJC5kYXRhKCBlbGVtZW50LCB0aGlzLndpZGdldE5hbWUsIHRoaXMgKTsNCgkJdGhpcy5lbGVtZW50ID0gJCggZWxlbWVudCApOw0KCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCggdHJ1ZSwge30sDQoJCQl0aGlzLm9wdGlvbnMsDQoJCQl0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksDQoJCQlvcHRpb25zICk7DQoNCgkJdmFyIHNlbGYgPSB0aGlzOw0KCQl0aGlzLmVsZW1lbnQuYmluZCggInJlbW92ZS4iICsgdGhpcy53aWRnZXROYW1lLCBmdW5jdGlvbigpIHsNCgkJCXNlbGYuZGVzdHJveSgpOw0KCQl9KTsNCg0KCQl0aGlzLl9jcmVhdGUoKTsNCgkJdGhpcy5fdHJpZ2dlciggImNyZWF0ZSIgKTsNCgkJdGhpcy5faW5pdCgpOw0KCX0sDQoJX2dldENyZWF0ZU9wdGlvbnM6IGZ1bmN0aW9uKCkgew0KCQlyZXR1cm4gJC5tZXRhZGF0YSAmJiAkLm1ldGFkYXRhLmdldCggdGhpcy5lbGVtZW50WzBdIClbIHRoaXMud2lkZ2V0TmFtZSBdOw0KCX0sDQoJX2NyZWF0ZTogZnVuY3Rpb24oKSB7fSwNCglfaW5pdDogZnVuY3Rpb24oKSB7fSwNCg0KCWRlc3Ryb3k6IGZ1bmN0aW9uKCkgew0KCQl0aGlzLmVsZW1lbnQNCgkJCS51bmJpbmQoICIuIiArIHRoaXMud2lkZ2V0TmFtZSApDQoJCQkucmVtb3ZlRGF0YSggdGhpcy53aWRnZXROYW1lICk7DQoJCXRoaXMud2lkZ2V0KCkNCgkJCS51bmJpbmQoICIuIiArIHRoaXMud2lkZ2V0TmFtZSApDQoJCQkucmVtb3ZlQXR0ciggImFyaWEtZGlzYWJsZWQiICkNCgkJCS5yZW1vdmVDbGFzcygNCgkJCQl0aGlzLndpZGdldEJhc2VDbGFzcyArICItZGlzYWJsZWQgIiArDQoJCQkJInVpLXN0YXRlLWRpc2FibGVkIiApOw0KCX0sDQoNCgl3aWRnZXQ6IGZ1bmN0aW9uKCkgew0KCQlyZXR1cm4gdGhpcy5lbGVtZW50Ow0KCX0sDQoNCglvcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgew0KCQl2YXIgb3B0aW9ucyA9IGtleTsNCg0KCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDAgKSB7DQoJCQkvLyBkb24ndCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGhhc2gNCgkJCXJldHVybiAkLmV4dGVuZCgge30sIHRoaXMub3B0aW9ucyApOw0KCQl9DQoNCgkJaWYgICh0eXBlb2Yga2V5ID09PSAic3RyaW5nIiApIHsNCgkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApIHsNCgkJCQlyZXR1cm4gdGhpcy5vcHRpb25zWyBrZXkgXTsNCgkJCX0NCgkJCW9wdGlvbnMgPSB7fTsNCgkJCW9wdGlvbnNbIGtleSBdID0gdmFsdWU7DQoJCX0NCg0KCQl0aGlzLl9zZXRPcHRpb25zKCBvcHRpb25zICk7DQoNCgkJcmV0dXJuIHRoaXM7DQoJfSwNCglfc2V0T3B0aW9uczogZnVuY3Rpb24oIG9wdGlvbnMgKSB7DQoJCXZhciBzZWxmID0gdGhpczsNCgkJJC5lYWNoKCBvcHRpb25zLCBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsNCgkJCXNlbGYuX3NldE9wdGlvbigga2V5LCB2YWx1ZSApOw0KCQl9KTsNCg0KCQlyZXR1cm4gdGhpczsNCgl9LA0KCV9zZXRPcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgew0KCQl0aGlzLm9wdGlvbnNbIGtleSBdID0gdmFsdWU7DQoNCgkJaWYgKCBrZXkgPT09ICJkaXNhYmxlZCIgKSB7DQoJCQl0aGlzLndpZGdldCgpDQoJCQkJWyB2YWx1ZSA/ICJhZGRDbGFzcyIgOiAicmVtb3ZlQ2xhc3MiXSgNCgkJCQkJdGhpcy53aWRnZXRCYXNlQ2xhc3MgKyAiLWRpc2FibGVkIiArICIgIiArDQoJCQkJCSJ1aS1zdGF0ZS1kaXNhYmxlZCIgKQ0KCQkJCS5hdHRyKCAiYXJpYS1kaXNhYmxlZCIsIHZhbHVlICk7DQoJCX0NCg0KCQlyZXR1cm4gdGhpczsNCgl9LA0KDQoJZW5hYmxlOiBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRoaXMuX3NldE9wdGlvbiggImRpc2FibGVkIiwgZmFsc2UgKTsNCgl9LA0KCWRpc2FibGU6IGZ1bmN0aW9uKCkgew0KCQlyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCAiZGlzYWJsZWQiLCB0cnVlICk7DQoJfSwNCg0KCV90cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZXZlbnQsIGRhdGEgKSB7DQoJCXZhciBwcm9wLCBvcmlnLA0KCQkJY2FsbGJhY2sgPSB0aGlzLm9wdGlvbnNbIHR5cGUgXTsNCg0KCQlkYXRhID0gZGF0YSB8fCB7fTsNCgkJZXZlbnQgPSAkLkV2ZW50KCBldmVudCApOw0KCQlldmVudC50eXBlID0gKCB0eXBlID09PSB0aGlzLndpZGdldEV2ZW50UHJlZml4ID8NCgkJCXR5cGUgOg0KCQkJdGhpcy53aWRnZXRFdmVudFByZWZpeCArIHR5cGUgKS50b0xvd2VyQ2FzZSgpOw0KCQkvLyB0aGUgb3JpZ2luYWwgZXZlbnQgbWF5IGNvbWUgZnJvbSBhbnkgZWxlbWVudA0KCQkvLyBzbyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB0YXJnZXQgb24gdGhlIG5ldyBldmVudA0KCQlldmVudC50YXJnZXQgPSB0aGlzLmVsZW1lbnRbIDAgXTsNCg0KCQkvLyBjb3B5IG9yaWdpbmFsIGV2ZW50IHByb3BlcnRpZXMgb3ZlciB0byB0aGUgbmV3IGV2ZW50DQoJCW9yaWcgPSBldmVudC5vcmlnaW5hbEV2ZW50Ow0KCQlpZiAoIG9yaWcgKSB7DQoJCQlmb3IgKCBwcm9wIGluIG9yaWcgKSB7DQoJCQkJaWYgKCAhKCBwcm9wIGluIGV2ZW50ICkgKSB7DQoJCQkJCWV2ZW50WyBwcm9wIF0gPSBvcmlnWyBwcm9wIF07DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5lbGVtZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhICk7DQoNCgkJcmV0dXJuICEoICQuaXNGdW5jdGlvbihjYWxsYmFjaykgJiYNCgkJCWNhbGxiYWNrLmNhbGwoIHRoaXMuZWxlbWVudFswXSwgZXZlbnQsIGRhdGEgKSA9PT0gZmFsc2UgfHwNCgkJCWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICk7DQoJfQ0KfTsNCg0KfSkpOw0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/package.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiYmx1ZWltcC1maWxlLXVwbG9hZCIsCiAgICAidmVyc2lvbiI6ICI2LjkuMiIsCiAgICAidGl0bGUiOiAialF1ZXJ5IEZpbGUgVXBsb2FkIiwKICAgICJkZXNjcmlwdGlvbiI6ICJGaWxlIFVwbG9hZCB3aWRnZXQgd2l0aCBtdWx0aXBsZSBmaWxlIHNlbGVjdGlvbiwgZHJhZyZkcm9wIHN1cHBvcnQsIHByb2dyZXNzIGJhcnMgYW5kIHByZXZpZXcgaW1hZ2VzIGZvciBqUXVlcnkuIFN1cHBvcnRzIGNyb3NzLWRvbWFpbiwgY2h1bmtlZCBhbmQgcmVzdW1hYmxlIGZpbGUgdXBsb2FkcyBhbmQgY2xpZW50LXNpZGUgaW1hZ2UgcmVzaXppbmcuIFdvcmtzIHdpdGggYW55IHNlcnZlci1zaWRlIHBsYXRmb3JtIChQSFAsIFB5dGhvbiwgUnVieSBvbiBSYWlscywgSmF2YSwgTm9kZS5qcywgR28gZXRjLikgdGhhdCBzdXBwb3J0cyBzdGFuZGFyZCBIVE1MIGZvcm0gZmlsZSB1cGxvYWRzLiIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgImpxdWVyeSIsCiAgICAgICAgImZpbGUiLAogICAgICAgICJ1cGxvYWQiLAogICAgICAgICJ3aWRnZXQiLAogICAgICAgICJtdWx0aXBsZSIsCiAgICAgICAgInNlbGVjdGlvbiIsCiAgICAgICAgImRyYWciLAogICAgICAgICJkcm9wIiwKICAgICAgICAicHJvZ3Jlc3MiLAogICAgICAgICJwcmV2aWV3IiwKICAgICAgICAiY3Jvc3MtZG9tYWluIiwKICAgICAgICAiY3Jvc3Mtc2l0ZSIsCiAgICAgICAgImNodW5rIiwKICAgICAgICAicmVzdW1lIiwKICAgICAgICAiZ2FlIiwKICAgICAgICAiZ28iLAogICAgICAgICJweXRob24iLAogICAgICAgICJwaHAiLAogICAgICAgICJib290c3RyYXAiCiAgICBdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZCIsCiAgICAiYXV0aG9yIjogewogICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBUc2NoYW4iLAogICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9ibHVlaW1wLm5ldCIKICAgIH0sCiAgICAibWFpbnRhaW5lcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gVHNjaGFuIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2JsdWVpbXAubmV0IgogICAgICAgIH0KICAgIF0sCiAgICAicmVwb3NpdG9yeSI6IHsKICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICJ1cmwiOiAiZ2l0Oi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC5naXQiCiAgICB9LAogICAgImJ1Z3MiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL2lzc3VlcyIsCiAgICAibGljZW5zZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAidHlwZSI6ICJNSVQiLAogICAgICAgICAgICAidXJsIjogImh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIgogICAgICAgIH0KICAgIF0sCiAgICAiZGVwZW5kZW5jaWVzIjogewogICAgICAgICJqcXVlcnkiOiAiPj0xLjYiLAogICAgICAgICJqcXVlcnkudWkud2lkZ2V0IjogIj49MS44IiwKICAgICAgICAiYmx1ZWltcC10bXBsIjogIj49Mi4xLjAiLAogICAgICAgICJibHVlaW1wLWxvYWQtaW1hZ2UiOiAiPj0xLjEuNiIsCiAgICAgICAgImJsdWVpbXAtY2FudmFzLXRvLWJsb2IiOiAiPj0yLjAuMCIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBqUXVlcnkgRmlsZSBVcGxvYWQgUGx1Z2luCgojIyBEZW1vCltEZW1vIEZpbGUgVXBsb2FkXShodHRwOi8vYmx1ZWltcC5naXRodWIuY29tL2pRdWVyeS1GaWxlLVVwbG9hZC8pCgojIyBTZXR1cCBpbnN0cnVjdGlvbnMKKiBbSG93IHRvIHNldHVwIHRoZSBwbHVnaW4gb24geW91ciB3ZWJzaXRlXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvd2lraS9TZXR1cCkKKiBbSG93IHRvIHVzZSBvbmx5IHRoZSBiYXNpYyBwbHVnaW4gKG1pbmltYWwgc2V0dXAgZ3VpZGUpLl0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3dpa2kvQmFzaWMtcGx1Z2luKQoKIyMgRmVhdHVyZXMKKiAqKk11bHRpcGxlIGZpbGUgdXBsb2FkOioqICAKICBBbGxvd3MgdG8gc2VsZWN0IG11bHRpcGxlIGZpbGVzIGF0IG9uY2UgYW5kIHVwbG9hZCB0aGVtIHNpbXVsdGFuZW91c2x5LgoqICoqRHJhZyAmIERyb3Agc3VwcG9ydDoqKiAgCiAgQWxsb3dzIHRvIHVwbG9hZCBmaWxlcyBieSBkcmFnZ2luZyB0aGVtIGZyb20geW91ciBkZXNrdG9wIG9yIGZpbGVtYW5hZ2VyIGFuZCBkcm9wcGluZyB0aGVtIG9uIHlvdXIgYnJvd3NlciB3aW5kb3cuCiogKipVcGxvYWQgcHJvZ3Jlc3MgYmFyOioqICAKICBTaG93cyBhIHByb2dyZXNzIGJhciBpbmRpY2F0aW5nIHRoZSB1cGxvYWQgcHJvZ3Jlc3MgZm9yIGluZGl2aWR1YWwgZmlsZXMgYW5kIGZvciBhbGwgdXBsb2FkcyBjb21iaW5lZC4KKiAqKkNhbmNlbGFibGUgdXBsb2FkczoqKiAgCiAgSW5kaXZpZHVhbCBmaWxlIHVwbG9hZHMgY2FuIGJlIGNhbmNlbGVkIHRvIHN0b3AgdGhlIHVwbG9hZCBwcm9ncmVzcy4KKiAqKlJlc3VtYWJsZSB1cGxvYWRzOioqICAKICBBYm9ydGVkIHVwbG9hZHMgY2FuIGJlIHJlc3VtZWQgd2l0aCBicm93c2VycyBzdXBwb3J0aW5nIHRoZSBCbG9iIEFQSS4KKiAqKkNodW5rZWQgdXBsb2FkczoqKiAgCiAgTGFyZ2UgZmlsZXMgY2FuIGJlIHVwbG9hZGVkIGluIHNtYWxsZXIgY2h1bmtzIHdpdGggYnJvd3NlcnMgc3VwcG9ydGluZyB0aGUgQmxvYiBBUEkuCiogKipDbGllbnQtc2lkZSBpbWFnZSByZXNpemluZzoqKiAgCiAgSW1hZ2VzIGNhbiBiZSBhdXRvbWF0aWNhbGx5IHJlc2l6ZWQgb24gY2xpZW50LXNpZGUgd2l0aCBicm93c2VycyBzdXBwb3J0aW5nIHRoZSByZXF1aXJlZCBKUyBBUElzLgoqICoqUHJldmlldyBpbWFnZXM6KiogIAogIEEgcHJldmlldyBvZiBpbWFnZSBmaWxlcyBjYW4gYmUgZGlzcGxheWVkIGJlZm9yZSB1cGxvYWRpbmcgd2l0aCBicm93c2VycyBzdXBwb3J0aW5nIHRoZSByZXF1aXJlZCBKUyBBUElzLgoqICoqTm8gYnJvd3NlciBwbHVnaW5zIChlLmcuIEFkb2JlIEZsYXNoKSByZXF1aXJlZDoqKiAgCiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIG9wZW4gc3RhbmRhcmRzIGxpa2UgSFRNTDUgYW5kIEphdmFTY3JpcHQgYW5kIHJlcXVpcmVzIG5vIGFkZGl0aW9uYWwgYnJvd3NlciBwbHVnaW5zLgoqICoqR3JhY2VmdWwgZmFsbGJhY2sgZm9yIGxlZ2FjeSBicm93c2VyczoqKiAgCiAgVXBsb2FkcyBmaWxlcyB2aWEgWE1MSHR0cFJlcXVlc3RzIGlmIHN1cHBvcnRlZCBhbmQgdXNlcyBpZnJhbWVzIGFzIGZhbGxiYWNrIGZvciBsZWdhY3kgYnJvd3NlcnMuCiogKipIVE1MIGZpbGUgdXBsb2FkIGZvcm0gZmFsbGJhY2s6KiogIAogIFNob3dzIGEgc3RhbmRhcmQgSFRNTCBmaWxlIHVwbG9hZCBmb3JtIGlmIEphdmFTY3JpcHQgaXMgZGlzYWJsZWQuCiogKipDcm9zcy1zaXRlIGZpbGUgdXBsb2FkczoqKiAgCiAgU3VwcG9ydHMgdXBsb2FkaW5nIGZpbGVzIHRvIGEgZGlmZmVyZW50IGRvbWFpbiB3aXRoIENyb3NzLXNpdGUgWE1MSHR0cFJlcXVlc3RzLgoqICoqTXVsdGlwbGUgcGx1Z2luIGluc3RhbmNlczoqKiAgCiAgQWxsb3dzIHRvIHVzZSBtdWx0aXBsZSBwbHVnaW4gaW5zdGFuY2VzIG9uIHRoZSBzYW1lIHdlYnBhZ2UuCiogKipDdXN0b21pemFibGUgYW5kIGV4dGVuc2libGU6KiogIAogIFByb3ZpZGVzIGFuIEFQSSB0byBzZXQgaW5kaXZpZHVhbCBvcHRpb25zIGFuZCBkZWZpbmUgY2FsbEJhY2sgbWV0aG9kcyBmb3IgdmFyaW91cyB1cGxvYWQgZXZlbnRzLgoqICoqTXVsdGlwYXJ0IGFuZCBmaWxlIGNvbnRlbnRzIHN0cmVhbSB1cGxvYWRzOioqICAKICBGaWxlcyBjYW4gYmUgdXBsb2FkZWQgYXMgc3RhbmRhcmQgIm11bHRpcGFydC9mb3JtLWRhdGEiIG9yIGZpbGUgY29udGVudHMgc3RyZWFtIChIVFRQIFBVVCBmaWxlIHVwbG9hZCkuCiogKipDb21wYXRpYmxlIHdpdGggYW55IHNlcnZlci1zaWRlIGFwcGxpY2F0aW9uIHBsYXRmb3JtOioqICAKICBXb3JrcyB3aXRoIGFueSBzZXJ2ZXItc2lkZSBwbGF0Zm9ybSAoUEhQLCBQeXRob24sIFJ1Ynkgb24gUmFpbHMsIEphdmEsIE5vZGUuanMsIEdvIGV0Yy4pIHRoYXQgc3VwcG9ydHMgc3RhbmRhcmQgSFRNTCBmb3JtIGZpbGUgdXBsb2Fkcy4KCiMjIFJlcXVpcmVtZW50cwoqIFtqUXVlcnldKGh0dHA6Ly9qcXVlcnkuY29tLykgdi4gMS42KwoqIFtqUXVlcnkgVUkgd2lkZ2V0IGZhY3RvcnldKGh0dHA6Ly93aWtpLmpxdWVyeXVpLmNvbS93L3BhZ2UvMTIxMzgxMzUvV2lkZ2V0JTIwZmFjdG9yeSkgdi4gMS44KwoqIFtqUXVlcnkgSWZyYW1lIFRyYW5zcG9ydCBwbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9ibG9iL21hc3Rlci9qcXVlcnkuaWZyYW1lLXRyYW5zcG9ydC5qcykgKGluY2x1ZGVkKQoqIFtKYXZhU2NyaXB0IFRlbXBsYXRlcyBlbmdpbmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL0phdmFTY3JpcHQtVGVtcGxhdGVzKSB2LiAyLjEuMCsgKG9wdGlvbmFsKQoqIFtKYXZhU2NyaXB0IExvYWQgSW1hZ2UgZnVuY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL0phdmFTY3JpcHQtTG9hZC1JbWFnZSkgdi4gMS4xLjYrIChvcHRpb25hbCkKKiBbSmF2YVNjcmlwdCBDYW52YXMgdG8gQmxvYiBmdW5jdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvSmF2YVNjcmlwdC1DYW52YXMtdG8tQmxvYikgdi4gMi4wLjArIChvcHRpb25hbCkKKiBbQm9vdHN0cmFwIENTUyBUb29sa2l0XShodHRwczovL2dpdGh1Yi5jb20vdHdpdHRlci9ib290c3RyYXAvKSB2LiAyLjArIChvcHRpb25hbCkKClRoZSBqUXVlcnkgVUkgd2lkZ2V0IGZhY3RvcnkgaXMgYSByZXF1aXJlbWVudCBmb3IgdGhlIGJhc2ljIEZpbGUgVXBsb2FkIHBsdWdpbiwgYnV0IHZlcnkgbGlnaHR3ZWlnaHQgd2l0aG91dCBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiAgClRoZSBqUXVlcnkgSWZyYW1lIFRyYW5zcG9ydCBpcyByZXF1aXJlZCBmb3IgW2Jyb3dzZXJzIHdpdGhvdXQgWEhSIGZpbGUgdXBsb2FkIHN1cHBvcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC93aWtpL0Jyb3dzZXItc3VwcG9ydCkuICAKVGhlIFVJIHZlcnNpb24gb2YgdGhlIEZpbGUgVXBsb2FkIHBsdWdpbiBhbHNvIHJlcXVpcmVzIHRoZSBKYXZhU2NyaXB0IFRlbXBsYXRlcyBlbmdpbmUgYXMgd2VsbCBhcyB0aGUgSmF2YVNjcmlwdCBMb2FkIEltYWdlIGFuZCBKYXZhU2NyaXB0IENhbnZhcyB0byBCbG9iIGZ1bmN0aW9ucyAoZm9yIHRoZSBpbWFnZSBwcmV2aWV3cyBhbmQgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSkuIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgbWFya2VkIGFzIG9wdGlvbmFsLCBhcyB0aGUgYmFzaWMgRmlsZSBVcGxvYWQgcGx1Z2luIGNhbiBiZSB1c2VkIHdpdGhvdXQgdGhlbSBhbmQgdGhlIFVJIHZlcnNpb24gb2YgdGhlIHBsdWdpbiBjYW4gYmUgZXh0ZW5kZWQgdG8gb3ZlcnJpZGUgdGhlc2UgZGVwZW5kZW5jaWVzIHdpdGggYWx0ZXJuYXRpdmUgc29sdXRpb25zLgoKVGhlIFVzZXIgSW50ZXJmYWNlIGlzIGJ1aWx0IHdpdGggVHdpdHRlcidzIFtCb290c3RyYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS90d2l0dGVyL2Jvb3RzdHJhcC8pIFRvb2xraXQuIFRoaXMgZW5hYmxlcyBhIENTUyBiYXNlZCwgcmVzcG9uc2l2ZSBsYXlvdXQgYW5kIGZhbmN5IHRyYW5zaXRpb24gZWZmZWN0cyBvbiBtb2Rlcm4gYnJvd3NlcnMuIFRoZSBkZW1vIGFsc28gaW5jbHVkZXMgdGhlIFtCb290c3RyYXAgSW1hZ2UgR2FsbGVyeSBQbHVnaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL0Jvb3RzdHJhcC1JbWFnZS1HYWxsZXJ5KS4gQm90aCBvZiB0aGVzZSBjb21wb25lbnRzIGFyZSBvcHRpb25hbCBhbmQgbm90IHJlcXVpcmVkLgoKVGhlIHJlcG9zaXRvcnkgYWxzbyBpbmNsdWRlcyB0aGUgW2pRdWVyeSBYRG9tYWluUmVxdWVzdCBUcmFuc3BvcnQgcGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvYmxvYi9tYXN0ZXIvanMvY29ycy9qcXVlcnkueGRyLXRyYW5zcG9ydC5qcyksIHdoaWNoIGVuYWJsZXMgQ3Jvc3MtZG9tYWluIEFKQVggcmVxdWVzdHMgKEdFVCBhbmQgUE9TVCBvbmx5KSBpbiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIgPj0gOC4gSG93ZXZlciwgdGhlIFhEb21haW5SZXF1ZXN0IG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgZmlsZSB1cGxvYWRzIGFuZCB0aGUgcGx1Z2luIGlzIG9ubHkgdXNlZCBieSB0aGUgW0RlbW9dKGh0dHA6Ly9ibHVlaW1wLmdpdGh1Yi5jb20valF1ZXJ5LUZpbGUtVXBsb2FkLykgZm9yIENyb3NzLWRvbWFpbiByZXF1ZXN0cyB0byBkZWxldGUgdXBsb2FkZWQgZmlsZXMgZnJvbSB0aGUgZGVtbyBmaWxlIHVwbG9hZCBzZXJ2aWNlLgoKW0Nyb3NzLWRvbWFpbiBGaWxlIFVwbG9hZHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC93aWtpL0Nyb3NzLWRvbWFpbi11cGxvYWRzKSB1c2luZyB0aGUgW0lmcmFtZSBUcmFuc3BvcnQgcGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvYmxvYi9tYXN0ZXIvanMvanF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMpIHJlcXVpcmUgYSByZWRpcmVjdCBiYWNrIHRvIHRoZSBvcmlnaW4gc2VydmVyIHRvIHJldHJpZXZlIHRoZSB1cGxvYWQgcmVzdWx0cy4gVGhlIFtleGFtcGxlIGltcGxlbWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvYmxvYi9tYXN0ZXIvanMvbWFpbi5qcykgbWFrZXMgdXNlIG9mIFtyZXN1bHQuaHRtbF0oaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL2Jsb2IvbWFzdGVyL2NvcnMvcmVzdWx0Lmh0bWwpIGFzIGEgc3RhdGljIHJlZGlyZWN0IHBhZ2UgZm9yIHRoZSBvcmlnaW4gc2VydmVyLgoKIyMgQnJvd3NlciBTdXBwb3J0ICh0ZXN0ZWQgdmVyc2lvbnMpCiogR29vZ2xlIENocm9tZSAtIDcuMCsKKiBBcHBsZSBTYWZhcmkgLSA0LjArCiogTW96aWxsYSBGaXJlZm94IC0gMy4wKwoqIE9wZXJhIC0gMTAuMCsKKiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIgNi4wKwoKRHJhZyAmIERyb3AgaXMgb25seSBzdXBwb3J0ZWQgb24gR29vZ2xlIENocm9tZSwgRmlyZWZveCA0LjArIGFuZCBTYWZhcmkgNS4wKy4gIApNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIgaGFzIG5vIHN1cHBvcnQgZm9yIG11bHRpcGxlIGZpbGUgc2VsZWN0aW9uIG9yIHVwbG9hZCBwcm9ncmVzcy4gIApbRXh0ZW5kZWQgYnJvd3NlciBzdXBwb3J0IGluZm9ybWF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvd2lraS9Ccm93c2VyLXN1cHBvcnQpLgoKIyMgTGljZW5zZQpSZWxlYXNlZCB1bmRlciB0aGUgW01JVCBsaWNlbnNlXShodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCkuCg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/server/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/server/php/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/server/php/files/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/server/php/files/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Rm9yY2VUeXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KPEZpbGVzTWF0Y2ggIig/aSlcLihnaWZ8anBlP2d8cG5nKSQiPg0KICBGb3JjZVR5cGUgbm9uZQ0KPC9GaWxlc01hdGNoPg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/server/php/index.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBQSFAgRXhhbXBsZSA1LjcKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCmVycm9yX3JlcG9ydGluZyhFX0FMTCB8IEVfU1RSSUNUKTsKCnJlcXVpcmUoJ3VwbG9hZC5jbGFzcy5waHAnKTsKcmVxdWlyZV9vbmNlKCcuLi8uLi8uLi9saWIvaW5jLk15RmluZGVyLnBocCcpOwoKJHVwbG9hZF9oYW5kbGVyID0gbmV3IENtc1VwbG9hZEhhbmRsZXIoKTsKLy8kdXBsb2FkX2hhbmRsZXIgPSBuZXcgVXBsb2FkSGFuZGxlcigpOwoKCmhlYWRlcignUHJhZ21hOiBuby1jYWNoZScpOwpoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlJyk7CmhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOyBmaWxlbmFtZT0iZmlsZXMuanNvbiInKTsKaGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyk7CmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOiAqJyk7CmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kczogT1BUSU9OUywgSEVBRCwgR0VULCBQT1NULCBQVVQsIERFTEVURScpOwpoZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnM6IFgtRmlsZS1OYW1lLCBYLUZpbGUtVHlwZSwgWC1GaWxlLVNpemUnKTsKCnN3aXRjaCAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10pIHsKICAgIGNhc2UgJ09QVElPTlMnOgogICAgICAgIGJyZWFrOwogICAgY2FzZSAnSEVBRCc6CiAgICBjYXNlICdHRVQnOgogICAgICAgICR1cGxvYWRfaGFuZGxlci0+Z2V0KCk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICdQT1NUJzoKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydfbWV0aG9kJ10pICYmICRfUkVRVUVTVFsnX21ldGhvZCddID09PSAnREVMRVRFJykgewogICAgICAgICAgICAkdXBsb2FkX2hhbmRsZXItPmRlbGV0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR1cGxvYWRfaGFuZGxlci0+cG9zdCgpOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgIGNhc2UgJ0RFTEVURSc6CiAgICAgICAgJHVwbG9hZF9oYW5kbGVyLT5kZWxldGUoKTsKICAgICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgaGVhZGVyKCdIVFRQLzEuMSA0MDUgTWV0aG9kIE5vdCBBbGxvd2VkJyk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/jqfu/server/php/thumbnails/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqfu/server/php/thumbnails/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/jqfu/server/php/upload.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKKiBqUXVlcnkgRmlsZSBVcGxvYWQgUGx1Z2luIFBIUCBDbGFzcyA1LjExLjIKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCmNsYXNzIFVwbG9hZEhhbmRsZXIKewogICAgcHJvdGVjdGVkICRvcHRpb25zOwoKICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcHRpb25zPW51bGwpIHsKICAgICAgICAkdGhpcy0+b3B0aW9ucyA9IGFycmF5KAogICAgICAgICAgICAnc2NyaXB0X3VybCcgPT4gJHRoaXMtPmdldEZ1bGxVcmwoKS4nLycsCiAgICAgICAgICAgICd1cGxvYWRfZGlyJyA9PiBkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSkuJy9maWxlcy8nLAogICAgICAgICAgICAndXBsb2FkX3VybCcgPT4gJHRoaXMtPmdldEZ1bGxVcmwoKS4nL2ZpbGVzLycsCiAgICAgICAgICAgICdwYXJhbV9uYW1lJyA9PiAnZmlsZXMnLAogICAgICAgICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gJ1BPU1QnLCBpZiB5b3VyIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0CiAgICAgICAgICAgIC8vIERFTEVURSByZXF1ZXN0cy4gVGhpcyBpcyBhIHBhcmFtZXRlciBzZW50IHRvIHRoZSBjbGllbnQ6CiAgICAgICAgICAgICdkZWxldGVfdHlwZScgPT4gJ0RFTEVURScsCiAgICAgICAgICAgIC8vIFRoZSBwaHAuaW5pIHNldHRpbmdzIHVwbG9hZF9tYXhfZmlsZXNpemUgYW5kIHBvc3RfbWF4X3NpemUKICAgICAgICAgICAgLy8gdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGZvbGxvd2luZyBtYXhfZmlsZV9zaXplIHNldHRpbmc6CiAgICAgICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiBudWxsLAogICAgICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gMSwKICAgICAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnLy4rJC9pJywKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGZpbGVzIGZvciB0aGUgdXBsb2FkIGRpcmVjdG9yeToKICAgICAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+IG51bGwsCiAgICAgICAgICAgIC8vIEltYWdlIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zOgogICAgICAgICAgICAnbWF4X3dpZHRoJyA9PiBudWxsLAogICAgICAgICAgICAnbWF4X2hlaWdodCcgPT4gbnVsbCwKICAgICAgICAgICAgJ21pbl93aWR0aCcgPT4gMSwKICAgICAgICAgICAgJ21pbl9oZWlnaHQnID0+IDEsCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBmYWxzZSB0byBlbmFibGUgcmVzdW1hYmxlIHVwbG9hZHM6CiAgICAgICAgICAgICdkaXNjYXJkX2Fib3J0ZWRfdXBsb2FkcycgPT4gdHJ1ZSwKICAgICAgICAgICAgLy8gU2V0IHRvIHRydWUgdG8gcm90YXRlIGltYWdlcyBiYXNlZCBvbiBFWElGIG1ldGEgZGF0YSwgaWYgYXZhaWxhYmxlOgogICAgICAgICAgICAnb3JpZW50X2ltYWdlJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2ltYWdlX3ZlcnNpb25zJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgIC8vIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIHZlcnNpb24gdG8gcmVzdHJpY3QgdGhlIHNpemUgb2YKICAgICAgICAgICAgICAgIC8vIHVwbG9hZGVkIGltYWdlcy4gWW91IGNhbiBhbHNvIGFkZCBhZGRpdGlvbmFsIHZlcnNpb25zIHdpdGgKICAgICAgICAgICAgICAgIC8vIHRoZWlyIG93biB1cGxvYWQgZGlyZWN0b3JpZXM6CiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgJ2xhcmdlJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndXBsb2FkX2RpcicgPT4gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pLicvZmlsZXMvJywKICAgICAgICAgICAgICAgICAgICAndXBsb2FkX3VybCcgPT4gJHRoaXMtPmdldEZ1bGxVcmwoKS4nL2ZpbGVzLycsCiAgICAgICAgICAgICAgICAgICAgJ21heF93aWR0aCcgPT4gMTkyMCwKICAgICAgICAgICAgICAgICAgICAnbWF4X2hlaWdodCcgPT4gMTIwMCwKICAgICAgICAgICAgICAgICAgICAnanBlZ19xdWFsaXR5JyA9PiA5NQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAndGh1bWJuYWlsJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndXBsb2FkX2RpcicgPT4gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pLicvdGh1bWJuYWlscy8nLAogICAgICAgICAgICAgICAgICAgICd1cGxvYWRfdXJsJyA9PiAkdGhpcy0+Z2V0RnVsbFVybCgpLicvdGh1bWJuYWlscy8nLAogICAgICAgICAgICAgICAgICAgICdtYXhfd2lkdGgnID0+IDgwLAogICAgICAgICAgICAgICAgICAgICdtYXhfaGVpZ2h0JyA9PiA4MAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgKTsKICAgICAgICBpZiAoJG9wdGlvbnMpIHsKCQkKCQkJLy9TUEVDSUFMIENNU01BREVTSU1QTEUgRk9SIFBIUCA1LjIueAoJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdhcnJheV9yZXBsYWNlX3JlY3Vyc2l2ZScpKSB7CgkJCQkkdGhpcy0+b3B0aW9ucyA9IGFycmF5X3JlcGxhY2VfcmVjdXJzaXZlKCR0aGlzLT5vcHRpb25zLCAkb3B0aW9ucyk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+b3B0aW9ucyA9ICR0aGlzLT5hcnJheV9qb2luKCR0aGlzLT5vcHRpb25zLCAkb3B0aW9ucyk7CgkJCX0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRGdWxsVXJsKCkgewogICAgICAgICRodHRwcyA9ICFlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgJF9TRVJWRVJbJ0hUVFBTJ10gIT09ICdvZmYnOwogICAgICAgcmV0dXJuCiAgICAgKCRodHRwcyA/ICdodHRwczovLycgOiAnaHR0cDovLycpLgogICAgICghZW1wdHkoJF9TRVJWRVJbJ1JFTU9URV9VU0VSJ10pID8gJF9TRVJWRVJbJ1JFTU9URV9VU0VSJ10uJ0AnIDogJycpLgogICAgIChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddLgogICAgICgkaHR0cHMgJiYgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10gPT09IDQ0MyB8fAogICAgICRfU0VSVkVSWydTRVJWRVJfUE9SVCddID09PSA4MCA/ICcnIDogJzonLiRfU0VSVkVSWydTRVJWRVJfUE9SVCddKSkpLgogICAgIHN1YnN0cigkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSwwLCBzdHJycG9zKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddLCAnLycpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0X2ZpbGVfZGVsZXRlX3VybCgkZmlsZSkgewogICAgICAgICRmaWxlLT5kZWxldGVfdXJsID0gJHRoaXMtPm9wdGlvbnNbJ3NjcmlwdF91cmwnXQogICAgICAgICAgICAuJz9maWxlPScucmF3dXJsZW5jb2RlKCRmaWxlLT5uYW1lKTsKICAgICAgICAkZmlsZS0+ZGVsZXRlX3R5cGUgPSAkdGhpcy0+b3B0aW9uc1snZGVsZXRlX3R5cGUnXTsKICAgICAgICBpZiAoJGZpbGUtPmRlbGV0ZV90eXBlICE9PSAnREVMRVRFJykgewogICAgICAgICAgICAkZmlsZS0+ZGVsZXRlX3VybCAuPSAnJl9tZXRob2Q9REVMRVRFJzsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9maWxlX29iamVjdCgkZmlsZV9uYW1lKSB7CiAgICAgICAgJGZpbGVfcGF0aCA9ICR0aGlzLT5vcHRpb25zWyd1cGxvYWRfZGlyJ10uJGZpbGVfbmFtZTsKICAgICAgICBpZiAoaXNfZmlsZSgkZmlsZV9wYXRoKSAmJiAkZmlsZV9uYW1lWzBdICE9PSAnLicpIHsKICAgICAgICAgICAgJGZpbGUgPSBuZXcgc3RkQ2xhc3MoKTsKICAgICAgICAgICAgJGZpbGUtPm5hbWUgPSAkZmlsZV9uYW1lOwogICAgICAgICAgICAkZmlsZS0+c2l6ZSA9IGZpbGVzaXplKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAkZmlsZS0+dXJsID0gJHRoaXMtPm9wdGlvbnNbJ3VwbG9hZF91cmwnXS5yYXd1cmxlbmNvZGUoJGZpbGUtPm5hbWUpOwogICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT5vcHRpb25zWydpbWFnZV92ZXJzaW9ucyddIGFzICR2ZXJzaW9uID0+ICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfZmlsZSgkb3B0aW9uc1sndXBsb2FkX2RpciddLiRmaWxlX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGUtPnskdmVyc2lvbi4nX3VybCd9ID0gJG9wdGlvbnNbJ3VwbG9hZF91cmwnXQogICAgICAgICAgICAgICAgICAgICAgICAucmF3dXJsZW5jb2RlKCRmaWxlLT5uYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+c2V0X2ZpbGVfZGVsZXRlX3VybCgkZmlsZSk7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9maWxlX29iamVjdHMoKSB7CiAgICAgICAgcmV0dXJuIGFycmF5X3ZhbHVlcyhhcnJheV9maWx0ZXIoYXJyYXlfbWFwKAogICAgICAgICAgICBhcnJheSgkdGhpcywgJ2dldF9maWxlX29iamVjdCcpLAogICAgICAgICAgICBzY2FuZGlyKCR0aGlzLT5vcHRpb25zWyd1cGxvYWRfZGlyJ10pCiAgICAgICAgKSkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVfc2NhbGVkX2ltYWdlKCRmaWxlX25hbWUsICRvcHRpb25zKSB7CiAgICAgICAgJGZpbGVfcGF0aCA9ICR0aGlzLT5vcHRpb25zWyd1cGxvYWRfZGlyJ10uJGZpbGVfbmFtZTsKICAgICAgICAkbmV3X2ZpbGVfcGF0aCA9ICRvcHRpb25zWyd1cGxvYWRfZGlyJ10uJGZpbGVfbmFtZTsKICAgICAgICBsaXN0KCRpbWdfd2lkdGgsICRpbWdfaGVpZ2h0KSA9IEBnZXRpbWFnZXNpemUoJGZpbGVfcGF0aCk7CiAgICAgICAgaWYgKCEkaW1nX3dpZHRoIHx8ICEkaW1nX2hlaWdodCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRzY2FsZSA9IG1pbigKICAgICAgICAgICAgJG9wdGlvbnNbJ21heF93aWR0aCddIC8gJGltZ193aWR0aCwKICAgICAgICAgICAgJG9wdGlvbnNbJ21heF9oZWlnaHQnXSAvICRpbWdfaGVpZ2h0CiAgICAgICAgKTsKICAgICAgICBpZiAoJHNjYWxlID49IDEpIHsKICAgICAgICAgICAgaWYgKCRmaWxlX3BhdGggIT09ICRuZXdfZmlsZV9wYXRoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY29weSgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgICRuZXdfd2lkdGggPSAkaW1nX3dpZHRoICogJHNjYWxlOwogICAgICAgICRuZXdfaGVpZ2h0ID0gJGltZ19oZWlnaHQgKiAkc2NhbGU7CiAgICAgICAgJG5ld19pbWcgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG5ld193aWR0aCwgJG5ld19oZWlnaHQpOwogICAgICAgIHN3aXRjaCAoc3RydG9sb3dlcihzdWJzdHIoc3RycmNocigkZmlsZV9uYW1lLCAnLicpLCAxKSkpIHsKICAgICAgICAgICAgY2FzZSAnanBnJzoKICAgICAgICAgICAgY2FzZSAnanBlZyc6CiAgICAgICAgICAgICAgICAkc3JjX2ltZyA9IEBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgJHdyaXRlX2ltYWdlID0gJ2ltYWdlanBlZyc7CiAgICAgICAgICAgICAgICAkaW1hZ2VfcXVhbGl0eSA9IGlzc2V0KCRvcHRpb25zWydqcGVnX3F1YWxpdHknXSkgPwogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydqcGVnX3F1YWxpdHknXSA6IDc1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2dpZic6CiAgICAgICAgICAgICAgICBAaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCBAaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAwLCAwLCAwKSk7CiAgICAgICAgICAgICAgICAkc3JjX2ltZyA9IEBpbWFnZWNyZWF0ZWZyb21naWYoJGZpbGVfcGF0aCk7CiAgICAgICAgICAgICAgICAkd3JpdGVfaW1hZ2UgPSAnaW1hZ2VnaWYnOwogICAgICAgICAgICAgICAgJGltYWdlX3F1YWxpdHkgPSBudWxsOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3BuZyc6CiAgICAgICAgICAgICAgICBAaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRuZXdfaW1nLCBAaW1hZ2Vjb2xvcmFsbG9jYXRlKCRuZXdfaW1nLCAwLCAwLCAwKSk7CiAgICAgICAgICAgICAgICBAaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CiAgICAgICAgICAgICAgICBAaW1hZ2VzYXZlYWxwaGEoJG5ld19pbWcsIHRydWUpOwogICAgICAgICAgICAgICAgJHNyY19pbWcgPSBAaW1hZ2VjcmVhdGVmcm9tcG5nKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgJHdyaXRlX2ltYWdlID0gJ2ltYWdlcG5nJzsKICAgICAgICAgICAgICAgICRpbWFnZV9xdWFsaXR5ID0gaXNzZXQoJG9wdGlvbnNbJ3BuZ19xdWFsaXR5J10pID8KICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1sncG5nX3F1YWxpdHknXSA6IDk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRzcmNfaW1nID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgJHN1Y2Nlc3MgPSAkc3JjX2ltZyAmJiBAaW1hZ2Vjb3B5cmVzYW1wbGVkKAogICAgICAgICAgICAkbmV3X2ltZywKICAgICAgICAgICAgJHNyY19pbWcsCiAgICAgICAgICAgIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICRuZXdfd2lkdGgsCiAgICAgICAgICAgICRuZXdfaGVpZ2h0LAogICAgICAgICAgICAkaW1nX3dpZHRoLAogICAgICAgICAgICAkaW1nX2hlaWdodAogICAgICAgICkgJiYgJHdyaXRlX2ltYWdlKCRuZXdfaW1nLCAkbmV3X2ZpbGVfcGF0aCwgJGltYWdlX3F1YWxpdHkpOwogICAgICAgIC8vIEZyZWUgdXAgbWVtb3J5IChpbWFnZWRlc3Ryb3kgZG9lcyBub3QgZGVsZXRlIGZpbGVzKToKICAgICAgICBAaW1hZ2VkZXN0cm95KCRzcmNfaW1nKTsKICAgICAgICBAaW1hZ2VkZXN0cm95KCRuZXdfaW1nKTsKICAgICAgICByZXR1cm4gJHN1Y2Nlc3M7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZhbGlkYXRlKCR1cGxvYWRlZF9maWxlLCAkZmlsZSwgJGVycm9yLCAkaW5kZXgpIHsKICAgICAgICBpZiAoJGVycm9yKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICRlcnJvcjsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoISRmaWxlLT5uYW1lKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICdtaXNzaW5nRmlsZU5hbWUnOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICghcHJlZ19tYXRjaCgkdGhpcy0+b3B0aW9uc1snYWNjZXB0X2ZpbGVfdHlwZXMnXSwgJGZpbGUtPm5hbWUpKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICdhY2NlcHRGaWxlVHlwZXMnOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkdXBsb2FkZWRfZmlsZSAmJiBpc191cGxvYWRlZF9maWxlKCR1cGxvYWRlZF9maWxlKSkgewogICAgICAgICAgICAkZmlsZV9zaXplID0gZmlsZXNpemUoJHVwbG9hZGVkX2ZpbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRmaWxlX3NpemUgPSAkX1NFUlZFUlsnQ09OVEVOVF9MRU5HVEgnXTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydtYXhfZmlsZV9zaXplJ10gJiYgKAogICAgICAgICAgICAgICAgJGZpbGVfc2l6ZSA+ICR0aGlzLT5vcHRpb25zWydtYXhfZmlsZV9zaXplJ10gfHwKICAgICAgICAgICAgICAgICRmaWxlLT5zaXplID4gJHRoaXMtPm9wdGlvbnNbJ21heF9maWxlX3NpemUnXSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICdtYXhGaWxlU2l6ZSc7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydtaW5fZmlsZV9zaXplJ10gJiYKICAgICAgICAgICAgJGZpbGVfc2l6ZSA8ICR0aGlzLT5vcHRpb25zWydtaW5fZmlsZV9zaXplJ10pIHsKICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJ21pbkZpbGVTaXplJzsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoaXNfaW50KCR0aGlzLT5vcHRpb25zWydtYXhfbnVtYmVyX29mX2ZpbGVzJ10pICYmICgKICAgICAgICAgICAgICAgIGNvdW50KCR0aGlzLT5nZXRfZmlsZV9vYmplY3RzKCkpID49ICR0aGlzLT5vcHRpb25zWydtYXhfbnVtYmVyX29mX2ZpbGVzJ10pCiAgICAgICAgICAgICkgewogICAgICAgICAgICAkZmlsZS0+ZXJyb3IgPSAnbWF4TnVtYmVyT2ZGaWxlcyc7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgbGlzdCgkaW1nX3dpZHRoLCAkaW1nX2hlaWdodCkgPSBAZ2V0aW1hZ2VzaXplKCR1cGxvYWRlZF9maWxlKTsKICAgICAgICBpZiAoaXNfaW50KCRpbWdfd2lkdGgpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+b3B0aW9uc1snbWF4X3dpZHRoJ10gJiYgJGltZ193aWR0aCA+ICR0aGlzLT5vcHRpb25zWydtYXhfd2lkdGgnXSB8fAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5vcHRpb25zWydtYXhfaGVpZ2h0J10gJiYgJGltZ19oZWlnaHQgPiAkdGhpcy0+b3B0aW9uc1snbWF4X2hlaWdodCddKSB7CiAgICAgICAgICAgICAgICAkZmlsZS0+ZXJyb3IgPSAnbWF4UmVzb2x1dGlvbic7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydtaW5fd2lkdGgnXSAmJiAkaW1nX3dpZHRoIDwgJHRoaXMtPm9wdGlvbnNbJ21pbl93aWR0aCddIHx8CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm9wdGlvbnNbJ21pbl9oZWlnaHQnXSAmJiAkaW1nX2hlaWdodCA8ICR0aGlzLT5vcHRpb25zWydtaW5faGVpZ2h0J10pIHsKICAgICAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICdtaW5SZXNvbHV0aW9uJzsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdXBjb3VudF9uYW1lX2NhbGxiYWNrKCRtYXRjaGVzKSB7CiAgICAgICAgJGluZGV4ID0gaXNzZXQoJG1hdGNoZXNbMV0pID8gaW50dmFsKCRtYXRjaGVzWzFdKSArIDEgOiAxOwogICAgICAgICRleHQgPSBpc3NldCgkbWF0Y2hlc1syXSkgPyAkbWF0Y2hlc1syXSA6ICcnOwogICAgICAgIHJldHVybiAnICgnLiRpbmRleC4nKScuJGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdXBjb3VudF9uYW1lKCRuYW1lKSB7CiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy8oPzooPzogXCgoW1xkXSspXCkpPyhcLlteLl0rKSk/JC8nLAogICAgICAgICAgICBhcnJheSgkdGhpcywgJ3VwY291bnRfbmFtZV9jYWxsYmFjaycpLAogICAgICAgICAgICAkbmFtZSwKICAgICAgICAgICAgMQogICAgICAgICk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRyaW1fZmlsZV9uYW1lKCRuYW1lLCAkdHlwZSwgJGluZGV4KSB7CiAgICAgICAgLy8gUmVtb3ZlIHBhdGggaW5mb3JtYXRpb24gYW5kIGRvdHMgYXJvdW5kIHRoZSBmaWxlbmFtZSwgdG8gcHJldmVudCB1cGxvYWRpbmcKICAgICAgICAvLyBpbnRvIGRpZmZlcmVudCBkaXJlY3RvcmllcyBvciByZXBsYWNpbmcgaGlkZGVuIHN5c3RlbSBmaWxlcy4KICAgICAgICAvLyBBbHNvIHJlbW92ZSBjb250cm9sIGNoYXJhY3RlcnMgYW5kIHNwYWNlcyAoXHgwMC4uXHgyMCkgYXJvdW5kIHRoZSBmaWxlbmFtZToKICAgICAgICAkZmlsZV9uYW1lID0gdHJpbShiYXNlbmFtZShzdHJpcHNsYXNoZXMoJG5hbWUpKSwgIi5ceDAwLi5ceDIwIik7CiAgICAgICAgLy8gQWRkIG1pc3NpbmcgZmlsZSBleHRlbnNpb24gZm9yIGtub3duIGltYWdlIHR5cGVzOgogICAgICAgIGlmIChzdHJwb3MoJGZpbGVfbmFtZSwgJy4nKSA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgcHJlZ19tYXRjaCgnL15pbWFnZVwvKGdpZnxqcGU/Z3xwbmcpLycsICR0eXBlLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgJGZpbGVfbmFtZSAuPSAnLicuJG1hdGNoZXNbMV07CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+b3B0aW9uc1snZGlzY2FyZF9hYm9ydGVkX3VwbG9hZHMnXSkgewogICAgICAgICAgICB3aGlsZShpc19maWxlKCR0aGlzLT5vcHRpb25zWyd1cGxvYWRfZGlyJ10uJGZpbGVfbmFtZSkpIHsKICAgICAgICAgICAgICAgICRmaWxlX25hbWUgPSAkdGhpcy0+dXBjb3VudF9uYW1lKCRmaWxlX25hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZmlsZV9uYW1lOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBoYW5kbGVfZm9ybV9kYXRhKCRmaWxlLCAkaW5kZXgpIHsKICAgICAgICAvLyBIYW5kbGUgZm9ybSBkYXRhLCBlLmcuICRfUkVRVUVTVFsnZGVzY3JpcHRpb24nXVskaW5kZXhdCiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9yaWVudF9pbWFnZSgkZmlsZV9wYXRoKSB7CiAgICAgIAkkZXhpZiA9IEBleGlmX3JlYWRfZGF0YSgkZmlsZV9wYXRoKTsKICAgICAgICBpZiAoJGV4aWYgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIAkkb3JpZW50YXRpb24gPSBpbnR2YWwoQCRleGlmWydPcmllbnRhdGlvbiddKTsKICAgICAgCWlmICghaW5fYXJyYXkoJG9yaWVudGF0aW9uLCBhcnJheSgzLCA2LCA4KSkpIHsgCiAgICAgIAkgICAgcmV0dXJuIGZhbHNlOwogICAgICAJfQogICAgICAJJGltYWdlID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJGZpbGVfcGF0aCk7CiAgICAgIAlzd2l0Y2ggKCRvcmllbnRhdGlvbikgewogICAgICAgIAkgIGNhc2UgMzoKICAgICAgICAgIAkgICAgJGltYWdlID0gQGltYWdlcm90YXRlKCRpbWFnZSwgMTgwLCAwKTsKICAgICAgICAgIAkgICAgYnJlYWs7CiAgICAgICAgCSAgY2FzZSA2OgogICAgICAgICAgCSAgICAkaW1hZ2UgPSBAaW1hZ2Vyb3RhdGUoJGltYWdlLCAyNzAsIDApOwogICAgICAgICAgCSAgICBicmVhazsKICAgICAgICAJICBjYXNlIDg6CiAgICAgICAgICAJICAgICRpbWFnZSA9IEBpbWFnZXJvdGF0ZSgkaW1hZ2UsIDkwLCAwKTsKICAgICAgICAgIAkgICAgYnJlYWs7CiAgICAgICAgICAJZGVmYXVsdDoKICAgICAgICAgIAkgICAgcmV0dXJuIGZhbHNlOwogICAgICAJfQogICAgICAJJHN1Y2Nlc3MgPSBpbWFnZWpwZWcoJGltYWdlLCAkZmlsZV9wYXRoKTsKICAgICAgCS8vIEZyZWUgdXAgbWVtb3J5IChpbWFnZWRlc3Ryb3kgZG9lcyBub3QgZGVsZXRlIGZpbGVzKToKICAgICAgCUBpbWFnZWRlc3Ryb3koJGltYWdlKTsKICAgICAgCXJldHVybiAkc3VjY2VzczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFuZGxlX2ZpbGVfdXBsb2FkKCR1cGxvYWRlZF9maWxlLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsICRpbmRleCA9IG51bGwpIHsKICAgICAgICAkZmlsZSA9IG5ldyBzdGRDbGFzcygpOwogICAgICAgICRmaWxlLT5uYW1lID0gJHRoaXMtPnRyaW1fZmlsZV9uYW1lKCRuYW1lLCAkdHlwZSwgJGluZGV4KTsKICAgICAgICAkZmlsZS0+c2l6ZSA9IGludHZhbCgkc2l6ZSk7CiAgICAgICAgJGZpbGUtPnR5cGUgPSAkdHlwZTsKICAgICAgICBpZiAoJHRoaXMtPnZhbGlkYXRlKCR1cGxvYWRlZF9maWxlLCAkZmlsZSwgJGVycm9yLCAkaW5kZXgpKSB7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVfZm9ybV9kYXRhKCRmaWxlLCAkaW5kZXgpOwogICAgICAgICAgICAkZmlsZV9wYXRoID0gJHRoaXMtPm9wdGlvbnNbJ3VwbG9hZF9kaXInXS4kZmlsZS0+bmFtZTsKICAgICAgICAgICAgJGFwcGVuZF9maWxlID0gISR0aGlzLT5vcHRpb25zWydkaXNjYXJkX2Fib3J0ZWRfdXBsb2FkcyddICYmCiAgICAgICAgICAgICAgICBpc19maWxlKCRmaWxlX3BhdGgpICYmICRmaWxlLT5zaXplID4gZmlsZXNpemUoJGZpbGVfcGF0aCk7CiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKCk7CiAgICAgICAgICAgIGlmICgkdXBsb2FkZWRfZmlsZSAmJiBpc191cGxvYWRlZF9maWxlKCR1cGxvYWRlZF9maWxlKSkgewogICAgICAgICAgICAgICAgLy8gbXVsdGlwYXJ0L2Zvcm1kYXRhIHVwbG9hZHMgKFBPU1QgbWV0aG9kIHVwbG9hZHMpCiAgICAgICAgICAgICAgICBpZiAoJGFwcGVuZF9maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcGVuKCR1cGxvYWRlZF9maWxlLCAncicpLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FQUEVORAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZWRfZmlsZSwgJGZpbGVfcGF0aCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBOb24tbXVsdGlwYXJ0IHVwbG9hZHMgKFBVVCBtZXRob2Qgc3VwcG9ydCkKICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAgICAgICAgICRmaWxlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgZm9wZW4oJ3BocDovL2lucHV0JywgJ3InKSwKICAgICAgICAgICAgICAgICAgICAkYXBwZW5kX2ZpbGUgPyBGSUxFX0FQUEVORCA6IDAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVfc2l6ZSA9IGZpbGVzaXplKCRmaWxlX3BhdGgpOwogICAgICAgICAgICBpZiAoJGZpbGVfc2l6ZSA9PT0gJGZpbGUtPnNpemUpIHsKICAgICAgICAgICAgCWlmICgkdGhpcy0+b3B0aW9uc1snb3JpZW50X2ltYWdlJ10pIHsKICAgICAgICAgICAgCQkkdGhpcy0+b3JpZW50X2ltYWdlKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgJGZpbGUtPnVybCA9ICR0aGlzLT5vcHRpb25zWyd1cGxvYWRfdXJsJ10ucmF3dXJsZW5jb2RlKCRmaWxlLT5uYW1lKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goJHRoaXMtPm9wdGlvbnNbJ2ltYWdlX3ZlcnNpb25zJ10gYXMgJHZlcnNpb24gPT4gJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmNyZWF0ZV9zY2FsZWRfaW1hZ2UoJGZpbGUtPm5hbWUsICRvcHRpb25zKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ3VwbG9hZF9kaXInXSAhPT0gJG9wdGlvbnNbJ3VwbG9hZF9kaXInXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUtPnskdmVyc2lvbi4nX3VybCd9ID0gJG9wdGlvbnNbJ3VwbG9hZF91cmwnXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yYXd1cmxlbmNvZGUoJGZpbGUtPm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJzdGF0Y2FjaGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX3NpemUgPSBmaWxlc2l6ZSgkZmlsZV9wYXRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICgkdGhpcy0+b3B0aW9uc1snZGlzY2FyZF9hYm9ydGVkX3VwbG9hZHMnXSkgewogICAgICAgICAgICAgICAgdW5saW5rKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJ2Fib3J0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZmlsZS0+c2l6ZSA9ICRmaWxlX3NpemU7CiAgICAgICAgICAgICR0aGlzLT5zZXRfZmlsZV9kZWxldGVfdXJsKCRmaWxlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgJGZpbGVfbmFtZSA9IGlzc2V0KCRfUkVRVUVTVFsnZmlsZSddKSA/CiAgICAgICAgICAgIGJhc2VuYW1lKHN0cmlwc2xhc2hlcygkX1JFUVVFU1RbJ2ZpbGUnXSkpIDogbnVsbDsKICAgICAgICBpZiAoJGZpbGVfbmFtZSkgewogICAgICAgICAgICAkaW5mbyA9ICR0aGlzLT5nZXRfZmlsZV9vYmplY3QoJGZpbGVfbmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGluZm8gPSAkdGhpcy0+Z2V0X2ZpbGVfb2JqZWN0cygpOwogICAgICAgIH0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vanNvbicpOwogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJGluZm8pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwb3N0KCkgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ19tZXRob2QnXSkgJiYgJF9SRVFVRVNUWydfbWV0aG9kJ10gPT09ICdERUxFVEUnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZGVsZXRlKCk7CiAgICAgICAgfQogICAgICAgICR1cGxvYWQgPSBpc3NldCgkX0ZJTEVTWyR0aGlzLT5vcHRpb25zWydwYXJhbV9uYW1lJ11dKSA/CiAgICAgICAgICAgICRfRklMRVNbJHRoaXMtPm9wdGlvbnNbJ3BhcmFtX25hbWUnXV0gOiBudWxsOwogICAgICAgICRpbmZvID0gYXJyYXkoKTsKICAgICAgICBpZiAoJHVwbG9hZCAmJiBpc19hcnJheSgkdXBsb2FkWyd0bXBfbmFtZSddKSkgewogICAgICAgICAgICAvLyBwYXJhbV9uYW1lIGlzIGFuIGFycmF5IGlkZW50aWZpZXIgbGlrZSAiZmlsZXNbXSIsCiAgICAgICAgICAgIC8vICRfRklMRVMgaXMgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheToKICAgICAgICAgICAgZm9yZWFjaCAoJHVwbG9hZFsndG1wX25hbWUnXSBhcyAkaW5kZXggPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkaW5mb1tdID0gJHRoaXMtPmhhbmRsZV9maWxlX3VwbG9hZCgKICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWyd0bXBfbmFtZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9TRVJWRVJbJ0hUVFBfWF9GSUxFX05BTUUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfTkFNRSddIDogJHVwbG9hZFsnbmFtZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9TRVJWRVJbJ0hUVFBfWF9GSUxFX1NJWkUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfU0laRSddIDogJHVwbG9hZFsnc2l6ZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9TRVJWRVJbJ0hUVFBfWF9GSUxFX1RZUEUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfVFlQRSddIDogJHVwbG9hZFsndHlwZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgJHVwbG9hZFsnZXJyb3InXVskaW5kZXhdLAogICAgICAgICAgICAgICAgICAgICRpbmRleAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkdXBsb2FkIHx8IGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRklMRV9OQU1FJ10pKSB7CiAgICAgICAgICAgIC8vIHBhcmFtX25hbWUgaXMgYSBzaW5nbGUgb2JqZWN0IGlkZW50aWZpZXIgbGlrZSAiZmlsZSIsCiAgICAgICAgICAgIC8vICRfRklMRVMgaXMgYSBvbmUtZGltZW5zaW9uYWwgYXJyYXk6CiAgICAgICAgICAgICRpbmZvW10gPSAkdGhpcy0+aGFuZGxlX2ZpbGVfdXBsb2FkKAogICAgICAgICAgICAgICAgaXNzZXQoJHVwbG9hZFsndG1wX25hbWUnXSkgPyAkdXBsb2FkWyd0bXBfbmFtZSddIDogbnVsbCwKICAgICAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRklMRV9OQU1FJ10pID8KICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfTkFNRSddIDogKGlzc2V0KCR1cGxvYWRbJ25hbWUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWyduYW1lJ10gOiBudWxsKSwKICAgICAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRklMRV9TSVpFJ10pID8KICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfU0laRSddIDogKGlzc2V0KCR1cGxvYWRbJ3NpemUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWydzaXplJ10gOiBudWxsKSwKICAgICAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRklMRV9UWVBFJ10pID8KICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZJTEVfVFlQRSddIDogKGlzc2V0KCR1cGxvYWRbJ3R5cGUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWyd0eXBlJ10gOiBudWxsKSwKICAgICAgICAgICAgICAgIGlzc2V0KCR1cGxvYWRbJ2Vycm9yJ10pID8gJHVwbG9hZFsnZXJyb3InXSA6IG51bGwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaGVhZGVyKCdWYXJ5OiBBY2NlcHQnKTsKICAgICAgICAkanNvbiA9IGpzb25fZW5jb2RlKCRpbmZvKTsKICAgICAgICAkcmVkaXJlY3QgPSBpc3NldCgkX1JFUVVFU1RbJ3JlZGlyZWN0J10pID8KICAgICAgICAgICAgc3RyaXBzbGFzaGVzKCRfUkVRVUVTVFsncmVkaXJlY3QnXSkgOiBudWxsOwogICAgICAgIGlmICgkcmVkaXJlY3QpIHsKICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJy5zcHJpbnRmKCRyZWRpcmVjdCwgcmF3dXJsZW5jb2RlKCRqc29uKSkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSkgJiYKICAgICAgICAgICAgKHN0cnBvcygkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSwgJ2FwcGxpY2F0aW9uL2pzb24nKSAhPT0gZmFsc2UpKSB7CiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvcGxhaW4nKTsKICAgICAgICB9CiAgICAgICAgZWNobyAkanNvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkgewogICAgICAgICRmaWxlX25hbWUgPSBpc3NldCgkX1JFUVVFU1RbJ2ZpbGUnXSkgPwogICAgICAgICAgICBiYXNlbmFtZShzdHJpcHNsYXNoZXMoJF9SRVFVRVNUWydmaWxlJ10pKSA6IG51bGw7CiAgICAgICAgJGZpbGVfcGF0aCA9ICR0aGlzLT5vcHRpb25zWyd1cGxvYWRfZGlyJ10uJGZpbGVfbmFtZTsKICAgICAgICAkc3VjY2VzcyA9IGlzX2ZpbGUoJGZpbGVfcGF0aCkgJiYgJGZpbGVfbmFtZVswXSAhPT0gJy4nICYmIHVubGluaygkZmlsZV9wYXRoKTsKICAgICAgICBpZiAoJHN1Y2Nlc3MpIHsKICAgICAgICAgICAgZm9yZWFjaCgkdGhpcy0+b3B0aW9uc1snaW1hZ2VfdmVyc2lvbnMnXSBhcyAkdmVyc2lvbiA9PiAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgJGZpbGUgPSAkb3B0aW9uc1sndXBsb2FkX2RpciddLiRmaWxlX25hbWU7CiAgICAgICAgICAgICAgICBpZiAoaXNfZmlsZSgkZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9qc29uJyk7CiAgICAgICAgZWNobyBqc29uX2VuY29kZSgkc3VjY2Vzcyk7CiAgICB9CgkKCXByb3RlY3RlZCBmdW5jdGlvbiBhcnJheV9qb2luKCkKCXsKCQkkYXJyYXlzID0gZnVuY19nZXRfYXJncygpOwoJCSRvcmlnaW5hbCA9IGFycmF5X3NoaWZ0KCRhcnJheXMpOwoKCQlmb3JlYWNoICgkYXJyYXlzIGFzICRhcnJheSkgewoJCQlmb3JlYWNoICgkYXJyYXkgYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJCWlmIChpc19hcnJheSgkdmFsdWUpKSB7CgkJCQkJJG9yaWdpbmFsWyRrZXldID0gJHRoaXMtPmFycmF5X2pvaW4oJG9yaWdpbmFsWyRrZXldLCAkYXJyYXlbJGtleV0pOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJJG9yaWdpbmFsWyRrZXldID0gJHZhbHVlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiAkb3JpZ2luYWw7Cgl9IAoKfQo=]]></data>
	</file>
	<file>
	  <filename>/JQueryFU.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgpkZWZpbmUoIlRNUExfUFJFRklYX0RJU1BMQVkiICwgImRpc3BsYXkiICk7CmRlZmluZSgiREVGQVVMVF9ESVNQTEFZX1RNUExfUFJFRl9OQU1FIiwnY3VycmVudF8nLlRNUExfUFJFRklYX0RJU1BMQVkuJ190ZW1wbGF0ZScpOwoKY2xhc3MgSlF1ZXJ5RlUgZXh0ZW5kcyBDR0V4dGVuc2lvbnMKewoKICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogIH0KICAKICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ0pRdWVyeUZVJzsKICB9CgogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICdKUXVlcnlGaWxlVXBsb2FkZXIgYnkgQmVzcyc7CiAgfQogIAogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS4xLjAnOwogIH0KICAKICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgnQ0dFeHRlbnNpb25zJz0+JzEuMzcnKTsKICB9CiAKICBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKICB9CiAgCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICB7CiAgICByZXR1cm4gJ0tldmluIERhbmV6aXMgKGFrYSBCZXNzKSc7CiAgfQoKICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCiAgewogICAgcmV0dXJuICdjb250YWN0IGF0IGZ1cmllIHBvaW50IGJlJzsKICB9CiAgCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0KICAKICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQogIAogIGZ1bmN0aW9uIEhhc0FkbWluKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdleHRlbnNpb25zJzsKICB9CiAgCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KICAKICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgVGFnQ2xvdWQnKTsKICB9CiAgCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS4xMC4wIjsKICB9CiAgCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICB7CgkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4odHJ1ZSwgZmFsc2UpOwogICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjY2VwdF9maWxlX3R5cGVzJyxDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ251bWJlcicsQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtYXhfd2lkdGgnLENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbWF4X2hlaWdodCcsQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtaW5fd2lkdGgnLENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbWluX2hlaWdodCcsQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjbGVhbl9uYW1lJyxDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Rpcl9wYXRoJyxDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Rpcl91cmwnLENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVtcGxhdGUnLENMRUFOX1NUUklORyk7CiAgfQogIAogIAlmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQoJewoJICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdhY2NlcHRfZmlsZV90eXBlcycsICIvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pIiwgJHRoaXMtPkxhbmcoJ2hlbHBfYWNjZXB0X2ZpbGVfdHlwZXMnKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ251bWJlcicsIDk5OTk5LCAkdGhpcy0+bGFuZygnaGVscF9udW1iZXInKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21heF93aWR0aCcsIDAsICR0aGlzLT5sYW5nKCdoZWxwX21heF93aWR0aCcpKTsKCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbWF4X2hlaWdodCcsIDAsICR0aGlzLT5sYW5nKCdoZWxwX21heF9oZWlnaHQnKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21pbl93aWR0aCcsIDAsICR0aGlzLT5sYW5nKCdoZWxwX21pbl93aWR0aCcpKTsKCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbWluX2hlaWdodCcsIDAsICR0aGlzLT5sYW5nKCdoZWxwX21pbl9oZWlnaHQnKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NsZWFuX25hbWUnLCAidHJ1ZSIsICR0aGlzLT5sYW5nKCdoZWxwX2NsZWFuX25hbWUnKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2Rpcl9wYXRoJywgRElSRUNUT1JZX1NFUEFSQVRPUi4idXBsb2FkcyIuRElSRUNUT1JZX1NFUEFSQVRPUi4ianF1ZXJ5ZnUiLCAkdGhpcy0+bGFuZygnaGVscF9kaXJfcGF0aCcpKTsKCSAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGlyX3VybCcsICIvdXBsb2Fkcy9qcXVlcnlmdSIsICR0aGlzLT5sYW5nKCdoZWxwX2Rpcl91cmwnKSk7CgkgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3RlbXBsYXRlJywgJ2Z1bGwnLCAkdGhpcy0+bGFuZygnaGVscF90ZW1wbGF0ZScpKTsKCX0KICAKICAJZnVuY3Rpb24gQWxsb3dTbWFydHlDYWNoaW5nKCkKCXsKCSAgcmV0dXJuIEZBTFNFOwoJfQoKCWZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKQoJewoJICByZXR1cm4gRkFMU0U7Cgl9CgoJZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpCgl7CgkgIHJldHVybiBGQUxTRTsKCX0KCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7CiAgfQoKICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsKICB9CiAgCiAgZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkbXNnKQogIHsKICBlY2hvICI8aDM+Ii4kbXNnLiI8L2gzPiI7CiAgfQoKfSAKCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydoZWFkaW5nX2Rpc3BsYXknXSA9ICdFZGl0IHRoZSB0ZW1wbGF0ZXMnOwokbGFuZ1sndGl0bGVfZGlzcGxheSddID0gJ01haW4gVGVtcGxhdGUnOwokbGFuZ1sndGV4dF9kaXNwbGF5X2VkaXQnXSA9ICdFZGl0IHRoZSB0ZW1wbGF0ZSc7CgokbGFuZ1snaGVscCddID0gPDw8RU9UCgkJPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CgkJPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZWdyYXRpb24gb2YgdGhlIGdyZWF0IHBsdWdpbiBKUXVlcnkgRmlsZSBVcGxvYWQgaW50byB0aGUgZ3JlYXQgQ21zIE1hZGUgU2ltcGxlPC9wPgoJCTxwPlNlZSBtb3JlIG9uIGh0dHA6Ly9ibHVlaW1wLmdpdGh1Yi5jb20valF1ZXJ5LUZpbGUtVXBsb2FkLzwvcD4KCQk8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CgkJPHA+V3JpdGUgaW50byB5b3VyIGNvbnRlbnQgOiB7SlF1ZXJ5RlV9IDwvcD4KCQk8aDM+SG93IGRvIEkgdXNlIGl0ID8gKEFkdmFuY2UgdXNhZ2UpPC9oMz4KCQk8cD5Zb3UgY2FuIGVhc2lseSBhc3NvY2lhdGUgdGhpcyBtb2R1bGUgd2l0aCBGRVUgYW5kIGNyZWF0ZSBhIGRpZmZlcmVudCB1cGxvYWQgcGxhdGZvcm0gZm9yIGVhY2ggb2YgeW91ciB1c2VyPC9wPgoJCTxwPiBFeGFtcGxlIG9mIGNvZGUgPC9wPgoJCTxwcmUgc3R5bGU9Im1hcmdpbjogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEsIDY4LCA2OCk7IGNvbG9yOiByZ2IoMiwgMTg3LCAwKTsgcGFkZGluZzogNXB4OyI+CgkJCXtpZiBcJGNjdXNlci0+bWVtYmVyb2YoIkFkbWluIil9CgkJCQl7SlF1ZXJ5RlUgdGVtcGxhdGU9ImZ1bGwiIG51bWJlcj0xMDAgYWNjZXB0X2ZpbGVfdHlwZXM9Jy9cLih0eHR8Z2lmfGpwZT9nfHBuZ3xwc2R8cGRmKSQvaSd9CgkJCXtlbHNlfQoJCQkJe0pRdWVyeUZVIHRlbXBsYXRlPSJiYXNpYyIgbnVtYmVyPTEwIGFjY2VwdF9maWxlX3R5cGVzPScvXC4oZ2lmfGpwZT9nfHBuZykkL2knfQoJCQl7L2lmfQoJCTwvcHJlPgoJCTxoMz5Ib3cgY2FuIGkgYWN0aXZhdGUgdGhlIGNsaWVudCdzIHNpZGUgcmVzaXppbmcgPyAoQWR2YW5jZSB1c2FnZSk8L2gzPgoJCTxwPkpRdWVyeSBGaWxlIFVwbG9hZCBjYW4gcmVzaXplIHRoZSBiaWcgcGljdHVyZXMgQkVGT1JFIHN0YXJ0aW5nIHRoZSB1cGxvYWRzLiBUbyBhY3RpdmF0ZSB0aGlzIGZ1bmN0aW9uLCB5b3UgbXVzdCBtb2RpZnkgdGhlIGZpbGUgLi9tb2R1bGVzL0pRdWVyeUZVL2pxZnUvanMvanF1ZXJ5LmZpbGV1cGxvYWQtZnAuanMgYW5kIHVuY29tbWVudCB0aGUgY29kZSBsaW5lIDQyIDogPC9wPgoJCTxwcmUgc3R5bGU9Im1hcmdpbjogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEsIDY4LCA2OCk7IGNvbG9yOiByZ2IoMiwgMTg3LCAwKTsgcGFkZGluZzogNXB4OyI+CiAgICAgICAgICAgICAgcHJvY2VzczogWwogICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2xvYWQnLAogICAgICAgICAgICAgICAgICAgIGZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywKICAgICAgICAgICAgICAgICAgICBtYXhGaWxlU2l6ZTogMjAwMDAwMDAgLy8gMjBNQgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZXNpemUnLAogICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxOTIwLAogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogMTIwMCwKICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAwLAogICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogNjAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICovCiAgICAgICAgICAgIF0sCgkJPC9wcmU+CgkJCgkJPHA+dG88L3A+CgkJCgkJPHByZSBzdHlsZT0ibWFyZ2luOiA1cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYig3MSwgNjgsIDY4KTsgY29sb3I6IHJnYigyLCAxODcsIDApOyBwYWRkaW5nOiA1cHg7Ij4KICAgICAgICAgICAgICBwcm9jZXNzOiBbCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2xvYWQnLAogICAgICAgICAgICAgICAgICAgIGZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywKICAgICAgICAgICAgICAgICAgICBtYXhGaWxlU2l6ZTogMjAwMDAwMDAgLy8gMjBNQgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZXNpemUnLAogICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxOTIwLAogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogMTIwMCwKICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAwLAogICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogNjAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBdLAoJCTwvcHJlPgoJCTxwPiBJdCdzIHZlcnkgc2ltcGxlIGJ1dCA8c3BhbiBzdHlsZT0iY29sb3I6I0YwMCI+eW91IG11c3QgYmUgYXdhcmUgdGhhdCB0aGVzZXMgY2hhbmdlcyB3aWxsIGJlIGxvc3Qgb24gdGhlIG5leHQgdXBncmFkZSBvZiBteSBtb2R1bGU8L3NwYW4+LiBJIGRvbid0IGhhdmUgb3RoZXIgc29sdXRpb24uIFNvcnJ5IGZvciB0aGF0LiBCVFcgSWYgeW91IGhhdmUgYSBzb2x1dGlvbiwgZG9uJ3QgaGVzaXRlIHRvIGNvbnRhY3QgbWUgITwvcD4KRU9UOwokbGFuZ1snaGVscF9hY2NlcHRfZmlsZV90eXBlcyddID0gJ1JlZ2V4IG9mIHRoZSBmaWxlcyBleHRlbnNpb25zIHRoYXQgYXJlIGFsbG93ZWQuIEJ5IERlZmF1bHQgOiBcJy9cLih0eHR8Z2lmfGpwZT9nfHBuZykkL2lcJyc7CiRsYW5nWydoZWxwX251bWJlciddID0gJ051bWJlciBvZiBmaWxlcyB0aGF0IGNhbiBiZSBpbiB0aGUgdXBsb2FkcyBkaXJlY3RvcnkgYXQgdGhlIHNhbWUgdGltZSc7CiRsYW5nWydoZWxwX21heF93aWR0aCddID0gJ1RoZSBtYXggd2lkdGggZm9yIHRoZSBpbWFnZXMgdXBsb2FkZWQuIEV4ZW1wbGUgOiBtYXhfd2lkdGg9MTUwJzsKJGxhbmdbJ2hlbHBfbWF4X2hlaWdodCddID0gJ1RoZSBtYXhfaGVpZ2h0IGZvciB0aGUgaW1hZ2VzIHVwbG9hZGVkLiBFeGVtcGxlIDogbWF4X2hlaWdodD0xNTAnOwokbGFuZ1snaGVscF9taW5fd2lkdGgnXSA9ICdUaGUgbWluIHdpZHRoIGZvciB0aGUgaW1hZ2VzIHVwbG9hZGVkLiBFeGVtcGxlIDogbWluX3dpZHRoPTE1MC4gQnkgRGVmYXVsdCA6IG1pbl93aWR0aD0wJzsKJGxhbmdbJ2hlbHBfbWluX2hlaWdodCddID0gJ1RoZSBtaW4gaGVpZ2h0IGZvciB0aGUgaW1hZ2VzIHVwbG9hZGVkLiBFeGVtcGxlIDogbWluX2hlaWdodD0xNTAuIEJ5IERlZmF1bHQgOiBtaW5faGVpZ2h0PTAnOwokbGFuZ1snaGVscF9jbGVhbl9uYW1lJ10gPSAnaWYgdHJ1ZSwgd2lsbCByZXBsYWNlIGFjY2VudHMsIHNwYWNlcyBhbmQgb3RoZXIgc3BhY2lhbHMgY2FyYWN0ZXJzIGJ5IHNvbWUgbW9yZSBjbGVhbic7CiRsYW5nWydoZWxwX2Rpcl9wYXRoJ10gPSAndGhlIGRpcmVjdG9yeSB1c2VkIHRvIHVwbG9hZCBmaWxlcy4gQmUgY2FyZWZ1bGwsIHVzZSAiLyIgb3IgIlwiIGludG8gVW5peCBvciBXaW5kb3dzIHN5c3RlbSc7CiRsYW5nWydoZWxwX2Rpcl91cmwnXSA9ICd0aGUgdXJsIHVzZWQgdG8gZGlzcGxheSB1cGxvYWRlZCBmaWxlcyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlLiBBcmUgYWxsb3dlZCA6ICJmdWxsIiwgImJhc2ljIiBhbmQgYWxsIHRoZSB0ZW1wbGF0ZXMgaW50byB0aGUgIi9tb2R1bGVzL0pRdWVyeUZVL3RlbXBsYXRlcyIgZGlyZWN0b3J5JzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnWW91IGNhbiBlYXNpbHkgYXNzb2NpYXRlIHRoaXMgbW9kdWxlIHdpdGggRkVVIGFuZCBjcmVhdGUgYSBkaWZmZXJlbnQgdXBsb2FkIHBsYXRmb3JtIGZvciBlYWNoIG9mIHlvdXIgdXNlci4gWW91IGNhbiBhbHNvIHNpbXBseSB1c2UgaXQgYXMgYW4gb3BlbiB1cGxvYWQgcGxhdGZvcm0gZm9yIHlvdXIgdmlzaXRvcnMgd2l0aCBsb3Qgb2YgcGFyYW1ldGVycy4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdJbnN0YWxsZWQgd2l0aCBzdWNjZXNzJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgPyc7Cj8+]]></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.MyFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KDQpjbGFzcyBNeUZpbmRlcg0Kew0KICAgIHByaXZhdGUgJGtleTEgPSAiYTZ6ZThlaHk4NGpyNjg0cjY4eXRzZGY2ODdzYmRmYnRocmV0aGJwcHBkIjsNCiAgICBwcml2YXRlICRrZXkyID0gImZ6anJrcjg1emVyZzQzNXJ2OHJlejMxNXZlcjgzdjM0cWVyMzhxZXI0diI7DQogICAgcHJpdmF0ZSAkdG1wX3BhdGg7DQoNCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdG1wX3BhdGgpDQogICAgew0KICAgICAgJHRoaXMtPnRtcF9wYXRoID0gJHRtcF9wYXRoOw0KICAgICAgaWYoIWlzX2RpcigkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJykpDQogICAgICB7DQogICAgICAgIG1rZGlyKCR0aGlzLT50bXBfcGF0aC4nSlF1ZXJ5RlUnKTsNCiAgICAgIH0NCiAgICAgIGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidpbmRleC5odG1sJykpDQogICAgICB7DQogICAgICAgICRoYW5kbGUgPSBmb3BlbigkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidpbmRleC5odG1sJywgJ3cnKTsNCiAgICAgICAgaWYoJGhhbmRsZSAhPT0gRkFMU0UpDQogICAgICAgICAgZmNsb3NlKCRoYW5kbGUpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldE5hbWUoJHBhcmFtZXRlcnMpIHsNCiAgICAgIHJldHVybiBtZDUoJHRoaXMtPmtleTEuc2VyaWFsaXplKCRwYXJhbWV0ZXJzKSk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGdldEhhc2goJHBhcmFtZXRlcnMpIHsNCiAgICAgIHJldHVybiBtZDUoJHRoaXMtPmtleTIuc2VyaWFsaXplKCRwYXJhbWV0ZXJzKSk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIG1ha2VUaGVGaWxlKENNU01vZHVsZSAkbW9kdWxlLCAkY29uZmlnLCAkcGFyYW1ldGVycyl7DQogICAgICAkbmFtZSA9ICR0aGlzLT5nZXROYW1lKCRwYXJhbWV0ZXJzKTsNCiAgICAgICRoYXNoID0gJHRoaXMtPmdldEhhc2goJHBhcmFtZXRlcnMpOw0KICAgICAgICANCiAgICAgIGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRuYW1lLicucGhwJykpIHsNCiAgICAgICANCiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCR0aGlzLT50bXBfcGF0aC4nSlF1ZXJ5RlUnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWUuJy5waHAnLCAndycpOw0KICAgICAgICBpZigkaGFuZGxlID09PSBGQUxTRSkgew0KICAgICAgICAgIGVjaG8gIjxoMz5FcnJvciBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIFNrZWxldG9uIGNsYXNzPC9oMz4iOw0KICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0NCiAgICAgICAgJG1vZHVsZS0+c21hcnR5LT5hc3NpZ24oImtleTIiLCRoYXNoKTsNCg0KDQogICAgICAgIC8vTGlzdCBvZiBmaWxlIHR5cGUgYWNjZXB0ZWQgKHJlZ2V4KS4gQnkgZGVmYXVsdCA6IGltYWdlcyBmaWxlIG9ubHkNCiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJhY2NlcHRfZmlsZV90eXBlcyIsICcvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pJyk7DQogICAgICAgIA0KICAgICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZm9yIHRoZSB1cGxvYWQgZGlyZWN0b3J5OiAobnVtYmVyKQ0KICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgIm1heF9udW1iZXJfb2ZfZmlsZXMiLCJudWxsIik7DQoNCiAgICAgICAgLy9NaW4vTWF4IHdpZHRoL2hlaWdodCBvZiB0aGUgSW1hZ2UgcmVzb2x1dGlvbiAobnVtYmVyKQ0KICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgIm1heF93aWR0aCIsICJudWxsIik7DQogICAgICAgICR0aGlzLT5hc3NpZ25QYXJhbSgkbW9kdWxlLT5zbWFydHksICRwYXJhbWV0ZXJzLCAibWF4X2hlaWdodCIsICJudWxsIik7DQogICAgICAgICR0aGlzLT5hc3NpZ25QYXJhbSgkbW9kdWxlLT5zbWFydHksICRwYXJhbWV0ZXJzLCAibWluX3dpZHRoIiwgIjEiKTsNCiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJtaW5faGVpZ2h0IiwgIjEiKTsNCg0KICAgICAgICAvL1JlbW92ZSBhY2NlbnRzIGFuZCBzcGVjaWFsIGNhcmFjdGVycyBmcm9tIHRoZSBuYW1lIG9mIHRoZSBmaWxlDQogICAgICAgICR0aGlzLT5hc3NpZ25QYXJhbSgkbW9kdWxlLT5zbWFydHksICRwYXJhbWV0ZXJzLCAiY2xlYW5fbmFtZSIsICJ0cnVlIik7DQoJCQ0KICAgICAgICAvL0RlZmF1bHQgZGlyZWN0b3J5IGZvciB0aGUgdXBsb2Fkcw0KICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgImRpcl9wYXRoIiwgRElSRUNUT1JZX1NFUEFSQVRPUi4ndXBsb2FkcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nanF1ZXJ5ZnUnKTsNCiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJkaXJfdXJsIiwgIi91cGxvYWRzL2pxdWVyeWZ1Iik7DQoJCQ0KCQlpZihpc3NldCgkcGFyYW1ldGVyc1snZGlyX3BhdGgnXSkpew0KCQkJJHZhbHVlX2Rpcl9wYXRoID0gJHBhcmFtZXRlcnNbJ2Rpcl9wYXRoJ107DQoJCX0gZWxzZSB7DQoJCQkkdmFsdWVfZGlyX3BhdGggPSBESVJFQ1RPUllfU0VQQVJBVE9SLid1cGxvYWRzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidqcXVlcnlmdSc7DQoJCX0NCgkJJG1vZHVsZS0+c21hcnR5LT5hc3NpZ24oJ2Rpcl9wYXRoJywkdmFsdWVfZGlyX3BhdGgpOw0KCQkNCgkJaWYoaXNzZXQoJHBhcmFtZXRlcnNbJ2Rpcl91cmwnXSkpew0KCQkJJHZhbHVlX2Rpcl91cmwgPSAkcGFyYW1ldGVyc1snZGlyX3VybCddOw0KCQl9IGVsc2Ugew0KCQkJJHZhbHVlX2Rpcl91cmwgPSAiL3VwbG9hZHMvanF1ZXJ5ZnUiOw0KCQl9DQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdkaXJfdXJsJywkdmFsdWVfZGlyX3VybCk7DQoNCgkJLy9EZWZ1bHQgcm9vdCBwYXRoL3VybA0KCQlpZihpc3NldCgkcGFyYW1ldGVyc1sncm9vdF9wYXRoJ10pKXsNCgkJCSR2YWx1ZV9yb290X3BhdGggPSAkcGFyYW1ldGVyc1sncm9vdF9wYXRoJ107DQoJCX0gZWxzZSB7DQoJCQkkdmFsdWVfcm9vdF9wYXRoID0gJGNvbmZpZ1sncm9vdF9wYXRoJ107DQoJCX0NCgkJJG1vZHVsZS0+c21hcnR5LT5hc3NpZ24oJ3Jvb3RfcGF0aCcsJHZhbHVlX3Jvb3RfcGF0aCk7DQoJCQ0KCQlpZihpc3NldCgkcGFyYW1ldGVyc1sncm9vdF91cmwnXSkpew0KCQkJJHZhbHVlX3Jvb3RfdXJsID0gJHBhcmFtZXRlcnNbJ3Jvb3RfdXJsJ107DQoJCX0gZWxzZSB7DQoJCQkkdmFsdWVfcm9vdF91cmwgPSAkY29uZmlnWydyb290X3VybCddOw0KCQl9DQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdyb290X3VybCcsJHZhbHVlX3Jvb3RfdXJsKTsNCgkJDQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdESVJFQ1RPUllfU0VQQVJBVE9SJywgRElSRUNUT1JZX1NFUEFSQVRPUik7DQoNCiAgICAgICAgLy8kdGhpcy0+Y3JlYXRlRm9sZGVycygkdmFsdWVfcm9vdF9wYXRoLiR2YWx1ZV9kaXJfcGF0aCk7DQogICAgICAgICR0aGlzLT5jcmVhdGVGb2xkZXJzKCR2YWx1ZV9yb290X3BhdGguJHZhbHVlX2Rpcl9wYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RodW1ibmFpbHMnKTsNCiANCiAgICAgICAgZndyaXRlICgkaGFuZGxlICwgJG1vZHVsZS0+UHJvY2Vzc1RlbXBsYXRlKCdza2VsZXRvbi50cGwnKSk7DQogICAgICAgIGZjbG9zZSgkaGFuZGxlKTsNCiAgICAgIH0NCg0KICAgICAgcmV0dXJuIGFycmF5KCRuYW1lLCAkaGFzaCk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gYXNzaWduUGFyYW0oJHNtYXJ0eSwgJHBhcmFtZXRlcnMsICRwYXJhbV9uYW1lLCAkZGVmYXVsdCA9IG51bGwpDQogICAgew0KDQogICAgICBpZihpc3NldCgkcGFyYW1ldGVyc1skcGFyYW1fbmFtZV0pKXsNCiAgICAgICAgJHZhbHVlID0gJHBhcmFtZXRlcnNbJHBhcmFtX25hbWVdOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgJHZhbHVlID0gJGRlZmF1bHQ7DQogICAgICB9DQoNCiAgICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1fbmFtZSwkdmFsdWUpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNyZWF0ZUZvbGRlcnMoJGRpcil7DQogICAgICBpZihpc19kaXIoJGRpcikpDQogICAgICAgIHJldHVybjsNCg0KICAgICAgbWtkaXIoJGRpciwgMDc1NSwgdHJ1ZSk7DQoNCg0KICAgIH0NCg0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/inc.MyFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KaW5jbHVkZV9vbmNlKCIuLi8uLi8uLi9saWIvY2xhc3MuTXlGaW5kZXIucGhwIik7DQokdG1wX3BhdGggPSAiLi4vLi4vLi4vLi4vLi4vdG1wL2NhY2hlL0pRdWVyeUZVLyI7DQokbXlGaW5kZXIgPSBuZXcgTXlGaW5kZXIoIi4uLy4uLy4uLy4uLy4uL3RtcC9jYWNoZS8iKTsNCg0KDQppZighaXNzZXQoJF9HRVRbJ25hbWUnXSkgfHwgZW1wdHkoJF9HRVRbJ25hbWUnXSkpDQp7DQogIGVjaG8gIjxoMz5uYW1lIG5vdCBzZXR0ZWQ8L2gzPiI7DQogIGV4aXQgLTE7DQp9DQppZighaXNzZXQoJF9HRVRbJ2hhc2gnXSkgfHwgZW1wdHkoJF9HRVRbJ2hhc2gnXSkpDQp7DQogIGVjaG8gIjxoMz5oYXNoIG5vdCBzZXR0ZWQ8L2gzPiI7DQogIGV4aXQgLTI7DQp9DQoNCiRuYW1lID0gJF9HRVRbJ25hbWUnXTsNCmlmKCFwcmVnX21hdGNoKCIjXlthLXpBLVowLTldKyQjIiwgJG5hbWUpKSB7DQogIGVjaG8gIjxoMz5uYW1lJ3MgbmFtZSBub3Qgb2s8L2gzPiI7DQogIGV4aXQgLTM7DQp9DQoNCiRoYXNoID0gJF9HRVRbJ2hhc2gnXTsNCmlmKCFwcmVnX21hdGNoKCIjXlthLXpBLVowLTldKyQjIiwgJGhhc2gpKSB7DQogIGVjaG8gIjxoMz5oYXNoJ3MgbmFtZSBub3Qgb2s8L2gzPiI7DQogIGV4aXQgLTQ7DQp9DQoNCiRuYW1lLj0iLnBocCI7DQoNCg0KDQppZighZmlsZV9leGlzdHMoJHRtcF9wYXRoLiRuYW1lKSkNCnsNCiAgZWNobyAiPGgzPmZpbGUncyAgbm90IGZvdW5kPC9oMz4gOiAiLiR0bXBfcGF0aC4kbmFtZTsNCiAgZXhpdCAtNTsNCn0NCg0KaW5jbHVkZV9vbmNlKCR0bXBfcGF0aC4kbmFtZSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1VzZSBKcXVlcnlGVScsICdVc2UgSnF1ZXJ5RlUnKTsKCiMgU2V0dXAgZGlzcGxheSB0ZW1wbGF0ZQokZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9mdWxsLnRwbCc7CmlmKCBmaWxlX2V4aXN0cyggJGZuICkgKSB7CgkkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZShUTVBMX1BSRUZJWF9ESVNQTEFZLidmdWxsJywkdGVtcGxhdGUpOwoJCgkvL0RlZmF1bHQgdmFsdWVzCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF8nLlRNUExfUFJFRklYX0RJU1BMQVkuJ190ZW1wbGF0ZV9jb250ZW50cycsJHRlbXBsYXRlKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKERFRkFVTFRfRElTUExBWV9UTVBMX1BSRUZfTkFNRSwnZnVsbCcpOwp9CiMgU2V0dXAgMm5kIGRpc3BsYXkgdGVtcGxhdGUKJGZuID0gZGlybmFtZShfX0ZJTEVfXykuJy90ZW1wbGF0ZXMvYmFzaWMudHBsJzsKaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsKCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJHRoaXMtPlNldFRlbXBsYXRlKFRNUExfUFJFRklYX0RJU1BMQVkuJ2Jhc2ljJywkdGVtcGxhdGUpOwp9CiMgU2V0dXAgMyBkaXNwbGF5IHRlbXBsYXRlCiRmbiA9IGRpcm5hbWUoX19GSUxFX18pLicvdGVtcGxhdGVzL2dkb2NWaWV3ZXIudHBsJzsKaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsKCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJHRoaXMtPlNldFRlbXBsYXRlKFRNUExfUFJFRklYX0RJU1BMQVkuJ2dkb2NWaWV3ZXInLCR0ZW1wbGF0ZSk7Cn0KCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsIAoJICAgICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKCSAgICAgICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSApOwoKCSAgICAgIAo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1VzZSBKcXVlcnlGVScpOwokdGhpcy0+RGVsZXRlVGVtcGxhdGUoKTsKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKc3dpdGNoKCRvbGR2ZXJzaW9uKSB7CiBjYXNlICIxLjAuNSI6CgkJICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgSnF1ZXJ5RlUnLCAnVXNlIEpxdWVyeUZVJyk7CgoJCSMgU2V0dXAgZGlzcGxheSB0ZW1wbGF0ZQoJCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLicvdGVtcGxhdGVzL2Z1bGwudHBsJzsKCQlpZiggZmlsZV9leGlzdHMoICRmbiApICkgewoJCQkkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCQkJJHRoaXMtPlNldFRlbXBsYXRlKFRNUExfUFJFRklYX0RJU1BMQVkuJ2Z1bGwnLCR0ZW1wbGF0ZSk7CgkJCQoJCQkvL0RlZmF1bHQgdmFsdWVzCgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0XycuVE1QTF9QUkVGSVhfRElTUExBWS4nX3RlbXBsYXRlX2NvbnRlbnRzJywkdGVtcGxhdGUpOwoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZShERUZBVUxUX0RJU1BMQVlfVE1QTF9QUkVGX05BTUUsJ2Z1bGwnKTsKCQl9CgkJIyBTZXR1cCAybmQgZGlzcGxheSB0ZW1wbGF0ZQoJCSRmbiA9IGRpcm5hbWUoX19GSUxFX18pLicvdGVtcGxhdGVzL2Jhc2ljLnRwbCc7CgkJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsKCQkJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZShUTVBMX1BSRUZJWF9ESVNQTEFZLidiYXNpYycsJHRlbXBsYXRlKTsKCQl9CgkJCgkJIyBTZXR1cCAzIGRpc3BsYXkgdGVtcGxhdGUKCQkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9nZG9jVmlld2VyLnRwbCc7CgkJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApIHsKCQkJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZShUTVBMX1BSRUZJWF9ESVNQTEFZLidnZG9jVmlld2VyJywkdGVtcGxhdGUpOwoJCX0KIGNhc2UgIjEuMS4wIiA6Cn0KCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsIAoJICAgICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKCSAgICAgICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnskdGFic19zdGFydH0KICAgeyRzdGFydF9nZW5lcmFsX3RhYn0KICAgeyRzdGFydF90ZW1wbGF0ZV90YWJ9CgkJPGgzPnskaGVhZGluZ19kaXNwbGF5fTwvaDM+CgkJeyRsaXN0X2Rpc3BsYXlfdGVtcGxhdGVzfQogICB7JHRhYl9lbmR9CnskdGFic19lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/basic.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQo8aW5wdXQgaWQ9ImZpbGV1cGxvYWQiIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVzW10iIGRhdGEtdXJsPSJ7JHBhdGh9L3NlcnZlci9waHAvaW5kZXgucGhwP25hbWU9eyRuYW1lfSZhbXA7aGFzaD17JGhhc2h9IiBtdWx0aXBsZT4NCjxzY3JpcHQgc3JjPSIvL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjcuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL3ZlbmRvci9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5pZnJhbWUtdHJhbnNwb3J0LmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5maWxldXBsb2FkLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQ+e2xpdGVyYWx9DQokKGZ1bmN0aW9uICgpIHsNCiAgICAkKCcjZmlsZXVwbG9hZCcpLmZpbGV1cGxvYWQoew0KICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICBkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkgew0KICAgICAgICAgICAgJC5lYWNoKGRhdGEucmVzdWx0LCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsNCiAgICAgICAgICAgICAgICAkKCc8cC8+JykudGV4dChmaWxlLm5hbWUpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICB9KTsNCn0pOw0KPC9zY3JpcHQ+ey9saXRlcmFsfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/full.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBCb290c3RyYXAgQ1NTIFRvb2xraXQgc3R5bGVzIC0tPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAubWluLmNzcyI+DQo8IS0tIEdlbmVyaWMgcGFnZSBzdHlsZXMgLS0+DQo8IS0tIGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9zdHlsZS5jc3MiIC0tPg0KPCEtLSBCb290c3RyYXAgc3R5bGVzIGZvciByZXNwb25zaXZlIHdlYnNpdGUgbGF5b3V0LCBzdXBwb3J0aW5nIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgLS0+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL2Jvb3RzdHJhcC1yZXNwb25zaXZlLm1pbi5jc3MiPg0KPCEtLSBCb290c3RyYXAgQ1NTIGZpeGVzIGZvciBJRTYgLS0+DQo8IS0tW2lmIGx0IElFIDddPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRwYXRofS9jc3MvYm9vdHN0cmFwLWllNi5taW4uY3NzIj48IVtlbmRpZl0tLT4NCjwhLS0gQm9vdHN0cmFwIEltYWdlIEdhbGxlcnkgc3R5bGVzIC0tPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAtaW1hZ2UtZ2FsbGVyeS5taW4uY3NzIj4NCjwhLS0gQ1NTIHRvIHN0eWxlIHRoZSBmaWxlIGlucHV0IGZpZWxkIGFzIGJ1dHRvbiBhbmQgYWRqdXN0IHRoZSBCb290c3RyYXAgcHJvZ3Jlc3MgYmFycyAtLT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRwYXRofS9jc3MvanF1ZXJ5LmZpbGV1cGxvYWQtdWkuY3NzIj4NCjwhLS0gU2hpbSB0byBtYWtlIEhUTUw1IGVsZW1lbnRzIHVzYWJsZSBpbiBvbGRlciBJbnRlcm5ldCBFeHBsb3JlciB2ZXJzaW9ucyAtLT4NCjwhLS1baWYgbHQgSUUgOV0+PHNjcmlwdCBzcmM9Imh0dHA6Ly9odG1sNXNoaW0uZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2h0bWw1LmpzIj48L3NjcmlwdD48IVtlbmRpZl0tLT4NCg0KPGRpdiBjbGFzcz0nanFmdV9ibG9jayc+DQoJPCEtLSBUaGUgZmlsZSB1cGxvYWQgZm9ybSB1c2VkIGFzIHRhcmdldCBmb3IgdGhlIGZpbGUgdXBsb2FkIHdpZGdldCAtLT4NCgk8Zm9ybSBpZD0iZmlsZXVwbG9hZCIgYWN0aW9uPSJ7JHBhdGh9L3NlcnZlci9waHAvaW5kZXgucGhwP25hbWU9eyRuYW1lfSZhbXA7aGFzaD17JGhhc2h9IiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KCQk8IS0tIFRoZSBmaWxldXBsb2FkLWJ1dHRvbmJhciBjb250YWlucyBidXR0b25zIHRvIGFkZC9kZWxldGUgZmlsZXMgYW5kIHN0YXJ0L2NhbmNlbCB0aGUgdXBsb2FkIC0tPg0KCQk8ZGl2IGNsYXNzPSJyb3cgZmlsZXVwbG9hZC1idXR0b25iYXIiPg0KCQkJPGRpdiBjbGFzcz0ic3BhbjciPg0KCQkJCTwhLS0gVGhlIGZpbGVpbnB1dC1idXR0b24gc3BhbiBpcyB1c2VkIHRvIHN0eWxlIHRoZSBmaWxlIGlucHV0IGZpZWxkIGFzIGJ1dHRvbiAtLT4NCgkJCQk8c3BhbiBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIGZpbGVpbnB1dC1idXR0b24iPg0KCQkJCQk8aSBjbGFzcz0iaWNvbi1wbHVzIGljb24td2hpdGUiPjwvaT4NCgkJCQkJPHNwYW4+QWRkIGZpbGVzLi4uPC9zcGFuPg0KCQkJCQk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZXNbXSIgbXVsdGlwbGU+DQoJCQkJPC9zcGFuPg0KCQkJCTxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IHN0YXJ0Ij4NCgkJCQkJPGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT4NCgkJCQkJPHNwYW4+U3RhcnQgdXBsb2FkPC9zcGFuPg0KCQkJCTwvYnV0dG9uPg0KCQkJCTxidXR0b24gdHlwZT0icmVzZXQiIGNsYXNzPSJidG4gYnRuLXdhcm5pbmcgY2FuY2VsIj4NCgkJCQkJPGkgY2xhc3M9Imljb24tYmFuLWNpcmNsZSBpY29uLXdoaXRlIj48L2k+DQoJCQkJCTxzcGFuPkNhbmNlbCB1cGxvYWQ8L3NwYW4+DQoJCQkJPC9idXR0b24+DQoJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhbmdlciBkZWxldGUiPg0KCQkJCQk8aSBjbGFzcz0iaWNvbi10cmFzaCBpY29uLXdoaXRlIj48L2k+DQoJCQkJCTxzcGFuPkRlbGV0ZTwvc3Bhbj4NCgkJCQk8L2J1dHRvbj4NCgkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJ0b2dnbGUiPg0KCQkJPC9kaXY+DQoJCQk8IS0tIFRoZSBnbG9iYWwgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gLS0+DQoJCQk8ZGl2IGNsYXNzPSJzcGFuNSBmaWxldXBsb2FkLXByb2dyZXNzIGZhZGUiPg0KCQkJCTwhLS0gVGhlIGdsb2JhbCBwcm9ncmVzcyBiYXIgLS0+DQoJCQkJPGRpdiBjbGFzcz0icHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3VjY2VzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+DQoJCQkJCTxkaXYgY2xhc3M9ImJhciIgc3R5bGU9IndpZHRoOjAlOyI+PC9kaXY+DQoJCQkJPC9kaXY+DQoJCQkJPCEtLSBUaGUgZXh0ZW5kZWQgZ2xvYmFsIHByb2dyZXNzIGluZm9ybWF0aW9uIC0tPg0KCQkJCTxkaXYgY2xhc3M9InByb2dyZXNzLWV4dGVuZGVkIj4mbmJzcDs8L2Rpdj4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4NCgkJPCEtLSBUaGUgbG9hZGluZyBpbmRpY2F0b3IgaXMgc2hvd24gZHVyaW5nIGZpbGUgcHJvY2Vzc2luZyAtLT4NCgkJPGRpdiBjbGFzcz0iZmlsZXVwbG9hZC1sb2FkaW5nIj48L2Rpdj4NCgkJPGJyPg0KCQk8IS0tIFRoZSB0YWJsZSBsaXN0aW5nIHRoZSBmaWxlcyBhdmFpbGFibGUgZm9yIHVwbG9hZC9kb3dubG9hZCAtLT4NCgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zdHJpcGVkIj48dGJvZHkgY2xhc3M9ImZpbGVzIiBkYXRhLXRvZ2dsZT0ibW9kYWwtZ2FsbGVyeSIgZGF0YS10YXJnZXQ9IiNtb2RhbC1nYWxsZXJ5Ij48L3Rib2R5PjwvdGFibGU+DQoJPC9mb3JtPg0KDQoNCgk8IS0tIG1vZGFsLWdhbGxlcnkgaXMgdGhlIG1vZGFsIGRpYWxvZyB1c2VkIGZvciB0aGUgaW1hZ2UgZ2FsbGVyeSAtLT4NCgk8ZGl2IGlkPSJtb2RhbC1nYWxsZXJ5IiBjbGFzcz0ibW9kYWwgbW9kYWwtZ2FsbGVyeSBoaWRlIGZhZGUiIGRhdGEtZmlsdGVyPSI6b2RkIj4NCgkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4NCgkJCTxhIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+JnRpbWVzOzwvYT4NCgkJCTxoMyBjbGFzcz0ibW9kYWwtdGl0bGUiPjwvaDM+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij48ZGl2IGNsYXNzPSJtb2RhbC1pbWFnZSI+PC9kaXY+PC9kaXY+DQoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+DQoJCQk8YSBjbGFzcz0iYnRuIG1vZGFsLWRvd25sb2FkIiB0YXJnZXQ9Il9ibGFuayI+DQoJCQkJPGkgY2xhc3M9Imljb24tZG93bmxvYWQiPjwvaT4NCgkJCQk8c3Bhbj5Eb3dubG9hZDwvc3Bhbj4NCgkJCTwvYT4NCgkJCTxhIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MgbW9kYWwtcGxheSBtb2RhbC1zbGlkZXNob3ciIGRhdGEtc2xpZGVzaG93PSI1MDAwIj4NCgkJCQk8aSBjbGFzcz0iaWNvbi1wbGF5IGljb24td2hpdGUiPjwvaT4NCgkJCQk8c3Bhbj5TbGlkZXNob3c8L3NwYW4+DQoJCQk8L2E+DQoJCQk8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIG1vZGFsLXByZXYiPg0KCQkJCTxpIGNsYXNzPSJpY29uLWFycm93LWxlZnQgaWNvbi13aGl0ZSI+PC9pPg0KCQkJCTxzcGFuPlByZXZpb3VzPC9zcGFuPg0KCQkJPC9hPg0KCQkJPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBtb2RhbC1uZXh0Ij4NCgkJCQk8c3Bhbj5OZXh0PC9zcGFuPg0KCQkJCTxpIGNsYXNzPSJpY29uLWFycm93LXJpZ2h0IGljb24td2hpdGUiPjwvaT4NCgkJCTwvYT4NCgkJPC9kaXY+DQoJPC9kaXY+DQo8L2Rpdj4NCntsaXRlcmFsfQ0KPCEtLSBUaGUgdGVtcGxhdGUgdG8gZGlzcGxheSBmaWxlcyBhdmFpbGFibGUgZm9yIHVwbG9hZCAtLT4NCjxzY3JpcHQgaWQ9InRlbXBsYXRlLXVwbG9hZCIgdHlwZT0idGV4dC94LXRtcGwiPg0KeyUgZm9yICh2YXIgaT0wLCBmaWxlOyBmaWxlPW8uZmlsZXNbaV07IGkrKykgeyAlfQ0KICAgIDx0ciBjbGFzcz0idGVtcGxhdGUtdXBsb2FkIGZhZGUiPg0KICAgICAgICA8dGQgY2xhc3M9InByZXZpZXciPjxzcGFuIGNsYXNzPSJmYWRlIj48L3NwYW4+PC90ZD4NCiAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj48c3Bhbj57JT1maWxlLm5hbWUlfTwvc3Bhbj48L3RkPg0KICAgICAgICA8dGQgY2xhc3M9InNpemUiPjxzcGFuPnslPW8uZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKSV9PC9zcGFuPjwvdGQ+DQogICAgICAgIHslIGlmIChmaWxlLmVycm9yKSB7ICV9DQogICAgICAgICAgICA8dGQgY2xhc3M9ImVycm9yIiBjb2xzcGFuPSIyIj48c3BhbiBjbGFzcz0ibGFiZWwgbGFiZWwtaW1wb3J0YW50Ij57JT1sb2NhbGUuZmlsZXVwbG9hZC5lcnJvciV9PC9zcGFuPiB7JT1sb2NhbGUuZmlsZXVwbG9hZC5lcnJvcnNbZmlsZS5lcnJvcl0gfHwgZmlsZS5lcnJvciV9PC90ZD4NCiAgICAgICAgeyUgfSBlbHNlIGlmIChvLmZpbGVzLnZhbGlkICYmICFpKSB7ICV9DQogICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3VjY2VzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRpdiBjbGFzcz0iYmFyIiBzdHlsZT0id2lkdGg6MCU7Ij48L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8dGQgY2xhc3M9InN0YXJ0Ij57JSBpZiAoIW8ub3B0aW9ucy5hdXRvVXBsb2FkKSB7ICV9DQogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4+eyU9bG9jYWxlLmZpbGV1cGxvYWQuc3RhcnQlfTwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4NCiAgICAgICAgICAgIHslIH0gJX08L3RkPg0KICAgICAgICB7JSB9IGVsc2UgeyAlfQ0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjwvdGQ+DQogICAgICAgIHslIH0gJX0NCiAgICAgICAgPHRkIGNsYXNzPSJjYW5jZWwiPnslIGlmICghaSkgeyAlfQ0KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi13YXJuaW5nIj4NCiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1iYW4tY2lyY2xlIGljb24td2hpdGUiPjwvaT4NCiAgICAgICAgICAgICAgICA8c3Bhbj57JT1sb2NhbGUuZmlsZXVwbG9hZC5jYW5jZWwlfTwvc3Bhbj4NCiAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICB7JSB9ICV9PC90ZD4NCiAgICA8L3RyPg0KeyUgfSAlfQ0KPC9zY3JpcHQ+DQo8IS0tIFRoZSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGZpbGVzIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLS0+DQo8c2NyaXB0IGlkPSJ0ZW1wbGF0ZS1kb3dubG9hZCIgdHlwZT0idGV4dC94LXRtcGwiPg0KeyUgZm9yICh2YXIgaT0wLCBmaWxlOyBmaWxlPW8uZmlsZXNbaV07IGkrKykgeyAlfQ0KICAgIDx0ciBjbGFzcz0idGVtcGxhdGUtZG93bmxvYWQgZmFkZSI+DQogICAgICAgIHslIGlmIChmaWxlLmVycm9yKSB7ICV9DQogICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ibmFtZSI+PHNwYW4+eyU9ZmlsZS5uYW1lJX08L3NwYW4+PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ic2l6ZSI+PHNwYW4+eyU9by5mb3JtYXRGaWxlU2l6ZShmaWxlLnNpemUpJX08L3NwYW4+PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXJyb3IiIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbXBvcnRhbnQiPnslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yJX08L3NwYW4+IHslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yc1tmaWxlLmVycm9yXSB8fCBmaWxlLmVycm9yJX08L3RkPg0KICAgICAgICB7JSB9IGVsc2UgeyAlfQ0KICAgICAgICAgICAgPHRkIGNsYXNzPSJwcmV2aWV3Ij57JSBpZiAoZmlsZS50aHVtYm5haWxfdXJsKSB7ICV9DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyU9ZmlsZS51cmwlfSIgdGl0bGU9InslPWZpbGUubmFtZSV9IiByZWw9ImdhbGxlcnkiIGRvd25sb2FkPSJ7JT1maWxlLm5hbWUlfSI+PGltZyBzcmM9InslPWZpbGUudGh1bWJuYWlsX3VybCV9Ij48L2E+DQogICAgICAgICAgICB7JSB9ICV9PC90ZD4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ibmFtZSI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyU9ZmlsZS51cmwlfSIgdGl0bGU9InslPWZpbGUubmFtZSV9IiByZWw9InslPWZpbGUudGh1bWJuYWlsX3VybCYmJ2dhbGxlcnknJX0iIGRvd25sb2FkPSJ7JT1maWxlLm5hbWUlfSI+eyU9ZmlsZS5uYW1lJX08L2E+DQogICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJzaXplIj48c3Bhbj57JT1vLmZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSklfTwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjwvdGQ+DQogICAgICAgIHslIH0gJX0NCiAgICAgICAgPHRkIGNsYXNzPSJkZWxldGUiPg0KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiIGRhdGEtdHlwZT0ieyU9ZmlsZS5kZWxldGVfdHlwZSV9IiBkYXRhLXVybD0ieyU9ZmlsZS5kZWxldGVfdXJsJX17L2xpdGVyYWx9JmFtcDtuYW1lPXskbmFtZX0mYW1wO2hhc2g9eyRoYXNofXtsaXRlcmFsfSI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tdHJhc2ggaWNvbi13aGl0ZSI+PC9pPg0KICAgICAgICAgICAgICAgIDxzcGFuPnslPWxvY2FsZS5maWxldXBsb2FkLmRlc3Ryb3klfTwvc3Bhbj4NCiAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkZWxldGUiIHZhbHVlPSIxIj4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KeyUgfSAlfQ0KPC9zY3JpcHQ+ey9saXRlcmFsfQ0KDQoNCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PiANCjwhLS0gVGhlIGpRdWVyeSBVSSB3aWRnZXQgZmFjdG9yeSwgY2FuIGJlIG9taXR0ZWQgaWYgalF1ZXJ5IFVJIGlzIGFscmVhZHkgaW5jbHVkZWQgLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy92ZW5kb3IvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBUZW1wbGF0ZXMgcGx1Z2luIGlzIGluY2x1ZGVkIHRvIHJlbmRlciB0aGUgdXBsb2FkL2Rvd25sb2FkIGxpc3RpbmdzIC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvdG1wbC5taW4uanMiPjwvc2NyaXB0Pg0KPCEtLSBUaGUgTG9hZCBJbWFnZSBwbHVnaW4gaXMgaW5jbHVkZWQgZm9yIHRoZSBwcmV2aWV3IGltYWdlcyBhbmQgaW1hZ2UgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2xvYWQtaW1hZ2UubWluLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIENhbnZhcyB0byBCbG9iIHBsdWdpbiBpcyBpbmNsdWRlZCBmb3IgaW1hZ2UgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2NhbnZhcy10by1ibG9iLm1pbi5qcyI+PC9zY3JpcHQ+DQo8IS0tIEJvb3RzdHJhcCBKUyBhbmQgQm9vdHN0cmFwIEltYWdlIEdhbGxlcnkgYXJlIG5vdCByZXF1aXJlZCwgYnV0IGluY2x1ZGVkIGZvciB0aGUgZGVtbyAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvYm9vdHN0cmFwLWltYWdlLWdhbGxlcnkubWluLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIElmcmFtZSBUcmFuc3BvcnQgaXMgcmVxdWlyZWQgZm9yIGJyb3dzZXJzIHdpdGhvdXQgc3VwcG9ydCBmb3IgWEhSIGZpbGUgdXBsb2FkcyAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5pZnJhbWUtdHJhbnNwb3J0LmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIGJhc2ljIEZpbGUgVXBsb2FkIHBsdWdpbiAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5maWxldXBsb2FkLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIEZpbGUgVXBsb2FkIGZpbGUgcHJvY2Vzc2luZyBwbHVnaW4gLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC1mcC5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBGaWxlIFVwbG9hZCB1c2VyIGludGVyZmFjZSBwbHVnaW4gLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC11aS5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBsb2NhbGl6YXRpb24gc2NyaXB0IC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvbG9jYWxlLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIG1haW4gYXBwbGljYXRpb24gc2NyaXB0IC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvbWFpbi5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBYRG9tYWluUmVxdWVzdCBUcmFuc3BvcnQgaXMgaW5jbHVkZWQgZm9yIGNyb3NzLWRvbWFpbiBmaWxlIGRlbGV0aW9uIGZvciBJRTgrIC0tPg0KPCEtLVtpZiBndGUgSUUgOF0+PHNjcmlwdCBzcmM9InskcGF0aH0vanMvY29ycy9qcXVlcnkueGRyLXRyYW5zcG9ydC5qcyI+PC9zY3JpcHQ+PCFbZW5kaWZdLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/gdocViewer.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQp7KiogVGhpcyB0ZW1wbGF0ZSBpcyBhIGZ1bGwtYS1saWtlIHZlcnNpb24gd2l0aCBhIGludGVncmF0aW9uIG9mIEdvb2dsZSBWaWV3ZXIgKip9DQp7KiogSXQgd2lsbCBzaG93IGJ1dHRvbnMgZm9yIGV2ZXJ5IGRvYy9kb2N4L3hscy94bHN4L3BkZiBmaWxlcyBpZiBvbmx5IHlvdSBkb24ndCBmb3JnZXQgdG8gY2FsbCBKcXVlcnlGVSB3aXRoIHRoZSBnb29kIG9wdGlvbnMgOiBhY2NlcHRfZmlsZV90eXBlcz0iL1wuKHR4dHxnaWZ8anBlP2d8cG5nfGRvY3g/fHhsc3g/fHBkZikkL2kiICoqfQ0KDQo8IS0tIEJvb3RzdHJhcCBDU1MgVG9vbGtpdCBzdHlsZXMgLS0+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL2Jvb3RzdHJhcC5taW4uY3NzIj4NCjwhLS0gR2VuZXJpYyBwYWdlIHN0eWxlcyAtLT4NCjwhLS0gbGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL3N0eWxlLmNzcyIgLS0+DQo8IS0tIEJvb3RzdHJhcCBzdHlsZXMgZm9yIHJlc3BvbnNpdmUgd2Vic2l0ZSBsYXlvdXQsIHN1cHBvcnRpbmcgZGlmZmVyZW50IHNjcmVlbiBzaXplcyAtLT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRwYXRofS9jc3MvYm9vdHN0cmFwLXJlc3BvbnNpdmUubWluLmNzcyI+DQo8IS0tIEJvb3RzdHJhcCBDU1MgZml4ZXMgZm9yIElFNiAtLT4NCjwhLS1baWYgbHQgSUUgN10+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAtaWU2Lm1pbi5jc3MiPjwhW2VuZGlmXS0tPg0KPCEtLSBCb290c3RyYXAgSW1hZ2UgR2FsbGVyeSBzdHlsZXMgLS0+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL2Jvb3RzdHJhcC1pbWFnZS1nYWxsZXJ5Lm1pbi5jc3MiPg0KPCEtLSBDU1MgdG8gc3R5bGUgdGhlIGZpbGUgaW5wdXQgZmllbGQgYXMgYnV0dG9uIGFuZCBhZGp1c3QgdGhlIEJvb3RzdHJhcCBwcm9ncmVzcyBiYXJzIC0tPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9qcXVlcnkuZmlsZXVwbG9hZC11aS5jc3MiPg0KPCEtLSBTaGltIHRvIG1ha2UgSFRNTDUgZWxlbWVudHMgdXNhYmxlIGluIG9sZGVyIEludGVybmV0IEV4cGxvcmVyIHZlcnNpb25zIC0tPg0KPCEtLVtpZiBsdCBJRSA5XT48c2NyaXB0IHNyYz0iaHR0cDovL2h0bWw1c2hpbS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvaHRtbDUuanMiPjwvc2NyaXB0PjwhW2VuZGlmXS0tPg0KDQo8ZGl2IGNsYXNzPSdqcWZ1X2Jsb2NrJz4NCgk8IS0tIFRoZSBmaWxlIHVwbG9hZCBmb3JtIHVzZWQgYXMgdGFyZ2V0IGZvciB0aGUgZmlsZSB1cGxvYWQgd2lkZ2V0IC0tPg0KCTxmb3JtIGlkPSJmaWxldXBsb2FkIiBhY3Rpb249InskcGF0aH0vc2VydmVyL3BocC9pbmRleC5waHA/bmFtZT17JG5hbWV9JmFtcDtoYXNoPXskaGFzaH0iIG1ldGhvZD0iUE9TVCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJCTwhLS0gVGhlIGZpbGV1cGxvYWQtYnV0dG9uYmFyIGNvbnRhaW5zIGJ1dHRvbnMgdG8gYWRkL2RlbGV0ZSBmaWxlcyBhbmQgc3RhcnQvY2FuY2VsIHRoZSB1cGxvYWQgLS0+DQoJCTxkaXYgY2xhc3M9InJvdyBmaWxldXBsb2FkLWJ1dHRvbmJhciI+DQoJCQk8ZGl2IGNsYXNzPSJzcGFuNyI+DQoJCQkJPCEtLSBUaGUgZmlsZWlucHV0LWJ1dHRvbiBzcGFuIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGZpbGUgaW5wdXQgZmllbGQgYXMgYnV0dG9uIC0tPg0KCQkJCTxzcGFuIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MgZmlsZWlucHV0LWJ1dHRvbiI+DQoJCQkJCTxpIGNsYXNzPSJpY29uLXBsdXMgaWNvbi13aGl0ZSI+PC9pPg0KCQkJCQk8c3Bhbj5BZGQgZmlsZXMuLi48L3NwYW4+DQoJCQkJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlc1tdIiBtdWx0aXBsZT4NCgkJCQk8L3NwYW4+DQoJCQkJPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgc3RhcnQiPg0KCQkJCQk8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPg0KCQkJCQk8c3Bhbj5TdGFydCB1cGxvYWQ8L3NwYW4+DQoJCQkJPC9idXR0b24+DQoJCQkJPGJ1dHRvbiB0eXBlPSJyZXNldCIgY2xhc3M9ImJ0biBidG4td2FybmluZyBjYW5jZWwiPg0KCQkJCQk8aSBjbGFzcz0iaWNvbi1iYW4tY2lyY2xlIGljb24td2hpdGUiPjwvaT4NCgkJCQkJPHNwYW4+Q2FuY2VsIHVwbG9hZDwvc3Bhbj4NCgkJCQk8L2J1dHRvbj4NCgkJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIGRlbGV0ZSI+DQoJCQkJCTxpIGNsYXNzPSJpY29uLXRyYXNoIGljb24td2hpdGUiPjwvaT4NCgkJCQkJPHNwYW4+RGVsZXRlPC9zcGFuPg0KCQkJCTwvYnV0dG9uPg0KCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9InRvZ2dsZSI+DQoJCQk8L2Rpdj4NCgkJCTwhLS0gVGhlIGdsb2JhbCBwcm9ncmVzcyBpbmZvcm1hdGlvbiAtLT4NCgkJCTxkaXYgY2xhc3M9InNwYW41IGZpbGV1cGxvYWQtcHJvZ3Jlc3MgZmFkZSI+DQoJCQkJPCEtLSBUaGUgZ2xvYmFsIHByb2dyZXNzIGJhciAtLT4NCgkJCQk8ZGl2IGNsYXNzPSJwcm9ncmVzcyBwcm9ncmVzcy1zdWNjZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIj4NCgkJCQkJPGRpdiBjbGFzcz0iYmFyIiBzdHlsZT0id2lkdGg6MCU7Ij48L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCQk8IS0tIFRoZSBleHRlbmRlZCBnbG9iYWwgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gLS0+DQoJCQkJPGRpdiBjbGFzcz0icHJvZ3Jlc3MtZXh0ZW5kZWQiPiZuYnNwOzwvZGl2Pg0KCQkJPC9kaXY+DQoJCTwvZGl2Pg0KCQk8IS0tIFRoZSBsb2FkaW5nIGluZGljYXRvciBpcyBzaG93biBkdXJpbmcgZmlsZSBwcm9jZXNzaW5nIC0tPg0KCQk8ZGl2IGNsYXNzPSJmaWxldXBsb2FkLWxvYWRpbmciPjwvZGl2Pg0KCQk8YnI+DQoJCTwhLS0gVGhlIHRhYmxlIGxpc3RpbmcgdGhlIGZpbGVzIGF2YWlsYWJsZSBmb3IgdXBsb2FkL2Rvd25sb2FkIC0tPg0KCQk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXN0cmlwZWQiPjx0Ym9keSBjbGFzcz0iZmlsZXMiIGRhdGEtdG9nZ2xlPSJtb2RhbC1nYWxsZXJ5IiBkYXRhLXRhcmdldD0iI21vZGFsLWdhbGxlcnkiPjwvdGJvZHk+PC90YWJsZT4NCgk8L2Zvcm0+DQoNCg0KCTwhLS0gbW9kYWwtZ2FsbGVyeSBpcyB0aGUgbW9kYWwgZGlhbG9nIHVzZWQgZm9yIHRoZSBpbWFnZSBnYWxsZXJ5IC0tPg0KCTxkaXYgaWQ9Im1vZGFsLWdhbGxlcnkiIGNsYXNzPSJtb2RhbCBtb2RhbC1nYWxsZXJ5IGhpZGUgZmFkZSIgZGF0YS1maWx0ZXI9IjpvZGQiPg0KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KCQkJPGEgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIj4mdGltZXM7PC9hPg0KCQkJPGgzIGNsYXNzPSJtb2RhbC10aXRsZSI+PC9oMz4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPjxkaXYgY2xhc3M9Im1vZGFsLWltYWdlIj48L2Rpdj48L2Rpdj4NCgkJPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4NCgkJCTxhIGNsYXNzPSJidG4gbW9kYWwtZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj4NCgkJCQk8aSBjbGFzcz0iaWNvbi1kb3dubG9hZCI+PC9pPg0KCQkJCTxzcGFuPkRvd25sb2FkPC9zcGFuPg0KCQkJPC9hPg0KCQkJPGEgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyBtb2RhbC1wbGF5IG1vZGFsLXNsaWRlc2hvdyIgZGF0YS1zbGlkZXNob3c9IjUwMDAiPg0KCQkJCTxpIGNsYXNzPSJpY29uLXBsYXkgaWNvbi13aGl0ZSI+PC9pPg0KCQkJCTxzcGFuPlNsaWRlc2hvdzwvc3Bhbj4NCgkJCTwvYT4NCgkJCTxhIGNsYXNzPSJidG4gYnRuLWluZm8gbW9kYWwtcHJldiI+DQoJCQkJPGkgY2xhc3M9Imljb24tYXJyb3ctbGVmdCBpY29uLXdoaXRlIj48L2k+DQoJCQkJPHNwYW4+UHJldmlvdXM8L3NwYW4+DQoJCQk8L2E+DQoJCQk8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IG1vZGFsLW5leHQiPg0KCQkJCTxzcGFuPk5leHQ8L3NwYW4+DQoJCQkJPGkgY2xhc3M9Imljb24tYXJyb3ctcmlnaHQgaWNvbi13aGl0ZSI+PC9pPg0KCQkJPC9hPg0KCQk8L2Rpdj4NCgk8L2Rpdj4NCjwvZGl2Pg0Ke2xpdGVyYWx9DQo8IS0tIFRoZSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGZpbGVzIGF2YWlsYWJsZSBmb3IgdXBsb2FkIC0tPg0KPHNjcmlwdCBpZD0idGVtcGxhdGUtdXBsb2FkIiB0eXBlPSJ0ZXh0L3gtdG1wbCI+DQp7JSBmb3IgKHZhciBpPTAsIGZpbGU7IGZpbGU9by5maWxlc1tpXTsgaSsrKSB7ICV9DQogICAgPHRyIGNsYXNzPSJ0ZW1wbGF0ZS11cGxvYWQgZmFkZSI+DQogICAgICAgIDx0ZCBjbGFzcz0icHJldmlldyI+PHNwYW4gY2xhc3M9ImZhZGUiPjwvc3Bhbj48L3RkPg0KICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPjxzcGFuPnslPWZpbGUubmFtZSV9PC9zcGFuPjwvdGQ+DQogICAgICAgIDx0ZCBjbGFzcz0ic2l6ZSI+PHNwYW4+eyU9by5mb3JtYXRGaWxlU2l6ZShmaWxlLnNpemUpJX08L3NwYW4+PC90ZD4NCiAgICAgICAgeyUgaWYgKGZpbGUuZXJyb3IpIHsgJX0NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXJyb3IiIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbXBvcnRhbnQiPnslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yJX08L3NwYW4+IHslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yc1tmaWxlLmVycm9yXSB8fCBmaWxlLmVycm9yJX08L3RkPg0KICAgICAgICB7JSB9IGVsc2UgaWYgKG8uZmlsZXMudmFsaWQgJiYgIWkpIHsgJX0NCiAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcyBwcm9ncmVzcy1zdWNjZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIj48ZGl2IGNsYXNzPSJiYXIiIHN0eWxlPSJ3aWR0aDowJTsiPjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDx0ZCBjbGFzcz0ic3RhcnQiPnslIGlmICghby5vcHRpb25zLmF1dG9VcGxvYWQpIHsgJX0NCiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPg0KICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPg0KICAgICAgICAgICAgICAgICAgICA8c3Bhbj57JT1sb2NhbGUuZmlsZXVwbG9hZC5zdGFydCV9PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICAgICAgeyUgfSAlfTwvdGQ+DQogICAgICAgIHslIH0gZWxzZSB7ICV9DQogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMiI+PC90ZD4NCiAgICAgICAgeyUgfSAlfQ0KICAgICAgICA8dGQgY2xhc3M9ImNhbmNlbCI+eyUgaWYgKCFpKSB7ICV9DQogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXdhcm5pbmciPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLWJhbi1jaXJjbGUgaWNvbi13aGl0ZSI+PC9pPg0KICAgICAgICAgICAgICAgIDxzcGFuPnslPWxvY2FsZS5maWxldXBsb2FkLmNhbmNlbCV9PC9zcGFuPg0KICAgICAgICAgICAgPC9idXR0b24+DQogICAgICAgIHslIH0gJX08L3RkPg0KICAgIDwvdHI+DQp7JSB9ICV9DQo8L3NjcmlwdD4NCjwhLS0gVGhlIHRlbXBsYXRlIHRvIGRpc3BsYXkgZmlsZXMgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtLT4NCjxzY3JpcHQgaWQ9InRlbXBsYXRlLWRvd25sb2FkIiB0eXBlPSJ0ZXh0L3gtdG1wbCI+DQp7JSBmb3IgKHZhciBpPTAsIGZpbGU7IGZpbGU9by5maWxlc1tpXTsgaSsrKSB7ICV9DQogICAgPHRyIGNsYXNzPSJ0ZW1wbGF0ZS1kb3dubG9hZCBmYWRlIj4NCiAgICAgICAgeyUgaWYgKGZpbGUuZXJyb3IpIHsgJX0NCiAgICAgICAgICAgIDx0ZD48L3RkPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj48c3Bhbj57JT1maWxlLm5hbWUlfTwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJzaXplIj48c3Bhbj57JT1vLmZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSklfTwvc3Bhbj48L3RkPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJlcnJvciIgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWltcG9ydGFudCI+eyU9bG9jYWxlLmZpbGV1cGxvYWQuZXJyb3IlfTwvc3Bhbj4geyU9bG9jYWxlLmZpbGV1cGxvYWQuZXJyb3JzW2ZpbGUuZXJyb3JdIHx8IGZpbGUuZXJyb3IlfTwvdGQ+DQogICAgICAgIHslIH0gZWxzZSB7ICV9DQogICAgICAgICAgICA8dGQgY2xhc3M9InByZXZpZXciPnslIGlmIChmaWxlLnRodW1ibmFpbF91cmwpIHsgJX0NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JT1maWxlLnVybCV9IiB0aXRsZT0ieyU9ZmlsZS5uYW1lJX0iIHJlbD0iZ2FsbGVyeSIgZG93bmxvYWQ9InslPWZpbGUubmFtZSV9Ij48aW1nIHNyYz0ieyU9ZmlsZS50aHVtYm5haWxfdXJsJX0iPjwvYT4NCiAgICAgICAgICAgIHslIH0gJX08L3RkPg0KICAgICAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj4NCiAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JT1maWxlLnVybCV9IiB0aXRsZT0ieyU9ZmlsZS5uYW1lJX0iIHJlbD0ieyU9ZmlsZS50aHVtYm5haWxfdXJsJiYnZ2FsbGVyeSclfSIgZG93bmxvYWQ9InslPWZpbGUubmFtZSV9Ij57JT1maWxlLm5hbWUlfTwvYT4NCiAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPjxzcGFuPnslPW8uZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKSV9PC9zcGFuPjwvdGQ+DQogICAgICAgICAgICB7JSANCg0KCQkJLy9zZWUgb3RoZXIgZXh0ZW5zaW9ucyBzdXBwb3J0ZWQgOiBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9kcml2ZS9hbnN3ZXIvMjQyMzQ4NT9obD1lbiZwPWRvY3Nfdmlld2VyDQoJCQkNCgkJCQl2YXIgZ0V4dHM9WyIucGRmIiwiLmRvYyIsIi5kb2N4IiwiLnhscyIsInhsc3giLCIub3RoZXJFeHRlbnRpb24iXTsNCgkJCQlwb3MgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTsNCgkJCQlleHQgPSBmaWxlLm5hbWUuc3Vic3RyKHBvcykudG9Mb3dlckNhc2UoKTsNCgkJCQlpc0dWaWV3ZXIgPSBmYWxzZTsNCgkJCQlmb3IgKHZhciBlPTAsIGdFeHQ7IGdFeHQ9Z0V4dHNbZV07IGUrKykgew0KCQkJCQlpZiAoZXh0ID09IGdFeHQpIHsNCgkJCQkJCWlzR1ZpZXdlciA9IHRydWU7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoaXNHVmlld2VyKSB7IA0KCQkJJX0NCgkJCQk8dGQ+PC90ZD4NCgkJCQk8dGQgY2xhc3M9ImdWaWV3ZXIiPg0KPGEgY2xhc3M9J2J0biBidG4taW5mbycgdGFyZ2V0PSdfYmxhbmsnDQpocmVmPSdodHRwczovL2RvY3MuZ29vZ2xlLmNvbS92aWV3ZXI/dXJsPXslPSBlbmNvZGVVUklDb21wb25lbnQoZmlsZS51cmwpICV9Jz4NCgkJCQkJCTxpIGNsYXNzPSdpY29uLWV5ZS1vcGVuJz48L2k+DQoJCQkJCQk8c3Bhbj5PcGVuIFZpZXdlcjwvc3Bhbj4NCgkJCQkJPC9hPg0KCQkJCQk8L3RkPg0KCQkJeyUgfSBlbHNlIHsgJX0NCgkJCQk8dGQgY29sc3Bhbj0iMiI+eyU9IGV4dCAlfTwvdGQ+DQoJCQl7JSB9ICV9DQoJCQkNCiAgICAgICAgeyUgfSAlfQ0KCQkNCiAgICAgICAgPHRkIGNsYXNzPSJkZWxldGUiPg0KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiIGRhdGEtdHlwZT0ieyU9ZmlsZS5kZWxldGVfdHlwZSV9IiBkYXRhLXVybD0ieyU9ZmlsZS5kZWxldGVfdXJsJX17L2xpdGVyYWx9JmFtcDtuYW1lPXskbmFtZX0mYW1wO2hhc2g9eyRoYXNofXtsaXRlcmFsfSI+DQogICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tdHJhc2ggaWNvbi13aGl0ZSI+PC9pPg0KICAgICAgICAgICAgICAgIDxzcGFuPnslPWxvY2FsZS5maWxldXBsb2FkLmRlc3Ryb3klfTwvc3Bhbj4NCiAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkZWxldGUiIHZhbHVlPSIxIj4NCiAgICAgICAgPC90ZD4NCiAgICA8L3RyPg0KeyUgfSAlfQ0KPC9zY3JpcHQ+ey9saXRlcmFsfQ0KDQoNCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PiANCjwhLS0gVGhlIGpRdWVyeSBVSSB3aWRnZXQgZmFjdG9yeSwgY2FuIGJlIG9taXR0ZWQgaWYgalF1ZXJ5IFVJIGlzIGFscmVhZHkgaW5jbHVkZWQgLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy92ZW5kb3IvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBUZW1wbGF0ZXMgcGx1Z2luIGlzIGluY2x1ZGVkIHRvIHJlbmRlciB0aGUgdXBsb2FkL2Rvd25sb2FkIGxpc3RpbmdzIC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvdG1wbC5taW4uanMiPjwvc2NyaXB0Pg0KPCEtLSBUaGUgTG9hZCBJbWFnZSBwbHVnaW4gaXMgaW5jbHVkZWQgZm9yIHRoZSBwcmV2aWV3IGltYWdlcyBhbmQgaW1hZ2UgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2xvYWQtaW1hZ2UubWluLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIENhbnZhcyB0byBCbG9iIHBsdWdpbiBpcyBpbmNsdWRlZCBmb3IgaW1hZ2UgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2NhbnZhcy10by1ibG9iLm1pbi5qcyI+PC9zY3JpcHQ+DQo8IS0tIEJvb3RzdHJhcCBKUyBhbmQgQm9vdHN0cmFwIEltYWdlIEdhbGxlcnkgYXJlIG5vdCByZXF1aXJlZCwgYnV0IGluY2x1ZGVkIGZvciB0aGUgZGVtbyAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvYm9vdHN0cmFwLWltYWdlLWdhbGxlcnkubWluLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIElmcmFtZSBUcmFuc3BvcnQgaXMgcmVxdWlyZWQgZm9yIGJyb3dzZXJzIHdpdGhvdXQgc3VwcG9ydCBmb3IgWEhSIGZpbGUgdXBsb2FkcyAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5pZnJhbWUtdHJhbnNwb3J0LmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIGJhc2ljIEZpbGUgVXBsb2FkIHBsdWdpbiAtLT4NCjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5maWxldXBsb2FkLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIEZpbGUgVXBsb2FkIGZpbGUgcHJvY2Vzc2luZyBwbHVnaW4gLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC1mcC5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBGaWxlIFVwbG9hZCB1c2VyIGludGVyZmFjZSBwbHVnaW4gLS0+DQo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC11aS5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBsb2NhbGl6YXRpb24gc2NyaXB0IC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvbG9jYWxlLmpzIj48L3NjcmlwdD4NCjwhLS0gVGhlIG1haW4gYXBwbGljYXRpb24gc2NyaXB0IC0tPg0KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvbWFpbi5qcyI+PC9zY3JpcHQ+DQo8IS0tIFRoZSBYRG9tYWluUmVxdWVzdCBUcmFuc3BvcnQgaXMgaW5jbHVkZWQgZm9yIGNyb3NzLWRvbWFpbiBmaWxlIGRlbGV0aW9uIGZvciBJRTgrIC0tPg0KPCEtLVtpZiBndGUgSUUgOF0+PHNjcmlwdCBzcmM9InskcGF0aH0vanMvY29ycy9qcXVlcnkueGRyLXRyYW5zcG9ydC5qcyI+PC9zY3JpcHQ+PCFbZW5kaWZdLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/skeleton.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9PD9waHAKCmlmKCFpc3NldCgkX0dFVFsnaGFzaCddKSB8fCAgInsvbGl0ZXJhbH17JGtleTJ9e2xpdGVyYWx9IiAhPSAkX0dFVFsnaGFzaCddKQogIGV4aXQ7CgpjbGFzcyBDbXNVcGxvYWRIYW5kbGVyIGV4dGVuZHMgVXBsb2FkSGFuZGxlcgp7IAogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICAkcmVwbGFjZSA9IGFycmF5KAogICAgICB7L2xpdGVyYWx9CiAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgICA9PiAieyRhY2NlcHRfZmlsZV90eXBlc30iLAogICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4geyRtYXhfbnVtYmVyX29mX2ZpbGVzfSwKCiAgICAgICdtYXhfd2lkdGgnICAgICAgICAgICA9PiB7JG1heF93aWR0aH0sCiAgICAgICdtYXhfaGVpZ2h0JyAgICAgICAgICA9PiB7JG1heF9oZWlnaHR9LAogICAgICAnbWluX3dpZHRoJyAgICAgICAgICAgPT4geyRtaW5fd2lkdGh9LAogICAgICAnbWluX2hlaWdodCcgICAgICAgICAgPT4geyRtaW5faGVpZ2h0fSwKICAgICAgCiAgICAgICd1cGxvYWRfZGlyJyAgICAgICAgICA9PiAneyRyb290X3BhdGh9eyRkaXJfcGF0aH0nLkRJUkVDVE9SWV9TRVBBUkFUT1IsCiAgICAgICd1cGxvYWRfdXJsJyAgICAgICAgICA9PiAneyRyb290X3VybH17JGRpcl91cmx9LycsCgogICAgICAnaW1hZ2VfdmVyc2lvbnMnICAgICAgPT4gYXJyYXkoCiAgICAgICAgJ3RodW1ibmFpbCcgICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgJ3VwbG9hZF9kaXInICAgICAgICAgID0+ICd7JHJvb3RfcGF0aH17JGRpcl9wYXRofScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGh1bWJuYWlscycuRElSRUNUT1JZX1NFUEFSQVRPUiwKICAgICAgICAgICd1cGxvYWRfdXJsJyAgICAgICAgICA9PiAneyRyb290X3VybH17JGRpcl91cmx9L3RodW1ibmFpbHMvJywKICAgICAgICAgICkKICAgICAgICApLAogICAgICB7bGl0ZXJhbH0KICAgICk7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRyZXBsYWNlKTsKCiAgfQoKICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRyaW1fZmlsZV9uYW1lKCRuYW1lLCAkdHlwZSwgJGluZGV4KXsKICAgICAgJGZpbGVfbmFtZSA9IHBhcmVudDo6dHJpbV9maWxlX25hbWUoJG5hbWUsICR0eXBlLCAkaW5kZXgpOwogICAgICAKICAgICAgey9saXRlcmFsfXtpZiAkY2xlYW5fbmFtZX0KICAgICAgJGZpbGVfbmFtZSA9ICR0aGlzLT5qcWZ1X3JlbW92ZV9hY2NlbnRzKCRmaWxlX25hbWUpOwoKICAgICAgJGZpbGVfbmFtZSA9ICR0aGlzLT5qcWZ1X2NsZWFuX2ZpbGVuYW1lKCRmaWxlX25hbWUpOwogICAgICB7L2lmfXtsaXRlcmFsfQoKICAgICAgcmV0dXJuICRmaWxlX25hbWU7CiAgICB9CgogICAgey9saXRlcmFsfXtpZiAkY2xlYW5fbmFtZX17bGl0ZXJhbH0KICAgIHByaXZhdGUgZnVuY3Rpb24ganFmdV9yZW1vdmVfYWNjZW50cygkc3RyLCAkY2hhcnNldD0ndXRmLTgnKQogICAgewogICAgICAgICRzdHIgPSBodG1sZW50aXRpZXMoJHN0ciwgRU5UX05PUVVPVEVTLCAkY2hhcnNldCk7CiAgICAgICAgCiAgICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnIyYoW0EtemEtel0pKD86YWN1dGV8Y2VkaWx8Y2lyY3xncmF2ZXxvcm58cmluZ3xzbGFzaHx0aHx0aWxkZXx1bWwpOyMnLCAnXDEnLCAkc3RyKTsKICAgICAgICAkc3RyID0gcHJlZ19yZXBsYWNlKCcjJihbQS16YS16XXsyfSkoPzpsaWcpOyMnLCAnXDEnLCAkc3RyKTsgLy8gcG91ciBsZXMgbGlnYXR1cmVzIGUuZy4gJyZvZWxpZzsnCiAgICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnIyZbXjtdKzsjJywgJycsICRzdHIpOyAvLyBzdXBwcmltZSBsZXMgYXV0cmVzIGNhcmFjdMOocmVzCiAgICAgICAgCiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBqcWZ1X2NsZWFuX2ZpbGVuYW1lKCRzdHIpewogICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnI1teQS16YS16MC05XC5fXC1dIycsICdfJywgJHN0cik7CiAgICAgICByZXR1cm4gJHN0cjsKICAgIH0KICAgICB7L2xpdGVyYWx9ey9pZn17bGl0ZXJhbH0KICAKfSAKPz57L2xpdGVyYWx9]]></data>
	</file>
</module>
