<?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.0.5</version>
  <mincmsversion>1.10.0</mincmsversion>
	<help><![CDATA[CQk8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4KCQk8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlZ3JhdGlvbiBvZiB0aGUgZ3JlYXQgcGx1Z2luIEpRdWVyeSBGaWxlIFVwbG9hZCBpbnRvIHRoZSBncmVhdCBDbXMgTWFkZSBTaW1wbGU8L3A+CgkJPHA+U2VlIG1vcmUgb24gaHR0cDovL2JsdWVpbXAuZ2l0aHViLmNvbS9qUXVlcnktRmlsZS1VcGxvYWQvPC9wPgoJCTxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4KCQk8cD5Xcml0ZSBpbnRvIHlvdXIgY29udGVudCA6IHtKUXVlcnlGVX0gPC9wPgoJCTxoMz5Ib3cgZG8gSSB1c2UgaXQgPyAoQWR2YW5jZSB1c2FnZSk8L2gzPgoJCTxwPllvdSBjYW4gZWFzaWx5IGFzc29jaWF0ZSB0aGlzIG1vZHVsZSB3aXRoIEZFVSBhbmQgY3JlYXRlIGEgZGlmZmVyZW50IHVwbG9hZCBwbGF0Zm9ybSBmb3IgZWFjaCBvZiB5b3VyIHVzZXI8L3A+CgkJPHA+IEV4YW1wbGUgb2YgY29kZSA8L3A+CgkJPHByZSBzdHlsZT0ibWFyZ2luOiA1cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYig3MSwgNjgsIDY4KTsgY29sb3I6IHJnYigyLCAxODcsIDApOyBwYWRkaW5nOiA1cHg7Ij4KCQkJe2lmICRjY3VzZXItPm1lbWJlcm9mKCJBZG1pbiIpfQoJCQkJe0pRdWVyeUZVIHRlbXBsYXRlPSJmdWxsIiBudW1iZXI9MTAwIGFjY2VwdF9maWxlX3R5cGVzPScvXC4odHh0fGdpZnxqcGU/Z3xwbmd8cHNkfHBkZikkL2knfQoJCQl7ZWxzZX0KCQkJCXtKUXVlcnlGVSB0ZW1wbGF0ZT0iYmFzaWMiIG51bWJlcj0xMCBhY2NlcHRfZmlsZV90eXBlcz0nL1wuKGdpZnxqcGU/Z3xwbmcpJC9pJ30KCQkJey9pZn0KCQk8L3ByZT4KCQk8aDM+SG93IGNhbiBpIGFjdGl2YXRlIHRoZSBjbGllbnQncyBzaWRlIHJlc2l6aW5nID8gKEFkdmFuY2UgdXNhZ2UpPC9oMz4KCQk8cD5KUXVlcnkgRmlsZSBVcGxvYWQgY2FuIHJlc2l6ZSB0aGUgYmlnIHBpY3R1cmVzIEJFRk9SRSBzdGFydGluZyB0aGUgdXBsb2Fkcy4gVG8gYWN0aXZhdGUgdGhpcyBmdW5jdGlvbiwgeW91IG11c3QgbW9kaWZ5IHRoZSBmaWxlIC4vbW9kdWxlcy9KUXVlcnlGVS9qcWZ1L2pzL2pxdWVyeS5maWxldXBsb2FkLWZwLmpzIGFuZCB1bmNvbW1lbnQgdGhlIGNvZGUgbGluZSA0MiA6IDwvcD4KCQk8cHJlIHN0eWxlPSJtYXJnaW46IDVweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDcxLCA2OCwgNjgpOyBjb2xvcjogcmdiKDIsIDE4NywgMCk7IHBhZGRpbmc6IDVweDsiPgogICAgICAgICAgICAgIHByb2Nlc3M6IFsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAqLwogICAgICAgICAgICBdLAoJCTwvcHJlPgoJCQoJCTxwPnRvPC9wPgoJCQoJCTxwcmUgc3R5bGU9Im1hcmdpbjogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEsIDY4LCA2OCk7IGNvbG9yOiByZ2IoMiwgMTg3LCAwKTsgcGFkZGluZzogNXB4OyI+CiAgICAgICAgICAgICAgcHJvY2VzczogWwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgXSwKCQk8L3ByZT4KCQk8cD4gSXQncyB2ZXJ5IHNpbXBsZSBidXQgPHNwYW4gc3R5bGU9ImNvbG9yOiNGMDAiPnlvdSBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlc2VzIGNoYW5nZXMgd2lsbCBiZSBsb3N0IG9uIHRoZSBuZXh0IHVwZ3JhZGUgb2YgbXkgbW9kdWxlPC9zcGFuPi4gSSBkb24ndCBoYXZlIG90aGVyIHNvbHV0aW9uLiBTb3JyeSBmb3IgdGhhdC4gQlRXIElmIHlvdSBoYXZlIGEgc29sdXRpb24sIGRvbid0IGhlc2l0ZSB0byBjb250YWN0IG1lICE8L3A+PGgzPlBhcmFtJmVncmF2ZTt0cmVzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW0mZWdyYXZlO3RyZSB1dGlsaXMmZWFjdXRlOyBwb3VyIHNwJmVhY3V0ZTtjaWZpZXIgZGFucyBxdWVsbGUgbGFuZ3VlIGFmZmljaGVyIGxlIG1vZHVsZSBkYW5zIGxhIHBhcnRpZSBwdWJsaXF1ZS4gQ2UgcGFyYW0mZWdyYXZlO3RyZSBuJiMwMzk7ZXN0IHBhcyBzdXBwb3J0JmVhY3V0ZTsgb3UgdXRpbGUgcG91ciB0b3VzIGxlcyBtb2R1bGVzLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWNjZXB0X2ZpbGVfdHlwZXM9Ii9cLih0eHR8Z2lmfGpwZT9nfHBuZykkL2kiIC0gUmVnZXggb2YgdGhlIGZpbGVzIGV4dGVuc2lvbnMgdGhhdCBhcmUgYWxsb3dlZC4gQnkgRGVmYXVsdCA6ICcvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pJzwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbnVtYmVyPSI5OTk5OSIgLSBOdW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgaW4gdGhlIHVwbG9hZHMgZGlyZWN0b3J5IGF0IHRoZSBzYW1lIHRpbWU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG1heF93aWR0aD0iMCIgLSBUaGUgbWF4IHdpZHRoIGZvciB0aGUgaW1hZ2VzIHVwbG9hZGVkLiBFeGVtcGxlIDogbWF4X3dpZHRoPTE1MDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbWF4X2hlaWdodD0iMCIgLSBUaGUgbWF4X2hlaWdodCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1heF9oZWlnaHQ9MTUwPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBtaW5fd2lkdGg9IjAiIC0gVGhlIG1pbiB3aWR0aCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1pbl93aWR0aD0xNTAuIEJ5IERlZmF1bHQgOiBtaW5fd2lkdGg9MDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbWluX2hlaWdodD0iMCIgLSBUaGUgbWluIGhlaWdodCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1pbl9oZWlnaHQ9MTUwLiBCeSBEZWZhdWx0IDogbWluX2hlaWdodD0wPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBjbGVhbl9uYW1lPSJ0cnVlIiAtIGlmIHRydWUsIHdpbGwgcmVwbGFjZSBhY2NlbnRzLCBzcGFjZXMgYW5kIG90aGVyIHNwYWNpYWxzIGNhcmFjdGVycyBieSBzb21lIG1vcmUgY2xlYW48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRpcl9wYXRoPSIvdXBsb2Fkcy9qcXVlcnlmdSIgLSB0aGUgZGlyZWN0b3J5IHVzZWQgdG8gdXBsb2FkIGZpbGVzLiBCZSBjYXJlZnVsbCwgdXNlICIvIiBvciAiXCIgaW50byBVbml4IG9yIFdpbmRvd3Mgc3lzdGVtPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkaXJfdXJsPSIvdXBsb2Fkcy9qcXVlcnlmdSIgLSB0aGUgdXJsIHVzZWQgdG8gZGlzcGxheSB1cGxvYWRlZCBmaWxlczwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdGVtcGxhdGU9ImZ1bGwiIC0gVGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlLiBBcmUgYWxsb3dlZCA6ICJmdWxsIiwgImJhc2ljIiBhbmQgYWxsIHRoZSB0ZW1wbGF0ZXMgaW50byB0aGUgIi9tb2R1bGVzL0pRdWVyeUZVL3RlbXBsYXRlcyIgZGlyZWN0b3J5PC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0ZXVyJm5ic3A7OiBLZXZpbiBEYW5lemlzIChha2EgQmVzcykgJmx0O2NvbnRhY3QgYXQgZnVyaWUgcG9pbnQgYmUmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbiA6IDEuMC41PGJyIC8+PGJyIC8+SGlzdG9yaXF1ZSBkZXMgY2hhbmdlbWVudHMmbmJzcDs6PGJyIC8+LS1BZGQgTWUgLSBtb2R1bGU6SlF1ZXJ5RlUgc3RyaW5nOmNoYW5nZWxvZy0tPGJyIC8+]]></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>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKJG15RmluZGVyID0gbmV3IE15RmluZGVyKCRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ3RtcCcuRElSRUNUT1JZX1NFUEFSQVRPUi4nY2FjaGUnLkRJUkVDVE9SWV9TRVBBUkFUT1IpOwoKJHBhcmFtZXRlcnMgPSBhcnJheSgpOwoKLy9CeSBkZWZhdWx0IDogJy9cLih0eHR8Z2lmfGpwZT9nfHBuZykkL2knCmlmKGlzc2V0KCRwYXJhbXNbJ2FjY2VwdF9maWxlX3R5cGVzJ10pKQp7CgkkcGFyYW1ldGVyc1snYWNjZXB0X2ZpbGVfdHlwZXMnXSA9IGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydhY2NlcHRfZmlsZV90eXBlcyddLEVOVF9RVU9URVMsJ1VURi04Jyk7Cn0KLy9CeSBkZWZhdWx0IDogbnVsbAppZihpc3NldCgkcGFyYW1zWydudW1iZXInXSkpCnsKCSRwYXJhbWV0ZXJzWydtYXhfbnVtYmVyX29mX2ZpbGVzJ10gPSAkcGFyYW1zWydudW1iZXInXTsKfQovL0J5IGRlZmF1bHQgOiBudWxsCmlmKGlzc2V0KCRwYXJhbXNbJ21heF93aWR0aCddKSkKewoJJHBhcmFtZXRlcnNbJ21heF93aWR0aCddID0gJHBhcmFtc1snbWF4X3dpZHRoJ107Cn0KLy9CeSBkZWZhdWx0IDogbnVsbAppZihpc3NldCgkcGFyYW1zWydtYXhfaGVpZ2h0J10pKQp7CgkkcGFyYW1ldGVyc1snbWF4X2hlaWdodCddID0gJHBhcmFtc1snbWF4X2hlaWdodCddOwp9Ci8vQnkgZGVmYXVsdCA6IDEgKHB4KQppZihpc3NldCgkcGFyYW1zWydtaW5fd2lkdGgnXSkpCnsKCSRwYXJhbWV0ZXJzWydtaW5fd2lkdGgnXSA9ICRwYXJhbXNbJ21pbl93aWR0aCddOwp9Ci8vQnkgZGVmYXVsdCA6IDEgKHB4KQppZihpc3NldCgkcGFyYW1zWydtaW5faGVpZ2h0J10pKQp7CgkkcGFyYW1ldGVyc1snbWluX2hlaWdodCddID0gJHBhcmFtc1snbWluX2hlaWdodCddOwp9Ci8vQnkgZGVmYXVsdCA6IHRydWUKaWYoaXNzZXQoJHBhcmFtc1snY2xlYW5fbmFtZSddKSkKewoJJHBhcmFtZXRlcnNbJ2NsZWFuX25hbWUnXSA9ICRwYXJhbXNbJ2NsZWFuX25hbWUnXTsKfQovL0J5IGRlZmF1bHQgOiAiXHVwbG9hZHNcanF1ZXJ5ZnUiCmlmKGlzc2V0KCRwYXJhbXNbJ2Rpcl9wYXRoJ10pKQp7CgkkcGFyYW1ldGVyc1snZGlyX3BhdGgnXSA9ICRwYXJhbXNbJ2Rpcl9wYXRoJ107Cn0KLy9CeSBkZWZhdWx0IDogIi91cGxvYWRzL2pxdWVyeWZ1IgppZihpc3NldCgkcGFyYW1zWydkaXJfdXJsJ10pKQp7CgkkcGFyYW1ldGVyc1snZGlyX3VybCddID0gJHBhcmFtc1snZGlyX3VybCddOwp9CgovL0J5IGRlZmF1bHQgOiAiZnVsbCIKJHRwbCA9ICdmdWxsJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0cGwgPSAkcGFyYW1zWyd0ZW1wbGF0ZSddOwp9CgovL0NyZWF0ZSBza2VsZXRvbiBmcm9tIHRlbXBsYXRlIApsaXN0KCRuYW1lLCAkaGFzaCkgPSAkbXlGaW5kZXItPm1ha2VUaGVGaWxlKCR0aGlzLCAkY29uZmlnLCAkcGFyYW1ldGVycyk7Cgokc21hcnR5LT5hc3NpZ24oJ3BhdGgnLCRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLidtb2R1bGVzJy4nLycuJHRoaXMtPkdldE5hbWUoKS4nLycuImpxZnUiKTsKJHNtYXJ0eS0+YXNzaWduKCduYW1lJywkbmFtZSk7CiRzbWFydHktPmFzc2lnbignaGFzaCcsJGhhc2gpOwoKCiRodG1sID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgkdHBsLicudHBsJyk7Ci8vJGh0bWwgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdiYXNpYy50cGwnKTsKCmVjaG8gJGh0bWw7Cgo/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[QGNoYXJzZXQgJ1VURi04JzsKLm5hdmJhci1maXhlZC10b3B7cG9zaXRpb246YWJzb2x1dGU7fQoubmF2YmFyIC5uYXYgbGl7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O30KLm5hdmJhciAubmF2IGxpIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTBweCAxMXB4O2xpbmUtaGVpZ2h0OjE5cHg7Y29sb3I6I2ZmZjt9Ci5zcGFuMSwuc3BhbjIsLnNwYW4zLC5zcGFuNCwuc3BhbjUsLnNwYW42LC5zcGFuNywuc3BhbjgsLnNwYW45LC5zcGFuMTAsLnNwYW4xMSwuc3BhbjEye2Rpc3BsYXk6aW5saW5lO2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MjBweDt9Ci5tb2RhbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2ZpbHRlcjpub25lO30KaW5wdXR7d2lkdGg6YXV0bzt9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap-image-gallery.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsKLm1vZGFsLWdhbGxlcnl7d2lkdGg6YXV0bzttYXgtaGVpZ2h0Om5vbmU7fQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtYm9keXttYXgtaGVpZ2h0Om5vbmU7fQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtdGl0bGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LWhlaWdodDo1NHB4O292ZXJmbG93OmhpZGRlbjt9Ci5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1pbWFnZXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46YXV0bzttaW4td2lkdGg6MTI4cHg7bWluLWhlaWdodDoxMjhweDtvdmVyZmxvdzpoaWRkZW47Y3Vyc29yOnBvaW50ZXI7fQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtaW1hZ2U6aG92ZXI6YmVmb3JlLC5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1pbWFnZTpob3ZlcjphZnRlcntjb250ZW50OifigLknO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDoxNXB4O3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLXRvcDotMjBweDtmb250LXNpemU6NjBweDtmb250LXdlaWdodDoxMDA7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojZmZmZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6IzIyMjIyMjtib3JkZXI6M3B4IHNvbGlkICNmZmZmZmY7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjIzcHg7LW1vei1ib3JkZXItcmFkaXVzOjIzcHg7Ym9yZGVyLXJhZGl1czoyM3B4O29wYWNpdHk6MC41O2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTt6LWluZGV4OjE7fQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtaW1hZ2U6aG92ZXI6YWZ0ZXJ7Y29udGVudDon4oC6JztsZWZ0OmF1dG87cmlnaHQ6MTVweDt9Ci5tb2RhbC1zaW5nbGUgLm1vZGFsLWltYWdlOmhvdmVyOmJlZm9yZSwubW9kYWwtc2luZ2xlIC5tb2RhbC1pbWFnZTpob3ZlcjphZnRlcntkaXNwbGF5Om5vbmU7fQoubW9kYWwtbG9hZGluZyAubW9kYWwtaW1hZ2V7YmFja2dyb3VuZDp1cmwoLi4vaW1nL2xvYWRpbmcuZ2lmKSBjZW50ZXIgbm8tcmVwZWF0O30KLm1vZGFsLWdhbGxlcnkuZmFkZSAubW9kYWwtaW1hZ2V7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVhc2UsIGhlaWdodCAwLjE1cyBlYXNlOy1tb3otdHJhbnNpdGlvbjp3aWR0aCAwLjE1cyBlYXNlLCBoZWlnaHQgMC4xNXMgZWFzZTstbXMtdHJhbnNpdGlvbjp3aWR0aCAwLjE1cyBlYXNlLCBoZWlnaHQgMC4xNXMgZWFzZTstby10cmFuc2l0aW9uOndpZHRoIDAuMTVzIGVhc2UsIGhlaWdodCAwLjE1cyBlYXNlO3RyYW5zaXRpb246d2lkdGggMC4xNXMgZWFzZSwgaGVpZ2h0IDAuMTVzIGVhc2U7fQoubW9kYWwtZ2FsbGVyeSAubW9kYWwtaW1hZ2UgKntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtvcGFjaXR5OjA7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCk7fQoubW9kYWwtZ2FsbGVyeS5mYWRlIC5tb2RhbC1pbWFnZSAqey13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgbGluZWFyOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgbGluZWFyOy1tcy10cmFuc2l0aW9uOm9wYWNpdHkgMC41cyBsaW5lYXI7LW8tdHJhbnNpdGlvbjpvcGFjaXR5IDAuNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAwLjVzIGxpbmVhcjt9Ci5tb2RhbC1nYWxsZXJ5IC5tb2RhbC1pbWFnZSAqLmlue29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30KLm1vZGFsLWZ1bGxzY3JlZW57Ym9yZGVyOm5vbmU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7b3ZlcmZsb3c6aGlkZGVuO30KLm1vZGFsLWZ1bGxzY3JlZW4ubW9kYWwtbG9hZGluZ3tib3JkZXI6MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7fQoubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtYm9keXtwYWRkaW5nOjA7fQoubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtaGVhZGVyLC5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1mb290ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtsZWZ0OjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7b3BhY2l0eTowO3otaW5kZXg6MjAwMDt9Ci5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1mb290ZXJ7dG9wOmF1dG87Ym90dG9tOjA7fQoubW9kYWwtZnVsbHNjcmVlbiAuY2xvc2UsLm1vZGFsLWZ1bGxzY3JlZW4gLm1vZGFsLXRpdGxle2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAwIDJweCByZ2JhKDMzLCAzMywgMzMsIDAuOCk7fQoubW9kYWwtZnVsbHNjcmVlbiAubW9kYWwtaGVhZGVyOmhvdmVyLC5tb2RhbC1mdWxsc2NyZWVuIC5tb2RhbC1mb290ZXI6aG92ZXJ7b3BhY2l0eToxO30KQG1lZGlhIChtYXgtd2lkdGg6NDgwcHgpey5tb2RhbC1nYWxsZXJ5IC5idG4gc3BhbntkaXNwbGF5Om5vbmU7fX0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap-responsive.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LmNsZWFyZml4eyp6b29tOjE7fQouY2xlYXJmaXg6YmVmb3JlLC5jbGVhcmZpeDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQouY2xlYXJmaXg6YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci5oaWRlLXRleHR7Zm9udDowLzAgYTtjb2xvcjp0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7fQouaW5wdXQtYmxvY2stbGV2ZWx7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9Ci5oaWRkZW57ZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuO30KLnZpc2libGUtcGhvbmV7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fQoudmlzaWJsZS10YWJsZXR7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fQouaGlkZGVuLWRlc2t0b3B7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fQpAbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnZpc2libGUtcGhvbmV7ZGlzcGxheTppbmhlcml0ICFpbXBvcnRhbnQ7fSAuaGlkZGVuLXBob25le2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30gLmhpZGRlbi1kZXNrdG9we2Rpc3BsYXk6aW5oZXJpdCAhaW1wb3J0YW50O30gLnZpc2libGUtZGVza3RvcHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5NzlweCl7LnZpc2libGUtdGFibGV0e2Rpc3BsYXk6aW5oZXJpdCAhaW1wb3J0YW50O30gLmhpZGRlbi10YWJsZXR7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fSAuaGlkZGVuLWRlc2t0b3B7ZGlzcGxheTppbmhlcml0ICFpbXBvcnRhbnQ7fSAudmlzaWJsZS1kZXNrdG9we2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50IDt9fUBtZWRpYSAobWF4LXdpZHRoOjQ4MHB4KXsubmF2LWNvbGxhcHNley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO30gLnBhZ2UtaGVhZGVyIGgxIHNtYWxse2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MThweDt9IGlucHV0W3R5cGU9ImNoZWNrYm94Il0saW5wdXRbdHlwZT0icmFkaW8iXXtib3JkZXI6MXB4IHNvbGlkICNjY2M7fSAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwPmxhYmVse2Zsb2F0Om5vbmU7d2lkdGg6YXV0bztwYWRkaW5nLXRvcDowO3RleHQtYWxpZ246bGVmdDt9IC5mb3JtLWhvcml6b250YWwgLmNvbnRyb2xze21hcmdpbi1sZWZ0OjA7fSAuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxpc3R7cGFkZGluZy10b3A6MDt9IC5mb3JtLWhvcml6b250YWwgLmZvcm0tYWN0aW9uc3twYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHg7fSAubW9kYWx7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwcHg7cmlnaHQ6MTBweDtsZWZ0OjEwcHg7d2lkdGg6YXV0bzttYXJnaW46MDt9IC5tb2RhbC5mYWRlLmlue3RvcDphdXRvO30gLm1vZGFsLWhlYWRlciAuY2xvc2V7cGFkZGluZzoxMHB4O21hcmdpbjotMTBweDt9IC5jYXJvdXNlbC1jYXB0aW9ue3Bvc2l0aW9uOnN0YXRpYzt9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXtib2R5e3BhZGRpbmctcmlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MjBweDt9IC5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItZml4ZWQtYm90dG9te21hcmdpbi1yaWdodDotMjBweDttYXJnaW4tbGVmdDotMjBweDt9IC5jb250YWluZXItZmx1aWR7cGFkZGluZzowO30gLmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bm9uZTt3aWR0aDphdXRvO2NsZWFyOm5vbmU7dGV4dC1hbGlnbjpsZWZ0O30gLmRsLWhvcml6b250YWwgZGR7bWFyZ2luLWxlZnQ6MDt9IC5jb250YWluZXJ7d2lkdGg6YXV0bzt9IC5yb3ctZmx1aWR7d2lkdGg6MTAwJTt9IC5yb3csLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6MDt9IFtjbGFzcyo9InNwYW4iXSwucm93LWZsdWlkIFtjbGFzcyo9InNwYW4iXXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bzttYXJnaW4tbGVmdDowO30gLmlucHV0LWxhcmdlLC5pbnB1dC14bGFyZ2UsLmlucHV0LXh4bGFyZ2UsaW5wdXRbY2xhc3MqPSJzcGFuIl0sc2VsZWN0W2NsYXNzKj0ic3BhbiJdLHRleHRhcmVhW2NsYXNzKj0ic3BhbiJdLC51bmVkaXRhYmxlLWlucHV0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI4cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7fSAuaW5wdXQtcHJlcGVuZCBpbnB1dCwuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kIGlucHV0W2NsYXNzKj0ic3BhbiJdLC5pbnB1dC1hcHBlbmQgaW5wdXRbY2xhc3MqPSJzcGFuIl17ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bzt9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5NzlweCl7LnJvd3ttYXJnaW4tbGVmdDotMjBweDsqem9vbToxO30gLnJvdzpiZWZvcmUsLnJvdzphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fSAucm93OmFmdGVye2NsZWFyOmJvdGg7fSBbY2xhc3MqPSJzcGFuIl17ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoyMHB4O30gLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLXRvcCAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtYm90dG9tIC5jb250YWluZXJ7d2lkdGg6NzI0cHg7fSAuc3BhbjEye3dpZHRoOjcyNHB4O30gLnNwYW4xMXt3aWR0aDo2NjJweDt9IC5zcGFuMTB7d2lkdGg6NjAwcHg7fSAuc3Bhbjl7d2lkdGg6NTM4cHg7fSAuc3Bhbjh7d2lkdGg6NDc2cHg7fSAuc3Bhbjd7d2lkdGg6NDE0cHg7fSAuc3BhbjZ7d2lkdGg6MzUycHg7fSAuc3BhbjV7d2lkdGg6MjkwcHg7fSAuc3BhbjR7d2lkdGg6MjI4cHg7fSAuc3BhbjN7d2lkdGg6MTY2cHg7fSAuc3BhbjJ7d2lkdGg6MTA0cHg7fSAuc3BhbjF7d2lkdGg6NDJweDt9IC5vZmZzZXQxMnttYXJnaW4tbGVmdDo3NjRweDt9IC5vZmZzZXQxMXttYXJnaW4tbGVmdDo3MDJweDt9IC5vZmZzZXQxMHttYXJnaW4tbGVmdDo2NDBweDt9IC5vZmZzZXQ5e21hcmdpbi1sZWZ0OjU3OHB4O30gLm9mZnNldDh7bWFyZ2luLWxlZnQ6NTE2cHg7fSAub2Zmc2V0N3ttYXJnaW4tbGVmdDo0NTRweDt9IC5vZmZzZXQ2e21hcmdpbi1sZWZ0OjM5MnB4O30gLm9mZnNldDV7bWFyZ2luLWxlZnQ6MzMwcHg7fSAub2Zmc2V0NHttYXJnaW4tbGVmdDoyNjhweDt9IC5vZmZzZXQze21hcmdpbi1sZWZ0OjIwNnB4O30gLm9mZnNldDJ7bWFyZ2luLWxlZnQ6MTQ0cHg7fSAub2Zmc2V0MXttYXJnaW4tbGVmdDo4MnB4O30gLnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjE7fSAucm93LWZsdWlkOmJlZm9yZSwucm93LWZsdWlkOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3ctZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDttYXJnaW4tbGVmdDoyLjc2MjQzMDkzOSU7Km1hcmdpbi1sZWZ0OjIuNzA5MjM5NDQ5NjM4Mjk4JTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJdOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7fSAucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6OTkuOTk5OTk5OTkzJTsqd2lkdGg6OTkuOTQ2ODA4NTAzNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMTF7d2lkdGg6OTEuNDM2NDY0MDgyJTsqd2lkdGg6OTEuMzgzMjcyNTkyNjM4MjklO30gLnJvdy1mbHVpZCAuc3BhbjEwe3dpZHRoOjgyLjg3MjkyODE3MTAwMDAxJTsqd2lkdGg6ODIuODE5NzM2NjgxNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zMDkzOTIyNiU7KndpZHRoOjc0LjI1NjIwMDc3MDYzODI5JTt9IC5yb3ctZmx1aWQgLnNwYW44e3dpZHRoOjY1Ljc0NTg1NjM0OTAwMDAxJTsqd2lkdGg6NjUuNjkyNjY0ODU5NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuN3t3aWR0aDo1Ny4xODIzMjA0MzgwMDAwMDUlOyp3aWR0aDo1Ny4xMjkxMjg5NDg2MzgzMDQlO30gLnJvdy1mbHVpZCAuc3BhbjZ7d2lkdGg6NDguNjE4Nzg0NTI3JTsqd2lkdGg6NDguNTY1NTkzMDM3NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuNXt3aWR0aDo0MC4wNTUyNDg2MTYlOyp3aWR0aDo0MC4wMDIwNTcxMjY2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW40e3dpZHRoOjMxLjQ5MTcxMjcwNSU7KndpZHRoOjMxLjQzODUyMTIxNTYzODMlO30gLnJvdy1mbHVpZCAuc3BhbjN7d2lkdGg6MjIuOTI4MTc2Nzk0JTsqd2lkdGg6MjIuODc0OTg1MzA0NjM4Mjk3JTt9IC5yb3ctZmx1aWQgLnNwYW4ye3dpZHRoOjE0LjM2NDY0MDg4MyU7KndpZHRoOjE0LjMxMTQ0OTM5MzYzODI5OCU7fSAucm93LWZsdWlkIC5zcGFuMXt3aWR0aDo1LjgwMTEwNDk3MiU7KndpZHRoOjUuNzQ3OTEzNDgyNjM4Mjk4JTt9IGlucHV0LHRleHRhcmVhLC51bmVkaXRhYmxlLWlucHV0e21hcmdpbi1sZWZ0OjA7fSBpbnB1dC5zcGFuMTIsdGV4dGFyZWEuc3BhbjEyLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMnt3aWR0aDo3MTRweDt9IGlucHV0LnNwYW4xMSx0ZXh0YXJlYS5zcGFuMTEsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjExe3dpZHRoOjY1MnB4O30gaW5wdXQuc3BhbjEwLHRleHRhcmVhLnNwYW4xMCwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMTB7d2lkdGg6NTkwcHg7fSBpbnB1dC5zcGFuOSx0ZXh0YXJlYS5zcGFuOSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuOXt3aWR0aDo1MjhweDt9IGlucHV0LnNwYW44LHRleHRhcmVhLnNwYW44LC51bmVkaXRhYmxlLWlucHV0LnNwYW44e3dpZHRoOjQ2NnB4O30gaW5wdXQuc3BhbjcsdGV4dGFyZWEuc3BhbjcsLnVuZWRpdGFibGUtaW5wdXQuc3Bhbjd7d2lkdGg6NDA0cHg7fSBpbnB1dC5zcGFuNix0ZXh0YXJlYS5zcGFuNiwudW5lZGl0YWJsZS1pbnB1dC5zcGFuNnt3aWR0aDozNDJweDt9IGlucHV0LnNwYW41LHRleHRhcmVhLnNwYW41LC51bmVkaXRhYmxlLWlucHV0LnNwYW41e3dpZHRoOjI4MHB4O30gaW5wdXQuc3BhbjQsdGV4dGFyZWEuc3BhbjQsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjR7d2lkdGg6MjE4cHg7fSBpbnB1dC5zcGFuMyx0ZXh0YXJlYS5zcGFuMywudW5lZGl0YWJsZS1pbnB1dC5zcGFuM3t3aWR0aDoxNTZweDt9IGlucHV0LnNwYW4yLHRleHRhcmVhLnNwYW4yLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ye3dpZHRoOjk0cHg7fSBpbnB1dC5zcGFuMSx0ZXh0YXJlYS5zcGFuMSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMXt3aWR0aDozMnB4O319QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsucm93e21hcmdpbi1sZWZ0Oi0zMHB4Oyp6b29tOjE7fSAucm93OmJlZm9yZSwucm93OmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IFtjbGFzcyo9InNwYW4iXXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjMwcHg7fSAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtdG9wIC5jb250YWluZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLmNvbnRhaW5lcnt3aWR0aDoxMTcwcHg7fSAuc3BhbjEye3dpZHRoOjExNzBweDt9IC5zcGFuMTF7d2lkdGg6MTA3MHB4O30gLnNwYW4xMHt3aWR0aDo5NzBweDt9IC5zcGFuOXt3aWR0aDo4NzBweDt9IC5zcGFuOHt3aWR0aDo3NzBweDt9IC5zcGFuN3t3aWR0aDo2NzBweDt9IC5zcGFuNnt3aWR0aDo1NzBweDt9IC5zcGFuNXt3aWR0aDo0NzBweDt9IC5zcGFuNHt3aWR0aDozNzBweDt9IC5zcGFuM3t3aWR0aDoyNzBweDt9IC5zcGFuMnt3aWR0aDoxNzBweDt9IC5zcGFuMXt3aWR0aDo3MHB4O30gLm9mZnNldDEye21hcmdpbi1sZWZ0OjEyMzBweDt9IC5vZmZzZXQxMXttYXJnaW4tbGVmdDoxMTMwcHg7fSAub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6MTAzMHB4O30gLm9mZnNldDl7bWFyZ2luLWxlZnQ6OTMwcHg7fSAub2Zmc2V0OHttYXJnaW4tbGVmdDo4MzBweDt9IC5vZmZzZXQ3e21hcmdpbi1sZWZ0OjczMHB4O30gLm9mZnNldDZ7bWFyZ2luLWxlZnQ6NjMwcHg7fSAub2Zmc2V0NXttYXJnaW4tbGVmdDo1MzBweDt9IC5vZmZzZXQ0e21hcmdpbi1sZWZ0OjQzMHB4O30gLm9mZnNldDN7bWFyZ2luLWxlZnQ6MzMwcHg7fSAub2Zmc2V0MnttYXJnaW4tbGVmdDoyMzBweDt9IC5vZmZzZXQxe21hcmdpbi1sZWZ0OjEzMHB4O30gLnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjE7fSAucm93LWZsdWlkOmJlZm9yZSwucm93LWZsdWlkOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9IC5yb3ctZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MjhweDttYXJnaW4tbGVmdDoyLjU2NDEwMjU2NCU7Km1hcmdpbi1sZWZ0OjIuNTEwOTExMDc0NjM4Mjk4JTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IC5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJdOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7fSAucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6MTAwJTsqd2lkdGg6OTkuOTQ2ODA4NTEwNjM4MjklO30gLnJvdy1mbHVpZCAuc3BhbjExe3dpZHRoOjkxLjQ1Mjk5MTQ1MzAwMDAxJTsqd2lkdGg6OTEuMzk5Nzk5OTYzNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMTB7d2lkdGg6ODIuOTA1OTgyOTA2JTsqd2lkdGg6ODIuODUyNzkxNDE2NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zNTg5NzQzNTklOyp3aWR0aDo3NC4zMDU3ODI4Njk2MzgyOSU7fSAucm93LWZsdWlkIC5zcGFuOHt3aWR0aDo2NS44MTE5NjU4MTIwMDAwMSU7KndpZHRoOjY1Ljc1ODc3NDMyMjYzODMlO30gLnJvdy1mbHVpZCAuc3Bhbjd7d2lkdGg6NTcuMjY0OTU3MjY1JTsqd2lkdGg6NTcuMjExNzY1Nzc1NjM4MyU7fSAucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC43MTc5NDg3MTglOyp3aWR0aDo0OC42NjQ3NTcyMjg2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW41e3dpZHRoOjQwLjE3MDk0MDE3MTAwMDAwNSU7KndpZHRoOjQwLjExNzc0ODY4MTYzODMwNCU7fSAucm93LWZsdWlkIC5zcGFuNHt3aWR0aDozMS42MjM5MzE2MjQlOyp3aWR0aDozMS41NzA3NDAxMzQ2MzgzJTt9IC5yb3ctZmx1aWQgLnNwYW4ze3dpZHRoOjIzLjA3NjkyMzA3NyU7KndpZHRoOjIzLjAyMzczMTU4NzYzODMlO30gLnJvdy1mbHVpZCAuc3BhbjJ7d2lkdGg6MTQuNTI5OTE0NTMwMDAwMDAxJTsqd2lkdGg6MTQuNDc2NzIzMDQwNjM4MyU7fSAucm93LWZsdWlkIC5zcGFuMXt3aWR0aDo1Ljk4MjkwNTk4MyU7KndpZHRoOjUuOTI5NzE0NDkzNjM4Mjk4JTt9IGlucHV0LHRleHRhcmVhLC51bmVkaXRhYmxlLWlucHV0e21hcmdpbi1sZWZ0OjA7fSBpbnB1dC5zcGFuMTIsdGV4dGFyZWEuc3BhbjEyLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMnt3aWR0aDoxMTYwcHg7fSBpbnB1dC5zcGFuMTEsdGV4dGFyZWEuc3BhbjExLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMXt3aWR0aDoxMDYwcHg7fSBpbnB1dC5zcGFuMTAsdGV4dGFyZWEuc3BhbjEwLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMHt3aWR0aDo5NjBweDt9IGlucHV0LnNwYW45LHRleHRhcmVhLnNwYW45LC51bmVkaXRhYmxlLWlucHV0LnNwYW45e3dpZHRoOjg2MHB4O30gaW5wdXQuc3BhbjgsdGV4dGFyZWEuc3BhbjgsLnVuZWRpdGFibGUtaW5wdXQuc3Bhbjh7d2lkdGg6NzYwcHg7fSBpbnB1dC5zcGFuNyx0ZXh0YXJlYS5zcGFuNywudW5lZGl0YWJsZS1pbnB1dC5zcGFuN3t3aWR0aDo2NjBweDt9IGlucHV0LnNwYW42LHRleHRhcmVhLnNwYW42LC51bmVkaXRhYmxlLWlucHV0LnNwYW42e3dpZHRoOjU2MHB4O30gaW5wdXQuc3BhbjUsdGV4dGFyZWEuc3BhbjUsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjV7d2lkdGg6NDYwcHg7fSBpbnB1dC5zcGFuNCx0ZXh0YXJlYS5zcGFuNCwudW5lZGl0YWJsZS1pbnB1dC5zcGFuNHt3aWR0aDozNjBweDt9IGlucHV0LnNwYW4zLHRleHRhcmVhLnNwYW4zLC51bmVkaXRhYmxlLWlucHV0LnNwYW4ze3dpZHRoOjI2MHB4O30gaW5wdXQuc3BhbjIsdGV4dGFyZWEuc3BhbjIsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjJ7d2lkdGg6MTYwcHg7fSBpbnB1dC5zcGFuMSx0ZXh0YXJlYS5zcGFuMSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMXt3aWR0aDo2MHB4O30gLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6LTMwcHg7fSAudGh1bWJuYWlscz5saXttYXJnaW4tbGVmdDozMHB4O30gLnJvdy1mbHVpZCAudGh1bWJuYWlsc3ttYXJnaW4tbGVmdDowO319QG1lZGlhIChtYXgtd2lkdGg6OTc5cHgpe2JvZHl7cGFkZGluZy10b3A6MDt9IC5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItZml4ZWQtYm90dG9te3Bvc2l0aW9uOnN0YXRpYzt9IC5uYXZiYXItZml4ZWQtdG9we21hcmdpbi1ib3R0b206MThweDt9IC5uYXZiYXItZml4ZWQtYm90dG9te21hcmdpbi10b3A6MThweDt9IC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1pbm5lcntwYWRkaW5nOjVweDt9IC5uYXZiYXIgLmNvbnRhaW5lcnt3aWR0aDphdXRvO3BhZGRpbmc6MDt9IC5uYXZiYXIgLmJyYW5ke3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6MTBweDttYXJnaW46MCAwIDAgLTVweDt9IC5uYXYtY29sbGFwc2V7Y2xlYXI6Ym90aDt9IC5uYXYtY29sbGFwc2UgLm5hdntmbG9hdDpub25lO21hcmdpbjowIDAgOXB4O30gLm5hdi1jb2xsYXBzZSAubmF2Pmxpe2Zsb2F0Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXY+bGk+YXttYXJnaW4tYm90dG9tOjJweDt9IC5uYXYtY29sbGFwc2UgLm5hdj4uZGl2aWRlci12ZXJ0aWNhbHtkaXNwbGF5Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXYgLm5hdi1oZWFkZXJ7Y29sb3I6Izk5OTk5OTt0ZXh0LXNoYWRvdzpub25lO30gLm5hdi1jb2xsYXBzZSAubmF2PmxpPmEsLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBhe3BhZGRpbmc6NnB4IDE1cHg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojOTk5OTk5Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDt9IC5uYXYtY29sbGFwc2UgLmJ0bntwYWRkaW5nOjRweCAxMHB4IDRweDtmb250LXdlaWdodDpub3JtYWw7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30gLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBsaStsaSBhe21hcmdpbi1ib3R0b206MnB4O30gLm5hdi1jb2xsYXBzZSAubmF2PmxpPmE6aG92ZXIsLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBhOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzIyMjIyMjt9IC5uYXYtY29sbGFwc2UuaW4gLmJ0bi1ncm91cHtwYWRkaW5nOjA7bWFyZ2luLXRvcDo1cHg7fSAubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOnN0YXRpYzt0b3A6YXV0bztsZWZ0OmF1dG87ZGlzcGxheTpibG9jaztmbG9hdDpub25lO21heC13aWR0aDpub25lO3BhZGRpbmc6MDttYXJnaW46MCAxNXB4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm94LXNoYWRvdzpub25lOy1tb3otYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTt9IC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnU6YmVmb3JlLC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnU6YWZ0ZXJ7ZGlzcGxheTpub25lO30gLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSAuZGl2aWRlcntkaXNwbGF5Om5vbmU7fSAubmF2LWNvbGxhcHNlIC5uYXZiYXItZm9ybSwubmF2LWNvbGxhcHNlIC5uYXZiYXItc2VhcmNoe2Zsb2F0Om5vbmU7cGFkZGluZzo5cHggMTVweDttYXJnaW46OXB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgIzIyMjIyMjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjIyMjIyOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTt9IC5uYXZiYXIgLm5hdi1jb2xsYXBzZSAubmF2LnB1bGwtcmlnaHR7ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowO30gLm5hdi1jb2xsYXBzZSwubmF2LWNvbGxhcHNlLmNvbGxhcHNle2hlaWdodDowO292ZXJmbG93OmhpZGRlbjt9IC5uYXZiYXIgLmJ0bi1uYXZiYXJ7ZGlzcGxheTpibG9jazt9IC5uYXZiYXItc3RhdGljIC5uYXZiYXItaW5uZXJ7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctbGVmdDoxMHB4O319QG1lZGlhIChtaW4td2lkdGg6OTgwcHgpey5uYXYtY29sbGFwc2UuY29sbGFwc2V7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzp2aXNpYmxlICFpbXBvcnRhbnQ7fX0K]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/bootstrap.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2s7fQphdWRpbyxjYW52YXMsdmlkZW97ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lOyp6b29tOjE7fQphdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lO30KaHRtbHtmb250LXNpemU6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlO30KYTpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkICMzMzM7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweDt9CmE6aG92ZXIsYTphY3RpdmV7b3V0bGluZTowO30Kc3ViLHN1cHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7fQpzdXB7dG9wOi0wLjVlbTt9CnN1Yntib3R0b206LTAuMjVlbTt9CmltZ3ttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOjA7LW1zLWludGVycG9sYXRpb24tbW9kZTpiaWN1YmljO30KI21hcF9jYW52YXMgaW1ne21heC13aWR0aDpub25lO30KYnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJlYXttYXJnaW46MDtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fQpidXR0b24saW5wdXR7Km92ZXJmbG93OnZpc2libGU7bGluZS1oZWlnaHQ6bm9ybWFsO30KYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGlucHV0OjotbW96LWZvY3VzLWlubmVye3BhZGRpbmc6MDtib3JkZXI6MDt9CmJ1dHRvbixpbnB1dFt0eXBlPSJidXR0b24iXSxpbnB1dFt0eXBlPSJyZXNldCJdLGlucHV0W3R5cGU9InN1Ym1pdCJde2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247fQppbnB1dFt0eXBlPSJzZWFyY2giXXstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDt9CmlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lO30KdGV4dGFyZWF7b3ZlcmZsb3c6YXV0bzt2ZXJ0aWNhbC1hbGlnbjp0b3A7fQouY2xlYXJmaXh7Knpvb206MTt9Ci5jbGVhcmZpeDpiZWZvcmUsLmNsZWFyZml4OmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9Ci5jbGVhcmZpeDphZnRlcntjbGVhcjpib3RoO30KLmhpZGUtdGV4dHtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDt9Ci5pbnB1dC1ibG9jay1sZXZlbHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWluLWhlaWdodDoyOHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94Oy1tcy1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O30KYm9keXttYXJnaW46MDtmb250LWZhbWlseToiSGVsdmV0aWNhIE5ldWUiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE4cHg7Y29sb3I6IzMzMzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7fQphe2NvbG9yOiMwMDg4Y2M7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fQphOmhvdmVye2NvbG9yOiMwMDU1ODA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9Ci5yb3d7bWFyZ2luLWxlZnQ6LTIwcHg7Knpvb206MTt9Ci5yb3c6YmVmb3JlLC5yb3c6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30KLnJvdzphZnRlcntjbGVhcjpib3RoO30KW2NsYXNzKj0ic3BhbiJde2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MjBweDt9Ci5jb250YWluZXIsLm5hdmJhci1maXhlZC10b3AgLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVye3dpZHRoOjk0MHB4O30KLnNwYW4xMnt3aWR0aDo5NDBweDt9Ci5zcGFuMTF7d2lkdGg6ODYwcHg7fQouc3BhbjEwe3dpZHRoOjc4MHB4O30KLnNwYW45e3dpZHRoOjcwMHB4O30KLnNwYW44e3dpZHRoOjYyMHB4O30KLnNwYW43e3dpZHRoOjU0MHB4O30KLnNwYW42e3dpZHRoOjQ2MHB4O30KLnNwYW41e3dpZHRoOjM4MHB4O30KLnNwYW40e3dpZHRoOjMwMHB4O30KLnNwYW4ze3dpZHRoOjIyMHB4O30KLnNwYW4ye3dpZHRoOjE0MHB4O30KLnNwYW4xe3dpZHRoOjYwcHg7fQoub2Zmc2V0MTJ7bWFyZ2luLWxlZnQ6OTgwcHg7fQoub2Zmc2V0MTF7bWFyZ2luLWxlZnQ6OTAwcHg7fQoub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6ODIwcHg7fQoub2Zmc2V0OXttYXJnaW4tbGVmdDo3NDBweDt9Ci5vZmZzZXQ4e21hcmdpbi1sZWZ0OjY2MHB4O30KLm9mZnNldDd7bWFyZ2luLWxlZnQ6NTgwcHg7fQoub2Zmc2V0NnttYXJnaW4tbGVmdDo1MDBweDt9Ci5vZmZzZXQ1e21hcmdpbi1sZWZ0OjQyMHB4O30KLm9mZnNldDR7bWFyZ2luLWxlZnQ6MzQwcHg7fQoub2Zmc2V0M3ttYXJnaW4tbGVmdDoyNjBweDt9Ci5vZmZzZXQye21hcmdpbi1sZWZ0OjE4MHB4O30KLm9mZnNldDF7bWFyZ2luLWxlZnQ6MTAwcHg7fQoucm93LWZsdWlke3dpZHRoOjEwMCU7Knpvb206MTt9Ci5yb3ctZmx1aWQ6YmVmb3JlLC5yb3ctZmx1aWQ6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30KLnJvdy1mbHVpZDphZnRlcntjbGVhcjpib3RoO30KLnJvdy1mbHVpZCBbY2xhc3MqPSJzcGFuIl17ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3dpZHRoOjEwMCU7bWluLWhlaWdodDoyOHB4O21hcmdpbi1sZWZ0OjIuMTI3NjU5NTc0JTsqbWFyZ2luLWxlZnQ6Mi4wNzQ0NjgwODQ2MzgyOTc3JTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt9Ci5yb3ctZmx1aWQgW2NsYXNzKj0ic3BhbiJdOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7fQoucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6OTkuOTk5OTk5OTg5OTk5OTklOyp3aWR0aDo5OS45NDY4MDg1MDA2MzgyOCU7fQoucm93LWZsdWlkIC5zcGFuMTF7d2lkdGg6OTEuNDg5MzYxNjkzJTsqd2lkdGg6OTEuNDM2MTcwMjAzNjM4MyU7fQoucm93LWZsdWlkIC5zcGFuMTB7d2lkdGg6ODIuOTc4NzIzMzk1OTk5OTklOyp3aWR0aDo4Mi45MjU1MzE5MDY2MzgyOCU7fQoucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC40NjgwODUwOTklOyp3aWR0aDo3NC40MTQ4OTM2MDk2MzgzJTt9Ci5yb3ctZmx1aWQgLnNwYW44e3dpZHRoOjY1Ljk1NzQ0NjgwMTk5OTk5JTsqd2lkdGg6NjUuOTA0MjU1MzEyNjM4MjglO30KLnJvdy1mbHVpZCAuc3Bhbjd7d2lkdGg6NTcuNDQ2ODA4NTA1JTsqd2lkdGg6NTcuMzkzNjE3MDE1NjM4MyU7fQoucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC45MzYxNzAyMDc5OTk5OSU7KndpZHRoOjQ4Ljg4Mjk3ODcxODYzODI5JTt9Ci5yb3ctZmx1aWQgLnNwYW41e3dpZHRoOjQwLjQyNTUzMTkxMSU7KndpZHRoOjQwLjM3MjM0MDQyMTYzODMlO30KLnJvdy1mbHVpZCAuc3BhbjR7d2lkdGg6MzEuOTE0ODkzNjE0JTsqd2lkdGg6MzEuODYxNzAyMTI0NjM4MyU7fQoucm93LWZsdWlkIC5zcGFuM3t3aWR0aDoyMy40MDQyNTUzMTclOyp3aWR0aDoyMy4zNTEwNjM4Mjc2MzgzJTt9Ci5yb3ctZmx1aWQgLnNwYW4ye3dpZHRoOjE0Ljg5MzYxNzAyJTsqd2lkdGg6MTQuODQwNDI1NTMwNjM4MyU7fQoucm93LWZsdWlkIC5zcGFuMXt3aWR0aDo2LjM4Mjk3ODcyMyU7KndpZHRoOjYuMzI5Nzg3MjMzNjM4Mjk4JTt9Ci5jb250YWluZXJ7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzsqem9vbToxO30KLmNvbnRhaW5lcjpiZWZvcmUsLmNvbnRhaW5lcjphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQouY29udGFpbmVyOmFmdGVye2NsZWFyOmJvdGg7fQouY29udGFpbmVyLWZsdWlke3BhZGRpbmctcmlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MjBweDsqem9vbToxO30KLmNvbnRhaW5lci1mbHVpZDpiZWZvcmUsLmNvbnRhaW5lci1mbHVpZDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQouY29udGFpbmVyLWZsdWlkOmFmdGVye2NsZWFyOmJvdGg7fQpwe21hcmdpbjowIDAgOXB4O30KcCBzbWFsbHtmb250LXNpemU6MTFweDtjb2xvcjojOTk5OTk5O30KLmxlYWR7bWFyZ2luLWJvdHRvbToxOHB4O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjIwMDtsaW5lLWhlaWdodDoyN3B4O30KaDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDpib2xkO2NvbG9yOmluaGVyaXQ7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVsZWdpYmlsaXR5O30KaDEgc21hbGwsaDIgc21hbGwsaDMgc21hbGwsaDQgc21hbGwsaDUgc21hbGwsaDYgc21hbGx7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiM5OTk5OTk7fQpoMXtmb250LXNpemU6MzBweDtsaW5lLWhlaWdodDozNnB4O30KaDEgc21hbGx7Zm9udC1zaXplOjE4cHg7fQpoMntmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDozNnB4O30KaDIgc21hbGx7Zm9udC1zaXplOjE4cHg7fQpoM3tmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyN3B4O30KaDMgc21hbGx7Zm9udC1zaXplOjE0cHg7fQpoNCxoNSxoNntsaW5lLWhlaWdodDoxOHB4O30KaDR7Zm9udC1zaXplOjE0cHg7fQpoNCBzbWFsbHtmb250LXNpemU6MTJweDt9Cmg1e2ZvbnQtc2l6ZToxMnB4O30KaDZ7Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTk5OTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fQoucGFnZS1oZWFkZXJ7cGFkZGluZy1ib3R0b206MTdweDttYXJnaW46MThweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWVlZWU7fQoucGFnZS1oZWFkZXIgaDF7bGluZS1oZWlnaHQ6MTt9CnVsLG9se3BhZGRpbmc6MDttYXJnaW46MCAwIDlweCAyNXB4O30KdWwgdWwsdWwgb2wsb2wgb2wsb2wgdWx7bWFyZ2luLWJvdHRvbTowO30KdWx7bGlzdC1zdHlsZTpkaXNjO30Kb2x7bGlzdC1zdHlsZTpkZWNpbWFsO30KbGl7bGluZS1oZWlnaHQ6MThweDt9CnVsLnVuc3R5bGVkLG9sLnVuc3R5bGVke21hcmdpbi1sZWZ0OjA7bGlzdC1zdHlsZTpub25lO30KZGx7bWFyZ2luLWJvdHRvbToxOHB4O30KZHQsZGR7bGluZS1oZWlnaHQ6MThweDt9CmR0e2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MTdweDt9CmRke21hcmdpbi1sZWZ0OjlweDt9Ci5kbC1ob3Jpem9udGFsIGR0e2Zsb2F0OmxlZnQ7d2lkdGg6MTIwcHg7b3ZlcmZsb3c6aGlkZGVuO2NsZWFyOmxlZnQ7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDt9Ci5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjEzMHB4O30KaHJ7bWFyZ2luOjE4cHggMDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWVlZWVlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmZmZmY7fQpzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZDt9CmVte2ZvbnQtc3R5bGU6aXRhbGljO30KLm11dGVke2NvbG9yOiM5OTk5OTk7fQphYmJyW3RpdGxlXXtjdXJzb3I6aGVscDtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgIzk5OTk5OTt9CmFiYnIuaW5pdGlhbGlzbXtmb250LXNpemU6OTAlO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt9CmJsb2NrcXVvdGV7cGFkZGluZzowIDAgMCAxNXB4O21hcmdpbjowIDAgMThweDtib3JkZXItbGVmdDo1cHggc29saWQgI2VlZWVlZTt9CmJsb2NrcXVvdGUgcHttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjIyLjVweDt9CmJsb2NrcXVvdGUgc21hbGx7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxOHB4O2NvbG9yOiM5OTk5OTk7fQpibG9ja3F1b3RlIHNtYWxsOmJlZm9yZXtjb250ZW50OidcMjAxNCBcMDBBMCc7fQpibG9ja3F1b3RlLnB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHQ7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDowO2JvcmRlci1yaWdodDo1cHggc29saWQgI2VlZWVlZTtib3JkZXItbGVmdDowO30KYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHAsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxse3RleHQtYWxpZ246cmlnaHQ7fQpxOmJlZm9yZSxxOmFmdGVyLGJsb2NrcXVvdGU6YmVmb3JlLGJsb2NrcXVvdGU6YWZ0ZXJ7Y29udGVudDoiIjt9CmFkZHJlc3N7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjE4cHg7Zm9udC1zdHlsZTpub3JtYWw7bGluZS1oZWlnaHQ6MThweDt9CnNtYWxse2ZvbnQtc2l6ZToxMDAlO30KY2l0ZXtmb250LXN0eWxlOm5vcm1hbDt9CmNvZGUscHJle3BhZGRpbmc6MCAzcHggMnB4O2ZvbnQtZmFtaWx5Ok1lbmxvLE1vbmFjbyxDb25zb2xhcywiQ291cmllciBOZXciLG1vbm9zcGFjZTtmb250LXNpemU6MTJweDtjb2xvcjojMzMzMzMzOy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDt9CmNvZGV7cGFkZGluZzoycHggNHB4O2NvbG9yOiNkMTQ7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y5O2JvcmRlcjoxcHggc29saWQgI2UxZTFlODt9CnByZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OC41cHg7bWFyZ2luOjAgMCA5cHg7Zm9udC1zaXplOjEyLjAyNXB4O2xpbmUtaGVpZ2h0OjE4cHg7d29yZC1icmVhazpicmVhay1hbGw7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlO3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9CnByZS5wcmV0dHlwcmludHttYXJnaW4tYm90dG9tOjE4cHg7fQpwcmUgY29kZXtwYWRkaW5nOjA7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowO30KLnByZS1zY3JvbGxhYmxle21heC1oZWlnaHQ6MzQwcHg7b3ZlcmZsb3cteTpzY3JvbGw7fQpmb3Jte21hcmdpbjowIDAgMThweDt9CmZpZWxkc2V0e3BhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDt9CmxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206MjdweDtmb250LXNpemU6MTkuNXB4O2xpbmUtaGVpZ2h0OjM2cHg7Y29sb3I6IzMzMzMzMztib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1O30KbGVnZW5kIHNtYWxse2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6Izk5OTk5OTt9CmxhYmVsLGlucHV0LGJ1dHRvbixzZWxlY3QsdGV4dGFyZWF7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjE4cHg7fQppbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7fQpsYWJlbHtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NXB4O30Kc2VsZWN0LHRleHRhcmVhLGlucHV0W3R5cGU9InRleHQiXSxpbnB1dFt0eXBlPSJwYXNzd29yZCJdLGlucHV0W3R5cGU9ImRhdGV0aW1lIl0saW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSxpbnB1dFt0eXBlPSJkYXRlIl0saW5wdXRbdHlwZT0ibW9udGgiXSxpbnB1dFt0eXBlPSJ0aW1lIl0saW5wdXRbdHlwZT0id2VlayJdLGlucHV0W3R5cGU9Im51bWJlciJdLGlucHV0W3R5cGU9ImVtYWlsIl0saW5wdXRbdHlwZT0idXJsIl0saW5wdXRbdHlwZT0ic2VhcmNoIl0saW5wdXRbdHlwZT0idGVsIl0saW5wdXRbdHlwZT0iY29sb3IiXSwudW5lZGl0YWJsZS1pbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MThweDtwYWRkaW5nOjRweDttYXJnaW4tYm90dG9tOjlweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxOHB4O2NvbG9yOiM1NTU1NTU7fQppbnB1dCx0ZXh0YXJlYXt3aWR0aDoyMTBweDt9CnRleHRhcmVhe2hlaWdodDphdXRvO30KdGV4dGFyZWEsaW5wdXRbdHlwZT0idGV4dCJdLGlucHV0W3R5cGU9InBhc3N3b3JkIl0saW5wdXRbdHlwZT0iZGF0ZXRpbWUiXSxpbnB1dFt0eXBlPSJkYXRldGltZS1sb2NhbCJdLGlucHV0W3R5cGU9ImRhdGUiXSxpbnB1dFt0eXBlPSJtb250aCJdLGlucHV0W3R5cGU9InRpbWUiXSxpbnB1dFt0eXBlPSJ3ZWVrIl0saW5wdXRbdHlwZT0ibnVtYmVyIl0saW5wdXRbdHlwZT0iZW1haWwiXSxpbnB1dFt0eXBlPSJ1cmwiXSxpbnB1dFt0eXBlPSJzZWFyY2giXSxpbnB1dFt0eXBlPSJ0ZWwiXSxpbnB1dFt0eXBlPSJjb2xvciJdLC51bmVkaXRhYmxlLWlucHV0e2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTstd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyIGxpbmVhciAwLjJzLGJveC1zaGFkb3cgbGluZWFyIDAuMnM7LW1vei10cmFuc2l0aW9uOmJvcmRlciBsaW5lYXIgMC4ycyxib3gtc2hhZG93IGxpbmVhciAwLjJzOy1tcy10cmFuc2l0aW9uOmJvcmRlciBsaW5lYXIgMC4ycyxib3gtc2hhZG93IGxpbmVhciAwLjJzOy1vLXRyYW5zaXRpb246Ym9yZGVyIGxpbmVhciAwLjJzLGJveC1zaGFkb3cgbGluZWFyIDAuMnM7dHJhbnNpdGlvbjpib3JkZXIgbGluZWFyIDAuMnMsYm94LXNoYWRvdyBsaW5lYXIgMC4yczt9CnRleHRhcmVhOmZvY3VzLGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyxpbnB1dFt0eXBlPSJwYXNzd29yZCJdOmZvY3VzLGlucHV0W3R5cGU9ImRhdGV0aW1lIl06Zm9jdXMsaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXTpmb2N1cyxpbnB1dFt0eXBlPSJkYXRlIl06Zm9jdXMsaW5wdXRbdHlwZT0ibW9udGgiXTpmb2N1cyxpbnB1dFt0eXBlPSJ0aW1lIl06Zm9jdXMsaW5wdXRbdHlwZT0id2VlayJdOmZvY3VzLGlucHV0W3R5cGU9Im51bWJlciJdOmZvY3VzLGlucHV0W3R5cGU9ImVtYWlsIl06Zm9jdXMsaW5wdXRbdHlwZT0idXJsIl06Zm9jdXMsaW5wdXRbdHlwZT0ic2VhcmNoIl06Zm9jdXMsaW5wdXRbdHlwZT0idGVsIl06Zm9jdXMsaW5wdXRbdHlwZT0iY29sb3IiXTpmb2N1cywudW5lZGl0YWJsZS1pbnB1dDpmb2N1c3tib3JkZXItY29sb3I6cmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7b3V0bGluZTowO291dGxpbmU6dGhpbiBkb3R0ZWQgXDk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpO30KaW5wdXRbdHlwZT0icmFkaW8iXSxpbnB1dFt0eXBlPSJjaGVja2JveCJde21hcmdpbjozcHggMDsqbWFyZ2luLXRvcDowO2xpbmUtaGVpZ2h0Om5vcm1hbDtjdXJzb3I6cG9pbnRlcjt9CmlucHV0W3R5cGU9InN1Ym1pdCJdLGlucHV0W3R5cGU9InJlc2V0Il0saW5wdXRbdHlwZT0iYnV0dG9uIl0saW5wdXRbdHlwZT0icmFkaW8iXSxpbnB1dFt0eXBlPSJjaGVja2JveCJde3dpZHRoOmF1dG87fQoudW5lZGl0YWJsZS10ZXh0YXJlYXt3aWR0aDphdXRvO2hlaWdodDphdXRvO30Kc2VsZWN0LGlucHV0W3R5cGU9ImZpbGUiXXtoZWlnaHQ6MjhweDsqbWFyZ2luLXRvcDo0cHg7bGluZS1oZWlnaHQ6MjhweDt9CnNlbGVjdHt3aWR0aDoyMjBweDtib3JkZXI6MXB4IHNvbGlkICNiYmI7fQpzZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0bzt9CnNlbGVjdDpmb2N1cyxpbnB1dFt0eXBlPSJmaWxlIl06Zm9jdXMsaW5wdXRbdHlwZT0icmFkaW8iXTpmb2N1cyxpbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQgIzMzMztvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4O30KLnJhZGlvLC5jaGVja2JveHttaW4taGVpZ2h0OjE4cHg7cGFkZGluZy1sZWZ0OjE4cHg7fQoucmFkaW8gaW5wdXRbdHlwZT0icmFkaW8iXSwuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXXtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0Oi0xOHB4O30KLmNvbnRyb2xzPi5yYWRpbzpmaXJzdC1jaGlsZCwuY29udHJvbHM+LmNoZWNrYm94OmZpcnN0LWNoaWxke3BhZGRpbmctdG9wOjVweDt9Ci5yYWRpby5pbmxpbmUsLmNoZWNrYm94LmlubGluZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDo1cHg7bWFyZ2luLWJvdHRvbTowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt9Ci5yYWRpby5pbmxpbmUrLnJhZGlvLmlubGluZSwuY2hlY2tib3guaW5saW5lKy5jaGVja2JveC5pbmxpbmV7bWFyZ2luLWxlZnQ6MTBweDt9Ci5pbnB1dC1taW5pe3dpZHRoOjYwcHg7fQouaW5wdXQtc21hbGx7d2lkdGg6OTBweDt9Ci5pbnB1dC1tZWRpdW17d2lkdGg6MTUwcHg7fQouaW5wdXQtbGFyZ2V7d2lkdGg6MjEwcHg7fQouaW5wdXQteGxhcmdle3dpZHRoOjI3MHB4O30KLmlucHV0LXh4bGFyZ2V7d2lkdGg6NTMwcHg7fQppbnB1dFtjbGFzcyo9InNwYW4iXSxzZWxlY3RbY2xhc3MqPSJzcGFuIl0sdGV4dGFyZWFbY2xhc3MqPSJzcGFuIl0sLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPSJzcGFuIl0sLnJvdy1mbHVpZCBpbnB1dFtjbGFzcyo9InNwYW4iXSwucm93LWZsdWlkIHNlbGVjdFtjbGFzcyo9InNwYW4iXSwucm93LWZsdWlkIHRleHRhcmVhW2NsYXNzKj0ic3BhbiJdLC5yb3ctZmx1aWQgLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPSJzcGFuIl17ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowO30KLmlucHV0LWFwcGVuZCBpbnB1dFtjbGFzcyo9InNwYW4iXSwuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0W2NsYXNzKj0ic3BhbiJdLC5pbnB1dC1wcmVwZW5kIGlucHV0W2NsYXNzKj0ic3BhbiJdLC5pbnB1dC1wcmVwZW5kIC51bmVkaXRhYmxlLWlucHV0W2NsYXNzKj0ic3BhbiJdLC5yb3ctZmx1aWQgLmlucHV0LXByZXBlbmQgW2NsYXNzKj0ic3BhbiJdLC5yb3ctZmx1aWQgLmlucHV0LWFwcGVuZCBbY2xhc3MqPSJzcGFuIl17ZGlzcGxheTppbmxpbmUtYmxvY2s7fQppbnB1dCx0ZXh0YXJlYSwudW5lZGl0YWJsZS1pbnB1dHttYXJnaW4tbGVmdDowO30KaW5wdXQuc3BhbjEyLHRleHRhcmVhLnNwYW4xMiwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMTJ7d2lkdGg6OTMwcHg7fQppbnB1dC5zcGFuMTEsdGV4dGFyZWEuc3BhbjExLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xMXt3aWR0aDo4NTBweDt9CmlucHV0LnNwYW4xMCx0ZXh0YXJlYS5zcGFuMTAsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjEwe3dpZHRoOjc3MHB4O30KaW5wdXQuc3BhbjksdGV4dGFyZWEuc3BhbjksLnVuZWRpdGFibGUtaW5wdXQuc3Bhbjl7d2lkdGg6NjkwcHg7fQppbnB1dC5zcGFuOCx0ZXh0YXJlYS5zcGFuOCwudW5lZGl0YWJsZS1pbnB1dC5zcGFuOHt3aWR0aDo2MTBweDt9CmlucHV0LnNwYW43LHRleHRhcmVhLnNwYW43LC51bmVkaXRhYmxlLWlucHV0LnNwYW43e3dpZHRoOjUzMHB4O30KaW5wdXQuc3BhbjYsdGV4dGFyZWEuc3BhbjYsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjZ7d2lkdGg6NDUwcHg7fQppbnB1dC5zcGFuNSx0ZXh0YXJlYS5zcGFuNSwudW5lZGl0YWJsZS1pbnB1dC5zcGFuNXt3aWR0aDozNzBweDt9CmlucHV0LnNwYW40LHRleHRhcmVhLnNwYW40LC51bmVkaXRhYmxlLWlucHV0LnNwYW40e3dpZHRoOjI5MHB4O30KaW5wdXQuc3BhbjMsdGV4dGFyZWEuc3BhbjMsLnVuZWRpdGFibGUtaW5wdXQuc3BhbjN7d2lkdGg6MjEwcHg7fQppbnB1dC5zcGFuMix0ZXh0YXJlYS5zcGFuMiwudW5lZGl0YWJsZS1pbnB1dC5zcGFuMnt3aWR0aDoxMzBweDt9CmlucHV0LnNwYW4xLHRleHRhcmVhLnNwYW4xLC51bmVkaXRhYmxlLWlucHV0LnNwYW4xe3dpZHRoOjUwcHg7fQppbnB1dFtkaXNhYmxlZF0sc2VsZWN0W2Rpc2FibGVkXSx0ZXh0YXJlYVtkaXNhYmxlZF0saW5wdXRbcmVhZG9ubHldLHNlbGVjdFtyZWFkb25seV0sdGV4dGFyZWFbcmVhZG9ubHlde2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7Ym9yZGVyLWNvbG9yOiNkZGQ7fQppbnB1dFt0eXBlPSJyYWRpbyJdW2Rpc2FibGVkXSxpbnB1dFt0eXBlPSJjaGVja2JveCJdW2Rpc2FibGVkXSxpbnB1dFt0eXBlPSJyYWRpbyJdW3JlYWRvbmx5XSxpbnB1dFt0eXBlPSJjaGVja2JveCJdW3JlYWRvbmx5XXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O30KLmNvbnRyb2wtZ3JvdXAud2FybmluZz5sYWJlbCwuY29udHJvbC1ncm91cC53YXJuaW5nIC5oZWxwLWJsb2NrLC5jb250cm9sLWdyb3VwLndhcm5pbmcgLmhlbHAtaW5saW5le2NvbG9yOiNjMDk4NTM7fQouY29udHJvbC1ncm91cC53YXJuaW5nIC5jaGVja2JveCwuY29udHJvbC1ncm91cC53YXJuaW5nIC5yYWRpbywuY29udHJvbC1ncm91cC53YXJuaW5nIGlucHV0LC5jb250cm9sLWdyb3VwLndhcm5pbmcgc2VsZWN0LC5jb250cm9sLWdyb3VwLndhcm5pbmcgdGV4dGFyZWF7Y29sb3I6I2MwOTg1Mztib3JkZXItY29sb3I6I2MwOTg1Mzt9Ci5jb250cm9sLWdyb3VwLndhcm5pbmcgLmNoZWNrYm94OmZvY3VzLC5jb250cm9sLWdyb3VwLndhcm5pbmcgLnJhZGlvOmZvY3VzLC5jb250cm9sLWdyb3VwLndhcm5pbmcgaW5wdXQ6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyBzZWxlY3Q6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyB0ZXh0YXJlYTpmb2N1c3tib3JkZXItY29sb3I6I2E0N2UzYzstd2Via2l0LWJveC1zaGFkb3c6MCAwIDZweCAjZGJjNTllOy1tb3otYm94LXNoYWRvdzowIDAgNnB4ICNkYmM1OWU7Ym94LXNoYWRvdzowIDAgNnB4ICNkYmM1OWU7fQouY29udHJvbC1ncm91cC53YXJuaW5nIC5pbnB1dC1wcmVwZW5kIC5hZGQtb24sLmNvbnRyb2wtZ3JvdXAud2FybmluZyAuaW5wdXQtYXBwZW5kIC5hZGQtb257Y29sb3I6I2MwOTg1MztiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNjMDk4NTM7fQouY29udHJvbC1ncm91cC5lcnJvcj5sYWJlbCwuY29udHJvbC1ncm91cC5lcnJvciAuaGVscC1ibG9jaywuY29udHJvbC1ncm91cC5lcnJvciAuaGVscC1pbmxpbmV7Y29sb3I6I2I5NGE0ODt9Ci5jb250cm9sLWdyb3VwLmVycm9yIC5jaGVja2JveCwuY29udHJvbC1ncm91cC5lcnJvciAucmFkaW8sLmNvbnRyb2wtZ3JvdXAuZXJyb3IgaW5wdXQsLmNvbnRyb2wtZ3JvdXAuZXJyb3Igc2VsZWN0LC5jb250cm9sLWdyb3VwLmVycm9yIHRleHRhcmVhe2NvbG9yOiNiOTRhNDg7Ym9yZGVyLWNvbG9yOiNiOTRhNDg7fQouY29udHJvbC1ncm91cC5lcnJvciAuY2hlY2tib3g6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAuZXJyb3IgLnJhZGlvOmZvY3VzLC5jb250cm9sLWdyb3VwLmVycm9yIGlucHV0OmZvY3VzLC5jb250cm9sLWdyb3VwLmVycm9yIHNlbGVjdDpmb2N1cywuY29udHJvbC1ncm91cC5lcnJvciB0ZXh0YXJlYTpmb2N1c3tib3JkZXItY29sb3I6Izk1M2IzOTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDZweCAjZDU5MzkyOy1tb3otYm94LXNoYWRvdzowIDAgNnB4ICNkNTkzOTI7Ym94LXNoYWRvdzowIDAgNnB4ICNkNTkzOTI7fQouY29udHJvbC1ncm91cC5lcnJvciAuaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5jb250cm9sLWdyb3VwLmVycm9yIC5pbnB1dC1hcHBlbmQgLmFkZC1vbntjb2xvcjojYjk0YTQ4O2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2I5NGE0ODt9Ci5jb250cm9sLWdyb3VwLnN1Y2Nlc3M+bGFiZWwsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaGVscC1ibG9jaywuY29udHJvbC1ncm91cC5zdWNjZXNzIC5oZWxwLWlubGluZXtjb2xvcjojNDY4ODQ3O30KLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuY2hlY2tib3gsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAucmFkaW8sLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyBpbnB1dCwuY29udHJvbC1ncm91cC5zdWNjZXNzIHNlbGVjdCwuY29udHJvbC1ncm91cC5zdWNjZXNzIHRleHRhcmVhe2NvbG9yOiM0Njg4NDc7Ym9yZGVyLWNvbG9yOiM0Njg4NDc7fQouY29udHJvbC1ncm91cC5zdWNjZXNzIC5jaGVja2JveDpmb2N1cywuY29udHJvbC1ncm91cC5zdWNjZXNzIC5yYWRpbzpmb2N1cywuY29udHJvbC1ncm91cC5zdWNjZXNzIGlucHV0OmZvY3VzLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3Mgc2VsZWN0OmZvY3VzLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMzNTY2MzU7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA2cHggIzdhYmE3YjstbW96LWJveC1zaGFkb3c6MCAwIDZweCAjN2FiYTdiO2JveC1zaGFkb3c6MCAwIDZweCAjN2FiYTdiO30KLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgLmlucHV0LWFwcGVuZCAuYWRkLW9ue2NvbG9yOiM0Njg4NDc7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojNDY4ODQ3O30KaW5wdXQ6Zm9jdXM6cmVxdWlyZWQ6aW52YWxpZCx0ZXh0YXJlYTpmb2N1czpyZXF1aXJlZDppbnZhbGlkLHNlbGVjdDpmb2N1czpyZXF1aXJlZDppbnZhbGlke2NvbG9yOiNiOTRhNDg7Ym9yZGVyLWNvbG9yOiNlZTVmNWI7fQppbnB1dDpmb2N1czpyZXF1aXJlZDppbnZhbGlkOmZvY3VzLHRleHRhcmVhOmZvY3VzOnJlcXVpcmVkOmludmFsaWQ6Zm9jdXMsc2VsZWN0OmZvY3VzOnJlcXVpcmVkOmludmFsaWQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiNlOTMyMmQ7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA2cHggI2Y4YjliNzstbW96LWJveC1zaGFkb3c6MCAwIDZweCAjZjhiOWI3O2JveC1zaGFkb3c6MCAwIDZweCAjZjhiOWI3O30KLmZvcm0tYWN0aW9uc3twYWRkaW5nOjE3cHggMjBweCAxOHB4O21hcmdpbi10b3A6MThweDttYXJnaW4tYm90dG9tOjE4cHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTU7Knpvb206MTt9Ci5mb3JtLWFjdGlvbnM6YmVmb3JlLC5mb3JtLWFjdGlvbnM6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30KLmZvcm0tYWN0aW9uczphZnRlcntjbGVhcjpib3RoO30KLnVuZWRpdGFibGUtaW5wdXR7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO2JvcmRlci1jb2xvcjojZWVlOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjAyNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDI1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDI1KTt9CjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiM5OTk5OTk7fQo6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTk5OTk7fQo6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OTk5OTt9Ci5oZWxwLWJsb2NrLC5oZWxwLWlubGluZXtjb2xvcjojNTU1NTU1O30KLmhlbHAtYmxvY2t7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjlweDt9Ci5oZWxwLWlubGluZXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7cGFkZGluZy1sZWZ0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Knpvb206MTt9Ci5pbnB1dC1wcmVwZW5kLC5pbnB1dC1hcHBlbmR7bWFyZ2luLWJvdHRvbTo1cHg7fQouaW5wdXQtcHJlcGVuZCBpbnB1dCwuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kIHNlbGVjdCwuaW5wdXQtYXBwZW5kIHNlbGVjdCwuaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MDsqbWFyZ2luLWxlZnQ6MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwOy1tb3otYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO30KLmlucHV0LXByZXBlbmQgaW5wdXQ6Zm9jdXMsLmlucHV0LWFwcGVuZCBpbnB1dDpmb2N1cywuaW5wdXQtcHJlcGVuZCBzZWxlY3Q6Zm9jdXMsLmlucHV0LWFwcGVuZCBzZWxlY3Q6Zm9jdXMsLmlucHV0LXByZXBlbmQgLnVuZWRpdGFibGUtaW5wdXQ6Zm9jdXMsLmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dDpmb2N1c3t6LWluZGV4OjI7fQouaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0e2JvcmRlci1sZWZ0LWNvbG9yOiNjY2M7fQouaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5pbnB1dC1hcHBlbmQgLmFkZC1vbntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvO2hlaWdodDoxOHB4O21pbi13aWR0aDoxNnB4O3BhZGRpbmc6NHB4IDVweDtmb250LXdlaWdodDpub3JtYWw7bGluZS1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmZmZmY7dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtY29sb3I6I2VlZWVlZTtib3JkZXI6MXB4IHNvbGlkICNjY2M7fQouaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuaW5wdXQtcHJlcGVuZCAuYnRuLC5pbnB1dC1hcHBlbmQgLmJ0bnttYXJnaW4tbGVmdDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDt9Ci5pbnB1dC1wcmVwZW5kIC5hY3RpdmUsLmlucHV0LWFwcGVuZCAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2E5ZGJhOTtib3JkZXItY29sb3I6IzQ2YTU0Njt9Ci5pbnB1dC1wcmVwZW5kIC5hZGQtb24sLmlucHV0LXByZXBlbmQgLmJ0bnttYXJnaW4tcmlnaHQ6LTFweDt9Ci5pbnB1dC1wcmVwZW5kIC5hZGQtb246Zmlyc3QtY2hpbGQsLmlucHV0LXByZXBlbmQgLmJ0bjpmaXJzdC1jaGlsZHstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4O2JvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7fQouaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1hcHBlbmQgc2VsZWN0LC5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXR7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDtib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4O30KLmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dHtib3JkZXItcmlnaHQtY29sb3I6I2NjYztib3JkZXItbGVmdC1jb2xvcjojZWVlO30KLmlucHV0LWFwcGVuZCAuYWRkLW9uOmxhc3QtY2hpbGQsLmlucHV0LWFwcGVuZCAuYnRuOmxhc3QtY2hpbGR7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwOy1tb3otYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDtib3JkZXItcmFkaXVzOjAgM3B4IDNweCAwO30KLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCBzZWxlY3QsLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0ey13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDt9Ci5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAuYWRkLW9uOmZpcnN0LWNoaWxkLC5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAuYnRuOmZpcnN0LWNoaWxke21hcmdpbi1yaWdodDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7Ym9yZGVyLXJhZGl1czozcHggMCAwIDNweDt9Ci5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAuYWRkLW9uOmxhc3QtY2hpbGQsLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC5idG46bGFzdC1jaGlsZHttYXJnaW4tbGVmdDotMXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDstbW96LWJvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7Ym9yZGVyLXJhZGl1czowIDNweCAzcHggMDt9Ci5zZWFyY2gtcXVlcnl7cGFkZGluZy1yaWdodDoxNHB4O3BhZGRpbmctcmlnaHQ6NHB4IFw5O3BhZGRpbmctbGVmdDoxNHB4O3BhZGRpbmctbGVmdDo0cHggXDk7bWFyZ2luLWJvdHRvbTowOy13ZWJraXQtYm9yZGVyLXJhZGl1czoxNHB4Oy1tb3otYm9yZGVyLXJhZGl1czoxNHB4O2JvcmRlci1yYWRpdXM6MTRweDt9Ci5mb3JtLXNlYXJjaCBpbnB1dCwuZm9ybS1pbmxpbmUgaW5wdXQsLmZvcm0taG9yaXpvbnRhbCBpbnB1dCwuZm9ybS1zZWFyY2ggdGV4dGFyZWEsLmZvcm0taW5saW5lIHRleHRhcmVhLC5mb3JtLWhvcml6b250YWwgdGV4dGFyZWEsLmZvcm0tc2VhcmNoIHNlbGVjdCwuZm9ybS1pbmxpbmUgc2VsZWN0LC5mb3JtLWhvcml6b250YWwgc2VsZWN0LC5mb3JtLXNlYXJjaCAuaGVscC1pbmxpbmUsLmZvcm0taW5saW5lIC5oZWxwLWlubGluZSwuZm9ybS1ob3Jpem9udGFsIC5oZWxwLWlubGluZSwuZm9ybS1zZWFyY2ggLnVuZWRpdGFibGUtaW5wdXQsLmZvcm0taW5saW5lIC51bmVkaXRhYmxlLWlucHV0LC5mb3JtLWhvcml6b250YWwgLnVuZWRpdGFibGUtaW5wdXQsLmZvcm0tc2VhcmNoIC5pbnB1dC1wcmVwZW5kLC5mb3JtLWlubGluZSAuaW5wdXQtcHJlcGVuZCwuZm9ybS1ob3Jpem9udGFsIC5pbnB1dC1wcmVwZW5kLC5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kLC5mb3JtLWlubGluZSAuaW5wdXQtYXBwZW5kLC5mb3JtLWhvcml6b250YWwgLmlucHV0LWFwcGVuZHtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7bWFyZ2luLWJvdHRvbTowOyp6b29tOjE7fQouZm9ybS1zZWFyY2ggLmhpZGUsLmZvcm0taW5saW5lIC5oaWRlLC5mb3JtLWhvcml6b250YWwgLmhpZGV7ZGlzcGxheTpub25lO30KLmZvcm0tc2VhcmNoIGxhYmVsLC5mb3JtLWlubGluZSBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazt9Ci5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kLC5mb3JtLWlubGluZSAuaW5wdXQtYXBwZW5kLC5mb3JtLXNlYXJjaCAuaW5wdXQtcHJlcGVuZCwuZm9ybS1pbmxpbmUgLmlucHV0LXByZXBlbmR7bWFyZ2luLWJvdHRvbTowO30KLmZvcm0tc2VhcmNoIC5yYWRpbywuZm9ybS1zZWFyY2ggLmNoZWNrYm94LC5mb3JtLWlubGluZSAucmFkaW8sLmZvcm0taW5saW5lIC5jaGVja2JveHtwYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlO30KLmZvcm0tc2VhcmNoIC5yYWRpbyBpbnB1dFt0eXBlPSJyYWRpbyJdLC5mb3JtLXNlYXJjaCAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXSwuZm9ybS1pbmxpbmUgLnJhZGlvIGlucHV0W3R5cGU9InJhZGlvIl0sLmZvcm0taW5saW5lIC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJde2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjNweDttYXJnaW4tbGVmdDowO30KLmNvbnRyb2wtZ3JvdXB7bWFyZ2luLWJvdHRvbTo5cHg7fQpsZWdlbmQrLmNvbnRyb2wtZ3JvdXB7bWFyZ2luLXRvcDoxOHB4Oy13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZTpzZXBhcmF0ZTt9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtZ3JvdXB7bWFyZ2luLWJvdHRvbToxOHB4Oyp6b29tOjE7fQouZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwOmJlZm9yZSwuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtZ3JvdXA6YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGFiZWx7ZmxvYXQ6bGVmdDt3aWR0aDoxNDBweDtwYWRkaW5nLXRvcDo1cHg7dGV4dC1hbGlnbjpyaWdodDt9Ci5mb3JtLWhvcml6b250YWwgLmNvbnRyb2xzeypkaXNwbGF5OmlubGluZS1ibG9jazsqcGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luLWxlZnQ6MTYwcHg7Km1hcmdpbi1sZWZ0OjA7fQouZm9ybS1ob3Jpem9udGFsIC5jb250cm9sczpmaXJzdC1jaGlsZHsqcGFkZGluZy1sZWZ0OjE2MHB4O30KLmZvcm0taG9yaXpvbnRhbCAuaGVscC1ibG9ja3ttYXJnaW4tdG9wOjlweDttYXJnaW4tYm90dG9tOjA7fQouZm9ybS1ob3Jpem9udGFsIC5mb3JtLWFjdGlvbnN7cGFkZGluZy1sZWZ0OjE2MHB4O30KdGFibGV7bWF4LXdpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDt9Ci50YWJsZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MThweDt9Ci50YWJsZSB0aCwudGFibGUgdGR7cGFkZGluZzo4cHg7bGluZS1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmxlZnQ7dmVydGljYWwtYWxpZ246dG9wO2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGRkZGQ7fQoudGFibGUgdGh7Zm9udC13ZWlnaHQ6Ym9sZDt9Ci50YWJsZSB0aGVhZCB0aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207fQoudGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwudGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRkLC50YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowO30KLnRhYmxlIHRib2R5K3Rib2R5e2JvcmRlci10b3A6MnB4IHNvbGlkICNkZGRkZGQ7fQoudGFibGUtY29uZGVuc2VkIHRoLC50YWJsZS1jb25kZW5zZWQgdGR7cGFkZGluZzo0cHggNXB4O30KLnRhYmxlLWJvcmRlcmVke2JvcmRlcjoxcHggc29saWQgI2RkZGRkZDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7KmJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZWQ7Ym9yZGVyLWxlZnQ6MDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7fQoudGFibGUtYm9yZGVyZWQgdGgsLnRhYmxlLWJvcmRlcmVkIHRke2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkZGRkO30KLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZS1ib3JkZXJlZCBjb2xncm91cCt0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgY29sZ3JvdXArdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDowO30KLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweDt9Ci50YWJsZS1ib3JkZXJlZCB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkey13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NHB4O30KLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkey13ZWJraXQtYm9yZGVyLXJhZGl1czowIDAgMCA0cHg7LW1vei1ib3JkZXItcmFkaXVzOjAgMCAwIDRweDtib3JkZXItcmFkaXVzOjAgMCAwIDRweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjRweDt9Ci50YWJsZS1ib3JkZXJlZCB0aGVhZDpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo0cHg7fQoudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB0ZCwudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB0aHtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7fQoudGFibGUgdGJvZHkgdHI6aG92ZXIgdGQsLnRhYmxlIHRib2R5IHRyOmhvdmVyIHRoe2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTt9CnRhYmxlIC5zcGFuMXtmbG9hdDpub25lO3dpZHRoOjQ0cHg7bWFyZ2luLWxlZnQ6MDt9CnRhYmxlIC5zcGFuMntmbG9hdDpub25lO3dpZHRoOjEyNHB4O21hcmdpbi1sZWZ0OjA7fQp0YWJsZSAuc3BhbjN7ZmxvYXQ6bm9uZTt3aWR0aDoyMDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW40e2Zsb2F0Om5vbmU7d2lkdGg6Mjg0cHg7bWFyZ2luLWxlZnQ6MDt9CnRhYmxlIC5zcGFuNXtmbG9hdDpub25lO3dpZHRoOjM2NHB4O21hcmdpbi1sZWZ0OjA7fQp0YWJsZSAuc3BhbjZ7ZmxvYXQ6bm9uZTt3aWR0aDo0NDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW43e2Zsb2F0Om5vbmU7d2lkdGg6NTI0cHg7bWFyZ2luLWxlZnQ6MDt9CnRhYmxlIC5zcGFuOHtmbG9hdDpub25lO3dpZHRoOjYwNHB4O21hcmdpbi1sZWZ0OjA7fQp0YWJsZSAuc3Bhbjl7ZmxvYXQ6bm9uZTt3aWR0aDo2ODRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xMHtmbG9hdDpub25lO3dpZHRoOjc2NHB4O21hcmdpbi1sZWZ0OjA7fQp0YWJsZSAuc3BhbjExe2Zsb2F0Om5vbmU7d2lkdGg6ODQ0cHg7bWFyZ2luLWxlZnQ6MDt9CnRhYmxlIC5zcGFuMTJ7ZmxvYXQ6bm9uZTt3aWR0aDo5MjRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xM3tmbG9hdDpub25lO3dpZHRoOjEwMDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xNHtmbG9hdDpub25lO3dpZHRoOjEwODRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xNXtmbG9hdDpub25lO3dpZHRoOjExNjRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xNntmbG9hdDpub25lO3dpZHRoOjEyNDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xN3tmbG9hdDpub25lO3dpZHRoOjEzMjRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xOHtmbG9hdDpub25lO3dpZHRoOjE0MDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4xOXtmbG9hdDpub25lO3dpZHRoOjE0ODRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4yMHtmbG9hdDpub25lO3dpZHRoOjE1NjRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4yMXtmbG9hdDpub25lO3dpZHRoOjE2NDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4yMntmbG9hdDpub25lO3dpZHRoOjE3MjRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4yM3tmbG9hdDpub25lO3dpZHRoOjE4MDRweDttYXJnaW4tbGVmdDowO30KdGFibGUgLnNwYW4yNHtmbG9hdDpub25lO3dpZHRoOjE4ODRweDttYXJnaW4tbGVmdDowO30KW2NsYXNzXj0iaWNvbi0iXSxbY2xhc3MqPSIgaWNvbi0iXXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxNHB4O2hlaWdodDoxNHB4OyptYXJnaW4tcmlnaHQ6LjNlbTtsaW5lLWhlaWdodDoxNHB4O3ZlcnRpY2FsLWFsaWduOnRleHQtdG9wO2JhY2tncm91bmQtaW1hZ2U6dXJsKCIuLi9pbWcvZ2x5cGhpY29ucy1oYWxmbGluZ3MucG5nIik7YmFja2dyb3VuZC1wb3NpdGlvbjoxNHB4IDE0cHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O30KW2NsYXNzXj0iaWNvbi0iXTpsYXN0LWNoaWxkLFtjbGFzcyo9IiBpY29uLSJdOmxhc3QtY2hpbGR7Km1hcmdpbi1sZWZ0OjA7fQouaWNvbi13aGl0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiLi4vaW1nL2dseXBoaWNvbnMtaGFsZmxpbmdzLXdoaXRlLnBuZyIpO30KLmljb24tZ2xhc3N7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7fQouaWNvbi1tdXNpY3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IDA7fQouaWNvbi1zZWFyY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAwO30KLmljb24tZW52ZWxvcGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAwO30KLmljb24taGVhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAwO30KLmljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAwO30KLmljb24tc3Rhci1lbXB0eXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAwO30KLmljb24tdXNlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAwO30KLmljb24tZmlsbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAwO30KLmljb24tdGgtbGFyZ2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggMDt9Ci5pY29uLXRoe2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IDA7fQouaWNvbi10aC1saXN0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IDA7fQouaWNvbi1va3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODhweCAwO30KLmljb24tcmVtb3Zle2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IDA7fQouaWNvbi16b29tLWlue2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IDA7fQouaWNvbi16b29tLW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAwO30KLmljb24tb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IDA7fQouaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggMDt9Ci5pY29uLWNvZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MzJweCAwO30KLmljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggMDt9Ci5pY29uLWhvbWV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yNHB4O30KLmljb24tZmlsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC0yNHB4O30KLmljb24tdGltZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yNHB4O30KLmljb24tcm9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IC0yNHB4O30KLmljb24tZG93bmxvYWQtYWx0e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTI0cHg7fQouaWNvbi1kb3dubG9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMjRweDt9Ci5pY29uLXVwbG9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMjRweDt9Ci5pY29uLWluYm94e2JhY2tncm91bmQtcG9zaXRpb246LTE2OHB4IC0yNHB4O30KLmljb24tcGxheS1jaXJjbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTI0cHg7fQouaWNvbi1yZXBlYXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTI0cHg7fQouaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0yNHB4O30KLmljb24tbGlzdC1hbHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTI0cHg7fQouaWNvbi1sb2Nre2JhY2tncm91bmQtcG9zaXRpb246LTI4N3B4IC0yNHB4O30KLmljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMTJweCAtMjRweDt9Ci5pY29uLWhlYWRwaG9uZXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTI0cHg7fQouaWNvbi12b2x1bWUtb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC0yNHB4O30KLmljb24tdm9sdW1lLWRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTI0cHg7fQouaWNvbi12b2x1bWUtdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTI0cHg7fQouaWNvbi1xcmNvZGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTI0cHg7fQouaWNvbi1iYXJjb2Rle2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC0yNHB4O30KLmljb24tdGFne2JhY2tncm91bmQtcG9zaXRpb246MCAtNDhweDt9Ci5pY29uLXRhZ3N7YmFja2dyb3VuZC1wb3NpdGlvbjotMjVweCAtNDhweDt9Ci5pY29uLWJvb2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNDhweDt9Ci5pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTcycHggLTQ4cHg7fQouaWNvbi1wcmludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4O30KLmljb24tY2FtZXJhe2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC00OHB4O30KLmljb24tZm9udHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweDt9Ci5pY29uLWJvbGR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY3cHggLTQ4cHg7fQouaWNvbi1pdGFsaWN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHg7fQouaWNvbi10ZXh0LWhlaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtNDhweDt9Ci5pY29uLXRleHQtd2lkdGh7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHg7fQouaWNvbi1hbGlnbi1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IC00OHB4O30KLmljb24tYWxpZ24tY2VudGVye2JhY2tncm91bmQtcG9zaXRpb246LTI4OHB4IC00OHB4O30KLmljb24tYWxpZ24tcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzEycHggLTQ4cHg7fQouaWNvbi1hbGlnbi1qdXN0aWZ5e2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC00OHB4O30KLmljb24tbGlzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtNDhweDt9Ci5pY29uLWluZGVudC1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IC00OHB4O30KLmljb24taW5kZW50LXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTQwOHB4IC00OHB4O30KLmljb24tZmFjZXRpbWUtdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTQ4cHg7fQouaWNvbi1waWN0dXJle2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC00OHB4O30KLmljb24tcGVuY2lse2JhY2tncm91bmQtcG9zaXRpb246MCAtNzJweDt9Ci5pY29uLW1hcC1tYXJrZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtNzJweDt9Ci5pY29uLWFkanVzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC03MnB4O30KLmljb24tdGludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IC03MnB4O30KLmljb24tZWRpdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC03MnB4O30KLmljb24tc2hhcmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTcycHg7fQouaWNvbi1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNzJweDt9Ci5pY29uLW1vdmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTcycHg7fQouaWNvbi1zdGVwLWJhY2t3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC03MnB4O30KLmljb24tZmFzdC1iYWNrd2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtNzJweDt9Ci5pY29uLWJhY2t3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC03MnB4O30KLmljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtNzJweDt9Ci5pY29uLXBhdXNle2JhY2tncm91bmQtcG9zaXRpb246LTI4OHB4IC03MnB4O30KLmljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMTJweCAtNzJweDt9Ci5pY29uLWZvcndhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTcycHg7fQouaWNvbi1mYXN0LWZvcndhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzYwcHggLTcycHg7fQouaWNvbi1zdGVwLWZvcndhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTcycHg7fQouaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtNzJweDt9Ci5pY29uLWNoZXZyb24tbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MzJweCAtNzJweDt9Ci5pY29uLWNoZXZyb24tcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTcycHg7fQouaWNvbi1wbHVzLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4O30KLmljb24tbWludXMtc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC05NnB4O30KLmljb24tcmVtb3ZlLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtOTZweDt9Ci5pY29uLW9rLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtOTZweDt9Ci5pY29uLXF1ZXN0aW9uLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtOTZweDt9Ci5pY29uLWluZm8tc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtOTZweDt9Ci5pY29uLXNjcmVlbnNob3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHg7fQouaWNvbi1yZW1vdmUtY2lyY2xle2JhY2tncm91bmQtcG9zaXRpb246LTE2OHB4IC05NnB4O30KLmljb24tb2stY2lyY2xle2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4O30KLmljb24tYmFuLWNpcmNsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtOTZweDt9Ci5pY29uLWFycm93LWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTk2cHg7fQouaWNvbi1hcnJvdy1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtOTZweDt9Ci5pY29uLWFycm93LXVwe2JhY2tncm91bmQtcG9zaXRpb246LTI4OXB4IC05NnB4O30KLmljb24tYXJyb3ctZG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMTJweCAtOTZweDt9Ci5pY29uLXNoYXJlLWFsdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAtOTZweDt9Ci5pY29uLXJlc2l6ZS1mdWxse2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC05NnB4O30KLmljb24tcmVzaXplLXNtYWxse2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IC05NnB4O30KLmljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtOTZweDt9Ci5pY29uLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTQzM3B4IC05NnB4O30KLmljb24tYXN0ZXJpc2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTk2cHg7fQouaWNvbi1leGNsYW1hdGlvbi1zaWdue2JhY2tncm91bmQtcG9zaXRpb246MCAtMTIwcHg7fQouaWNvbi1naWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTI0cHggLTEyMHB4O30KLmljb24tbGVhZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjBweDt9Ci5pY29uLWZpcmV7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtMTIwcHg7fQouaWNvbi1leWUtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMjBweDt9Ci5pY29uLWV5ZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMTIwcHg7fQouaWNvbi13YXJuaW5nLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTEyMHB4O30KLmljb24tcGxhbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTEyMHB4O30KLmljb24tY2FsZW5kYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyMHB4O30KLmljb24tcmFuZG9te2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IC0xMjBweDt9Ci5pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyMHB4O30KLmljb24tbWFnbmV0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IC0xMjBweDt9Ci5pY29uLWNoZXZyb24tdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotMjg4cHggLTEyMHB4O30KLmljb24tY2hldnJvbi1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxM3B4IC0xMTlweDt9Ci5pY29uLXJldHdlZXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTEyMHB4O30KLmljb24tc2hvcHBpbmctY2FydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtMTIwcHg7fQouaWNvbi1mb2xkZXItY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTEyMHB4O30KLmljb24tZm9sZGVyLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTEyMHB4O30KLmljb24tcmVzaXplLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IC0xMTlweDt9Ci5pY29uLXJlc2l6ZS1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ1NnB4IC0xMThweDt9Ci5pY29uLWhkZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4O30KLmljb24tYnVsbGhvcm57YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtMTQ0cHg7fQouaWNvbi1iZWxse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4O30KLmljb24tY2VydGlmaWNhdGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtMTQ0cHg7fQouaWNvbi10aHVtYnMtdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTQ0cHg7fQouaWNvbi10aHVtYnMtZG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMTQ0cHg7fQouaWNvbi1oYW5kLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweDt9Ci5pY29uLWhhbmQtbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAtMTQ0cHg7fQouaWNvbi1oYW5kLXVwe2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xNDRweDt9Ci5pY29uLWhhbmQtZG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtMTQ0cHg7fQouaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTE0NHB4O30KLmljb24tY2lyY2xlLWFycm93LWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTE0NHB4O30KLmljb24tY2lyY2xlLWFycm93LXVwe2JhY2tncm91bmQtcG9zaXRpb246LTI4OHB4IC0xNDRweDt9Ci5pY29uLWNpcmNsZS1hcnJvdy1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC0xNDRweDt9Ci5pY29uLWdsb2Jle2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC0xNDRweDt9Ci5pY29uLXdyZW5jaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtMTQ0cHg7fQouaWNvbi10YXNrc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtMTQ0cHg7fQouaWNvbi1maWx0ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTE0NHB4O30KLmljb24tYnJpZWZjYXNle2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IC0xNDRweDt9Ci5pY29uLWZ1bGxzY3JlZW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTE0NHB4O30KLmRyb3B1cCwuZHJvcGRvd257cG9zaXRpb246cmVsYXRpdmU7fQouZHJvcGRvd24tdG9nZ2xleyptYXJnaW4tYm90dG9tOi0zcHg7fQouZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xle291dGxpbmU6MDt9Ci5jYXJldHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDowO2hlaWdodDowO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjRweCBzb2xpZCAjMDAwMDAwO2JvcmRlci1yaWdodDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbnRlbnQ6IiI7b3BhY2l0eTowLjM7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MzApO30KLmRyb3Bkb3duIC5jYXJldHttYXJnaW4tdG9wOjhweDttYXJnaW4tbGVmdDoycHg7fQouZHJvcGRvd246aG92ZXIgLmNhcmV0LC5vcGVuIC5jYXJldHtvcGFjaXR5OjE7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTt9Ci5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDt6LWluZGV4OjEwMDA7ZGlzcGxheTpub25lO2Zsb2F0OmxlZnQ7bWluLXdpZHRoOjE2MHB4O3BhZGRpbmc6NHB4IDA7bWFyZ2luOjFweCAwIDA7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7KmJvcmRlci1yaWdodC13aWR0aDoycHg7KmJvcmRlci1ib3R0b20td2lkdGg6MnB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7LW1vei1ib3gtc2hhZG93OjAgNXB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpO2JveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7LW1vei1iYWNrZ3JvdW5kLWNsaXA6cGFkZGluZztiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7fQouZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvO30KLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXJ7KndpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46OHB4IDFweDsqbWFyZ2luOi01cHggMCA1cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6I2U1ZTVlNTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmZmZmO30KLmRyb3Bkb3duLW1lbnUgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDE1cHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDpub3JtYWw7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojMzMzMzMzO3doaXRlLXNwYWNlOm5vd3JhcDt9Ci5kcm9wZG93bi1tZW51IGxpPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnUgLmFjdGl2ZT5hLC5kcm9wZG93bi1tZW51IC5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6IzAwODhjYzt9Ci5vcGVueyp6LWluZGV4OjEwMDA7fQoub3Blbj4uZHJvcGRvd24tbWVudXtkaXNwbGF5OmJsb2NrO30KLnB1bGwtcmlnaHQ+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG87fQouZHJvcHVwIC5jYXJldCwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0e2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjRweCBzb2xpZCAjMDAwMDAwO2NvbnRlbnQ6IlwyMTkxIjt9Ci5kcm9wdXAgLmRyb3Bkb3duLW1lbnUsLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAlO21hcmdpbi1ib3R0b206MXB4O30KLnR5cGVhaGVhZHttYXJnaW4tdG9wOjJweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7fQoud2VsbHttaW4taGVpZ2h0OjIwcHg7cGFkZGluZzoxOXB4O21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyOjFweCBzb2xpZCAjZWVlO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA1KTstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30KLndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjE1KTt9Ci53ZWxsLWxhcmdle3BhZGRpbmc6MjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4Oy1tb3otYm9yZGVyLXJhZGl1czo2cHg7Ym9yZGVyLXJhZGl1czo2cHg7fQoud2VsbC1zbWFsbHtwYWRkaW5nOjlweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7fQouZmFkZXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgMC4xNXMgbGluZWFyOy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTVzIGxpbmVhcjstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDAuMTVzIGxpbmVhcjstby10cmFuc2l0aW9uOm9wYWNpdHkgMC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAwLjE1cyBsaW5lYXI7fQouZmFkZS5pbntvcGFjaXR5OjE7fQouY29sbGFwc2V7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdHJhbnNpdGlvbjpoZWlnaHQgMC4zNXMgZWFzZTstbW96LXRyYW5zaXRpb246aGVpZ2h0IDAuMzVzIGVhc2U7LW1zLXRyYW5zaXRpb246aGVpZ2h0IDAuMzVzIGVhc2U7LW8tdHJhbnNpdGlvbjpoZWlnaHQgMC4zNXMgZWFzZTt0cmFuc2l0aW9uOmhlaWdodCAwLjM1cyBlYXNlO30KLmNvbGxhcHNlLmlue2hlaWdodDphdXRvO30KLmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojMDAwMDAwO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZmZmZjtvcGFjaXR5OjAuMjtmaWx0ZXI6YWxwaGEob3BhY2l0eT0yMCk7fQouY2xvc2U6aG92ZXJ7Y29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjAuNDtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCk7fQpidXR0b24uY2xvc2V7cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7fQouYnRue2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTtwYWRkaW5nOjRweCAxMHB4IDRweDttYXJnaW4tYm90dG9tOjA7Km1hcmdpbi1sZWZ0Oi4zZW07Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MThweDsqbGluZS1oZWlnaHQ6MjBweDtjb2xvcjojMzMzMzMzO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7KmJhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmZmZmZmKSwgdG8oI2U2ZTZlNikpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2U2ZTZlNik7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNlNmU2ZTYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlcjoxcHggc29saWQgI2NjY2NjYzsqYm9yZGVyOjA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTtib3JkZXItY29sb3I6I2U2ZTZlNiAjZTZlNmU2ICNiZmJmYmY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojYjNiM2IzOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmZmZmYnLCBlbmRDb2xvcnN0cj0nI2U2ZTZlNicsIEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpOyp6b29tOjE7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30KLmJ0bjpob3ZlciwuYnRuOmFjdGl2ZSwuYnRuLmFjdGl2ZSwuYnRuLmRpc2FibGVkLC5idG5bZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjsqYmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5O30KLmJ0bjphY3RpdmUsLmJ0bi5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2NjY2NjIFw5O30KLmJ0bjpmaXJzdC1jaGlsZHsqbWFyZ2luLWxlZnQ6MDt9Ci5idG46aG92ZXJ7Y29sb3I6IzMzMzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7KmJhY2tncm91bmQtY29sb3I6I2Q5ZDlkOTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE1cHg7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7LW1zLXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjstby10cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gMC4xcyBsaW5lYXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIDAuMXMgbGluZWFyO30KLmJ0bjpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkICMzMzM7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweDt9Ci5idG4uYWN0aXZlLC5idG46YWN0aXZle2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDkgXDk7YmFja2dyb3VuZC1pbWFnZTpub25lO291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTUpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7fQouYnRuLmRpc2FibGVkLC5idG5bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7b3BhY2l0eTowLjY1O2ZpbHRlcjphbHBoYShvcGFjaXR5PTY1KTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTstbW96LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7fQouYnRuLWxhcmdle3BhZGRpbmc6OXB4IDE0cHg7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6bm9ybWFsOy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDt9Ci5idG4tbGFyZ2UgW2NsYXNzXj0iaWNvbi0iXXttYXJnaW4tdG9wOjFweDt9Ci5idG4tc21hbGx7cGFkZGluZzo1cHggOXB4O2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjE2cHg7fQouYnRuLXNtYWxsIFtjbGFzc149Imljb24tIl17bWFyZ2luLXRvcDotMXB4O30KLmJ0bi1taW5pe3BhZGRpbmc6MnB4IDZweDtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxNHB4O30KLmJ0bi1wcmltYXJ5LC5idG4tcHJpbWFyeTpob3ZlciwuYnRuLXdhcm5pbmcsLmJ0bi13YXJuaW5nOmhvdmVyLC5idG4tZGFuZ2VyLC5idG4tZGFuZ2VyOmhvdmVyLC5idG4tc3VjY2VzcywuYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1pbmZvLC5idG4taW5mbzpob3ZlciwuYnRuLWludmVyc2UsLmJ0bi1pbnZlcnNlOmhvdmVye2NvbG9yOiNmZmZmZmY7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTt9Ci5idG4tcHJpbWFyeS5hY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuYnRuLWluZm8uYWN0aXZlLC5idG4taW52ZXJzZS5hY3RpdmV7Y29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTt9Ci5idG57Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTt9Ci5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDc0Y2M7KmJhY2tncm91bmQtY29sb3I6IzAwNTVjYztiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMDA4OGNjLCAjMDA1NWNjKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjMDA4OGNjKSwgdG8oIzAwNTVjYykpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMDA4OGNjLCAjMDA1NWNjKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMwMDg4Y2MsICMwMDU1Y2MpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMDA4OGNjLCAjMDA1NWNjKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICMwMDg4Y2MsICMwMDU1Y2MpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojMDA1NWNjICMwMDU1Y2MgIzAwMzU4MDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwODhjYycsIGVuZENvbG9yc3RyPScjMDA1NWNjJywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7fQouYnRuLXByaW1hcnk6aG92ZXIsLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkuYWN0aXZlLC5idG4tcHJpbWFyeS5kaXNhYmxlZCwuYnRuLXByaW1hcnlbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzAwNTVjYzsqYmFja2dyb3VuZC1jb2xvcjojMDA0YWIzO30KLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzAwNDA5OSBcOTt9Ci5idG4td2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWE3MzI7KmJhY2tncm91bmQtY29sb3I6I2Y4OTQwNjtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmJiNDUwLCAjZjg5NDA2KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmJiNDUwKSwgdG8oI2Y4OTQwNikpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmJiNDUwLCAjZjg5NDA2KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmJiNDUwLCAjZjg5NDA2KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojZjg5NDA2ICNmODk0MDYgI2FkNjcwNDtib3JkZXItY29sb3I6cmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMjUpO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZiYjQ1MCcsIGVuZENvbG9yc3RyPScjZjg5NDA2JywgR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7fQouYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcuYWN0aXZlLC5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLXdhcm5pbmdbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNjsqYmFja2dyb3VuZC1jb2xvcjojZGY4NTA1O30KLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2M2NzYwNSBcOTt9Ci5idG4tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2RhNGY0OTsqYmFja2dyb3VuZC1jb2xvcjojYmQzNjJmO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNiZDM2MmYpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCNlZTVmNWIpLCB0bygjYmQzNjJmKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNiZDM2MmYpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2JkMzYyZik7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNiZDM2MmYpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2JkMzYyZik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiNiZDM2MmYgI2JkMzYyZiAjODAyNDIwO2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZWU1ZjViJywgZW5kQ29sb3JzdHI9JyNiZDM2MmYnLCBHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTt9Ci5idG4tZGFuZ2VyOmhvdmVyLC5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLmJ0bi1kYW5nZXIuZGlzYWJsZWQsLmJ0bi1kYW5nZXJbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2JkMzYyZjsqYmFja2dyb3VuZC1jb2xvcjojYTkzMDJhO30KLmJ0bi1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM5NDJhMjUgXDk7fQouYnRuLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNWJiNzViOypiYWNrZ3JvdW5kLWNvbG9yOiM1MWEzNTE7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzUxYTM1MSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzYyYzQ2MiksIHRvKCM1MWEzNTEpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzUxYTM1MSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTFhMzUxKTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzUxYTM1MSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTFhMzUxKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzUxYTM1MSAjNTFhMzUxICMzODcwMzg7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM2MmM0NjInLCBlbmRDb2xvcnN0cj0nIzUxYTM1MScsIEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO30KLmJ0bi1zdWNjZXNzOmhvdmVyLC5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiM1MWEzNTE7KmJhY2tncm91bmQtY29sb3I6IzQ5OTI0OTt9Ci5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDgxNDAgXDk7fQouYnRuLWluZm97YmFja2dyb3VuZC1jb2xvcjojNDlhZmNkOypiYWNrZ3JvdW5kLWNvbG9yOiMyZjk2YjQ7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzJmOTZiNCk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzViYzBkZSksIHRvKCMyZjk2YjQpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzJmOTZiNCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMmY5NmI0KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzJmOTZiNCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMmY5NmI0KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzJmOTZiNCAjMmY5NmI0ICMxZjYzNzc7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM1YmMwZGUnLCBlbmRDb2xvcnN0cj0nIzJmOTZiNCcsIEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO30KLmJ0bi1pbmZvOmhvdmVyLC5idG4taW5mbzphY3RpdmUsLmJ0bi1pbmZvLmFjdGl2ZSwuYnRuLWluZm8uZGlzYWJsZWQsLmJ0bi1pbmZvW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMyZjk2YjQ7KmJhY2tncm91bmQtY29sb3I6IzJhODVhMDt9Ci5idG4taW5mbzphY3RpdmUsLmJ0bi1pbmZvLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMyNDc0OGMgXDk7fQouYnRuLWludmVyc2V7YmFja2dyb3VuZC1jb2xvcjojNDE0MTQxOypiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzU1NTU1NSwgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzU1NTU1NSksIHRvKCMyMjIyMjIpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzU1NTU1NSwgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjNTU1NTU1LCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzU1NTU1NSwgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjNTU1NTU1LCAjMjIyMjIyKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzIyMjIyMiAjMjIyMjIyICMwMDAwMDA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC4xKSByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjI1KTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM1NTU1NTUnLCBlbmRDb2xvcnN0cj0nIzIyMjIyMicsIEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO30KLmJ0bi1pbnZlcnNlOmhvdmVyLC5idG4taW52ZXJzZTphY3RpdmUsLmJ0bi1pbnZlcnNlLmFjdGl2ZSwuYnRuLWludmVyc2UuZGlzYWJsZWQsLmJ0bi1pbnZlcnNlW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjIyMjI7KmJhY2tncm91bmQtY29sb3I6IzE1MTUxNTt9Ci5idG4taW52ZXJzZTphY3RpdmUsLmJ0bi1pbnZlcnNlLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDggXDk7fQpidXR0b24uYnRuLGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bnsqcGFkZGluZy10b3A6MnB4OypwYWRkaW5nLWJvdHRvbToycHg7fQpidXR0b24uYnRuOjotbW96LWZvY3VzLWlubmVyLGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bjo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjA7fQpidXR0b24uYnRuLmJ0bi1sYXJnZSxpbnB1dFt0eXBlPSJzdWJtaXQiXS5idG4uYnRuLWxhcmdleypwYWRkaW5nLXRvcDo3cHg7KnBhZGRpbmctYm90dG9tOjdweDt9CmJ1dHRvbi5idG4uYnRuLXNtYWxsLGlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi5idG4tc21hbGx7KnBhZGRpbmctdG9wOjNweDsqcGFkZGluZy1ib3R0b206M3B4O30KYnV0dG9uLmJ0bi5idG4tbWluaSxpbnB1dFt0eXBlPSJzdWJtaXQiXS5idG4uYnRuLW1pbml7KnBhZGRpbmctdG9wOjFweDsqcGFkZGluZy1ib3R0b206MXB4O30KLmJ0bi1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTsqbWFyZ2luLWxlZnQ6LjNlbTsqem9vbToxO30KLmJ0bi1ncm91cDpiZWZvcmUsLmJ0bi1ncm91cDphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQouYnRuLWdyb3VwOmFmdGVye2NsZWFyOmJvdGg7fQouYnRuLWdyb3VwOmZpcnN0LWNoaWxkeyptYXJnaW4tbGVmdDowO30KLmJ0bi1ncm91cCsuYnRuLWdyb3Vwe21hcmdpbi1sZWZ0OjVweDt9Ci5idG4tdG9vbGJhcnttYXJnaW4tdG9wOjlweDttYXJnaW4tYm90dG9tOjlweDt9Ci5idG4tdG9vbGJhciAuYnRuLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTsqem9vbToxO30KLmJ0bi1ncm91cD4uYnRue3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6LTFweDstd2Via2l0LWJvcmRlci1yYWRpdXM6MDstbW96LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7fQouYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweDt9Ci5idG4tZ3JvdXA+LmJ0bjpsYXN0LWNoaWxkLC5idG4tZ3JvdXA+LmRyb3Bkb3duLXRvZ2dsZXstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjRweDt9Ci5idG4tZ3JvdXA+LmJ0bi5sYXJnZTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowOy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6NnB4O30KLmJ0bi1ncm91cD4uYnRuLmxhcmdlOmxhc3QtY2hpbGQsLmJ0bi1ncm91cD4ubGFyZ2UuZHJvcGRvd24tdG9nZ2xley13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4O30KLmJ0bi1ncm91cD4uYnRuOmhvdmVyLC5idG4tZ3JvdXA+LmJ0bjpmb2N1cywuYnRuLWdyb3VwPi5idG46YWN0aXZlLC5idG4tZ3JvdXA+LmJ0bi5hY3RpdmV7ei1pbmRleDoyO30KLmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwuYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZXtvdXRsaW5lOjA7fQouYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGV7KnBhZGRpbmctdG9wOjRweDtwYWRkaW5nLXJpZ2h0OjhweDsqcGFkZGluZy1ib3R0b206NHB4O3BhZGRpbmctbGVmdDo4cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDFweCAwIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7LW1vei1ib3gtc2hhZG93Omluc2V0IDFweCAwIDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMiksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym94LXNoYWRvdzppbnNldCAxcHggMCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpLGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLDAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30KLmJ0bi1ncm91cD4uYnRuLW1pbmkuZHJvcGRvd24tdG9nZ2xle3BhZGRpbmctcmlnaHQ6NXB4O3BhZGRpbmctbGVmdDo1cHg7fQouYnRuLWdyb3VwPi5idG4tc21hbGwuZHJvcGRvd24tdG9nZ2xleypwYWRkaW5nLXRvcDo0cHg7KnBhZGRpbmctYm90dG9tOjRweDt9Ci5idG4tZ3JvdXA+LmJ0bi1sYXJnZS5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1yaWdodDoxMnB4O3BhZGRpbmctbGVmdDoxMnB4O30KLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1pbWFnZTpub25lOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSksMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Ym94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTt9Ci5idG4tZ3JvdXAub3BlbiAuYnRuLmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7fQouYnRuLWdyb3VwLm9wZW4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDU1Y2M7fQouYnRuLWdyb3VwLm9wZW4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmODk0MDY7fQouYnRuLWdyb3VwLm9wZW4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6I2JkMzYyZjt9Ci5idG4tZ3JvdXAub3BlbiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6IzUxYTM1MTt9Ci5idG4tZ3JvdXAub3BlbiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6IzJmOTZiNDt9Ci5idG4tZ3JvdXAub3BlbiAuYnRuLWludmVyc2UuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6IzIyMjIyMjt9Ci5idG4gLmNhcmV0e21hcmdpbi10b3A6N3B4O21hcmdpbi1sZWZ0OjA7fQouYnRuOmhvdmVyIC5jYXJldCwub3Blbi5idG4tZ3JvdXAgLmNhcmV0e29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30KLmJ0bi1taW5pIC5jYXJldHttYXJnaW4tdG9wOjVweDt9Ci5idG4tc21hbGwgLmNhcmV0e21hcmdpbi10b3A6NnB4O30KLmJ0bi1sYXJnZSAuY2FyZXR7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXRvcC13aWR0aDo1cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjVweDtib3JkZXItbGVmdC13aWR0aDo1cHg7fQouZHJvcHVwIC5idG4tbGFyZ2UgLmNhcmV0e2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjVweCBzb2xpZCAjMDAwMDAwO30KLmJ0bi1wcmltYXJ5IC5jYXJldCwuYnRuLXdhcm5pbmcgLmNhcmV0LC5idG4tZGFuZ2VyIC5jYXJldCwuYnRuLWluZm8gLmNhcmV0LC5idG4tc3VjY2VzcyAuY2FyZXQsLmJ0bi1pbnZlcnNlIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiNmZmZmZmY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmZmZmO29wYWNpdHk6MC43NTtmaWx0ZXI6YWxwaGEob3BhY2l0eT03NSk7fQouYWxlcnR7cGFkZGluZzo4cHggMzVweCA4cHggMTRweDttYXJnaW4tYm90dG9tOjE4cHg7Y29sb3I6I2MwOTg1Mzt0ZXh0LXNoYWRvdzowIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyOjFweCBzb2xpZCAjZmJlZWQ1Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9Ci5hbGVydC1oZWFkaW5ne2NvbG9yOmluaGVyaXQ7fQouYWxlcnQgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2xpbmUtaGVpZ2h0OjE4cHg7fQouYWxlcnQtc3VjY2Vzc3tjb2xvcjojNDY4ODQ3O2JhY2tncm91bmQtY29sb3I6I2RmZjBkODtib3JkZXItY29sb3I6I2Q2ZTljNjt9Ci5hbGVydC1kYW5nZXIsLmFsZXJ0LWVycm9ye2NvbG9yOiNiOTRhNDg7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlO2JvcmRlci1jb2xvcjojZWVkM2Q3O30KLmFsZXJ0LWluZm97Y29sb3I6IzNhODdhZDtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiNiY2U4ZjE7fQouYWxlcnQtYmxvY2t7cGFkZGluZy10b3A6MTRweDtwYWRkaW5nLWJvdHRvbToxNHB4O30KLmFsZXJ0LWJsb2NrPnAsLmFsZXJ0LWJsb2NrPnVse21hcmdpbi1ib3R0b206MDt9Ci5hbGVydC1ibG9jayBwK3B7bWFyZ2luLXRvcDo1cHg7fQoubmF2e21hcmdpbi1ib3R0b206MThweDttYXJnaW4tbGVmdDowO2xpc3Qtc3R5bGU6bm9uZTt9Ci5uYXY+bGk+YXtkaXNwbGF5OmJsb2NrO30KLm5hdj5saT5hOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZWVlZTt9Ci5uYXY+LnB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHQ7fQoubmF2IC5uYXYtaGVhZGVye2Rpc3BsYXk6YmxvY2s7cGFkZGluZzozcHggMTVweDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjE4cHg7Y29sb3I6Izk5OTk5OTt0ZXh0LXNoYWRvdzowIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fQoubmF2IGxpKy5uYXYtaGVhZGVye21hcmdpbi10b3A6OXB4O30KLm5hdi1saXN0e3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tYm90dG9tOjA7fQoubmF2LWxpc3Q+bGk+YSwubmF2LWxpc3QgLm5hdi1oZWFkZXJ7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4O3RleHQtc2hhZG93OjAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO30KLm5hdi1saXN0PmxpPmF7cGFkZGluZzozcHggMTVweDt9Ci5uYXYtbGlzdD4uYWN0aXZlPmEsLm5hdi1saXN0Pi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDg4Y2M7fQoubmF2LWxpc3QgW2NsYXNzXj0iaWNvbi0iXXttYXJnaW4tcmlnaHQ6MnB4O30KLm5hdi1saXN0IC5kaXZpZGVyeyp3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjhweCAxcHg7Km1hcmdpbjotNXB4IDAgNXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZmZmZjt9Ci5uYXYtdGFicywubmF2LXBpbGxzeyp6b29tOjE7fQoubmF2LXRhYnM6YmVmb3JlLC5uYXYtcGlsbHM6YmVmb3JlLC5uYXYtdGFiczphZnRlciwubmF2LXBpbGxzOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9Ci5uYXYtdGFiczphZnRlciwubmF2LXBpbGxzOmFmdGVye2NsZWFyOmJvdGg7fQoubmF2LXRhYnM+bGksLm5hdi1waWxscz5saXtmbG9hdDpsZWZ0O30KLm5hdi10YWJzPmxpPmEsLm5hdi1waWxscz5saT5he3BhZGRpbmctcmlnaHQ6MTJweDtwYWRkaW5nLWxlZnQ6MTJweDttYXJnaW4tcmlnaHQ6MnB4O2xpbmUtaGVpZ2h0OjE0cHg7fQoubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDt9Ci5uYXYtdGFicz5saXttYXJnaW4tYm90dG9tOi0xcHg7fQoubmF2LXRhYnM+bGk+YXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4O2xpbmUtaGVpZ2h0OjE4cHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7LW1vei1ib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7fQoubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZWVlZSAjZWVlZWVlICNkZGRkZGQ7fQoubmF2LXRhYnM+LmFjdGl2ZT5hLC5uYXYtdGFicz4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzU1NTU1NTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnQ7fQoubmF2LXBpbGxzPmxpPmF7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweDttYXJnaW4tdG9wOjJweDttYXJnaW4tYm90dG9tOjJweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4Oy1tb3otYm9yZGVyLXJhZGl1czo1cHg7Ym9yZGVyLXJhZGl1czo1cHg7fQoubmF2LXBpbGxzPi5hY3RpdmU+YSwubmF2LXBpbGxzPi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmZmZmO2JhY2tncm91bmQtY29sb3I6IzAwODhjYzt9Ci5uYXYtc3RhY2tlZD5saXtmbG9hdDpub25lO30KLm5hdi1zdGFja2VkPmxpPmF7bWFyZ2luLXJpZ2h0OjA7fQoubmF2LXRhYnMubmF2LXN0YWNrZWR7Ym9yZGVyLWJvdHRvbTowO30KLm5hdi10YWJzLm5hdi1zdGFja2VkPmxpPmF7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO2JvcmRlci1yYWRpdXM6MDt9Ci5uYXYtdGFicy5uYXYtc3RhY2tlZD5saTpmaXJzdC1jaGlsZD5hey13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDt9Ci5uYXYtdGFicy5uYXYtc3RhY2tlZD5saTpsYXN0LWNoaWxkPmF7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgNHB4IDRweDtib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4O30KLm5hdi10YWJzLm5hdi1zdGFja2VkPmxpPmE6aG92ZXJ7ei1pbmRleDoyO2JvcmRlci1jb2xvcjojZGRkO30KLm5hdi1waWxscy5uYXYtc3RhY2tlZD5saT5he21hcmdpbi1ib3R0b206M3B4O30KLm5hdi1waWxscy5uYXYtc3RhY2tlZD5saTpsYXN0LWNoaWxkPmF7bWFyZ2luLWJvdHRvbToxcHg7fQoubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnV7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCA1cHggNXB4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgNXB4IDVweDtib3JkZXItcmFkaXVzOjAgMCA1cHggNXB4O30KLm5hdi1waWxscyAuZHJvcGRvd24tbWVudXstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7fQoubmF2LXRhYnMgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXQsLm5hdi1waWxscyAuZHJvcGRvd24tdG9nZ2xlIC5jYXJldHttYXJnaW4tdG9wOjZweDtib3JkZXItdG9wLWNvbG9yOiMwMDg4Y2M7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDA4OGNjO30KLm5hdi10YWJzIC5kcm9wZG93bi10b2dnbGU6aG92ZXIgLmNhcmV0LC5uYXYtcGlsbHMgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojMDA1NTgwO2JvcmRlci1ib3R0b20tY29sb3I6IzAwNTU4MDt9Ci5uYXYtdGFicyAuYWN0aXZlIC5kcm9wZG93bi10b2dnbGUgLmNhcmV0LC5uYXYtcGlsbHMgLmFjdGl2ZSAuZHJvcGRvd24tdG9nZ2xlIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiMzMzMzMzM7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzMzMzMzO30KLm5hdj4uZHJvcGRvd24uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6IzAwMDAwMDtjdXJzb3I6cG9pbnRlcjt9Ci5uYXYtdGFicyAub3BlbiAuZHJvcGRvd24tdG9nZ2xlLC5uYXYtcGlsbHMgLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZSwubmF2PmxpLmRyb3Bkb3duLm9wZW4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZmZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7Ym9yZGVyLWNvbG9yOiM5OTk5OTk7fQoubmF2IGxpLmRyb3Bkb3duLm9wZW4gLmNhcmV0LC5uYXYgbGkuZHJvcGRvd24ub3Blbi5hY3RpdmUgLmNhcmV0LC5uYXYgbGkuZHJvcGRvd24ub3BlbiBhOmhvdmVyIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiNmZmZmZmY7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmZmZmO29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30KLnRhYnMtc3RhY2tlZCAub3Blbj5hOmhvdmVye2JvcmRlci1jb2xvcjojOTk5OTk5O30KLnRhYmJhYmxleyp6b29tOjE7fQoudGFiYmFibGU6YmVmb3JlLC50YWJiYWJsZTphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQoudGFiYmFibGU6YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci50YWItY29udGVudHtvdmVyZmxvdzphdXRvO30KLnRhYnMtYmVsb3c+Lm5hdi10YWJzLC50YWJzLXJpZ2h0Pi5uYXYtdGFicywudGFicy1sZWZ0Pi5uYXYtdGFic3tib3JkZXItYm90dG9tOjA7fQoudGFiLWNvbnRlbnQ+LnRhYi1wYW5lLC5waWxsLWNvbnRlbnQ+LnBpbGwtcGFuZXtkaXNwbGF5Om5vbmU7fQoudGFiLWNvbnRlbnQ+LmFjdGl2ZSwucGlsbC1jb250ZW50Pi5hY3RpdmV7ZGlzcGxheTpibG9jazt9Ci50YWJzLWJlbG93Pi5uYXYtdGFic3tib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO30KLnRhYnMtYmVsb3c+Lm5hdi10YWJzPmxpe21hcmdpbi10b3A6LTFweDttYXJnaW4tYm90dG9tOjA7fQoudGFicy1iZWxvdz4ubmF2LXRhYnM+bGk+YXstd2Via2l0LWJvcmRlci1yYWRpdXM6MCAwIDRweCA0cHg7LW1vei1ib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4O2JvcmRlci1yYWRpdXM6MCAwIDRweCA0cHg7fQoudGFicy1iZWxvdz4ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItdG9wLWNvbG9yOiNkZGQ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp0cmFuc3BhcmVudDt9Ci50YWJzLWJlbG93Pi5uYXYtdGFicz4uYWN0aXZlPmEsLnRhYnMtYmVsb3c+Lm5hdi10YWJzPi5hY3RpdmU+YTpob3Zlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgI2RkZCAjZGRkICNkZGQ7fQoudGFicy1sZWZ0Pi5uYXYtdGFicz5saSwudGFicy1yaWdodD4ubmF2LXRhYnM+bGl7ZmxvYXQ6bm9uZTt9Ci50YWJzLWxlZnQ+Lm5hdi10YWJzPmxpPmEsLnRhYnMtcmlnaHQ+Lm5hdi10YWJzPmxpPmF7bWluLXdpZHRoOjc0cHg7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWJvdHRvbTozcHg7fQoudGFicy1sZWZ0Pi5uYXYtdGFic3tmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoxOXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDt9Ci50YWJzLWxlZnQ+Lm5hdi10YWJzPmxpPmF7bWFyZ2luLXJpZ2h0Oi0xcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweCAwIDAgNHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHggMCAwIDRweDtib3JkZXItcmFkaXVzOjRweCAwIDAgNHB4O30KLnRhYnMtbGVmdD4ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZWVlZSAjZGRkZGRkICNlZWVlZWUgI2VlZWVlZTt9Ci50YWJzLWxlZnQ+Lm5hdi10YWJzIC5hY3RpdmU+YSwudGFicy1sZWZ0Pi5uYXYtdGFicyAuYWN0aXZlPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNkZGQgdHJhbnNwYXJlbnQgI2RkZCAjZGRkOypib3JkZXItcmlnaHQtY29sb3I6I2ZmZmZmZjt9Ci50YWJzLXJpZ2h0Pi5uYXYtdGFic3tmbG9hdDpyaWdodDttYXJnaW4tbGVmdDoxOXB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGRkO30KLnRhYnMtcmlnaHQ+Lm5hdi10YWJzPmxpPmF7bWFyZ2luLWxlZnQ6LTFweDstd2Via2l0LWJvcmRlci1yYWRpdXM6MCA0cHggNHB4IDA7LW1vei1ib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwO2JvcmRlci1yYWRpdXM6MCA0cHggNHB4IDA7fQoudGFicy1yaWdodD4ubmF2LXRhYnM+bGk+YTpob3Zlcntib3JkZXItY29sb3I6I2VlZWVlZSAjZWVlZWVlICNlZWVlZWUgI2RkZGRkZDt9Ci50YWJzLXJpZ2h0Pi5uYXYtdGFicyAuYWN0aXZlPmEsLnRhYnMtcmlnaHQ+Lm5hdi10YWJzIC5hY3RpdmU+YTpob3Zlcntib3JkZXItY29sb3I6I2RkZCAjZGRkICNkZGQgdHJhbnNwYXJlbnQ7KmJvcmRlci1sZWZ0LWNvbG9yOiNmZmZmZmY7fQoubmF2YmFyeypwb3NpdGlvbjpyZWxhdGl2ZTsqei1pbmRleDoyO21hcmdpbi1ib3R0b206MThweDtvdmVyZmxvdzp2aXNpYmxlO30KLm5hdmJhci1pbm5lcnttaW4taGVpZ2h0OjQwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctbGVmdDoyMHB4O2JhY2tncm91bmQtY29sb3I6IzJjMmMyYztiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzMzMzMzMyksIHRvKCMyMjIyMjIpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMzMzMzMzLCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMzMzMzMzMnLCBlbmRDb2xvcnN0cj0nIzIyMjIyMicsIEdyYWRpZW50VHlwZT0wKTstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSksaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpOy1tb3otYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSxpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjI1KSxpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7fQoubmF2YmFyIC5jb250YWluZXJ7d2lkdGg6YXV0bzt9Ci5uYXYtY29sbGFwc2UuY29sbGFwc2V7aGVpZ2h0OmF1dG87fQoubmF2YmFye2NvbG9yOiM5OTk5OTk7fQoubmF2YmFyIC5icmFuZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZTt9Ci5uYXZiYXIgLmJyYW5ke2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtwYWRkaW5nOjhweCAyMHB4IDEycHg7bWFyZ2luLWxlZnQ6LTIwcHg7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6MjAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6Izk5OTk5OTt9Ci5uYXZiYXIgLm5hdmJhci10ZXh0e21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDo0MHB4O30KLm5hdmJhciAubmF2YmFyLWxpbmt7Y29sb3I6Izk5OTk5OTt9Ci5uYXZiYXIgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiNmZmZmZmY7fQoubmF2YmFyIC5idG4sLm5hdmJhciAuYnRuLWdyb3Vwe21hcmdpbi10b3A6NXB4O30KLm5hdmJhciAuYnRuLWdyb3VwIC5idG57bWFyZ2luOjA7fQoubmF2YmFyLWZvcm17bWFyZ2luLWJvdHRvbTowOyp6b29tOjE7fQoubmF2YmFyLWZvcm06YmVmb3JlLC5uYXZiYXItZm9ybTphZnRlcntkaXNwbGF5OnRhYmxlO2NvbnRlbnQ6IiI7fQoubmF2YmFyLWZvcm06YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci5uYXZiYXItZm9ybSBpbnB1dCwubmF2YmFyLWZvcm0gc2VsZWN0LC5uYXZiYXItZm9ybSAucmFkaW8sLm5hdmJhci1mb3JtIC5jaGVja2JveHttYXJnaW4tdG9wOjVweDt9Ci5uYXZiYXItZm9ybSBpbnB1dCwubmF2YmFyLWZvcm0gc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206MDt9Ci5uYXZiYXItZm9ybSBpbnB1dFt0eXBlPSJpbWFnZSJdLC5uYXZiYXItZm9ybSBpbnB1dFt0eXBlPSJjaGVja2JveCJdLC5uYXZiYXItZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJde21hcmdpbi10b3A6M3B4O30KLm5hdmJhci1mb3JtIC5pbnB1dC1hcHBlbmQsLm5hdmJhci1mb3JtIC5pbnB1dC1wcmVwZW5ke21hcmdpbi10b3A6NnB4O3doaXRlLXNwYWNlOm5vd3JhcDt9Ci5uYXZiYXItZm9ybSAuaW5wdXQtYXBwZW5kIGlucHV0LC5uYXZiYXItZm9ybSAuaW5wdXQtcHJlcGVuZCBpbnB1dHttYXJnaW4tdG9wOjA7fQoubmF2YmFyLXNlYXJjaHtwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpsZWZ0O21hcmdpbi10b3A6NnB4O21hcmdpbi1ib3R0b206MDt9Ci5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnl7cGFkZGluZzo0cHggOXB4O2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZmZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM2MjYyNjI7Ym9yZGVyOjFweCBzb2xpZCAjMTUxNTE1Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKSwwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTstd2Via2l0LXRyYW5zaXRpb246bm9uZTstbW96LXRyYW5zaXRpb246bm9uZTstbXMtdHJhbnNpdGlvbjpub25lOy1vLXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmU7fQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I2NjY2NjYzt9Ci5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnk6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNjY2NjY2M7fQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNjY2NjY2M7fQoubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5OmZvY3VzLC5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnkuZm9jdXNlZHtwYWRkaW5nOjVweCAxMHB4O2NvbG9yOiMzMzMzMzM7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmZmZmO2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtib3JkZXI6MDtvdXRsaW5lOjA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAzcHggcmdiYSgwLCAwLCAwLCAwLjE1KTstbW96LWJveC1zaGFkb3c6MCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO2JveC1zaGFkb3c6MCAwIDNweCByZ2JhKDAsIDAsIDAsIDAuMTUpO30KLm5hdmJhci1maXhlZC10b3AsLm5hdmJhci1maXhlZC1ib3R0b217cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDMwO21hcmdpbi1ib3R0b206MDt9Ci5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1pbm5lcntwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJhZGl1czowO30KLm5hdmJhci1maXhlZC10b3AgLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVye3dpZHRoOjk0MHB4O30KLm5hdmJhci1maXhlZC10b3B7dG9wOjA7fQoubmF2YmFyLWZpeGVkLWJvdHRvbXtib3R0b206MDt9Ci5uYXZiYXIgLm5hdntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjA7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O21hcmdpbjowIDEwcHggMCAwO30KLm5hdmJhciAubmF2LnB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHQ7fQoubmF2YmFyIC5uYXY+bGl7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O30KLm5hdmJhciAubmF2PmxpPmF7ZmxvYXQ6bm9uZTtwYWRkaW5nOjlweCAxMHB4IDExcHg7bGluZS1oZWlnaHQ6MTlweDtjb2xvcjojOTk5OTk5O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7fQoubmF2YmFyIC5idG57ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo0cHggMTBweCA0cHg7bWFyZ2luOjVweCA1cHggNnB4O2xpbmUtaGVpZ2h0OjE4cHg7fQoubmF2YmFyIC5idG4tZ3JvdXB7cGFkZGluZzo1cHggNXB4IDZweDttYXJnaW46MDt9Ci5uYXZiYXIgLm5hdj5saT5hOmhvdmVye2NvbG9yOiNmZmZmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt9Ci5uYXZiYXIgLm5hdiAuYWN0aXZlPmEsLm5hdmJhciAubmF2IC5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6IzIyMjIyMjt9Ci5uYXZiYXIgLmRpdmlkZXItdmVydGljYWx7d2lkdGg6MXB4O2hlaWdodDo0MHB4O21hcmdpbjowIDlweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojMjIyMjIyO2JvcmRlci1yaWdodDoxcHggc29saWQgIzMzMzMzMzt9Ci5uYXZiYXIgLm5hdi5wdWxsLXJpZ2h0e21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjEwcHg7fQoubmF2YmFyIC5idG4tbmF2YmFye2Rpc3BsYXk6bm9uZTtmbG9hdDpyaWdodDtwYWRkaW5nOjdweCAxMHB4O21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWxlZnQ6NXB4O2JhY2tncm91bmQtY29sb3I6IzJjMmMyYzsqYmFja2dyb3VuZC1jb2xvcjojMjIyMjIyO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCMzMzMzMzMpLCB0bygjMjIyMjIyKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzMzMzMsICMyMjIyMjIpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjMzMzMzMzLCAjMjIyMjIyKTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzMzMzMzMywgIzIyMjIyMik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiMyMjIyMjIgIzIyMjIyMiAjMDAwMDAwO2JvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMzMzMzMzJywgZW5kQ29sb3JzdHI9JyMyMjIyMjInLCBHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDc1KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpLDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3NSk7fQoubmF2YmFyIC5idG4tbmF2YmFyOmhvdmVyLC5uYXZiYXIgLmJ0bi1uYXZiYXI6YWN0aXZlLC5uYXZiYXIgLmJ0bi1uYXZiYXIuYWN0aXZlLC5uYXZiYXIgLmJ0bi1uYXZiYXIuZGlzYWJsZWQsLm5hdmJhciAuYnRuLW5hdmJhcltkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojMjIyMjIyOypiYWNrZ3JvdW5kLWNvbG9yOiMxNTE1MTU7fQoubmF2YmFyIC5idG4tbmF2YmFyOmFjdGl2ZSwubmF2YmFyIC5idG4tbmF2YmFyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDggXDk7fQoubmF2YmFyIC5idG4tbmF2YmFyIC5pY29uLWJhcntkaXNwbGF5OmJsb2NrO3dpZHRoOjE4cHg7aGVpZ2h0OjJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjFweDstbW96LWJvcmRlci1yYWRpdXM6MXB4O2JvcmRlci1yYWRpdXM6MXB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTtib3gtc2hhZG93OjAgMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTt9Ci5idG4tbmF2YmFyIC5pY29uLWJhcisuaWNvbi1iYXJ7bWFyZ2luLXRvcDozcHg7fQoubmF2YmFyIC5kcm9wZG93bi1tZW51OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTdweDtsZWZ0OjlweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmlnaHQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206N3B4IHNvbGlkICNjY2M7Ym9yZGVyLWxlZnQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLCAwLCAwLCAwLjIpO2NvbnRlbnQ6Jyc7fQoubmF2YmFyIC5kcm9wZG93bi1tZW51OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNnB4O2xlZnQ6MTBweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NnB4IHNvbGlkICNmZmZmZmY7Ym9yZGVyLWxlZnQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbnRlbnQ6Jyc7fQoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24tbWVudTpiZWZvcmV7dG9wOmF1dG87Ym90dG9tOi03cHg7Ym9yZGVyLXRvcDo3cHggc29saWQgI2NjYztib3JkZXItYm90dG9tOjA7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuMik7fQoubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24tbWVudTphZnRlcnt0b3A6YXV0bztib3R0b206LTZweDtib3JkZXItdG9wOjZweCBzb2xpZCAjZmZmZmZmO2JvcmRlci1ib3R0b206MDt9Ci5uYXZiYXIgLm5hdiBsaS5kcm9wZG93biAuZHJvcGRvd24tdG9nZ2xlIC5jYXJldCwubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24ub3BlbiAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojZmZmZmZmO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZmZmZjt9Ci5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bi5hY3RpdmUgLmNhcmV0e29wYWNpdHk6MTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30KLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4+LmRyb3Bkb3duLXRvZ2dsZSwubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24uYWN0aXZlPi5kcm9wZG93bi10b2dnbGUsLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4uYWN0aXZlPi5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt9Ci5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bi5hY3RpdmU+LmRyb3Bkb3duLXRvZ2dsZTpob3Zlcntjb2xvcjojZmZmZmZmO30KLm5hdmJhciAucHVsbC1yaWdodCAuZHJvcGRvd24tbWVudSwubmF2YmFyIC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHR7cmlnaHQ6MDtsZWZ0OmF1dG87fQoubmF2YmFyIC5wdWxsLXJpZ2h0IC5kcm9wZG93bi1tZW51OmJlZm9yZSwubmF2YmFyIC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQ6YmVmb3Jle3JpZ2h0OjEycHg7bGVmdDphdXRvO30KLm5hdmJhciAucHVsbC1yaWdodCAuZHJvcGRvd24tbWVudTphZnRlciwubmF2YmFyIC5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQ6YWZ0ZXJ7cmlnaHQ6MTNweDtsZWZ0OmF1dG87fQouYnJlYWRjcnVtYntwYWRkaW5nOjdweCAxNHB4O21hcmdpbjowIDAgMThweDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmJmYmZiO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZjVmNWY1KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZjVmNWY1KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmZmZmZmKSwgdG8oI2Y1ZjVmNSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZjVmNWY1KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNmNWY1ZjUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZmZmZiwgI2Y1ZjVmNSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZmZmZmYnLCBlbmRDb2xvcnN0cj0nI2Y1ZjVmNScsIEdyYWRpZW50VHlwZT0wKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCAjZmZmZmZmOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZmZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZmZmY7fQouYnJlYWRjcnVtYiBsaXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmZmZmOyp6b29tOjE7fQouYnJlYWRjcnVtYiAuZGl2aWRlcntwYWRkaW5nOjAgNXB4O2NvbG9yOiM5OTk5OTk7fQouYnJlYWRjcnVtYiAuYWN0aXZlIGF7Y29sb3I6IzMzMzMzMzt9Ci5wYWdpbmF0aW9ue2hlaWdodDozNnB4O21hcmdpbjoxOHB4IDA7fQoucGFnaW5hdGlvbiB1bHtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7bWFyZ2luLWJvdHRvbTowO21hcmdpbi1sZWZ0OjA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4Oyp6b29tOjE7LXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpOy1tb3otYm94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTtib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMDUpO30KLnBhZ2luYXRpb24gbGl7ZGlzcGxheTppbmxpbmU7fQoucGFnaW5hdGlvbiBhe2Zsb2F0OmxlZnQ7cGFkZGluZzowIDE0cHg7bGluZS1oZWlnaHQ6MzRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLWxlZnQtd2lkdGg6MDt9Ci5wYWdpbmF0aW9uIGE6aG92ZXIsLnBhZ2luYXRpb24gLmFjdGl2ZSBhe2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTt9Ci5wYWdpbmF0aW9uIC5hY3RpdmUgYXtjb2xvcjojOTk5OTk5O2N1cnNvcjpkZWZhdWx0O30KLnBhZ2luYXRpb24gLmRpc2FibGVkIHNwYW4sLnBhZ2luYXRpb24gLmRpc2FibGVkIGEsLnBhZ2luYXRpb24gLmRpc2FibGVkIGE6aG92ZXJ7Y29sb3I6Izk5OTk5OTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O30KLnBhZ2luYXRpb24gbGk6Zmlyc3QtY2hpbGQgYXtib3JkZXItbGVmdC13aWR0aDoxcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDtib3JkZXItcmFkaXVzOjNweCAwIDAgM3B4O30KLnBhZ2luYXRpb24gbGk6bGFzdC1jaGlsZCBhey13ZWJraXQtYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDstbW96LWJvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7Ym9yZGVyLXJhZGl1czowIDNweCAzcHggMDt9Ci5wYWdpbmF0aW9uLWNlbnRlcmVke3RleHQtYWxpZ246Y2VudGVyO30KLnBhZ2luYXRpb24tcmlnaHR7dGV4dC1hbGlnbjpyaWdodDt9Ci5wYWdlcnttYXJnaW4tYm90dG9tOjE4cHg7bWFyZ2luLWxlZnQ6MDt0ZXh0LWFsaWduOmNlbnRlcjtsaXN0LXN0eWxlOm5vbmU7Knpvb206MTt9Ci5wYWdlcjpiZWZvcmUsLnBhZ2VyOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9Ci5wYWdlcjphZnRlcntjbGVhcjpib3RoO30KLnBhZ2VyIGxpe2Rpc3BsYXk6aW5saW5lO30KLnBhZ2VyIGF7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo1cHggMTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkOy13ZWJraXQtYm9yZGVyLXJhZGl1czoxNXB4Oy1tb3otYm9yZGVyLXJhZGl1czoxNXB4O2JvcmRlci1yYWRpdXM6MTVweDt9Ci5wYWdlciBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTt9Ci5wYWdlciAubmV4dCBhe2Zsb2F0OnJpZ2h0O30KLnBhZ2VyIC5wcmV2aW91cyBhe2Zsb2F0OmxlZnQ7fQoucGFnZXIgLmRpc2FibGVkIGEsLnBhZ2VyIC5kaXNhYmxlZCBhOmhvdmVye2NvbG9yOiM5OTk5OTk7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO30KLm1vZGFsLW9wZW4gLmRyb3Bkb3duLW1lbnV7ei1pbmRleDoyMDUwO30KLm1vZGFsLW9wZW4gLmRyb3Bkb3duLm9wZW57KnotaW5kZXg6MjA1MDt9Ci5tb2RhbC1vcGVuIC5wb3BvdmVye3otaW5kZXg6MjA2MDt9Ci5tb2RhbC1vcGVuIC50b29sdGlwe3otaW5kZXg6MjA3MDt9Ci5tb2RhbC1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjEwNDA7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwO30KLm1vZGFsLWJhY2tkcm9wLmZhZGV7b3BhY2l0eTowO30KLm1vZGFsLWJhY2tkcm9wLC5tb2RhbC1iYWNrZHJvcC5mYWRlLmlue29wYWNpdHk6MC44O2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTt9Ci5tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6NTAlO2xlZnQ6NTAlO3otaW5kZXg6MTA1MDt3aWR0aDo1NjBweDttYXJnaW46LTI1MHB4IDAgMCAtMjgwcHg7b3ZlcmZsb3c6YXV0bztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjMpOypib3JkZXI6MXB4IHNvbGlkICM5OTk7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpOy1tb3otYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpO2JveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTstd2Via2l0LWJhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDstbW96LWJhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7fQoubW9kYWwuZmFkZXt0b3A6LTI1JTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzIGxpbmVhcix0b3AgMC4zcyBlYXNlLW91dDstbW96LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzIGxpbmVhcix0b3AgMC4zcyBlYXNlLW91dDstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgbGluZWFyLHRvcCAwLjNzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246b3BhY2l0eSAwLjNzIGxpbmVhcix0b3AgMC4zcyBlYXNlLW91dDt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zcyBsaW5lYXIsdG9wIDAuM3MgZWFzZS1vdXQ7fQoubW9kYWwuZmFkZS5pbnt0b3A6NTAlO30KLm1vZGFsLWhlYWRlcntwYWRkaW5nOjlweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7fQoubW9kYWwtaGVhZGVyIC5jbG9zZXttYXJnaW4tdG9wOjJweDt9Ci5tb2RhbC1ib2R5e21heC1oZWlnaHQ6NDAwcHg7cGFkZGluZzoxNXB4O292ZXJmbG93LXk6YXV0bzt9Ci5tb2RhbC1mb3Jte21hcmdpbi1ib3R0b206MDt9Ci5tb2RhbC1mb290ZXJ7cGFkZGluZzoxNHB4IDE1cHggMTVweDttYXJnaW4tYm90dG9tOjA7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDstd2Via2l0LWJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7LW1vei1ib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4O2JvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7Knpvb206MTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMCAjZmZmZmZmOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZmZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZmZmY7fQoubW9kYWwtZm9vdGVyOmJlZm9yZSwubW9kYWwtZm9vdGVyOmFmdGVye2Rpc3BsYXk6dGFibGU7Y29udGVudDoiIjt9Ci5tb2RhbC1mb290ZXI6YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci5tb2RhbC1mb290ZXIgLmJ0bisuYnRue21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDo1cHg7fQoubW9kYWwtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0bisuYnRue21hcmdpbi1sZWZ0Oi0xcHg7fQoudG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMjA7ZGlzcGxheTpibG9jaztwYWRkaW5nOjVweDtmb250LXNpemU6MTFweDtvcGFjaXR5OjA7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCk7dmlzaWJpbGl0eTp2aXNpYmxlO30KLnRvb2x0aXAuaW57b3BhY2l0eTowLjg7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApO30KLnRvb2x0aXAudG9we21hcmdpbi10b3A6LTJweDt9Ci50b29sdGlwLnJpZ2h0e21hcmdpbi1sZWZ0OjJweDt9Ci50b29sdGlwLmJvdHRvbXttYXJnaW4tdG9wOjJweDt9Ci50b29sdGlwLmxlZnR7bWFyZ2luLWxlZnQ6LTJweDt9Ci50b29sdGlwLnRvcCAudG9vbHRpcC1hcnJvd3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQoudG9vbHRpcC5sZWZ0IC50b29sdGlwLWFycm93e3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXRvcDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkICMwMDAwMDA7fQoudG9vbHRpcC5ib3R0b20gLnRvb2x0aXAtYXJyb3d7dG9wOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O30KLnRvb2x0aXAucmlnaHQgLnRvb2x0aXAtYXJyb3d7dG9wOjUwJTtsZWZ0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgIzAwMDAwMDtib3JkZXItYm90dG9tOjVweCBzb2xpZCB0cmFuc3BhcmVudDt9Ci50b29sdGlwLWlubmVye21heC13aWR0aDoyMDBweDtwYWRkaW5nOjNweCA4cHg7Y29sb3I6I2ZmZmZmZjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O30KLnRvb2x0aXAtYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDt9Ci5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwMTA7ZGlzcGxheTpub25lO3BhZGRpbmc6NXB4O30KLnBvcG92ZXIudG9we21hcmdpbi10b3A6LTVweDt9Ci5wb3BvdmVyLnJpZ2h0e21hcmdpbi1sZWZ0OjVweDt9Ci5wb3BvdmVyLmJvdHRvbXttYXJnaW4tdG9wOjVweDt9Ci5wb3BvdmVyLmxlZnR7bWFyZ2luLWxlZnQ6LTVweDt9Ci5wb3BvdmVyLnRvcCAuYXJyb3d7Ym90dG9tOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwO2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O30KLnBvcG92ZXIucmlnaHQgLmFycm93e3RvcDo1MCU7bGVmdDowO21hcmdpbi10b3A6LTVweDtib3JkZXItdG9wOjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICMwMDAwMDA7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgdHJhbnNwYXJlbnQ7fQoucG9wb3Zlci5ib3R0b20gLmFycm93e3RvcDowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjVweCBzb2xpZCAjMDAwMDAwO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDt9Ci5wb3BvdmVyLmxlZnQgLmFycm93e3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXRvcDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkICMwMDAwMDA7fQoucG9wb3ZlciAuYXJyb3d7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDt9Ci5wb3BvdmVyLWlubmVye3dpZHRoOjI4MHB4O3BhZGRpbmc6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDAwMDA7YmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDAuOCk7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpOy1tb3otYm94LXNoYWRvdzowIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpO2JveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4zKTt9Ci5wb3BvdmVyLXRpdGxle3BhZGRpbmc6OXB4IDE1cHg7bGluZS1oZWlnaHQ6MTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7LW1vei1ib3JkZXItcmFkaXVzOjNweCAzcHggMCAwO2JvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7fQoucG9wb3Zlci1jb250ZW50e3BhZGRpbmc6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAzcHggM3B4Oy1tb3otYm9yZGVyLXJhZGl1czowIDAgM3B4IDNweDtib3JkZXItcmFkaXVzOjAgMCAzcHggM3B4Oy13ZWJraXQtYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94Oy1tb3otYmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDt9Ci5wb3BvdmVyLWNvbnRlbnQgcCwucG9wb3Zlci1jb250ZW50IHVsLC5wb3BvdmVyLWNvbnRlbnQgb2x7bWFyZ2luLWJvdHRvbTowO30KLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6LTIwcHg7bGlzdC1zdHlsZTpub25lOyp6b29tOjE7fQoudGh1bWJuYWlsczpiZWZvcmUsLnRodW1ibmFpbHM6YWZ0ZXJ7ZGlzcGxheTp0YWJsZTtjb250ZW50OiIiO30KLnRodW1ibmFpbHM6YWZ0ZXJ7Y2xlYXI6Ym90aDt9Ci5yb3ctZmx1aWQgLnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6MDt9Ci50aHVtYm5haWxzPmxpe2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbToxOHB4O21hcmdpbi1sZWZ0OjIwcHg7fQoudGh1bWJuYWlse2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHg7bGluZS1oZWlnaHQ6MTtib3JkZXI6MXB4IHNvbGlkICNkZGQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTt9CmEudGh1bWJuYWlsOmhvdmVye2JvcmRlci1jb2xvcjojMDA4OGNjOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCA0cHggcmdiYSgwLCAxMDUsIDIxNCwgMC4yNSk7LW1vei1ib3gtc2hhZG93OjAgMXB4IDRweCByZ2JhKDAsIDEwNSwgMjE0LCAwLjI1KTtib3gtc2hhZG93OjAgMXB4IDRweCByZ2JhKDAsIDEwNSwgMjE0LCAwLjI1KTt9Ci50aHVtYm5haWw+aW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzt9Ci50aHVtYm5haWwgLmNhcHRpb257cGFkZGluZzo5cHg7fQoubGFiZWwsLmJhZGdle2ZvbnQtc2l6ZToxMC45OThweDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjE0cHg7Y29sb3I6I2ZmZmZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7fQoubGFiZWx7cGFkZGluZzoxcHggNHB4IDJweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXJhZGl1czozcHg7fQouYmFkZ2V7cGFkZGluZzoxcHggOXB4IDJweDstd2Via2l0LWJvcmRlci1yYWRpdXM6OXB4Oy1tb3otYm9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyLXJhZGl1czo5cHg7fQphLmxhYmVsOmhvdmVyLGEuYmFkZ2U6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjt9Ci5sYWJlbC1pbXBvcnRhbnQsLmJhZGdlLWltcG9ydGFudHtiYWNrZ3JvdW5kLWNvbG9yOiNiOTRhNDg7fQoubGFiZWwtaW1wb3J0YW50W2hyZWZdLC5iYWRnZS1pbXBvcnRhbnRbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojOTUzYjM5O30KLmxhYmVsLXdhcm5pbmcsLmJhZGdlLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZjg5NDA2O30KLmxhYmVsLXdhcm5pbmdbaHJlZl0sLmJhZGdlLXdhcm5pbmdbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojYzY3NjA1O30KLmxhYmVsLXN1Y2Nlc3MsLmJhZGdlLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNDY4ODQ3O30KLmxhYmVsLXN1Y2Nlc3NbaHJlZl0sLmJhZGdlLXN1Y2Nlc3NbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojMzU2NjM1O30KLmxhYmVsLWluZm8sLmJhZGdlLWluZm97YmFja2dyb3VuZC1jb2xvcjojM2E4N2FkO30KLmxhYmVsLWluZm9baHJlZl0sLmJhZGdlLWluZm9baHJlZl17YmFja2dyb3VuZC1jb2xvcjojMmQ2OTg3O30KLmxhYmVsLWludmVyc2UsLmJhZGdlLWludmVyc2V7YmFja2dyb3VuZC1jb2xvcjojMzMzMzMzO30KLmxhYmVsLWludmVyc2VbaHJlZl0sLmJhZGdlLWludmVyc2VbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojMWExYTFhO30KQC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDA7fSB0b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDt9fUAtbW96LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwO30gdG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7fX1ALW1zLWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwO30gdG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7fX1ALW8ta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7fSB0b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMDt9fUBrZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXN7ZnJvbXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMDt9IHRve2JhY2tncm91bmQtcG9zaXRpb246MCAwO319LnByb2dyZXNze2hlaWdodDoxOHB4O21hcmdpbi1ib3R0b206MThweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3O2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1LCAjZjlmOWY5KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1LCAjZjlmOWY5KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZjVmNWY1KSwgdG8oI2Y5ZjlmOSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjVmNWY1LCAjZjlmOWY5KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmNWY1ZjUsICNmOWY5ZjkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2Y1ZjVmNSwgI2Y5ZjlmOSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4O2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2Y1ZjVmNScsIGVuZENvbG9yc3RyPScjZjlmOWY5JywgR3JhZGllbnRUeXBlPTApOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTt9Ci5wcm9ncmVzcyAuYmFye3dpZHRoOjA7aGVpZ2h0OjE4cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6I2ZmZmZmZjt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMjUpO2JhY2tncm91bmQtY29sb3I6IzBlOTBkMjtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzE0OWJkZiwgIzA0ODBiZSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzE0OWJkZiksIHRvKCMwNDgwYmUpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzE0OWJkZiwgIzA0ODBiZSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMTQ5YmRmLCAjMDQ4MGJlKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICMxNDliZGYsICMwNDgwYmUpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMxNDliZGYsICMwNDgwYmUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzE0OWJkZicsIGVuZENvbG9yc3RyPScjMDQ4MGJlJywgR3JhZGllbnRUeXBlPTApOy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMTUpO2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRyYW5zaXRpb246d2lkdGggMC42cyBlYXNlOy1tb3otdHJhbnNpdGlvbjp3aWR0aCAwLjZzIGVhc2U7LW1zLXRyYW5zaXRpb246d2lkdGggMC42cyBlYXNlOy1vLXRyYW5zaXRpb246d2lkdGggMC42cyBlYXNlO3RyYW5zaXRpb246d2lkdGggMC42cyBlYXNlO30KLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiMxNDliZGY7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4Oy1tb3otYmFja2dyb3VuZC1zaXplOjQwcHggNDBweDstby1iYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4O2JhY2tncm91bmQtc2l6ZTo0MHB4IDQwcHg7fQoucHJvZ3Jlc3MuYWN0aXZlIC5iYXJ7LXdlYmtpdC1hbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlOy1tb3otYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTstbXMtYW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZTstby1hbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlO2FuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7fQoucHJvZ3Jlc3MtZGFuZ2VyIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojZGQ1MTRjO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYzQzYzM1KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYzQzYzM1KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZWU1ZjViKSwgdG8oI2M0M2MzNSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZWU1ZjViLCAjYzQzYzM1KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNlZTVmNWIsICNjNDNjMzUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgI2VlNWY1YiwgI2M0M2MzNSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZWU1ZjViJywgZW5kQ29sb3JzdHI9JyNjNDNjMzUnLCBHcmFkaWVudFR5cGU9MCk7fQoucHJvZ3Jlc3MtZGFuZ2VyLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNlZTVmNWI7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7fQoucHJvZ3Jlc3Mtc3VjY2VzcyAuYmFye2JhY2tncm91bmQtY29sb3I6IzVlYjk1ZTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzU3YTk1Nyk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzU3YTk1Nyk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIDEwMCUsIGZyb20oIzYyYzQ2MiksIHRvKCM1N2E5NTcpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzYyYzQ2MiwgIzU3YTk1Nyk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCAjNjJjNDYyLCAjNTdhOTU3KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsICM2MmM0NjIsICM1N2E5NTcpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzYyYzQ2MicsIGVuZENvbG9yc3RyPScjNTdhOTU3JywgR3JhZGllbnRUeXBlPTApO30KLnByb2dyZXNzLXN1Y2Nlc3MucHJvZ3Jlc3Mtc3RyaXBlZCAuYmFye2JhY2tncm91bmQtY29sb3I6IzYyYzQ2MjtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC41LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTt9Ci5wcm9ncmVzcy1pbmZvIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojNGJiMWNmO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjNWJjMGRlKSwgdG8oIzMzOWJiOSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjNWJjMGRlLCAjMzM5YmI5KTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICM1YmMwZGUsICMzMzliYjkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwgIzViYzBkZSwgIzMzOWJiOSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjNWJjMGRlJywgZW5kQ29sb3JzdHI9JyMzMzliYjknLCBHcmFkaWVudFR5cGU9MCk7fQoucHJvZ3Jlc3MtaW5mby5wcm9ncmVzcy1zdHJpcGVkIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojNWJjMGRlO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMTAwJSwgMTAwJSAwLCBjb2xvci1zdG9wKDAuMjUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNzUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgdG8odHJhbnNwYXJlbnQpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpO30KLnByb2dyZXNzLXdhcm5pbmcgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmYWE3MzI7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAgMCwgMCAxMDAlLCBmcm9tKCNmYmI0NTApLCB0bygjZjg5NDA2KSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmYmI0NTAsICNmODk0MDYpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZiYjQ1MCwgI2Y4OTQwNik7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCAjZmJiNDUwLCAjZjg5NDA2KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtmaWx0ZXI6cHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmYmI0NTAnLCBlbmRDb2xvcnN0cj0nI2Y4OTQwNicsIEdyYWRpZW50VHlwZT0wKTt9Ci5wcm9ncmVzcy13YXJuaW5nLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmYmI0NTA7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsIGNvbG9yLXN0b3AoMC4yNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSksIGNvbG9yLXN0b3AoMC43NSwgdHJhbnNwYXJlbnQpLCB0byh0cmFuc3BhcmVudCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDc1JSwgdHJhbnNwYXJlbnQgNzUlLCB0cmFuc3BhcmVudCk7fQouYWNjb3JkaW9ue21hcmdpbi1ib3R0b206MThweDt9Ci5hY2NvcmRpb24tZ3JvdXB7bWFyZ2luLWJvdHRvbToycHg7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDt9Ci5hY2NvcmRpb24taGVhZGluZ3tib3JkZXItYm90dG9tOjA7fQouYWNjb3JkaW9uLWhlYWRpbmcgLmFjY29yZGlvbi10b2dnbGV7ZGlzcGxheTpibG9jaztwYWRkaW5nOjhweCAxNXB4O30KLmFjY29yZGlvbi10b2dnbGV7Y3Vyc29yOnBvaW50ZXI7fQouYWNjb3JkaW9uLWlubmVye3BhZGRpbmc6OXB4IDE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTt9Ci5jYXJvdXNlbHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tYm90dG9tOjE4cHg7bGluZS1oZWlnaHQ6MTt9Ci5jYXJvdXNlbC1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt9Ci5jYXJvdXNlbCAuaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7LXdlYmtpdC10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDstbW96LXRyYW5zaXRpb246MC42cyBlYXNlLWluLW91dCBsZWZ0Oy1tcy10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDstby10cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDt0cmFuc2l0aW9uOjAuNnMgZWFzZS1pbi1vdXQgbGVmdDt9Ci5jYXJvdXNlbCAuaXRlbT5pbWd7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxO30KLmNhcm91c2VsIC5hY3RpdmUsLmNhcm91c2VsIC5uZXh0LC5jYXJvdXNlbCAucHJldntkaXNwbGF5OmJsb2NrO30KLmNhcm91c2VsIC5hY3RpdmV7bGVmdDowO30KLmNhcm91c2VsIC5uZXh0LC5jYXJvdXNlbCAucHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlO30KLmNhcm91c2VsIC5uZXh0e2xlZnQ6MTAwJTt9Ci5jYXJvdXNlbCAucHJldntsZWZ0Oi0xMDAlO30KLmNhcm91c2VsIC5uZXh0LmxlZnQsLmNhcm91c2VsIC5wcmV2LnJpZ2h0e2xlZnQ6MDt9Ci5jYXJvdXNlbCAuYWN0aXZlLmxlZnR7bGVmdDotMTAwJTt9Ci5jYXJvdXNlbCAuYWN0aXZlLnJpZ2h0e2xlZnQ6MTAwJTt9Ci5jYXJvdXNlbC1jb250cm9se3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0MCU7bGVmdDoxNXB4O3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLXRvcDotMjBweDtmb250LXNpemU6NjBweDtmb250LXdlaWdodDoxMDA7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojZmZmZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6IzIyMjIyMjtib3JkZXI6M3B4IHNvbGlkICNmZmZmZmY7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjIzcHg7LW1vei1ib3JkZXItcmFkaXVzOjIzcHg7Ym9yZGVyLXJhZGl1czoyM3B4O29wYWNpdHk6MC41O2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTt9Ci5jYXJvdXNlbC1jb250cm9sLnJpZ2h0e3JpZ2h0OjE1cHg7bGVmdDphdXRvO30KLmNhcm91c2VsLWNvbnRyb2w6aG92ZXJ7Y29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtvcGFjaXR5OjAuOTtmaWx0ZXI6YWxwaGEob3BhY2l0eT05MCk7fQouY2Fyb3VzZWwtY2FwdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtwYWRkaW5nOjEwcHggMTVweCA1cHg7YmFja2dyb3VuZDojMzMzMzMzO2JhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwLjc1KTt9Ci5jYXJvdXNlbC1jYXB0aW9uIGg0LC5jYXJvdXNlbC1jYXB0aW9uIHB7Y29sb3I6I2ZmZmZmZjt9Ci5oZXJvLXVuaXR7cGFkZGluZzo2MHB4O21hcmdpbi1ib3R0b206MzBweDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4O30KLmhlcm8tdW5pdCBoMXttYXJnaW4tYm90dG9tOjA7Zm9udC1zaXplOjYwcHg7bGluZS1oZWlnaHQ6MTtsZXR0ZXItc3BhY2luZzotMXB4O2NvbG9yOmluaGVyaXQ7fQouaGVyby11bml0IHB7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6MjAwO2xpbmUtaGVpZ2h0OjI3cHg7Y29sb3I6aW5oZXJpdDt9Ci5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O30KLnB1bGwtbGVmdHtmbG9hdDpsZWZ0O30KLmhpZGV7ZGlzcGxheTpub25lO30KLnNob3d7ZGlzcGxheTpibG9jazt9Ci5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW47fQo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/jquery.fileupload-ui.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFVJIFBsdWdpbiBDU1MgNi4zCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMCwgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgouZmlsZWlucHV0LWJ1dHRvbiB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgZmxvYXQ6IGxlZnQ7CiAgbWFyZ2luLXJpZ2h0OiA0cHg7Cn0KLmZpbGVpbnB1dC1idXR0b24gaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbWFyZ2luOiAwOwogIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAwIDAgMTAwcHggMjAwcHg7CiAgb3BhY2l0eTogMDsKICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMzAwcHgsIDApIHNjYWxlKDQpOwogIGRpcmVjdGlvbjogbHRyOwogIGN1cnNvcjogcG9pbnRlcjsKfQouZmlsZXVwbG9hZC1idXR0b25iYXIgLmJ0biwKLmZpbGV1cGxvYWQtYnV0dG9uYmFyIC50b2dnbGUgewogIG1hcmdpbi1ib3R0b206IDVweDsKfQouZmlsZXMgLnByb2dyZXNzIHsKICB3aWR0aDogMjAwcHg7Cn0KLnByb2dyZXNzLWFuaW1hdGVkIC5iYXIgewogIGJhY2tncm91bmQ6IHVybCguLi9pbWcvcHJvZ3Jlc3NiYXIuZ2lmKSAhaW1wb3J0YW50OwogIGZpbHRlcjogbm9uZTsKfQouZmlsZXVwbG9hZC1sb2FkaW5nIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTAlOwogIHdpZHRoOiAxMjhweDsKICBoZWlnaHQ6IDEyOHB4OwogIGJhY2tncm91bmQ6IHVybCguLi9pbWcvbG9hZGluZy5naWYpIGNlbnRlciBuby1yZXBlYXQ7CiAgZGlzcGxheTogbm9uZTsKfQouZmlsZXVwbG9hZC1wcm9jZXNzaW5nIC5maWxldXBsb2FkLWxvYWRpbmcgewogIGRpc3BsYXk6IGJsb2NrOwp9CgovKiBGaXggZm9yIElFIDY6ICovCipodG1sIC5maWxlaW5wdXQtYnV0dG9uIHsKICBsaW5lLWhlaWdodDogMjJweDsKICBtYXJnaW46IDFweCAtM3B4IDAgMDsKfQoKLyogRml4IGZvciBJRSA3OiAqLwoqK2h0bWwgLmZpbGVpbnB1dC1idXR0b24gewogIG1hcmdpbjogMXB4IDAgMCAwOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAuZmlsZXMgLmJ0biBzcGFuIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQogIC5maWxlcyAucHJldmlldyAqIHsKICAgIHdpZHRoOiA0MHB4OwogIH0KICAuZmlsZXMgLm5hbWUgKiB7CiAgICB3aWR0aDogODBweDsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICB9CiAgLmZpbGVzIC5wcm9ncmVzcyB7CiAgICB3aWR0aDogMjBweDsKICB9CiAgLmZpbGVzIC5kZWxldGUgewogICAgd2lkdGg6IDYwcHg7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgJ1VURi04JzsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBDU1MgRXhhbXBsZSAxLjAKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEyLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCmJvZHl7CiAgcGFkZGluZy10b3A6IDYwcHg7Cn0K]]></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[LyoqCiogQm9vdHN0cmFwLmpzIGJ5IEBmYXQgJiBAbWRvCiogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLgoqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC50eHQKKi8KIWZ1bmN0aW9uKGEpe2EoZnVuY3Rpb24oKXsidXNlIHN0cmljdCIsYS5zdXBwb3J0LnRyYW5zaXRpb249ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvb3RzdHJhcCIpLGI9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCIsbXNUcmFuc2l0aW9uOiJNU1RyYW5zaXRpb25FbmQiLHRyYW5zaXRpb246InRyYW5zaXRpb25lbmQifSxjO2ZvcihjIGluIGIpaWYoYS5zdHlsZVtjXSE9PXVuZGVmaW5lZClyZXR1cm4gYltjXX0oKTtyZXR1cm4gYSYme2VuZDphfX0oKX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPSdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxjPWZ1bmN0aW9uKGMpe2EoYykub24oImNsaWNrIixiLHRoaXMuY2xvc2UpfTtjLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbihiKXtmdW5jdGlvbiBmKCl7ZS50cmlnZ2VyKCJjbG9zZWQiKS5yZW1vdmUoKX12YXIgYz1hKHRoaXMpLGQ9Yy5hdHRyKCJkYXRhLXRhcmdldCIpLGU7ZHx8KGQ9Yy5hdHRyKCJocmVmIiksZD1kJiZkLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpLGU9YShkKSxiJiZiLnByZXZlbnREZWZhdWx0KCksZS5sZW5ndGh8fChlPWMuaGFzQ2xhc3MoImFsZXJ0Iik/YzpjLnBhcmVudCgpKSxlLnRyaWdnZXIoYj1hLkV2ZW50KCJjbG9zZSIpKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjtlLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZlLmhhc0NsYXNzKCJmYWRlIik/ZS5vbihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZik6ZigpfSxhLmZuLmFsZXJ0PWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJhbGVydCIpO2V8fGQuZGF0YSgiYWxlcnQiLGU9bmV3IGModGhpcykpLHR5cGVvZiBiPT0ic3RyaW5nIiYmZVtiXS5jYWxsKGQpfSl9LGEuZm4uYWxlcnQuQ29uc3RydWN0b3I9YyxhKGZ1bmN0aW9uKCl7YSgiYm9keSIpLm9uKCJjbGljay5hbGVydC5kYXRhLWFwaSIsYixjLnByb3RvdHlwZS5jbG9zZSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYS5mbi5idXR0b24uZGVmYXVsdHMsYyl9O2IucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGEpe3ZhciBiPSJkaXNhYmxlZCIsYz10aGlzLiRlbGVtZW50LGQ9Yy5kYXRhKCksZT1jLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIjthKz0iVGV4dCIsZC5yZXNldFRleHR8fGMuZGF0YSgicmVzZXRUZXh0IixjW2VdKCkpLGNbZV0oZFthXXx8dGhpcy5vcHRpb25zW2FdKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YT09ImxvYWRpbmdUZXh0Ij9jLmFkZENsYXNzKGIpLmF0dHIoYixiKTpjLnJlbW92ZUNsYXNzKGIpLnJlbW92ZUF0dHIoYil9LDApfSxiLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50LnBhcmVudCgnW2RhdGEtdG9nZ2xlPSJidXR0b25zLXJhZGlvIl0nKTthJiZhLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9LGEuZm4uYnV0dG9uPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJidXR0b24iKSxmPXR5cGVvZiBjPT0ib2JqZWN0IiYmYztlfHxkLmRhdGEoImJ1dHRvbiIsZT1uZXcgYih0aGlzLGYpKSxjPT0idG9nZ2xlIj9lLnRvZ2dsZSgpOmMmJmUuc2V0U3RhdGUoYyl9KX0sYS5mbi5idXR0b24uZGVmYXVsdHM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YixhKGZ1bmN0aW9uKCl7YSgiYm9keSIpLm9uKCJjbGljay5idXR0b24uZGF0YS1hcGkiLCJbZGF0YS10b2dnbGVePWJ1dHRvbl0iLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYi50YXJnZXQpO2MuaGFzQ2xhc3MoImJ0biIpfHwoYz1jLmNsb3Nlc3QoIi5idG4iKSksYy5idXR0b24oInRvZ2dsZSIpfSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLm9wdGlvbnMuc2xpZGUmJnRoaXMuc2xpZGUodGhpcy5vcHRpb25zLnNsaWRlKSx0aGlzLm9wdGlvbnMucGF1c2U9PSJob3ZlciImJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2IucHJvdG90eXBlPXtjeWNsZTpmdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwmJiF0aGlzLnBhdXNlZCYmKHRoaXMuaW50ZXJ2YWw9c2V0SW50ZXJ2YWwoYS5wcm94eSh0aGlzLm5leHQsdGhpcyksdGhpcy5vcHRpb25zLmludGVydmFsKSksdGhpc30sdG86ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy4kZWxlbWVudC5maW5kKCIuYWN0aXZlIiksZD1jLnBhcmVudCgpLmNoaWxkcmVuKCksZT1kLmluZGV4KGMpLGY9dGhpcztpZihiPmQubGVuZ3RoLTF8fGI8MClyZXR1cm47cmV0dXJuIHRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZCIsZnVuY3Rpb24oKXtmLnRvKGIpfSk6ZT09Yj90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGI+ZT8ibmV4dCI6InByZXYiLGEoZFtiXSkpfSxwYXVzZTpmdW5jdGlvbihhKXtyZXR1cm4gYXx8KHRoaXMucGF1c2VkPSEwKSxjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5zbGlkaW5nKXJldHVybjtyZXR1cm4gdGhpcy5zbGlkZSgibmV4dCIpfSxwcmV2OmZ1bmN0aW9uKCl7aWYodGhpcy5zbGlkaW5nKXJldHVybjtyZXR1cm4gdGhpcy5zbGlkZSgicHJldiIpfSxzbGlkZTpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuJGVsZW1lbnQuZmluZCgiLmFjdGl2ZSIpLGU9Y3x8ZFtiXSgpLGY9dGhpcy5pbnRlcnZhbCxnPWI9PSJuZXh0Ij8ibGVmdCI6InJpZ2h0IixoPWI9PSJuZXh0Ij8iZmlyc3QiOiJsYXN0IixpPXRoaXMsaj1hLkV2ZW50KCJzbGlkZSIpO3RoaXMuc2xpZGluZz0hMCxmJiZ0aGlzLnBhdXNlKCksZT1lLmxlbmd0aD9lOnRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0iKVtoXSgpO2lmKGUuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybjtpZihhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygic2xpZGUiKSl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGopO2lmKGouaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UuYWRkQ2xhc3MoYiksZVswXS5vZmZzZXRXaWR0aCxkLmFkZENsYXNzKGcpLGUuYWRkQ2xhc3MoZyksdGhpcy4kZWxlbWVudC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7ZS5yZW1vdmVDbGFzcyhbYixnXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxkLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixnXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKCJzbGlkIil9LDApfSl9ZWxzZXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoaik7aWYoai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47ZC5yZW1vdmVDbGFzcygiYWN0aXZlIiksZS5hZGRDbGFzcygiYWN0aXZlIiksdGhpcy5zbGlkaW5nPSExLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigic2xpZCIpfXJldHVybiBmJiZ0aGlzLmN5Y2xlKCksdGhpc319LGEuZm4uY2Fyb3VzZWw9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxhLmZuLmNhcm91c2VsLmRlZmF1bHRzLHR5cGVvZiBjPT0ib2JqZWN0IiYmYyk7ZXx8ZC5kYXRhKCJjYXJvdXNlbCIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09Im51bWJlciI/ZS50byhjKTp0eXBlb2YgYz09InN0cmluZyJ8fChjPWYuc2xpZGUpP2VbY10oKTpmLmludGVydmFsJiZlLmN5Y2xlKCl9KX0sYS5mbi5jYXJvdXNlbC5kZWZhdWx0cz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciJ9LGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YixhKGZ1bmN0aW9uKCl7YSgiYm9keSIpLm9uKCJjbGljay5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSIsZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKSxkLGU9YShjLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWMuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxmPSFlLmRhdGEoIm1vZGFsIikmJmEuZXh0ZW5kKHt9LGUuZGF0YSgpLGMuZGF0YSgpKTtlLmNhcm91c2VsKGYpLGIucHJldmVudERlZmF1bHQoKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGEuZm4uY29sbGFwc2UuZGVmYXVsdHMsYyksdGhpcy5vcHRpb25zLnBhcmVudCYmKHRoaXMuJHBhcmVudD1hKHRoaXMub3B0aW9ucy5wYXJlbnQpKSx0aGlzLm9wdGlvbnMudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfTtiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YixkaW1lbnNpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJ3aWR0aCIpO3JldHVybiBhPyJ3aWR0aCI6ImhlaWdodCJ9LHNob3c6ZnVuY3Rpb24oKXt2YXIgYixjLGQsZTtpZih0aGlzLnRyYW5zaXRpb25pbmcpcmV0dXJuO2I9dGhpcy5kaW1lbnNpb24oKSxjPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixiXS5qb2luKCItIikpLGQ9dGhpcy4kcGFyZW50JiZ0aGlzLiRwYXJlbnQuZmluZCgiPiAuYWNjb3JkaW9uLWdyb3VwID4gLmluIik7aWYoZCYmZC5sZW5ndGgpe2U9ZC5kYXRhKCJjb2xsYXBzZSIpO2lmKGUmJmUudHJhbnNpdGlvbmluZylyZXR1cm47ZC5jb2xsYXBzZSgiaGlkZSIpLGV8fGQuZGF0YSgiY29sbGFwc2UiLG51bGwpfXRoaXMuJGVsZW1lbnRbYl0oMCksdGhpcy50cmFuc2l0aW9uKCJhZGRDbGFzcyIsYS5FdmVudCgic2hvdyIpLCJzaG93biIpLHRoaXMuJGVsZW1lbnRbYl0odGhpcy4kZWxlbWVudFswXVtjXSl9LGhpZGU6ZnVuY3Rpb24oKXt2YXIgYjtpZih0aGlzLnRyYW5zaXRpb25pbmcpcmV0dXJuO2I9dGhpcy5kaW1lbnNpb24oKSx0aGlzLnJlc2V0KHRoaXMuJGVsZW1lbnRbYl0oKSksdGhpcy50cmFuc2l0aW9uKCJyZW1vdmVDbGFzcyIsYS5FdmVudCgiaGlkZSIpLCJoaWRkZW4iKSx0aGlzLiRlbGVtZW50W2JdKDApfSxyZXNldDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmRpbWVuc2lvbigpO3JldHVybiB0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzZSIpW2JdKGF8fCJhdXRvIilbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kZWxlbWVudFthIT09bnVsbD8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJjb2xsYXBzZSIpLHRoaXN9LHRyYW5zaXRpb246ZnVuY3Rpb24oYixjLGQpe3ZhciBlPXRoaXMsZj1mdW5jdGlvbigpe2MudHlwZT09InNob3ciJiZlLnJlc2V0KCksZS50cmFuc2l0aW9uaW5nPTAsZS4kZWxlbWVudC50cmlnZ2VyKGQpfTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoYyk7aWYoYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy50cmFuc2l0aW9uaW5nPTEsdGhpcy4kZWxlbWVudFtiXSgiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiY29sbGFwc2UiKT90aGlzLiRlbGVtZW50Lm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZik6ZigpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX19LGEuZm4uY29sbGFwc2U9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImNvbGxhcHNlIiksZj10eXBlb2YgYz09Im9iamVjdCImJmM7ZXx8ZC5kYXRhKCJjb2xsYXBzZSIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLmNvbGxhcHNlLmRlZmF1bHRzPXt0b2dnbGU6ITB9LGEuZm4uY29sbGFwc2UuQ29uc3RydWN0b3I9YixhKGZ1bmN0aW9uKCl7YSgiYm9keSIpLm9uKCJjbGljay5jb2xsYXBzZS5kYXRhLWFwaSIsIltkYXRhLXRvZ2dsZT1jb2xsYXBzZV0iLGZ1bmN0aW9uKGIpe3ZhciBjPWEodGhpcyksZCxlPWMuYXR0cigiZGF0YS10YXJnZXQiKXx8Yi5wcmV2ZW50RGVmYXVsdCgpfHwoZD1jLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSxmPWEoZSkuZGF0YSgiY29sbGFwc2UiKT8idG9nZ2xlIjpjLmRhdGEoKTthKGUpLmNvbGxhcHNlKGYpfSl9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGQoKXthKGIpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJvcGVuIil9InVzZSBzdHJpY3QiO3ZhciBiPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGM9ZnVuY3Rpb24oYil7dmFyIGM9YShiKS5vbigiY2xpY2suZHJvcGRvd24uZGF0YS1hcGkiLHRoaXMudG9nZ2xlKTthKCJodG1sIikub24oImNsaWNrLmRyb3Bkb3duLmRhdGEtYXBpIixmdW5jdGlvbigpe2MucGFyZW50KCkucmVtb3ZlQ2xhc3MoIm9wZW4iKX0pfTtjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Yyx0b2dnbGU6ZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKSxlLGYsZztpZihjLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXJldHVybjtyZXR1cm4gZj1jLmF0dHIoImRhdGEtdGFyZ2V0IiksZnx8KGY9Yy5hdHRyKCJocmVmIiksZj1mJiZmLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpLGU9YShmKSxlLmxlbmd0aHx8KGU9Yy5wYXJlbnQoKSksZz1lLmhhc0NsYXNzKCJvcGVuIiksZCgpLGd8fGUudG9nZ2xlQ2xhc3MoIm9wZW4iKSwhMX19LGEuZm4uZHJvcGRvd249ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImRyb3Bkb3duIik7ZXx8ZC5kYXRhKCJkcm9wZG93biIsZT1uZXcgYyh0aGlzKSksdHlwZW9mIGI9PSJzdHJpbmciJiZlW2JdLmNhbGwoZCl9KX0sYS5mbi5kcm9wZG93bi5Db25zdHJ1Y3Rvcj1jLGEoZnVuY3Rpb24oKXthKCJodG1sIikub24oImNsaWNrLmRyb3Bkb3duLmRhdGEtYXBpIixkKSxhKCJib2R5Iikub24oImNsaWNrLmRyb3Bkb3duIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suZHJvcGRvd24uZGF0YS1hcGkiLGIsYy5wcm90b3R5cGUudG9nZ2xlKX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYygpe3ZhciBiPXRoaXMsYz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi4kZWxlbWVudC5vZmYoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSxkLmNhbGwoYil9LDUwMCk7dGhpcy4kZWxlbWVudC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGMpLGQuY2FsbChiKX0pfWZ1bmN0aW9uIGQoYSl7dGhpcy4kZWxlbWVudC5oaWRlKCkudHJpZ2dlcigiaGlkZGVuIiksZS5jYWxsKHRoaXMpfWZ1bmN0aW9uIGUoYil7dmFyIGM9dGhpcyxkPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkO3RoaXMuJGJhY2tkcm9wPWEoJzxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wICcrZCsnIiAvPicpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLHRoaXMub3B0aW9ucy5iYWNrZHJvcCE9InN0YXRpYyImJnRoaXMuJGJhY2tkcm9wLmNsaWNrKGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSxlJiZ0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCx0aGlzLiRiYWNrZHJvcC5hZGRDbGFzcygiaW4iKSxlP3RoaXMuJGJhY2tkcm9wLm9uZShhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsYik6YigpfWVsc2UhdGhpcy5pc1Nob3duJiZ0aGlzLiRiYWNrZHJvcD8odGhpcy4kYmFja2Ryb3AucmVtb3ZlQ2xhc3MoImluIiksYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGEucHJveHkoZix0aGlzKSk6Zi5jYWxsKHRoaXMpKTpiJiZiKCl9ZnVuY3Rpb24gZigpe3RoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9ZnVuY3Rpb24gZygpe3ZhciBiPXRoaXM7dGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMua2V5Ym9hcmQ/YShkb2N1bWVudCkub24oImtleXVwLmRpc21pc3MubW9kYWwiLGZ1bmN0aW9uKGEpe2Eud2hpY2g9PTI3JiZiLmhpZGUoKX0pOnRoaXMuaXNTaG93bnx8YShkb2N1bWVudCkub2ZmKCJrZXl1cC5kaXNtaXNzLm1vZGFsIil9InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGIsYyl7dGhpcy5vcHRpb25zPWMsdGhpcy4kZWxlbWVudD1hKGIpLmRlbGVnYXRlKCdbZGF0YS1kaXNtaXNzPSJtb2RhbCJdJywiY2xpY2suZGlzbWlzcy5tb2RhbCIsYS5wcm94eSh0aGlzLmhpZGUsdGhpcykpfTtiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Yix0b2dnbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0aGlzLmlzU2hvd24/ImhpZGUiOiJzaG93Il0oKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz1hLkV2ZW50KCJzaG93Iik7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGMpO2lmKHRoaXMuaXNTaG93bnx8Yy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47YSgiYm9keSIpLmFkZENsYXNzKCJtb2RhbC1vcGVuIiksdGhpcy5pc1Nob3duPSEwLGcuY2FsbCh0aGlzKSxlLmNhbGwodGhpcyxmdW5jdGlvbigpe3ZhciBjPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZiLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7Yi4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGIuJGVsZW1lbnQuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksYi4kZWxlbWVudC5zaG93KCksYyYmYi4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxiLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGM/Yi4kZWxlbWVudC5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7Yi4kZWxlbWVudC50cmlnZ2VyKCJzaG93biIpfSk6Yi4kZWxlbWVudC50cmlnZ2VyKCJzaG93biIpfSl9LGhpZGU6ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpO3ZhciBlPXRoaXM7Yj1hLkV2ZW50KCJoaWRlIiksdGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO2lmKCF0aGlzLmlzU2hvd258fGIuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO3RoaXMuaXNTaG93bj0hMSxhKCJib2R5IikucmVtb3ZlQ2xhc3MoIm1vZGFsLW9wZW4iKSxnLmNhbGwodGhpcyksdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP2MuY2FsbCh0aGlzKTpkLmNhbGwodGhpcyl9fSxhLmZuLm1vZGFsPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJtb2RhbCIpLGY9YS5leHRlbmQoe30sYS5mbi5tb2RhbC5kZWZhdWx0cyxkLmRhdGEoKSx0eXBlb2YgYz09Im9iamVjdCImJmMpO2V8fGQuZGF0YSgibW9kYWwiLGU9bmV3IGIodGhpcyxmKSksdHlwZW9mIGM9PSJzdHJpbmciP2VbY10oKTpmLnNob3cmJmUuc2hvdygpfSl9LGEuZm4ubW9kYWwuZGVmYXVsdHM9e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLHNob3c6ITB9LGEuZm4ubW9kYWwuQ29uc3RydWN0b3I9YixhKGZ1bmN0aW9uKCl7YSgiYm9keSIpLm9uKCJjbGljay5tb2RhbC5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0ibW9kYWwiXScsZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKSxkLGU9YShjLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWMuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxmPWUuZGF0YSgibW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7fSxlLmRhdGEoKSxjLmRhdGEoKSk7Yi5wcmV2ZW50RGVmYXVsdCgpLGUubW9kYWwoZil9KX0pfSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Yixpbml0OmZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmO3RoaXMudHlwZT1iLHRoaXMuJGVsZW1lbnQ9YShjKSx0aGlzLm9wdGlvbnM9dGhpcy5nZXRPcHRpb25zKGQpLHRoaXMuZW5hYmxlZD0hMCx0aGlzLm9wdGlvbnMudHJpZ2dlciE9Im1hbnVhbCImJihlPXRoaXMub3B0aW9ucy50cmlnZ2VyPT0iaG92ZXIiPyJtb3VzZWVudGVyIjoiZm9jdXMiLGY9dGhpcy5vcHRpb25zLnRyaWdnZXI9PSJob3ZlciI/Im1vdXNlbGVhdmUiOiJibHVyIix0aGlzLiRlbGVtZW50Lm9uKGUsdGhpcy5vcHRpb25zLnNlbGVjdG9yLGEucHJveHkodGhpcy5lbnRlcix0aGlzKSksdGhpcy4kZWxlbWVudC5vbihmLHRoaXMub3B0aW9ucy5zZWxlY3RvcixhLnByb3h5KHRoaXMubGVhdmUsdGhpcykpKSx0aGlzLm9wdGlvbnMuc2VsZWN0b3I/dGhpcy5fb3B0aW9ucz1hLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMse3RyaWdnZXI6Im1hbnVhbCIsc2VsZWN0b3I6IiJ9KTp0aGlzLmZpeFRpdGxlKCl9LGdldE9wdGlvbnM6ZnVuY3Rpb24oYil7cmV0dXJuIGI9YS5leHRlbmQoe30sYS5mblt0aGlzLnR5cGVdLmRlZmF1bHRzLGIsdGhpcy4kZWxlbWVudC5kYXRhKCkpLGIuZGVsYXkmJnR5cGVvZiBiLmRlbGF5PT0ibnVtYmVyIiYmKGIuZGVsYXk9e3Nob3c6Yi5kZWxheSxoaWRlOmIuZGVsYXl9KSxifSxlbnRlcjpmdW5jdGlvbihiKXt2YXIgYz1hKGIuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSk7aWYoIWMub3B0aW9ucy5kZWxheXx8IWMub3B0aW9ucy5kZWxheS5zaG93KXJldHVybiBjLnNob3coKTtjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9ImluIix0aGlzLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2MuaG92ZXJTdGF0ZT09ImluIiYmYy5zaG93KCl9LGMub3B0aW9ucy5kZWxheS5zaG93KX0sbGVhdmU6ZnVuY3Rpb24oYil7dmFyIGM9YShiLmN1cnJlbnRUYXJnZXQpW3RoaXMudHlwZV0odGhpcy5fb3B0aW9ucykuZGF0YSh0aGlzLnR5cGUpO3RoaXMudGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7aWYoIWMub3B0aW9ucy5kZWxheXx8IWMub3B0aW9ucy5kZWxheS5oaWRlKXJldHVybiBjLmhpZGUoKTtjLmhvdmVyU3RhdGU9Im91dCIsdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmhvdmVyU3RhdGU9PSJvdXQiJiZjLmhpZGUoKX0sYy5vcHRpb25zLmRlbGF5LmhpZGUpfSxzaG93OmZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7YT10aGlzLnRpcCgpLHRoaXMuc2V0Q29udGVudCgpLHRoaXMub3B0aW9ucy5hbmltYXRpb24mJmEuYWRkQ2xhc3MoImZhZGUiKSxmPXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50PT0iZnVuY3Rpb24iP3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGFbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxiPS9pbi8udGVzdChmKSxhLnJlbW92ZSgpLmNzcyh7dG9wOjAsbGVmdDowLGRpc3BsYXk6ImJsb2NrIn0pLmFwcGVuZFRvKGI/dGhpcy4kZWxlbWVudDpkb2N1bWVudC5ib2R5KSxjPXRoaXMuZ2V0UG9zaXRpb24oYiksZD1hWzBdLm9mZnNldFdpZHRoLGU9YVswXS5vZmZzZXRIZWlnaHQ7c3dpdGNoKGI/Zi5zcGxpdCgiICIpWzFdOmYpe2Nhc2UiYm90dG9tIjpnPXt0b3A6Yy50b3ArYy5oZWlnaHQsbGVmdDpjLmxlZnQrYy53aWR0aC8yLWQvMn07YnJlYWs7Y2FzZSJ0b3AiOmc9e3RvcDpjLnRvcC1lLGxlZnQ6Yy5sZWZ0K2Mud2lkdGgvMi1kLzJ9O2JyZWFrO2Nhc2UibGVmdCI6Zz17dG9wOmMudG9wK2MuaGVpZ2h0LzItZS8yLGxlZnQ6Yy5sZWZ0LWR9O2JyZWFrO2Nhc2UicmlnaHQiOmc9e3RvcDpjLnRvcCtjLmhlaWdodC8yLWUvMixsZWZ0OmMubGVmdCtjLndpZHRofX1hLmNzcyhnKS5hZGRDbGFzcyhmKS5hZGRDbGFzcygiaW4iKX19LGlzSFRNTDpmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGEhPSJzdHJpbmcifHxhLmNoYXJBdCgwKT09PSI8IiYmYS5jaGFyQXQoYS5sZW5ndGgtMSk9PT0iPiImJmEubGVuZ3RoPj0zfHwvXig/OltePF0qPFtcd1xXXSs+W14+XSokKS8uZXhlYyhhKX0sc2V0Q29udGVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMuaXNIVE1MKGIpPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGhpZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7dmFyIGI9c2V0VGltZW91dChmdW5jdGlvbigpe2Mub2ZmKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCkucmVtb3ZlKCl9LDUwMCk7Yy5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGIpLGMucmVtb3ZlKCl9KX12YXIgYj10aGlzLGM9dGhpcy50aXAoKTtjLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiR0aXAuaGFzQ2xhc3MoImZhZGUiKT9kKCk6Yy5yZW1vdmUoKX0sZml4VGl0bGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50OyhhLmF0dHIoInRpdGxlIil8fHR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSE9InN0cmluZyIpJiZhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiLGEuYXR0cigidGl0bGUiKXx8IiIpLnJlbW92ZUF0dHIoInRpdGxlIil9LGhhc0NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbihiKXtyZXR1cm4gYS5leHRlbmQoe30sYj97dG9wOjAsbGVmdDowfTp0aGlzLiRlbGVtZW50Lm9mZnNldCgpLHt3aWR0aDp0aGlzLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoLGhlaWdodDp0aGlzLiRlbGVtZW50WzBdLm9mZnNldEhlaWdodH0pfSxnZXRUaXRsZTpmdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kZWxlbWVudCxjPXRoaXMub3B0aW9ucztyZXR1cm4gYT1iLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKXx8KHR5cGVvZiBjLnRpdGxlPT0iZnVuY3Rpb24iP2MudGl0bGUuY2FsbChiWzBdKTpjLnRpdGxlKSxhfSx0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGlwPXRoaXMuJHRpcHx8YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnRbMF0ucGFyZW50Tm9kZXx8KHRoaXMuaGlkZSgpLHRoaXMuJGVsZW1lbnQ9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCl9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMH0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMX0sdG9nZ2xlRW5hYmxlZDpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hdGhpcy5lbmFibGVkfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzW3RoaXMudGlwKCkuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX19LGEuZm4udG9vbHRpcD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgidG9vbHRpcCIpLGY9dHlwZW9mIGM9PSJvYmplY3QiJiZjO2V8fGQuZGF0YSgidG9vbHRpcCIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3I9YixhLmZuLnRvb2x0aXAuZGVmYXVsdHM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIiLHRpdGxlOiIiLGRlbGF5OjB9fSh3aW5kb3cualF1ZXJ5KSwhZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBiPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KCJwb3BvdmVyIixhLGIpfTtiLnByb3RvdHlwZT1hLmV4dGVuZCh7fSxhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IucHJvdG90eXBlLHtjb25zdHJ1Y3RvcjpiLHNldENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRpcCgpLGI9dGhpcy5nZXRUaXRsZSgpLGM9dGhpcy5nZXRDb250ZW50KCk7YS5maW5kKCIucG9wb3Zlci10aXRsZSIpW3RoaXMuaXNIVE1MKGIpPyJodG1sIjoidGV4dCJdKGIpLGEuZmluZCgiLnBvcG92ZXItY29udGVudCA+ICoiKVt0aGlzLmlzSFRNTChjKT8iaHRtbCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpfSxoYXNDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5nZXRDb250ZW50KCl9LGdldENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuJGVsZW1lbnQsYz10aGlzLm9wdGlvbnM7cmV0dXJuIGE9Yi5hdHRyKCJkYXRhLWNvbnRlbnQiKXx8KHR5cGVvZiBjLmNvbnRlbnQ9PSJmdW5jdGlvbiI/Yy5jb250ZW50LmNhbGwoYlswXSk6Yy5jb250ZW50KSxhfSx0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGlwfHwodGhpcy4kdGlwPWEodGhpcy5vcHRpb25zLnRlbXBsYXRlKSksdGhpcy4kdGlwfX0pLGEuZm4ucG9wb3Zlcj1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgicG9wb3ZlciIpLGY9dHlwZW9mIGM9PSJvYmplY3QiJiZjO2V8fGQuZGF0YSgicG9wb3ZlciIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLnBvcG92ZXIuQ29uc3RydWN0b3I9YixhLmZuLnBvcG92ZXIuZGVmYXVsdHM9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLmRlZmF1bHRzLHtwbGFjZW1lbnQ6InJpZ2h0Iixjb250ZW50OiIiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJwb3BvdmVyIj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+PGRpdiBjbGFzcz0icG9wb3Zlci1pbm5lciI+PGgzIGNsYXNzPSJwb3BvdmVyLXRpdGxlIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PHA+PC9wPjwvZGl2PjwvZGl2PjwvZGl2Pid9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYixjKXt2YXIgZD1hLnByb3h5KHRoaXMucHJvY2Vzcyx0aGlzKSxlPWEoYikuaXMoImJvZHkiKT9hKHdpbmRvdyk6YShiKSxmO3RoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxhLmZuLnNjcm9sbHNweS5kZWZhdWx0cyxjKSx0aGlzLiRzY3JvbGxFbGVtZW50PWUub24oInNjcm9sbC5zY3JvbGwuZGF0YS1hcGkiLGQpLHRoaXMuc2VsZWN0b3I9KHRoaXMub3B0aW9ucy50YXJnZXR8fChmPWEoYikuYXR0cigiaHJlZiIpKSYmZi5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpfHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy4kYm9keT1hKCJib2R5IiksdGhpcy5yZWZyZXNoKCksdGhpcy5wcm9jZXNzKCl9InVzZSBzdHJpY3QiLGIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpiLHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM7dGhpcy5vZmZzZXRzPWEoW10pLHRoaXMudGFyZ2V0cz1hKFtdKSxjPXRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGM9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZD0vXiNcdy8udGVzdChjKSYmYShjKTtyZXR1cm4gZCYmYy5sZW5ndGgmJltbZC5wb3NpdGlvbigpLnRvcCxjXV18fG51bGx9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMF0tYlswXX0pLmVhY2goZnVuY3Rpb24oKXtiLm9mZnNldHMucHVzaCh0aGlzWzBdKSxiLnRhcmdldHMucHVzaCh0aGlzWzFdKX0pfSxwcm9jZXNzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGI9dGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGM9Yi10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGQ9dGhpcy5vZmZzZXRzLGU9dGhpcy50YXJnZXRzLGY9dGhpcy5hY3RpdmVUYXJnZXQsZztpZihhPj1jKXJldHVybiBmIT0oZz1lLmxhc3QoKVswXSkmJnRoaXMuYWN0aXZhdGUoZyk7Zm9yKGc9ZC5sZW5ndGg7Zy0tOylmIT1lW2ddJiZhPj1kW2ddJiYoIWRbZysxXXx8YTw9ZFtnKzFdKSYmdGhpcy5hY3RpdmF0ZShlW2ddKX0sYWN0aXZhdGU6ZnVuY3Rpb24oYil7dmFyIGMsZDt0aGlzLmFjdGl2ZVRhcmdldD1iLGEodGhpcy5zZWxlY3RvcikucGFyZW50KCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGQ9dGhpcy5zZWxlY3RvcisnW2RhdGEtdGFyZ2V0PSInK2IrJyJdLCcrdGhpcy5zZWxlY3RvcisnW2hyZWY9IicrYisnIl0nLGM9YShkKS5wYXJlbnQoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpLGMucGFyZW50KCIuZHJvcGRvd24tbWVudSIpJiYoYz1jLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSxjLnRyaWdnZXIoImFjdGl2YXRlIil9fSxhLmZuLnNjcm9sbHNweT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgic2Nyb2xsc3B5IiksZj10eXBlb2YgYz09Im9iamVjdCImJmM7ZXx8ZC5kYXRhKCJzY3JvbGxzcHkiLGU9bmV3IGIodGhpcyxmKSksdHlwZW9mIGM9PSJzdHJpbmciJiZlW2NdKCl9KX0sYS5mbi5zY3JvbGxzcHkuQ29uc3RydWN0b3I9YixhLmZuLnNjcm9sbHNweS5kZWZhdWx0cz17b2Zmc2V0OjEwfSxhKGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2Iuc2Nyb2xsc3B5KGIuZGF0YSgpKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYil7dGhpcy5lbGVtZW50PWEoYil9O2IucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpiLHNob3c6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmVsZW1lbnQsYz1iLmNsb3Nlc3QoInVsOm5vdCguZHJvcGRvd24tbWVudSkiKSxkPWIuYXR0cigiZGF0YS10YXJnZXQiKSxlLGYsZztkfHwoZD1iLmF0dHIoImhyZWYiKSxkPWQmJmQucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7aWYoYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybjtlPWMuZmluZCgiLmFjdGl2ZSBhIikubGFzdCgpWzBdLGc9YS5FdmVudCgic2hvdyIse3JlbGF0ZWRUYXJnZXQ6ZX0pLGIudHJpZ2dlcihnKTtpZihnLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjtmPWEoZCksdGhpcy5hY3RpdmF0ZShiLnBhcmVudCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGYsZi5wYXJlbnQoKSxmdW5jdGlvbigpe2IudHJpZ2dlcih7dHlwZToic2hvd24iLHJlbGF0ZWRUYXJnZXQ6ZX0pfSl9LGFjdGl2YXRlOmZ1bmN0aW9uKGIsYyxkKXtmdW5jdGlvbiBnKCl7ZS5yZW1vdmVDbGFzcygiYWN0aXZlIikuZmluZCgiPiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksYi5hZGRDbGFzcygiYWN0aXZlIiksZj8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikmJmIuY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIiksZCYmZCgpfXZhciBlPWMuZmluZCgiPiAuYWN0aXZlIiksZj1kJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmZS5oYXNDbGFzcygiZmFkZSIpO2Y/ZS5vbmUoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGcpOmcoKSxlLnJlbW92ZUNsYXNzKCJpbiIpfX0sYS5mbi50YWI9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoInRhYiIpO2V8fGQuZGF0YSgidGFiIixlPW5ldyBiKHRoaXMpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLnRhYi5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImNsaWNrLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0idGFiIl0sIFtkYXRhLXRvZ2dsZT0icGlsbCJdJyxmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCksYSh0aGlzKS50YWIoInNob3ciKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7dmFyIGI9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGEuZm4udHlwZWFoZWFkLmRlZmF1bHRzLGMpLHRoaXMubWF0Y2hlcj10aGlzLm9wdGlvbnMubWF0Y2hlcnx8dGhpcy5tYXRjaGVyLHRoaXMuc29ydGVyPXRoaXMub3B0aW9ucy5zb3J0ZXJ8fHRoaXMuc29ydGVyLHRoaXMuaGlnaGxpZ2h0ZXI9dGhpcy5vcHRpb25zLmhpZ2hsaWdodGVyfHx0aGlzLmhpZ2hsaWdodGVyLHRoaXMudXBkYXRlcj10aGlzLm9wdGlvbnMudXBkYXRlcnx8dGhpcy51cGRhdGVyLHRoaXMuJG1lbnU9YSh0aGlzLm9wdGlvbnMubWVudSkuYXBwZW5kVG8oImJvZHkiKSx0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc2hvd249ITEsdGhpcy5saXN0ZW4oKX07Yi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmIsc2VsZWN0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kbWVudS5maW5kKCIuYWN0aXZlIikuYXR0cigiZGF0YS12YWx1ZSIpO3JldHVybiB0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnVwZGF0ZXIoYSkpLmNoYW5nZSgpLHRoaXMuaGlkZSgpfSx1cGRhdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzaG93OmZ1bmN0aW9uKCl7dmFyIGI9YS5leHRlbmQoe30sdGhpcy4kZWxlbWVudC5vZmZzZXQoKSx7aGVpZ2h0OnRoaXMuJGVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0fSk7cmV0dXJuIHRoaXMuJG1lbnUuY3NzKHt0b3A6Yi50b3ArYi5oZWlnaHQsbGVmdDpiLmxlZnR9KSx0aGlzLiRtZW51LnNob3coKSx0aGlzLnNob3duPSEwLHRoaXN9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbWVudS5oaWRlKCksdGhpcy5zaG93bj0hMSx0aGlzfSxsb29rdXA6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcyxkLGU7cmV0dXJuIHRoaXMucXVlcnk9dGhpcy4kZWxlbWVudC52YWwoKSx0aGlzLnF1ZXJ5PyhkPWEuZ3JlcCh0aGlzLnNvdXJjZSxmdW5jdGlvbihhKXtyZXR1cm4gYy5tYXRjaGVyKGEpfSksZD10aGlzLnNvcnRlcihkKSxkLmxlbmd0aD90aGlzLnJlbmRlcihkLnNsaWNlKDAsdGhpcy5vcHRpb25zLml0ZW1zKSkuc2hvdygpOnRoaXMuc2hvd24/dGhpcy5oaWRlKCk6dGhpcyk6dGhpcy5zaG93bj90aGlzLmhpZGUoKTp0aGlzfSxtYXRjaGVyOmZ1bmN0aW9uKGEpe3JldHVybn5hLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNlKCkpfSxzb3J0ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPVtdLGU7d2hpbGUoZT1hLnNoaWZ0KCkpZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5xdWVyeS50b0xvd2VyQ2FzZSgpKT9+ZS5pbmRleE9mKHRoaXMucXVlcnkpP2MucHVzaChlKTpkLnB1c2goZSk6Yi5wdXNoKGUpO3JldHVybiBiLmNvbmNhdChjLGQpfSxoaWdobGlnaHRlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnF1ZXJ5LnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csIlxcJCYiKTtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIigiK2IrIikiLCJpZyIpLGZ1bmN0aW9uKGEsYil7cmV0dXJuIjxzdHJvbmc+IitiKyI8L3N0cm9uZz4ifSl9LHJlbmRlcjpmdW5jdGlvbihiKXt2YXIgYz10aGlzO3JldHVybiBiPWEoYikubWFwKGZ1bmN0aW9uKGIsZCl7cmV0dXJuIGI9YShjLm9wdGlvbnMuaXRlbSkuYXR0cigiZGF0YS12YWx1ZSIsZCksYi5maW5kKCJhIikuaHRtbChjLmhpZ2hsaWdodGVyKGQpKSxiWzBdfSksYi5maXJzdCgpLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLiRtZW51Lmh0bWwoYiksdGhpc30sbmV4dDpmdW5jdGlvbihiKXt2YXIgYz10aGlzLiRtZW51LmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksZD1jLm5leHQoKTtkLmxlbmd0aHx8KGQ9YSh0aGlzLiRtZW51LmZpbmQoImxpIilbMF0pKSxkLmFkZENsYXNzKCJhY3RpdmUiKX0scHJldjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLiRtZW51LmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksYz1iLnByZXYoKTtjLmxlbmd0aHx8KGM9dGhpcy4kbWVudS5maW5kKCJsaSIpLmxhc3QoKSksYy5hZGRDbGFzcygiYWN0aXZlIil9LGxpc3RlbjpmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQub24oImJsdXIiLGEucHJveHkodGhpcy5ibHVyLHRoaXMpKS5vbigia2V5cHJlc3MiLGEucHJveHkodGhpcy5rZXlwcmVzcyx0aGlzKSkub24oImtleXVwIixhLnByb3h5KHRoaXMua2V5dXAsdGhpcykpLChhLmJyb3dzZXIud2Via2l0fHxhLmJyb3dzZXIubXNpZSkmJnRoaXMuJGVsZW1lbnQub24oImtleWRvd24iLGEucHJveHkodGhpcy5rZXlwcmVzcyx0aGlzKSksdGhpcy4kbWVudS5vbigiY2xpY2siLGEucHJveHkodGhpcy5jbGljayx0aGlzKSkub24oIm1vdXNlZW50ZXIiLCJsaSIsYS5wcm94eSh0aGlzLm1vdXNlZW50ZXIsdGhpcykpfSxrZXl1cDpmdW5jdGlvbihhKXtzd2l0Y2goYS5rZXlDb2RlKXtjYXNlIDQwOmNhc2UgMzg6YnJlYWs7Y2FzZSA5OmNhc2UgMTM6aWYoIXRoaXMuc2hvd24pcmV0dXJuO3RoaXMuc2VsZWN0KCk7YnJlYWs7Y2FzZSAyNzppZighdGhpcy5zaG93bilyZXR1cm47dGhpcy5oaWRlKCk7YnJlYWs7ZGVmYXVsdDp0aGlzLmxvb2t1cCgpfWEuc3RvcFByb3BhZ2F0aW9uKCksYS5wcmV2ZW50RGVmYXVsdCgpfSxrZXlwcmVzczpmdW5jdGlvbihhKXtpZighdGhpcy5zaG93bilyZXR1cm47c3dpdGNoKGEua2V5Q29kZSl7Y2FzZSA5OmNhc2UgMTM6Y2FzZSAyNzphLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzODppZihhLnR5cGUhPSJrZXlkb3duIilicmVhazthLnByZXZlbnREZWZhdWx0KCksdGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSA0MDppZihhLnR5cGUhPSJrZXlkb3duIilicmVhazthLnByZXZlbnREZWZhdWx0KCksdGhpcy5uZXh0KCl9YS5zdG9wUHJvcGFnYXRpb24oKX0sYmx1cjpmdW5jdGlvbihhKXt2YXIgYj10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmhpZGUoKX0sMTUwKX0sY2xpY2s6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxhLnByZXZlbnREZWZhdWx0KCksdGhpcy5zZWxlY3QoKX0sbW91c2VlbnRlcjpmdW5jdGlvbihiKXt0aGlzLiRtZW51LmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksYShiLmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJhY3RpdmUiKX19LGEuZm4udHlwZWFoZWFkPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJ0eXBlYWhlYWQiKSxmPXR5cGVvZiBjPT0ib2JqZWN0IiYmYztlfHxkLmRhdGEoInR5cGVhaGVhZCIsZT1uZXcgYih0aGlzLGYpKSx0eXBlb2YgYz09InN0cmluZyImJmVbY10oKX0pfSxhLmZuLnR5cGVhaGVhZC5kZWZhdWx0cz17c291cmNlOltdLGl0ZW1zOjgsbWVudTonPHVsIGNsYXNzPSJ0eXBlYWhlYWQgZHJvcGRvd24tbWVudSI+PC91bD4nLGl0ZW06JzxsaT48YSBocmVmPSIjIj48L2E+PC9saT4nfSxhLmZuLnR5cGVhaGVhZC5Db25zdHJ1Y3Rvcj1iLGEoZnVuY3Rpb24oKXthKCJib2R5Iikub24oImZvY3VzLnR5cGVhaGVhZC5kYXRhLWFwaSIsJ1tkYXRhLXByb3ZpZGU9InR5cGVhaGVhZCJdJyxmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMpO2lmKGMuZGF0YSgidHlwZWFoZWFkIikpcmV0dXJuO2IucHJldmVudERlZmF1bHQoKSxjLnR5cGVhaGVhZChjLmRhdGEoKSl9KX0pfSh3aW5kb3cualF1ZXJ5KTs=]]></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[LyoKICogalF1ZXJ5IHBvc3RNZXNzYWdlIFRyYW5zcG9ydCBQbHVnaW4gMS4xCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKmpzbGludCB1bnBhcmFtOiB0cnVlLCBub21lbjogdHJ1ZSAqLwovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgZG9jdW1lbnQgKi8KCihmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICB2YXIgY291bnRlciA9IDAsCiAgICAgICAgbmFtZXMgPSBbCiAgICAgICAgICAgICdhY2NlcHRzJywKICAgICAgICAgICAgJ2NhY2hlJywKICAgICAgICAgICAgJ2NvbnRlbnRzJywKICAgICAgICAgICAgJ2NvbnRlbnRUeXBlJywKICAgICAgICAgICAgJ2Nyb3NzRG9tYWluJywKICAgICAgICAgICAgJ2RhdGEnLAogICAgICAgICAgICAnZGF0YVR5cGUnLAogICAgICAgICAgICAnaGVhZGVycycsCiAgICAgICAgICAgICdpZk1vZGlmaWVkJywKICAgICAgICAgICAgJ21pbWVUeXBlJywKICAgICAgICAgICAgJ3Bhc3N3b3JkJywKICAgICAgICAgICAgJ3Byb2Nlc3NEYXRhJywKICAgICAgICAgICAgJ3RpbWVvdXQnLAogICAgICAgICAgICAndHJhZGl0aW9uYWwnLAogICAgICAgICAgICAndHlwZScsCiAgICAgICAgICAgICd1cmwnLAogICAgICAgICAgICAndXNlcm5hbWUnCiAgICAgICAgXSwKICAgICAgICBjb252ZXJ0ID0gZnVuY3Rpb24gKHApIHsKICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgfTsKCiAgICAkLmFqYXhTZXR1cCh7CiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAncG9zdG1lc3NhZ2UgdGV4dCc6IGNvbnZlcnQsCiAgICAgICAgICAgICdwb3N0bWVzc2FnZSBqc29uJzogY29udmVydCwKICAgICAgICAgICAgJ3Bvc3RtZXNzYWdlIGh0bWwnOiBjb252ZXJ0CiAgICAgICAgfQogICAgfSk7CgogICAgJC5hamF4VHJhbnNwb3J0KCdwb3N0bWVzc2FnZScsIGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UgJiYgd2luZG93LnBvc3RNZXNzYWdlKSB7CiAgICAgICAgICAgIHZhciBpZnJhbWUsCiAgICAgICAgICAgICAgICBsb2MgPSAkKCc8YT4nKS5wcm9wKCdocmVmJywgb3B0aW9ucy5wb3N0TWVzc2FnZSlbMF0sCiAgICAgICAgICAgICAgICB0YXJnZXQgPSBsb2MucHJvdG9jb2wgKyAnLy8nICsgbG9jLmhvc3QsCiAgICAgICAgICAgICAgICB4aHJVcGxvYWQgPSBvcHRpb25zLnhocigpLnVwbG9hZDsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChfLCBjb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bvc3RtZXNzYWdlLXRyYW5zcG9ydC0nICsgKGNvdW50ZXIgKz0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROYW1lID0gJ21lc3NhZ2UuJyArIG1lc3NhZ2UuaWQ7CiAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gJCgKICAgICAgICAgICAgICAgICAgICAgICAgJzxpZnJhbWUgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHNyYz0iJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBvc3RNZXNzYWdlICsgJyIgbmFtZT0iJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmlkICsgJyI+PC9pZnJhbWU+JwogICAgICAgICAgICAgICAgICAgICkuYmluZCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG5hbWVzLCBmdW5jdGlvbiAoaSwgbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVtuYW1lXSA9IG9wdGlvbnNbbmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmRhdGFUeXBlID0gbWVzc2FnZS5kYXRhVHlwZS5yZXBsYWNlKCdwb3N0bWVzc2FnZSAnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS5iaW5kKGV2ZW50TmFtZSwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGUuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLm9yaWdpbiA9PT0gdGFyZ2V0ICYmIGRhdGEuaWQgPT09IG1lc3NhZ2UuaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvZ3Jlc3MnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2LmluaXRFdmVudChkYXRhLnR5cGUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQoZXYsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHJVcGxvYWQuZGlzcGF0Y2hFdmVudChldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0dXNUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Bvc3RtZXNzYWdlOiBkYXRhLnJlc3VsdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmhlYWRlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHdpbmRvdykudW5iaW5kKGV2ZW50TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lWzBdLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaWZyYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/cors/jquery.xdr-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IFhEb21haW5SZXF1ZXN0IFRyYW5zcG9ydCBQbHVnaW4gMS4xLjIKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBCYXNlZCBvbiBKdWxpYW4gQXVib3VyZydzIGFqYXhIb29rcyB4ZHIuanM6CiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXVib3VyZy9hamF4SG9va3MvCiAqLwoKLypqc2xpbnQgdW5wYXJhbTogdHJ1ZSAqLwovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgWERvbWFpblJlcXVlc3QgKi8KCihmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh3aW5kb3cuWERvbWFpblJlcXVlc3QgJiYgISQuc3VwcG9ydC5jb3JzKSB7CiAgICAgICAgJC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uIChzKSB7CiAgICAgICAgICAgIGlmIChzLmNyb3NzRG9tYWluICYmIHMuYXN5bmMpIHsKICAgICAgICAgICAgICAgIGlmIChzLnRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICBzLnhkclRpbWVvdXQgPSBzLnRpbWVvdXQ7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHMudGltZW91dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB4ZHI7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChoZWFkZXJzLCBjb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN0YXR1cywgc3RhdHVzVGV4dCwgcmVzcG9uc2VzLCByZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmxvYWQgPSB4ZHIub25lcnJvciA9IHhkci5vbnRpbWVvdXQgPSAkLm5vb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVDYWxsYmFjayhzdGF0dXMsIHN0YXR1c1RleHQsIHJlc3BvbnNlcywgcmVzcG9uc2VIZWFkZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB4ZHIgPSBuZXcgWERvbWFpblJlcXVlc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gWERvbWFpblJlcXVlc3Qgb25seSBzdXBwb3J0cyBHRVQgYW5kIFBPU1Q6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnR5cGUgPT09ICdERUxFVEUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnVybCA9IHMudXJsICsgKC9cPy8udGVzdChzLnVybCkgPyAnJicgOiAnPycpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX21ldGhvZD1ERUxFVEUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50eXBlID0gJ1BPU1QnOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHMudHlwZSA9PT0gJ1BVVCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudXJsID0gcy51cmwgKyAoL1w/Ly50ZXN0KHMudXJsKSA/ICcmJyA6ICc/JykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbWV0aG9kPVBVVCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnR5cGUgPSAnUE9TVCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9wZW4ocy50eXBlLCBzLnVybCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09LJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dDogeGRyLnJlc3BvbnNlVGV4dH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogJyArIHhkci5jb250ZW50VHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayg0MDQsICdOb3QgRm91bmQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMueGRyVGltZW91dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGRyLm9udGltZW91dCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygwLCAndGltZW91dCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci50aW1lb3V0ID0gcy54ZHJUaW1lb3V0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5zZW5kKChzLmhhc0NvbnRlbnQgJiYgcy5kYXRhKSB8fCBudWxsKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFib3J0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ZHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmVycm9yID0gJC5ub29wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIuYWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload-fp.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIEZpbGUgUHJvY2Vzc2luZyBQbHVnaW4gMS4wCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMiwgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKmpzbGludCBub21lbjogdHJ1ZSwgdW5wYXJhbTogdHJ1ZSwgcmVnZXhwOiB0cnVlICovCi8qZ2xvYmFsIGRlZmluZSwgd2luZG93LCBkb2N1bWVudCAqLwoKKGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsKICAgICAgICAgICAgJ2pxdWVyeScsCiAgICAgICAgICAgICdsb2FkLWltYWdlJywKICAgICAgICAgICAgJ2NhbnZhcy10by1ibG9iJywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczoKICAgICAgICBmYWN0b3J5KAogICAgICAgICAgICB3aW5kb3cualF1ZXJ5LAogICAgICAgICAgICB3aW5kb3cubG9hZEltYWdlCiAgICAgICAgKTsKICAgIH0KfShmdW5jdGlvbiAoJCwgbG9hZEltYWdlKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLy8gVGhlIEZpbGUgVXBsb2FkIElQIHZlcnNpb24gZXh0ZW5kcyB0aGUgYmFzaWMgZmlsZXVwbG9hZCB3aWRnZXQKICAgIC8vIHdpdGggZmlsZSBwcm9jZXNzaW5nIGZ1bmN0aW9uYWxpdHk6CiAgICAkLndpZGdldCgnYmx1ZWltcEZQLmZpbGV1cGxvYWQnLCAkLmJsdWVpbXAuZmlsZXVwbG9hZCwgewoKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIGZpbGUgcHJvY2Vzc2luZyBhY3Rpb25zOgogICAgICAgICAgICBwcm9jZXNzOiBbCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnbG9hZCcsCiAgICAgICAgICAgICAgICAgICAgZmlsZVR5cGVzOiAvXmltYWdlXC8oZ2lmfGpwZWd8cG5nKSQvLAogICAgICAgICAgICAgICAgICAgIG1heEZpbGVTaXplOiAyMDAwMDAwMCAvLyAyME1CCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3Jlc2l6ZScsCiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IDE5MjAsCiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAxMjAwLAogICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiA4MDAsCiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiA2MDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKi8KICAgICAgICAgICAgXSwKCiAgICAgICAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUKICAgICAgICAgICAgLy8gZmlsZXVwbG9hZCB3aWRnZXQgKHZpYSBmaWxlIGlucHV0IHNlbGVjdGlvbiwgZHJhZyAmIGRyb3Agb3IgYWRkCiAgICAgICAgICAgIC8vIEFQSSBjYWxsKS4gU2VlIHRoZSBiYXNpYyBmaWxlIHVwbG9hZCB3aWRnZXQgZm9yIG1vcmUgaW5mb3JtYXRpb246CiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgICQodGhpcykuZmlsZXVwbG9hZCgncHJvY2VzcycsIGRhdGEpLmRvbmUoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIHByb2Nlc3NBY3Rpb25zOiB7CiAgICAgICAgICAgIC8vIExvYWRzIHRoZSBpbWFnZSBnaXZlbiB2aWEgZGF0YS5maWxlcyBhbmQgZGF0YS5pbmRleAogICAgICAgICAgICAvLyBhcyBjYW52YXMgZWxlbWVudC4KICAgICAgICAgICAgLy8gQWNjZXB0cyB0aGUgb3B0aW9ucyBmaWxlVHlwZXMgKHJlZ3VsYXIgZXhwcmVzc2lvbikKICAgICAgICAgICAgLy8gYW5kIG1heEZpbGVTaXplIChpbnRlZ2VyKSB0byBsaW1pdCB0aGUgZmlsZXMgdG8gbG9hZDoKICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBmaWxlID0gZGF0YS5maWxlc1tkYXRhLmluZGV4XSwKICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgICAgICBpZiAod2luZG93LkhUTUxDYW52YXNFbGVtZW50ICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGUudG9CbG9iICYmCiAgICAgICAgICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5tYXhGaWxlU2l6ZSkgIT09ICdudW1iZXInIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPCBvcHRpb25zLm1heEZpbGVTaXplKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoIW9wdGlvbnMuZmlsZVR5cGVzIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVUeXBlcy50ZXN0KGZpbGUudHlwZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgbG9hZEltYWdlKAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoY2FudmFzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbnZhcyA9IGNhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aCh0aGF0LCBbZGF0YV0pOwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7Y2FudmFzOiB0cnVlfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRmZC5yZWplY3RXaXRoKHRoYXQsIFtkYXRhXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gUmVzaXplcyB0aGUgaW1hZ2UgZ2l2ZW4gYXMgZGF0YS5jYW52YXMgYW5kIHVwZGF0ZXMKICAgICAgICAgICAgLy8gZGF0YS5jYW52YXMgd2l0aCB0aGUgcmVzaXplZCBpbWFnZS4KICAgICAgICAgICAgLy8gQWNjZXB0cyB0aGUgb3B0aW9ucyBtYXhXaWR0aCwgbWF4SGVpZ2h0LCBtaW5XaWR0aCBhbmQKICAgICAgICAgICAgLy8gbWluSGVpZ2h0IHRvIHNjYWxlIHRoZSBnaXZlbiBpbWFnZToKICAgICAgICAgICAgcmVzaXplOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgaWYgKGRhdGEuY2FudmFzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGxvYWRJbWFnZS5zY2FsZShkYXRhLmNhbnZhcywgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy53aWR0aCAhPT0gZGF0YS5jYW52YXMud2lkdGggfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgIT09IGRhdGEuY2FudmFzLmhlaWdodCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbnZhcyA9IGNhbnZhczsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBTYXZlcyB0aGUgcHJvY2Vzc2VkIGltYWdlIGdpdmVuIGFzIGRhdGEuY2FudmFzCiAgICAgICAgICAgIC8vIGlucGxhY2UgYXQgZGF0YS5pbmRleCBvZiBkYXRhLmZpbGVzOgogICAgICAgICAgICBzYXZlOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZyBpZiBubyBwcm9jZXNzaW5nIGhhcyBoYXBwZW5lZDoKICAgICAgICAgICAgICAgIGlmICghZGF0YS5jYW52YXMgfHwgIWRhdGEucHJvY2Vzc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGRhdGEuZmlsZXNbZGF0YS5pbmRleF0sCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGZpbGUubmFtZSwKICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoYmxvYikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJsb2IubmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUudHlwZSA9PT0gYmxvYi50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvYi5uYW1lID0gZmlsZS5uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iLm5hbWUgPSBmaWxlLm5hbWUucmVwbGFjZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1wuLiskLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgYmxvYi50eXBlLnN1YnN0cig2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWF0ZWQgYmxvYiBhdCB0aGUgcG9zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIG9yaWdpbmFsIGZpbGUgaW4gdGhlIGZpbGVzIGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXNbZGF0YS5pbmRleF0gPSBibG9iOwogICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCwgW2RhdGFdKTsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgLy8gVXNlIGNhbnZhcy5tb3pHZXRBc0ZpbGUgZGlyZWN0bHksIHRvIHJldGFpbiB0aGUgZmlsZW5hbWUsIGFzCiAgICAgICAgICAgICAgICAvLyBHZWNrbyBkb2Vzbid0IHN1cHBvcnQgdGhlIGZpbGVuYW1lIG9wdGlvbiBmb3IgRm9ybURhdGEuYXBwZW5kOgogICAgICAgICAgICAgICAgaWYgKGRhdGEuY2FudmFzLm1vekdldEFzRmlsZSkgewogICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEuY2FudmFzLm1vekdldEFzRmlsZSgKICAgICAgICAgICAgICAgICAgICAgICAgKC9eaW1hZ2VcLyhqcGVnfHBuZykkLy50ZXN0KGZpbGUudHlwZSkgJiYgbmFtZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobmFtZSAmJiBuYW1lLnJlcGxhY2UoL1wuLiskLywgJycpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9iJykgKyAnLnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZQogICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbnZhcy50b0Jsb2IoY2FsbGJhY2ssIGZpbGUudHlwZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIC8vIFJlc2l6ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGluZGV4IGFuZCBzdG9yZXMgdGhlIGNyZWF0ZWQgYmxvYiBhdAogICAgICAgIC8vIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBvZiB0aGUgZmlsZXMgbGlzdCwgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0OgogICAgICAgIF9wcm9jZXNzRmlsZTogZnVuY3Rpb24gKGZpbGVzLCBpbmRleCwgb3B0aW9ucykgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhhdCwgW3sKICAgICAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMsCiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4CiAgICAgICAgICAgICAgICB9XSksCiAgICAgICAgICAgICAgICBjaGFpbiA9IGRmZC5wcm9taXNlKCk7CiAgICAgICAgICAgIHRoYXQuX3Byb2Nlc3NpbmcgKz0gMTsKICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMucHJvY2VzcywgZnVuY3Rpb24gKGksIHNldHRpbmdzKSB7CiAgICAgICAgICAgICAgICBjaGFpbiA9IGNoYWluLnBpcGUoZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5wcm9jZXNzQWN0aW9uc1tzZXR0aW5ncy5hY3Rpb25dCiAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKHRoaXMsIGRhdGEsIHNldHRpbmdzKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2hhaW4uYWx3YXlzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHRoYXQuX3Byb2Nlc3NpbmcgLT0gMTsKICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9wcm9jZXNzaW5nID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5lbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnZmlsZXVwbG9hZC1wcm9jZXNzaW5nJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAodGhhdC5fcHJvY2Vzc2luZyA9PT0gMSkgewogICAgICAgICAgICAgICAgdGhhdC5lbGVtZW50LmFkZENsYXNzKCdmaWxldXBsb2FkLXByb2Nlc3NpbmcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY2hhaW47CiAgICAgICAgfSwKCiAgICAgICAgLy8gUHJvY2Vzc2VzIHRoZSBmaWxlcyBnaXZlbiBhcyBmaWxlcyBwcm9wZXJ0eSBvZiB0aGUgZGF0YSBwYXJhbWV0ZXIsCiAgICAgICAgLy8gcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IHRoYXQgYWxsb3dzIHRvIGJpbmQgYSBkb25lIGhhbmRsZXIsIHdoaWNoCiAgICAgICAgLy8gd2lsbCBiZSBpbnZva2VkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIGZpbGVzIChpbnBsYWNlKSBpcyBkb25lOgogICAgICAgIHByb2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBkYXRhKTsKICAgICAgICAgICAgaWYgKG9wdGlvbnMucHJvY2VzcyAmJiBvcHRpb25zLnByb2Nlc3MubGVuZ3RoICYmCiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsKICAgICAgICAgICAgICAgICQuZWFjaChkYXRhLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9wcm9jZXNzaW5nUXVldWUgPSB0aGF0Ll9wcm9jZXNzaW5nUXVldWUucGlwZSgKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRmZCA9ICQuRGVmZXJyZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3Byb2Nlc3NGaWxlKGRhdGEuZmlsZXMsIGluZGV4LCBvcHRpb25zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hbHdheXMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2luZ1F1ZXVlOwogICAgICAgIH0sCgogICAgICAgIF9jcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJC5ibHVlaW1wLmZpbGV1cGxvYWQucHJvdG90eXBlLl9jcmVhdGUuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZyA9IDA7CiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZSA9ICQuRGVmZXJyZWQoKS5yZXNvbHZlV2l0aCh0aGlzKQogICAgICAgICAgICAgICAgLnByb21pc2UoKTsKICAgICAgICB9CgogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload-ui.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFVzZXIgSW50ZXJmYWNlIFBsdWdpbiA2LjguMgogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLypqc2xpbnQgbm9tZW46IHRydWUsIHVucGFyYW06IHRydWUsIHJlZ2V4cDogdHJ1ZSAqLwovKmdsb2JhbCBkZWZpbmUsIHdpbmRvdywgZG9jdW1lbnQsIFVSTCwgd2Via2l0VVJMLCBGaWxlUmVhZGVyICovCgooZnVuY3Rpb24gKGZhY3RvcnkpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToKICAgICAgICBkZWZpbmUoWwogICAgICAgICAgICAnanF1ZXJ5JywKICAgICAgICAgICAgJ3RtcGwnLAogICAgICAgICAgICAnbG9hZC1pbWFnZScsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLWZwJwogICAgICAgIF0sIGZhY3RvcnkpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgd2luZG93LmpRdWVyeSwKICAgICAgICAgICAgd2luZG93LnRtcGwsCiAgICAgICAgICAgIHdpbmRvdy5sb2FkSW1hZ2UKICAgICAgICApOwogICAgfQp9KGZ1bmN0aW9uICgkLCB0bXBsLCBsb2FkSW1hZ2UpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBUaGUgVUkgdmVyc2lvbiBleHRlbmRzIHRoZSBGUCAoZmlsZSBwcm9jZXNzaW5nKSB2ZXJzaW9uIG9yIHRoZSBiYXNpYwogICAgLy8gZmlsZSB1cGxvYWQgd2lkZ2V0IGFuZCBhZGRzIGNvbXBsZXRlIHVzZXIgaW50ZXJmYWNlIGludGVyYWN0aW9uOgogICAgdmFyIHBhcmVudFdpZGdldCA9ICgkLmJsdWVpbXBGUCB8fCAkLmJsdWVpbXApLmZpbGV1cGxvYWQ7CiAgICAkLndpZGdldCgnYmx1ZWltcFVJLmZpbGV1cGxvYWQnLCBwYXJlbnRXaWRnZXQsIHsKCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB0byB0aGUgd2lkZ2V0IGFyZSB1cGxvYWRlZCBhcyBzb29uCiAgICAgICAgICAgIC8vIGFzIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc3RhcnQgYnV0dG9ucy4gVG8gZW5hYmxlIGF1dG9tYXRpYwogICAgICAgICAgICAvLyB1cGxvYWRzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdHJ1ZToKICAgICAgICAgICAgYXV0b1VwbG9hZDogZmFsc2UsCiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgb3B0aW9uIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGZpbGVzIHRoYXQgYXJlCiAgICAgICAgICAgIC8vIGFsbG93ZWQgdG8gYmUgdXBsb2FkZWQgdXNpbmcgdGhpcyB3aWRnZXQ6CiAgICAgICAgICAgIG1heE51bWJlck9mRmlsZXM6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gYWxsb3dlZCBmaWxlIHNpemU6CiAgICAgICAgICAgIG1heEZpbGVTaXplOiB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIFRoZSBtaW5pbXVtIGFsbG93ZWQgZmlsZSBzaXplOgogICAgICAgICAgICBtaW5GaWxlU2l6ZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbGxvd2VkIGZpbGUgdHlwZXMsIG1hdGNoZXMKICAgICAgICAgICAgLy8gYWdhaW5zdCBlaXRoZXIgZmlsZSB0eXBlIG9yIGZpbGUgbmFtZToKICAgICAgICAgICAgYWNjZXB0RmlsZVR5cGVzOiAgLy4rJC9pLAogICAgICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIGRlZmluZSBmb3Igd2hpY2ggZmlsZXMgYSBwcmV2aWV3CiAgICAgICAgICAgIC8vIGltYWdlIGlzIHNob3duLCBtYXRjaGVkIGFnYWluc3QgdGhlIGZpbGUgdHlwZToKICAgICAgICAgICAgcHJldmlld1NvdXJjZUZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gZmlsZSBzaXplIG9mIGltYWdlcyB0aGF0IGFyZSB0byBiZSBkaXNwbGF5ZWQgYXMgcHJldmlldzoKICAgICAgICAgICAgcHJldmlld1NvdXJjZU1heEZpbGVTaXplOiA1MDAwMDAwLCAvLyA1TUIKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gd2lkdGggb2YgdGhlIHByZXZpZXcgaW1hZ2VzOgogICAgICAgICAgICBwcmV2aWV3TWF4V2lkdGg6IDgwLAogICAgICAgICAgICAvLyBUaGUgbWF4aW11bSBoZWlnaHQgb2YgdGhlIHByZXZpZXcgaW1hZ2VzOgogICAgICAgICAgICBwcmV2aWV3TWF4SGVpZ2h0OiA4MCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgcHJldmlldyBpbWFnZXMgYXJlIGRpc3BsYXllZCBhcyBjYW52YXMgZWxlbWVudHMKICAgICAgICAgICAgLy8gaWYgc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyLiBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2UKICAgICAgICAgICAgLy8gdG8gYWx3YXlzIGRpc3BsYXkgcHJldmlldyBpbWFnZXMgYXMgaW1nIGVsZW1lbnRzOgogICAgICAgICAgICBwcmV2aWV3QXNDYW52YXM6IHRydWUsCiAgICAgICAgICAgIC8vIFRoZSBJRCBvZiB0aGUgdXBsb2FkIHRlbXBsYXRlOgogICAgICAgICAgICB1cGxvYWRUZW1wbGF0ZUlkOiAndGVtcGxhdGUtdXBsb2FkJywKICAgICAgICAgICAgLy8gVGhlIElEIG9mIHRoZSBkb3dubG9hZCB0ZW1wbGF0ZToKICAgICAgICAgICAgZG93bmxvYWRUZW1wbGF0ZUlkOiAndGVtcGxhdGUtZG93bmxvYWQnLAogICAgICAgICAgICAvLyBUaGUgY29udGFpbmVyIGZvciB0aGUgbGlzdCBvZiBmaWxlcy4gSWYgdW5kZWZpbmVkLCBpdCBpcyBzZXQgdG8KICAgICAgICAgICAgLy8gYW4gZWxlbWVudCB3aXRoIGNsYXNzICJmaWxlcyIgaW5zaWRlIG9mIHRoZSB3aWRnZXQgZWxlbWVudDoKICAgICAgICAgICAgZmlsZXNDb250YWluZXI6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZmlsZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSBmaWxlcyBjb250YWluZXIuCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlLCB0byBwcmVwZW5kIGZpbGVzIGluc3RlYWQ6CiAgICAgICAgICAgIHByZXBlbmRGaWxlczogZmFsc2UsCiAgICAgICAgICAgIC8vIFRoZSBleHBlY3RlZCBkYXRhIHR5cGUgb2YgdGhlIHVwbG9hZCByZXNwb25zZSwgc2V0cyB0aGUgZGF0YVR5cGUKICAgICAgICAgICAgLy8gb3B0aW9uIG9mIHRoZSAkLmFqYXggdXBsb2FkIHJlcXVlc3RzOgogICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAoKICAgICAgICAgICAgLy8gVGhlIGFkZCBjYWxsYmFjayBpcyBpbnZva2VkIGFzIHNvb24gYXMgZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBmaWxldXBsb2FkCiAgICAgICAgICAgIC8vIHdpZGdldCAodmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBkcmFnICYgZHJvcCBvciBhZGQgQVBJIGNhbGwpLgogICAgICAgICAgICAvLyBTZWUgdGhlIGJhc2ljIGZpbGUgdXBsb2FkIHdpZGdldCBmb3IgbW9yZSBpbmZvcm1hdGlvbjoKICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhhdC5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGZpbGVzID0gZGF0YS5maWxlczsKICAgICAgICAgICAgICAgICQodGhpcykuZmlsZXVwbG9hZCgncHJvY2VzcycsIGRhdGEpLmRvbmUoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHRoYXQuX2FkanVzdE1heE51bWJlck9mRmlsZXMoLWZpbGVzLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5pc0FkanVzdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzLnZhbGlkID0gZGF0YS5pc1ZhbGlkYXRlZCA9IHRoYXQuX3ZhbGlkYXRlKGZpbGVzKTsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSB0aGF0Ll9yZW5kZXJVcGxvYWQoZmlsZXMpLmRhdGEoJ2RhdGEnLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVzQ29udGFpbmVyWwogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnByZXBlbmRGaWxlcyA/ICdwcmVwZW5kJyA6ICdhcHBlbmQnCiAgICAgICAgICAgICAgICAgICAgXShkYXRhLmNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlbmRlclByZXZpZXdzKGZpbGVzLCBkYXRhLmNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KGRhdGEuY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihkYXRhLmNvbnRleHQpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhhdC5fdHJpZ2dlcignYWRkZWQnLCBlLCBkYXRhKSAhPT0gZmFsc2UpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25zLmF1dG9VcGxvYWQgfHwgZGF0YS5hdXRvVXBsb2FkKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmF1dG9VcGxvYWQgIT09IGZhbHNlICYmIGRhdGEuaXNWYWxpZGF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN0YXJ0IG9mIGVhY2ggZmlsZSB1cGxvYWQgcmVxdWVzdDoKICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdmaWxldXBsb2FkJyk7CiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNWYWxpZGF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNBZGp1c3RlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hZGp1c3RNYXhOdW1iZXJPZkZpbGVzKC1kYXRhLmZpbGVzLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC5fdmFsaWRhdGUoZGF0YS5maWxlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQgJiYgZGF0YS5kYXRhVHlwZSAmJgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGFUeXBlLnN1YnN0cigwLCA2KSA9PT0gJ2lmcmFtZScpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWUgVHJhbnNwb3J0IGRvZXMgbm90IHN1cHBvcnQgcHJvZ3Jlc3MgZXZlbnRzLgogICAgICAgICAgICAgICAgICAgIC8vIEluIGxhY2sgb2YgYW4gaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBiYXIsIHdlIHNldAogICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9ncmVzcyB0byAxMDAlLCBzaG93aW5nIHRoZSBmdWxsIGFuaW1hdGVkIGJhcjoKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcycpLmFkZENsYXNzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgISQuc3VwcG9ydC50cmFuc2l0aW9uICYmICdwcm9ncmVzcy1hbmltYXRlZCcKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLmJhcicpLmNzcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludCgxMDAsIDEwKSArICclJwogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX3RyaWdnZXIoJ3NlbnQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgdXBsb2FkczoKICAgICAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdmaWxldXBsb2FkJyksCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0LmVhY2goZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gKCQuaXNBcnJheShkYXRhLnJlc3VsdCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnJlc3VsdFtpbmRleF0pIHx8IHtlcnJvcjogJ2VtcHR5UmVzdWx0J307CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hZGp1c3RNYXhOdW1iZXJPZkZpbGVzKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0aGF0Ll9yZW5kZXJEb3dubG9hZChbZmlsZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ2hlaWdodCcsIG5vZGUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KHRlbXBsYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKHRlbXBsYXRlKS5kb25lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY29tcGxldGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRoYXQuX3JlbmRlckRvd25sb2FkKGRhdGEucmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8odGhhdC5vcHRpb25zLmZpbGVzQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9mb3JjZVJlZmxvdyh0ZW1wbGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbih0ZW1wbGF0ZSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NvbXBsZXRlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIHVwbG9hZHM6CiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpLAogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlOwogICAgICAgICAgICAgICAgdGhhdC5fYWRqdXN0TWF4TnVtYmVyT2ZGaWxlcyhkYXRhLmZpbGVzLmxlbmd0aCk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0LmVhY2goZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yVGhyb3duICE9PSAnYWJvcnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGRhdGEuZmlsZXNbaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IGZpbGUuZXJyb3IgfHwgZGF0YS5lcnJvclRocm93biB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKCQodGhpcykpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gdGhhdC5fcmVuZGVyRG93bmxvYWQoW2ZpbGVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KHRlbXBsYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbih0ZW1wbGF0ZSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWxlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKCQodGhpcykpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmYWlsZWQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZXJyb3JUaHJvd24gIT09ICdhYm9ydCcpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hZGp1c3RNYXhOdW1iZXJPZkZpbGVzKC1kYXRhLmZpbGVzLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gdGhhdC5fcmVuZGVyVXBsb2FkKGRhdGEuZmlsZXMpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0aGF0Lm9wdGlvbnMuZmlsZXNDb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCdkYXRhJywgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3coZGF0YS5jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKGRhdGEuY29udGV4dCkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWxlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZmFpbGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOgogICAgICAgICAgICBwcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZmluZCgnLmJhcicpLmNzcygKICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJywKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkgKyAnJScKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZ2xvYmFsIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6CiAgICAgICAgICAgIHByb2dyZXNzYWxsOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJy5maWxldXBsb2FkLXByb2dyZXNzJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLmJhcicpLmNzcygKICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJywKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkgKyAnJScKICAgICAgICAgICAgICAgICAgICApLmVuZCgpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcy1leHRlbmRlZCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdmaWxldXBsb2FkJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX3JlbmRlckV4dGVuZGVkUHJvZ3Jlc3MoZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZHMgc3RhcnQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RhcnQgZXZlbnQ6CiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKTsKICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKS5maW5kKCcuZmlsZXVwbG9hZC1wcm9ncmVzcycpKS5kb25lKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RhcnRlZCcsIGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0b3AsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDoKICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdmaWxldXBsb2FkJyk7CiAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKCQodGhpcykuZmluZCgnLmZpbGV1cGxvYWQtcHJvZ3Jlc3MnKSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmJhcicpLmNzcygnd2lkdGgnLCAnMCUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcucHJvZ3Jlc3MtZXh0ZW5kZWQnKS5odG1sKCcmbmJzcDsnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RvcHBlZCcsIGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBmaWxlIGRlbGV0aW9uOgogICAgICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnVybCkgewogICAgICAgICAgICAgICAgICAgICQuYWpheChkYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hZGp1c3RNYXhOdW1iZXJPZkZpbGVzKDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihkYXRhLmNvbnRleHQpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdkZXN0cm95ZWQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgLy8gTGluayBoYW5kbGVyLCB0aGF0IGFsbG93cyB0byBkb3dubG9hZCBmaWxlcwogICAgICAgIC8vIGJ5IGRyYWcgJiBkcm9wIG9mIHRoZSBsaW5rcyB0byB0aGUgZGVza3RvcDoKICAgICAgICBfZW5hYmxlRHJhZ1RvRGVza3RvcDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgbGluayA9ICQodGhpcyksCiAgICAgICAgICAgICAgICB1cmwgPSBsaW5rLnByb3AoJ2hyZWYnKSwKICAgICAgICAgICAgICAgIG5hbWUgPSBsaW5rLnByb3AoJ2Rvd25sb2FkJyksCiAgICAgICAgICAgICAgICB0eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgICAgIGxpbmsuYmluZCgnZHJhZ3N0YXJ0JywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAnRG93bmxvYWRVUkwnLAogICAgICAgICAgICAgICAgICAgICAgICBbdHlwZSwgbmFtZSwgdXJsXS5qb2luKCc6JykKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQogICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBfYWRqdXN0TWF4TnVtYmVyT2ZGaWxlczogZnVuY3Rpb24gKG9wZXJhbmQpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMubWF4TnVtYmVyT2ZGaWxlcyA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5tYXhOdW1iZXJPZkZpbGVzICs9IG9wZXJhbmQ7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1heE51bWJlck9mRmlsZXMgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlzYWJsZUZpbGVJbnB1dEJ1dHRvbigpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVGaWxlSW5wdXRCdXR0b24oKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9mb3JtYXRGaWxlU2l6ZTogZnVuY3Rpb24gKGJ5dGVzKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgYnl0ZXMgIT09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYnl0ZXMgLyAxMDAwMDAwMDAwKS50b0ZpeGVkKDIpICsgJyBHQic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYnl0ZXMgLyAxMDAwMDAwKS50b0ZpeGVkKDIpICsgJyBNQic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEtCJzsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0Qml0cmF0ZTogZnVuY3Rpb24gKGJpdHMpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBiaXRzICE9PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiaXRzID49IDEwMDAwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYml0cyAvIDEwMDAwMDAwMDApLnRvRml4ZWQoMikgKyAnIEdiaXQvcyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJpdHMgPj0gMTAwMDAwMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIChiaXRzIC8gMTAwMDAwMCkudG9GaXhlZCgyKSArICcgTWJpdC9zJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYml0cyA+PSAxMDAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGJpdHMgLyAxMDAwKS50b0ZpeGVkKDIpICsgJyBrYml0L3MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBiaXRzICsgJyBiaXQvcyc7CiAgICAgICAgfSwKCiAgICAgICAgX2Zvcm1hdFRpbWU6IGZ1bmN0aW9uIChzZWNvbmRzKSB7CiAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLAogICAgICAgICAgICAgICAgZGF5cyA9IHBhcnNlSW50KHNlY29uZHMgLyA4NjQwMCwgMTApOwogICAgICAgICAgICBkYXlzID0gZGF5cyA/IGRheXMgKyAnZCAnIDogJyc7CiAgICAgICAgICAgIHJldHVybiBkYXlzICsKICAgICAgICAgICAgICAgICgnMCcgKyBkYXRlLmdldFVUQ0hvdXJzKCkpLnNsaWNlKC0yKSArICc6JyArCiAgICAgICAgICAgICAgICAoJzAnICsgZGF0ZS5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSArICc6JyArCiAgICAgICAgICAgICAgICAoJzAnICsgZGF0ZS5nZXRVVENTZWNvbmRzKCkpLnNsaWNlKC0yKTsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0UGVyY2VudGFnZTogZnVuY3Rpb24gKGZsb2F0VmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIChmbG9hdFZhbHVlICogMTAwKS50b0ZpeGVkKDIpICsgJyAlJzsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyRXh0ZW5kZWRQcm9ncmVzczogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdEJpdHJhdGUoZGF0YS5iaXRyYXRlKSArICcgfCAnICsKICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWUoCiAgICAgICAgICAgICAgICAgICAgKGRhdGEudG90YWwgLSBkYXRhLmxvYWRlZCkgKiA4IC8gZGF0YS5iaXRyYXRlCiAgICAgICAgICAgICAgICApICsgJyB8ICcgKwogICAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0UGVyY2VudGFnZSgKICAgICAgICAgICAgICAgICAgICBkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwKICAgICAgICAgICAgICAgICkgKyAnIHwgJyArCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRGaWxlU2l6ZShkYXRhLmxvYWRlZCkgKyAnIC8gJyArCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRGaWxlU2l6ZShkYXRhLnRvdGFsKTsKICAgICAgICB9LAoKICAgICAgICBfaGFzRXJyb3I6IGZ1bmN0aW9uIChmaWxlKSB7CiAgICAgICAgICAgIGlmIChmaWxlLmVycm9yKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZS5lcnJvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIGFkZGVkIGZpbGVzIGlzIHN1YnRyYWN0ZWQgZnJvbQogICAgICAgICAgICAvLyBtYXhOdW1iZXJPZkZpbGVzIGJlZm9yZSB2YWxpZGF0aW9uLCBzbyB3ZSBjaGVjayBpZgogICAgICAgICAgICAvLyBtYXhOdW1iZXJPZkZpbGVzIGlzIGJlbG93IDAgKGluc3RlYWQgb2YgYmVsb3cgMSk6CiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubWF4TnVtYmVyT2ZGaWxlcyA8IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnbWF4TnVtYmVyT2ZGaWxlcyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRmlsZXMgYXJlIGFjY2VwdGVkIGlmIGVpdGhlciB0aGUgZmlsZSB0eXBlIG9yIHRoZSBmaWxlIG5hbWUKICAgICAgICAgICAgLy8gbWF0Y2hlcyBhZ2FpbnN0IHRoZSBhY2NlcHRGaWxlVHlwZXMgcmVndWxhciBleHByZXNzaW9uLCBhcwogICAgICAgICAgICAvLyBvbmx5IGJyb3dzZXJzIHdpdGggc3VwcG9ydCBmb3IgdGhlIEZpbGUgQVBJIHJlcG9ydCB0aGUgdHlwZToKICAgICAgICAgICAgaWYgKCEodGhpcy5vcHRpb25zLmFjY2VwdEZpbGVUeXBlcy50ZXN0KGZpbGUudHlwZSkgfHwKICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuYWNjZXB0RmlsZVR5cGVzLnRlc3QoZmlsZS5uYW1lKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnYWNjZXB0RmlsZVR5cGVzJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1heEZpbGVTaXplICYmCiAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplID4gdGhpcy5vcHRpb25zLm1heEZpbGVTaXplKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ21heEZpbGVTaXplJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodHlwZW9mIGZpbGUuc2l6ZSA9PT0gJ251bWJlcicgJiYKICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPCB0aGlzLm9wdGlvbnMubWluRmlsZVNpemUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnbWluRmlsZVNpemUnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0sCgogICAgICAgIF92YWxpZGF0ZTogZnVuY3Rpb24gKGZpbGVzKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIHZhbGlkID0gISFmaWxlcy5sZW5ndGg7CiAgICAgICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7CiAgICAgICAgICAgICAgICBmaWxlLmVycm9yID0gdGhhdC5faGFzRXJyb3IoZmlsZSk7CiAgICAgICAgICAgICAgICBpZiAoZmlsZS5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gdmFsaWQ7CiAgICAgICAgfSwKCiAgICAgICAgX3JlbmRlclRlbXBsYXRlOiBmdW5jdGlvbiAoZnVuYywgZmlsZXMpIHsKICAgICAgICAgICAgaWYgKCFmdW5jKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jKHsKICAgICAgICAgICAgICAgIGZpbGVzOiBmaWxlcywKICAgICAgICAgICAgICAgIGZvcm1hdEZpbGVTaXplOiB0aGlzLl9mb3JtYXRGaWxlU2l6ZSwKICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9ucwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mICQpIHsKICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICQodGhpcy5vcHRpb25zLnRlbXBsYXRlc0NvbnRhaW5lcikuaHRtbChyZXN1bHQpLmNoaWxkcmVuKCk7CiAgICAgICAgfSwKCiAgICAgICAgX3JlbmRlclByZXZpZXc6IGZ1bmN0aW9uIChmaWxlLCBub2RlKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsCiAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgIHJldHVybiAoKGxvYWRJbWFnZSAmJiBsb2FkSW1hZ2UoCiAgICAgICAgICAgICAgICBmaWxlLAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKGltZykgewogICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kKGltZyk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3cobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihub2RlKS5kb25lKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKG5vZGUpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGlmICghJC5jb250YWlucyhkb2N1bWVudC5ib2R5LCBub2RlWzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBub3QgcGFydCBvZiB0aGUgRE9NLAogICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uIGV2ZW50cyBhcmUgbm90IHRyaWdnZXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byByZXNvbHZlIG1hbnVhbGx5OgogICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogb3B0aW9ucy5wcmV2aWV3TWF4V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBvcHRpb25zLnByZXZpZXdNYXhIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgY2FudmFzOiBvcHRpb25zLnByZXZpZXdBc0NhbnZhcwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApKSB8fCBkZmQucmVzb2x2ZVdpdGgobm9kZSkpICYmIGRmZDsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyUHJldmlld3M6IGZ1bmN0aW9uIChmaWxlcywgbm9kZXMpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgbm9kZXMuZmluZCgnLnByZXZpZXcgc3BhbicpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGZpbGVzW2luZGV4XTsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnByZXZpZXdTb3VyY2VGaWxlVHlwZXMudGVzdChmaWxlLnR5cGUpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5wcmV2aWV3U291cmNlTWF4RmlsZVNpemUpICE9PSAnbnVtYmVyJyB8fAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPCBvcHRpb25zLnByZXZpZXdTb3VyY2VNYXhGaWxlU2l6ZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9wcm9jZXNzaW5nUXVldWUgPSB0aGF0Ll9wcm9jZXNzaW5nUXVldWUucGlwZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlbmRlclByZXZpZXcoZmlsZSwgJChlbGVtZW50KSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZmQucHJvbWlzZSgpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZTsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyVXBsb2FkOiBmdW5jdGlvbiAoZmlsZXMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclRlbXBsYXRlKAogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVwbG9hZFRlbXBsYXRlLAogICAgICAgICAgICAgICAgZmlsZXMKICAgICAgICAgICAgKTsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyRG93bmxvYWQ6IGZ1bmN0aW9uIChmaWxlcykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyVGVtcGxhdGUoCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuZG93bmxvYWRUZW1wbGF0ZSwKICAgICAgICAgICAgICAgIGZpbGVzCiAgICAgICAgICAgICkuZmluZCgnYVtkb3dubG9hZF0nKS5lYWNoKHRoaXMuX2VuYWJsZURyYWdUb0Rlc2t0b3ApLmVuZCgpOwogICAgICAgIH0sCgogICAgICAgIF9zdGFydEhhbmRsZXI6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIGJ1dHRvbiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IGJ1dHRvbi5jbG9zZXN0KCcudGVtcGxhdGUtdXBsb2FkJyksCiAgICAgICAgICAgICAgICBkYXRhID0gdGVtcGxhdGUuZGF0YSgnZGF0YScpOwogICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLnN1Ym1pdCAmJiAhZGF0YS5qcVhIUiAmJiBkYXRhLnN1Ym1pdCgpKSB7CiAgICAgICAgICAgICAgICBidXR0b24ucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9jYW5jZWxIYW5kbGVyOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9ICQodGhpcykuY2xvc2VzdCgnLnRlbXBsYXRlLXVwbG9hZCcpLAogICAgICAgICAgICAgICAgZGF0YSA9IHRlbXBsYXRlLmRhdGEoJ2RhdGEnKSB8fCB7fTsKICAgICAgICAgICAgaWYgKCFkYXRhLmpxWEhSKSB7CiAgICAgICAgICAgICAgICBkYXRhLmVycm9yVGhyb3duID0gJ2Fib3J0JzsKICAgICAgICAgICAgICAgIGUuZGF0YS5maWxldXBsb2FkLl90cmlnZ2VyKCdmYWlsJywgZSwgZGF0YSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhLmpxWEhSLmFib3J0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfZGVsZXRlSGFuZGxlcjogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgYnV0dG9uID0gJCh0aGlzKTsKICAgICAgICAgICAgZS5kYXRhLmZpbGV1cGxvYWQuX3RyaWdnZXIoJ2Rlc3Ryb3knLCBlLCB7CiAgICAgICAgICAgICAgICBjb250ZXh0OiBidXR0b24uY2xvc2VzdCgnLnRlbXBsYXRlLWRvd25sb2FkJyksCiAgICAgICAgICAgICAgICB1cmw6IGJ1dHRvbi5hdHRyKCdkYXRhLXVybCcpLAogICAgICAgICAgICAgICAgdHlwZTogYnV0dG9uLmF0dHIoJ2RhdGEtdHlwZScpIHx8ICdERUxFVEUnLAogICAgICAgICAgICAgICAgZGF0YVR5cGU6IGUuZGF0YS5maWxldXBsb2FkLm9wdGlvbnMuZGF0YVR5cGUKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX2ZvcmNlUmVmbG93OiBmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICB0aGlzLl9yZWZsb3cgPSAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJgogICAgICAgICAgICAgICAgbm9kZS5sZW5ndGggJiYgbm9kZVswXS5vZmZzZXRXaWR0aDsKICAgICAgICB9LAoKICAgICAgICBfdHJhbnNpdGlvbjogZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgdmFyIGRmZCA9ICQuRGVmZXJyZWQoKTsKICAgICAgICAgICAgaWYgKCQuc3VwcG9ydC50cmFuc2l0aW9uICYmIG5vZGUuaGFzQ2xhc3MoJ2ZhZGUnKSkgewogICAgICAgICAgICAgICAgbm9kZS5iaW5kKAogICAgICAgICAgICAgICAgICAgICQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVzcG9uZCB0byBvdGhlciB0cmFuc2l0aW9ucyBldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNvbnRhaW5lciBlbGVtZW50LCBlLmcuIGZyb20gYnV0dG9uIGVsZW1lbnRzOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IG5vZGVbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudW5iaW5kKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApLnRvZ2dsZUNsYXNzKCdpbicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS50b2dnbGVDbGFzcygnaW4nKTsKICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGZkOwogICAgICAgIH0sCgogICAgICAgIF9pbml0QnV0dG9uQmFyRXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgZmlsZVVwbG9hZEJ1dHRvbkJhciA9IHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZXVwbG9hZC1idXR0b25iYXInKSwKICAgICAgICAgICAgICAgIGZpbGVzTGlzdCA9IHRoaXMub3B0aW9ucy5maWxlc0NvbnRhaW5lciwKICAgICAgICAgICAgICAgIG5zID0gdGhpcy5vcHRpb25zLm5hbWVzcGFjZTsKICAgICAgICAgICAgZmlsZVVwbG9hZEJ1dHRvbkJhci5maW5kKCcuc3RhcnQnKQogICAgICAgICAgICAgICAgLmJpbmQoJ2NsaWNrLicgKyBucywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgZmlsZXNMaXN0LmZpbmQoJy5zdGFydCBidXR0b24nKS5jbGljaygpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLmNhbmNlbCcpCiAgICAgICAgICAgICAgICAuYmluZCgnY2xpY2suJyArIG5zLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmNhbmNlbCBidXR0b24nKS5jbGljaygpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLmRlbGV0ZScpCiAgICAgICAgICAgICAgICAuYmluZCgnY2xpY2suJyArIG5zLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmRlbGV0ZSBpbnB1dDpjaGVja2VkJykKICAgICAgICAgICAgICAgICAgICAgICAgLnNpYmxpbmdzKCdidXR0b24nKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLnRvZ2dsZScpCiAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLnRvZ2dsZScpCiAgICAgICAgICAgICAgICAuYmluZCgnY2hhbmdlLicgKyBucywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmRlbGV0ZSBpbnB1dCcpLnByb3AoCiAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja2VkJywKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5pcygnOmNoZWNrZWQnKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBfZGVzdHJveUJ1dHRvbkJhckV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJy5maWxldXBsb2FkLWJ1dHRvbmJhciBidXR0b24nKQogICAgICAgICAgICAgICAgLnVuYmluZCgnY2xpY2suJyArIHRoaXMub3B0aW9ucy5uYW1lc3BhY2UpOwogICAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGV1cGxvYWQtYnV0dG9uYmFyIC50b2dnbGUnKQogICAgICAgICAgICAgICAgLnVuYmluZCgnY2hhbmdlLicgKyB0aGlzLm9wdGlvbnMubmFtZXNwYWNlKTsKICAgICAgICB9LAoKICAgICAgICBfaW5pdEV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5faW5pdEV2ZW50SGFuZGxlcnMuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdmFyIGV2ZW50RGF0YSA9IHtmaWxldXBsb2FkOiB0aGlzfTsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpbGVzQ29udGFpbmVyCiAgICAgICAgICAgICAgICAuZGVsZWdhdGUoCiAgICAgICAgICAgICAgICAgICAgJy5zdGFydCBidXR0b24nLAogICAgICAgICAgICAgICAgICAgICdjbGljay4nICsgdGhpcy5vcHRpb25zLm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICBldmVudERhdGEsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRIYW5kbGVyCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuZGVsZWdhdGUoCiAgICAgICAgICAgICAgICAgICAgJy5jYW5jZWwgYnV0dG9uJywKICAgICAgICAgICAgICAgICAgICAnY2xpY2suJyArIHRoaXMub3B0aW9ucy5uYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgZXZlbnREYXRhLAogICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbmNlbEhhbmRsZXIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5kZWxlZ2F0ZSgKICAgICAgICAgICAgICAgICAgICAnLmRlbGV0ZSBidXR0b24nLAogICAgICAgICAgICAgICAgICAgICdjbGljay4nICsgdGhpcy5vcHRpb25zLm5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgICBldmVudERhdGEsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlSGFuZGxlcgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhpcy5faW5pdEJ1dHRvbkJhckV2ZW50SGFuZGxlcnMoKTsKICAgICAgICB9LAoKICAgICAgICBfZGVzdHJveUV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lCdXR0b25CYXJFdmVudEhhbmRsZXJzKCk7CiAgICAgICAgICAgIG9wdGlvbnMuZmlsZXNDb250YWluZXIKICAgICAgICAgICAgICAgIC51bmRlbGVnYXRlKCcuc3RhcnQgYnV0dG9uJywgJ2NsaWNrLicgKyBvcHRpb25zLm5hbWVzcGFjZSkKICAgICAgICAgICAgICAgIC51bmRlbGVnYXRlKCcuY2FuY2VsIGJ1dHRvbicsICdjbGljay4nICsgb3B0aW9ucy5uYW1lc3BhY2UpCiAgICAgICAgICAgICAgICAudW5kZWxlZ2F0ZSgnLmRlbGV0ZSBidXR0b24nLCAnY2xpY2suJyArIG9wdGlvbnMubmFtZXNwYWNlKTsKICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5fZGVzdHJveUV2ZW50SGFuZGxlcnMuY2FsbCh0aGlzKTsKICAgICAgICB9LAoKICAgICAgICBfZW5hYmxlRmlsZUlucHV0QnV0dG9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCcpCiAgICAgICAgICAgICAgICAucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSkKICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKICAgICAgICB9LAoKICAgICAgICBfZGlzYWJsZUZpbGVJbnB1dEJ1dHRvbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGVpbnB1dC1idXR0b24gaW5wdXQnKQogICAgICAgICAgICAgICAgLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSkKICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKICAgICAgICB9LAoKICAgICAgICBfaW5pdFRlbXBsYXRlczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgb3B0aW9ucy50ZW1wbGF0ZXNDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KAogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lci5wcm9wKCdub2RlTmFtZScpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICh0bXBsKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy51cGxvYWRUZW1wbGF0ZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRUZW1wbGF0ZSA9IHRtcGwob3B0aW9ucy51cGxvYWRUZW1wbGF0ZUlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRvd25sb2FkVGVtcGxhdGVJZCkgewogICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZG93bmxvYWRUZW1wbGF0ZSA9IHRtcGwob3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlSWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRGaWxlc0NvbnRhaW5lcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsZXNDb250YWluZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZXMnKTsKICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuZmlsZXNDb250YWluZXIgaW5zdGFuY2VvZiAkKSkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lciA9ICQob3B0aW9ucy5maWxlc0NvbnRhaW5lcik7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfaW5pdFNwZWNpYWxPcHRpb25zOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHBhcmVudFdpZGdldC5wcm90b3R5cGUuX2luaXRTcGVjaWFsT3B0aW9ucy5jYWxsKHRoaXMpOwogICAgICAgICAgICB0aGlzLl9pbml0RmlsZXNDb250YWluZXIoKTsKICAgICAgICAgICAgdGhpcy5faW5pdFRlbXBsYXRlcygpOwogICAgICAgIH0sCgogICAgICAgIF9jcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5fY3JlYXRlLmNhbGwodGhpcyk7CiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPcHRpb25zTGlzdC5wdXNoKAogICAgICAgICAgICAgICAgJ2ZpbGVzQ29udGFpbmVyJywKICAgICAgICAgICAgICAgICd1cGxvYWRUZW1wbGF0ZUlkJywKICAgICAgICAgICAgICAgICdkb3dubG9hZFRlbXBsYXRlSWQnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICghJC5ibHVlaW1wRlApIHsKICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZSA9ICQuRGVmZXJyZWQoKS5yZXNvbHZlV2l0aCh0aGlzKS5wcm9taXNlKCk7CiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5lbmFibGUuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJ2lucHV0LCBidXR0b24nKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICAgdGhpcy5fZW5hYmxlRmlsZUlucHV0QnV0dG9uKCk7CiAgICAgICAgfSwKCiAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZCgnaW5wdXQsIGJ1dHRvbicpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVGaWxlSW5wdXRCdXR0b24oKTsKICAgICAgICAgICAgcGFyZW50V2lkZ2V0LnByb3RvdHlwZS5kaXNhYmxlLmNhbGwodGhpcyk7CiAgICAgICAgfQoKICAgIH0pOwoKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.fileupload.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiA1LjExLjIKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi8qanNsaW50IG5vbWVuOiB0cnVlLCB1bnBhcmFtOiB0cnVlLCByZWdleHA6IHRydWUgKi8KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50LCBCbG9iLCBGb3JtRGF0YSwgbG9jYXRpb24gKi8KCihmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbCiAgICAgICAgICAgICdqcXVlcnknLAogICAgICAgICAgICAnanF1ZXJ5LnVpLndpZGdldCcKICAgICAgICBdLCBmYWN0b3J5KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBUaGUgRmlsZVJlYWRlciBBUEkgaXMgbm90IGFjdHVhbGx5IHVzZWQsIGJ1dCB3b3JrcyBhcyBmZWF0dXJlIGRldGVjdGlvbiwKICAgIC8vIGFzIGUuZy4gU2FmYXJpIHN1cHBvcnRzIFhIUiBmaWxlIHVwbG9hZHMgdmlhIHRoZSBGb3JtRGF0YSBBUEksCiAgICAvLyBidXQgbm90IG5vbi1tdWx0aXBhcnQgWEhSIGZpbGUgdXBsb2FkczoKICAgICQuc3VwcG9ydC54aHJGaWxlVXBsb2FkID0gISEod2luZG93LlhNTEh0dHBSZXF1ZXN0VXBsb2FkICYmIHdpbmRvdy5GaWxlUmVhZGVyKTsKICAgICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQgPSAhIXdpbmRvdy5Gb3JtRGF0YTsKCiAgICAvLyBUaGUgZmlsZXVwbG9hZCB3aWRnZXQgbGlzdGVucyBmb3IgY2hhbmdlIGV2ZW50cyBvbiBmaWxlIGlucHV0IGZpZWxkcyBkZWZpbmVkCiAgICAvLyB2aWEgZmlsZUlucHV0IHNldHRpbmcgYW5kIHBhc3RlIG9yIGRyb3AgZXZlbnRzIG9mIHRoZSBnaXZlbiBkcm9wWm9uZS4KICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGpRdWVyeSBXaWRnZXQgbWV0aG9kcywgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0CiAgICAvLyBleHBvc2VzIHRoZSAiYWRkIiBhbmQgInNlbmQiIG1ldGhvZHMsIHRvIGFkZCBvciBkaXJlY3RseSBzZW5kIGZpbGVzIHVzaW5nCiAgICAvLyB0aGUgZmlsZXVwbG9hZCBBUEkuCiAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIHBhc3RlLCBkcmFnICYgZHJvcCBvcgogICAgLy8gImFkZCIgbWV0aG9kIGFyZSB1cGxvYWRlZCBpbW1lZGlhdGVseSwgYnV0IGl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlCiAgICAvLyB0aGUgImFkZCIgY2FsbGJhY2sgb3B0aW9uIHRvIHF1ZXVlIGZpbGUgdXBsb2Fkcy4KICAgICQud2lkZ2V0KCdibHVlaW1wLmZpbGV1cGxvYWQnLCB7CgogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgLy8gVGhlIG5hbWVzcGFjZSB1c2VkIGZvciBldmVudCBoYW5kbGVyIGJpbmRpbmcgb24gdGhlIGRyb3Bab25lIGFuZAogICAgICAgICAgICAvLyBmaWxlSW5wdXQgY29sbGVjdGlvbnMuCiAgICAgICAgICAgIC8vIElmIG5vdCBzZXQsIHRoZSBuYW1lIG9mIHRoZSB3aWRnZXQgKCJmaWxldXBsb2FkIikgaXMgdXNlZC4KICAgICAgICAgICAgbmFtZXNwYWNlOiB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIFRoZSBkcm9wIHRhcmdldCBjb2xsZWN0aW9uLCBieSB0aGUgZGVmYXVsdCB0aGUgY29tcGxldGUgZG9jdW1lbnQuCiAgICAgICAgICAgIC8vIFNldCB0byBudWxsIG9yIGFuIGVtcHR5IGNvbGxlY3Rpb24gdG8gZGlzYWJsZSBkcmFnICYgZHJvcCBzdXBwb3J0OgogICAgICAgICAgICBkcm9wWm9uZTogJChkb2N1bWVudCksCiAgICAgICAgICAgIC8vIFRoZSBmaWxlIGlucHV0IGZpZWxkIGNvbGxlY3Rpb24sIHRoYXQgaXMgbGlzdGVuZWQgZm9yIGNoYW5nZSBldmVudHMuCiAgICAgICAgICAgIC8vIElmIHVuZGVmaW5lZCwgaXQgaXMgc2V0IHRvIHRoZSBmaWxlIGlucHV0IGZpZWxkcyBpbnNpZGUKICAgICAgICAgICAgLy8gb2YgdGhlIHdpZGdldCBlbGVtZW50IG9uIHBsdWdpbiBpbml0aWFsaXphdGlvbi4KICAgICAgICAgICAgLy8gU2V0IHRvIG51bGwgb3IgYW4gZW1wdHkgY29sbGVjdGlvbiB0byBkaXNhYmxlIHRoZSBjaGFuZ2UgbGlzdGVuZXIuCiAgICAgICAgICAgIGZpbGVJbnB1dDogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCB0aGUgZmlsZSBpbnB1dCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIGEgY2xvbmUgYWZ0ZXIKICAgICAgICAgICAgLy8gZWFjaCBpbnB1dCBmaWVsZCBjaGFuZ2UgZXZlbnQuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGlmcmFtZSB0cmFuc3BvcnQKICAgICAgICAgICAgLy8gcXVldWVzIGFuZCBhbGxvd3MgY2hhbmdlIGV2ZW50cyB0byBiZSBmaXJlZCBmb3IgdGhlIHNhbWUgZmlsZQogICAgICAgICAgICAvLyBzZWxlY3Rpb24sIGJ1dCBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBmYWxzZToKICAgICAgICAgICAgcmVwbGFjZUZpbGVJbnB1dDogdHJ1ZSwKICAgICAgICAgICAgLy8gVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgZmlsZSBmb3JtIGRhdGEgKHRoZSByZXF1ZXN0IGFyZ3VtZW50IG5hbWUpLgogICAgICAgICAgICAvLyBJZiB1bmRlZmluZWQgb3IgZW1wdHksIHRoZSBuYW1lIHByb3BlcnR5IG9mIHRoZSBmaWxlIGlucHV0IGZpZWxkIGlzCiAgICAgICAgICAgIC8vIHVzZWQsIG9yICJmaWxlc1tdIiBpZiB0aGUgZmlsZSBpbnB1dCBuYW1lIHByb3BlcnR5IGlzIGFsc28gZW1wdHksCiAgICAgICAgICAgIC8vIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzOgogICAgICAgICAgICBwYXJhbU5hbWU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZWFjaCBmaWxlIG9mIGEgc2VsZWN0aW9uIGlzIHVwbG9hZGVkIHVzaW5nIGFuIGluZGl2aWR1YWwKICAgICAgICAgICAgLy8gcmVxdWVzdCBmb3IgWEhSIHR5cGUgdXBsb2Fkcy4gU2V0IHRvIGZhbHNlIHRvIHVwbG9hZCBmaWxlCiAgICAgICAgICAgIC8vIHNlbGVjdGlvbnMgaW4gb25lIHJlcXVlc3QgZWFjaDoKICAgICAgICAgICAgc2luZ2xlRmlsZVVwbG9hZHM6IHRydWUsCiAgICAgICAgICAgIC8vIFRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZmlsZXMgdXBsb2FkZWQgd2l0aCBvbmUgWEhSIHJlcXVlc3QsCiAgICAgICAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOgogICAgICAgICAgICBsaW1pdE11bHRpRmlsZVVwbG9hZHM6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gaXNzdWUgYWxsIGZpbGUgdXBsb2FkIHJlcXVlc3RzCiAgICAgICAgICAgIC8vIGluIGEgc2VxdWVudGlhbCBvcmRlcjoKICAgICAgICAgICAgc2VxdWVudGlhbFVwbG9hZHM6IGZhbHNlLAogICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXBsb2FkcywKICAgICAgICAgICAgLy8gc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIDA6CiAgICAgICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gZm9yY2UgaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICBmb3JjZUlmcmFtZVRyYW5zcG9ydDogZmFsc2UsCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0aGUgbG9jYXRpb24gb2YgYSByZWRpcmVjdCB1cmwgb24gdGhlCiAgICAgICAgICAgIC8vIG9yaWdpbiBzZXJ2ZXIsIGZvciBjcm9zcy1kb21haW4gaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICByZWRpcmVjdDogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSByZWRpcmVjdCB1cmwsIHNlbnQgYXMgcGFydCBvZiB0aGUgZm9ybQogICAgICAgICAgICAvLyBkYXRhIGFuZCBzZXQgdG8gJ3JlZGlyZWN0JyBpZiB0aGlzIG9wdGlvbiBpcyBlbXB0eToKICAgICAgICAgICAgcmVkaXJlY3RQYXJhbU5hbWU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHBvc3RNZXNzYWdlIHdpbmRvdywKICAgICAgICAgICAgLy8gdG8gZW5hYmxlIHBvc3RNZXNzYWdlIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICBwb3N0TWVzc2FnZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBYSFIgZmlsZSB1cGxvYWRzIGFyZSBzZW50IGFzIG11bHRpcGFydC9mb3JtLWRhdGEuCiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGlzIGFsd2F5cyB1c2luZyBtdWx0aXBhcnQvZm9ybS1kYXRhLgogICAgICAgICAgICAvLyBTZXQgdG8gZmFsc2UgdG8gZW5hYmxlIG5vbi1tdWx0aXBhcnQgWEhSIHVwbG9hZHM6CiAgICAgICAgICAgIG11bHRpcGFydDogdHJ1ZSwKICAgICAgICAgICAgLy8gVG8gdXBsb2FkIGxhcmdlIGZpbGVzIGluIHNtYWxsZXIgY2h1bmtzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24KICAgICAgICAgICAgLy8gdG8gYSBwcmVmZXJyZWQgbWF4aW11bSBjaHVuayBzaXplLiBJZiBzZXQgdG8gMCwgbnVsbCBvciB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIG9yIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIEJsb2IgQVBJLCBmaWxlcyB3aWxsCiAgICAgICAgICAgIC8vIGJlIHVwbG9hZGVkIGFzIGEgd2hvbGUuCiAgICAgICAgICAgIG1heENodW5rU2l6ZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBXaGVuIGEgbm9uLW11bHRpcGFydCB1cGxvYWQgb3IgYSBjaHVua2VkIG11bHRpcGFydCB1cGxvYWQgaGFzIGJlZW4KICAgICAgICAgICAgLy8gYWJvcnRlZCwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSB1cGxvYWQgYnkgc2V0dGluZwogICAgICAgICAgICAvLyBpdCB0byB0aGUgc2l6ZSBvZiB0aGUgYWxyZWFkeSB1cGxvYWRlZCBieXRlcy4gVGhpcyBvcHRpb24gaXMgbW9zdAogICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiBtb2RpZnlpbmcgdGhlIG9wdGlvbnMgb2JqZWN0IGluc2lkZSBvZiB0aGUgImFkZCIgb3IKICAgICAgICAgICAgLy8gInNlbmQiIGNhbGxiYWNrcywgYXMgdGhlIG9wdGlvbnMgYXJlIGNsb25lZCBmb3IgZWFjaCBmaWxlIHVwbG9hZC4KICAgICAgICAgICAgdXBsb2FkZWRCeXRlczogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBmaWxlIHVwbG9hZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICAgICAgICAgLy8gZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uLiBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2UgdG8KICAgICAgICAgICAgLy8gcHJldmVudCByZWNhbGN1bGF0aW5nIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgZGF0YToKICAgICAgICAgICAgcmVjYWxjdWxhdGVQcm9ncmVzczogdHJ1ZSwKICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBhbmQgdHJpZ2dlciBwcm9ncmVzcyBldmVudHM6CiAgICAgICAgICAgIHByb2dyZXNzSW50ZXJ2YWw6IDEwMCwKICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwcm9ncmVzcyBiaXRyYXRlOgogICAgICAgICAgICBiaXRyYXRlSW50ZXJ2YWw6IDUwMCwKCiAgICAgICAgICAgIC8vIEFkZGl0aW9uYWwgZm9ybSBkYXRhIHRvIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgZmlsZSB1cGxvYWRzIGNhbiBiZSBzZXQKICAgICAgICAgICAgLy8gdXNpbmcgdGhpcyBvcHRpb24sIHdoaWNoIGFjY2VwdHMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5hbWUgYW5kCiAgICAgICAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXMsIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHN1Y2ggYW4gYXJyYXksIGEgRm9ybURhdGEKICAgICAgICAgICAgLy8gb2JqZWN0IChmb3IgWEhSIGZpbGUgdXBsb2FkcyksIG9yIGEgc2ltcGxlIG9iamVjdC4KICAgICAgICAgICAgLy8gVGhlIGZvcm0gb2YgdGhlIGZpcnN0IGZpbGVJbnB1dCBpcyBnaXZlbiBhcyBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uOgogICAgICAgICAgICBmb3JtRGF0YTogZnVuY3Rpb24gKGZvcm0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmb3JtLnNlcmlhbGl6ZUFycmF5KCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBUaGUgYWRkIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgc29vbiBhcyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGZpbGV1cGxvYWQKICAgICAgICAgICAgLy8gd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wLCBwYXN0ZSBvciBhZGQgQVBJIGNhbGwpLgogICAgICAgICAgICAvLyBJZiB0aGUgc2luZ2xlRmlsZVVwbG9hZHMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY2FsbGJhY2sgd2lsbCBiZQogICAgICAgICAgICAvLyBjYWxsZWQgb25jZSBmb3IgZWFjaCBmaWxlIGluIHRoZSBzZWxlY3Rpb24gZm9yIFhIUiBmaWxlIHVwbGFvZHMsIGVsc2UKICAgICAgICAgICAgLy8gb25jZSBmb3IgZWFjaCBmaWxlIHNlbGVjdGlvbi4KICAgICAgICAgICAgLy8gVGhlIHVwbG9hZCBzdGFydHMgd2hlbiB0aGUgc3VibWl0IG1ldGhvZCBpcyBpbnZva2VkIG9uIHRoZSBkYXRhIHBhcmFtZXRlci4KICAgICAgICAgICAgLy8gVGhlIGRhdGEgb2JqZWN0IGNvbnRhaW5zIGEgZmlsZXMgcHJvcGVydHkgaG9sZGluZyB0aGUgYWRkZWQgZmlsZXMKICAgICAgICAgICAgLy8gYW5kIGFsbG93cyB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLgogICAgICAgICAgICAvLyBMaXN0ZW5lcnMgZm9yIHRoaXMgY2FsbGJhY2sgY2FuIGFsc28gYmUgYm91bmQgdGhlIGZvbGxvd2luZyB3YXk6CiAgICAgICAgICAgIC8vIC5iaW5kKCdmaWxldXBsb2FkYWRkJywgZnVuYyk7CiAgICAgICAgICAgIC8vIGRhdGEuc3VibWl0KCkgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGFuZCBhbGxvd3MgdG8gYXR0YWNoIGFkZGl0aW9uYWwKICAgICAgICAgICAgLy8gaGFuZGxlcnMgdXNpbmcgalF1ZXJ5J3MgRGVmZXJyZWQgY2FsbGJhY2tzOgogICAgICAgICAgICAvLyBkYXRhLnN1Ym1pdCgpLmRvbmUoZnVuYykuZmFpbChmdW5jKS5hbHdheXMoZnVuYyk7CiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBPdGhlciBjYWxsYmFja3M6CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3VibWl0IGV2ZW50IG9mIGVhY2ggZmlsZSB1cGxvYWQ6CiAgICAgICAgICAgIC8vIHN1Ym1pdDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN1Ym1pdCcsIGZ1bmMpOwogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN0YXJ0IG9mIGVhY2ggZmlsZSB1cGxvYWQgcmVxdWVzdDoKICAgICAgICAgICAgLy8gc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHNlbmQnLCBmdW5jKTsKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgdXBsb2FkczoKICAgICAgICAgICAgLy8gZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRvbmUnLCBmdW5jKTsKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIHVwbG9hZHM6CiAgICAgICAgICAgIC8vIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRmYWlsJywgZnVuYyk7CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjb21wbGV0ZWQgKHN1Y2Nlc3MsIGFib3J0IG9yIGVycm9yKSByZXF1ZXN0czoKICAgICAgICAgICAgLy8gYWx3YXlzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkYWx3YXlzJywgZnVuYyk7CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOgogICAgICAgICAgICAvLyBwcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHByb2dyZXNzJywgZnVuYyk7CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBnbG9iYWwgdXBsb2FkIHByb2dyZXNzIGV2ZW50czoKICAgICAgICAgICAgLy8gcHJvZ3Jlc3NhbGw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwcm9ncmVzc2FsbCcsIGZ1bmMpOwogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdGFydCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDoKICAgICAgICAgICAgLy8gc3RhcnQ6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdGFydCcsIGZ1bmMpOwogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdG9wLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6CiAgICAgICAgICAgIC8vIHN0b3A6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdG9wJywgZnVuYyk7CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjaGFuZ2UgZXZlbnRzIG9mIHRoZSBmaWxlSW5wdXQgY29sbGVjdGlvbjoKICAgICAgICAgICAgLy8gY2hhbmdlOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2hhbmdlJywgZnVuYyk7CiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBwYXN0ZSBldmVudHMgdG8gdGhlIGRyb3Bab25lIGNvbGxlY3Rpb246CiAgICAgICAgICAgIC8vIHBhc3RlOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkcGFzdGUnLCBmdW5jKTsKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGRyb3AgZXZlbnRzIG9mIHRoZSBkcm9wWm9uZSBjb2xsZWN0aW9uOgogICAgICAgICAgICAvLyBkcm9wOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZHJvcCcsIGZ1bmMpOwogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZHJhZ292ZXIgZXZlbnRzIG9mIHRoZSBkcm9wWm9uZSBjb2xsZWN0aW9uOgogICAgICAgICAgICAvLyBkcmFnb3ZlcjogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyYWdvdmVyJywgZnVuYyk7CgogICAgICAgICAgICAvLyBUaGUgcGx1Z2luIG9wdGlvbnMgYXJlIHVzZWQgYXMgc2V0dGluZ3Mgb2JqZWN0IGZvciB0aGUgYWpheCBjYWxscy4KICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgalF1ZXJ5IGFqYXggc2V0dGluZ3MgcmVxdWlyZWQgZm9yIHRoZSBmaWxlIHVwbG9hZHM6CiAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSwKICAgICAgICAgICAgY29udGVudFR5cGU6IGZhbHNlLAogICAgICAgICAgICBjYWNoZTogZmFsc2UKICAgICAgICB9LAoKICAgICAgICAvLyBBIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHJlcXVpcmUgYSByZWZyZXNoIGFmdGVyIGFzc2lnbmluZyBhIG5ldyB2YWx1ZToKICAgICAgICBfcmVmcmVzaE9wdGlvbnNMaXN0OiBbCiAgICAgICAgICAgICduYW1lc3BhY2UnLAogICAgICAgICAgICAnZHJvcFpvbmUnLAogICAgICAgICAgICAnZmlsZUlucHV0JywKICAgICAgICAgICAgJ211bHRpcGFydCcsCiAgICAgICAgICAgICdmb3JjZUlmcmFtZVRyYW5zcG9ydCcKICAgICAgICBdLAoKICAgICAgICBfQml0cmF0ZVRpbWVyOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gKyhuZXcgRGF0ZSgpKTsKICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSAwOwogICAgICAgICAgICB0aGlzLmJpdHJhdGUgPSAwOwogICAgICAgICAgICB0aGlzLmdldEJpdHJhdGUgPSBmdW5jdGlvbiAobm93LCBsb2FkZWQsIGludGVydmFsKSB7CiAgICAgICAgICAgICAgICB2YXIgdGltZURpZmYgPSBub3cgLSB0aGlzLnRpbWVzdGFtcDsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5iaXRyYXRlIHx8ICFpbnRlcnZhbCB8fCB0aW1lRGlmZiA+IGludGVydmFsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gKGxvYWRlZCAtIHRoaXMubG9hZGVkKSAqICgxMDAwIC8gdGltZURpZmYpICogODsKICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZCA9IGxvYWRlZDsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IG5vdzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJpdHJhdGU7CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgX2lzWEhSVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZm9yY2VJZnJhbWVUcmFuc3BvcnQgJiYKICAgICAgICAgICAgICAgICgoIW9wdGlvbnMubXVsdGlwYXJ0ICYmICQuc3VwcG9ydC54aHJGaWxlVXBsb2FkKSB8fAogICAgICAgICAgICAgICAgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCk7CiAgICAgICAgfSwKCiAgICAgICAgX2dldEZvcm1EYXRhOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICB2YXIgZm9ybURhdGE7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mb3JtRGF0YSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybURhdGEob3B0aW9ucy5mb3JtKTsKICAgICAgICAgICAgfQoJCQlpZiAoJC5pc0FycmF5KG9wdGlvbnMuZm9ybURhdGEpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YTsKICAgICAgICAgICAgfQoJCQlpZiAob3B0aW9ucy5mb3JtRGF0YSkgewogICAgICAgICAgICAgICAgZm9ybURhdGEgPSBbXTsKICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZvcm1EYXRhLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWV9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1EYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9LAoKICAgICAgICBfZ2V0VG90YWw6IGZ1bmN0aW9uIChmaWxlcykgewogICAgICAgICAgICB2YXIgdG90YWwgPSAwOwogICAgICAgICAgICAkLmVhY2goZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgewogICAgICAgICAgICAgICAgdG90YWwgKz0gZmlsZS5zaXplIHx8IDE7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gdG90YWw7CiAgICAgICAgfSwKCiAgICAgICAgX29uUHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHsKICAgICAgICAgICAgICAgIHZhciBub3cgPSArKG5ldyBEYXRlKCkpLAogICAgICAgICAgICAgICAgICAgIHRvdGFsLAogICAgICAgICAgICAgICAgICAgIGxvYWRlZDsKICAgICAgICAgICAgICAgIGlmIChkYXRhLl90aW1lICYmIGRhdGEucHJvZ3Jlc3NJbnRlcnZhbCAmJgogICAgICAgICAgICAgICAgICAgICAgICAobm93IC0gZGF0YS5fdGltZSA8IGRhdGEucHJvZ3Jlc3NJbnRlcnZhbCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgIT09IGUudG90YWwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhLl90aW1lID0gbm93OwogICAgICAgICAgICAgICAgdG90YWwgPSBkYXRhLnRvdGFsIHx8IHRoaXMuX2dldFRvdGFsKGRhdGEuZmlsZXMpOwogICAgICAgICAgICAgICAgbG9hZGVkID0gcGFyc2VJbnQoCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgLyBlLnRvdGFsICogKGRhdGEuY2h1bmtTaXplIHx8IHRvdGFsKSwKICAgICAgICAgICAgICAgICAgICAxMAogICAgICAgICAgICAgICAgKSArIChkYXRhLnVwbG9hZGVkQnl0ZXMgfHwgMCk7CiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkZWQgKz0gbG9hZGVkIC0gKGRhdGEubG9hZGVkIHx8IGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwKTsKICAgICAgICAgICAgICAgIGRhdGEubGVuZ3RoQ29tcHV0YWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICBkYXRhLmxvYWRlZCA9IGxvYWRlZDsKICAgICAgICAgICAgICAgIGRhdGEudG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICAgIGRhdGEuYml0cmF0ZSA9IGRhdGEuX2JpdHJhdGVUaW1lci5nZXRCaXRyYXRlKAogICAgICAgICAgICAgICAgICAgIG5vdywKICAgICAgICAgICAgICAgICAgICBsb2FkZWQsCiAgICAgICAgICAgICAgICAgICAgZGF0YS5iaXRyYXRlSW50ZXJ2YWwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIHByb2dyZXNzIGV2ZW50IHdpdGggYSB0b3RhbCBkYXRhIHByb3BlcnR5IHNldAogICAgICAgICAgICAgICAgLy8gdG8gdGhlIGZpbGUgc2l6ZShzKSBvZiB0aGUgY3VycmVudCB1cGxvYWQgYW5kIGEgbG9hZGVkIGRhdGEKICAgICAgICAgICAgICAgIC8vIHByb3BlcnR5IGNhbGN1bGF0ZWQgYWNjb3JkaW5nbHk6CiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdwcm9ncmVzcycsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBhIGdsb2JhbCBwcm9ncmVzcyBldmVudCBmb3IgYWxsIGN1cnJlbnQgZmlsZSB1cGxvYWRzLAogICAgICAgICAgICAgICAgLy8gaW5jbHVkaW5nIGFqYXggY2FsbHMgcXVldWVkIGZvciBzZXF1ZW50aWFsIGZpbGUgdXBsb2FkczoKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ3Byb2dyZXNzYWxsJywgZSwgewogICAgICAgICAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0aGlzLl9sb2FkZWQsCiAgICAgICAgICAgICAgICAgICAgdG90YWw6IHRoaXMuX3RvdGFsLAogICAgICAgICAgICAgICAgICAgIGJpdHJhdGU6IHRoaXMuX2JpdHJhdGVUaW1lci5nZXRCaXRyYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBub3csCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5iaXRyYXRlSW50ZXJ2YWwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9pbml0UHJvZ3Jlc3NMaXN0ZW5lcjogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgICAgICAgeGhyID0gb3B0aW9ucy54aHIgPyBvcHRpb25zLnhocigpIDogJC5hamF4U2V0dGluZ3MueGhyKCk7CiAgICAgICAgICAgIC8vIEFjY2Vzc3MgdG8gdGhlIG5hdGl2ZSBYSFIgb2JqZWN0IGlzIHJlcXVpcmVkIHRvIGFkZCBldmVudCBsaXN0ZW5lcnMKICAgICAgICAgICAgLy8gZm9yIHRoZSB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnQ6CiAgICAgICAgICAgIGlmICh4aHIudXBsb2FkKSB7CiAgICAgICAgICAgICAgICAkKHhoci51cGxvYWQpLmJpbmQoJ3Byb2dyZXNzJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb2UgPSBlLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9ncmVzcyBldmVudCBwcm9wZXJ0aWVzIGdldCBjb3BpZWQgb3ZlcjoKICAgICAgICAgICAgICAgICAgICBlLmxlbmd0aENvbXB1dGFibGUgPSBvZS5sZW5ndGhDb21wdXRhYmxlOwogICAgICAgICAgICAgICAgICAgIGUubG9hZGVkID0gb2UubG9hZGVkOwogICAgICAgICAgICAgICAgICAgIGUudG90YWwgPSBvZS50b3RhbDsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vblByb2dyZXNzKGUsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBvcHRpb25zLnhociA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4geGhyOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9pbml0WEhSRGF0YTogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIGZvcm1EYXRhLAogICAgICAgICAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sCiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgbm9uLW11bHRpcGFydCBzZXR0aW5nIGlmIG5vdCBzdXBwb3J0ZWQ6CiAgICAgICAgICAgICAgICBtdWx0aXBhcnQgPSBvcHRpb25zLm11bHRpcGFydCB8fCAhJC5zdXBwb3J0LnhockZpbGVVcGxvYWQsCiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBvcHRpb25zLnBhcmFtTmFtZVswXTsKICAgICAgICAgICAgaWYgKCFtdWx0aXBhcnQgfHwgb3B0aW9ucy5ibG9iKSB7CiAgICAgICAgICAgICAgICAvLyBGb3Igbm9uLW11bHRpcGFydCB1cGxvYWRzIGFuZCBjaHVua2VkIHVwbG9hZHMsCiAgICAgICAgICAgICAgICAvLyBmaWxlIG1ldGEgZGF0YSBpcyBub3QgcGFydCBvZiB0aGUgcmVxdWVzdCBib2R5LAogICAgICAgICAgICAgICAgLy8gc28gd2UgdHJhbnNtaXQgdGhpcyBkYXRhIGFzIHBhcnQgb2YgdGhlIEhUVFAgaGVhZGVycy4KICAgICAgICAgICAgICAgIC8vIEZvciBjcm9zcyBkb21haW4gcmVxdWVzdHMsIHRoZXNlIGhlYWRlcnMgbXVzdCBiZSBhbGxvd2VkCiAgICAgICAgICAgICAgICAvLyB2aWEgQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyBvciByZW1vdmVkIHVzaW5nCiAgICAgICAgICAgICAgICAvLyB0aGUgYmVmb3JlU2VuZCBjYWxsYmFjazoKICAgICAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycyA9ICQuZXh0ZW5kKG9wdGlvbnMuaGVhZGVycywgewogICAgICAgICAgICAgICAgICAgICdYLUZpbGUtTmFtZSc6IGZpbGUubmFtZSwKICAgICAgICAgICAgICAgICAgICAnWC1GaWxlLVR5cGUnOiBmaWxlLnR5cGUsCiAgICAgICAgICAgICAgICAgICAgJ1gtRmlsZS1TaXplJzogZmlsZS5zaXplCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5ibG9iKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTm9uLWNodW5rZWQgbm9uLW11bHRpcGFydCB1cGxvYWQ6CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb250ZW50VHlwZSA9IGZpbGUudHlwZTsKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEgPSBmaWxlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbXVsdGlwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgLy8gQ2h1bmtlZCBub24tbXVsdGlwYXJ0IHVwbG9hZDoKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5ibG9iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtdWx0aXBhcnQgJiYgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCkgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cucG9zdE1lc3NhZ2UgZG9lcyBub3QgYWxsb3cgc2VuZGluZyBGb3JtRGF0YQogICAgICAgICAgICAgICAgICAgIC8vIG9iamVjdHMsIHNvIHdlIGp1c3QgYWRkIHRoZSBGaWxlL0Jsb2Igb2JqZWN0cyB0bwogICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtRGF0YSBhcnJheSBhbmQgbGV0IHRoZSBwb3N0TWVzc2FnZSB3aW5kb3cKICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIEZvcm1EYXRhIG9iamVjdCBvdXQgb2YgdGhpcyBhcnJheToKICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwYXJhbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9ucy5ibG9iCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbnMucGFyYW1OYW1lW2luZGV4XSB8fCBwYXJhbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZvcm1EYXRhIGluc3RhbmNlb2YgRm9ybURhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEgPSBvcHRpb25zLmZvcm1EYXRhOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaCh0aGlzLl9nZXRGb3JtRGF0YShvcHRpb25zKSwgZnVuY3Rpb24gKGluZGV4LCBmaWVsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkLm5hbWUsIGZpZWxkLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKHBhcmFtTmFtZSwgb3B0aW9ucy5ibG9iLCBmaWxlLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgb2JqZWN0cyBhcmUgYWxzbyBCbG9iIGluc3RhbmNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgYWxsb3dzIHRoZSB0ZXN0cyB0byBydW4gd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVtbXkgb2JqZWN0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgQmxvYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWVbaW5kZXhdIHx8IHBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gZm9ybURhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gQmxvYiByZWZlcmVuY2UgaXMgbm90IG5lZWRlZCBhbnltb3JlLCBmcmVlIG1lbW9yeToKICAgICAgICAgICAgb3B0aW9ucy5ibG9iID0gbnVsbDsKICAgICAgICB9LAoKICAgICAgICBfaW5pdElmcmFtZVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBpZnJhbWUgZW5hYmxlcyB0aGUgaWZyYW1lIHRyYW5zcG9ydDoKICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZSA9ICdpZnJhbWUgJyArIChvcHRpb25zLmRhdGFUeXBlIHx8ICcnKTsKICAgICAgICAgICAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgYWNjZXB0cyBhIHNlcmlhbGl6ZWQgYXJyYXkgYXMgZm9ybSBkYXRhOgogICAgICAgICAgICBvcHRpb25zLmZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7CiAgICAgICAgICAgIC8vIEFkZCByZWRpcmVjdCB1cmwgdG8gZm9ybSBkYXRhIG9uIGNyb3NzLWRvbWFpbiB1cGxvYWRzOgogICAgICAgICAgICBpZiAob3B0aW9ucy5yZWRpcmVjdCAmJiAkKCc8YT48L2E+JykucHJvcCgnaHJlZicsIG9wdGlvbnMudXJsKQogICAgICAgICAgICAgICAgICAgIC5wcm9wKCdob3N0JykgIT09IGxvY2F0aW9uLmhvc3QpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybURhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9ucy5yZWRpcmVjdFBhcmFtTmFtZSB8fCAncmVkaXJlY3QnLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25zLnJlZGlyZWN0CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9pbml0RGF0YVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICBpZiAodGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2h1bmtlZFVwbG9hZChvcHRpb25zLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5kYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRYSFJEYXRhKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NMaXN0ZW5lcihvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnBvc3RNZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgZGF0YVR5cGUgdG8gcG9zdG1lc3NhZ2UgZW5hYmxlcyB0aGUKICAgICAgICAgICAgICAgICAgICAvLyBwb3N0TWVzc2FnZSB0cmFuc3BvcnQ6CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhVHlwZSA9ICdwb3N0bWVzc2FnZSAnICsgKG9wdGlvbnMuZGF0YVR5cGUgfHwgJycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5faW5pdElmcmFtZVNldHRpbmdzKG9wdGlvbnMsICdpZnJhbWUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9nZXRQYXJhbU5hbWU6IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgICAgIHZhciBmaWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KSwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IG9wdGlvbnMucGFyYW1OYW1lOwogICAgICAgICAgICBpZiAoIXBhcmFtTmFtZSkgewogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW107CiAgICAgICAgICAgICAgICBmaWxlSW5wdXQuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXScsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAoaW5wdXQucHJvcCgnZmlsZXMnKSB8fCBbMV0pLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUucHVzaChuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKCFwYXJhbU5hbWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gW2ZpbGVJbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICghJC5pc0FycmF5KHBhcmFtTmFtZSkpIHsKICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IFtwYXJhbU5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBwYXJhbU5hbWU7CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRGb3JtU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgICAgIC8vIFJldHJpZXZlIG1pc3Npbmcgb3B0aW9ucyBmcm9tIHRoZSBpbnB1dCBmaWVsZCBhbmQgdGhlCiAgICAgICAgICAgIC8vIGFzc29jaWF0ZWQgZm9ybSwgaWYgYXZhaWxhYmxlOgogICAgICAgICAgICBpZiAoIW9wdGlvbnMuZm9ybSB8fCAhb3B0aW9ucy5mb3JtLmxlbmd0aCkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtID0gJChvcHRpb25zLmZpbGVJbnB1dC5wcm9wKCdmb3JtJykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1OYW1lID0gdGhpcy5fZ2V0UGFyYW1OYW1lKG9wdGlvbnMpOwogICAgICAgICAgICBpZiAoIW9wdGlvbnMudXJsKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMuZm9ybS5wcm9wKCdhY3Rpb24nKSB8fCBsb2NhdGlvbi5ocmVmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIG11c3QgYmUgIlBPU1QiIG9yICJQVVQiOgogICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAob3B0aW9ucy50eXBlIHx8IG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSB8fCAnJykKICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlICE9PSAnUE9TVCcgJiYgb3B0aW9ucy50eXBlICE9PSAnUFVUJykgewogICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2dldEFKQVhTZXR0aW5nczogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBkYXRhKTsKICAgICAgICAgICAgdGhpcy5faW5pdEZvcm1TZXR0aW5ncyhvcHRpb25zKTsKICAgICAgICAgICAgdGhpcy5faW5pdERhdGFTZXR0aW5ncyhvcHRpb25zKTsKICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnM7CiAgICAgICAgfSwKCiAgICAgICAgLy8gTWFwcyBqcVhIUiBjYWxsYmFja3MgdG8gdGhlIGVxdWl2YWxlbnQKICAgICAgICAvLyBtZXRob2RzIG9mIHRoZSBnaXZlbiBQcm9taXNlIG9iamVjdDoKICAgICAgICBfZW5oYW5jZVByb21pc2U6IGZ1bmN0aW9uIChwcm9taXNlKSB7CiAgICAgICAgICAgIHByb21pc2Uuc3VjY2VzcyA9IHByb21pc2UuZG9uZTsKICAgICAgICAgICAgcHJvbWlzZS5lcnJvciA9IHByb21pc2UuZmFpbDsKICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZSA9IHByb21pc2UuYWx3YXlzOwogICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICB9LAoKICAgICAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZW5oYW5jZWQgd2l0aAogICAgICAgIC8vIHRoZSBqcVhIUiBtZXRob2RzIGFib3J0LCBzdWNjZXNzLCBlcnJvciBhbmQgY29tcGxldGU6CiAgICAgICAgX2dldFhIUlByb21pc2U6IGZ1bmN0aW9uIChyZXNvbHZlT3JSZWplY3QsIGNvbnRleHQsIGFyZ3MpIHsKICAgICAgICAgICAgdmFyIGRmZCA9ICQuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpOwogICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCB0aGlzLm9wdGlvbnMuY29udGV4dCB8fCBwcm9taXNlOwogICAgICAgICAgICBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgoY29udGV4dCwgYXJncyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgZGZkLnJlamVjdFdpdGgoY29udGV4dCwgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGRmZC5wcm9taXNlOwogICAgICAgICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gVXBsb2FkcyBhIGZpbGUgaW4gbXVsdGlwbGUsIHNlcXVlbnRpYWwgcmVxdWVzdHMKICAgICAgICAvLyBieSBzcGxpdHRpbmcgdGhlIGZpbGUgdXAgaW4gbXVsdGlwbGUgYmxvYiBjaHVua3MuCiAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdHJ1ZSwgb25seSB0ZXN0cyBpZiB0aGUgZmlsZQogICAgICAgIC8vIHNob3VsZCBiZSB1cGxvYWRlZCBpbiBjaHVua3MsIGJ1dCBkb2VzIG5vdCBpbnZva2UgYW55CiAgICAgICAgLy8gdXBsb2FkIHJlcXVlc3RzOgogICAgICAgIF9jaHVua2VkVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucywgdGVzdE9ubHkpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sCiAgICAgICAgICAgICAgICBmcyA9IGZpbGUuc2l6ZSwKICAgICAgICAgICAgICAgIHViID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzIHx8IDAsCiAgICAgICAgICAgICAgICBtY3MgPSBvcHRpb25zLm1heENodW5rU2l6ZSB8fCBmcywKICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgQmxvYiBtZXRob2RzIHdpdGggdGhlIHNsaWNlIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIFczQyBCbG9iIEFQSSBzcGVjaWZpY2F0aW9uOgogICAgICAgICAgICAgICAgc2xpY2UgPSBmaWxlLndlYmtpdFNsaWNlIHx8IGZpbGUubW96U2xpY2UgfHwgZmlsZS5zbGljZSwKICAgICAgICAgICAgICAgIHVwbG9hZCwKICAgICAgICAgICAgICAgIG4sCiAgICAgICAgICAgICAgICBqcVhIUiwKICAgICAgICAgICAgICAgIHBpcGU7CiAgICAgICAgICAgIGlmICghKHRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpICYmIHNsaWNlICYmICh1YiB8fCBtY3MgPCBmcykpIHx8CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRlc3RPbmx5KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodWIgPj0gZnMpIHsKICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSAndXBsb2FkZWRCeXRlcyc7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZSgKICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgW251bGwsICdlcnJvcicsIGZpbGUuZXJyb3JdCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIG4gaXMgdGhlIG51bWJlciBvZiBibG9icyB0byB1cGxvYWQsCiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZWQgdmlhIGZpbGVzaXplLCB1cGxvYWRlZCBieXRlcyBhbmQgbWF4IGNodW5rIHNpemU6CiAgICAgICAgICAgIG4gPSBNYXRoLmNlaWwoKGZzIC0gdWIpIC8gbWNzKTsKICAgICAgICAgICAgLy8gVGhlIGNodW5rIHVwbG9hZCBtZXRob2QgYWNjZXB0aW5nIHRoZSBjaHVuayBudW1iZXIgYXMgcGFyYW1ldGVyOgogICAgICAgICAgICB1cGxvYWQgPSBmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2dldFhIUlByb21pc2UodHJ1ZSwgb3B0aW9ucy5jb250ZXh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIFVwbG9hZCB0aGUgYmxvYnMgaW4gc2VxdWVudGlhbCBvcmRlcjoKICAgICAgICAgICAgICAgIHJldHVybiB1cGxvYWQoaSAtPSAxKS5waXBlKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAvLyBDbG9uZSB0aGUgb3B0aW9ucyBvYmplY3QgZm9yIGVhY2ggY2h1bmsgdXBsb2FkOgogICAgICAgICAgICAgICAgICAgIHZhciBvID0gJC5leHRlbmQoe30sIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIG8uYmxvYiA9IHNsaWNlLmNhbGwoCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHViICsgaSAqIG1jcywKICAgICAgICAgICAgICAgICAgICAgICAgdWIgKyAoaSArIDEpICogbWNzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBjaHVuayBzaXplLCBhcyB0aGUgYmxvYiBpdHNlbGYKICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGRlcmVmZXJlbmNlZCBhZnRlciBkYXRhIHByb2Nlc3Npbmc6CiAgICAgICAgICAgICAgICAgICAgby5jaHVua1NpemUgPSBvLmJsb2Iuc2l6ZTsKICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIHRoZSB1cGxvYWQgZGF0YSAodGhlIGJsb2IgYW5kIHBvdGVudGlhbCBmb3JtIGRhdGEpOgogICAgICAgICAgICAgICAgICAgIHRoYXQuX2luaXRYSFJEYXRhKG8pOwogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBwcm9ncmVzcyBsaXN0ZW5lcnMgZm9yIHRoaXMgY2h1bmsgdXBsb2FkOgogICAgICAgICAgICAgICAgICAgIHRoYXQuX2luaXRQcm9ncmVzc0xpc3RlbmVyKG8pOwogICAgICAgICAgICAgICAgICAgIGpxWEhSID0gKCQuYWpheChvKSB8fCB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlLCBvLmNvbnRleHQpKQogICAgICAgICAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBwcm9ncmVzcyBldmVudCBpZiB1cGxvYWQgaXMgZG9uZSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIHByb2dyZXNzIGV2ZW50IGhhcyBiZWVuIGludm9rZWQgZm9yIHRoaXMgY2h1bms6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW8ubG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcygkLkV2ZW50KCdwcm9ncmVzcycsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiBvLmNodW5rU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IG8uY2h1bmtTaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gby51cGxvYWRlZEJ5dGVzICs9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jaHVua1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9OwogICAgICAgICAgICAvLyBSZXR1cm4gdGhlIHBpcGVkIFByb21pc2Ugb2JqZWN0LCBlbmhhbmNlZCB3aXRoIGFuIGFib3J0IG1ldGhvZCwKICAgICAgICAgICAgLy8gd2hpY2ggaXMgZGVsZWdhdGVkIHRvIHRoZSBqcVhIUiBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgdXBsb2FkLAogICAgICAgICAgICAvLyBhbmQganFYSFIgY2FsbGJhY2tzIG1hcHBlZCB0byB0aGUgZXF1aXZhbGVudCBQcm9taXNlIG1ldGhvZHM6CiAgICAgICAgICAgIHBpcGUgPSB1cGxvYWQobik7CiAgICAgICAgICAgIHBpcGUuYWJvcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHBpcGUpOwogICAgICAgIH0sCgogICAgICAgIF9iZWZvcmVTZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlID09PSAwKSB7CiAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gdXBsb2FkIHN0YXJ0cwogICAgICAgICAgICAgICAgLy8gYW5kIG5vIG90aGVyIHVwbG9hZHMgYXJlIGN1cnJlbnRseSBydW5uaW5nLAogICAgICAgICAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDoKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ3N0YXJ0Jyk7CiAgICAgICAgICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGdsb2JhbCBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOgogICAgICAgICAgICAgICAgdGhpcy5fYml0cmF0ZVRpbWVyID0gbmV3IHRoaXMuX0JpdHJhdGVUaW1lcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZSArPSAxOwogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOgogICAgICAgICAgICB0aGlzLl9sb2FkZWQgKz0gZGF0YS51cGxvYWRlZEJ5dGVzIHx8IDA7CiAgICAgICAgICAgIHRoaXMuX3RvdGFsICs9IHRoaXMuX2dldFRvdGFsKGRhdGEuZmlsZXMpOwogICAgICAgIH0sCgogICAgICAgIF9vbkRvbmU6IGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGZvciBlYWNoIGlmcmFtZSBsb2FkOgogICAgICAgICAgICAgICAgdGhpcy5fb25Qcm9ncmVzcygkLkV2ZW50KCdwcm9ncmVzcycsIHsKICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIGxvYWRlZDogMSwKICAgICAgICAgICAgICAgICAgICB0b3RhbDogMQogICAgICAgICAgICAgICAgfSksIG9wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG9wdGlvbnMucmVzdWx0ID0gcmVzdWx0OwogICAgICAgICAgICBvcHRpb25zLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOwogICAgICAgICAgICBvcHRpb25zLmpxWEhSID0ganFYSFI7CiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2RvbmUnLCBudWxsLCBvcHRpb25zKTsKICAgICAgICB9LAoKICAgICAgICBfb25GYWlsOiBmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKSB7CiAgICAgICAgICAgIG9wdGlvbnMuanFYSFIgPSBqcVhIUjsKICAgICAgICAgICAgb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1czsKICAgICAgICAgICAgb3B0aW9ucy5lcnJvclRocm93biA9IGVycm9yVGhyb3duOwogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdmYWlsJywgbnVsbCwgb3B0aW9ucyk7CiAgICAgICAgICAgIGlmIChvcHRpb25zLnJlY2FsY3VsYXRlUHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZmFpbGVkIChlcnJvciBvciBhYm9ydCkgZmlsZSB1cGxvYWQgZnJvbQogICAgICAgICAgICAgICAgLy8gdGhlIGdsb2JhbCBwcm9ncmVzcyBjYWxjdWxhdGlvbjoKICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRlZCAtPSBvcHRpb25zLmxvYWRlZCB8fCBvcHRpb25zLnVwbG9hZGVkQnl0ZXMgfHwgMDsKICAgICAgICAgICAgICAgIHRoaXMuX3RvdGFsIC09IG9wdGlvbnMudG90YWwgfHwgdGhpcy5fZ2V0VG90YWwob3B0aW9ucy5maWxlcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfb25BbHdheXM6IGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5fYWN0aXZlIC09IDE7CiAgICAgICAgICAgIG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7CiAgICAgICAgICAgIGlmIChqcVhIUm9yRXJyb3IgJiYganFYSFJvckVycm9yLmFsd2F5cykgewogICAgICAgICAgICAgICAgb3B0aW9ucy5qcVhIUiA9IGpxWEhSb3JFcnJvcjsKICAgICAgICAgICAgICAgIG9wdGlvbnMucmVzdWx0ID0ganFYSFJvclJlc3VsdDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuanFYSFIgPSBqcVhIUm9yUmVzdWx0OwogICAgICAgICAgICAgICAgb3B0aW9ucy5lcnJvclRocm93biA9IGpxWEhSb3JFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdhbHdheXMnLCBudWxsLCBvcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gVGhlIHN0b3AgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYWxsIHVwbG9hZHMgaGF2ZQogICAgICAgICAgICAgICAgLy8gYmVlbiBjb21wbGV0ZWQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDoKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ3N0b3AnKTsKICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOgogICAgICAgICAgICAgICAgdGhpcy5fbG9hZGVkID0gdGhpcy5fdG90YWwgPSAwOwogICAgICAgICAgICAgICAgdGhpcy5fYml0cmF0ZVRpbWVyID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9vblNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIGpxWEhSLAogICAgICAgICAgICAgICAgc2xvdCwKICAgICAgICAgICAgICAgIHBpcGUsCiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhhdC5fZ2V0QUpBWFNldHRpbmdzKGRhdGEpLAogICAgICAgICAgICAgICAgc2VuZCA9IGZ1bmN0aW9uIChyZXNvbHZlLCBhcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2VuZGluZyArPSAxOwogICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aW1lciBmb3IgYml0cmF0ZSBwcm9ncmVzcyBjYWxjdWxhdGlvbjoKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLl9iaXRyYXRlVGltZXIgPSBuZXcgdGhhdC5fQml0cmF0ZVRpbWVyKCk7CiAgICAgICAgICAgICAgICAgICAganFYSFIgPSBqcVhIUiB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgIChyZXNvbHZlICE9PSBmYWxzZSAmJgogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdzZW5kJywgZSwgb3B0aW9ucykgIT09IGZhbHNlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICh0aGF0Ll9jaHVua2VkVXBsb2FkKG9wdGlvbnMpIHx8ICQuYWpheChvcHRpb25zKSkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UsIG9wdGlvbnMuY29udGV4dCwgYXJncykKICAgICAgICAgICAgICAgICAgICApLmRvbmUoZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Eb25lKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkZhaWwoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB9KS5hbHdheXMoZnVuY3Rpb24gKGpxWEhSb3JSZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSb3JFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9zZW5kaW5nIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uQWx3YXlzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFJvclJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRTdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUm9yRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPiB0aGF0Ll9zZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBxdWV1ZWQgdXBsb2FkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IGJlZW4gYWJvcnRlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0U2xvdCA9IHRoYXQuX3Nsb3RzLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNsb3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHRTbG90LmlzUmVqZWN0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2xvdC5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0U2xvdCA9IHRoYXQuX3Nsb3RzLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4ganFYSFI7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLl9iZWZvcmVTZW5kKGUsIG9wdGlvbnMpOwogICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlcXVlbnRpYWxVcGxvYWRzIHx8CiAgICAgICAgICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzICYmCiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPD0gdGhpcy5fc2VuZGluZykpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBzbG90ID0gJC5EZWZlcnJlZCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nsb3RzLnB1c2goc2xvdCk7CiAgICAgICAgICAgICAgICAgICAgcGlwZSA9IHNsb3QucGlwZShzZW5kKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcGlwZSA9ICh0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX3NlcXVlbmNlLnBpcGUoc2VuZCwgc2VuZCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSBwaXBlZCBQcm9taXNlIG9iamVjdCwgZW5oYW5jZWQgd2l0aCBhbiBhYm9ydCBtZXRob2QsCiAgICAgICAgICAgICAgICAvLyB3aGljaCBpcyBkZWxlZ2F0ZWQgdG8gdGhlIGpxWEhSIG9iamVjdCBvZiB0aGUgY3VycmVudCB1cGxvYWQsCiAgICAgICAgICAgICAgICAvLyBhbmQganFYSFIgY2FsbGJhY2tzIG1hcHBlZCB0byB0aGUgZXF1aXZhbGVudCBQcm9taXNlIG1ldGhvZHM6CiAgICAgICAgICAgICAgICBwaXBlLmFib3J0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW3VuZGVmaW5lZCwgJ2Fib3J0JywgJ2Fib3J0J107CiAgICAgICAgICAgICAgICAgICAgaWYgKCFqcVhIUikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC5yZWplY3RXaXRoKGFyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW5kKGZhbHNlLCBhcmdzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHBpcGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZW5kKCk7CiAgICAgICAgfSwKCiAgICAgICAgX29uQWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlLAogICAgICAgICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpLAogICAgICAgICAgICAgICAgbGltaXQgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkcywKICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKSwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlLAogICAgICAgICAgICAgICAgZmlsZVNldCwKICAgICAgICAgICAgICAgIGk7CiAgICAgICAgICAgIGlmICghKG9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgfHwgbGltaXQpIHx8CiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpKSB7CiAgICAgICAgICAgICAgICBmaWxlU2V0ID0gW2RhdGEuZmlsZXNdOwogICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0ID0gW3BhcmFtTmFtZV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgJiYgbGltaXQpIHsKICAgICAgICAgICAgICAgIGZpbGVTZXQgPSBbXTsKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtdOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGEuZmlsZXMubGVuZ3RoOyBpICs9IGxpbWl0KSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZVNldC5wdXNoKGRhdGEuZmlsZXMuc2xpY2UoaSwgaSArIGxpbWl0KSk7CiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWUuc2xpY2UoaSwgaSArIGxpbWl0KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtTmFtZVNsaWNlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTbGljZSA9IHBhcmFtTmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0LnB1c2gocGFyYW1OYW1lU2xpY2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcGFyYW1OYW1lU2V0ID0gcGFyYW1OYW1lOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRhdGEub3JpZ2luYWxGaWxlcyA9IGRhdGEuZmlsZXM7CiAgICAgICAgICAgICQuZWFjaChmaWxlU2V0IHx8IGRhdGEuZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkgewogICAgICAgICAgICAgICAgdmFyIG5ld0RhdGEgPSAkLmV4dGVuZCh7fSwgZGF0YSk7CiAgICAgICAgICAgICAgICBuZXdEYXRhLmZpbGVzID0gZmlsZVNldCA/IGVsZW1lbnQgOiBbZWxlbWVudF07CiAgICAgICAgICAgICAgICBuZXdEYXRhLnBhcmFtTmFtZSA9IHBhcmFtTmFtZVNldFtpbmRleF07CiAgICAgICAgICAgICAgICBuZXdEYXRhLnN1Ym1pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBuZXdEYXRhLmpxWEhSID0gdGhpcy5qcVhIUiA9CiAgICAgICAgICAgICAgICAgICAgICAgICh0aGF0Ll90cmlnZ2VyKCdzdWJtaXQnLCBlLCB0aGlzKSAhPT0gZmFsc2UpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uU2VuZChlLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5qcVhIUjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICByZXR1cm4gKHJlc3VsdCA9IHRoYXQuX3RyaWdnZXIoJ2FkZCcsIGUsIG5ld0RhdGEpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfSwKCiAgICAgICAgLy8gRmlsZSBOb3JtYWxpemF0aW9uIGZvciBHZWNrbyAxLjkuMSAoRmlyZWZveCAzLjUpIHN1cHBvcnQ6CiAgICAgICAgX25vcm1hbGl6ZUZpbGU6IGZ1bmN0aW9uIChpbmRleCwgZmlsZSkgewogICAgICAgICAgICBpZiAoZmlsZS5uYW1lID09PSB1bmRlZmluZWQgJiYgZmlsZS5zaXplID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIGZpbGUubmFtZSA9IGZpbGUuZmlsZU5hbWU7CiAgICAgICAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX3JlcGxhY2VGaWxlSW5wdXQ6IGZ1bmN0aW9uIChpbnB1dCkgewogICAgICAgICAgICB2YXIgaW5wdXRDbG9uZSA9IGlucHV0LmNsb25lKHRydWUpOwogICAgICAgICAgICAkKCc8Zm9ybT48L2Zvcm0+JykuYXBwZW5kKGlucHV0Q2xvbmUpWzBdLnJlc2V0KCk7CiAgICAgICAgICAgIC8vIERldGFjaGluZyBhbGxvd3MgdG8gaW5zZXJ0IHRoZSBmaWxlSW5wdXQgb24gYW5vdGhlciBmb3JtCiAgICAgICAgICAgIC8vIHdpdGhvdXQgbG9vc2luZyB0aGUgZmlsZSBpbnB1dCB2YWx1ZToKICAgICAgICAgICAgaW5wdXQuYWZ0ZXIoaW5wdXRDbG9uZSkuZGV0YWNoKCk7CiAgICAgICAgICAgIC8vIEF2b2lkIG1lbW9yeSBsZWFrcyB3aXRoIHRoZSBkZXRhY2hlZCBmaWxlIGlucHV0OgogICAgICAgICAgICAkLmNsZWFuRGF0YShpbnB1dC51bmJpbmQoJ3JlbW92ZScpKTsKICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgb3JpZ2luYWwgZmlsZSBpbnB1dCBlbGVtZW50IGluIHRoZSBmaWxlSW5wdXQKICAgICAgICAgICAgLy8gY29sbGVjdGlvbiB3aXRoIHRoZSBjbG9uZSwgd2hpY2ggaGFzIGJlZW4gY29waWVkIGluY2x1ZGluZwogICAgICAgICAgICAvLyBldmVudCBoYW5kbGVyczoKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMub3B0aW9ucy5maWxlSW5wdXQubWFwKGZ1bmN0aW9uIChpLCBlbCkgewogICAgICAgICAgICAgICAgaWYgKGVsID09PSBpbnB1dFswXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dENsb25lWzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGVsOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgLy8gSWYgdGhlIHdpZGdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBvbiB0aGUgZmlsZSBpbnB1dCBpdHNlbGYsCiAgICAgICAgICAgIC8vIG92ZXJyaWRlIHRoaXMuZWxlbWVudCB3aXRoIHRoZSBmaWxlIGlucHV0IGNsb25lOgogICAgICAgICAgICBpZiAoaW5wdXRbMF0gPT09IHRoaXMuZWxlbWVudFswXSkgewogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50ID0gaW5wdXRDbG9uZTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9vbkNoYW5nZTogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSBlLmRhdGEuZmlsZXVwbG9hZCwKICAgICAgICAgICAgICAgIGRhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZXM6ICQuZWFjaCgkLm1ha2VBcnJheShlLnRhcmdldC5maWxlcyksIHRoYXQuX25vcm1hbGl6ZUZpbGUpLAogICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dDogJChlLnRhcmdldCksCiAgICAgICAgICAgICAgICAgICAgZm9ybTogJChlLnRhcmdldC5mb3JtKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFkYXRhLmZpbGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpbGVzIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUsIHRoZSBicm93c2VyIGRvZXMgbm90CiAgICAgICAgICAgICAgICAvLyBzdXBwb3J0IHRoZSBGaWxlIEFQSSBhbmQgd2UgYWRkIGEgcHNldWRvIEZpbGUgb2JqZWN0IHdpdGgKICAgICAgICAgICAgICAgIC8vIHRoZSBpbnB1dCB2YWx1ZSBhcyBuYW1lIHdpdGggcGF0aCBpbmZvcm1hdGlvbiByZW1vdmVkOgogICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IFt7bmFtZTogZS50YXJnZXQudmFsdWUucmVwbGFjZSgvXi4qXFwvLCAnJyl9XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLnJlcGxhY2VGaWxlSW5wdXQpIHsKICAgICAgICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YS5maWxlSW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKCdjaGFuZ2UnLCBlLCBkYXRhKSA9PT0gZmFsc2UgfHwKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9vblBhc3RlOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLAogICAgICAgICAgICAgICAgY2JkID0gZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEsCiAgICAgICAgICAgICAgICBpdGVtcyA9IChjYmQgJiYgY2JkLml0ZW1zKSB8fCBbXSwKICAgICAgICAgICAgICAgIGRhdGEgPSB7ZmlsZXM6IFtdfTsKICAgICAgICAgICAgJC5lYWNoKGl0ZW1zLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHsKICAgICAgICAgICAgICAgIHZhciBmaWxlID0gaXRlbS5nZXRBc0ZpbGUgJiYgaXRlbS5nZXRBc0ZpbGUoKTsKICAgICAgICAgICAgICAgIGlmIChmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcy5wdXNoKGZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKHRoYXQuX3RyaWdnZXIoJ3Bhc3RlJywgZSwgZGF0YSkgPT09IGZhbHNlIHx8CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfb25Ecm9wOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLAogICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLAogICAgICAgICAgICAgICAgZGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICBmaWxlczogJC5lYWNoKAogICAgICAgICAgICAgICAgICAgICAgICAkLm1ha2VBcnJheShkYXRhVHJhbnNmZXIgJiYgZGF0YVRyYW5zZmVyLmZpbGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fbm9ybWFsaXplRmlsZQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICh0aGF0Ll90cmlnZ2VyKCdkcm9wJywgZSwgZGF0YSkgPT09IGZhbHNlIHx8CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0sCgogICAgICAgIF9vbkRyYWdPdmVyOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IGUuZGF0YS5maWxldXBsb2FkLAogICAgICAgICAgICAgICAgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyOwogICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcignZHJhZ292ZXInLCBlKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZGF0YVRyYW5zZmVyKSB7CiAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IGRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ2NvcHknOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB9LAoKICAgICAgICBfaW5pdEV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG5zID0gdGhpcy5vcHRpb25zLm5hbWVzcGFjZTsKICAgICAgICAgICAgaWYgKHRoaXMuX2lzWEhSVXBsb2FkKHRoaXMub3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5kcm9wWm9uZQogICAgICAgICAgICAgICAgICAgIC5iaW5kKCdkcmFnb3Zlci4nICsgbnMsIHtmaWxldXBsb2FkOiB0aGlzfSwgdGhpcy5fb25EcmFnT3ZlcikKICAgICAgICAgICAgICAgICAgICAuYmluZCgnZHJvcC4nICsgbnMsIHtmaWxldXBsb2FkOiB0aGlzfSwgdGhpcy5fb25Ecm9wKQogICAgICAgICAgICAgICAgICAgIC5iaW5kKCdwYXN0ZS4nICsgbnMsIHtmaWxldXBsb2FkOiB0aGlzfSwgdGhpcy5fb25QYXN0ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZpbGVJbnB1dAogICAgICAgICAgICAgICAgLmJpbmQoJ2NoYW5nZS4nICsgbnMsIHtmaWxldXBsb2FkOiB0aGlzfSwgdGhpcy5fb25DaGFuZ2UpOwogICAgICAgIH0sCgogICAgICAgIF9kZXN0cm95RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgbnMgPSB0aGlzLm9wdGlvbnMubmFtZXNwYWNlOwogICAgICAgICAgICB0aGlzLm9wdGlvbnMuZHJvcFpvbmUKICAgICAgICAgICAgICAgIC51bmJpbmQoJ2RyYWdvdmVyLicgKyBucywgdGhpcy5fb25EcmFnT3ZlcikKICAgICAgICAgICAgICAgIC51bmJpbmQoJ2Ryb3AuJyArIG5zLCB0aGlzLl9vbkRyb3ApCiAgICAgICAgICAgICAgICAudW5iaW5kKCdwYXN0ZS4nICsgbnMsIHRoaXMuX29uUGFzdGUpOwogICAgICAgICAgICB0aGlzLm9wdGlvbnMuZmlsZUlucHV0CiAgICAgICAgICAgICAgICAudW5iaW5kKCdjaGFuZ2UuJyArIG5zLCB0aGlzLl9vbkNoYW5nZSk7CiAgICAgICAgfSwKCiAgICAgICAgX3NldE9wdGlvbjogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgdmFyIHJlZnJlc2ggPSAkLmluQXJyYXkoa2V5LCB0aGlzLl9yZWZyZXNoT3B0aW9uc0xpc3QpICE9PSAtMTsKICAgICAgICAgICAgaWYgKHJlZnJlc2gpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudEhhbmRsZXJzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uY2FsbCh0aGlzLCBrZXksIHZhbHVlKTsKICAgICAgICAgICAgaWYgKHJlZnJlc2gpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpOwogICAgICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50SGFuZGxlcnMoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9pbml0U3BlY2lhbE9wdGlvbnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbGVJbnB1dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMuZWxlbWVudC5pcygnaW5wdXQ6ZmlsZScpID8KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50IDogdGhpcy5lbGVtZW50LmZpbmQoJ2lucHV0OmZpbGUnKTsKICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuZmlsZUlucHV0IGluc3RhbmNlb2YgJCkpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gJChvcHRpb25zLmZpbGVJbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5kcm9wWm9uZSBpbnN0YW5jZW9mICQpKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmRyb3Bab25lID0gJChvcHRpb25zLmRyb3Bab25lKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9jcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgb3B0aW9ucyBzZXQgdmlhIEhUTUw1IGRhdGEtYXR0cmlidXRlczoKICAgICAgICAgICAgJC5leHRlbmQob3B0aW9ucywgJCh0aGlzLmVsZW1lbnRbMF0uY2xvbmVOb2RlKGZhbHNlKSkuZGF0YSgpKTsKICAgICAgICAgICAgb3B0aW9ucy5uYW1lc3BhY2UgPSBvcHRpb25zLm5hbWVzcGFjZSB8fCB0aGlzLndpZGdldE5hbWU7CiAgICAgICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpOwogICAgICAgICAgICB0aGlzLl9zbG90cyA9IFtdOwogICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX2dldFhIUlByb21pc2UodHJ1ZSk7CiAgICAgICAgICAgIHRoaXMuX3NlbmRpbmcgPSB0aGlzLl9hY3RpdmUgPSB0aGlzLl9sb2FkZWQgPSB0aGlzLl90b3RhbCA9IDA7CiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7CiAgICAgICAgfSwKCiAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpOwogICAgICAgICAgICAkLldpZGdldC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpOwogICAgICAgIH0sCgogICAgICAgIGVuYWJsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkLldpZGdldC5wcm90b3R5cGUuZW5hYmxlLmNhbGwodGhpcyk7CiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7CiAgICAgICAgfSwKCiAgICAgICAgZGlzYWJsZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpOwogICAgICAgICAgICAkLldpZGdldC5wcm90b3R5cGUuZGlzYWJsZS5jYWxsKHRoaXMpOwogICAgICAgIH0sCgogICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyBhZGRpbmcgZmlsZXMKICAgICAgICAvLyB1c2luZyB0aGUgZmlsZXVwbG9hZCBBUEkuIFRoZSBkYXRhIHBhcmFtZXRlciBhY2NlcHRzIGFuIG9iamVjdCB3aGljaAogICAgICAgIC8vIG11c3QgaGF2ZSBhIGZpbGVzIHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6CiAgICAgICAgLy8gLmZpbGV1cGxvYWQoJ2FkZCcsIHtmaWxlczogZmlsZXNMaXN0fSk7CiAgICAgICAgYWRkOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICBpZiAoIWRhdGEgfHwgdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGF0YS5maWxlcyA9ICQuZWFjaCgkLm1ha2VBcnJheShkYXRhLmZpbGVzKSwgdGhpcy5fbm9ybWFsaXplRmlsZSk7CiAgICAgICAgICAgIHRoaXMuX29uQWRkKG51bGwsIGRhdGEpOwogICAgICAgIH0sCgogICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyBzZW5kaW5nIGZpbGVzCiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2gKICAgICAgICAvLyBtdXN0IGhhdmUgYSBmaWxlcyBwcm9wZXJ0eSBhbmQgY2FuIGNvbnRhaW4gYWRkaXRpb25hbCBvcHRpb25zOgogICAgICAgIC8vIC5maWxldXBsb2FkKCdzZW5kJywge2ZpbGVzOiBmaWxlc0xpc3R9KTsKICAgICAgICAvLyBUaGUgbWV0aG9kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCBmb3IgdGhlIGZpbGUgdXBsb2FkIGNhbGwuCiAgICAgICAgc2VuZDogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgaWYgKGRhdGEgJiYgIXRoaXMub3B0aW9ucy5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9ICQuZWFjaCgkLm1ha2VBcnJheShkYXRhLmZpbGVzKSwgdGhpcy5fbm9ybWFsaXplRmlsZSk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb25TZW5kKG51bGwsIGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRYSFJQcm9taXNlKGZhbHNlLCBkYXRhICYmIGRhdGEuY29udGV4dCk7CiAgICAgICAgfQoKICAgIH0pOwoKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.iframe-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IElmcmFtZSBUcmFuc3BvcnQgUGx1Z2luIDEuNAogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTEsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLypqc2xpbnQgdW5wYXJhbTogdHJ1ZSwgbm9tZW46IHRydWUgKi8KLypnbG9iYWwgZGVmaW5lLCB3aW5kb3csIGRvY3VtZW50ICovCgooZnVuY3Rpb24gKGZhY3RvcnkpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToKICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczoKICAgICAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpOwogICAgfQp9KGZ1bmN0aW9uICgkKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLy8gSGVscGVyIHZhcmlhYmxlIHRvIGNyZWF0ZSB1bmlxdWUgbmFtZXMgZm9yIHRoZSB0cmFuc3BvcnQgaWZyYW1lczoKICAgIHZhciBjb3VudGVyID0gMDsKCiAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBhY2NlcHRzIHRocmVlIGFkZGl0aW9uYWwgb3B0aW9uczoKICAgIC8vIG9wdGlvbnMuZmlsZUlucHV0OiBhIGpRdWVyeSBjb2xsZWN0aW9uIG9mIGZpbGUgaW5wdXQgZmllbGRzCiAgICAvLyBvcHRpb25zLnBhcmFtTmFtZTogdGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgZmlsZSBmb3JtIGRhdGEsCiAgICAvLyAgb3ZlcnJpZGVzIHRoZSBuYW1lIHByb3BlcnR5IG9mIHRoZSBmaWxlIGlucHV0IGZpZWxkKHMpLAogICAgLy8gIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLgogICAgLy8gb3B0aW9ucy5mb3JtRGF0YTogYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5hbWUgYW5kIHZhbHVlIHByb3BlcnRpZXMsCiAgICAvLyAgZXF1aXZhbGVudCB0byB0aGUgcmV0dXJuIGRhdGEgb2YgLnNlcmlhbGl6ZUFycmF5KCksIGUuZy46CiAgICAvLyAgW3tuYW1lOiAnYScsIHZhbHVlOiAxfSwge25hbWU6ICdiJywgdmFsdWU6IDJ9XQogICAgJC5hamF4VHJhbnNwb3J0KCdpZnJhbWUnLCBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zLmFzeW5jICYmIChvcHRpb25zLnR5cGUgPT09ICdQT1NUJyB8fCBvcHRpb25zLnR5cGUgPT09ICdHRVQnKSkgewogICAgICAgICAgICB2YXIgZm9ybSwKICAgICAgICAgICAgICAgIGlmcmFtZTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChfLCBjb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgZm9ybSA9ICQoJzxmb3JtIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Zvcm0+Jyk7CiAgICAgICAgICAgICAgICAgICAgLy8gamF2YXNjcmlwdDpmYWxzZSBhcyBpbml0aWFsIGlmcmFtZSBzcmMKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyB3YXJuaW5nIHBvcHVwcyBvbiBIVFRQUyBpbiBJRTYuCiAgICAgICAgICAgICAgICAgICAgLy8gSUUgdmVyc2lvbnMgYmVsb3cgSUU4IGNhbm5vdCBzZXQgdGhlIG5hbWUgcHJvcGVydHkgb2YKICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBET00sCiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2Ugc2V0IHRoZSBuYW1lIGFsb25nIHdpdGggdGhlIGlmcmFtZSBIVE1MIG1hcmt1cDoKICAgICAgICAgICAgICAgICAgICBpZnJhbWUgPSAkKAogICAgICAgICAgICAgICAgICAgICAgICAnPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6ZmFsc2U7IiBuYW1lPSJpZnJhbWUtdHJhbnNwb3J0LScgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50ZXIgKz0gMSkgKyAnIj48L2lmcmFtZT4nCiAgICAgICAgICAgICAgICAgICAgKS5iaW5kKCdsb2FkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZUlucHV0Q2xvbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lcyA9ICQuaXNBcnJheShvcHRpb25zLnBhcmFtTmFtZSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZSA6IFtvcHRpb25zLnBhcmFtTmFtZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVuYmluZCgnbG9hZCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYmluZCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JhcCBpbiBhIHRyeS9jYXRjaCBibG9jayB0byBjYXRjaCBleGNlcHRpb25zIHRocm93bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBjcm9zcy1kb21haW4gaWZyYW1lIGNvbnRlbnRzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gaWZyYW1lLmNvbnRlbnRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdvb2dsZSBDaHJvbWUgYW5kIEZpcmVmb3ggZG8gbm90IHRocm93IGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiB3aGVuIGNhbGxpbmcgaWZyYW1lLmNvbnRlbnRzKCkgb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzbyB3ZSB1bmlmeSB0aGUgcmVzcG9uc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UubGVuZ3RoIHx8ICFyZXNwb25zZVswXS5maXJzdENoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjb21wbGV0ZSBjYWxsYmFjayByZXR1cm5zIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmcmFtZSBjb250ZW50IGRvY3VtZW50IGFzIHJlc3BvbnNlIG9iamVjdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydpZnJhbWUnOiByZXNwb25zZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeCBmb3IgSUUgZW5kbGVzcyBwcm9ncmVzcyBiYXIgYWN0aXZpdHkgYnVnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGhhcHBlbnMgb24gZm9ybSBzdWJtaXRzIHRvIGlmcmFtZSB0YXJnZXRzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxzZTsiPjwvaWZyYW1lPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhmb3JtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCd0YXJnZXQnLCBpZnJhbWUucHJvcCgnbmFtZScpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ2FjdGlvbicsIG9wdGlvbnMudXJsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ21ldGhvZCcsIG9wdGlvbnMudHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZvcm1EYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5mb3JtRGF0YSwgZnVuY3Rpb24gKGluZGV4LCBmaWVsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iLz4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnbmFtZScsIGZpZWxkLm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWwoZmllbGQudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhmb3JtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbGVJbnB1dCAmJiBvcHRpb25zLmZpbGVJbnB1dC5sZW5ndGggJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPT09ICdQT1NUJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUlucHV0Q2xvbmVzID0gb3B0aW9ucy5maWxlSW5wdXQuY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluc2VydCBhIGNsb25lIGZvciBlYWNoIGZpbGUgaW5wdXQgZmllbGQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5hZnRlcihmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZUlucHV0Q2xvbmVzW2luZGV4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFyYW1OYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lc1tpbmRleF0gfHwgb3B0aW9ucy5wYXJhbU5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZGluZyB0aGUgZmlsZSBpbnB1dCBmaWVsZHMgdG8gdGhlIGhpZGRlbiBmb3JtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmVzIHRoZW0gZnJvbSB0aGVpciBvcmlnaW5hbCBsb2NhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKG9wdGlvbnMuZmlsZUlucHV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdlbmN0eXBlJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuY3R5cGUgbXVzdCBiZSBzZXQgYXMgZW5jb2RpbmcgZm9yIElFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdlbmNvZGluZycsICdtdWx0aXBhcnQvZm9ybS1kYXRhJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBmaWxlIGlucHV0IGZpZWxkcyBhdCB0aGVpciBvcmlnaW5hbCBsb2NhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAvLyBieSByZXBsYWNpbmcgdGhlIGNsb25lcyB3aXRoIHRoZSBvcmlnaW5hbHM6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlSW5wdXRDbG9uZXMgJiYgZmlsZUlucHV0Q2xvbmVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuZWFjaChmdW5jdGlvbiAoaW5kZXgsIGlucHV0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lID0gJChmaWxlSW5wdXRDbG9uZXNbaW5kZXhdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KS5wcm9wKCduYW1lJywgY2xvbmUucHJvcCgnbmFtZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5yZXBsYWNlV2l0aChpbnB1dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGZvcm0uYXBwZW5kKGlmcmFtZSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYWJvcnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaWZyYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGphdmFzY3JpcHQ6ZmFsc2UgYXMgaWZyYW1lIHNyYyBhYm9ydHMgdGhlIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHByZXZlbnRzIHdhcm5pbmcgcG9wdXBzIG9uIEhUVFBTIGluIElFNi4KICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uY2F0IGlzIHVzZWQgdG8gYXZvaWQgdGhlICJTY3JpcHQgVVJMIiBKU0xpbnQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVuYmluZCgnbG9hZCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnc3JjJywgJ2phdmFzY3JpcHQnLmNvbmNhdCgnOmZhbHNlOycpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgcmV0dXJucyB0aGUgaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2UuCiAgICAvLyBUaGUgZm9sbG93aW5nIGFkZHMgY29udmVydGVycyBmcm9tIGlmcmFtZSB0byB0ZXh0LCBqc29uLCBodG1sLCBhbmQgc2NyaXB0OgogICAgJC5hamF4U2V0dXAoewogICAgICAgIGNvbnZlcnRlcnM6IHsKICAgICAgICAgICAgJ2lmcmFtZSB0ZXh0JzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2lmcmFtZSBqc29uJzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICQucGFyc2VKU09OKCQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdpZnJhbWUgaHRtbCc6IGZ1bmN0aW9uIChpZnJhbWUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkKGlmcmFtZVswXS5ib2R5KS5odG1sKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdpZnJhbWUgc2NyaXB0JzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICQuZ2xvYmFsRXZhbCgkKGlmcmFtZVswXS5ib2R5KS50ZXh0KCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/jquery.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2MS43LjIganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwooZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjeShhKXtyZXR1cm4gZi5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGN1KGEpe2lmKCFjalthXSl7dmFyIGI9Yy5ib2R5LGQ9ZigiPCIrYSsiPiIpLmFwcGVuZFRvKGIpLGU9ZC5jc3MoImRpc3BsYXkiKTtkLnJlbW92ZSgpO2lmKGU9PT0ibm9uZSJ8fGU9PT0iIil7Y2t8fChjaz1jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGNrLmZyYW1lQm9yZGVyPWNrLndpZHRoPWNrLmhlaWdodD0wKSxiLmFwcGVuZENoaWxkKGNrKTtpZighY2x8fCFjay5jcmVhdGVFbGVtZW50KWNsPShjay5jb250ZW50V2luZG93fHxjay5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNsLndyaXRlKChmLnN1cHBvcnQuYm94TW9kZWw/IjwhZG9jdHlwZSBodG1sPiI6IiIpKyI8aHRtbD48Ym9keT4iKSxjbC5jbG9zZSgpO2Q9Y2wuY3JlYXRlRWxlbWVudChhKSxjbC5ib2R5LmFwcGVuZENoaWxkKGQpLGU9Zi5jc3MoZCwiZGlzcGxheSIpLGIucmVtb3ZlQ2hpbGQoY2spfWNqW2FdPWV9cmV0dXJuIGNqW2FdfWZ1bmN0aW9uIGN0KGEsYil7dmFyIGM9e307Zi5lYWNoKGNwLmNvbmNhdC5hcHBseShbXSxjcC5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGNzKCl7Y3E9Yn1mdW5jdGlvbiBjcigpe3NldFRpbWVvdXQoY3MsMCk7cmV0dXJuIGNxPWYubm93KCl9ZnVuY3Rpb24gY2koKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjaCgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYihhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2EoYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBiXyhhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRC50ZXN0KGEpP2QoYSxlKTpiXyhhKyJbIisodHlwZW9mIGU9PSJvYmplY3QiP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZmLnR5cGUoYik9PT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiliXyhhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYiQoYSxjKXt2YXIgZCxlLGc9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZ1tkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmZi5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBiWihhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YlMsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09InN0cmluZyImJigha3x8Z1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iWihhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iWihhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYlkoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPSJzdHJpbmciJiYoYz1iLGI9IioiKTtpZihmLmlzRnVuY3Rpb24oYykpe3ZhciBkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChiTyksZT0wLGc9ZC5sZW5ndGgsaCxpLGo7Zm9yKDtlPGc7ZSsrKWg9ZFtlXSxqPS9eXCsvLnRlc3QoaCksaiYmKGg9aC5zdWJzdHIoMSl8fCIqIiksaT1hW2hdPWFbaF18fFtdLGlbaj8idW5zaGlmdCI6InB1c2giXShjKX19fWZ1bmN0aW9uIGJCKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9Yj09PSJ3aWR0aCI/MTowLGc9NDtpZihkPjApe2lmKGMhPT0iYm9yZGVyIilmb3IoO2U8ZztlKz0yKWN8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2J4W2VdKSl8fDApLGM9PT0ibWFyZ2luIj9kKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytieFtlXSkpfHwwOmQtPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIitieFtlXSsiV2lkdGgiKSl8fDA7cmV0dXJuIGQrInB4In1kPWJ5KGEsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHlsZVtiXTtpZihidC50ZXN0KGQpKXJldHVybiBkO2Q9cGFyc2VGbG9hdChkKXx8MDtpZihjKWZvcig7ZTxnO2UrPTIpZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIitieFtlXSkpfHwwLGMhPT0icGFkZGluZyImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrYnhbZV0rIldpZHRoIikpfHwwKSxjPT09Im1hcmdpbiImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytieFtlXSkpfHwwKTtyZXR1cm4gZCsicHgifWZ1bmN0aW9uIGJvKGEpe3ZhciBiPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YmguYXBwZW5kQ2hpbGQoYiksYi5pbm5lckhUTUw9YS5vdXRlckhUTUw7cmV0dXJuIGIuZmlyc3RDaGlsZH1mdW5jdGlvbiBibihhKXt2YXIgYj0oYS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7Yj09PSJpbnB1dCI/Ym0oYSk6YiE9PSJzY3JpcHQiJiZ0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCImJmYuZ3JlcChhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLGJtKX1mdW5jdGlvbiBibShhKXtpZihhLnR5cGU9PT0iY2hlY2tib3gifHxhLnR5cGU9PT0icmFkaW8iKWEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkfWZ1bmN0aW9uIGJsKGEpe3JldHVybiB0eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPSJ1bmRlZmluZWQiP2EucXVlcnlTZWxlY3RvckFsbCgiKiIpOltdfWZ1bmN0aW9uIGJrKGEsYil7dmFyIGM7Yi5ub2RlVHlwZT09PTEmJihiLmNsZWFyQXR0cmlidXRlcyYmYi5jbGVhckF0dHJpYnV0ZXMoKSxiLm1lcmdlQXR0cmlidXRlcyYmYi5tZXJnZUF0dHJpYnV0ZXMoYSksYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksYz09PSJvYmplY3QiP2Iub3V0ZXJIVE1MPWEub3V0ZXJIVE1MOmMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iP2M9PT0ib3B0aW9uIj9iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOmM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIj9iLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZTpjPT09InNjcmlwdCImJmIudGV4dCE9PWEudGV4dCYmKGIudGV4dD1hLnRleHQpOihhLmNoZWNrZWQmJihiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQpLGIudmFsdWUhPT1hLnZhbHVlJiYoYi52YWx1ZT1hLnZhbHVlKSksYi5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKSxiLnJlbW92ZUF0dHJpYnV0ZSgiX3N1Ym1pdF9hdHRhY2hlZCIpLGIucmVtb3ZlQXR0cmlidXRlKCJfY2hhbmdlX2F0dGFjaGVkIikpfWZ1bmN0aW9uIGJqKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZz1mLl9kYXRhKGEpLGg9Zi5fZGF0YShiLGcpLGk9Zy5ldmVudHM7aWYoaSl7ZGVsZXRlIGguaGFuZGxlLGguZXZlbnRzPXt9O2ZvcihjIGluIGkpZm9yKGQ9MCxlPWlbY10ubGVuZ3RoO2Q8ZTtkKyspZi5ldmVudC5hZGQoYixjLGlbY11bZF0pfWguZGF0YSYmKGguZGF0YT1mLmV4dGVuZCh7fSxoLmRhdGEpKX19ZnVuY3Rpb24gYmkoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gVShhKXt2YXIgYj1WLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfWZ1bmN0aW9uIFQoYSxiLGMpe2I9Ynx8MDtpZihmLmlzRnVuY3Rpb24oYikpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7dmFyIGU9ISFiLmNhbGwoYSxkLGEpO3JldHVybiBlPT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGE9PT1iPT09Y30pO2lmKHR5cGVvZiBiPT0ic3RyaW5nIil7dmFyIGQ9Zi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PT0xfSk7aWYoTy50ZXN0KGIpKXJldHVybiBmLmZpbHRlcihiLGQsIWMpO2I9Zi5maWx0ZXIoYixkKX1yZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gZi5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gUyhhKXtyZXR1cm4hYXx8IWEucGFyZW50Tm9kZXx8YS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTF9ZnVuY3Rpb24gSygpe3JldHVybiEwfWZ1bmN0aW9uIEooKXtyZXR1cm4hMX1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iKyJkZWZlciIsZT1iKyJxdWV1ZSIsZz1iKyJtYXJrIixoPWYuX2RhdGEoYSxkKTtoJiYoYz09PSJxdWV1ZSJ8fCFmLl9kYXRhKGEsZSkpJiYoYz09PSJtYXJrInx8IWYuX2RhdGEoYSxnKSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXshZi5fZGF0YShhLGUpJiYhZi5fZGF0YShhLGcpJiYoZi5yZW1vdmVEYXRhKGEsZCwhMCksaC5maXJlKCkpfSwwKX1mdW5jdGlvbiBtKGEpe2Zvcih2YXIgYiBpbiBhKXtpZihiPT09ImRhdGEiJiZmLmlzRW1wdHlPYmplY3QoYVtiXSkpY29udGludWU7aWYoYiE9PSJ0b0pTT04iKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGwoYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVUeXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoaywiLSQxIikudG9Mb3dlckNhc2UoKTtkPWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVlIj8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6Zi5pc051bWVyaWMoZCk/K2Q6ai50ZXN0KGQpP2YucGFyc2VKU09OKGQpOmR9Y2F0Y2goZyl7fWYuZGF0YShhLGMsZCl9ZWxzZSBkPWJ9cmV0dXJuIGR9ZnVuY3Rpb24gaChhKXt2YXIgYj1nW2FdPXt9LGMsZDthPWEuc3BsaXQoL1xzKy8pO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWJbYVtjXV09ITA7cmV0dXJuIGJ9dmFyIGM9YS5kb2N1bWVudCxkPWEubmF2aWdhdG9yLGU9YS5sb2NhdGlvbixmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSigpe2lmKCFlLmlzUmVhZHkpe3RyeXtjLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3NldFRpbWVvdXQoSiwxKTtyZXR1cm59ZS5yZWFkeSgpfX12YXIgZT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZS5mbi5pbml0KGEsYixoKX0sZj1hLmpRdWVyeSxnPWEuJCxoLGk9L14oPzpbXiM8XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLGo9L1xTLyxrPS9eXHMrLyxsPS9ccyskLyxtPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPik/JC8sbj0vXltcXSw6e31cc10qJC8sbz0vXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLHA9LyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLHE9Lyg/Ol58OnwsKSg/OlxzKlxbKSsvZyxyPS8od2Via2l0KVsgXC9dKFtcdy5dKykvLHM9LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLHQ9Lyhtc2llKSAoW1x3Ll0rKS8sdT0vKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLHY9Ly0oW2Etel18WzAtOV0pL2lnLHc9L14tbXMtLyx4PWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LHk9ZC51c2VyQWdlbnQseixBLEIsQz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxFPUFycmF5LnByb3RvdHlwZS5wdXNoLEY9QXJyYXkucHJvdG90eXBlLnNsaWNlLEc9U3RyaW5nLnByb3RvdHlwZS50cmltLEg9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsST17fTtlLmZuPWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGluaXQ6ZnVuY3Rpb24oYSxkLGYpe3ZhciBnLGgsaixrO2lmKCFhKXJldHVybiB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhZCYmYy5ib2R5KXt0aGlzLmNvbnRleHQ9Yyx0aGlzWzBdPWMuYm9keSx0aGlzLnNlbGVjdG9yPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09InN0cmluZyIpe2EuY2hhckF0KDApIT09IjwifHxhLmNoYXJBdChhLmxlbmd0aC0xKSE9PSI+Inx8YS5sZW5ndGg8Mz9nPWkuZXhlYyhhKTpnPVtudWxsLGEsbnVsbF07aWYoZyYmKGdbMV18fCFkKSl7aWYoZ1sxXSl7ZD1kIGluc3RhbmNlb2YgZT9kWzBdOmQsaz1kP2Qub3duZXJEb2N1bWVudHx8ZDpjLGo9bS5leGVjKGEpLGo/ZS5pc1BsYWluT2JqZWN0KGQpPyhhPVtjLmNyZWF0ZUVsZW1lbnQoalsxXSldLGUuZm4uYXR0ci5jYWxsKGEsZCwhMCkpOmE9W2suY3JlYXRlRWxlbWVudChqWzFdKV06KGo9ZS5idWlsZEZyYWdtZW50KFtnWzFdXSxba10pLGE9KGouY2FjaGVhYmxlP2UuY2xvbmUoai5mcmFnbWVudCk6ai5mcmFnbWVudCkuY2hpbGROb2Rlcyk7cmV0dXJuIGUubWVyZ2UodGhpcyxhKX1oPWMuZ2V0RWxlbWVudEJ5SWQoZ1syXSk7aWYoaCYmaC5wYXJlbnROb2RlKXtpZihoLmlkIT09Z1syXSlyZXR1cm4gZi5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1ofXRoaXMuY29udGV4dD1jLHRoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31yZXR1cm4hZHx8ZC5qcXVlcnk/KGR8fGYpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihkKS5maW5kKGEpfWlmKGUuaXNGdW5jdGlvbihhKSlyZXR1cm4gZi5yZWFkeShhKTthLnNlbGVjdG9yIT09YiYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KTtyZXR1cm4gZS5tYWtlQXJyYXkoYSx0aGlzKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjcuMiIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBGLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9FLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEEuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXthPSthO3JldHVybiBhPT09LTE/dGhpcy5zbGljZShhKTp0aGlzLnNsaWNlKGEsYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRi5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixGLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpFLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxlLmZuLmluaXQucHJvdG90eXBlPWUuZm4sZS5leHRlbmQ9ZS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxjLGQsZixnLGgsaT1hcmd1bWVudHNbMF18fHt9LGo9MSxrPWFyZ3VtZW50cy5sZW5ndGgsbD0hMTt0eXBlb2YgaT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT0ib2JqZWN0IiYmIWUuaXNGdW5jdGlvbihpKSYmKGk9e30pLGs9PT1qJiYoaT10aGlzLC0taik7Zm9yKDtqPGs7aisrKWlmKChhPWFyZ3VtZW50c1tqXSkhPW51bGwpZm9yKGMgaW4gYSl7ZD1pW2NdLGY9YVtjXTtpZihpPT09Ziljb250aW51ZTtsJiZmJiYoZS5pc1BsYWluT2JqZWN0KGYpfHwoZz1lLmlzQXJyYXkoZikpKT8oZz8oZz0hMSxoPWQmJmUuaXNBcnJheShkKT9kOltdKTpoPWQmJmUuaXNQbGFpbk9iamVjdChkKT9kOnt9LGlbY109ZS5leHRlbmQobCxoLGYpKTpmIT09YiYmKGlbY109Zil9cmV0dXJuIGl9LGUuZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGIpe2EuJD09PWUmJihhLiQ9ZyksYiYmYS5qUXVlcnk9PT1lJiYoYS5qUXVlcnk9Zik7cmV0dXJuIGV9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/ZS5yZWFkeVdhaXQrKzplLnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24oYSl7aWYoYT09PSEwJiYhLS1lLnJlYWR5V2FpdHx8YSE9PSEwJiYhZS5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7ZS5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1lLnJlYWR5V2FpdD4wKXJldHVybjtBLmZpcmVXaXRoKGMsW2VdKSxlLmZuLnRyaWdnZXImJmUoYykudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZighQSl7QT1lLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKTtpZihjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlLnJlYWR5LCExKTtlbHNlIGlmKGMuYXR0YWNoRXZlbnQpe2MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQiksYS5hdHRhY2hFdmVudCgib25sb2FkIixlLnJlYWR5KTt2YXIgYj0hMTt0cnl7Yj1hLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChkKXt9Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmImJkooKX19fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbCYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChhKSkmJmlzRmluaXRlKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpJW0MuY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxlLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8ZS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUQuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhRC5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxELmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxwYXJzZUpTT046ZnVuY3Rpb24oYil7aWYodHlwZW9mIGIhPSJzdHJpbmcifHwhYilyZXR1cm4gbnVsbDtiPWUudHJpbShiKTtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBhcnNlKGIpO2lmKG4udGVzdChiLnJlcGxhY2UobywiQCIpLnJlcGxhY2UocCwiXSIpLnJlcGxhY2UocSwiIikpKXJldHVybihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO2UuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYyl7aWYodHlwZW9mIGMhPSJzdHJpbmcifHwhYylyZXR1cm4gbnVsbDt2YXIgZCxmO3RyeXthLkRPTVBhcnNlcj8oZj1uZXcgRE9NUGFyc2VyLGQ9Zi5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSk6KGQ9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxkLmFzeW5jPSJmYWxzZSIsZC5sb2FkWE1MKGMpKX1jYXRjaChnKXtkPWJ9KCFkfHwhZC5kb2N1bWVudEVsZW1lbnR8fGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmZS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYyk7cmV0dXJuIGR9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmai50ZXN0KGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHcsIm1zLSIpLnJlcGxhY2Uodix4KX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnPTAsaD1hLmxlbmd0aCxpPWg9PT1ifHxlLmlzRnVuY3Rpb24oYSk7aWYoZCl7aWYoaSl7Zm9yKGYgaW4gYSlpZihjLmFwcGx5KGFbZl0sZCk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmFwcGx5KGFbZysrXSxkKT09PSExKWJyZWFrfWVsc2UgaWYoaSl7Zm9yKGYgaW4gYSlpZihjLmNhbGwoYVtmXSxmLGFbZl0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5jYWxsKGFbZ10sZyxhW2crK10pPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06Rz9mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjpHLmNhbGwoYSl9OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOihhKyIiKS5yZXBsYWNlKGssIiIpLnJlcGxhY2UobCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO2lmKGEhPW51bGwpe3ZhciBkPWUudHlwZShhKTthLmxlbmd0aD09bnVsbHx8ZD09PSJzdHJpbmcifHxkPT09ImZ1bmN0aW9uInx8ZD09PSJyZWdleHAifHxlLmlzV2luZG93KGEpP0UuY2FsbChjLGEpOmUubWVyZ2UoYyxhKX1yZXR1cm4gY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYoSClyZXR1cm4gSC5jYWxsKGIsYSxjKTtkPWIubGVuZ3RoLGM9Yz9jPDA/TWF0aC5tYXgoMCxkK2MpOmM6MDtmb3IoO2M8ZDtjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmxlbmd0aCxlPTA7aWYodHlwZW9mIGMubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGY9Yy5sZW5ndGg7ZTxmO2UrKylhW2QrK109Y1tlXTtlbHNlIHdoaWxlKGNbZV0hPT1iKWFbZCsrXT1jW2UrK107YS5sZW5ndGg9ZDtyZXR1cm4gYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZTtjPSEhYztmb3IodmFyIGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspZT0hIWIoYVtmXSxmKSxjIT09ZSYmZC5wdXNoKGFbZl0pO3JldHVybiBkfSxtYXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGcsaD1bXSxpPTAsaj1hLmxlbmd0aCxrPWEgaW5zdGFuY2VvZiBlfHxqIT09YiYmdHlwZW9mIGo9PSJudW1iZXIiJiYoaj4wJiZhWzBdJiZhW2otMV18fGo9PT0wfHxlLmlzQXJyYXkoYSkpO2lmKGspZm9yKDtpPGo7aSsrKWY9YyhhW2ldLGksZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO2Vsc2UgZm9yKGcgaW4gYSlmPWMoYVtnXSxnLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtyZXR1cm4gaC5jb25jYXQuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGMpe2lmKHR5cGVvZiBjPT0ic3RyaW5nIil7dmFyIGQ9YVtjXTtjPWEsYT1kfWlmKCFlLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGI7dmFyIGY9Ri5jYWxsKGFyZ3VtZW50cywyKSxnPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYyxmLmNvbmNhdChGLmNhbGwoYXJndW1lbnRzKSkpfTtnLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8Zy5ndWlkfHxlLmd1aWQrKztyZXR1cm4gZ30sYWNjZXNzOmZ1bmN0aW9uKGEsYyxkLGYsZyxoLGkpe3ZhciBqLGs9ZD09bnVsbCxsPTAsbT1hLmxlbmd0aDtpZihkJiZ0eXBlb2YgZD09Im9iamVjdCIpe2ZvcihsIGluIGQpZS5hY2Nlc3MoYSxjLGwsZFtsXSwxLGgsZik7Zz0xfWVsc2UgaWYoZiE9PWIpe2o9aT09PWImJmUuaXNGdW5jdGlvbihmKSxrJiYoaj8oaj1jLGM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwoZShhKSxjKX0pOihjLmNhbGwoYSxmKSxjPW51bGwpKTtpZihjKWZvcig7bDxtO2wrKyljKGFbbF0sZCxqP2YuY2FsbChhW2xdLGwsYyhhW2xdLGQpKTpmLGkpO2c9MX1yZXR1cm4gZz9hOms/Yy5jYWxsKGEpOm0/YyhhWzBdLGQpOmh9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXIuZXhlYyhhKXx8cy5leGVjKGEpfHx0LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJnUuZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxzdWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1lLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24oZCxmKXtmJiZmIGluc3RhbmNlb2YgZSYmIShmIGluc3RhbmNlb2YgYSkmJihmPWEoZikpO3JldHVybiBlLmZuLmluaXQuY2FsbCh0aGlzLGQsZixiKX0sYS5mbi5pbml0LnByb3RvdHlwZT1hLmZuO3ZhciBiPWEoYyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSxlLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtJWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHo9ZS51YU1hdGNoKHkpLHouYnJvd3NlciYmKGUuYnJvd3Nlclt6LmJyb3dzZXJdPSEwLGUuYnJvd3Nlci52ZXJzaW9uPXoudmVyc2lvbiksZS5icm93c2VyLndlYmtpdCYmKGUuYnJvd3Nlci5zYWZhcmk9ITApLGoudGVzdCgiICIpJiYoaz0vXltcc1x4QTBdKy8sbD0vW1xzXHhBMF0rJC8pLGg9ZShjKSxjLmFkZEV2ZW50TGlzdGVuZXI/Qj1mdW5jdGlvbigpe2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiwhMSksZS5yZWFkeSgpfTpjLmF0dGFjaEV2ZW50JiYoQj1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSImJihjLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEIpLGUucmVhZHkoKSl9KTtyZXR1cm4gZX0oKSxnPXt9O2YuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9YT9nW2FdfHxoKGEpOnt9O3ZhciBjPVtdLGQ9W10sZSxpLGosayxsLG0sbj1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9uKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhcC5oYXMoZykpJiZjLnB1c2goZyl9LG89ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGo9ITAsbT1rfHwwLGs9MCxsPWMubGVuZ3RoO2Zvcig7YyYmbTxsO20rKylpZihjW21dLmFwcGx5KGIsZik9PT0hMSYmYS5zdG9wT25GYWxzZSl7ZT0hMDticmVha31qPSExLGMmJihhLm9uY2U/ZT09PSEwP3AuZGlzYWJsZSgpOmM9W106ZCYmZC5sZW5ndGgmJihlPWQuc2hpZnQoKSxwLmZpcmVXaXRoKGVbMF0sZVsxXSkpKX0scD17YWRkOmZ1bmN0aW9uKCl7aWYoYyl7dmFyIGE9Yy5sZW5ndGg7bihhcmd1bWVudHMpLGo/bD1jLmxlbmd0aDplJiZlIT09ITAmJihrPWEsbyhlWzBdLGVbMV0pKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7aWYoYyl7dmFyIGI9YXJndW1lbnRzLGQ9MCxlPWIubGVuZ3RoO2Zvcig7ZDxlO2QrKylmb3IodmFyIGY9MDtmPGMubGVuZ3RoO2YrKylpZihiW2RdPT09Y1tmXSl7aiYmZjw9bCYmKGwtLSxmPD1tJiZtLS0pLGMuc3BsaWNlKGYtLSwxKTtpZihhLnVuaXF1ZSlicmVha319cmV0dXJuIHRoaXN9LGhhczpmdW5jdGlvbihhKXtpZihjKXt2YXIgYj0wLGQ9Yy5sZW5ndGg7Zm9yKDtiPGQ7YisrKWlmKGE9PT1jW2JdKXJldHVybiEwfXJldHVybiExfSxlbXB0eTpmdW5jdGlvbigpe2M9W107cmV0dXJuIHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtjPWQ9ZT1iO3JldHVybiB0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFjfSxsb2NrOmZ1bmN0aW9uKCl7ZD1iLCghZXx8ZT09PSEwKSYmcC5kaXNhYmxlKCk7cmV0dXJuIHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFkfSxmaXJlV2l0aDpmdW5jdGlvbihiLGMpe2QmJihqP2Eub25jZXx8ZC5wdXNoKFtiLGNdKTooIWEub25jZXx8IWUpJiZvKGIsYykpO3JldHVybiB0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cC5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFpfX07cmV0dXJuIHB9O3ZhciBpPVtdLnNsaWNlO2YuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxjPWYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGQ9Zi5DYWxsYmFja3MoIm1lbW9yeSIpLGU9InBlbmRpbmciLGc9e3Jlc29sdmU6YixyZWplY3Q6Yyxub3RpZnk6ZH0saD17ZG9uZTpiLmFkZCxmYWlsOmMuYWRkLHByb2dyZXNzOmQuYWRkLHN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGV9LGlzUmVzb2x2ZWQ6Yi5maXJlZCxpc1JlamVjdGVkOmMuZmlyZWQsdGhlbjpmdW5jdGlvbihhLGIsYyl7aS5kb25lKGEpLmZhaWwoYikucHJvZ3Jlc3MoYyk7cmV0dXJuIHRoaXN9LGFsd2F5czpmdW5jdGlvbigpe2kuZG9uZS5hcHBseShpLGFyZ3VtZW50cykuZmFpbC5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXN9LHBpcGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLkRlZmVycmVkKGZ1bmN0aW9uKGQpe2YuZWFjaCh7ZG9uZTpbYSwicmVzb2x2ZSJdLGZhaWw6W2IsInJlamVjdCJdLHByb2dyZXNzOltjLCJub3RpZnkiXX0sZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzBdLGU9YlsxXSxnO2YuaXNGdW5jdGlvbihjKT9pW2FdKGZ1bmN0aW9uKCl7Zz1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxnJiZmLmlzRnVuY3Rpb24oZy5wcm9taXNlKT9nLnByb21pc2UoKS50aGVuKGQucmVzb2x2ZSxkLnJlamVjdCxkLm5vdGlmeSk6ZFtlKyJXaXRoIl0odGhpcz09PWk/ZDp0aGlzLFtnXSl9KTppW2FdKGRbZV0pfSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClhPWg7ZWxzZSBmb3IodmFyIGIgaW4gaClhW2JdPWhbYl07cmV0dXJuIGF9fSxpPWgucHJvbWlzZSh7fSksajtmb3IoaiBpbiBnKWlbal09Z1tqXS5maXJlLGlbaisiV2l0aCJdPWdbal0uZmlyZVdpdGg7aS5kb25lKGZ1bmN0aW9uKCl7ZT0icmVzb2x2ZWQifSxjLmRpc2FibGUsZC5sb2NrKS5mYWlsKGZ1bmN0aW9uKCl7ZT0icmVqZWN0ZWQifSxiLmRpc2FibGUsZC5sb2NrKSxhJiZhLmNhbGwoaSxpKTtyZXR1cm4gaX0sd2hlbjpmdW5jdGlvbihhKXtmdW5jdGlvbiBtKGEpe3JldHVybiBmdW5jdGlvbihiKXtlW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmIsai5ub3RpZnlXaXRoKGssZSl9fWZ1bmN0aW9uIGwoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2JbYV09YXJndW1lbnRzLmxlbmd0aD4xP2kuY2FsbChhcmd1bWVudHMsMCk6YywtLWd8fGoucmVzb2x2ZVdpdGgoaixiKX19dmFyIGI9aS5jYWxsKGFyZ3VtZW50cywwKSxjPTAsZD1iLmxlbmd0aCxlPUFycmF5KGQpLGc9ZCxoPWQsaj1kPD0xJiZhJiZmLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hOmYuRGVmZXJyZWQoKSxrPWoucHJvbWlzZSgpO2lmKGQ+MSl7Zm9yKDtjPGQ7YysrKWJbY10mJmJbY10ucHJvbWlzZSYmZi5pc0Z1bmN0aW9uKGJbY10ucHJvbWlzZSk/YltjXS5wcm9taXNlKCkudGhlbihsKGMpLGoucmVqZWN0LG0oYykpOi0tZztnfHxqLnJlc29sdmVXaXRoKGosYil9ZWxzZSBqIT09YSYmai5yZXNvbHZlV2l0aChqLGQ/W2FdOltdKTtyZXR1cm4ga319KSxmLnN1cHBvcnQ9ZnVuY3Rpb24oKXt2YXIgYixkLGUsZyxoLGksaixrLGwsbSxuLG8scD1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHE9Yy5kb2N1bWVudEVsZW1lbnQ7cC5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxwLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGU9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdO2lmKCFkfHwhZC5sZW5ndGh8fCFlKXJldHVybnt9O2c9Yy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxoPWcuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaT1wLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGI9e2xlYWRpbmdXaGl0ZXNwYWNlOnAuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi90b3AvLnRlc3QoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmUuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1Ly50ZXN0KGUuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFlLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6cC5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTpjLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLHN1Ym1pdEJ1YmJsZXM6ITAsY2hhbmdlQnViYmxlczohMCxmb2N1c2luQnViYmxlczohMSxkZWxldGVFeHBhbmRvOiEwLG5vQ2xvbmVFdmVudDohMCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dyYXBCbG9ja3M6ITEscmVsaWFibGVNYXJnaW5SaWdodDohMCxwaXhlbE1hcmdpbjohMH0sZi5ib3hNb2RlbD1iLmJveE1vZGVsPWMuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IixpLmNoZWNrZWQ9ITAsYi5ub0Nsb25lQ2hlY2tlZD1pLmNsb25lTm9kZSghMCkuY2hlY2tlZCxnLmRpc2FibGVkPSEwLGIub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBwLnRlc3R9Y2F0Y2gocil7Yi5kZWxldGVFeHBhbmRvPSExfSFwLmFkZEV2ZW50TGlzdGVuZXImJnAuYXR0YWNoRXZlbnQmJnAuZmlyZUV2ZW50JiYocC5hdHRhY2hFdmVudCgib25jbGljayIsZnVuY3Rpb24oKXtiLm5vQ2xvbmVFdmVudD0hMX0pLHAuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksaT1jLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaS52YWx1ZT0idCIsaS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGIucmFkaW9WYWx1ZT1pLnZhbHVlPT09InQiLGkuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGkuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHAuYXBwZW5kQ2hpbGQoaSksaj1jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxqLmFwcGVuZENoaWxkKHAubGFzdENoaWxkKSxiLmNoZWNrQ2xvbmU9ai5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYi5hcHBlbmRDaGVja2VkPWkuY2hlY2tlZCxqLnJlbW92ZUNoaWxkKGkpLGouYXBwZW5kQ2hpbGQocCk7aWYocC5hdHRhY2hFdmVudClmb3IobiBpbntzdWJtaXQ6MSxjaGFuZ2U6MSxmb2N1c2luOjF9KW09Im9uIituLG89bSBpbiBwLG98fChwLnNldEF0dHJpYnV0ZShtLCJyZXR1cm47Iiksbz10eXBlb2YgcFttXT09ImZ1bmN0aW9uIiksYltuKyJCdWJibGVzIl09bztqLnJlbW92ZUNoaWxkKHApLGo9Zz1oPXA9aT1udWxsLGYoZnVuY3Rpb24oKXt2YXIgZCxlLGcsaCxpLGosbCxtLG4scSxyLHMsdCx1PWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTshdXx8KG09MSx0PSJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOiIscj0icG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIscz10KyIwO3Zpc2liaWxpdHk6aGlkZGVuOyIsbj0ic3R5bGU9JyIrcit0KyI1cHggc29saWQgIzAwMDsiLHE9IjxkaXYgIituKyJkaXNwbGF5OmJsb2NrOyc+PGRpdiBzdHlsZT0nIit0KyIwO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuOyc+PC9kaXY+PC9kaXY+IisiPHRhYmxlICIrbisiJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIrIjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IixkPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PXMrIndpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246c3RhdGljO3RvcDowO21hcmdpbi10b3A6IittKyJweCIsdS5pbnNlcnRCZWZvcmUoZCx1LmZpcnN0Q2hpbGQpLHA9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLmFwcGVuZENoaWxkKHApLHAuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZCBzdHlsZT0nIit0KyIwO2Rpc3BsYXk6bm9uZSc+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsaz1wLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLG89a1swXS5vZmZzZXRIZWlnaHQ9PT0wLGtbMF0uc3R5bGUuZGlzcGxheT0iIixrWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGIucmVsaWFibGVIaWRkZW5PZmZzZXRzPW8mJmtbMF0ub2Zmc2V0SGVpZ2h0PT09MCxhLmdldENvbXB1dGVkU3R5bGUmJihwLmlubmVySFRNTD0iIixsPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksbC5zdHlsZS53aWR0aD0iMCIsbC5zdHlsZS5tYXJnaW5SaWdodD0iMCIscC5zdHlsZS53aWR0aD0iMnB4IixwLmFwcGVuZENoaWxkKGwpLGIucmVsaWFibGVNYXJnaW5SaWdodD0ocGFyc2VJbnQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShsLG51bGwpfHx7bWFyZ2luUmlnaHQ6MH0pLm1hcmdpblJpZ2h0LDEwKXx8MCk9PT0wKSx0eXBlb2YgcC5zdHlsZS56b29tIT0idW5kZWZpbmVkIiYmKHAuaW5uZXJIVE1MPSIiLHAuc3R5bGUud2lkdGg9cC5zdHlsZS5wYWRkaW5nPSIxcHgiLHAuc3R5bGUuYm9yZGVyPTAscC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixwLnN0eWxlLmRpc3BsYXk9ImlubGluZSIscC5zdHlsZS56b29tPTEsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PXAub2Zmc2V0V2lkdGg9PT0zLHAuc3R5bGUuZGlzcGxheT0iYmxvY2siLHAuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHAuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSd3aWR0aDo1cHg7Jz48L2Rpdj4iLGIuc2hyaW5rV3JhcEJsb2Nrcz1wLm9mZnNldFdpZHRoIT09MykscC5zdHlsZS5jc3NUZXh0PXIrcyxwLmlubmVySFRNTD1xLGU9cC5maXJzdENoaWxkLGc9ZS5maXJzdENoaWxkLGk9ZS5uZXh0U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQsaj17ZG9lc05vdEFkZEJvcmRlcjpnLm9mZnNldFRvcCE9PTUsZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM6aS5vZmZzZXRUb3A9PT01fSxnLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsZy5zdHlsZS50b3A9IjIwcHgiLGouZml4ZWRQb3NpdGlvbj1nLm9mZnNldFRvcD09PTIwfHxnLm9mZnNldFRvcD09PTE1LGcuc3R5bGUucG9zaXRpb249Zy5zdHlsZS50b3A9IiIsZS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsai5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9Zy5vZmZzZXRUb3A9PT0tNSxqLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PXUub2Zmc2V0VG9wIT09bSxhLmdldENvbXB1dGVkU3R5bGUmJihwLnN0eWxlLm1hcmdpblRvcD0iMSUiLGIucGl4ZWxNYXJnaW49KGEuZ2V0Q29tcHV0ZWRTdHlsZShwLG51bGwpfHx7bWFyZ2luVG9wOjB9KS5tYXJnaW5Ub3AhPT0iMSUiKSx0eXBlb2YgZC5zdHlsZS56b29tIT0idW5kZWZpbmVkIiYmKGQuc3R5bGUuem9vbT0xKSx1LnJlbW92ZUNoaWxkKGQpLGw9cD1kPW51bGwsZi5leHRlbmQoYixqKSl9KTtyZXR1cm4gYn0oKTt2YXIgaj0vXig/Olx7LipcfXxcWy4qXF0pJC8saz0vKFtBLVpdKS9nO2YuZXh0ZW5kKHtjYWNoZTp7fSx1dWlkOjAsZXhwYW5kbzoialF1ZXJ5IisoZi5mbi5qcXVlcnkrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksbm9EYXRhOntlbWJlZDohMCxvYmplY3Q6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIsYXBwbGV0OiEwfSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YS5ub2RlVHlwZT9mLmNhY2hlW2FbZi5leHBhbmRvXV06YVtmLmV4cGFuZG9dO3JldHVybiEhYSYmIW0oYSl9LGRhdGE6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBnLGgsaSxqPWYuZXhwYW5kbyxrPXR5cGVvZiBjPT0ic3RyaW5nIixsPWEubm9kZVR5cGUsbT1sP2YuY2FjaGU6YSxuPWw/YVtqXTphW2pdJiZqLG89Yz09PSJldmVudHMiO2lmKCghbnx8IW1bbl18fCFvJiYhZSYmIW1bbl0uZGF0YSkmJmsmJmQ9PT1iKXJldHVybjtufHwobD9hW2pdPW49KytmLnV1aWQ6bj1qKSxtW25dfHwobVtuXT17fSxsfHwobVtuXS50b0pTT049Zi5ub29wKSk7aWYodHlwZW9mIGM9PSJvYmplY3QifHx0eXBlb2YgYz09ImZ1bmN0aW9uIillP21bbl09Zi5leHRlbmQobVtuXSxjKTptW25dLmRhdGE9Zi5leHRlbmQobVtuXS5kYXRhLGMpO2c9aD1tW25dLGV8fChoLmRhdGF8fChoLmRhdGE9e30pLGg9aC5kYXRhKSxkIT09YiYmKGhbZi5jYW1lbENhc2UoYyldPWQpO2lmKG8mJiFoW2NdKXJldHVybiBnLmV2ZW50cztrPyhpPWhbY10saT09bnVsbCYmKGk9aFtmLmNhbWVsQ2FzZShjKV0pKTppPWg7cmV0dXJuIGl9fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYixjKXtpZighIWYuYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxnLGg9Zi5leHBhbmRvLGk9YS5ub2RlVHlwZSxqPWk/Zi5jYWNoZTphLGs9aT9hW2hdOmg7aWYoIWpba10pcmV0dXJuO2lmKGIpe2Q9Yz9qW2tdOmpba10uZGF0YTtpZihkKXtmLmlzQXJyYXkoYil8fChiIGluIGQ/Yj1bYl06KGI9Zi5jYW1lbENhc2UoYiksYiBpbiBkP2I9W2JdOmI9Yi5zcGxpdCgiICIpKSk7Zm9yKGU9MCxnPWIubGVuZ3RoO2U8ZztlKyspZGVsZXRlIGRbYltlXV07aWYoIShjP206Zi5pc0VtcHR5T2JqZWN0KShkKSlyZXR1cm59fWlmKCFjKXtkZWxldGUgaltrXS5kYXRhO2lmKCFtKGpba10pKXJldHVybn1mLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8IWouc2V0SW50ZXJ2YWw/ZGVsZXRlIGpba106altrXT1udWxsLGkmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtoXTphLnJlbW92ZUF0dHJpYnV0ZT9hLnJlbW92ZUF0dHJpYnV0ZShoKTphW2hdPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZyxoLGksaj10aGlzWzBdLGs9MCxtPW51bGw7aWYoYT09PWIpe2lmKHRoaXMubGVuZ3RoKXttPWYuZGF0YShqKTtpZihqLm5vZGVUeXBlPT09MSYmIWYuX2RhdGEoaiwicGFyc2VkQXR0cnMiKSl7Zz1qLmF0dHJpYnV0ZXM7Zm9yKGk9Zy5sZW5ndGg7azxpO2srKyloPWdba10ubmFtZSxoLmluZGV4T2YoImRhdGEtIik9PT0wJiYoaD1mLmNhbWVsQ2FzZShoLnN1YnN0cmluZyg1KSksbChqLGgsbVtoXSkpO2YuX2RhdGEoaiwicGFyc2VkQXR0cnMiLCEwKX19cmV0dXJuIG19aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRhdGEodGhpcyxhKX0pO2Q9YS5zcGxpdCgiLiIsMiksZFsxXT1kWzFdPyIuIitkWzFdOiIiLGU9ZFsxXSsiISI7cmV0dXJuIGYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYyl7aWYoYz09PWIpe209dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIrZSxbZFswXV0pLG09PT1iJiZqJiYobT1mLmRhdGEoaixhKSxtPWwoaixhLG0pKTtyZXR1cm4gbT09PWImJmRbMV0/dGhpcy5kYXRhKGRbMF0pOm19ZFsxXT1jLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyk7Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIrZSxkKSxmLmRhdGEodGhpcyxhLGMpLGIudHJpZ2dlckhhbmRsZXIoImNoYW5nZURhdGEiK2UsZCl9KX0sbnVsbCxjLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCExKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxmLmV4dGVuZCh7X21hcms6ZnVuY3Rpb24oYSxiKXthJiYoYj0oYnx8ImZ4IikrIm1hcmsiLGYuX2RhdGEoYSxiLChmLl9kYXRhKGEsYil8fDApKzEpKX0sX3VubWFyazpmdW5jdGlvbihhLGIsYyl7YSE9PSEwJiYoYz1iLGI9YSxhPSExKTtpZihiKXtjPWN8fCJmeCI7dmFyIGQ9YysibWFyayIsZT1hPzA6KGYuX2RhdGEoYixkKXx8MSktMTtlP2YuX2RhdGEoYixkLGUpOihmLnJlbW92ZURhdGEoYixkLCEwKSxuKGIsYywibWFyayIpKX19LHF1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihhKXtiPShifHwiZngiKSsicXVldWUiLGQ9Zi5fZGF0YShhLGIpLGMmJighZHx8Zi5pc0FycmF5KGMpP2Q9Zi5fZGF0YShhLGIsZi5tYWtlQXJyYXkoYykpOmQucHVzaChjKSk7cmV0dXJuIGR8fFtdfX0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1mLnF1ZXVlKGEsYiksZD1jLnNoaWZ0KCksZT17fTtkPT09ImlucHJvZ3Jlc3MiJiYoZD1jLnNoaWZ0KCkpLGQmJihiPT09ImZ4IiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZi5fZGF0YShhLGIrIi5ydW4iLGUpLGQuY2FsbChhLGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKGEsYil9LGUpKSxjLmxlbmd0aHx8KGYucmVtb3ZlRGF0YShhLGIrInF1ZXVlICIrYisiLnJ1biIsITApLG4oYSxiLCJxdWV1ZSIpKX19KSxmLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxjKXt2YXIgZD0yO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIsZC0tKTtpZihhcmd1bWVudHMubGVuZ3RoPGQpcmV0dXJuIGYucXVldWUodGhpc1swXSxhKTtyZXR1cm4gYz09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mLnF1ZXVlKHRoaXMsYSxjKTthPT09ImZ4IiYmYlswXSE9PSJpbnByb2dyZXNzIiYmZi5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVsYXk6ZnVuY3Rpb24oYSxiKXthPWYuZng/Zi5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCI7cmV0dXJuIHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBtKCl7LS1ofHxkLnJlc29sdmVXaXRoKGUsW2VdKX10eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT1iKSxhPWF8fCJmeCI7dmFyIGQ9Zi5EZWZlcnJlZCgpLGU9dGhpcyxnPWUubGVuZ3RoLGg9MSxpPWErImRlZmVyIixqPWErInF1ZXVlIixrPWErIm1hcmsiLGw7d2hpbGUoZy0tKWlmKGw9Zi5kYXRhKGVbZ10saSxiLCEwKXx8KGYuZGF0YShlW2ddLGosYiwhMCl8fGYuZGF0YShlW2ddLGssYiwhMCkpJiZmLmRhdGEoZVtnXSxpLGYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCEwKSloKyssbC5hZGQobSk7bSgpO3JldHVybiBkLnByb21pc2UoYyl9fSk7dmFyIG89L1tcblx0XHJdL2cscD0vXHMrLyxxPS9cci9nLHI9L14oPzpidXR0b258aW5wdXQpJC9pLHM9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksdD0vXmEoPzpyZWEpPyQvaSx1PS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLHY9Zi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSx3LHgseTtmLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGYuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGYucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXthPWYucHJvcEZpeFthXXx8YTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09YixkZWxldGUgdGhpc1thXX1jYXRjaChjKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGcsaCxpO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmciKXtiPWEuc3BsaXQocCk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2U9dGhpc1tjXTtpZihlLm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUmJmIubGVuZ3RoPT09MSllLmNsYXNzTmFtZT1hO2Vsc2V7Zz0iICIrZS5jbGFzc05hbWUrIiAiO2ZvcihoPTAsaT1iLmxlbmd0aDtoPGk7aCsrKX5nLmluZGV4T2YoIiAiK2JbaF0rIiAiKXx8KGcrPWJbaF0rIiAiKTtlLmNsYXNzTmFtZT1mLnRyaW0oZyl9fX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGcsaCxpLGo7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyJ8fGE9PT1iKXtjPShhfHwiIikuc3BsaXQocCk7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTtpZihnLm5vZGVUeXBlPT09MSYmZy5jbGFzc05hbWUpaWYoYSl7aD0oIiAiK2cuY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIik7Zm9yKGk9MCxqPWMubGVuZ3RoO2k8ajtpKyspaD1oLnJlcGxhY2UoIiAiK2NbaV0rIiAiLCIgIik7Zy5jbGFzc05hbWU9Zi50cmltKGgpfWVsc2UgZy5jbGFzc05hbWU9IiJ9fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGQ9dHlwZW9mIGI9PSJib29sZWFuIjtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtmKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoYz09PSJzdHJpbmciKXt2YXIgZSxnPTAsaD1mKHRoaXMpLGk9YixqPWEuc3BsaXQocCk7d2hpbGUoZT1qW2crK10paT1kP2k6IWguaGFzQ2xhc3MoZSksaFtpPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZSl9ZWxzZSBpZihjPT09InVuZGVmaW5lZCJ8fGM9PT0iYm9vbGVhbiIpdGhpcy5jbGFzc05hbWUmJmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6Zi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIifSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiPSIgIithKyIgIixjPTAsZD10aGlzLmxlbmd0aDtmb3IoO2M8ZDtjKyspaWYodGhpc1tjXS5ub2RlVHlwZT09PTEmJigiICIrdGhpc1tjXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG8sIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfSx2YWw6ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc9dGhpc1swXTt7aWYoISFhcmd1bWVudHMubGVuZ3RoKXtlPWYuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBnPWYodGhpcyksaDtpZih0aGlzLm5vZGVUeXBlPT09MSl7ZT9oPWEuY2FsbCh0aGlzLGQsZy52YWwoKSk6aD1hLGg9PW51bGw/aD0iIjp0eXBlb2YgaD09Im51bWJlciI/aCs9IiI6Zi5pc0FycmF5KGgpJiYoaD1mLm1hcChoLGZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOmErIiJ9KSksYz1mLnZhbEhvb2tzW3RoaXMudHlwZV18fGYudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZighY3x8ISgic2V0ImluIGMpfHxjLnNldCh0aGlzLGgsInZhbHVlIik9PT1iKXRoaXMudmFsdWU9aH19KX1pZihnKXtjPWYudmFsSG9va3NbZy50eXBlXXx8Zi52YWxIb29rc1tnLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZywidmFsdWUiKSkhPT1iKXJldHVybiBkO2Q9Zy52YWx1ZTtyZXR1cm4gdHlwZW9mIGQ9PSJzdHJpbmciP2QucmVwbGFjZShxLCIiKTpkPT1udWxsPyIiOmR9fX19KSxmLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuYXR0cmlidXRlcy52YWx1ZTtyZXR1cm4hYnx8Yi5zcGVjaWZpZWQ/YS52YWx1ZTphLnRleHR9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnPWEuc2VsZWN0ZWRJbmRleCxoPVtdLGk9YS5vcHRpb25zLGo9YS50eXBlPT09InNlbGVjdC1vbmUiO2lmKGc8MClyZXR1cm4gbnVsbDtjPWo/ZzowLGQ9aj9nKzE6aS5sZW5ndGg7Zm9yKDtjPGQ7YysrKXtlPWlbY107aWYoZS5zZWxlY3RlZCYmKGYuc3VwcG9ydC5vcHREaXNhYmxlZD8hZS5kaXNhYmxlZDplLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKT09PW51bGwpJiYoIWUucGFyZW50Tm9kZS5kaXNhYmxlZHx8IWYubm9kZU5hbWUoZS5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7Yj1mKGUpLnZhbCgpO2lmKGopcmV0dXJuIGI7aC5wdXNoKGIpfX1pZihqJiYhaC5sZW5ndGgmJmkubGVuZ3RoKXJldHVybiBmKGlbZ10pLnZhbCgpO3JldHVybiBofSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1mLm1ha2VBcnJheShiKTtmKGEpLmZpbmQoIm9wdGlvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPWYuaW5BcnJheShmKHRoaXMpLnZhbCgpLGMpPj0wfSksYy5sZW5ndGh8fChhLnNlbGVjdGVkSW5kZXg9LTEpO3JldHVybiBjfX19LGF0dHJGbjp7dmFsOiEwLGNzczohMCxodG1sOiEwLHRleHQ6ITAsZGF0YTohMCx3aWR0aDohMCxoZWlnaHQ6ITAsb2Zmc2V0OiEwfSxhdHRyOmZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBnLGgsaSxqPWEubm9kZVR5cGU7aWYoISFhJiZqIT09MyYmaiE9PTgmJmohPT0yKXtpZihlJiZjIGluIGYuYXR0ckZuKXJldHVybiBmKGEpW2NdKGQpO2lmKHR5cGVvZiBhLmdldEF0dHJpYnV0ZT09InVuZGVmaW5lZCIpcmV0dXJuIGYucHJvcChhLGMsZCk7aT1qIT09MXx8IWYuaXNYTUxEb2MoYSksaSYmKGM9Yy50b0xvd2VyQ2FzZSgpLGg9Zi5hdHRySG9va3NbY118fCh1LnRlc3QoYyk/eDp3KSk7aWYoZCE9PWIpe2lmKGQ9PT1udWxsKXtmLnJlbW92ZUF0dHIoYSxjKTtyZXR1cm59aWYoaCYmInNldCJpbiBoJiZpJiYoZz1oLnNldChhLGQsYykpIT09YilyZXR1cm4gZzthLnNldEF0dHJpYnV0ZShjLCIiK2QpO3JldHVybiBkfWlmKGgmJiJnZXQiaW4gaCYmaSYmKGc9aC5nZXQoYSxjKSkhPT1udWxsKXJldHVybiBnO2c9YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIGc9PT1udWxsP2I6Z319LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZyxoLGk9MDtpZihiJiZhLm5vZGVUeXBlPT09MSl7ZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQocCksZz1kLmxlbmd0aDtmb3IoO2k8ZztpKyspZT1kW2ldLGUmJihjPWYucHJvcEZpeFtlXXx8ZSxoPXUudGVzdChlKSxofHxmLmF0dHIoYSxlLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZSh2P2U6YyksaCYmYyBpbiBhJiYoYVtjXT0hMSkpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihyLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlmLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFmLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJmYubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTthLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9Yyk7cmV0dXJuIGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuZ2V0KGEsYik7cmV0dXJuIGIgaW4gYT9hLnZhbHVlOm51bGx9LHNldDpmdW5jdGlvbihhLGIsYyl7aWYodyYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdy5zZXQoYSxiLGMpO2EudmFsdWU9Yn19fSxwcm9wRml4Ont0YWJpbmRleDoidGFiSW5kZXgiLHJlYWRvbmx5OiJyZWFkT25seSIsImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIsY2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIixjb250ZW50ZWRpdGFibGU6ImNvbnRlbnRFZGl0YWJsZSJ9LHByb3A6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpPWEubm9kZVR5cGU7aWYoISFhJiZpIT09MyYmaSE9PTgmJmkhPT0yKXtoPWkhPT0xfHwhZi5pc1hNTERvYyhhKSxoJiYoYz1mLnByb3BGaXhbY118fGMsZz1mLnByb3BIb29rc1tjXSk7cmV0dXJuIGQhPT1iP2cmJiJzZXQiaW4gZyYmKGU9Zy5zZXQoYSxkLGMpKSE9PWI/ZTphW2NdPWQ6ZyYmImdldCJpbiBnJiYoZT1nLmdldChhLGMpKSE9PW51bGw/ZTphW2NdfX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6cy50ZXN0KGEubm9kZU5hbWUpfHx0LnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxmLmF0dHJIb29rcy50YWJpbmRleD1mLnByb3BIb29rcy50YWJJbmRleCx4PXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPWYucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sdnx8KHk9e25hbWU6ITAsaWQ6ITAsY29vcmRzOiEwfSx3PWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmKHlbY10/ZC5ub2RlVmFsdWUhPT0iIjpkLnNwZWNpZmllZCk/ZC5ub2RlVmFsdWU6Yn0sc2V0OmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1hLmdldEF0dHJpYnV0ZU5vZGUoZCk7ZXx8KGU9Yy5jcmVhdGVBdHRyaWJ1dGUoZCksYS5zZXRBdHRyaWJ1dGVOb2RlKGUpKTtyZXR1cm4gZS5ub2RlVmFsdWU9YisiIn19LGYuYXR0ckhvb2tzLnRhYmluZGV4LnNldD13LnNldCxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5hdHRySG9va3NbYl09Zi5leHRlbmQoZi5hdHRySG9va3NbYl0se3NldDpmdW5jdGlvbihhLGMpe2lmKGM9PT0iIil7YS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpO3JldHVybiBjfX19KX0pLGYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OncuZ2V0LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSx3LnNldChhLGIsYyl9fSksZi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxmLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe2YuYXR0ckhvb2tzW2NdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09PW51bGw/YjpkfX0pfSksZi5zdXBwb3J0LnN0eWxlfHwoZi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9IiIrYn19KSxmLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChmLnByb3BIb29rcy5zZWxlY3RlZD1mLmV4dGVuZChmLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpO3JldHVybiBudWxsfX0pKSxmLnN1cHBvcnQuZW5jdHlwZXx8KGYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLGYuc3VwcG9ydC5jaGVja09ufHxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109Zi5leHRlbmQoZi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYoZi5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9Zi5pbkFycmF5KGYoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sQj0vKD86Xnxccylob3ZlcihcLlxTKyk/XGIvLEM9L15rZXkvLEQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLEU9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEY9L14oXHcqKSg/OiMoW1x3XC1dKykpPyg/OlwuKFtcd1wtXSspKT8kLyxHPWZ1bmN0aW9uKAphKXt2YXIgYj1GLmV4ZWMoYSk7YiYmKGJbMV09KGJbMV18fCIiKS50b0xvd2VyQ2FzZSgpLGJbM109YlszXSYmbmV3IFJlZ0V4cCgiKD86XnxcXHMpIitiWzNdKyIoPzpcXHN8JCkiKSk7cmV0dXJuIGJ9LEg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmF0dHJpYnV0ZXN8fHt9O3JldHVybighYlsxXXx8YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09YlsxXSkmJighYlsyXXx8KGMuaWR8fHt9KS52YWx1ZT09PWJbMl0pJiYoIWJbM118fGJbM10udGVzdCgoY1siY2xhc3MiXXx8e30pLnZhbHVlKSl9LEk9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShCLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscztpZighKGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8IWN8fCFkfHwhKGg9Zi5fZGF0YShhKSkpKXtkLmhhbmRsZXImJihwPWQsZD1wLmhhbmRsZXIsZz1wLnNlbGVjdG9yKSxkLmd1aWR8fChkLmd1aWQ9Zi5ndWlkKyspLGo9aC5ldmVudHMsanx8KGguZXZlbnRzPWo9e30pLGk9aC5oYW5kbGUsaXx8KGguaGFuZGxlPWk9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5kaXNwYXRjaC5hcHBseShpLmVsZW0sYXJndW1lbnRzKTpifSxpLmVsZW09YSksYz1mLnRyaW0oSShjKSkuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUEuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLHF1aWNrOmcmJkcoZyksbmFtZXNwYWNlOm4uam9pbigiLiIpfSxwKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGc9Zi5oYXNEYXRhKGEpJiZmLl9kYXRhKGEpLGgsaSxqLGssbCxtLG4sbyxwLHEscixzO2lmKCEhZyYmISEobz1nLmV2ZW50cykpe2I9Zi50cmltKEkoYnx8IiIpKS5zcGxpdCgiICIpO2ZvcihoPTA7aDxiLmxlbmd0aDtoKyspe2k9QS5leGVjKGJbaF0pfHxbXSxqPWs9aVsxXSxsPWlbMl07aWYoIWope2ZvcihqIGluIG8pZi5ldmVudC5yZW1vdmUoYSxqK2JbaF0sYyxkLCEwKTtjb250aW51ZX1wPWYuZXZlbnQuc3BlY2lhbFtqXXx8e30saj0oZD9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8aixyPW9bal18fFtdLG09ci5sZW5ndGgsbD1sP25ldyBSZWdFeHAoIihefFxcLikiK2wuc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtmb3Iobj0wO248ci5sZW5ndGg7bisrKXM9cltuXSwoZXx8az09PXMub3JpZ1R5cGUpJiYoIWN8fGMuZ3VpZD09PXMuZ3VpZCkmJighbHx8bC50ZXN0KHMubmFtZXNwYWNlKSkmJighZHx8ZD09PXMuc2VsZWN0b3J8fGQ9PT0iKioiJiZzLnNlbGVjdG9yKSYmKHIuc3BsaWNlKG4tLSwxKSxzLnNlbGVjdG9yJiZyLmRlbGVnYXRlQ291bnQtLSxwLnJlbW92ZSYmcC5yZW1vdmUuY2FsbChhLHMpKTtyLmxlbmd0aD09PTAmJm0hPT1yLmxlbmd0aCYmKCghcC50ZWFyZG93bnx8cC50ZWFyZG93bi5jYWxsKGEsbCk9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxqLGcuaGFuZGxlKSxkZWxldGUgb1tqXSl9Zi5pc0VtcHR5T2JqZWN0KG8pJiYocT1nLmhhbmRsZSxxJiYocS5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2lmKEUudGVzdChoK2YuZXZlbnQudHJpZ2dlcmVkKSlyZXR1cm47aC5pbmRleE9mKCIhIik+PTAmJihoPWguc2xpY2UoMCwtMSksaz0hMCksaC5pbmRleE9mKCIuIik+PTAmJihpPWguc3BsaXQoIi4iKSxoPWkuc2hpZnQoKSxpLnNvcnQoKSk7aWYoKCFlfHxmLmV2ZW50LmN1c3RvbUV2ZW50W2hdKSYmIWYuZXZlbnQuZ2xvYmFsW2hdKXJldHVybjtjPXR5cGVvZiBjPT0ib2JqZWN0Ij9jW2YuZXhwYW5kb10/YzpuZXcgZi5FdmVudChoLGMpOm5ldyBmLkV2ZW50KGgpLGMudHlwZT1oLGMuaXNUcmlnZ2VyPSEwLGMuZXhjbHVzaXZlPWssYy5uYW1lc3BhY2U9aS5qb2luKCIuIiksYy5uYW1lc3BhY2VfcmU9Yy5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTpudWxsLG89aC5pbmRleE9mKCI6Iik8MD8ib24iK2g6IiI7aWYoIWUpe2o9Zi5jYWNoZTtmb3IobCBpbiBqKWpbbF0uZXZlbnRzJiZqW2xdLmV2ZW50c1toXSYmZi5ldmVudC50cmlnZ2VyKGMsZCxqW2xdLmhhbmRsZS5lbGVtLCEwKTtyZXR1cm59Yy5yZXN1bHQ9YixjLnRhcmdldHx8KGMudGFyZ2V0PWUpLGQ9ZCE9bnVsbD9mLm1ha2VBcnJheShkKTpbXSxkLnVuc2hpZnQoYykscD1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2lmKHAudHJpZ2dlciYmcC50cmlnZ2VyLmFwcGx5KGUsZCk9PT0hMSlyZXR1cm47cj1bW2UscC5iaW5kVHlwZXx8aF1dO2lmKCFnJiYhcC5ub0J1YmJsZSYmIWYuaXNXaW5kb3coZSkpe3M9cC5kZWxlZ2F0ZVR5cGV8fGgsbT1FLnRlc3QocytoKT9lOmUucGFyZW50Tm9kZSxuPW51bGw7Zm9yKDttO209bS5wYXJlbnROb2RlKXIucHVzaChbbSxzXSksbj1tO24mJm49PT1lLm93bmVyRG9jdW1lbnQmJnIucHVzaChbbi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3d8fGEsc10pfWZvcihsPTA7bDxyLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtsKyspbT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk9PT0hMSYmYy5wcmV2ZW50RGVmYXVsdCgpO2MudHlwZT1oLCFnJiYhYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFwLl9kZWZhdWx0fHxwLl9kZWZhdWx0LmFwcGx5KGUub3duZXJEb2N1bWVudCxkKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikpJiZmLmFjY2VwdERhdGEoZSkmJm8mJmVbaF0mJihoIT09ImZvY3VzIiYmaCE9PSJibHVyInx8Yy50YXJnZXQub2Zmc2V0V2lkdGghPT0wKSYmIWYuaXNXaW5kb3coZSkmJihuPWVbb10sbiYmKGVbb109bnVsbCksZi5ldmVudC50cmlnZ2VyZWQ9aCxlW2hdKCksZi5ldmVudC50cmlnZ2VyZWQ9YixuJiYoZVtvXT1uKSk7cmV0dXJuIGMucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYyl7Yz1mLmV2ZW50LmZpeChjfHxhLmV2ZW50KTt2YXIgZD0oZi5fZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW2MudHlwZV18fFtdLGU9ZC5kZWxlZ2F0ZUNvdW50LGc9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaD0hYy5leGNsdXNpdmUmJiFjLm5hbWVzcGFjZSxpPWYuZXZlbnQuc3BlY2lhbFtjLnR5cGVdfHx7fSxqPVtdLGssbCxtLG4sbyxwLHEscixzLHQsdTtnWzBdPWMsYy5kZWxlZ2F0ZVRhcmdldD10aGlzO2lmKCFpLnByZURpc3BhdGNofHxpLnByZURpc3BhdGNoLmNhbGwodGhpcyxjKSE9PSExKXtpZihlJiYoIWMuYnV0dG9ufHxjLnR5cGUhPT0iY2xpY2siKSl7bj1mKHRoaXMpLG4uY29udGV4dD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXM7Zm9yKG09Yy50YXJnZXQ7bSE9dGhpczttPW0ucGFyZW50Tm9kZXx8dGhpcylpZihtLmRpc2FibGVkIT09ITApe3A9e30scj1bXSxuWzBdPW07Zm9yKGs9MDtrPGU7aysrKXM9ZFtrXSx0PXMuc2VsZWN0b3IscFt0XT09PWImJihwW3RdPXMucXVpY2s/SChtLHMucXVpY2spOm4uaXModCkpLHBbdF0mJnIucHVzaChzKTtyLmxlbmd0aCYmai5wdXNoKHtlbGVtOm0sbWF0Y2hlczpyfSl9fWQubGVuZ3RoPmUmJmoucHVzaCh7ZWxlbTp0aGlzLG1hdGNoZXM6ZC5zbGljZShlKX0pO2ZvcihrPTA7azxqLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtrKyspe3E9altrXSxjLmN1cnJlbnRUYXJnZXQ9cS5lbGVtO2ZvcihsPTA7bDxxLm1hdGNoZXMubGVuZ3RoJiYhYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpO2wrKyl7cz1xLm1hdGNoZXNbbF07aWYoaHx8IWMubmFtZXNwYWNlJiYhcy5uYW1lc3BhY2V8fGMubmFtZXNwYWNlX3JlJiZjLm5hbWVzcGFjZV9yZS50ZXN0KHMubmFtZXNwYWNlKSljLmRhdGE9cy5kYXRhLGMuaGFuZGxlT2JqPXMsbz0oKGYuZXZlbnQuc3BlY2lhbFtzLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8cy5oYW5kbGVyKS5hcHBseShxLmVsZW0sZyksbyE9PWImJihjLnJlc3VsdD1vLG89PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSl9fWkucG9zdERpc3BhdGNoJiZpLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYyk7cmV0dXJuIGMucmVzdWx0fX0scHJvcHM6ImF0dHJDaGFuZ2UgYXR0ck5hbWUgcmVsYXRlZE5vZGUgc3JjRWxlbWVudCBhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe2Eud2hpY2g9PW51bGwmJihhLndoaWNoPWIuY2hhckNvZGUhPW51bGw/Yi5jaGFyQ29kZTpiLmtleUNvZGUpO3JldHVybiBhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxkKXt2YXIgZSxmLGcsaD1kLmJ1dHRvbixpPWQuZnJvbUVsZW1lbnQ7YS5wYWdlWD09bnVsbCYmZC5jbGllbnRYIT1udWxsJiYoZT1hLnRhcmdldC5vd25lckRvY3VtZW50fHxjLGY9ZS5kb2N1bWVudEVsZW1lbnQsZz1lLmJvZHksYS5wYWdlWD1kLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZyYmZy5zY3JvbGxMZWZ0fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxnJiZnLmNsaWVudExlZnR8fDApLGEucGFnZVk9ZC5jbGllbnRZKyhmJiZmLnNjcm9sbFRvcHx8ZyYmZy5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8ZyYmZy5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZpJiYoYS5yZWxhdGVkVGFyZ2V0PWk9PT1hLnRhcmdldD9kLnRvRWxlbWVudDppKSwhYS53aGljaCYmaCE9PWImJihhLndoaWNoPWgmMT8xOmgmMj8zOmgmND8yOjApO3JldHVybiBhfX0sZml4OmZ1bmN0aW9uKGEpe2lmKGFbZi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgZCxlLGc9YSxoPWYuZXZlbnQuZml4SG9va3NbYS50eXBlXXx8e30saT1oLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGgucHJvcHMpOnRoaXMucHJvcHM7YT1mLkV2ZW50KGcpO2ZvcihkPWkubGVuZ3RoO2Q7KWU9aVstLWRdLGFbZV09Z1tlXTthLnRhcmdldHx8KGEudGFyZ2V0PWcuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PT09YiYmKGEubWV0YUtleT1hLmN0cmxLZXkpO3JldHVybiBoLmZpbHRlcj9oLmZpbHRlcihhLGcpOmF9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpmLmJpbmRSZWFkeX0sbG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP0s6Sik6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPUs7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Szt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Syx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6Sixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpKLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOkp9LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLGQ9YS5yZWxhdGVkVGFyZ2V0LGU9YS5oYW5kbGVPYmosZz1lLnNlbGVjdG9yLGg7aWYoIWR8fGQhPT1jJiYhZi5jb250YWlucyhjLGQpKWEudHlwZT1lLm9yaWdUeXBlLGg9ZS5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YjtyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXthLl9zdWJtaXRfYnViYmxlPSEwfSksZC5fc3VibWl0X2F0dGFjaGVkPSEwKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZmLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7aWYoZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpcmV0dXJuITE7Zi5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxmLnN1cHBvcnQuY2hhbmdlQnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7aWYoei50ZXN0KHRoaXMubm9kZU5hbWUpKXtpZih0aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8iKWYuZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe2Eub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWU9PT0iY2hlY2tlZCImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksZi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEsZi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLGEsITApKX0pO3JldHVybiExfWYuZXZlbnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3oudGVzdChiLm5vZGVOYW1lKSYmIWIuX2NoYW5nZV9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzU2ltdWxhdGVkJiYhYS5pc1RyaWdnZXImJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiB6LnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9ZHx8YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9SjtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYSxiLGMsZCwxKX0sb2ZmOmZ1bmN0aW9uKGEsYyxkKXtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iail7dmFyIGU9YS5oYW5kbGVPYmo7ZihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZS5uYW1lc3BhY2U/ZS5vcmlnVHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS5vcmlnVHlwZSxlLnNlbGVjdG9yLGUuaGFuZGxlcik7cmV0dXJuIHRoaXN9aWYodHlwZW9mIGE9PSJvYmplY3QiKXtmb3IodmFyIGcgaW4gYSl0aGlzLm9mZihnLGMsYVtnXSk7cmV0dXJuIHRoaXN9aWYoYz09PSExfHx0eXBlb2YgYz09ImZ1bmN0aW9uIilkPWMsYz1iO2Q9PT0hMSYmKGQ9Sik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZXZlbnQucmVtb3ZlKHRoaXMsYSxkLGMpfSl9LGJpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxsaXZlOmZ1bmN0aW9uKGEsYixjKXtmKHRoaXMuY29udGV4dCkub24oYSx0aGlzLnNlbGVjdG9yLGIsYyk7cmV0dXJuIHRoaXN9LGRpZTpmdW5jdGlvbihhLGIpe2YodGhpcy5jb250ZXh0KS5vZmYoYSx0aGlzLnNlbGVjdG9yfHwiKioiLGIpO3JldHVybiB0aGlzfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PTE/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGEsYyl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe2lmKHRoaXNbMF0pcmV0dXJuIGYuZXZlbnQudHJpZ2dlcihhLGIsdGhpc1swXSwhMCl9LHRvZ2dsZTpmdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMsYz1hLmd1aWR8fGYuZ3VpZCsrLGQ9MCxlPWZ1bmN0aW9uKGMpe3ZhciBlPShmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCl8fDApJWQ7Zi5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQsZSsxKSxjLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGJbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfHwhMX07ZS5ndWlkPWM7d2hpbGUoZDxiLmxlbmd0aCliW2QrK10uZ3VpZD1jO3JldHVybiB0aGlzLmNsaWNrKGUpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KSxmLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEsYyl7Yz09bnVsbCYmKGM9YSxhPW51bGwpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIoYil9LGYuYXR0ckZuJiYoZi5hdHRyRm5bYl09ITApLEMudGVzdChiKSYmKGYuZXZlbnQuZml4SG9va3NbYl09Zi5ldmVudC5rZXlIb29rcyksRC50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50Lm1vdXNlSG9va3MpfSksZnVuY3Rpb24oKXtmdW5jdGlvbiB4KGEsYixjLGUsZixnKXtmb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPWVbaF07aWYoail7dmFyIGs9ITE7aj1qW2FdO3doaWxlKGope2lmKGpbZF09PT1jKXtrPWVbai5zaXpzZXRdO2JyZWFrfWlmKGoubm9kZVR5cGU9PT0xKXtnfHwoaltkXT1jLGouc2l6c2V0PWgpO2lmKHR5cGVvZiBiIT0ic3RyaW5nIil7aWYoaj09PWIpe2s9ITA7YnJlYWt9fWVsc2UgaWYobS5maWx0ZXIoYixbal0pLmxlbmd0aD4wKXtrPWo7YnJlYWt9fWo9althXX1lW2hdPWt9fX1mdW5jdGlvbiB3KGEsYixjLGUsZixnKXtmb3IodmFyIGg9MCxpPWUubGVuZ3RoO2g8aTtoKyspe3ZhciBqPWVbaF07aWYoail7dmFyIGs9ITE7aj1qW2FdO3doaWxlKGope2lmKGpbZF09PT1jKXtrPWVbai5zaXpzZXRdO2JyZWFrfWoubm9kZVR5cGU9PT0xJiYhZyYmKGpbZF09YyxqLnNpenNldD1oKTtpZihqLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iKXtrPWo7YnJlYWt9aj1qW2FdfWVbaF09a319fXZhciBhPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpcW1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csZD0ic2l6Y2FjaGUiKyhNYXRoLnJhbmRvbSgpKyIiKS5yZXBsYWNlKCIuIiwiIiksZT0wLGc9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxoPSExLGk9ITAsaj0vXFwvZyxrPS9cclxuL2csbD0vXFcvO1swLDBdLnNvcnQoZnVuY3Rpb24oKXtpPSExO3JldHVybiAwfSk7dmFyIG09ZnVuY3Rpb24oYixkLGUsZil7ZT1lfHxbXSxkPWR8fGM7dmFyIGg9ZDtpZihkLm5vZGVUeXBlIT09MSYmZC5ub2RlVHlwZSE9PTkpcmV0dXJuW107aWYoIWJ8fHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4gZTt2YXIgaSxqLGssbCxuLHEscix0LHU9ITAsdj1tLmlzWE1MKGQpLHc9W10seD1iO2Rve2EuZXhlYygiIiksaT1hLmV4ZWMoeCk7aWYoaSl7eD1pWzNdLHcucHVzaChpWzFdKTtpZihpWzJdKXtsPWlbM107YnJlYWt9fX13aGlsZShpKTtpZih3Lmxlbmd0aD4xJiZwLmV4ZWMoYikpaWYody5sZW5ndGg9PT0yJiZvLnJlbGF0aXZlW3dbMF1dKWo9eSh3WzBdK3dbMV0sZCxmKTtlbHNle2o9by5yZWxhdGl2ZVt3WzBdXT9bZF06bSh3LnNoaWZ0KCksZCk7d2hpbGUody5sZW5ndGgpYj13LnNoaWZ0KCksby5yZWxhdGl2ZVtiXSYmKGIrPXcuc2hpZnQoKSksaj15KGIsaixmKX1lbHNleyFmJiZ3Lmxlbmd0aD4xJiZkLm5vZGVUeXBlPT09OSYmIXYmJm8ubWF0Y2guSUQudGVzdCh3WzBdKSYmIW8ubWF0Y2guSUQudGVzdCh3W3cubGVuZ3RoLTFdKSYmKG49bS5maW5kKHcuc2hpZnQoKSxkLHYpLGQ9bi5leHByP20uZmlsdGVyKG4uZXhwcixuLnNldClbMF06bi5zZXRbMF0pO2lmKGQpe249Zj97ZXhwcjp3LnBvcCgpLHNldDpzKGYpfTptLmZpbmQody5wb3AoKSx3Lmxlbmd0aD09PTEmJih3WzBdPT09In4ifHx3WzBdPT09IisiKSYmZC5wYXJlbnROb2RlP2QucGFyZW50Tm9kZTpkLHYpLGo9bi5leHByP20uZmlsdGVyKG4uZXhwcixuLnNldCk6bi5zZXQsdy5sZW5ndGg+MD9rPXMoaik6dT0hMTt3aGlsZSh3Lmxlbmd0aClxPXcucG9wKCkscj1xLG8ucmVsYXRpdmVbcV0/cj13LnBvcCgpOnE9IiIscj09bnVsbCYmKHI9ZCksby5yZWxhdGl2ZVtxXShrLHIsdil9ZWxzZSBrPXc9W119a3x8KGs9aiksa3x8bS5lcnJvcihxfHxiKTtpZihnLmNhbGwoayk9PT0iW29iamVjdCBBcnJheV0iKWlmKCF1KWUucHVzaC5hcHBseShlLGspO2Vsc2UgaWYoZCYmZC5ub2RlVHlwZT09PTEpZm9yKHQ9MDtrW3RdIT1udWxsO3QrKylrW3RdJiYoa1t0XT09PSEwfHxrW3RdLm5vZGVUeXBlPT09MSYmbS5jb250YWlucyhkLGtbdF0pKSYmZS5wdXNoKGpbdF0pO2Vsc2UgZm9yKHQ9MDtrW3RdIT1udWxsO3QrKylrW3RdJiZrW3RdLm5vZGVUeXBlPT09MSYmZS5wdXNoKGpbdF0pO2Vsc2UgcyhrLGUpO2wmJihtKGwsaCxlLGYpLG0udW5pcXVlU29ydChlKSk7cmV0dXJuIGV9O20udW5pcXVlU29ydD1mdW5jdGlvbihhKXtpZih1KXtoPWksYS5zb3J0KHUpO2lmKGgpZm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspYVtiXT09PWFbYi0xXSYmYS5zcGxpY2UoYi0tLDEpfXJldHVybiBhfSxtLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbShhLG51bGwsbnVsbCxiKX0sbS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbShiLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfSxtLmZpbmQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtpZighYSlyZXR1cm5bXTtmb3IoZT0wLGY9by5vcmRlci5sZW5ndGg7ZTxmO2UrKyl7aD1vLm9yZGVyW2VdO2lmKGc9by5sZWZ0TWF0Y2hbaF0uZXhlYyhhKSl7aT1nWzFdLGcuc3BsaWNlKDEsMSk7aWYoaS5zdWJzdHIoaS5sZW5ndGgtMSkhPT0iXFwiKXtnWzFdPShnWzFdfHwiIikucmVwbGFjZShqLCIiKSxkPW8uZmluZFtoXShnLGIsYyk7aWYoZCE9bnVsbCl7YT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7YnJlYWt9fX19ZHx8KGQ9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTpbXSk7cmV0dXJue3NldDpkLGV4cHI6YX19LG0uZmlsdGVyPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG4scCxxPWEscj1bXSxzPWMsdD1jJiZjWzBdJiZtLmlzWE1MKGNbMF0pO3doaWxlKGEmJmMubGVuZ3RoKXtmb3IoaCBpbiBvLmZpbHRlcilpZigoZj1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKSE9bnVsbCYmZlsyXSl7az1vLmZpbHRlcltoXSxsPWZbMV0sZz0hMSxmLnNwbGljZSgxLDEpO2lmKGwuc3Vic3RyKGwubGVuZ3RoLTEpPT09IlxcIiljb250aW51ZTtzPT09ciYmKHI9W10pO2lmKG8ucHJlRmlsdGVyW2hdKXtmPW8ucHJlRmlsdGVyW2hdKGYscyxkLHIsZSx0KTtpZighZilnPWk9ITA7ZWxzZSBpZihmPT09ITApY29udGludWV9aWYoZilmb3Iobj0wOyhqPXNbbl0pIT1udWxsO24rKylqJiYoaT1rKGosZixuLHMpLHA9ZV5pLGQmJmkhPW51bGw/cD9nPSEwOnNbbl09ITE6cCYmKHIucHVzaChqKSxnPSEwKSk7aWYoaSE9PWIpe2R8fChzPXIpLGE9YS5yZXBsYWNlKG8ubWF0Y2hbaF0sIiIpO2lmKCFnKXJldHVybltdO2JyZWFrfX1pZihhPT09cSlpZihnPT1udWxsKW0uZXJyb3IoYSk7ZWxzZSBicmVhaztxPWF9cmV0dXJuIHN9LG0uZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2EpfTt2YXIgbj1tLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPWEubm9kZVR5cGUsZT0iIjtpZihkKXtpZihkPT09MXx8ZD09PTl8fGQ9PT0xMSl7aWYodHlwZW9mIGEudGV4dENvbnRlbnQ9PSJzdHJpbmciKXJldHVybiBhLnRleHRDb250ZW50O2lmKHR5cGVvZiBhLmlubmVyVGV4dD09InN0cmluZyIpcmV0dXJuIGEuaW5uZXJUZXh0LnJlcGxhY2UoaywiIik7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWUrPW4oYSl9ZWxzZSBpZihkPT09M3x8ZD09PTQpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2UgZm9yKGI9MDtjPWFbYl07YisrKWMubm9kZVR5cGUhPT04JiYoZSs9bihjKSk7cmV0dXJuIGV9LG89bS5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikqKXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYj09InN0cmluZyIsZD1jJiYhbC50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpO2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9ofHwhMTpoPT09Yn1lJiZtLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihkJiYhbC50ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9YVtlXTtpZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0sYyYmKGFbZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZCYmbS5maWx0ZXIoYixhLCEwKX19LCIiOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXg7dHlwZW9mIGI9PSJzdHJpbmciJiYhbC50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9dyksZygicGFyZW50Tm9kZSIsYixmLGEsZCxjKX0sIn4iOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXg7dHlwZW9mIGI9PSJzdHJpbmciJiYhbC50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9dyksZygicHJldmlvdXNTaWJsaW5nIixiLGYsYSxkLGMpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWMpe3ZhciBkPWIuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9bZF06W119fSxOQU1FOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeU5hbWUhPSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCIpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPSIgIithWzFdLnJlcGxhY2UoaiwiIikrIiAiO2lmKGYpcmV0dXJuIGE7Zm9yKHZhciBnPTAsaDsoaD1iW2ddKSE9bnVsbDtnKyspaCYmKGVeKGguY2xhc3NOYW1lJiYoIiAiK2guY2xhc3NOYW1lKyIgIikucmVwbGFjZSgvW1x0XG5ccl0vZywiICIpLmluZGV4T2YoYSk+PTApP2N8fGQucHVzaChoKTpjJiYoYltnXT0hMSkpO3JldHVybiExfSxJRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGosIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGosIiIpLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9uKGEpe2lmKGFbMV09PT0ibnRoIil7YVsyXXx8bS5lcnJvcihhWzBdKSxhWzJdPWFbMl0ucmVwbGFjZSgvXlwrfFxzKi9nLCIiKTt2YXIgYj0vKC0/KShcZCopKD86bihbK1wtXT9cZCopKT8vLmV4ZWMoYVsyXT09PSJldmVuIiYmIjJuInx8YVsyXT09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoYVsyXSkmJiIwbisiK2FbMl18fGFbMl0pO2FbMl09YlsxXSsoYlsyXXx8MSktMCxhWzNdPWJbM10tMH1lbHNlIGFbMl0mJm0uZXJyb3IoYVswXSk7YVswXT1lKys7cmV0dXJuIGF9LEFUVFI6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWFbMV09YVsxXS5yZXBsYWNlKGosIiIpOyFmJiZvLmF0dHJNYXBbZ10mJihhWzFdPW8uYXR0ck1hcFtnXSksYVs0XT0oYVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoaiwiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIgIik7cmV0dXJuIGF9LFBTRVVETzpmdW5jdGlvbihiLGMsZCxlLGYpe2lmKGJbMV09PT0ibm90IilpZigoYS5leGVjKGJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoYlszXSkpYlszXT1tKGJbM10sbnVsbCxudWxsLGMpO2Vsc2V7dmFyIGc9bS5maWx0ZXIoYlszXSxjLGQsITBeZik7ZHx8ZS5wdXNoLmFwcGx5KGUsZyk7cmV0dXJuITF9ZWxzZSBpZihvLm1hdGNoLlBPUy50ZXN0KGJbMF0pfHxvLm1hdGNoLkNISUxELnRlc3QoYlswXSkpcmV0dXJuITA7cmV0dXJuIGJ9LFBPUzpmdW5jdGlvbihhKXthLnVuc2hpZnQoITApO3JldHVybiBhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7cmV0dXJuIGEuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiEhYS5maXJzdENoaWxkfSxlbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4hYS5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhbShjWzNdLGEpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybi9oXGQvaS50ZXN0KGEubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIiksYz1hLnR5cGU7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJ0ZXh0Ij09PWMmJihiPT09Y3x8Yj09PW51bGwpfSxyYWRpbzpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInJhZGlvIj09PWEudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJjaGVja2JveCI9PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJmaWxlIj09PWEudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJwYXNzd29yZCI9PT1hLnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYic3VibWl0Ij09PWEudHlwZX0saW1hZ2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGI9PT0iaW5wdXQiJiYiYnV0dG9uIj09PWEudHlwZXx8Yj09PSJidXR0b24ifSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoYS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09YS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9fSxzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09MH0sbGFzdDpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYj09PWQubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MH0sb2RkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTF9LGx0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxjWzNdLTB9LGd0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj5jWzNdLTB9LG50aDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9LGVxOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMV0sZj1vLmZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKTtpZihlPT09ImNvbnRhaW5zIilyZXR1cm4oYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fG4oW2FdKXx8IiIpLmluZGV4T2YoYlszXSk+PTA7aWYoZT09PSJub3QiKXt2YXIgZz1iWzNdO2Zvcih2YXIgaD0wLGk9Zy5sZW5ndGg7aDxpO2grKylpZihnW2hdPT09YSlyZXR1cm4hMTtyZXR1cm4hMH1tLmVycm9yKGUpfSxDSElMRDpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9YlsxXSxsPWE7c3dpdGNoKGspe2Nhc2Uib25seSI6Y2FzZSJmaXJzdCI6d2hpbGUobD1sLnByZXZpb3VzU2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtpZihrPT09ImZpcnN0IilyZXR1cm4hMDtsPWE7Y2FzZSJsYXN0Ijp3aGlsZShsPWwubmV4dFNpYmxpbmcpaWYobC5ub2RlVHlwZT09PTEpcmV0dXJuITE7cmV0dXJuITA7Y2FzZSJudGgiOmM9YlsyXSxlPWJbM107aWYoYz09PTEmJmU9PT0wKXJldHVybiEwO2Y9YlswXSxnPWEucGFyZW50Tm9kZTtpZihnJiYoZ1tkXSE9PWZ8fCFhLm5vZGVJbmRleCkpe2k9MDtmb3IobD1nLmZpcnN0Q2hpbGQ7bDtsPWwubmV4dFNpYmxpbmcpbC5ub2RlVHlwZT09PTEmJihsLm5vZGVJbmRleD0rK2kpO2dbZF09Zn1qPWEubm9kZUluZGV4LWU7cmV0dXJuIGM9PT0wP2o9PT0wOmolYz09PTAmJmovYz49MH19LElEOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09IioiJiZhLm5vZGVUeXBlPT09MXx8ISFhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifSxDTEFTUzpmdW5jdGlvbihhLGIpe3JldHVybigiICIrKGEuY2xhc3NOYW1lfHxhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkrIiAiKS5pbmRleE9mKGIpPi0xfSxBVFRSOmZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPW0uYXR0cj9tLmF0dHIoYSxjKTpvLmF0dHJIYW5kbGVbY10/by5hdHRySGFuZGxlW2NdKGEpOmFbY10hPW51bGw/YVtjXTphLmdldEF0dHJpYnV0ZShjKSxlPWQrIiIsZj1iWzJdLGc9Yls0XTtyZXR1cm4gZD09bnVsbD9mPT09IiE9IjohZiYmbS5hdHRyP2QhPW51bGw6Zj09PSI9Ij9lPT09ZzpmPT09Iio9Ij9lLmluZGV4T2YoZyk+PTA6Zj09PSJ+PSI/KCIgIitlKyIgIikuaW5kZXhPZihnKT49MDpnP2Y9PT0iIT0iP2UhPT1nOmY9PT0iXj0iP2UuaW5kZXhPZihnKT09PTA6Zj09PSIkPSI/ZS5zdWJzdHIoZS5sZW5ndGgtZy5sZW5ndGgpPT09ZzpmPT09Inw9Ij9lPT09Z3x8ZS5zdWJzdHIoMCxnLmxlbmd0aCsxKT09PWcrIi0iOiExOmUmJmQhPT0hMX0sUE9TOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMl0sZj1vLnNldEZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKX19fSxwPW8ubWF0Y2guUE9TLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4iXFwiKyhiLTArMSl9O2Zvcih2YXIgciBpbiBvLm1hdGNoKW8ubWF0Y2hbcl09bmV3IFJlZ0V4cChvLm1hdGNoW3JdLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpLG8ubGVmdE1hdGNoW3JdPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStvLm1hdGNoW3JdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2cscSkpO28ubWF0Y2guZ2xvYmFsUE9TPXA7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTD0vVW50aWwkLyxNPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLE49LywvLE89L14uW146I1xbXC4sXSokLyxQPUFycmF5LnByb3RvdHlwZS5zbGljZSxRPWYuZXhwci5tYXRjaC5nbG9iYWxQT1MsUj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1EudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVEudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhjWzBdKXx8UyhkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKTtMLnRlc3QoYSl8fChkPWMpLGQmJnR5cGVvZiBkPT0ic3RyaW5nIiYmKGU9Zi5maWx0ZXIoZCxlKSksZT10aGlzLmxlbmd0aD4xJiYhUlthXT9mLnVuaXF1ZShlKTplLCh0aGlzLmxlbmd0aD4xfHxOLnRlc3QoZCkpJiZNLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSxhLFAuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3RoPT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxnPWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KTt2YXIgVj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsVz0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLFg9L15ccysvLFk9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxaPS88KFtcdzpdKykvLCQ9Lzx0Ym9keS9pLF89Lzx8JiM/XHcrOy8sYmE9LzwoPzpzY3JpcHR8c3R5bGUpL2ksYmI9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxiYz1uZXcgUmVnRXhwKCI8KD86IitWKyIpW1xccy8+XSIsImkiKSxiZD0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxiZT0vXC8oamF2YXxlY21hKXNjcmlwdC9pLGJmPS9eXHMqPCEoPzpcW0NEQVRBXFt8XC1cLSkvLGJnPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19LGJoPVUoYyk7Ymcub3B0Z3JvdXA9Ymcub3B0aW9uLGJnLnRib2R5PWJnLnRmb290PWJnLmNvbGdyb3VwPWJnLmNhcHRpb249YmcudGhlYWQsYmcudGg9YmcudGQsZi5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChiZy5fZGVmYXVsdD1bMSwiZGl2PGRpdj4iLCI8L2Rpdj4iXSksZi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iP2YudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywiYm9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWYKLmNsZWFuKGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsdGhpcy50b0FycmF5KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhhLCJiZWZvcmUiLGFyZ3VtZW50cyl9fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsZi5jbGVhbihhcmd1bWVudHMpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxmdW5jdGlvbihhKXt2YXIgYz10aGlzWzBdfHx7fSxkPTAsZT10aGlzLmxlbmd0aDtpZihhPT09YilyZXR1cm4gYy5ub2RlVHlwZT09PTE/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[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBMb2NhbGl6YXRpb24gRXhhbXBsZSA2LjUuMQogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTIsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLypnbG9iYWwgd2luZG93ICovCgp3aW5kb3cubG9jYWxlID0gewogICAgImZpbGV1cGxvYWQiOiB7CiAgICAgICAgImVycm9ycyI6IHsKICAgICAgICAgICAgIm1heEZpbGVTaXplIjogIkZpbGUgaXMgdG9vIGJpZyIsCiAgICAgICAgICAgICJtaW5GaWxlU2l6ZSI6ICJGaWxlIGlzIHRvbyBzbWFsbCIsCiAgICAgICAgICAgICJhY2NlcHRGaWxlVHlwZXMiOiAiRmlsZXR5cGUgbm90IGFsbG93ZWQiLAogICAgICAgICAgICAibWF4TnVtYmVyT2ZGaWxlcyI6ICJNYXggbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkIiwKICAgICAgICAgICAgInVwbG9hZGVkQnl0ZXMiOiAiVXBsb2FkZWQgYnl0ZXMgZXhjZWVkIGZpbGUgc2l6ZSIsCiAgICAgICAgICAgICJlbXB0eVJlc3VsdCI6ICJFbXB0eSBmaWxlIHVwbG9hZCByZXN1bHQiCiAgICAgICAgfSwKICAgICAgICAiZXJyb3IiOiAiRXJyb3IiLAogICAgICAgICJzdGFydCI6ICJTdGFydCIsCiAgICAgICAgImNhbmNlbCI6ICJDYW5jZWwiLAogICAgICAgICJkZXN0cm95IjogIkRlbGV0ZSIKICAgIH0KfTsK]]></data>
	</file>
	<file>
	  <filename>/jqfu/js/main.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBKUyBFeGFtcGxlIDYuNwogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLypqc2xpbnQgbm9tZW46IHRydWUsIHVucGFyYW06IHRydWUsIHJlZ2V4cDogdHJ1ZSAqLwovKmdsb2JhbCAkLCB3aW5kb3csIGRvY3VtZW50ICovCgokKGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBJbml0aWFsaXplIHRoZSBqUXVlcnkgRmlsZSBVcGxvYWQgd2lkZ2V0OgogICAgJCgnI2ZpbGV1cGxvYWQnKS5maWxldXBsb2FkKCk7CgogICAgLy8gRW5hYmxlIGlmcmFtZSBjcm9zcy1kb21haW4gYWNjZXNzIHZpYSByZWRpcmVjdCBvcHRpb246CiAgICAkKCcjZmlsZXVwbG9hZCcpLmZpbGV1cGxvYWQoCiAgICAgICAgJ29wdGlvbicsCiAgICAgICAgJ3JlZGlyZWN0JywKICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKAogICAgICAgICAgICAvXC9bXlwvXSokLywKICAgICAgICAgICAgJy9jb3JzL3Jlc3VsdC5odG1sPyVzJwogICAgICAgICkKICAgICk7CgogICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PT0gJ2JsdWVpbXAuZ2l0aHViLmNvbScpIHsKICAgICAgICAvLyBEZW1vIHNldHRpbmdzOgogICAgICAgICQoJyNmaWxldXBsb2FkJykuZmlsZXVwbG9hZCgnb3B0aW9uJywgewogICAgICAgICAgICB1cmw6ICcvL2pxdWVyeS1maWxlLXVwbG9hZC5hcHBzcG90LmNvbS8nLAogICAgICAgICAgICBtYXhGaWxlU2l6ZTogNTAwMDAwMCwKICAgICAgICAgICAgYWNjZXB0RmlsZVR5cGVzOiAvKFwufFwvKShnaWZ8anBlP2d8cG5nKSQvaSwKICAgICAgICAgICAgcHJvY2VzczogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2xvYWQnLAogICAgICAgICAgICAgICAgICAgIGZpbGVUeXBlczogL15pbWFnZVwvKGdpZnxqcGVnfHBuZykkLywKICAgICAgICAgICAgICAgICAgICBtYXhGaWxlU2l6ZTogMjAwMDAwMDAgLy8gMjBNQgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZXNpemUnLAogICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxNDQwLAogICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogOTAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9KTsKICAgICAgICAvLyBVcGxvYWQgc2VydmVyIHN0YXR1cyBjaGVjayBmb3IgYnJvd3NlcnMgd2l0aCBDT1JTIHN1cHBvcnQ6CiAgICAgICAgaWYgKCQuc3VwcG9ydC5jb3JzKSB7CiAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICB1cmw6ICcvL2pxdWVyeS1maWxlLXVwbG9hZC5hcHBzcG90LmNvbS8nLAogICAgICAgICAgICAgICAgdHlwZTogJ0hFQUQnCiAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgJCgnPHNwYW4gY2xhc3M9ImFsZXJ0IGFsZXJ0LWVycm9yIi8+JykKICAgICAgICAgICAgICAgICAgICAudGV4dCgnVXBsb2FkIHNlcnZlciBjdXJyZW50bHkgdW5hdmFpbGFibGUgLSAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKCkpCiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKCcjZmlsZXVwbG9hZCcpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIC8vIExvYWQgZXhpc3RpbmcgZmlsZXM6CiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICAgICAgICAkLmdldEpTT04odGhpcy5hY3Rpb24sIGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICQodGhhdCkuZmlsZXVwbG9hZCgnb3B0aW9uJywgJ2RvbmUnKQogICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCh0aGF0LCBudWxsLCB7cmVzdWx0OiByZXN1bHR9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9Cgp9KTsK]]></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[LyoKICogalF1ZXJ5IFVJIFdpZGdldCAxLjguMTgrYW1kCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0CiAqLwoKKGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsianF1ZXJ5Il0sIGZhY3RvcnkpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeShqUXVlcnkpOwogICAgfQp9KGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7CgovLyBqUXVlcnkgMS40KwppZiAoICQuY2xlYW5EYXRhICkgewoJdmFyIF9jbGVhbkRhdGEgPSAkLmNsZWFuRGF0YTsKCSQuY2xlYW5EYXRhID0gZnVuY3Rpb24oIGVsZW1zICkgewoJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewoJCQl0cnkgewoJCQkJJCggZWxlbSApLnRyaWdnZXJIYW5kbGVyKCAicmVtb3ZlIiApOwoJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1CgkJCX0gY2F0Y2goIGUgKSB7fQoJCX0KCQlfY2xlYW5EYXRhKCBlbGVtcyApOwoJfTsKfSBlbHNlIHsKCXZhciBfcmVtb3ZlID0gJC5mbi5yZW1vdmU7CgkkLmZuLnJlbW92ZSA9IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgKSB7CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJaWYgKCAha2VlcERhdGEgKSB7CgkJCQlpZiAoICFzZWxlY3RvciB8fCAkLmZpbHRlciggc2VsZWN0b3IsIFsgdGhpcyBdICkubGVuZ3RoICkgewoJCQkJCSQoICIqIiwgdGhpcyApLmFkZCggWyB0aGlzIF0gKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCQl0cnkgewoJCQkJCQkJJCggdGhpcyApLnRyaWdnZXJIYW5kbGVyKCAicmVtb3ZlIiApOwoJCQkJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1CgkJCQkJCX0gY2F0Y2goIGUgKSB7fQoJCQkJCX0pOwoJCQkJfQoJCQl9CgkJCXJldHVybiBfcmVtb3ZlLmNhbGwoICQodGhpcyksIHNlbGVjdG9yLCBrZWVwRGF0YSApOwoJCX0pOwoJfTsKfQoKJC53aWRnZXQgPSBmdW5jdGlvbiggbmFtZSwgYmFzZSwgcHJvdG90eXBlICkgewoJdmFyIG5hbWVzcGFjZSA9IG5hbWUuc3BsaXQoICIuIiApWyAwIF0sCgkJZnVsbE5hbWU7CgluYW1lID0gbmFtZS5zcGxpdCggIi4iIClbIDEgXTsKCWZ1bGxOYW1lID0gbmFtZXNwYWNlICsgIi0iICsgbmFtZTsKCglpZiAoICFwcm90b3R5cGUgKSB7CgkJcHJvdG90eXBlID0gYmFzZTsKCQliYXNlID0gJC5XaWRnZXQ7Cgl9CgoJLy8gY3JlYXRlIHNlbGVjdG9yIGZvciBwbHVnaW4KCSQuZXhwclsgIjoiIF1bIGZ1bGxOYW1lIF0gPSBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4gISEkLmRhdGEoIGVsZW0sIG5hbWUgKTsKCX07CgoJJFsgbmFtZXNwYWNlIF0gPSAkWyBuYW1lc3BhY2UgXSB8fCB7fTsKCSRbIG5hbWVzcGFjZSBdWyBuYW1lIF0gPSBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHsKCQkvLyBhbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGZvciBzaW1wbGUgaW5oZXJpdGFuY2UKCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CgkJCXRoaXMuX2NyZWF0ZVdpZGdldCggb3B0aW9ucywgZWxlbWVudCApOwoJCX0KCX07CgoJdmFyIGJhc2VQcm90b3R5cGUgPSBuZXcgYmFzZSgpOwoJLy8gd2UgbmVlZCB0byBtYWtlIHRoZSBvcHRpb25zIGhhc2ggYSBwcm9wZXJ0eSBkaXJlY3RseSBvbiB0aGUgbmV3IGluc3RhbmNlCgkvLyBvdGhlcndpc2Ugd2UnbGwgbW9kaWZ5IHRoZSBvcHRpb25zIGhhc2ggb24gdGhlIHByb3RvdHlwZSB0aGF0IHdlJ3JlCgkvLyBpbmhlcml0aW5nIGZyb20KLy8JJC5lYWNoKCBiYXNlUHJvdG90eXBlLCBmdW5jdGlvbigga2V5LCB2YWwgKSB7Ci8vCQlpZiAoICQuaXNQbGFpbk9iamVjdCh2YWwpICkgewovLwkJCWJhc2VQcm90b3R5cGVbIGtleSBdID0gJC5leHRlbmQoIHt9LCB2YWwgKTsKLy8JCX0KLy8JfSk7CgliYXNlUHJvdG90eXBlLm9wdGlvbnMgPSAkLmV4dGVuZCggdHJ1ZSwge30sIGJhc2VQcm90b3R5cGUub3B0aW9ucyApOwoJJFsgbmFtZXNwYWNlIF1bIG5hbWUgXS5wcm90b3R5cGUgPSAkLmV4dGVuZCggdHJ1ZSwgYmFzZVByb3RvdHlwZSwgewoJCW5hbWVzcGFjZTogbmFtZXNwYWNlLAoJCXdpZGdldE5hbWU6IG5hbWUsCgkJd2lkZ2V0RXZlbnRQcmVmaXg6ICRbIG5hbWVzcGFjZSBdWyBuYW1lIF0ucHJvdG90eXBlLndpZGdldEV2ZW50UHJlZml4IHx8IG5hbWUsCgkJd2lkZ2V0QmFzZUNsYXNzOiBmdWxsTmFtZQoJfSwgcHJvdG90eXBlICk7CgoJJC53aWRnZXQuYnJpZGdlKCBuYW1lLCAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdICk7Cn07CgokLndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbiggbmFtZSwgb2JqZWN0ICkgewoJJC5mblsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7CgkJdmFyIGlzTWV0aG9kQ2FsbCA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiwKCQkJYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKCBhcmd1bWVudHMsIDEgKSwKCQkJcmV0dXJuVmFsdWUgPSB0aGlzOwoKCQkvLyBhbGxvdyBtdWx0aXBsZSBoYXNoZXMgdG8gYmUgcGFzc2VkIG9uIGluaXQKCQlvcHRpb25zID0gIWlzTWV0aG9kQ2FsbCAmJiBhcmdzLmxlbmd0aCA/CgkJCSQuZXh0ZW5kLmFwcGx5KCBudWxsLCBbIHRydWUsIG9wdGlvbnMgXS5jb25jYXQoYXJncykgKSA6CgkJCW9wdGlvbnM7CgoJCS8vIHByZXZlbnQgY2FsbHMgdG8gaW50ZXJuYWwgbWV0aG9kcwoJCWlmICggaXNNZXRob2RDYWxsICYmIG9wdGlvbnMuY2hhckF0KCAwICkgPT09ICJfIiApIHsKCQkJcmV0dXJuIHJldHVyblZhbHVlOwoJCX0KCgkJaWYgKCBpc01ldGhvZENhbGwgKSB7CgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhciBpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgbmFtZSApLAoJCQkJCW1ldGhvZFZhbHVlID0gaW5zdGFuY2UgJiYgJC5pc0Z1bmN0aW9uKCBpbnN0YW5jZVtvcHRpb25zXSApID8KCQkJCQkJaW5zdGFuY2VbIG9wdGlvbnMgXS5hcHBseSggaW5zdGFuY2UsIGFyZ3MgKSA6CgkJCQkJCWluc3RhbmNlOwoJCQkJLy8gVE9ETzogYWRkIHRoaXMgYmFjayBpbiAxLjkgYW5kIHVzZSAkLmVycm9yKCkgKHNlZSAjNTk3MikKLy8JCQkJaWYgKCAhaW5zdGFuY2UgKSB7Ci8vCQkJCQl0aHJvdyAiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiICsgbmFtZSArICIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIgKwovLwkJCQkJCSJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJyIgKyBvcHRpb25zICsgIiciOwovLwkJCQl9Ci8vCQkJCWlmICggISQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSApIHsKLy8JCQkJCXRocm93ICJubyBzdWNoIG1ldGhvZCAnIiArIG9wdGlvbnMgKyAiJyBmb3IgIiArIG5hbWUgKyAiIHdpZGdldCBpbnN0YW5jZSI7Ci8vCQkJCX0KLy8JCQkJdmFyIG1ldGhvZFZhbHVlID0gaW5zdGFuY2VbIG9wdGlvbnMgXS5hcHBseSggaW5zdGFuY2UsIGFyZ3MgKTsKCQkJCWlmICggbWV0aG9kVmFsdWUgIT09IGluc3RhbmNlICYmIG1ldGhvZFZhbHVlICE9PSB1bmRlZmluZWQgKSB7CgkJCQkJcmV0dXJuVmFsdWUgPSBtZXRob2RWYWx1ZTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCX0gZWxzZSB7CgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhciBpbnN0YW5jZSA9ICQuZGF0YSggdGhpcywgbmFtZSApOwoJCQkJaWYgKCBpbnN0YW5jZSApIHsKCQkJCQlpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKS5faW5pdCgpOwoJCQkJfSBlbHNlIHsKCQkJCQkkLmRhdGEoIHRoaXMsIG5hbWUsIG5ldyBvYmplY3QoIG9wdGlvbnMsIHRoaXMgKSApOwoJCQkJfQoJCQl9KTsKCQl9CgoJCXJldHVybiByZXR1cm5WYWx1ZTsKCX07Cn07CgokLldpZGdldCA9IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkgewoJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlCglpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CgkJdGhpcy5fY3JlYXRlV2lkZ2V0KCBvcHRpb25zLCBlbGVtZW50ICk7Cgl9Cn07CgokLldpZGdldC5wcm90b3R5cGUgPSB7Cgl3aWRnZXROYW1lOiAid2lkZ2V0IiwKCXdpZGdldEV2ZW50UHJlZml4OiAiIiwKCW9wdGlvbnM6IHsKCQlkaXNhYmxlZDogZmFsc2UKCX0sCglfY3JlYXRlV2lkZ2V0OiBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHsKCQkvLyAkLndpZGdldC5icmlkZ2Ugc3RvcmVzIHRoZSBwbHVnaW4gaW5zdGFuY2UsIGJ1dCB3ZSBkbyBpdCBhbnl3YXkKCQkvLyBzbyB0aGF0IGl0J3Mgc3RvcmVkIGV2ZW4gYmVmb3JlIHRoZSBfY3JlYXRlIGZ1bmN0aW9uIHJ1bnMKCQkkLmRhdGEoIGVsZW1lbnQsIHRoaXMud2lkZ2V0TmFtZSwgdGhpcyApOwoJCXRoaXMuZWxlbWVudCA9ICQoIGVsZW1lbnQgKTsKCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCggdHJ1ZSwge30sCgkJCXRoaXMub3B0aW9ucywKCQkJdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLAoJCQlvcHRpb25zICk7CgoJCXZhciBzZWxmID0gdGhpczsKCQl0aGlzLmVsZW1lbnQuYmluZCggInJlbW92ZS4iICsgdGhpcy53aWRnZXROYW1lLCBmdW5jdGlvbigpIHsKCQkJc2VsZi5kZXN0cm95KCk7CgkJfSk7CgoJCXRoaXMuX2NyZWF0ZSgpOwoJCXRoaXMuX3RyaWdnZXIoICJjcmVhdGUiICk7CgkJdGhpcy5faW5pdCgpOwoJfSwKCV9nZXRDcmVhdGVPcHRpb25zOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJC5tZXRhZGF0YSAmJiAkLm1ldGFkYXRhLmdldCggdGhpcy5lbGVtZW50WzBdIClbIHRoaXMud2lkZ2V0TmFtZSBdOwoJfSwKCV9jcmVhdGU6IGZ1bmN0aW9uKCkge30sCglfaW5pdDogZnVuY3Rpb24oKSB7fSwKCglkZXN0cm95OiBmdW5jdGlvbigpIHsKCQl0aGlzLmVsZW1lbnQKCQkJLnVuYmluZCggIi4iICsgdGhpcy53aWRnZXROYW1lICkKCQkJLnJlbW92ZURhdGEoIHRoaXMud2lkZ2V0TmFtZSApOwoJCXRoaXMud2lkZ2V0KCkKCQkJLnVuYmluZCggIi4iICsgdGhpcy53aWRnZXROYW1lICkKCQkJLnJlbW92ZUF0dHIoICJhcmlhLWRpc2FibGVkIiApCgkJCS5yZW1vdmVDbGFzcygKCQkJCXRoaXMud2lkZ2V0QmFzZUNsYXNzICsgIi1kaXNhYmxlZCAiICsKCQkJCSJ1aS1zdGF0ZS1kaXNhYmxlZCIgKTsKCX0sCgoJd2lkZ2V0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5lbGVtZW50OwoJfSwKCglvcHRpb246IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewoJCXZhciBvcHRpb25zID0ga2V5OwoKCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDAgKSB7CgkJCS8vIGRvbid0IHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgaGFzaAoJCQlyZXR1cm4gJC5leHRlbmQoIHt9LCB0aGlzLm9wdGlvbnMgKTsKCQl9CgoJCWlmICAodHlwZW9mIGtleSA9PT0gInN0cmluZyIgKSB7CgkJCWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKCQkJCXJldHVybiB0aGlzLm9wdGlvbnNbIGtleSBdOwoJCQl9CgkJCW9wdGlvbnMgPSB7fTsKCQkJb3B0aW9uc1sga2V5IF0gPSB2YWx1ZTsKCQl9CgoJCXRoaXMuX3NldE9wdGlvbnMoIG9wdGlvbnMgKTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoJX3NldE9wdGlvbnM6IGZ1bmN0aW9uKCBvcHRpb25zICkgewoJCXZhciBzZWxmID0gdGhpczsKCQkkLmVhY2goIG9wdGlvbnMsIGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewoJCQlzZWxmLl9zZXRPcHRpb24oIGtleSwgdmFsdWUgKTsKCQl9KTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoJX3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CgkJdGhpcy5vcHRpb25zWyBrZXkgXSA9IHZhbHVlOwoKCQlpZiAoIGtleSA9PT0gImRpc2FibGVkIiApIHsKCQkJdGhpcy53aWRnZXQoKQoJCQkJWyB2YWx1ZSA/ICJhZGRDbGFzcyIgOiAicmVtb3ZlQ2xhc3MiXSgKCQkJCQl0aGlzLndpZGdldEJhc2VDbGFzcyArICItZGlzYWJsZWQiICsgIiAiICsKCQkJCQkidWktc3RhdGUtZGlzYWJsZWQiICkKCQkJCS5hdHRyKCAiYXJpYS1kaXNhYmxlZCIsIHZhbHVlICk7CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCgoJZW5hYmxlOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCAiZGlzYWJsZWQiLCBmYWxzZSApOwoJfSwKCWRpc2FibGU6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLl9zZXRPcHRpb24oICJkaXNhYmxlZCIsIHRydWUgKTsKCX0sCgoJX3RyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBldmVudCwgZGF0YSApIHsKCQl2YXIgcHJvcCwgb3JpZywKCQkJY2FsbGJhY2sgPSB0aGlzLm9wdGlvbnNbIHR5cGUgXTsKCgkJZGF0YSA9IGRhdGEgfHwge307CgkJZXZlbnQgPSAkLkV2ZW50KCBldmVudCApOwoJCWV2ZW50LnR5cGUgPSAoIHR5cGUgPT09IHRoaXMud2lkZ2V0RXZlbnRQcmVmaXggPwoJCQl0eXBlIDoKCQkJdGhpcy53aWRnZXRFdmVudFByZWZpeCArIHR5cGUgKS50b0xvd2VyQ2FzZSgpOwoJCS8vIHRoZSBvcmlnaW5hbCBldmVudCBtYXkgY29tZSBmcm9tIGFueSBlbGVtZW50CgkJLy8gc28gd2UgbmVlZCB0byByZXNldCB0aGUgdGFyZ2V0IG9uIHRoZSBuZXcgZXZlbnQKCQlldmVudC50YXJnZXQgPSB0aGlzLmVsZW1lbnRbIDAgXTsKCgkJLy8gY29weSBvcmlnaW5hbCBldmVudCBwcm9wZXJ0aWVzIG92ZXIgdG8gdGhlIG5ldyBldmVudAoJCW9yaWcgPSBldmVudC5vcmlnaW5hbEV2ZW50OwoJCWlmICggb3JpZyApIHsKCQkJZm9yICggcHJvcCBpbiBvcmlnICkgewoJCQkJaWYgKCAhKCBwcm9wIGluIGV2ZW50ICkgKSB7CgkJCQkJZXZlbnRbIHByb3AgXSA9IG9yaWdbIHByb3AgXTsKCQkJCX0KCQkJfQoJCX0KCgkJdGhpcy5lbGVtZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhICk7CgoJCXJldHVybiAhKCAkLmlzRnVuY3Rpb24oY2FsbGJhY2spICYmCgkJCWNhbGxiYWNrLmNhbGwoIHRoaXMuZWxlbWVudFswXSwgZXZlbnQsIGRhdGEgKSA9PT0gZmFsc2UgfHwKCQkJZXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkgKTsKCX0KfTsKCn0pKTsK]]></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[Rm9yY2VUeXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQo8RmlsZXNNYXRjaCAiKD9pKVwuKGdpZnxqcGU/Z3xwbmcpJCI+CiAgRm9yY2VUeXBlIG5vbmUKPC9GaWxlc01hdGNoPg==]]></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[PD9waHAKCgoKY2xhc3MgSlF1ZXJ5RlUgZXh0ZW5kcyBDTVNNb2R1bGUKewoKICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogIH0KICAKICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ0pRdWVyeUZVJzsKICB9CgogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICdKUXVlcnlGaWxlVXBsb2FkZXIgYnkgQmVzcyc7CiAgfQogIAogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS4wLjUnOwogIH0KICAKICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgpOwogIH0KIAogIGZ1bmN0aW9uIEdldEhlbHAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KICAKICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnS2V2aW4gRGFuZXppcyAoYWthIEJlc3MpJzsKICB9CgogIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICB7CiAgICByZXR1cm4gJ2NvbnRhY3QgYXQgZnVyaWUgcG9pbnQgYmUnOwogIH0KICAKICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQogIAogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdleHRlbnNpb25zJzsKICB9CiAgCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KICAKICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS4xMC4wIjsKICB9CiAgCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICB7CgkkdGhpcy0+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[PD9waHAKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAoJCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJCTxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVncmF0aW9uIG9mIHRoZSBncmVhdCBwbHVnaW4gSlF1ZXJ5IEZpbGUgVXBsb2FkIGludG8gdGhlIGdyZWF0IENtcyBNYWRlIFNpbXBsZTwvcD4KCQk8cD5TZWUgbW9yZSBvbiBodHRwOi8vYmx1ZWltcC5naXRodWIuY29tL2pRdWVyeS1GaWxlLVVwbG9hZC88L3A+CgkJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJCTxwPldyaXRlIGludG8geW91ciBjb250ZW50IDoge0pRdWVyeUZVfSA8L3A+CgkJPGgzPkhvdyBkbyBJIHVzZSBpdCA/IChBZHZhbmNlIHVzYWdlKTwvaDM+CgkJPHA+WW91IGNhbiBlYXNpbHkgYXNzb2NpYXRlIHRoaXMgbW9kdWxlIHdpdGggRkVVIGFuZCBjcmVhdGUgYSBkaWZmZXJlbnQgdXBsb2FkIHBsYXRmb3JtIGZvciBlYWNoIG9mIHlvdXIgdXNlcjwvcD4KCQk8cD4gRXhhbXBsZSBvZiBjb2RlIDwvcD4KCQk8cHJlIHN0eWxlPSJtYXJnaW46IDVweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDcxLCA2OCwgNjgpOyBjb2xvcjogcmdiKDIsIDE4NywgMCk7IHBhZGRpbmc6IDVweDsiPgoJCQl7aWYgXCRjY3VzZXItPm1lbWJlcm9mKCJBZG1pbiIpfQoJCQkJe0pRdWVyeUZVIHRlbXBsYXRlPSJmdWxsIiBudW1iZXI9MTAwIGFjY2VwdF9maWxlX3R5cGVzPScvXC4odHh0fGdpZnxqcGU/Z3xwbmd8cHNkfHBkZikkL2knfQoJCQl7ZWxzZX0KCQkJCXtKUXVlcnlGVSB0ZW1wbGF0ZT0iYmFzaWMiIG51bWJlcj0xMCBhY2NlcHRfZmlsZV90eXBlcz0nL1wuKGdpZnxqcGU/Z3xwbmcpJC9pJ30KCQkJey9pZn0KCQk8L3ByZT4KCQk8aDM+SG93IGNhbiBpIGFjdGl2YXRlIHRoZSBjbGllbnQncyBzaWRlIHJlc2l6aW5nID8gKEFkdmFuY2UgdXNhZ2UpPC9oMz4KCQk8cD5KUXVlcnkgRmlsZSBVcGxvYWQgY2FuIHJlc2l6ZSB0aGUgYmlnIHBpY3R1cmVzIEJFRk9SRSBzdGFydGluZyB0aGUgdXBsb2Fkcy4gVG8gYWN0aXZhdGUgdGhpcyBmdW5jdGlvbiwgeW91IG11c3QgbW9kaWZ5IHRoZSBmaWxlIC4vbW9kdWxlcy9KUXVlcnlGVS9qcWZ1L2pzL2pxdWVyeS5maWxldXBsb2FkLWZwLmpzIGFuZCB1bmNvbW1lbnQgdGhlIGNvZGUgbGluZSA0MiA6IDwvcD4KCQk8cHJlIHN0eWxlPSJtYXJnaW46IDVweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDcxLCA2OCwgNjgpOyBjb2xvcjogcmdiKDIsIDE4NywgMCk7IHBhZGRpbmc6IDVweDsiPgogICAgICAgICAgICAgIHByb2Nlc3M6IFsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAqLwogICAgICAgICAgICBdLAoJCTwvcHJlPgoJCQoJCTxwPnRvPC9wPgoJCQoJCTxwcmUgc3R5bGU9Im1hcmdpbjogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEsIDY4LCA2OCk7IGNvbG9yOiByZ2IoMiwgMTg3LCAwKTsgcGFkZGluZzogNXB4OyI+CiAgICAgICAgICAgICAgcHJvY2VzczogWwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdsb2FkJywKICAgICAgICAgICAgICAgICAgICBmaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmcpJC8sCiAgICAgICAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IDIwMDAwMDAwIC8vIDIwTUIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVzaXplJywKICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogMTkyMCwKICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDEyMDAsCiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwMCwKICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDYwMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgXSwKCQk8L3ByZT4KCQk8cD4gSXQncyB2ZXJ5IHNpbXBsZSBidXQgPHNwYW4gc3R5bGU9ImNvbG9yOiNGMDAiPnlvdSBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlc2VzIGNoYW5nZXMgd2lsbCBiZSBsb3N0IG9uIHRoZSBuZXh0IHVwZ3JhZGUgb2YgbXkgbW9kdWxlPC9zcGFuPi4gSSBkb24ndCBoYXZlIG90aGVyIHNvbHV0aW9uLiBTb3JyeSBmb3IgdGhhdC4gQlRXIElmIHlvdSBoYXZlIGEgc29sdXRpb24sIGRvbid0IGhlc2l0ZSB0byBjb250YWN0IG1lICE8L3A+CkVPVDsKJGxhbmdbJ2hlbHBfYWNjZXB0X2ZpbGVfdHlwZXMnXSA9ICdSZWdleCBvZiB0aGUgZmlsZXMgZXh0ZW5zaW9ucyB0aGF0IGFyZSBhbGxvd2VkLiBCeSBEZWZhdWx0IDogXCcvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pXCcnOwokbGFuZ1snaGVscF9udW1iZXInXSA9ICdOdW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgaW4gdGhlIHVwbG9hZHMgZGlyZWN0b3J5IGF0IHRoZSBzYW1lIHRpbWUnOwokbGFuZ1snaGVscF9tYXhfd2lkdGgnXSA9ICdUaGUgbWF4IHdpZHRoIGZvciB0aGUgaW1hZ2VzIHVwbG9hZGVkLiBFeGVtcGxlIDogbWF4X3dpZHRoPTE1MCc7CiRsYW5nWydoZWxwX21heF9oZWlnaHQnXSA9ICdUaGUgbWF4X2hlaWdodCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1heF9oZWlnaHQ9MTUwJzsKJGxhbmdbJ2hlbHBfbWluX3dpZHRoJ10gPSAnVGhlIG1pbiB3aWR0aCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1pbl93aWR0aD0xNTAuIEJ5IERlZmF1bHQgOiBtaW5fd2lkdGg9MCc7CiRsYW5nWydoZWxwX21pbl9oZWlnaHQnXSA9ICdUaGUgbWluIGhlaWdodCBmb3IgdGhlIGltYWdlcyB1cGxvYWRlZC4gRXhlbXBsZSA6IG1pbl9oZWlnaHQ9MTUwLiBCeSBEZWZhdWx0IDogbWluX2hlaWdodD0wJzsKJGxhbmdbJ2hlbHBfY2xlYW5fbmFtZSddID0gJ2lmIHRydWUsIHdpbGwgcmVwbGFjZSBhY2NlbnRzLCBzcGFjZXMgYW5kIG90aGVyIHNwYWNpYWxzIGNhcmFjdGVycyBieSBzb21lIG1vcmUgY2xlYW4nOwokbGFuZ1snaGVscF9kaXJfcGF0aCddID0gJ3RoZSBkaXJlY3RvcnkgdXNlZCB0byB1cGxvYWQgZmlsZXMuIEJlIGNhcmVmdWxsLCB1c2UgIi8iIG9yICJcIiBpbnRvIFVuaXggb3IgV2luZG93cyBzeXN0ZW0nOwokbGFuZ1snaGVscF9kaXJfdXJsJ10gPSAndGhlIHVybCB1c2VkIHRvIGRpc3BsYXkgdXBsb2FkZWQgZmlsZXMnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJ1RoZSBuYW1lIG9mIHRoZSB0ZW1wbGF0ZS4gQXJlIGFsbG93ZWQgOiAiZnVsbCIsICJiYXNpYyIgYW5kIGFsbCB0aGUgdGVtcGxhdGVzIGludG8gdGhlICIvbW9kdWxlcy9KUXVlcnlGVS90ZW1wbGF0ZXMiIGRpcmVjdG9yeSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1lvdSBjYW4gZWFzaWx5IGFzc29jaWF0ZSB0aGlzIG1vZHVsZSB3aXRoIEZFVSBhbmQgY3JlYXRlIGEgZGlmZmVyZW50IHVwbG9hZCBwbGF0Zm9ybSBmb3IgZWFjaCBvZiB5b3VyIHVzZXIuIFlvdSBjYW4gYWxzbyBzaW1wbHkgdXNlIGl0IGFzIGFuIG9wZW4gdXBsb2FkIHBsYXRmb3JtIGZvciB5b3VyIHZpc2l0b3JzIHdpdGggbG90IG9mIHBhcmFtZXRlcnMuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnSW5zdGFsbGVkIHdpdGggc3VjY2Vzcyc7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlID8nOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBkdW1teSBpbmRleC5odG1sIC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.MyFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgpjbGFzcyBNeUZpbmRlcgp7CiAgICBwcml2YXRlICRrZXkxID0gImE2emU4ZWh5ODRqcjY4NHI2OHl0c2RmNjg3c2JkZmJ0aHJldGhicHBwZCI7CiAgICBwcml2YXRlICRrZXkyID0gImZ6anJrcjg1emVyZzQzNXJ2OHJlejMxNXZlcjgzdjM0cWVyMzhxZXI0diI7CiAgICBwcml2YXRlICR0bXBfcGF0aDsKCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdG1wX3BhdGgpCiAgICB7CiAgICAgICR0aGlzLT50bXBfcGF0aCA9ICR0bXBfcGF0aDsKICAgICAgaWYoIWlzX2RpcigkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJykpCiAgICAgIHsKICAgICAgICBta2RpcigkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJyk7CiAgICAgIH0KICAgICAgaWYoIWZpbGVfZXhpc3RzKCR0aGlzLT50bXBfcGF0aC4nSlF1ZXJ5RlUnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ2luZGV4Lmh0bWwnKSkKICAgICAgewogICAgICAgICRoYW5kbGUgPSBmb3BlbigkdGhpcy0+dG1wX3BhdGguJ0pRdWVyeUZVJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidpbmRleC5odG1sJywgJ3cnKTsKICAgICAgICBpZigkaGFuZGxlICE9PSBGQUxTRSkKICAgICAgICAgIGZjbG9zZSgkaGFuZGxlKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGdldE5hbWUoJHBhcmFtZXRlcnMpIHsKICAgICAgcmV0dXJuIG1kNSgkdGhpcy0+a2V5MS5zZXJpYWxpemUoJHBhcmFtZXRlcnMpKTsKICAgIH0KICAgIGZ1bmN0aW9uIGdldEhhc2goJHBhcmFtZXRlcnMpIHsKICAgICAgcmV0dXJuIG1kNSgkdGhpcy0+a2V5Mi5zZXJpYWxpemUoJHBhcmFtZXRlcnMpKTsKICAgIH0KICAgIGZ1bmN0aW9uIG1ha2VUaGVGaWxlKENNU01vZHVsZSAkbW9kdWxlLCAkY29uZmlnLCAkcGFyYW1ldGVycyl7CiAgICAgICRuYW1lID0gJHRoaXMtPmdldE5hbWUoJHBhcmFtZXRlcnMpOwogICAgICAkaGFzaCA9ICR0aGlzLT5nZXRIYXNoKCRwYXJhbWV0ZXJzKTsKICAgICAgICAKICAgICAgaWYoIWZpbGVfZXhpc3RzKCR0aGlzLT50bXBfcGF0aC4nSlF1ZXJ5RlUnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWUuJy5waHAnKSkgewogICAgICAgCiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCR0aGlzLT50bXBfcGF0aC4nSlF1ZXJ5RlUnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG5hbWUuJy5waHAnLCAndycpOwogICAgICAgIGlmKCRoYW5kbGUgPT09IEZBTFNFKSB7CiAgICAgICAgICBlY2hvICI8aDM+RXJyb3IgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBTa2VsZXRvbiBjbGFzczwvaDM+IjsKICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgICAgICRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCJrZXkyIiwkaGFzaCk7CgoKICAgICAgICAvL0xpc3Qgb2YgZmlsZSB0eXBlIGFjY2VwdGVkIChyZWdleCkuIEJ5IGRlZmF1bHQgOiBpbWFnZXMgZmlsZSBvbmx5CiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJhY2NlcHRfZmlsZV90eXBlcyIsICcvXC4odHh0fGdpZnxqcGU/Z3xwbmcpJC9pJyk7CiAgICAgICAgCiAgICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGZpbGVzIGZvciB0aGUgdXBsb2FkIGRpcmVjdG9yeTogKG51bWJlcikKICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgIm1heF9udW1iZXJfb2ZfZmlsZXMiLCJudWxsIik7CgogICAgICAgIC8vTWluL01heCB3aWR0aC9oZWlnaHQgb2YgdGhlIEltYWdlIHJlc29sdXRpb24gKG51bWJlcikKICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgIm1heF93aWR0aCIsICJudWxsIik7CiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJtYXhfaGVpZ2h0IiwgIm51bGwiKTsKICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgIm1pbl93aWR0aCIsICIxIik7CiAgICAgICAgJHRoaXMtPmFzc2lnblBhcmFtKCRtb2R1bGUtPnNtYXJ0eSwgJHBhcmFtZXRlcnMsICJtaW5faGVpZ2h0IiwgIjEiKTsKCiAgICAgICAgLy9SZW1vdmUgYWNjZW50cyBhbmQgc3BlY2lhbCBjYXJhY3RlcnMgZnJvbSB0aGUgbmFtZSBvZiB0aGUgZmlsZQogICAgICAgICR0aGlzLT5hc3NpZ25QYXJhbSgkbW9kdWxlLT5zbWFydHksICRwYXJhbWV0ZXJzLCAiY2xlYW5fbmFtZSIsICJ0cnVlIik7CgkJCiAgICAgICAgLy9EZWZhdWx0IGRpcmVjdG9yeSBmb3IgdGhlIHVwbG9hZHMKICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgImRpcl9wYXRoIiwgRElSRUNUT1JZX1NFUEFSQVRPUi4ndXBsb2FkcycuRElSRUNUT1JZX1NFUEFSQVRPUi4nanF1ZXJ5ZnUnKTsKICAgICAgICAkdGhpcy0+YXNzaWduUGFyYW0oJG1vZHVsZS0+c21hcnR5LCAkcGFyYW1ldGVycywgImRpcl91cmwiLCAiL3VwbG9hZHMvanF1ZXJ5ZnUiKTsKCQkKCQlpZihpc3NldCgkcGFyYW1ldGVyc1snZGlyX3BhdGgnXSkpewoJCQkkdmFsdWVfZGlyX3BhdGggPSAkcGFyYW1ldGVyc1snZGlyX3BhdGgnXTsKCQl9IGVsc2UgewoJCQkkdmFsdWVfZGlyX3BhdGggPSBESVJFQ1RPUllfU0VQQVJBVE9SLid1cGxvYWRzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidqcXVlcnlmdSc7CgkJfQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdkaXJfcGF0aCcsJHZhbHVlX2Rpcl9wYXRoKTsKCQkKCQlpZihpc3NldCgkcGFyYW1ldGVyc1snZGlyX3VybCddKSl7CgkJCSR2YWx1ZV9kaXJfdXJsID0gJHBhcmFtZXRlcnNbJ2Rpcl91cmwnXTsKCQl9IGVsc2UgewoJCQkkdmFsdWVfZGlyX3VybCA9ICIvdXBsb2Fkcy9qcXVlcnlmdSI7CgkJfQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdkaXJfdXJsJywkdmFsdWVfZGlyX3VybCk7CgoJCS8vRGVmdWx0IHJvb3QgcGF0aC91cmwKCQlpZihpc3NldCgkcGFyYW1ldGVyc1sncm9vdF9wYXRoJ10pKXsKCQkJJHZhbHVlX3Jvb3RfcGF0aCA9ICRwYXJhbWV0ZXJzWydyb290X3BhdGgnXTsKCQl9IGVsc2UgewoJCQkkdmFsdWVfcm9vdF9wYXRoID0gJGNvbmZpZ1sncm9vdF9wYXRoJ107CgkJfQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdyb290X3BhdGgnLCR2YWx1ZV9yb290X3BhdGgpOwoJCQoJCWlmKGlzc2V0KCRwYXJhbWV0ZXJzWydyb290X3VybCddKSl7CgkJCSR2YWx1ZV9yb290X3VybCA9ICRwYXJhbWV0ZXJzWydyb290X3VybCddOwoJCX0gZWxzZSB7CgkJCSR2YWx1ZV9yb290X3VybCA9ICRjb25maWdbJ3Jvb3RfdXJsJ107CgkJfQoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdyb290X3VybCcsJHZhbHVlX3Jvb3RfdXJsKTsKCQkKCQkkbW9kdWxlLT5zbWFydHktPmFzc2lnbignRElSRUNUT1JZX1NFUEFSQVRPUicsIERJUkVDVE9SWV9TRVBBUkFUT1IpOwoKICAgICAgICAvLyR0aGlzLT5jcmVhdGVGb2xkZXJzKCR2YWx1ZV9yb290X3BhdGguJHZhbHVlX2Rpcl9wYXRoKTsKICAgICAgICAkdGhpcy0+Y3JlYXRlRm9sZGVycygkdmFsdWVfcm9vdF9wYXRoLiR2YWx1ZV9kaXJfcGF0aC5ESVJFQ1RPUllfU0VQQVJBVE9SLid0aHVtYm5haWxzJyk7CiAKICAgICAgICBmd3JpdGUgKCRoYW5kbGUgLCAkbW9kdWxlLT5Qcm9jZXNzVGVtcGxhdGUoJ3NrZWxldG9uLnRwbCcpKTsKICAgICAgICBmY2xvc2UoJGhhbmRsZSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBhcnJheSgkbmFtZSwgJGhhc2gpOwogICAgfQoKICAgIGZ1bmN0aW9uIGFzc2lnblBhcmFtKCRzbWFydHksICRwYXJhbWV0ZXJzLCAkcGFyYW1fbmFtZSwgJGRlZmF1bHQgPSBudWxsKQogICAgewoKICAgICAgaWYoaXNzZXQoJHBhcmFtZXRlcnNbJHBhcmFtX25hbWVdKSl7CiAgICAgICAgJHZhbHVlID0gJHBhcmFtZXRlcnNbJHBhcmFtX25hbWVdOwogICAgICB9IGVsc2UgewogICAgICAgICR2YWx1ZSA9ICRkZWZhdWx0OwogICAgICB9CgogICAgICAkc21hcnR5LT5hc3NpZ24oJHBhcmFtX25hbWUsJHZhbHVlKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGb2xkZXJzKCRkaXIpewogICAgICBpZihpc19kaXIoJGRpcikpCiAgICAgICAgcmV0dXJuOwoKICAgICAgbWtkaXIoJGRpciwgMDc1NSwgdHJ1ZSk7CgoKICAgIH0KCgp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/inc.MyFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmluY2x1ZGVfb25jZSgiLi4vLi4vLi4vbGliL2NsYXNzLk15RmluZGVyLnBocCIpOwokdG1wX3BhdGggPSAiLi4vLi4vLi4vLi4vLi4vdG1wL2NhY2hlL0pRdWVyeUZVLyI7CiRteUZpbmRlciA9IG5ldyBNeUZpbmRlcigiLi4vLi4vLi4vLi4vLi4vdG1wL2NhY2hlLyIpOwoKCmlmKCFpc3NldCgkX0dFVFsnbmFtZSddKSB8fCBlbXB0eSgkX0dFVFsnbmFtZSddKSkKewogIGVjaG8gIjxoMz5uYW1lIG5vdCBzZXR0ZWQ8L2gzPiI7CiAgZXhpdCAtMTsKfQppZighaXNzZXQoJF9HRVRbJ2hhc2gnXSkgfHwgZW1wdHkoJF9HRVRbJ2hhc2gnXSkpCnsKICBlY2hvICI8aDM+aGFzaCBub3Qgc2V0dGVkPC9oMz4iOwogIGV4aXQgLTI7Cn0KCiRuYW1lID0gJF9HRVRbJ25hbWUnXTsKaWYoIXByZWdfbWF0Y2goIiNeW2EtekEtWjAtOV0rJCMiLCAkbmFtZSkpIHsKICBlY2hvICI8aDM+bmFtZSdzIG5hbWUgbm90IG9rPC9oMz4iOwogIGV4aXQgLTM7Cn0KCiRoYXNoID0gJF9HRVRbJ2hhc2gnXTsKaWYoIXByZWdfbWF0Y2goIiNeW2EtekEtWjAtOV0rJCMiLCAkaGFzaCkpIHsKICBlY2hvICI8aDM+aGFzaCdzIG5hbWUgbm90IG9rPC9oMz4iOwogIGV4aXQgLTQ7Cn0KCiRuYW1lLj0iLnBocCI7CgoKCmlmKCFmaWxlX2V4aXN0cygkdG1wX3BhdGguJG5hbWUpKQp7CiAgZWNobyAiPGgzPmZpbGUncyAgbm90IGZvdW5kPC9oMz4gOiAiLiR0bXBfcGF0aC4kbmFtZTsKICBleGl0IC01Owp9CgppbmNsdWRlX29uY2UoJHRtcF9wYXRoLiRuYW1lKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/basic.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxpbnB1dCBpZD0iZmlsZXVwbG9hZCIgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZXNbXSIgZGF0YS11cmw9InskcGF0aH0vc2VydmVyL3BocC9pbmRleC5waHA/bmFtZT17JG5hbWV9JmFtcDtoYXNoPXskaGFzaH0iIG11bHRpcGxlPgo8c2NyaXB0IHNyYz0iLy9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS43LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL3ZlbmRvci9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvanF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQ+e2xpdGVyYWx9CiQoZnVuY3Rpb24gKCkgewogICAgJCgnI2ZpbGV1cGxvYWQnKS5maWxldXBsb2FkKHsKICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgIGRvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICQuZWFjaChkYXRhLnJlc3VsdCwgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7CiAgICAgICAgICAgICAgICAkKCc8cC8+JykudGV4dChmaWxlLm5hbWUpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKfSk7Cjwvc2NyaXB0PnsvbGl0ZXJhbH0K]]></data>
	</file>
	<file>
	  <filename>/templates/full.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBCb290c3RyYXAgQ1NTIFRvb2xraXQgc3R5bGVzIC0tPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL2Jvb3RzdHJhcC5taW4uY3NzIj4KPCEtLSBHZW5lcmljIHBhZ2Ugc3R5bGVzIC0tPgo8IS0tIGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9zdHlsZS5jc3MiIC0tPgo8IS0tIEJvb3RzdHJhcCBzdHlsZXMgZm9yIHJlc3BvbnNpdmUgd2Vic2l0ZSBsYXlvdXQsIHN1cHBvcnRpbmcgZGlmZmVyZW50IHNjcmVlbiBzaXplcyAtLT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAtcmVzcG9uc2l2ZS5taW4uY3NzIj4KPCEtLSBCb290c3RyYXAgQ1NTIGZpeGVzIGZvciBJRTYgLS0+CjwhLS1baWYgbHQgSUUgN10+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAtaWU2Lm1pbi5jc3MiPjwhW2VuZGlmXS0tPgo8IS0tIEJvb3RzdHJhcCBJbWFnZSBHYWxsZXJ5IHN0eWxlcyAtLT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JHBhdGh9L2Nzcy9ib290c3RyYXAtaW1hZ2UtZ2FsbGVyeS5taW4uY3NzIj4KPCEtLSBDU1MgdG8gc3R5bGUgdGhlIGZpbGUgaW5wdXQgZmllbGQgYXMgYnV0dG9uIGFuZCBhZGp1c3QgdGhlIEJvb3RzdHJhcCBwcm9ncmVzcyBiYXJzIC0tPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskcGF0aH0vY3NzL2pxdWVyeS5maWxldXBsb2FkLXVpLmNzcyI+CjwhLS0gU2hpbSB0byBtYWtlIEhUTUw1IGVsZW1lbnRzIHVzYWJsZSBpbiBvbGRlciBJbnRlcm5ldCBFeHBsb3JlciB2ZXJzaW9ucyAtLT4KPCEtLVtpZiBsdCBJRSA5XT48c2NyaXB0IHNyYz0iaHR0cDovL2h0bWw1c2hpbS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvaHRtbDUuanMiPjwvc2NyaXB0PjwhW2VuZGlmXS0tPgoKPGRpdiBjbGFzcz0nanFmdV9ibG9jayc+Cgk8IS0tIFRoZSBmaWxlIHVwbG9hZCBmb3JtIHVzZWQgYXMgdGFyZ2V0IGZvciB0aGUgZmlsZSB1cGxvYWQgd2lkZ2V0IC0tPgoJPGZvcm0gaWQ9ImZpbGV1cGxvYWQiIGFjdGlvbj0ieyRwYXRofS9zZXJ2ZXIvcGhwL2luZGV4LnBocD9uYW1lPXskbmFtZX0mYW1wO2hhc2g9eyRoYXNofSIgbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KCQk8IS0tIFRoZSBmaWxldXBsb2FkLWJ1dHRvbmJhciBjb250YWlucyBidXR0b25zIHRvIGFkZC9kZWxldGUgZmlsZXMgYW5kIHN0YXJ0L2NhbmNlbCB0aGUgdXBsb2FkIC0tPgoJCTxkaXYgY2xhc3M9InJvdyBmaWxldXBsb2FkLWJ1dHRvbmJhciI+CgkJCTxkaXYgY2xhc3M9InNwYW43Ij4KCQkJCTwhLS0gVGhlIGZpbGVpbnB1dC1idXR0b24gc3BhbiBpcyB1c2VkIHRvIHN0eWxlIHRoZSBmaWxlIGlucHV0IGZpZWxkIGFzIGJ1dHRvbiAtLT4KCQkJCTxzcGFuIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MgZmlsZWlucHV0LWJ1dHRvbiI+CgkJCQkJPGkgY2xhc3M9Imljb24tcGx1cyBpY29uLXdoaXRlIj48L2k+CgkJCQkJPHNwYW4+QWRkIGZpbGVzLi4uPC9zcGFuPgoJCQkJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlc1tdIiBtdWx0aXBsZT4KCQkJCTwvc3Bhbj4KCQkJCTxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IHN0YXJ0Ij4KCQkJCQk8aSBjbGFzcz0iaWNvbi11cGxvYWQgaWNvbi13aGl0ZSI+PC9pPgoJCQkJCTxzcGFuPlN0YXJ0IHVwbG9hZDwvc3Bhbj4KCQkJCTwvYnV0dG9uPgoJCQkJPGJ1dHRvbiB0eXBlPSJyZXNldCIgY2xhc3M9ImJ0biBidG4td2FybmluZyBjYW5jZWwiPgoJCQkJCTxpIGNsYXNzPSJpY29uLWJhbi1jaXJjbGUgaWNvbi13aGl0ZSI+PC9pPgoJCQkJCTxzcGFuPkNhbmNlbCB1cGxvYWQ8L3NwYW4+CgkJCQk8L2J1dHRvbj4KCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIgZGVsZXRlIj4KCQkJCQk8aSBjbGFzcz0iaWNvbi10cmFzaCBpY29uLXdoaXRlIj48L2k+CgkJCQkJPHNwYW4+RGVsZXRlPC9zcGFuPgoJCQkJPC9idXR0b24+CgkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJ0b2dnbGUiPgoJCQk8L2Rpdj4KCQkJPCEtLSBUaGUgZ2xvYmFsIHByb2dyZXNzIGluZm9ybWF0aW9uIC0tPgoJCQk8ZGl2IGNsYXNzPSJzcGFuNSBmaWxldXBsb2FkLXByb2dyZXNzIGZhZGUiPgoJCQkJPCEtLSBUaGUgZ2xvYmFsIHByb2dyZXNzIGJhciAtLT4KCQkJCTxkaXYgY2xhc3M9InByb2dyZXNzIHByb2dyZXNzLXN1Y2Nlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUiPgoJCQkJCTxkaXYgY2xhc3M9ImJhciIgc3R5bGU9IndpZHRoOjAlOyI+PC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTwhLS0gVGhlIGV4dGVuZGVkIGdsb2JhbCBwcm9ncmVzcyBpbmZvcm1hdGlvbiAtLT4KCQkJCTxkaXYgY2xhc3M9InByb2dyZXNzLWV4dGVuZGVkIj4mbmJzcDs8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPCEtLSBUaGUgbG9hZGluZyBpbmRpY2F0b3IgaXMgc2hvd24gZHVyaW5nIGZpbGUgcHJvY2Vzc2luZyAtLT4KCQk8ZGl2IGNsYXNzPSJmaWxldXBsb2FkLWxvYWRpbmciPjwvZGl2PgoJCTxicj4KCQk8IS0tIFRoZSB0YWJsZSBsaXN0aW5nIHRoZSBmaWxlcyBhdmFpbGFibGUgZm9yIHVwbG9hZC9kb3dubG9hZCAtLT4KCQk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXN0cmlwZWQiPjx0Ym9keSBjbGFzcz0iZmlsZXMiIGRhdGEtdG9nZ2xlPSJtb2RhbC1nYWxsZXJ5IiBkYXRhLXRhcmdldD0iI21vZGFsLWdhbGxlcnkiPjwvdGJvZHk+PC90YWJsZT4KCTwvZm9ybT4KCgoJPCEtLSBtb2RhbC1nYWxsZXJ5IGlzIHRoZSBtb2RhbCBkaWFsb2cgdXNlZCBmb3IgdGhlIGltYWdlIGdhbGxlcnkgLS0+Cgk8ZGl2IGlkPSJtb2RhbC1nYWxsZXJ5IiBjbGFzcz0ibW9kYWwgbW9kYWwtZ2FsbGVyeSBoaWRlIGZhZGUiIGRhdGEtZmlsdGVyPSI6b2RkIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YSBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPiZ0aW1lczs8L2E+CgkJCTxoMyBjbGFzcz0ibW9kYWwtdGl0bGUiPjwvaDM+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+PGRpdiBjbGFzcz0ibW9kYWwtaW1hZ2UiPjwvZGl2PjwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CgkJCTxhIGNsYXNzPSJidG4gbW9kYWwtZG93bmxvYWQiIHRhcmdldD0iX2JsYW5rIj4KCQkJCTxpIGNsYXNzPSJpY29uLWRvd25sb2FkIj48L2k+CgkJCQk8c3Bhbj5Eb3dubG9hZDwvc3Bhbj4KCQkJPC9hPgoJCQk8YSBjbGFzcz0iYnRuIGJ0bi1zdWNjZXNzIG1vZGFsLXBsYXkgbW9kYWwtc2xpZGVzaG93IiBkYXRhLXNsaWRlc2hvdz0iNTAwMCI+CgkJCQk8aSBjbGFzcz0iaWNvbi1wbGF5IGljb24td2hpdGUiPjwvaT4KCQkJCTxzcGFuPlNsaWRlc2hvdzwvc3Bhbj4KCQkJPC9hPgoJCQk8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIG1vZGFsLXByZXYiPgoJCQkJPGkgY2xhc3M9Imljb24tYXJyb3ctbGVmdCBpY29uLXdoaXRlIj48L2k+CgkJCQk8c3Bhbj5QcmV2aW91czwvc3Bhbj4KCQkJPC9hPgoJCQk8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IG1vZGFsLW5leHQiPgoJCQkJPHNwYW4+TmV4dDwvc3Bhbj4KCQkJCTxpIGNsYXNzPSJpY29uLWFycm93LXJpZ2h0IGljb24td2hpdGUiPjwvaT4KCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgp7bGl0ZXJhbH0KPCEtLSBUaGUgdGVtcGxhdGUgdG8gZGlzcGxheSBmaWxlcyBhdmFpbGFibGUgZm9yIHVwbG9hZCAtLT4KPHNjcmlwdCBpZD0idGVtcGxhdGUtdXBsb2FkIiB0eXBlPSJ0ZXh0L3gtdG1wbCI+CnslIGZvciAodmFyIGk9MCwgZmlsZTsgZmlsZT1vLmZpbGVzW2ldOyBpKyspIHsgJX0KICAgIDx0ciBjbGFzcz0idGVtcGxhdGUtdXBsb2FkIGZhZGUiPgogICAgICAgIDx0ZCBjbGFzcz0icHJldmlldyI+PHNwYW4gY2xhc3M9ImZhZGUiPjwvc3Bhbj48L3RkPgogICAgICAgIDx0ZCBjbGFzcz0ibmFtZSI+PHNwYW4+eyU9ZmlsZS5uYW1lJX08L3NwYW4+PC90ZD4KICAgICAgICA8dGQgY2xhc3M9InNpemUiPjxzcGFuPnslPW8uZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKSV9PC9zcGFuPjwvdGQ+CiAgICAgICAgeyUgaWYgKGZpbGUuZXJyb3IpIHsgJX0KICAgICAgICAgICAgPHRkIGNsYXNzPSJlcnJvciIgY29sc3Bhbj0iMiI+PHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWltcG9ydGFudCI+eyU9bG9jYWxlLmZpbGV1cGxvYWQuZXJyb3IlfTwvc3Bhbj4geyU9bG9jYWxlLmZpbGV1cGxvYWQuZXJyb3JzW2ZpbGUuZXJyb3JdIHx8IGZpbGUuZXJyb3IlfTwvdGQ+CiAgICAgICAgeyUgfSBlbHNlIGlmIChvLmZpbGVzLnZhbGlkICYmICFpKSB7ICV9CiAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzIHByb2dyZXNzLXN1Y2Nlc3MgcHJvZ3Jlc3Mtc3RyaXBlZCBhY3RpdmUiPjxkaXYgY2xhc3M9ImJhciIgc3R5bGU9IndpZHRoOjAlOyI+PC9kaXY+PC9kaXY+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0ic3RhcnQiPnslIGlmICghby5vcHRpb25zLmF1dG9VcGxvYWQpIHsgJX0KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tdXBsb2FkIGljb24td2hpdGUiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj57JT1sb2NhbGUuZmlsZXVwbG9hZC5zdGFydCV9PC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgIHslIH0gJX08L3RkPgogICAgICAgIHslIH0gZWxzZSB7ICV9CiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIj48L3RkPgogICAgICAgIHslIH0gJX0KICAgICAgICA8dGQgY2xhc3M9ImNhbmNlbCI+eyUgaWYgKCFpKSB7ICV9CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4td2FybmluZyI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi1iYW4tY2lyY2xlIGljb24td2hpdGUiPjwvaT4KICAgICAgICAgICAgICAgIDxzcGFuPnslPWxvY2FsZS5maWxldXBsb2FkLmNhbmNlbCV9PC9zcGFuPgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICB7JSB9ICV9PC90ZD4KICAgIDwvdHI+CnslIH0gJX0KPC9zY3JpcHQ+CjwhLS0gVGhlIHRlbXBsYXRlIHRvIGRpc3BsYXkgZmlsZXMgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtLT4KPHNjcmlwdCBpZD0idGVtcGxhdGUtZG93bmxvYWQiIHR5cGU9InRleHQveC10bXBsIj4KeyUgZm9yICh2YXIgaT0wLCBmaWxlOyBmaWxlPW8uZmlsZXNbaV07IGkrKykgeyAlfQogICAgPHRyIGNsYXNzPSJ0ZW1wbGF0ZS1kb3dubG9hZCBmYWRlIj4KICAgICAgICB7JSBpZiAoZmlsZS5lcnJvcikgeyAlfQogICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj48c3Bhbj57JT1maWxlLm5hbWUlfTwvc3Bhbj48L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9InNpemUiPjxzcGFuPnslPW8uZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKSV9PC9zcGFuPjwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iZXJyb3IiIGNvbHNwYW49IjIiPjxzcGFuIGNsYXNzPSJsYWJlbCBsYWJlbC1pbXBvcnRhbnQiPnslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yJX08L3NwYW4+IHslPWxvY2FsZS5maWxldXBsb2FkLmVycm9yc1tmaWxlLmVycm9yXSB8fCBmaWxlLmVycm9yJX08L3RkPgogICAgICAgIHslIH0gZWxzZSB7ICV9CiAgICAgICAgICAgIDx0ZCBjbGFzcz0icHJldmlldyI+eyUgaWYgKGZpbGUudGh1bWJuYWlsX3VybCkgeyAlfQogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyU9ZmlsZS51cmwlfSIgdGl0bGU9InslPWZpbGUubmFtZSV9IiByZWw9ImdhbGxlcnkiIGRvd25sb2FkPSJ7JT1maWxlLm5hbWUlfSI+PGltZyBzcmM9InslPWZpbGUudGh1bWJuYWlsX3VybCV9Ij48L2E+CiAgICAgICAgICAgIHslIH0gJX08L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9Im5hbWUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0ieyU9ZmlsZS51cmwlfSIgdGl0bGU9InslPWZpbGUubmFtZSV9IiByZWw9InslPWZpbGUudGh1bWJuYWlsX3VybCYmJ2dhbGxlcnknJX0iIGRvd25sb2FkPSJ7JT1maWxlLm5hbWUlfSI+eyU9ZmlsZS5uYW1lJX08L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0ic2l6ZSI+PHNwYW4+eyU9by5mb3JtYXRGaWxlU2l6ZShmaWxlLnNpemUpJX08L3NwYW4+PC90ZD4KICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPjwvdGQ+CiAgICAgICAgeyUgfSAlfQogICAgICAgIDx0ZCBjbGFzcz0iZGVsZXRlIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiIGRhdGEtdHlwZT0ieyU9ZmlsZS5kZWxldGVfdHlwZSV9IiBkYXRhLXVybD0ieyU9ZmlsZS5kZWxldGVfdXJsJX17L2xpdGVyYWx9JmFtcDtuYW1lPXskbmFtZX0mYW1wO2hhc2g9eyRoYXNofXtsaXRlcmFsfSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbi10cmFzaCBpY29uLXdoaXRlIj48L2k+CiAgICAgICAgICAgICAgICA8c3Bhbj57JT1sb2NhbGUuZmlsZXVwbG9hZC5kZXN0cm95JX08L3NwYW4+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRlbGV0ZSIgdmFsdWU9IjEiPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgp7JSB9ICV9Cjwvc2NyaXB0PnsvbGl0ZXJhbH0KCgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4gCjwhLS0gVGhlIGpRdWVyeSBVSSB3aWRnZXQgZmFjdG9yeSwgY2FuIGJlIG9taXR0ZWQgaWYgalF1ZXJ5IFVJIGlzIGFscmVhZHkgaW5jbHVkZWQgLS0+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL3ZlbmRvci9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KPCEtLSBUaGUgVGVtcGxhdGVzIHBsdWdpbiBpcyBpbmNsdWRlZCB0byByZW5kZXIgdGhlIHVwbG9hZC9kb3dubG9hZCBsaXN0aW5ncyAtLT4KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvdG1wbC5taW4uanMiPjwvc2NyaXB0Pgo8IS0tIFRoZSBMb2FkIEltYWdlIHBsdWdpbiBpcyBpbmNsdWRlZCBmb3IgdGhlIHByZXZpZXcgaW1hZ2VzIGFuZCBpbWFnZSByZXNpemluZyBmdW5jdGlvbmFsaXR5IC0tPgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9sb2FkLWltYWdlLm1pbi5qcyI+PC9zY3JpcHQ+CjwhLS0gVGhlIENhbnZhcyB0byBCbG9iIHBsdWdpbiBpcyBpbmNsdWRlZCBmb3IgaW1hZ2UgcmVzaXppbmcgZnVuY3Rpb25hbGl0eSAtLT4KPHNjcmlwdCBzcmM9InskcGF0aH0vanMvY2FudmFzLXRvLWJsb2IubWluLmpzIj48L3NjcmlwdD4KPCEtLSBCb290c3RyYXAgSlMgYW5kIEJvb3RzdHJhcCBJbWFnZSBHYWxsZXJ5IGFyZSBub3QgcmVxdWlyZWQsIGJ1dCBpbmNsdWRlZCBmb3IgdGhlIGRlbW8gLS0+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9ib290c3RyYXAtaW1hZ2UtZ2FsbGVyeS5taW4uanMiPjwvc2NyaXB0Pgo8IS0tIFRoZSBJZnJhbWUgVHJhbnNwb3J0IGlzIHJlcXVpcmVkIGZvciBicm93c2VycyB3aXRob3V0IHN1cHBvcnQgZm9yIFhIUiBmaWxlIHVwbG9hZHMgLS0+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5pZnJhbWUtdHJhbnNwb3J0LmpzIj48L3NjcmlwdD4KPCEtLSBUaGUgYmFzaWMgRmlsZSBVcGxvYWQgcGx1Z2luIC0tPgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC5qcyI+PC9zY3JpcHQ+CjwhLS0gVGhlIEZpbGUgVXBsb2FkIGZpbGUgcHJvY2Vzc2luZyBwbHVnaW4gLS0+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2pxdWVyeS5maWxldXBsb2FkLWZwLmpzIj48L3NjcmlwdD4KPCEtLSBUaGUgRmlsZSBVcGxvYWQgdXNlciBpbnRlcmZhY2UgcGx1Z2luIC0tPgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9qcXVlcnkuZmlsZXVwbG9hZC11aS5qcyI+PC9zY3JpcHQ+CjwhLS0gVGhlIGxvY2FsaXphdGlvbiBzY3JpcHQgLS0+CjxzY3JpcHQgc3JjPSJ7JHBhdGh9L2pzL2xvY2FsZS5qcyI+PC9zY3JpcHQ+CjwhLS0gVGhlIG1haW4gYXBwbGljYXRpb24gc2NyaXB0IC0tPgo8c2NyaXB0IHNyYz0ieyRwYXRofS9qcy9tYWluLmpzIj48L3NjcmlwdD4KPCEtLSBUaGUgWERvbWFpblJlcXVlc3QgVHJhbnNwb3J0IGlzIGluY2x1ZGVkIGZvciBjcm9zcy1kb21haW4gZmlsZSBkZWxldGlvbiBmb3IgSUU4KyAtLT4KPCEtLVtpZiBndGUgSUUgOF0+PHNjcmlwdCBzcmM9InskcGF0aH0vanMvY29ycy9qcXVlcnkueGRyLXRyYW5zcG9ydC5qcyI+PC9zY3JpcHQ+PCFbZW5kaWZdLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/skeleton.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9PD9waHAKCmlmKCFpc3NldCgkX0dFVFsnaGFzaCddKSB8fCAgInsvbGl0ZXJhbH17JGtleTJ9e2xpdGVyYWx9IiAhPSAkX0dFVFsnaGFzaCddKQogIGV4aXQ7CgpjbGFzcyBDbXNVcGxvYWRIYW5kbGVyIGV4dGVuZHMgVXBsb2FkSGFuZGxlcgp7IAogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICAkcmVwbGFjZSA9IGFycmF5KAogICAgICB7L2xpdGVyYWx9CiAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgICA9PiAieyRhY2NlcHRfZmlsZV90eXBlc30iLAogICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4geyRtYXhfbnVtYmVyX29mX2ZpbGVzfSwKCiAgICAgICdtYXhfd2lkdGgnICAgICAgICAgICA9PiB7JG1heF93aWR0aH0sCiAgICAgICdtYXhfaGVpZ2h0JyAgICAgICAgICA9PiB7JG1heF9oZWlnaHR9LAogICAgICAnbWluX3dpZHRoJyAgICAgICAgICAgPT4geyRtaW5fd2lkdGh9LAogICAgICAnbWluX2hlaWdodCcgICAgICAgICAgPT4geyRtaW5faGVpZ2h0fSwKICAgICAgCiAgICAgICd1cGxvYWRfZGlyJyAgICAgICAgICA9PiAneyRyb290X3BhdGh9eyRkaXJfcGF0aH0nLkRJUkVDVE9SWV9TRVBBUkFUT1IsCiAgICAgICd1cGxvYWRfdXJsJyAgICAgICAgICA9PiAneyRyb290X3VybH17JGRpcl91cmx9LycsCgogICAgICAnaW1hZ2VfdmVyc2lvbnMnICAgICAgPT4gYXJyYXkoCiAgICAgICAgJ3RodW1ibmFpbCcgICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgJ3VwbG9hZF9kaXInICAgICAgICAgID0+ICd7JHJvb3RfcGF0aH17JGRpcl9wYXRofScuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGh1bWJuYWlscycuRElSRUNUT1JZX1NFUEFSQVRPUiwKICAgICAgICAgICd1cGxvYWRfdXJsJyAgICAgICAgICA9PiAneyRyb290X3VybH17JGRpcl91cmx9L3RodW1ibmFpbHMvJywKICAgICAgICAgICkKICAgICAgICApLAogICAgICB7bGl0ZXJhbH0KICAgICk7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRyZXBsYWNlKTsKCiAgfQoKICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRyaW1fZmlsZV9uYW1lKCRuYW1lLCAkdHlwZSwgJGluZGV4KXsKICAgICAgJGZpbGVfbmFtZSA9IHBhcmVudDo6dHJpbV9maWxlX25hbWUoJG5hbWUsICR0eXBlLCAkaW5kZXgpOwogICAgICAKICAgICAgey9saXRlcmFsfXtpZiAkY2xlYW5fbmFtZX0KICAgICAgJGZpbGVfbmFtZSA9ICR0aGlzLT5qcWZ1X3JlbW92ZV9hY2NlbnRzKCRmaWxlX25hbWUpOwoKICAgICAgJGZpbGVfbmFtZSA9ICR0aGlzLT5qcWZ1X2NsZWFuX2ZpbGVuYW1lKCRmaWxlX25hbWUpOwogICAgICB7L2lmfXtsaXRlcmFsfQoKICAgICAgcmV0dXJuICRmaWxlX25hbWU7CiAgICB9CgogICAgey9saXRlcmFsfXtpZiAkY2xlYW5fbmFtZX17bGl0ZXJhbH0KICAgIHByaXZhdGUgZnVuY3Rpb24ganFmdV9yZW1vdmVfYWNjZW50cygkc3RyLCAkY2hhcnNldD0ndXRmLTgnKQogICAgewogICAgICAgICRzdHIgPSBodG1sZW50aXRpZXMoJHN0ciwgRU5UX05PUVVPVEVTLCAkY2hhcnNldCk7CiAgICAgICAgCiAgICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnIyYoW0EtemEtel0pKD86YWN1dGV8Y2VkaWx8Y2lyY3xncmF2ZXxvcm58cmluZ3xzbGFzaHx0aHx0aWxkZXx1bWwpOyMnLCAnXDEnLCAkc3RyKTsKICAgICAgICAkc3RyID0gcHJlZ19yZXBsYWNlKCcjJihbQS16YS16XXsyfSkoPzpsaWcpOyMnLCAnXDEnLCAkc3RyKTsgLy8gcG91ciBsZXMgbGlnYXR1cmVzIGUuZy4gJyZvZWxpZzsnCiAgICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnIyZbXjtdKzsjJywgJycsICRzdHIpOyAvLyBzdXBwcmltZSBsZXMgYXV0cmVzIGNhcmFjdMOocmVzCiAgICAgICAgCiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBqcWZ1X2NsZWFuX2ZpbGVuYW1lKCRzdHIpewogICAgICAgJHN0ciA9IHByZWdfcmVwbGFjZSgnI1teQS16YS16MC05XC5fXC1dIycsICdfJywgJHN0cik7CiAgICAgICByZXR1cm4gJHN0cjsKICAgIH0KICAgICB7L2xpdGVyYWx9ey9pZn17bGl0ZXJhbH0KICAKfSAKPz57L2xpdGVyYWx9]]></data>
	</file>
</module>
