<?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>SQLReport</name>
	<version>0.3</version>
  <mincmsversion>1.9.0</mincmsversion>
	<help><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBPbGl2ZXIgSm9vJnN6bGlnOzxiciAvPjxiciAvPlZlcnNpb246IDAuMzxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjxkaXYgc3R5bGU9Im1hcmdpbjogMjBweDsiPg0KDQogICA8aDQ+VmVyc2lvbjogMC4wIDA5LzIwMTE8L2g0Pg0KICAgPHA+YmV0YSB2ZXJzaW9uIGZvciBmaXJzdCB0ZXN0aW5nIHNlc3Npb24uPC9wPg0KDQogICA8aDQ+VmVyc2lvbjogMC4xIDAxLzIwMTI8L2g0Pg0KICAgPHA+YWRkZWQgcGVyaW9kIGZpbHRlci48L3A+DQoNCiAgIDxoND5WZXJzaW9uOiAwLjIgMDEvMjAxMjwvaDQ+DQogICA8cD5maWx0ZXJzIGNhbiBub3cgYWxzbyBiZSB1c2VkIGF0IHRoZSBmcm9udGVuZC48L3A+DQoNCiAgIDxoND5WZXJzaW9uOiAwLjMgMDEvMjAxMjwvaDQ+DQogICA8cD5maWx0ZXJzIGNhbiBiZSB1c2VkIG9yIG5vdCAoc28gbm90IGV2ZXJ5IHBvc3NpYmxlIGZpbHRlciBoYXMgdG8gYmUgdXNlZCk8L3A+DQoNCjwvZGl2Pg0KPGJyIC8+]]></about>
	<description><![CDATA[Manage all the SQL reports and their accessory parts.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.category-delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1N1cGVyQWRtaW4nKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vc3RheSBmbGV4aWJsZQ0KICAgaWYgKGlzc2V0KCR0aGlzLT5hcnJQYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKSB7DQogICAgICAkX1BPU1RbJ2NhdGVnb3J5X2lkJ10gPSAkdGhpcy0+YXJyUGFyYW1zWydjYXRlZ29yeV9pZCddOw0KICAgfQ0KDQogICBpZiAoaXNzZXQoJF9QT1NUWydjYXRlZ29yeV9pZCddKSkgew0KICAgICAgLy9nZXQgY2F0ZWdvcnkNCiAgICAgICRvYmpGaWx0ZXIgPSBTUUxSZXBvcnRfRmlsdGVyOjpnZXRJbnN0YW5jZUJ5SWQoKGludCkkX1BPU1RbJ2NhdGVnb3J5X2lkJ10pOw0KDQogICAgICAvL2FuZCBkaXNwbGF5IGhlYWRsaW5lDQogICAgICBlY2hvICc8aDEgc3R5bGU9InBhZGRpbmctYm90dG9tOiA2cHg7Ij4nLnNwcmludGYoJHRoaXMtPkxhbmcoJ2NhcHRpb24tZGVsZXRlLWNhdGVnb3J5JyksICRvYmpGaWx0ZXItPmdldE5hbWUoKSkuJzwvaDE+Jy5QSFBfRU9MOw0KDQogICAgICAvL2J1aWxkIGZvcm0gbGluayB3aXRoIGFsbCBwYXJhbXMNCiAgICAgICRzdHJGb3JtQWN0aW9uID0gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnc2V0dGluZ3MnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcnLCBhcnJheSgndGFiJyA9PiAnY2F0ZWdvcmllcycpLCAnJywgdHJ1ZSk7DQoNCiAgICAgIC8vc2hvdyBmb3JtIHRvIHNheSB5ZXMvbm8NCiAgICAgICRzdHJGb3JtICA9ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kc3RyRm9ybUFjdGlvbi4nIj4nOw0KICAgICAgJHN0ckZvcm0gLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNhdGVnb3J5X2lkIiB2YWx1ZT0iJy4kb2JqRmlsdGVyLT5nZXRJZCgpLiciIC8+JzsNCiAgICAgICRzdHJGb3JtIC49ICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkZWxldGUiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCd5ZXMnKS4nIiAvPic7DQogICAgICAkc3RyRm9ybSAuPSAnPC9mb3JtPic7DQoNCiAgICAgIC8vc2hvdyBmb3JtIHRvIGNhbmNlbA0KICAgICAgJHN0ckZvcm0yICA9ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kc3RyRm9ybUFjdGlvbi4nIj4nOw0KICAgICAgJHN0ckZvcm0yIC49ICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjYW5jZWwiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdubycpLiciIC8+JzsNCiAgICAgICRzdHJGb3JtMiAuPSAnPC9mb3JtPic7DQoNCiAgICAgIC8vc2hvdyBhcmUteW91LXN1cmUNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goc3ByaW50ZigkdGhpcy0+TGFuZygnZGVsZXRlLWNhdGVnb3J5LWFyZS15b3Utc3VyZScpLCAkb2JqRmlsdGVyLT5nZXROYW1lKCkpIC4gJyZuYnNwOyZuYnNwOyZuYnNwOycgLiAkc3RyRm9ybSAuICcmbmJzcDsmbmJzcDsnIC4gJHN0ckZvcm0yLCAnd2FybicgKTsNCiAgIH0NCg0KICAgLy9saW5rIHRvIG1vZHVsZSBvdmVydmlldw0KICAgZWNobyAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTVweDsiPicuJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnZGVmYXVsdGFkbWluJywgJHRoaXMtPnN0clJldHVybklkLCAnJmxhcXVvOyAnLiR0aGlzLT5MYW5nKCdtb2R1bGUtb3ZlcnZpZXcnKSwgYXJyYXkoKSwgJycsIGZhbHNlKS4nPC9kaXY+JzsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.category-edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJ1Blcm1pc3Npb24gZGVuaWVkIScsICdlcnJvcicpOw0KICAgICAgcmV0dXJuOw0KICAgfQ0KDQogICAvL3N0YXkgZmxleGlibGUNCiAgIGlmIChpc3NldCgkdGhpcy0+YXJyUGFyYW1zWydjYXRlZ29yeV9pZCddKSkgew0KICAgICAgJF9QT1NUWydjYXRlZ29yeV9pZCddID0gJHRoaXMtPmFyclBhcmFtc1snY2F0ZWdvcnlfaWQnXTsNCiAgIH0NCg0KICAgaWYgKCBpc3NldCgkX1BPU1RbJ2NhdGVnb3J5X2lkJ10pICYmIChpbnQpJF9QT1NUWydjYXRlZ29yeV9pZCddPjAgKSB7DQogICAgICAkb2JqQ2F0ZWdvcnkgPSBTUUxSZXBvcnRfQ2F0ZWdvcnk6OmdldEluc3RhbmNlQnlJZCgoaW50KSRfUE9TVFsnY2F0ZWdvcnlfaWQnXSk7DQogICB9DQogICBlbHNlaWYgKGlzc2V0KCR0aGlzLT5hcnJQYXJhbXNbJ2NyZWF0ZSddKSkgew0KICAgICAgLy9jcmVhdGUgZW1wdHkgaW5zdGFuY2Ugd2l0aCBkdW1teSB2YWx1ZXMNCiAgICAgICRvYmpDYXRlZ29yeSA9IFNRTFJlcG9ydF9DYXRlZ29yeTo6Z2V0RW1wdHlJbnN0YW5jZSgpOw0KICAgICAgJG9iakNhdGVnb3J5LT5zZXROYW1lKCR0aGlzLT5MYW5nKCdwbGVhc2Utc2V0LXZhbHVlJykpOw0KICAgICAgJG9iakNhdGVnb3J5LT5zZXREZXNjcmlwdGlvbigkdGhpcy0+TGFuZygncGxlYXNlLXNldC12YWx1ZScpKTsNCiAgIH0NCiAgIGVsc2Ugew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZUJveCgnSW52bGlhZCByZXF1ZXN0JywgJ2Vycm9yJyk7DQogICB9DQoNCiAgIGlmIChpc3NldCgkb2JqQ2F0ZWdvcnkpKSB7DQogICAgICBpZiAoaXNzZXQoJF9QT1NUWydjYXRlZ29yeV9uYW1lJ10pKSB7DQogICAgICAgICAkYXJyRXJyb3JzID0gYXJyYXkoKTsNCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAkb2JqQ2F0ZWdvcnktPnNldE5hbWUoJF9QT1NUWydjYXRlZ29yeV9uYW1lJ10pOw0KICAgICAgICAgfQ0KICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICAgICRhcnJFcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAkb2JqQ2F0ZWdvcnktPnNldERlc2NyaXB0aW9uKCRfUE9TVFsnY2F0ZWdvcnlfZGVzY3JpcHRpb24nXSk7DQogICAgICAgICB9DQogICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgfQ0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRvYmpDYXRlZ29yeS0+c2F2ZVRvREIoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGFyclBhcmFtcyA9IGV4cGxvZGUoInwiLCAkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICAgICAgICAgICRzdHJMYW5nS2V5ID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICAgICAkYXJyRXJyb3JzW10gPSAkdGhpcy0+TGFuZygkc3RyTGFuZ0tleSwgJGFyclBhcmFtcyk7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIC8vc2hvdyBoZWFkbGluZQ0KICAgICAgZWNobyAnPGgxIHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogNnB4OyI+Jy5zcHJpbnRmKCR0aGlzLT5MYW5nKCdjYXB0aW9uLWVkaXQtY2F0ZWdvcnknKSwgJG9iakNhdGVnb3J5LT5nZXROYW1lKCkpLic8L2gxPicuUEhQX0VPTDsNCg0KICAgICAgLy9zdGFydCBlZGl0IGZvcm0NCiAgICAgIGVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCI+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY2F0ZWdvcnlfaWQiIHZhbHVlPSInLiRvYmpDYXRlZ29yeS0+Z2V0SWQoKS4nIiAvPic7DQoNCiAgICAgIGlmIChpc3NldCgkYXJyRXJyb3JzKSkgew0KICAgICAgICAgaWYgKGNvdW50KCRhcnJFcnJvcnMpID4gMCkgew0KICAgICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkYXJyRXJyb3JzLCAnZXJyb3InKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkdGhpcy0+TGFuZygnc2F2ZWQtY2hhbmdlcycsICdoaW50JykpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICBlY2hvICc8cD48Yj4nLiR0aGlzLT5MYW5nKCduYW1lJykuJzwvYj46PGJyIC8+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNhdGVnb3J5X25hbWUiIHZhbHVlPSInLiRvYmpDYXRlZ29yeS0+Z2V0TmFtZSgpLiciIC8+PC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnY2F0ZWdvcnktZGVzY3JpcHRpb24nKS4nPC9iPjo8YnIgLz4nLlBIUF9FT0wuDQogICAgICAgICAgICc8aW5wdXQgc3R5bGU9IndpZHRoOiA1MDBweDsiIHR5cGU9InRleHQiIG5hbWU9ImNhdGVnb3J5X2Rlc2NyaXB0aW9uIiB2YWx1ZT0iJy4kb2JqQ2F0ZWdvcnktPmdldERlc2NyaXB0aW9uKCkuJyIgLz48L3A+Jy5QSFBfRU9MOw0KDQogICAgICBlY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjaGFuZ2UiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdzYXZlLWNoYW5nZXMnKS4nIiAvPicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzwvZm9ybT4nLlBIUF9FT0w7DQoNCiAgICAgIC8vYWJvbGlzaCBjaGFuZ2VzDQogICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdzZXR0aW5ncycsICR0aGlzLT5zdHJSZXR1cm5JZCwgJycsIGFycmF5KCd0YWInID0+ICdjYXRlZ29yaWVzJyksICcnLCB0cnVlKS4nIj4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjYW5jZWwiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdiYWNrJykuJyIgLz4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8L2Zvcm0+Jy5QSFBfRU9MOw0KICAgfQ0KDQogICAvL2xpbmsgdG8gbW9kdWxlIG92ZXJ2aWV3DQogICBlY2hvICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyI+Jy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdkZWZhdWx0YWRtaW4nLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcmbGFxdW87ICcuJHRoaXMtPkxhbmcoJ21vZHVsZS1vdmVydmlldycpLCBhcnJheSgpLCAnJywgZmFsc2UpLic8L2Rpdj4nOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICBpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NRTFJlcG9ydF9SZWFkJykpIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJ1Blcm1pc3Npb24gZGVuaWVkIScsICdlcnJvcicpOw0KICAgICAgcmV0dXJuOw0KICAgfQ0KDQogICAvL2dldCBjb25pZyBhbmQgQ1NTIHN0eWxlcw0KICAgJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsNCiAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9zdHlsZS5waHAiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPic7DQoNCiAgIC8vaWYgd2UgaGF2ZSBhIHJlcG9ydCwgd2UncmUgZ29uaW5nIHRvIGRpc3BsYXkgdGhlIHJlc3VsdA0KICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3JlcG9ydCddKSkgew0KICAgICAgJHRoaXMtPmFyclBhcmFtc1sncmVwb3J0X2lkJ10gPSAkcGFyYW1zWydyZXBvcnQnXTsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWydmaWx0ZXInXSkpIHsNCiAgICAgICAgICR0aGlzLT5hcnJQYXJhbXNbJ2ZpbHRlciddID0gU1FMUmVwb3J0X0ZpbHRlcjo6dW5zZXJpYWxpemUoJHBhcmFtc1snZmlsdGVyJ10pOw0KICAgICAgfQ0KICAgICAgcmVxdWlyZSAncmVwb3J0LXNob3cuaW5jLnBocCc7DQogICB9DQogICAvL290aGVyd2lzZSB3ZSBkaXNwbGF5IGFuIGVycm9yIGJveA0KICAgZWxzZSB7DQogICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KCdObyByZXBvcnQgZ2l2ZW4nLCAnZXJyb3InKTsNCiAgIH0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vd2UgaGF2ZSBvbmx5IG9uZSBjYXRlZ29yaWUgYXQgdGhlIG1vbWVudA0KICAgJGFyckNhdGVnb3JpZXMgPSBTUUxSZXBvcnRfQ2F0ZWdvcnk6OmdldEluc3RhbmNlc0xpc3QoMCwgJzE9MSBPUkRFUiBCWSBuYW1lIEFTQycpOw0KDQogICAvL3RhYnMNCiAgIGVjaG8gJzxkaXYgaWQ9InBhZ2VfdGFicyI+Jy5QSFBfRU9MOw0KICAgZm9yZWFjaCgkYXJyQ2F0ZWdvcmllcyBhcyAkb2JqQ2F0ZWdvcnkpIHsNCiAgICAgICAgIGVjaG8gJzxkaXYgaWQ9InRhYl8nLnByZWdfcmVwbGFjZSgnflsgXChcXCldKn4nLCAnJywgJG9iakNhdGVnb3J5LT5nZXROYW1lKCkpLiciPicuJG9iakNhdGVnb3J5LT5nZXROYW1lKCkuJzwvZGl2PicuUEhQX0VPTDsNCiAgIH0NCiAgIGVjaG8gJzwvZGl2PicuUEhQX0VPTDsNCg0KICAgLy9zZWJlcmF0b3INCiAgIGVjaG8gJzxkaXYgY2xhc3M9ImNsZWFyYiI+PCEtLSAtLT48L2Rpdj4nLlBIUF9FT0w7DQoNCiAgIC8vdGFiLWNvbnRlbnQNCiAgIGVjaG8gJzxkaXYgaWQ9InBhZ2VfY29udGVudCI+Jy5QSFBfRU9MOw0KICAgZm9yZWFjaCgkYXJyQ2F0ZWdvcmllcyBhcyAkb2JqQ2F0ZWdvcnkpIHsNCiAgICAgICRhcnJSZXBvcnRzID0gU1FMUmVwb3J0X1JlcG9ydDo6Z2V0SW5zdGFuY2VzTGlzdCgwLCAnY2F0ZWdvcmllc19pZCA9ICcuJG9iakNhdGVnb3J5LT5nZXRJZCgpKTsNCiAgICAgIGVjaG8gJzxkaXYgaWQ9InRhYl8nLnByZWdfcmVwbGFjZSgnflsgXChcXCldKn4nLCAnJywgJG9iakNhdGVnb3J5LT5nZXROYW1lKCkpLidfYyI+Jy5QSFBfRU9MOw0KICAgICAgZm9yZWFjaCAoJGFyclJlcG9ydHMgYXMgJG9ialJlcG9ydCkgew0KICAgICAgICAgZWNobyAnPHA+JzsNCiAgICAgICAgICRhcnJQYXJhbXMgPSBhcnJheSgncmVwb3J0X2lkJyA9PiAkb2JqUmVwb3J0LT5nZXRJZCgpKTsNCiAgICAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAncmVwb3J0LXNob3cnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICc8Yj4nLiRvYmpSZXBvcnQtPmdldE5hbWUoKS4nPC9iPicsICRhcnJQYXJhbXMsICcnLCBmYWxzZSk7Ow0KICAgICAgICAgZWNobyAnJm5ic3A7Jm5ic3A7Jm5ic3A7PGk+Jy4kb2JqUmVwb3J0LT5nZXREZXNjcmlwdGlvbigpLic8L2k+JzsNCiAgICAgICAgIGVjaG8gJzwvcD4nLlBIUF9FT0w7DQogICAgICB9DQogICAgICBlY2hvICc8L2Rpdj4nLlBIUF9FT0w7DQogICB9DQogICBlY2hvICc8L2Rpdj4nLlBIUF9FT0w7DQoNCiAgIC8vbGluayB0byBzZXR0aW5ncw0KICAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NRTFJlcG9ydF9BZG1pbicpKSB7DQogICAgICBlY2hvICc8cCBzdHlsZT0icGFkZGluZy10b3A6IDVweDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4nLlBIUF9FT0w7DQogICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ3NldHRpbmdzJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnc2V0dGluZ3MnKSwgYXJyYXkoKSwgJycsIGZhbHNlKS4nICZyYXF1bzsnLlBIUF9FT0w7DQogICAgICBlY2hvICc8L3A+Jy5QSFBfRU9MOw0KICAgfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.filter-delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1N1cGVyQWRtaW4nKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vc3RheSBmbGV4aWJsZQ0KICAgaWYgKGlzc2V0KCR0aGlzLT5hcnJQYXJhbXNbJ2ZpbHRlcl9pZCddKSkgew0KICAgICAgJF9QT1NUWydmaWx0ZXJfaWQnXSA9ICR0aGlzLT5hcnJQYXJhbXNbJ2ZpbHRlcl9pZCddOw0KICAgfQ0KDQogICBpZiAoaXNzZXQoJF9QT1NUWydmaWx0ZXJfaWQnXSkpIHsNCiAgICAgIC8vZ2V0IGZpbHRlcg0KICAgICAgJG9iakZpbHRlciA9IFNRTFJlcG9ydF9GaWx0ZXI6OmdldEluc3RhbmNlQnlJZCgoaW50KSRfUE9TVFsnZmlsdGVyX2lkJ10pOw0KDQogICAgICAvL2FuZCBkaXNwbGF5IGhlYWRsaW5lDQogICAgICBlY2hvICc8aDEgc3R5bGU9InBhZGRpbmctYm90dG9tOiA2cHg7Ij4nLnNwcmludGYoJHRoaXMtPkxhbmcoJ2NhcHRpb24tZGVsZXRlLWZpbHRlcicpLCAkb2JqRmlsdGVyLT5nZXROYW1lKCkpLic8L2gxPicuUEhQX0VPTDsNCg0KICAgICAgLy9idWlsZCBmb3JtIGxpbmsgd2l0aCBhbGwgcGFyYW1zDQogICAgICAkYXJyUGFyYW1zID0gYXJyYXkoJ3RhYicgPT4gJ2ZpbHRlcnMnKTsNCiAgICAgICRzdHJGb3JtQWN0aW9uID0gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnc2V0dGluZ3MnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcnLCAkYXJyUGFyYW1zLCAnJywgdHJ1ZSk7DQoNCiAgICAgIC8vc2hvdyBmb3JtIHRvIHNheSB5ZXMvbm8NCiAgICAgICRzdHJGb3JtICA9ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kc3RyRm9ybUFjdGlvbi4nIj4nOw0KICAgICAgJHN0ckZvcm0gLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbHRlcl9pZCIgdmFsdWU9IicuJG9iakZpbHRlci0+Z2V0SWQoKS4nIiAvPic7DQogICAgICAkc3RyRm9ybSAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZGVsZXRlIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygneWVzJykuJyIgLz4nOw0KICAgICAgJHN0ckZvcm0gLj0gJzwvZm9ybT4nOw0KDQogICAgICAvL3Nob3cgZm9ybSB0byBjYW5jZWwNCiAgICAgICRzdHJGb3JtMiAgPSAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuJHN0ckZvcm1BY3Rpb24uJyI+JzsNCiAgICAgICRzdHJGb3JtMiAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iY2FuY2VsIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygnbm8nKS4nIiAvPic7DQogICAgICAkc3RyRm9ybTIgLj0gJzwvZm9ybT4nOw0KDQogICAgICAvL3Nob3cgYXJlLXlvdS1zdXJlDQogICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KHNwcmludGYoJHRoaXMtPkxhbmcoJ2RlbGV0ZS1maWx0ZXItYXJlLXlvdS1zdXJlJyksICRvYmpGaWx0ZXItPmdldE5hbWUoKSkgLiAnJm5ic3A7Jm5ic3A7Jm5ic3A7JyAuICRzdHJGb3JtIC4gJyZuYnNwOyZuYnNwOycgLiAkc3RyRm9ybTIsICd3YXJuJyApOw0KICAgfQ0KDQogICAvL2xpbmsgdG8gbW9kdWxlIG92ZXJ2aWV3DQogICBlY2hvICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyI+Jy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdkZWZhdWx0YWRtaW4nLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcmbGFxdW87ICcuJHRoaXMtPkxhbmcoJ21vZHVsZS1vdmVydmlldycpLCBhcnJheSgpLCAnJywgZmFsc2UpLic8L2Rpdj4nOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.filter-edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJ1Blcm1pc3Npb24gZGVuaWVkIScsICdlcnJvcicpOw0KICAgICAgcmV0dXJuOw0KICAgfQ0KDQogICAvL3N0YXkgZmxleGlibGUNCiAgIGlmIChpc3NldCgkdGhpcy0+YXJyUGFyYW1zWydmaWx0ZXJfaWQnXSkpIHsNCiAgICAgICRfUE9TVFsnZmlsdGVyX2lkJ10gPSAkdGhpcy0+YXJyUGFyYW1zWydmaWx0ZXJfaWQnXTsNCiAgIH0NCg0KICAgaWYgKCBpc3NldCgkX1BPU1RbJ2ZpbHRlcl9pZCddKSAmJiAoaW50KSRfUE9TVFsnZmlsdGVyX2lkJ10+MCApIHsNCiAgICAgICRvYmpGaWx0ZXIgPSBTUUxSZXBvcnRfRmlsdGVyOjpnZXRJbnN0YW5jZUJ5SWQoKGludCkkX1BPU1RbJ2ZpbHRlcl9pZCddKTsNCiAgIH0NCiAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmFyclBhcmFtc1snY3JlYXRlJ10pKSB7DQogICAgICAvL2NyZWF0ZSBlbXB0eSBpbnN0YW5jZSB3aXRoIGR1bW15IHZhbHVlcw0KICAgICAgJG9iakZpbHRlciA9IFNRTFJlcG9ydF9GaWx0ZXJMb29rdXA6OmdldEVtcHR5SW5zdGFuY2UoKTsNCiAgICAgICRvYmpGaWx0ZXItPnNldE5hbWUoJHRoaXMtPkxhbmcoJ3BsZWFzZS1zZXQtdmFsdWUnKSk7DQogICAgICAkb2JqRmlsdGVyLT5zZXRGaWx0ZXJDb2x1bW4oJHRoaXMtPkxhbmcoJ3BsZWFzZS1zZXQtdmFsdWUnKSk7DQogICAgICAkb2JqRmlsdGVyLT5zZXRMb29rdXBRdWVyeSgkdGhpcy0+TGFuZygncGxlYXNlLXNldC12YWx1ZScpKTsNCiAgICAgICMkb2JqRmlsdGVyLT5zZXRBbGxvd011bHRpU2VsZWN0aW9uKCR0aGlzLT5MYW5nKCdwbGVhc2Utc2V0LXZhbHVlJykpOw0KICAgfQ0KICAgZWxzZSB7DQogICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlQm94KCdJbnZsaWFkIHJlcXVlc3QnLCAnZXJyb3InKTsNCiAgIH0NCg0KICAgaWYgKGlzc2V0KCRvYmpGaWx0ZXIpKSB7DQogICAgICBpZiAoaXNzZXQoJF9QT1NUWydmaWx0ZXJfbmFtZSddKSkgew0KICAgICAgICAgJGFyckVycm9ycyA9IGFycmF5KCk7DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgJG9iakZpbHRlci0+c2V0TmFtZSgkX1BPU1RbJ2ZpbHRlcl9uYW1lJ10pOw0KICAgICAgICAgfQ0KICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICAgICRhcnJFcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAkb2JqRmlsdGVyLT5zZXRUeXBlKCRfUE9TVFsnZmlsdGVyX3R5cGUnXSk7DQogICAgICAgICB9DQogICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgfQ0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRvYmpGaWx0ZXItPnNldEZpbHRlckNvbHVtbigkX1BPU1RbJ2ZpbHRlcl9jb2x1bW4nXSk7DQogICAgICAgICB9DQogICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgfQ0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRvYmpGaWx0ZXItPnNldExvb2t1cFF1ZXJ5KCRfUE9TVFsnbG9va3VwX3F1ZXJ5J10pOw0KICAgICAgICAgfQ0KICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICAgICRhcnJFcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAkb2JqRmlsdGVyLT5zZXRBbGxvd011bHRpU2VsZWN0aW9uKCRfUE9TVFsnYWxsb3dfbXVsdGlfc2VsZWN0aW9uJ10pOw0KICAgICAgICAgfQ0KICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICAgICRhcnJFcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKTsNCiAgICAgICAgIH0NCiAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAkb2JqRmlsdGVyLT5zYXZlVG9EQigpOw0KICAgICAgICAgfQ0KICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICAgICRhcnJFcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgLy9zaG93IGhlYWRsaW5lDQogICAgICBlY2hvICc8aDEgc3R5bGU9InBhZGRpbmctYm90dG9tOiA2cHg7Ij4nLnNwcmludGYoJHRoaXMtPkxhbmcoJ2NhcHRpb24tZWRpdC1maWx0ZXInKSwgJG9iakZpbHRlci0+Z2V0TmFtZSgpKS4nPC9oMT4nLlBIUF9FT0w7DQoNCiAgICAgIC8vc3RhcnQgZWRpdCBmb3JtDQogICAgICBlY2hvICc8ZGl2IHN0eWxlPSJ3aWR0aDogNjUlOyBmbG9hdDogbGVmdDsiPic7DQogICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiPicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbHRlcl9pZCIgdmFsdWU9IicuJG9iakZpbHRlci0+Z2V0SWQoKS4nIiAvPic7DQoNCiAgICAgIGlmIChpc3NldCgkYXJyRXJyb3JzKSkgew0KICAgICAgICAgaWYgKGNvdW50KCRhcnJFcnJvcnMpID4gMCkgew0KICAgICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkYXJyRXJyb3JzLCAnZXJyb3InKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkdGhpcy0+TGFuZygnc2F2ZWQtY2hhbmdlcycsICdoaW50JykpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICBlY2hvICc8cD48Yj4nLiR0aGlzLT5MYW5nKCduYW1lJykuJzwvYj46PGJyIC8+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpbHRlcl9uYW1lIiB2YWx1ZT0iJy4kb2JqRmlsdGVyLT5nZXROYW1lKCkuJyIgLz48L3A+Jy5QSFBfRU9MOw0KDQogICAgICBlY2hvICc8cD48Yj4nLiR0aGlzLT5MYW5nKCdmaWx0ZXItdHlwZScpLic8L2I+OjxiciAvPicuUEhQX0VPTC4NCiAgICAgICAgICAgJzxzZWxlY3QgbmFtZT0iZmlsdGVyX3R5cGUiPicuDQogICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJsb29rdXAiJy4oJG9iakZpbHRlci0+Z2V0VHlwZSgpPT0nbG9va3VwJz8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKS4nPicuJHRoaXMtPkxhbmcoJ2ZpbHRlci1sb29rdXAnKS4nPC9vcHRpb24+Jy4NCiAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9InBlcmlvZCInLigkb2JqRmlsdGVyLT5nZXRUeXBlKCk9PSdwZXJpb2QnPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpLic+Jy4kdGhpcy0+TGFuZygnZmlsdGVyLXBlcmlvZCcpLic8L29wdGlvbj4nLg0KICAgICAgICAgICAnPC9zZWxlY3Q+PC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnZmlsdGVyLWNvbHVtbicpLic8L2I+OjxiciAvPicuUEhQX0VPTC4NCiAgICAgICAgICAgJzxpbnB1dCBzdHlsZT0id2lkdGg6IDUwMHB4OyIgdHlwZT0idGV4dCIgbmFtZT0iZmlsdGVyX2NvbHVtbiIgdmFsdWU9IicuJG9iakZpbHRlci0+Z2V0RmlsdGVyQ29sdW1uKCkuJyIgLz48L3A+Jy5QSFBfRU9MOw0KDQogICAgICBlY2hvICc8ZmllbGRzZXQ+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnPGxlZ2VuZD4gJy4kdGhpcy0+TGFuZygnZmlsdGVyLWxvb2t1cC12YWx1ZXMnKS4nIDwvbGVnZW5kPicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzxiPicuJHRoaXMtPkxhbmcoJ2xvb2t1cC1xdWVyeScpLic8L2I+OjxiciAvPicuUEhQX0VPTC4NCiAgICAgICAgICAgJzxpbnB1dCBzdHlsZT0id2lkdGg6IDk5JTsiIHR5cGU9InRleHQiIG5hbWU9Imxvb2t1cF9xdWVyeSIgdmFsdWU9IicuJG9iakZpbHRlci0+Z2V0TG9va3VwUXVlcnkoKS4nIiAvPjwvcD4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8cD48Yj4nLiR0aGlzLT5MYW5nKCdhbGxvdy1tdWx0aS1zZWxlY3Rpb24nKS4nPC9iPjo8YnIgLz4nLlBIUF9FT0wuDQogICAgICAgICAgICc8c2VsZWN0IG5hbWU9ImFsbG93X211bHRpX3NlbGVjdGlvbiI+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iMCIgJy4oJG9iakZpbHRlci0+Z2V0QWxsb3dNdWx0aVNlbGVjdGlvbigpPT0wPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykuJz4nLiR0aGlzLT5MYW5nKCdubycpLic8L29wdGlvbj4nLlBIUF9FT0wuDQogICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSIxIiAnLigkb2JqRmlsdGVyLT5nZXRBbGxvd011bHRpU2VsZWN0aW9uKCk9PTE/J3NlbGVjdGVkPSJzZWxlY3RlZCInOicnKS4nPicuJHRoaXMtPkxhbmcoJ3llcycpLic8L29wdGlvbj4nLlBIUF9FT0wuDQogICAgICAgICAgICc8L3NlbGVjdD4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8L2ZpZWxkc2V0PicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPHA+Jm5ic3A7PC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iY2hhbmdlIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygnc2F2ZS1jaGFuZ2VzJykuJyIgLz4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8L2Zvcm0+Jy5QSFBfRU9MOw0KDQogICAgICAvL2Fib2xpc2ggY2hhbmdlcw0KICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnc2V0dGluZ3MnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcnLCBhcnJheSgndGFiJyA9PiAnZmlsdGVycycpLCAnJywgdHJ1ZSkuJyI+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iY2FuY2VsIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygnYmFjaycpLiciIC8+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnPC9mb3JtPicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzwvZGl2Pic7DQoNCiAgICAgIC8vc2hvdyBkYi1zdHJ1Y3R1cmUgYXQgdGhlIHJpZ2h0IHNpZGUNCiAgICAgIGVjaG8gJzxkaXYgc3R5bGU9IndpZHRoOiAzMCU7IGZsb2F0OiBsZWZ0OyBwYWRkaW5nLWxlZnQ6IDIwcHg7Ij4nLg0KICAgICAgICAgICAnPGI+PHU+Jy4kdGhpcy0+TGFuZygnZGF0YWJhc2Utc3RydWN0dXJlJykuJzwvdT48L2I+Jy4NCiAgICAgICAgICAgJyAgIDxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6IDIyMHB4OyBvdmVyZmxvdzogc2Nyb2xsOyI+JzsNCiAgICAgIHJlcXVpcmVfb25jZSAnZGJfc3RydWN0dXJlLmluYy5waHAnOw0KICAgICAgZWNobyAnICAgPC9kaXY+Jy4NCiAgICAgICAgICAgJzwvZGl2PicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+PC9kaXY+JzsNCiAgIH0NCg0KICAgLy9saW5rIHRvIG1vZHVsZSBvdmVydmlldw0KICAgZWNobyAnPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTVweDsiPicuJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnZGVmYXVsdGFkbWluJywgJHRoaXMtPnN0clJldHVybklkLCAnJmxhcXVvOyAnLiR0aGlzLT5MYW5nKCdtb2R1bGUtb3ZlcnZpZXcnKSwgYXJyYXkoKSwgJycsIGZhbHNlKS4nPC9kaXY+JzsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.help.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICBlY2hvICR0aGlzLT5MYW5nKCdoZWxwLWNvbnRleHQnKTsNCg0KICAgLy9saW5rIHRvIG1vZHVsZSBvdmVydmlldw0KICAgZWNobyAnPHAgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCAjQ0NDQ0NDOyBwYWRkaW5nLXRvcDogM3B4OyI+ICYjMTcxOyAnLiR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2RlZmF1bHRhZG1pbicsICR0aGlzLT5zdHJSZXR1cm5JZCwgJHRoaXMtPkxhbmcoJ21vZHVsZS1vdmVydmlldycpLCBhcnJheSgpLCAnJywgZmFsc2UpLic8L3A+Jy5QSFBfRU9MOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.report-delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1N1cGVyQWRtaW4nKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vc3RheSBmbGV4aWJsZQ0KICAgaWYgKGlzc2V0KCR0aGlzLT5hcnJQYXJhbXNbJ3JlcG9ydF9pZCddKSkgew0KICAgICAgJF9QT1NUWydyZXBvcnRfaWQnXSA9ICR0aGlzLT5hcnJQYXJhbXNbJ3JlcG9ydF9pZCddOw0KICAgfQ0KDQogICBpZiAoaXNzZXQoJF9QT1NUWydyZXBvcnRfaWQnXSkpIHsNCiAgICAgIC8vZ2V0IHJlcG9ydA0KICAgICAgJG9ialJlcG9ydCA9IFNRTFJlcG9ydF9SZXBvcnQ6OmdldEluc3RhbmNlQnlJZCgoaW50KSRfUE9TVFsncmVwb3J0X2lkJ10pOw0KDQogICAgICAvL2FuZCBkaXNwbGF5IGhlYWRsaW5lDQogICAgICBlY2hvICc8aDEgc3R5bGU9InBhZGRpbmctYm90dG9tOiA2cHg7Ij4nLnNwcmludGYoJHRoaXMtPkxhbmcoJ2NhcHRpb24tZGVsZXRlLXJlcG9ydCcpLCAkb2JqUmVwb3J0LT5nZXROYW1lKCkpLic8L2gxPicuUEhQX0VPTDsNCg0KICAgICAgLy9idWlsZCBmb3JtIGxpbmsgd2l0aCBhbGwgcGFyYW1zDQogICAgICAkYXJyUGFyYW1zID0gYXJyYXkoJ3RhYicgPT4gJ3JlcG9ydHMnKTsNCiAgICAgICRzdHJGb3JtQWN0aW9uID0gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnc2V0dGluZ3MnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcnLCAkYXJyUGFyYW1zLCAnJywgdHJ1ZSk7DQoNCiAgICAgIC8vc2hvdyBmb3JtIHRvIHNheSB5ZXMvbm8NCiAgICAgICRzdHJGb3JtICA9ICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kc3RyRm9ybUFjdGlvbi4nIj4nOw0KICAgICAgJHN0ckZvcm0gLj0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlcG9ydF9pZCIgdmFsdWU9IicuJG9ialJlcG9ydC0+Z2V0SWQoKS4nIiAvPic7DQogICAgICAkc3RyRm9ybSAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZGVsZXRlIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygneWVzJykuJyIgLz4nOw0KICAgICAgJHN0ckZvcm0gLj0gJzwvZm9ybT4nOw0KDQogICAgICAvL3Nob3cgZm9ybSB0byBjYW5jZWwNCiAgICAgICRzdHJGb3JtMiAgPSAnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuJHN0ckZvcm1BY3Rpb24uJyI+JzsNCiAgICAgICRzdHJGb3JtMiAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iY2FuY2VsIiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygnbm8nKS4nIiAvPic7DQogICAgICAkc3RyRm9ybTIgLj0gJzwvZm9ybT4nOw0KDQogICAgICAvL3Nob3cgYXJlLXlvdS1zdXJlDQogICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KHNwcmludGYoJHRoaXMtPkxhbmcoJ2RlbGV0ZS1yZXBvcnQtYXJlLXlvdS1zdXJlJyksICRvYmpSZXBvcnQtPmdldE5hbWUoKSkgLiAnJm5ic3A7Jm5ic3A7Jm5ic3A7JyAuICRzdHJGb3JtIC4gJyZuYnNwOyZuYnNwOycgLiAkc3RyRm9ybTIsICd3YXJuJyApOw0KICAgfQ0KDQogICAvL2xpbmsgdG8gbW9kdWxlIG92ZXJ2aWV3DQogICBlY2hvICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyI+Jy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdkZWZhdWx0YWRtaW4nLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcmbGFxdW87ICcuJHRoaXMtPkxhbmcoJ21vZHVsZS1vdmVydmlldycpLCBhcnJheSgpLCAnJywgZmFsc2UpLic8L2Rpdj4nOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.report-edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJ1Blcm1pc3Npb24gZGVuaWVkIScsICdlcnJvcicpOw0KICAgICAgcmV0dXJuOw0KICAgfQ0KDQogICAvL3N0YXkgZmxleGlibGUNCiAgIGlmIChpc3NldCgkdGhpcy0+YXJyUGFyYW1zWydyZXBvcnRfaWQnXSkpIHsNCiAgICAgICRfUE9TVFsncmVwb3J0X2lkJ10gPSAkdGhpcy0+YXJyUGFyYW1zWydyZXBvcnRfaWQnXTsNCiAgIH0NCg0KICAgaWYgKCBpc3NldCgkX1BPU1RbJ3JlcG9ydF9pZCddKSAmJiAoaW50KSRfUE9TVFsncmVwb3J0X2lkJ10+MCApIHsNCiAgICAgICRvYmpSZXBvcnQgPSBTUUxSZXBvcnRfUmVwb3J0OjpnZXRJbnN0YW5jZUJ5SWQoKGludCkkX1BPU1RbJ3JlcG9ydF9pZCddKTsNCiAgIH0NCiAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmFyclBhcmFtc1snY3JlYXRlJ10pKSB7DQogICAgICAvL2NyZWF0ZSBlbXB0eSBpbnN0YW5jZSB3aXRoIGR1bW15IHZhbHVlcw0KICAgICAgJG9ialJlcG9ydCA9IFNRTFJlcG9ydF9SZXBvcnQ6OmdldEVtcHR5SW5zdGFuY2UoKTsNCiAgICAgICRvYmpSZXBvcnQtPnNldE5hbWUoJHRoaXMtPkxhbmcoJ3BsZWFzZS1zZXQtdmFsdWUnKSk7DQogICAgICAkb2JqUmVwb3J0LT5zZXREZXNjcmlwdGlvbigkdGhpcy0+TGFuZygncGxlYXNlLXNldC12YWx1ZScpKTsNCiAgICAgICRvYmpRdWVyeSA9IFNRTFJlcG9ydF9RdWVyeTo6Z2V0RW1wdHlJbnN0YW5jZSgpOw0KICAgICAgJG9ialF1ZXJ5LT5zZXRRdWVyeSgkdGhpcy0+TGFuZygncGxlYXNlLXNldC12YWx1ZScpKTsNCiAgICAgICRvYmpSZXBvcnQtPmFkZFF1ZXJ5KCRvYmpRdWVyeSk7DQogICB9DQogICBlbHNlIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2VCb3goJ0ludmxpYWQgcmVxdWVzdCcsICdlcnJvcicpOw0KICAgfQ0KDQogICBpZiAoaXNzZXQoJG9ialJlcG9ydCkpIHsNCiAgICAgICRhcnJRdWVyaWVzID0gJG9ialJlcG9ydC0+Z2V0UXVlcmllcygpOw0KDQogICAgICBpZiAoaXNzZXQoJF9QT1NUWydyZXBvcnRfbmFtZSddKSkgew0KICAgICAgICAgJGFyckVycm9ycyA9IGFycmF5KCk7DQogICAgICAgICAkYXJyV2FybmluZ3MgPSBhcnJheSgpOw0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRvYmpSZXBvcnQtPnNldE5hbWUoJF9QT1NUWydyZXBvcnRfbmFtZSddKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGFyclBhcmFtcyA9IGV4cGxvZGUoInwiLCAkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICAgICAgICAgICRzdHJMYW5nS2V5ID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICAgICAkYXJyRXJyb3JzW10gPSAkdGhpcy0+TGFuZygkc3RyTGFuZ0tleSwgJGFyclBhcmFtcyk7DQogICAgICAgICB9DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgJG9ialJlcG9ydC0+c2V0RGVzY3JpcHRpb24oJF9QT1NUWydyZXBvcnRfZGVzY3JpcHRpb24nXSk7DQogICAgICAgICB9DQogICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgfQ0KICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICRvYmpSZXBvcnQtPnNldENhdGVnb3J5SWQoJF9QT1NUWydyZXBvcnRfY2F0ZWdvcnknXSk7DQogICAgICAgICB9DQogICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgfQ0KDQogICAgICAgICBmb3JlYWNoKCRhcnJRdWVyaWVzIEFzICRvYmpRdWVyeSkgew0KICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncmVwb3J0X3F1ZXJ5J11bJG9ialF1ZXJ5LT5nZXRJZCgpXSkpIHsNCiAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAkc3RyUXVlcnkgPSAkX1BPU1RbJ3JlcG9ydF9xdWVyeSddWyRvYmpRdWVyeS0+Z2V0SWQoKV07DQogICAgICAgICAgICAgICAgICAkYXJyQmxhY2tsaXN0V29yZHMgPSBleHBsb2RlKCc7JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NxbC1ibGFja2xpc3QnKSk7DQogICAgICAgICAgICAgICAgICBmb3JlYWNoKCRhcnJCbGFja2xpc3RXb3JkcyBhcyAkc3RyQmxhY2tsaXN0V29yZCkgew0KICAgICAgICAgICAgICAgICAgICAgLy9yZW1vdmUgd2hpdGVzcGFjZXMNCiAgICAgICAgICAgICAgICAgICAgICRzdHJCbGFja2xpc3RXb3JkID0gdHJpbSgkc3RyQmxhY2tsaXN0V29yZCk7DQogICAgICAgICAgICAgICAgICAgICAvL2lnbm9yZSBlbXB0eSBpdGVtcw0KICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRzdHJCbGFja2xpc3RXb3JkKSkgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIHRoZSB3b3JkDQogICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnficuJHN0ckJsYWNrbGlzdFdvcmQuJ34nLCAkc3RyUXVlcnkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdibGFja2xpc3Qtd29yZC1mb3VuZHwnLiRzdHJCbGFja2xpc3RXb3JkKTsNCiAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIC8vY2hlY2sgc2VtaWNvbG9uLCB0b28NCiAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCd+O34nLCAkc3RyUXVlcnkpKSB7DQogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdibGFja2xpc3Qtd29yZC1mb3VuZHw7Jyk7DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAvL2NoZWNrIGZvciBmaWx0ZXIgdmFyaWFibGUNCiAgICAgICAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnfiNGSUxURVIjficsICRzdHJRdWVyeSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICRhcnJXYXJuaW5nc1tdID0gJHRoaXMtPkxhbmcoJ2ZpbHRlci12YXItbWlzc2luZycpOw0KICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAvL3NhdmUgdGhlIHF1ZXJ5DQogICAgICAgICAgICAgICAgICAkb2JqUXVlcnktPnNldFF1ZXJ5KCRzdHJRdWVyeSk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkX1BPU1RbJ2ZpbHRlcnMnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICRfUE9TVFsnZmlsdGVycyddID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICRvYmpRdWVyeS0+YXNzaWduRmlsc3RlcigkX1BPU1RbJ2ZpbHRlcnMnXSk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAgICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJHN0ckxhbmdLZXksICRhcnJQYXJhbXMpOw0KICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgJG9ialJlcG9ydC0+c2F2ZVRvREIoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGFyclBhcmFtcyA9IGV4cGxvZGUoInwiLCAkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICAgICAgICAgICRzdHJMYW5nS2V5ID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICAgICAkYXJyRXJyb3JzW10gPSAkdGhpcy0+TGFuZygkc3RyTGFuZ0tleSwgJGFyclBhcmFtcyk7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIC8vc2hvdyBoZWFkbGluZQ0KICAgICAgZWNobyAnPGgxIHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogNnB4OyI+Jy5zcHJpbnRmKCR0aGlzLT5MYW5nKCdjYXB0aW9uLWVkaXQtcmVwb3J0JyksICRvYmpSZXBvcnQtPmdldE5hbWUoKSkuJzwvaDE+Jy5QSFBfRU9MOw0KDQogICAgICAvL3N0YXJ0IGVkaXQgZm9ybQ0KICAgICAgZWNobyAnPGZvcm0gbWV0aG9kPSJwb3N0Ij4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZXBvcnRfaWQiIHZhbHVlPSInLiRvYmpSZXBvcnQtPmdldElkKCkuJyIgLz4nOw0KDQogICAgICBpZiAoaXNzZXQoJGFyckVycm9ycykpIHsNCiAgICAgICAgIGlmIChjb3VudCgkYXJyRXJyb3JzKSA+IDApIHsNCiAgICAgICAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJGFyckVycm9ycywgJ2Vycm9yJyk7DQogICAgICAgICB9DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJHRoaXMtPkxhbmcoJ3NhdmVkLWNoYW5nZXMnLCAnaGludCcpKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGlmIChpc3NldCgkYXJyV2FybmluZ3MpICYmIGNvdW50KCRhcnJXYXJuaW5ncykgPiAwKSB7DQogICAgICAgICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KCRhcnJXYXJuaW5ncywgJ3dhcm4nKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnbmFtZScpLic8L2I+OjxiciAvPicuUEhQX0VPTC4NCiAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZXBvcnRfbmFtZSIgdmFsdWU9IicuJG9ialJlcG9ydC0+Z2V0TmFtZSgpLiciIC8+PC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKS4nPC9iPjo8YnIgLz4nLlBIUF9FT0wuDQogICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVwb3J0X2Rlc2NyaXB0aW9uIiB2YWx1ZT0iJy4kb2JqUmVwb3J0LT5nZXREZXNjcmlwdGlvbigpLiciIHN0eWxlPSJ3aWR0aDogMzAwcHg7IiAvPjwvcD4nLlBIUF9FT0w7DQoNCiAgICAgIGVjaG8gJzxwPjxiPicuJHRoaXMtPkxhbmcoJ2NhdGVnb3J5JykuJzwvYj46PGJyIC8+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPHNlbGVjdCBuYW1lPSJyZXBvcnRfY2F0ZWdvcnkiPicuUEhQX0VPTDsNCiAgICAgICRhcnJDYXRlZ29yaWVzID0gU1FMUmVwb3J0X0NhdGVnb3J5OjpnZXRJbnN0YW5jZXNMaXN0KDAsICcxPTEgT1JERVIgQlkgbmFtZSBBU0MnKTsNCiAgICAgIGZvcmVhY2goJGFyckNhdGVnb3JpZXMgYXMgJG9iakNhdGVnb3J5KSB7DQogICAgICAgICBlY2hvICc8b3B0aW9uIHZhbHVlPSInLiRvYmpDYXRlZ29yeS0+Z2V0SWQoKS4nIiAnLigkb2JqUmVwb3J0LT5nZXRDYXRlZ29yeUlkKCkgPT0gJG9iakNhdGVnb3J5LT5nZXRJZCgpPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpLic+Jy4kb2JqQ2F0ZWdvcnktPmdldE5hbWUoKS4nPC9vcHRpb24+Jy5QSFBfRU9MOw0KICAgICAgfQ0KICAgICAgZWNobyAnPC9zZWxlY3Q+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnb3V0cHV0LWZvcm1hdCcpLic8L2I+OjxiciAvPicuUEhQX0VPTC4NCiAgICAgICAgICAgJzxzZWxlY3QgbmFtZT0ib3V0cHV0LWZvcm1hdCI+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iaHRtbHRhYmxlIiAnLigkb2JqUmVwb3J0LT5nZXRPdXRwdXRGb3JtYXQoKSA9PSAnaHRtbHRhYmxlJz8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKS4nPicuJHRoaXMtPkxhbmcoJ291dHB1dC1odG1sdGFibGUnKS4nPC9vcHRpb24+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0idGFibGV0b29scyIgJy4oJG9ialJlcG9ydC0+Z2V0T3V0cHV0Rm9ybWF0KCkgPT0gJ3RhYmxldG9vbHMnPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpLic+Jy4kdGhpcy0+TGFuZygnb3V0cHV0LXRhYmxldG9vbHMnKS4nPC9vcHRpb24+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPC9zZWxlY3Q+Jy5QSFBfRU9MLg0KICAgICAgICAgICAnPC9wPicuUEhQX0VPTDsNCg0KICAgICAgZWNobyAnPGRpdiBzdHlsZT0id2lkdGg6IDY1JTsgZmxvYXQ6IGxlZnQ7Ij4nOw0KICAgICAgZm9yZWFjaCgkYXJyUXVlcmllcyBBcyAkb2JqUXVlcnkpIHsNCiAgICAgICAgIGVjaG8gJzxwPicuUEhQX0VPTC4NCiAgICAgICAgICAgICAgJzxiPlNRTDwvYj46PGJyIC8+JzsNCiAgICAgICAgIGVjaG8gJzxpPicuJHRoaXMtPkxhbmcoJ2ZpbHRlci12YXItaGludCcpLic8L2k+PGJyIC8+JzsNCiAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSBuYW1lPSJyZXBvcnRfcXVlcnlbJy4kb2JqUXVlcnktPmdldElkKCkuJ10iIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MDBweDsiPicuJG9ialF1ZXJ5LT5nZXRRdWVyeSgpLic8L3RleHRhcmVhPicuDQogICAgICAgICAgICAgICc8L3A+Jy5QSFBfRU9MOw0KICAgICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnZmlsdGVyJykuJzwvYj46PGJyIC8+Jy5QSFBfRU9MOw0KICAgICAgICAgJGFyclVzZWRGaWx0ZXJzID0gYXJyYXkoKTsNCiAgICAgICAgICRhcnJGaWx0ZXJzID0gJG9ialF1ZXJ5LT5nZXRGaWx0ZXJzKCk7DQogICAgICAgICBmb3JlYWNoICgkYXJyRmlsdGVycyBhcyAkb2JqRmlsdGVyKSB7DQogICAgICAgICAgICAkYXJyVXNlZEZpbHRlcnNbXSA9ICRvYmpGaWx0ZXItPmdldElkKCk7DQogICAgICAgICB9DQogICAgICAgICAkYXJyRmlsdGVycyA9IFNRTFJlcG9ydF9GaWx0ZXI6OmdldEZpbHRlcnMoJG9ialF1ZXJ5LT5nZXRRdWVyeSgpKTsNCiAgICAgICAgIGZvcmVhY2goJGFyckZpbHRlcnMgQXMgJG9iakZpbHRlcikgew0KICAgICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWx0ZXJzW10iIHZhbHVlPSInLiRvYmpGaWx0ZXItPmdldElkKCkuJyIgJy4oaW5fYXJyYXkoJG9iakZpbHRlci0+Z2V0SWQoKSwgJGFyclVzZWRGaWx0ZXJzKT8nIGNoZWNrZWQ9ImNoZWNrZWQiJzonJykuJyAvPiAnLiRvYmpGaWx0ZXItPmdldE5hbWUoKS4nICgnLiRvYmpGaWx0ZXItPmdldEZpbHRlckNvbHVtbigpLicpIDxiciAvPic7DQogICAgICAgICB9DQogICAgICAgICBlY2hvICc8L3A+JzsNCiAgICAgIH0NCiAgICAgIGVjaG8gJzwvZGl2Pic7DQoNCiAgICAgIC8vc2hvdyBkYi1zdHJ1Y3R1cmUgYXQgdGhlIHJpZ2h0IHNpZGUNCiAgICAgIGVjaG8gJzxkaXYgc3R5bGU9IndpZHRoOiAzMCU7IGZsb2F0OiBsZWZ0OyBwYWRkaW5nLWxlZnQ6IDEwcHg7Ij4nLg0KICAgICAgICAgICAnPGI+PHU+Jy4kdGhpcy0+TGFuZygnZGF0YWJhc2Utc3RydWN0dXJlJykuJzwvdT48L2I+Jy4NCiAgICAgICAgICAgJyAgIDxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6IDQwMHB4OyBvdmVyZmxvdzogc2Nyb2xsOyI+JzsNCiAgICAgIHJlcXVpcmVfb25jZSAnZGJfc3RydWN0dXJlLmluYy5waHAnOw0KICAgICAgZWNobyAnICAgPC9kaXY+Jy4NCiAgICAgICAgICAgJzwvZGl2PicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyI+PC9kaXY+JzsNCg0KDQogICAgICBlY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjaGFuZ2UiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdzYXZlLWNoYW5nZXMnKS4nIiAvPicuUEhQX0VPTDsNCiAgICAgIGVjaG8gJzwvZm9ybT4nLlBIUF9FT0w7DQoNCiAgICAgIC8vYWJvbGlzaCBjaGFuZ2VzDQogICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iJy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdzZXR0aW5ncycsICR0aGlzLT5zdHJSZXR1cm5JZCwgJycsIGFycmF5KCd0YWInID0+ICdyZXBvcnRzJyksICcnLCB0cnVlKS4nIj4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjYW5jZWwiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdiYWNrJykuJyIgLz4nLlBIUF9FT0w7DQogICAgICBlY2hvICc8L2Zvcm0+Jy5QSFBfRU9MOw0KDQogICB9DQoNCiAgIC8vbGluayB0byBtb2R1bGUgb3ZlcnZpZXcNCiAgIGVjaG8gJzxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDE1cHg7Ij4nLiR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2RlZmF1bHRhZG1pbicsICR0aGlzLT5zdHJSZXR1cm5JZCwgJyZsYXF1bzsgJy4kdGhpcy0+TGFuZygnbW9kdWxlLW92ZXJ2aWV3JyksIGFycmF5KCksICcnLCBmYWxzZSkuJzwvZGl2Pic7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.report-show.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIHJlcXVpcmVfb25jZSAncmVwb3J0LXNob3cuaW5jLnBocCc7DQoNCj8+DQo8cCBzdHlsZT0iYm9yZGVyLXRvcDogMXB4IHNvbGlkICNDQ0NDQ0M7IHBhZGRpbmctdG9wOiAzcHg7Ij4gJiMxNzE7IDw/cGhwIGVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnZGVmYXVsdGFkbWluJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnbW9kdWxlLW92ZXJ2aWV3JyksIGFycmF5KCksICcnLCBmYWxzZSk7ID8+IDwvcD4=]]></data>
	</file>
	<file>
	  <filename>/action.settings.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIGV4aXQ7DQoNCiAgIGlmICggaXNzZXQoJF9QT1NUWydjYXRlZ29yeV9pZCddKSAmJiBpc3NldCgkX1BPU1RbJ2RlbGV0ZSddKSApIHsNCiAgICAgICRvYmpDYXRlZ29yeSA9IFNRTFJlcG9ydF9DYXRlZ29yeTo6Z2V0SW5zdGFuY2VCeUlkKCRfUE9TVFsnY2F0ZWdvcnlfaWQnXSk7DQogICAgICB0cnkgew0KICAgICAgICAgJG9iakNhdGVnb3J5LT5kZWxldGUoKTsNCiAgICAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goIHNwcmludGYoJHRoaXMtPkxhbmcoJ2NhdGVnb3J5LXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnKSwgJG9iakNhdGVnb3J5LT5nZXROYW1lKCkpLCAnaGludCcgKTsNCiAgICAgIH0NCiAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgJGFyclBhcmFtcyA9IGV4cGxvZGUoInwiLCAkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICAgICAgICRzdHJMYW5nS2V5ID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KCR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKSwgJ2Vycm9yJyk7DQogICAgICB9DQogICB9DQoNCg0KICAgJGFyckNhdGVnb3J5cyA9IFNRTFJlcG9ydF9DYXRlZ29yeTo6Z2V0SW5zdGFuY2VzTGlzdCgpOw0KICAgZm9yZWFjaCgkYXJyQ2F0ZWdvcnlzIEFzICRvYmpDYXRlZ29yeSkgew0KICAgICAgZWNobyAnPHA+JzsNCiAgICAgICRhcnJQYXJhbXMgPSBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRvYmpDYXRlZ29yeS0+Z2V0SWQoKSk7DQogICAgICBlY2hvICc8Yj4nLiRvYmpDYXRlZ29yeS0+Z2V0TmFtZSgpLic8L2I+JzsNCiAgICAgIGVjaG8gJyZuYnNwOyZuYnNwOyZuYnNwOzxpPicuJG9iakNhdGVnb3J5LT5nZXREZXNjcmlwdGlvbigpLic8L2k+PGJyIC8+JzsNCiAgICAgIGVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnY2F0ZWdvcnktZWRpdCcsICR0aGlzLT5zdHJSZXR1cm5JZCwgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJGFyclBhcmFtcywgJycsIGZhbHNlKTsNCiAgICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTUUxSZXBvcnRfU3VwZXJBZG1pbicpKSB7DQogICAgICAgICBlY2hvICcgfCAnOw0KICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdjYXRlZ29yeS1kZWxldGUnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJGFyclBhcmFtcywgJycsIGZhbHNlKTsNCiAgICAgIH0NCiAgICAgIGVjaG8gJzwvcD4nLlBIUF9FT0w7DQogICB9DQoNCiAgIGVjaG8gJzxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi10b3A6IDI1cHg7Ij4nLiR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2NhdGVnb3J5LWVkaXQnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICR0aGlzLT5MYW5nKCdjcmVhdGUtbmV3LWNhdGVnb3J5JyksIGFycmF5KCdjcmVhdGUnID0+ICdjYXRlZ29yeScpLCAnJywgZmFsc2UpLic8L3A+JzsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.settings.filters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIGV4aXQ7DQoNCiAgIGlmICggaXNzZXQoJF9QT1NUWydmaWx0ZXJfaWQnXSkgJiYgaXNzZXQoJF9QT1NUWydkZWxldGUnXSkgKSB7DQogICAgICAkb2JqRmlsdGVyID0gU1FMUmVwb3J0X0ZpbHRlcjo6Z2V0SW5zdGFuY2VCeUlkKCRfUE9TVFsnZmlsdGVyX2lkJ10pOw0KICAgICAgdHJ5IHsNCiAgICAgICAgICRvYmpGaWx0ZXItPmRlbGV0ZSgpOw0KICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCggc3ByaW50ZigkdGhpcy0+TGFuZygnZmlsdGVyLXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnKSwgJG9iakZpbHRlci0+Z2V0TmFtZSgpKSwgJ2hpbnQnICk7DQogICAgICB9DQogICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkdGhpcy0+TGFuZygkc3RyTGFuZ0tleSwgJGFyclBhcmFtcyksICdlcnJvcicpOw0KICAgICAgfQ0KICAgfQ0KDQoNCiAgICRhcnJGaWx0ZXJzID0gU1FMUmVwb3J0X0ZpbHRlcjo6Z2V0SW5zdGFuY2VzTGlzdCgpOw0KICAgZm9yZWFjaCgkYXJyRmlsdGVycyBBcyAkb2JqRmlsdGVyKSB7DQogICAgICBlY2hvICc8cD4nOw0KICAgICAgJGFyclBhcmFtcyA9IGFycmF5KCdmaWx0ZXJfaWQnID0+ICRvYmpGaWx0ZXItPmdldElkKCkpOw0KICAgICAgZWNobyAnPGI+Jy4kb2JqRmlsdGVyLT5nZXROYW1lKCkuJzwvYj4nOw0KICAgICAgZWNobyAnJm5ic3A7Jm5ic3A7Jm5ic3A7PGk+Jy4kb2JqRmlsdGVyLT5nZXRGaWx0ZXJDb2x1bW4oKS4nPC9pPjxiciAvPic7DQogICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2ZpbHRlci1lZGl0JywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAkYXJyUGFyYW1zLCAnJywgZmFsc2UpOw0KICAgICAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NRTFJlcG9ydF9TdXBlckFkbWluJykpIHsNCiAgICAgICAgIGVjaG8gJyB8ICc7DQogICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2ZpbHRlci1kZWxldGUnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJGFyclBhcmFtcywgJycsIGZhbHNlKTsNCiAgICAgIH0NCiAgICAgIGVjaG8gJzwvcD4nLlBIUF9FT0w7DQogICB9DQoNCiAgIGVjaG8gJzxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi10b3A6IDI1cHg7Ij4nLiR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ2ZpbHRlci1lZGl0JywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnY3JlYXRlLW5ldy1maWx0ZXInKSwgYXJyYXkoJ2NyZWF0ZScgPT4gJ2ZpbHRlcicpLCAnJywgZmFsc2UpLic8L3A+JzsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.settings.options.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIGV4aXQ7DQoNCiAgIC8qIHNldHVwIG9wdGlvbnMgKi8NCiAgICRhcnJPcHRpb25zID0gYXJyYXkoJ3NxbC1ibGFja2xpc3QnID0+IGFycmF5KCd2YWx1ZS10eXBlJyA9PiAnc3RyaW5nJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbXB0eS1hbGxvd2QnID0+IHRydWUpLA0KICAgICAgICAgICAgICAgICAgICAgICAncmVwb3J0LWNzcycgICAgPT4gYXJyYXkoJ3ZhbHVlLXR5cGUnID0+ICd0ZXh0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbXB0eS1hbGxvd2QnID0+IGZhbHNlKSwNCiAgICAgICAgICAgICAgICAgICAgICApOw0KDQogICAvL2xvYWQgZGVmYXVsdCB2YWx1ZXMgZnJvbSBmaWxlIHN5c3RlbQ0KICAgaWYgKGlzc2V0KCR0aGlzLT5hcnJQYXJhbXNbJ2xvYWQnXSkpIHsNCiAgICAgIHN3aXRjaCgkdGhpcy0+YXJyUGFyYW1zWydsb2FkJ10pIHsNCiAgICAgICAgIGNhc2UgJ3NxbC1ibGFja2xpc3QnOg0KICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NxbC1ibGFja2xpc3QnLCBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL29wdGlvbnMuYmxhY2tsaXN0LmRlZmF1bHQnKSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgIGNhc2UgJ3JlcG9ydC1jc3MnOg0KICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcG9ydC1jc3MnLCBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL29wdGlvbnMuY3NzLmRlZmF1bHQnKSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgIH0NCiAgICAgICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+c3RyTW9kdWxlSWQsICR0aGlzLT5zdHJBY3Rpb24sICR0aGlzLT5zdHJSZXR1cm5JZCwgYXJyYXkoJ3RhYicgPT4gJ29wdGlvbnMnKSk7DQogICB9DQoNCiAgIC8qIHNhdmUgY2hhbmdlcyAqLw0KICAgaWYgKGlzc2V0KCRfUE9TVFsnb3B0aW9ucy1zdWJtaXQnXSkpIHsNCiAgICAgICRhcnJFcnJvcnMgPSBhcnJheSgpOw0KICAgICAgZm9yZWFjaCgkX1BPU1RbJ29wdGlvbnMnXSBhcyAkb3B0aW9uID0+ICR2YWx1ZSkgew0KICAgICAgICAgaWYoISRhcnJPcHRpb25zWyRvcHRpb25dWydlbXB0eS1hbGxvd2QnXSAmJiBzdHJsZW4oJHZhbHVlKSA9PSAwKSB7DQogICAgICAgICAgICAkYXJyRXJyb3JzW10gPSAkdGhpcy0+TGFuZygnb3B0aW9uLScuJG9wdGlvbi4nLWVtcHR5Jyk7DQogICAgICAgICB9DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRiVmFsaWQgPSB0cnVlOw0KICAgICAgICAgICAgc3dpdGNoKCRhcnJPcHRpb25zWyRvcHRpb25dWyd2YWx1ZS10eXBlJ10pIHsNCiAgICAgICAgICAgICAgIGNhc2UgJ2ludGVnZXInOg0KICAgICAgICAgICAgICAgICAgJGJWYWxpZCA9ICRiVmFsaWQgJiYgcHJlZ19tYXRjaCgnfl5cZCokficsICR2YWx1ZSk7DQogICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgIGNhc2UgJ3RleHQnOg0KICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzoNCiAgICAgICAgICAgICAgICAgIC8vc3RyaW5nIGlzIGFsd2F5cyB2YWxpZA0KICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgZGllKCdGQVRBTCBFUlJPUjogVW5rbndvbiBPcHRpb24tVmFsdWUtVHlwZTogJyAuICRhcnJPcHRpb25zWyRvcHRpb25dWyd2YWx1ZS10eXBlJ10pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGJWYWxpZCkgew0KICAgICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJG9wdGlvbiwgJHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgJGFyckVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ29wdGlvbi0nLiRvcHRpb24uJy1pbnZhbGlkJyk7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIGlmIChjb3VudCgkYXJyRXJyb3JzKSA+IDApIHsNCiAgICAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJGFyckVycm9ycywgJ2Vycm9yJyk7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goYXJyYXkoJHRoaXMtPkxhbmcoJ29wdGlvbnMtc2F2ZWQnKSksICdoaW50Jyk7DQogICAgICB9DQogICB9DQoNCiAgIGVjaG8gJzxmb3JtIGFjdGlvbj0iJy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdzZXR0aW5ncycsICR0aGlzLT5zdHJSZXR1cm5JZCwgJycsIGFycmF5KCd0YWInID0+ICdvcHRpb25zJyksICcnLCB0cnVlKS4nIiBtZXRob2Q9InBvc3QiPicuUEhQX0VPTDsNCiAgIGZvcmVhY2ggKCRhcnJPcHRpb25zIGFzICRzdHJOYW1lID0+ICRhcnJQcm9wZXJ0aWVzKSB7DQogICAgICBlY2hvICc8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogM3B4OyI+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnJm5ic3A7PGI+Jy4kdGhpcy0+TGFuZygnb3B0aW9uLScuJHN0ck5hbWUpLic8L2I+PGJyIC8+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnJm5ic3A7Jy4kdGhpcy0+TGFuZygnb3B0aW9uLScuJHN0ck5hbWUuJy1oaW50JykuJzxiciAvPicuUEhQX0VPTDs7DQogICAgICBpZiAoJGFyclByb3BlcnRpZXNbJ3ZhbHVlLXR5cGUnXSA9PSAndGV4dCcpIHsNCiAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSBzdHlsZT0id2lkdGg6IDk5JTsgbWFyZ2luLXRvcDogNXB4OyIgbmFtZT0ib3B0aW9uc1snLiRzdHJOYW1lLiddIj4nLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCRzdHJOYW1lKS4nPC90ZXh0YXJlYT4nLlBIUF9FT0w7DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgIGVjaG8gJzxpbnB1dCBzdHlsZT0id2lkdGg6IDk5JTsgbWFyZ2luLXRvcDogNXB4OyIgdHlwZT0idGV4dCIgbmFtZT0ib3B0aW9uc1snLiRzdHJOYW1lLiddIiB2YWx1ZT0iJy4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgkc3RyTmFtZSkuJyIgLz4nLlBIUF9FT0w7DQogICAgICB9DQogICAgICBlY2hvICc8L3A+Jy5QSFBfRU9MOw0KICAgICAgZWNobyAnPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjBweDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4nLiR0aGlzLT5DcmVhdGVMaW5rKCR0aGlzLT5zdHJNb2R1bGVJZCwgJ3NldHRpbmdzJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnbG9hZC1kZWZhdWx0X3ZhbHVlcycpLCBhcnJheSgnbG9hZCcgPT4gJHN0ck5hbWUpLCAnJywgZmFsc2UpLic8L2Rpdj4nOw0KICAgfQ0KDQogICBlY2hvICc8cCBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsiPicuUEhQX0VPTDsNCiAgIGVjaG8gJyAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im9wdGlvbnMtc3VibWl0IiB2YWx1ZT0iJy4kdGhpcy0+TGFuZygnc2F2ZS1jaGFuZ2VzJykuJyIgLz4nLlBIUF9FT0w7DQogICBlY2hvICc8L3A+Jy5QSFBfRU9MOw0KICAgZWNobyAnPC9mb3JtPicuUEhQX0VPTDsNCg0KDQogICBlY2hvICc8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyI+Jy4kdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdkZWZhdWx0YWRtaW4nLCAkdGhpcy0+c3RyUmV0dXJuSWQsICcmIzE3MTsgJy4kdGhpcy0+TGFuZygnbW9kdWxlLW92ZXJ2aWV3JyksIGFycmF5KCksICcnLCBmYWxzZSkuJzwvZGl2Pic7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIHsNCiAgICAgIGVjaG8gJHRoaXMtPmdldE1lc3NhZ2Vib3goJ1Blcm1pc3Npb24gZGVuaWVkIScsICdlcnJvcicpOw0KICAgICAgcmV0dXJuOw0KICAgfQ0KDQo/Pg0KPGRpdiBpZD0icGFnZV90YWJzIj4NCiAgIDxkaXYgaWQ9InRhYl9jYXRlZ29yaWVzIiBjbGFzcz0iPD9waHAgZWNobyAoJHRoaXMtPnN0ckFjdGl2ZVRhYiA9PSAnY2F0ZWdvcmllcyc/J2FjdGl2ZSc6JycpOyA/PiI+PD9waHAgZWNobyAkdGhpcy0+TGFuZygndGFiLWNhdGVnb3JpZXMnKTsgPz48L2Rpdj4NCiAgIDxkaXYgaWQ9InRhYl9yZXBvcnRzIiBjbGFzcz0iPD9waHAgZWNobyAoJHRoaXMtPnN0ckFjdGl2ZVRhYiA9PSAncmVwb3J0cyc/J2FjdGl2ZSc6JycpOyA/PiI+PD9waHAgZWNobyAkdGhpcy0+TGFuZygndGFiLXJlcG9ydHMnKTsgPz48L2Rpdj4NCiAgIDxkaXYgaWQ9InRhYl9maWx0ZXJzIiBjbGFzcz0iPD9waHAgZWNobyAoJHRoaXMtPnN0ckFjdGl2ZVRhYiA9PSAnZmlsdGVycyc/J2FjdGl2ZSc6JycpOyA/PiI+PD9waHAgZWNobyAkdGhpcy0+TGFuZygndGFiLWZpbHRlcnMnKTsgPz48L2Rpdj4NCiAgIDw/cGhwIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTUUxSZXBvcnRfU3VwZXJBZG1pbicpKSB7ID8+DQogICA8ZGl2IGlkPSJ0YWJfb3B0aW9ucyIgY2xhc3M9Ijw/cGhwIGVjaG8gKCR0aGlzLT5zdHJBY3RpdmVUYWIgPT0gJ29wdGlvbnMnPydhY3RpdmUnOicnKTsgPz4iPjw/cGhwIGVjaG8gJHRoaXMtPkxhbmcoJ3RhYi1vcHRpb25zJyk7ID8+PC9kaXY+DQogICA8P3BocCB9ID8+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyYiI+PCEtLSAtLT48L2Rpdj4NCjxkaXYgaWQ9InBhZ2VfY29udGVudCI+DQogICA8ZGl2IGlkPSJ0YWJfY2F0ZWdvcmllc19jIj4NCiAgICAgIDw/cGhwIHJlcXVpcmVfb25jZSAnYWN0aW9uLnNldHRpbmdzLmNhdGVnb3JpZXMucGhwJzsgPz4NCiAgIDwvZGl2Pg0KICAgPGRpdiBpZD0idGFiX3JlcG9ydHNfYyI+DQogICAgICA8P3BocCByZXF1aXJlX29uY2UgJ2FjdGlvbi5zZXR0aW5ncy5yZXBvcnRzLnBocCc7ID8+DQogICA8L2Rpdj4NCiAgIDxkaXYgaWQ9InRhYl9maWx0ZXJzX2MiPg0KICAgICAgPD9waHAgcmVxdWlyZV9vbmNlICdhY3Rpb24uc2V0dGluZ3MuZmlsdGVycy5waHAnOyA/Pg0KICAgPC9kaXY+DQogICA8P3BocCBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1N1cGVyQWRtaW4nKSkgeyA/Pg0KICAgPGRpdiBpZD0idGFiX29wdGlvbnNfYyI+DQogICAgICA8P3BocCByZXF1aXJlX29uY2UgJ2FjdGlvbi5zZXR0aW5ncy5vcHRpb25zLnBocCc7ID8+DQogICA8L2Rpdj4NCiAgIDw/cGhwIH0gPz4NCjwvZGl2Pg0KDQo8dGFibGUgYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6IDEwMCUiPg0KICAgPHRyPg0KICAgICAgPHRkPg0KICAgICAgICAgJiMxNzE7IDw/cGhwIGVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAnZGVmYXVsdGFkbWluJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnbW9kdWxlLW92ZXJ2aWV3JyksIGFycmF5KCksICcnLCBmYWxzZSk7ID8+DQogICAgICA8L3RkPg0KICAgICAgPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPg0KICAgICAgICAgPD9waHAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdoZWxwJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnaGVscCcpLCBhcnJheSgpLCAnJywgZmFsc2UpID8+ICZyYXF1bzsNCiAgICAgIDwvdGQ+DQogICA8L3RyPg0KPC90YWJsZT4=]]></data>
	</file>
	<file>
	  <filename>/action.settings.reports.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIGV4aXQ7DQoNCiAgIGlmICggaXNzZXQoJF9QT1NUWydyZXBvcnRfaWQnXSkgJiYgaXNzZXQoJF9QT1NUWydkZWxldGUnXSkgKSB7DQogICAgICAkb2JqUmVwb3J0ID0gU1FMUmVwb3J0X1JlcG9ydDo6Z2V0SW5zdGFuY2VCeUlkKCRfUE9TVFsncmVwb3J0X2lkJ10pOw0KICAgICAgdHJ5IHsNCiAgICAgICAgICRvYmpSZXBvcnQtPmRlbGV0ZSgpOw0KICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCggc3ByaW50ZigkdGhpcy0+TGFuZygncmVwb3J0LXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnKSwgJG9ialJlcG9ydC0+Z2V0TmFtZSgpKSwgJ2hpbnQnICk7DQogICAgICB9DQogICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgkdGhpcy0+TGFuZygkc3RyTGFuZ0tleSwgJGFyclBhcmFtcyksICdlcnJvcicpOw0KICAgICAgfQ0KICAgfQ0KDQoNCiAgICRhcnJSZXBvcnRzID0gU1FMUmVwb3J0X1JlcG9ydDo6Z2V0SW5zdGFuY2VzTGlzdCgpOw0KICAgZWNobyAnPGRpdiBjbGFzcz0ic3FscmVwb3J0Ij4nLlBIUF9FT0w7DQogICBmb3JlYWNoKCRhcnJSZXBvcnRzIEFzICRvYmpSZXBvcnQpIHsNCiAgICAgIGVjaG8gJzxwPic7DQogICAgICAkYXJyUGFyYW1zID0gYXJyYXkoJ3JlcG9ydF9pZCcgPT4gJG9ialJlcG9ydC0+Z2V0SWQoKSk7DQogICAgICBlY2hvICc8Yj4nLiRvYmpSZXBvcnQtPmdldE5hbWUoKS4nPC9iPic7DQogICAgICBlY2hvICcmbmJzcDsmbmJzcDsmbmJzcDs8aT4nLiRvYmpSZXBvcnQtPmdldERlc2NyaXB0aW9uKCkuJzwvaT48YnIgLz4nOw0KICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdyZXBvcnQtZWRpdCcsICR0aGlzLT5zdHJSZXR1cm5JZCwgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJGFyclBhcmFtcywgJycsIGZhbHNlKTsNCiAgICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTUUxSZXBvcnRfU3VwZXJBZG1pbicpKSB7DQogICAgICAgICBlY2hvICcgfCAnOw0KICAgICAgICAgZWNobyAkdGhpcy0+Q3JlYXRlTGluaygkdGhpcy0+c3RyTW9kdWxlSWQsICdyZXBvcnQtZGVsZXRlJywgJHRoaXMtPnN0clJldHVybklkLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICRhcnJQYXJhbXMsICcnLCBmYWxzZSk7DQogICAgICB9DQogICAgICBlY2hvICc8L3A+Jy5QSFBfRU9MOw0KICAgfQ0KICAgZWNobyAnPHAgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLXRvcDogMjVweDsiPicuJHRoaXMtPkNyZWF0ZUxpbmsoJHRoaXMtPnN0ck1vZHVsZUlkLCAncmVwb3J0LWVkaXQnLCAkdGhpcy0+c3RyUmV0dXJuSWQsICR0aGlzLT5MYW5nKCdjcmVhdGUtbmV3LXJlcG9ydCcpLCBhcnJheSgnY3JlYXRlJyA9PiAncmVwb3J0JyksICcnLCBmYWxzZSkuJzwvcD4nOw0KICAgZWNobyAnPC9kaXY+JzsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0ibWFyZ2luOiAyMHB4OyI+DQoNCiAgIDxoND5WZXJzaW9uOiAwLjAgMDkvMjAxMTwvaDQ+DQogICA8cD5iZXRhIHZlcnNpb24gZm9yIGZpcnN0IHRlc3Rpbmcgc2Vzc2lvbi48L3A+DQoNCiAgIDxoND5WZXJzaW9uOiAwLjEgMDEvMjAxMjwvaDQ+DQogICA8cD5hZGRlZCBwZXJpb2QgZmlsdGVyLjwvcD4NCg0KICAgPGg0PlZlcnNpb246IDAuMiAwMS8yMDEyPC9oND4NCiAgIDxwPmZpbHRlcnMgY2FuIG5vdyBhbHNvIGJlIHVzZWQgYXQgdGhlIGZyb250ZW5kLjwvcD4NCg0KICAgPGg0PlZlcnNpb246IDAuMyAwMS8yMDEyPC9oND4NCiAgIDxwPmZpbHRlcnMgY2FuIGJlIHVzZWQgb3Igbm90IChzbyBub3QgZXZlcnkgcG9zc2libGUgZmlsdGVyIGhhcyB0byBiZSB1c2VkKTwvcD4NCg0KPC9kaXY+DQo=]]></data>
	</file>
	<file>
	  <filename>/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/classes/SQLReport_Category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpkZWZpbmUoJ1RBQkxFX01PRFVMRV9TUUxSRVBPUlRfQ0FURUdPUklFUycsICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zcWxyZXBvcnRfY2F0ZWdvcmllcycpOw0KDQpjbGFzcyBTUUxSZXBvcnRfQ2F0ZWdvcnkgZXh0ZW5kcyBTUUxSZXBvcnRfRXhwb3J0YWJsZSB7DQoNCiAgIC8qKg0KICAgICogQHZhciBJbnRlZ2VyDQogICAgKi8NCiAgIHByaXZhdGUgJGludElkID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwcml2YXRlICRzdHJOYW1lID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwcml2YXRlICRzdHJEZXNjcmlwdGlvbiA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTUUxSZXBvcnRfQ2F0ZWdvcnkNCiAgICAqLw0KICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsNCiAgICAgIC8vbm90aGlnIHRvIGRvDQogICB9DQoNCiAgIC8qKg0KICAgICogSW5zdGFuY2VidWZmZXINCiAgICAqDQogICAgKiBAdmFyIGFycmF5DQogICAgKi8NCiAgIHByaXZhdGUgc3RhdGljICRpbnN0YW5jZXMgPSBhcnJheSgpOw0KDQoNCiAgIC8qKg0KICAgICogUmV0dXJucyBhbiBuZXcgRW1wdHkgSW5zdGFuY2UNCiAgICAqIEByZXR1cm4gU1FMUmVwb3J0X0NhdGVnb3J5DQogICAgKi8NCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RW1wdHlJbnN0YW5jZSgpIHsNCiAgICAgIHJldHVybiBuZXcgU1FMUmVwb3J0X0NhdGVnb3J5KCk7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGEgSW5zdGFuY2UsIGJlY2F1c2UgY29uc3RydWN0b3IgaXN0IHByaXZhdGUNCiAgICAqDQogICAgKiBAcGFyYW0gSW50ZWdlciAkaWQNCiAgICAqIEByZXR1cm4gU1FMUmVwb3J0X0NhdGVnb3J5DQogICAgKi8NCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFuY2VCeUlkKCRpZCkgew0KDQogICAgICBpZiAoIWlzX251bWVyaWMoJGlkKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW52YWxpZCBpZCAnIi4kaWQuIicgZm9yICciLl9fQ0xBU1NfXy4iJyIpOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGlkLCBzZWxmOjokaW5zdGFuY2VzKSkgew0KICAgICAgICAgJGluc3RhbmNlcyA9IHNlbGY6OmdldEluc3RhbmNlc0xpc3QoJGlkKTsNCiAgICAgICAgIGlmIChjb3VudCgkaW5zdGFuY2VzKSA9PSAxKSB7DQogICAgICAgICAgICBzZWxmOjokaW5zdGFuY2VzWyRpZF0gPSAkaW5zdGFuY2VzWzBdOw0KICAgICAgICAgfQ0KICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJjYXRlZ29yaWVzLWNhdGVnb3JpZXNfaWQtbm90LWZvdW5kfCRpZCIpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIHNlbGY6OiRpbnN0YW5jZXNbJGlkXTsNCiAgIH0NCg0KDQogICAvKioNCiAgICAqIFJldHVybnMgYSBhcnJheSBvZiBJbnN0YW5jZXMNCiAgICAqDQogICAgKiBAcGFyYW0gJGlkIElmIGdpdmVuLCB0aGVyZSB3aWxsIGJlIHNldCBhIGZpbHRlciBvbiBpdA0KICAgICogQHBhcmFtICRhZGRpdGl2ZSBJZiBnaXZlbiwgaXQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgcXVlcnkgKGUuZy4gYSBXSEVSRSBjbGF1c2UpDQogICAgKiBAcmV0dXJuIEFycmF5IG9mIFNRTFJlcG9ydF9DYXRlZ29yeQ0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlc0xpc3QoJGlkID0gMCwgJGFkZGl0aXZlID0gJycpIHsNCiAgICAgIC8vYnVpbGQgc3FsLXF1ZXJ5DQogICAgICAkcXVlcnkgPSAiU0VMRUNUICoNCiAgICAgICAgICAgICAgICAgIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0NBVEVHT1JJRVMuIiAiOw0KICAgICAgLy9jaGVjayBmb3IgaWQNCiAgICAgIGlmICgkaWQgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSBjYXRlZ29yaWVzX2lkID0gIi4oaW50KSRpZDsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICAgJHF1ZXJ5IC49ICIgV0hFUkUgMSI7DQogICAgICB9DQogICAgICAvL2NoZWNrIGFkZGl0aXZlDQogICAgICBpZiAoc3RybGVuKCRhZGRpdGl2ZSkgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gJyBBTkQgJyAuICRhZGRpdGl2ZTsNCiAgICAgIH0NCg0KICAgICAgJGRicmVzdWx0ID0gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCktPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICRyZXRBcnJheSA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAgICAgIC8vY3JlYXRlIGluc3RhbmNlIGlmIG5vdCBkb25lDQogICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJHJvd1snY2F0ZWdvcmllc19pZCddLCBzZWxmOjokaW5zdGFuY2VzKSkgew0KICAgICAgICAgICAgJG15SW5zdGFuY2UgPSBzZWxmOjpnZXRFbXB0eUluc3RhbmNlKCk7DQogICAgICAgICAgICAkbXlJbnN0YW5jZS0+YmluZCgkcm93KTsNCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJHJvd1snY2F0ZWdvcmllc19pZCddXSA9ICRteUluc3RhbmNlOw0KICAgICAgICAgfQ0KICAgICAgICAgLy9hbmQgYWRkIHRvIHRoZSByZXRBcnJheQ0KICAgICAgICAgJHJldEFycmF5W10gPSBzZWxmOjokaW5zdGFuY2VzWyRyb3dbJ2NhdGVnb3JpZXNfaWQnXV07DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkcmV0QXJyYXk7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBTYXZlcyB2YWxldXMgdG8gREINCiAgICAqDQogICAgKiAgQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlVG9EQigpIHsNCg0KICAgICAgJG9iakFET0Nvbm5lY3Rpb24gPSAkdGhpcy0+Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQoNCiAgICAgIC8vaW5zZXJ0DQogICAgICBpZiAoJHRoaXMtPmludElkID09PSBudWxsKSB7DQogICAgICAgICAkbmV3aWQgPSAkb2JqQURPQ29ubmVjdGlvbi0+R2VuSUQoVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9DQVRFR09SSUVTLiJfc2VxIik7DQogICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0NBVEVHT1JJRVMuJw0KICAgICAgICAgICAgICAgICAgICAgIChjYXRlZ29yaWVzX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICBuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbikNCiAgICAgICAgICAgICAgICAgICBWQUxVRVMNCiAgICAgICAgICAgICAgICAgICAgICAoPyw/LD8pJzsNCiAgICAgICAgICRyZXMgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRuZXdpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdHJOYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0ckRlc2NyaXB0aW9uKSk7DQogICAgICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICAgICB9DQogICAgICAgICAkdGhpcy0+aW50SWQgPSAkbmV3aWQ7DQogICAgICB9DQogICAgICAvL3VwZGF0ZQ0KICAgICAgZWxzZSB7DQogICAgICAgICAkcXVlcnkgPSAiVVBEQVRFICIuVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9DQVRFR09SSUVTLiIgU0VUDQogICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSA/LA0KICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ID8NCiAgICAgICAgICAgICAgICAgV0hFUkUgY2F0ZWdvcmllc19pZCA9ICIuKGludCkkdGhpcy0+aW50SWQ7DQogICAgICAgICAkcmVzID0gJG9iakFET0Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+c3RyTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdHJEZXNjcmlwdGlvbikpOw0KICAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICB9DQoNCg0KICAgLyoqDQogICAgKiBMb2FkcyB0aGUgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIERCDQogICAgKg0KICAgICogQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHByb3RlY3RlZCBmdW5jdGlvbiBiaW5kKCRkYkRhdGEpIHsNCiAgICAgIGlmICghaXNfYXJyYXkoJGRiRGF0YSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1BhcmFtZXRlciBvZiAnLl9fTUVUSE9EX18uJyBoYXMgdG8gYmUgYW4gYXJyYXkhJyk7DQogICAgICB9DQoNCiAgICAgICR0aGlzLT5pbnRJZCAgICAgICAgICA9ICRkYkRhdGFbJ2NhdGVnb3JpZXNfaWQnXTsNCiAgICAgICR0aGlzLT5zdHJOYW1lICAgICAgICA9ICRkYkRhdGFbJ25hbWUnXTsNCiAgICAgICR0aGlzLT5zdHJEZXNjcmlwdGlvbiA9ICRkYkRhdGFbJ2Rlc2NyaXB0aW9uJ107DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBEZWxldGVzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZGF0YWJhc2UNCiAgICAqDQogICAgKiBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpIHsNCg0KICAgICAgJGFyclJlcG9ydHMgPSBTUUxSZXBvcnRfUmVwb3J0OjpnZXRJbnN0YW5jZXNMaXN0KDAsICdjYXRlZ29yaWVzX2lkID0gJy4kdGhpcy0+Z2V0SWQoKSk7DQogICAgICBpZiAoY291bnQoJGFyclJlcG9ydHMpID4gMCkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignY2F0ZWdvcmllcy1yZXBvcnRzLWxlZnQnKTsNCiAgICAgIH0NCg0KICAgICAgJG9iakFET0Nvbm5lY3Rpb24gPSAkdGhpcy0+Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQogICAgICAkcXVlcnkgPSAiREVMRVRFIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0NBVEVHT1JJRVMuIg0KICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGNhdGVnb3JpZXNfaWQgPSAiLiR0aGlzLT5pbnRJZDsNCiAgICAgICRyZXMgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gdHJ1ZTsNCiAgIH0NCg0KDQovKiAqICogKiAqICogKiAqICogKiAqICogKiAqIEVORCBPRiBFWFBPUlRBQkxFcyAqICogKiAqICogKiAqICogKiAqICogKiAqICovDQoNCg0KICAgLyoqDQogICAgKiBnZXR0ZXIgZm9yIGlkDQogICAgKg0KICAgICogQHJldHVybiBJbnRlZ2VyDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZCgpIHsNCiAgICAgIHJldHVybiAoaW50KSR0aGlzLT5pbnRJZDsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIG5hbWUNCiAgICAqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+c3RyTmFtZTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIG5hbWUNCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0TmFtZSgkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2NhdGVnb3JpZXMtbmFtZS1pbnZhbGlkJyk7DQogICAgICB9DQoNCiAgICAgICR0aGlzLT5zdHJOYW1lID0gJHZhbHVlOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEdldHRlciBmb3IgZGVzY3JpcHRpb24NCiAgICAqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVzY3JpcHRpb24oKSB7DQogICAgICByZXR1cm4gJHRoaXMtPnN0ckRlc2NyaXB0aW9uOw0KICAgfQ0KDQogICAvKioNCiAgICAqIFNldHRlciBmb3IgZGVzY3JpcHRpb24NCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0RGVzY3JpcHRpb24oJHZhbHVlKSB7DQoNCiAgICAgIGlmIChlbXB0eSgkdmFsdWUpKSB7DQogICAgICAgICAkdmFsdWUgPSBudWxsOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWlzX251bGwoJHZhbHVlKSAmJiAhaXNfc3RyaW5nKCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2NhdGVnb3JpZXMtZGVzY3JpcHRpb24taW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+c3RyRGVzY3JpcHRpb24gPSAkdmFsdWU7DQogICB9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_Exportable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCmFic3RyYWN0IGNsYXNzIFNRTFJlcG9ydF9FeHBvcnRhYmxlIHsNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIHRoZSBjbXMtPmRiIG9iamVjdCBhcyBhIHJlZmVyZW5jZQ0KICAgICoNCiAgICAqIEByZXR1cm4gQURPQ29ubmVjdGlvbg0KICAgICovDQogICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdldERhdGFiYXNlQ29ubmVjdGlvbigpIHsNCiAgICAgIGdsb2JhbCAkZ0NtczsNCiAgICAgIHJldHVybiAkZ0Ntcy0+R2V0RGIoKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGFuIG5ldyBFbXB0eSBJbnN0YW5jZQ0KICAgICogQHJldHVybiBBRXhwb3J0YWJsZQ0KICAgICovDQogICBhYnN0cmFjdCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEVtcHR5SW5zdGFuY2UoKTsNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGEgSW5zdGFuY2UsIGJlY2F1c2UgY29uc3RydWN0b3IgaXN0IHByaXZhdGUNCiAgICAqDQogICAgKiBAcGFyYW0gSW50ZWdlciAkaWQNCiAgICAqIEByZXR1cm4gQUV4cG9ydGFibGUNCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YW5jZUJ5SWQoJGlkKTsNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGEgYXJyYXkgb2YgSW5zdGFuY2VzDQogICAgKg0KICAgICogQHBhcmFtICRpZCBJZiBnaXZlbiwgdGhlcmUgd2lsbCBiZSBzZXQgYSBmaWx0ZXIgb24gaXQNCiAgICAqIEBwYXJhbSAkYWRkaXRpdmUgSWYgZ2l2ZW4sIGl0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIHF1ZXJ5IChlLmcuIGEgV0hFUkUgY2xhdXNlKQ0KICAgICogQHJldHVybiBBcnJheSBvZiBBRXhwb3J0YWJsZQ0KICAgICovDQogICBhYnN0cmFjdCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlc0xpc3QoJGlkID0gMCwgJGFkZGl0aXZlID0gJycpOw0KDQogICAvKioNCiAgICAqIFNhdmVzIHZhbGV1cyB0byBEQg0KICAgICoNCiAgICAqICBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHNhdmVUb0RCKCk7DQoNCiAgIC8qKg0KICAgICogYmluZCB0aGUgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIERCDQogICAgKg0KICAgICogIEByZXR1cm4gQm9vbGVhbg0KICAgICovDQogICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gYmluZCgkZGJEYXRhKTsNCg0KICAgLyoqDQogICAgKiBEZWxldGVzIGFsbCB2YWx1ZXMgZnJvbSB0aGUgZGF0YWJhc2UNCiAgICAqDQogICAgKiBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpOw0KDQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_Filter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpkZWZpbmUoJ1RBQkxFX01PRFVMRV9TUUxSRVBPUlRfRklMVEVSUycsICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zcWxyZXBvcnRfZmlsdGVycycpOw0KDQphYnN0cmFjdCBjbGFzcyBTUUxSZXBvcnRfRmlsdGVyIGV4dGVuZHMgU1FMUmVwb3J0X0V4cG9ydGFibGUgew0KDQogICAvKioNCiAgICAqIEB2YXIgSW50ZWdlcg0KICAgICovDQogICBwcm90ZWN0ZWQgJGludElkID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwcm90ZWN0ZWQgJHN0ck5hbWUgPSBudWxsOw0KDQogICAvKioNCiAgICAqIEB2YXIgU3RyaW5nDQogICAgKi8NCiAgIHByb3RlY3RlZCAkc3RyRmlsdGVyQ29sdW1uID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwcm90ZWN0ZWQgJHN0ckZpbHRlclR5cGUgPSBudWxsOw0KDQogICAvKioNCiAgICAqIEB2YXIgU3RyaW5nDQogICAgKi8NCiAgIHByb3RlY3RlZCAkc3RyTG9va3VwUXVlcnkgPSBudWxsOw0KDQogICAvKioNCiAgICAqIEB2YXIgU3RyaW5nDQogICAgKi8NCiAgIHByb3RlY3RlZCAkaW50QWxsb3dNdWx0aVNlbGVjdGlvbiA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogSW5zdGFuY2VidWZmZXINCiAgICAqDQogICAgKiBAdmFyIGFycmF5DQogICAgKi8NCiAgIHByaXZhdGUgc3RhdGljICRpbnN0YW5jZXMgPSBhcnJheSgpOw0KDQoNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGEgSW5zdGFuY2UsIGJlY2F1c2UgY29uc3RydWN0b3IgaXN0IHByaXZhdGUNCiAgICAqDQogICAgKiBAcGFyYW0gSW50ZWdlciAkaWQNCiAgICAqIEByZXR1cm4gU1FMUmVwb3J0X0ZpbHRlcg0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlQnlJZCgkaWQpIHsNCg0KICAgICAgaWYgKCFpc19udW1lcmljKCRpZCkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkludmFsaWQgaWQgJyIuJGlkLiInIGZvciAnIi5fX0NMQVNTX18uIiciKTsNCiAgICAgIH0NCg0KICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCRpZCwgc2VsZjo6JGluc3RhbmNlcykpIHsNCiAgICAgICAgICRpbnN0YW5jZXMgPSBzZWxmOjpnZXRJbnN0YW5jZXNMaXN0KCRpZCk7DQogICAgICAgICBpZiAoY291bnQoJGluc3RhbmNlcykgPT0gMSkgew0KICAgICAgICAgICAgc2VsZjo6JGluc3RhbmNlc1skaWRdID0gJGluc3RhbmNlc1swXTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiZmlsdGVycy1maWx0ZXJzX2lkLW5vdC1mb3VuZHwkaWQiKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHJldHVybiBzZWxmOjokaW5zdGFuY2VzWyRpZF07DQogICB9DQoNCiAgIC8qKg0KICAgICogUmV0dXJucyBhIGFycmF5IG9mIEluc3RhbmNlcw0KICAgICoNCiAgICAqIEBwYXJhbSAkaWQgSWYgZ2l2ZW4sIHRoZXJlIHdpbGwgYmUgc2V0IGEgZmlsdGVyIG9uIGl0DQogICAgKiBAcGFyYW0gJGFkZGl0aXZlIElmIGdpdmVuLCBpdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBxdWVyeSAoZS5nLiBhIFdIRVJFIGNsYXVzZSkNCiAgICAqIEByZXR1cm4gQXJyYXkgb2YgU1FMUmVwb3J0X0ZpbHRlcg0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlc0xpc3QoJGlkID0gMCwgJGFkZGl0aXZlID0gJycpIHsNCiAgICAgIC8vYnVpbGQgc3FsLXF1ZXJ5DQogICAgICAkcXVlcnkgPSAiU0VMRUNUICoNCiAgICAgICAgICAgICAgICAgIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0ZJTFRFUlMuIiAiOw0KICAgICAgLy9jaGVjayBmb3IgaWQNCiAgICAgIGlmICgkaWQgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSBmaWx0ZXJzX2lkID0gIi4oaW50KSRpZDsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICAgJHF1ZXJ5IC49ICIgV0hFUkUgMSI7DQogICAgICB9DQogICAgICAvL2NoZWNrIGFkZGl0aXZlDQogICAgICBpZiAoc3RybGVuKCRhZGRpdGl2ZSkgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gJyBBTkQgJyAuICRhZGRpdGl2ZTsNCiAgICAgIH0NCg0KICAgICAgJGRicmVzdWx0ID0gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCktPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICRyZXRBcnJheSA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAgICAgIC8vY3JlYXRlIGluc3RhbmNlIGlmIG5vdCBhbHJlYWR5IGRvbmUNCiAgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkcm93WydmaWx0ZXJzX2lkJ10sIHNlbGY6OiRpbnN0YW5jZXMpKSB7DQogICAgICAgICAgICBpZiAoJHJvd1snZmlsdGVyX3R5cGUnXSA9PSAnbG9va3VwJykgew0KICAgICAgICAgICAgICAgJG15SW5zdGFuY2UgPSBuZXcgU1FMUmVwb3J0X0ZpbHRlckxvb2t1cCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkcm93WydmaWx0ZXJfdHlwZSddID09ICdwZXJpb2QnKSB7DQogICAgICAgICAgICAgICAkbXlJbnN0YW5jZSA9IG5ldyBTUUxSZXBvcnRfRmlsdGVyUGVyaW9kKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInVua25vd24gZmlsdGVyIHR5cGU6ICIgLiAkcm93WydmaWx0ZXJfdHlwZSddKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vYmluZCB2YWx1ZXMgZnJvbSBkYnJlc3VsdA0KICAgICAgICAgICAgJG15SW5zdGFuY2UtPmJpbmQoJHJvdyk7DQogICAgICAgICAgICAvL2FkZCB0byBidWZmZXINCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJHJvd1snZmlsdGVyc19pZCddXSA9ICRteUluc3RhbmNlOw0KICAgICAgICAgfQ0KICAgICAgICAgLy9hbmQgYWRkIHRvIHRoZSByZXRBcnJheQ0KICAgICAgICAgJHJldEFycmF5W10gPSBzZWxmOjokaW5zdGFuY2VzWyRyb3dbJ2ZpbHRlcnNfaWQnXV07DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkcmV0QXJyYXk7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBTYXZlcyB2YWxldXMgdG8gREINCiAgICAqDQogICAgKiAgQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlVG9EQigpIHsNCg0KICAgICAgJG9iakFET0Nvbm5lY3Rpb24gPSAkdGhpcy0+Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQoNCiAgICAgIC8vaW5zZXJ0DQogICAgICBpZiAoJHRoaXMtPmludElkID09PSBudWxsKSB7DQogICAgICAgICAkbmV3aWQgPSAkb2JqQURPQ29ubmVjdGlvbi0+R2VuSUQoVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9GSUxURVJTLiJfc2VxIik7DQogICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0ZJTFRFUlMuJw0KICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJzX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICBuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfY29sdW1uLA0KICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX3F1ZXJ5LA0KICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19tdWx0aV9zZWxlY3Rpb24pDQogICAgICAgICAgICAgICAgICAgVkFMVUVTDQogICAgICAgICAgICAgICAgICAgICAgKD8sPywgPywgPywgPywgPyknOw0KICAgICAgICAgJHJlcyA9ICRvYmpBRE9Db25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0ck5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c3RyRmlsdGVyQ29sdW1uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0ckZpbHRlclR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c3RyTG9va3VwUXVlcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW50QWxsb3dNdWx0aVNlbGVjdGlvbikpOw0KICAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgICAgfQ0KICAgICAgICAgJHRoaXMtPmludElkID0gJG5ld2lkOw0KICAgICAgfQ0KICAgICAgLy91cGRhdGUNCiAgICAgIGVsc2Ugew0KICAgICAgICAgJHF1ZXJ5ID0gIlVQREFURSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfRklMVEVSUy4iIFNFVA0KICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gPywNCiAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2NvbHVtbiA9ID8sDQogICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl90eXBlID0gPywNCiAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwX3F1ZXJ5ID0gPywNCiAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbXVsdGlfc2VsZWN0aW9uID0gPw0KICAgICAgICAgICAgICAgICBXSEVSRSBmaWx0ZXJzX2lkID0gIi4kdGhpcy0+aW50SWQ7DQogICAgICAgICAkcmVzID0gJG9iakFET0Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+c3RyTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdHJGaWx0ZXJDb2x1bW4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c3RyRmlsdGVyVHlwZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zdHJMb29rdXBRdWVyeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbnRBbGxvd011bHRpU2VsZWN0aW9uKSk7DQogICAgICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgIH0NCg0KICAgLyoqDQogICAgKiBMb2FkcyB0aGUgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIERCDQogICAgKg0KICAgICogIEByZXR1cm4gQm9vbGVhbg0KICAgICovDQogICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmluZCgkZGJEYXRhKSB7DQogICAgICBpZiAoIWlzX2FycmF5KCRkYkRhdGEpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdQYXJhbWV0ZXIgb2YgJy5fX01FVEhPRF9fLicgaGFzIHRvIGJlIGFuIGFycmF5IScpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+aW50SWQgICAgICAgICAgICAgICAgICA9ICRkYkRhdGFbJ2ZpbHRlcnNfaWQnXTsNCiAgICAgICR0aGlzLT5zdHJOYW1lICAgICAgICAgICAgICAgID0gJGRiRGF0YVsnbmFtZSddOw0KICAgICAgJHRoaXMtPnN0ckZpbHRlckNvbHVtbiAgICAgICAgPSAkZGJEYXRhWydmaWx0ZXJfY29sdW1uJ107DQogICAgICAkdGhpcy0+c3RyRmlsdGVyVHlwZSAgICAgICAgICA9ICRkYkRhdGFbJ2ZpbHRlcl90eXBlJ107DQogICAgICAkdGhpcy0+c3RyTG9va3VwUXVlcnkgICAgICAgICA9ICRkYkRhdGFbJ2xvb2t1cF9xdWVyeSddOw0KICAgICAgJHRoaXMtPmludEFsbG93TXVsdGlTZWxlY3Rpb24gPSAkZGJEYXRhWydhbGxvd19tdWx0aV9zZWxlY3Rpb24nXTsNCg0KICAgfQ0KDQogICAvKioNCiAgICAqIERlbGV0ZXMgYWxsIHZhbHVlcyBmcm9tIHRoZSBkYXRhYmFzZQ0KICAgICoNCiAgICAqIEByZXR1cm4gQm9vbGVhbg0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkgew0KICAgICAgJG9iakFET0Nvbm5lY3Rpb24gPSAkdGhpcy0+Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQogICAgICAkcXVlcnkgPSAiREVMRVRFIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX0ZJTFRFUlMuIg0KICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGZpbHRlcnNfaWQgPSAiLiR0aGlzLT5pbnRJZDsNCiAgICAgICRyZXMgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gdHJ1ZTsNCiAgIH0NCg0KLyogKiAqICogKiAqICogKiAqICogKiAqICogKiBFTkQgT0YgRVhQT1JUQUJMRXMgKiAqICogKiAqICogKiAqICogKiAqICogKiAqLw0KDQoNCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIGlkDQogICAgKg0KICAgICogQHJldHVybiBJbnRlZ2VyDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZCgpIHsNCiAgICAgIHJldHVybiAoaW50KSR0aGlzLT5pbnRJZDsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIG5hbWUNCiAgICAqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+c3RyTmFtZTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIG5hbWUNCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0TmFtZSgkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbHRlcnMtbmFtZS1lbXB0eScpOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWlzX251bGwoJHZhbHVlKSAmJiAhaXNfc3RyaW5nKCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbHRlcnMtbmFtZS1pbnZhbGlkJyk7DQogICAgICB9DQoNCiAgICAgICR0aGlzLT5zdHJOYW1lID0gJHZhbHVlOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEdldHRlciBmb3IgZmlsdGVyX2NvbHVtbg0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaWx0ZXJDb2x1bW4oKSB7DQogICAgICByZXR1cm4gJHRoaXMtPnN0ckZpbHRlckNvbHVtbjsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIGZpbHRlcl9jb2x1bW4NCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0RmlsdGVyQ29sdW1uKCR2YWx1ZSkgew0KDQogICAgICBpZiAoZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZmlsdGVycy1maWx0ZXJfY29sdW1uLWVtcHR5Jyk7DQogICAgICB9DQoNCiAgICAgIGlmICghaXNfbnVsbCgkdmFsdWUpICYmICFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZmlsdGVycy1maWx0ZXJfY29sdW1uLWludmFsaWQnKTsNCiAgICAgIH0NCg0KICAgICAgJHRoaXMtPnN0ckZpbHRlckNvbHVtbiA9ICR2YWx1ZTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIGZpbHRlciB0eXBlDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPnN0ckZpbHRlclR5cGU7DQogICB9DQoNCiAgIC8qKg0KICAgICogU2V0dGVyIGZvciBmaWx0ZXIgdHlwZQ0KICAgICoNCiAgICAqIEBwYXJhbSAkdmFsdWUgU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzZXRUeXBlKCR2YWx1ZSkgew0KDQogICAgICBpZiAoZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgJHZhbHVlID0gbnVsbDsNCiAgICAgIH0NCg0KICAgICAgaWYgKCFpc19udWxsKCR2YWx1ZSkgJiYgIWlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWx0ZXJzLXR5cGUtaW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWluX2FycmF5KCR2YWx1ZSwgYXJyYXkoJ2xvb2t1cCcsJ3BlcmlvZCcpKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZmlsdGVycy10eXBlLWludmFsaWQnKTsNCiAgICAgIH0NCg0KICAgICAgJHRoaXMtPnN0ckZpbHRlclR5cGUgPSAkdmFsdWU7DQogICB9DQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBsb29rdXBfcXVlcnkNCiAgICAqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9va3VwUXVlcnkoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPnN0ckxvb2t1cFF1ZXJ5Ow0KICAgfQ0KDQogICAvKioNCiAgICAqIFNldHRlciBmb3IgbG9va3VwX3F1ZXJ5DQogICAgKg0KICAgICogQHBhcmFtICR2YWx1ZSBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIHNldExvb2t1cFF1ZXJ5KCR2YWx1ZSkgew0KDQogICAgICBpZiAoZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgJHZhbHVlID0gbnVsbDsNCiAgICAgIH0NCg0KICAgICAgaWYgKCFpc19udWxsKCR2YWx1ZSkgJiYgIWlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWx0ZXJzLWxvb2t1cF9xdWVyeS1pbnZhbGlkJyk7DQogICAgICB9DQoNCiAgICAgICR0aGlzLT5zdHJMb29rdXBRdWVyeSA9ICR2YWx1ZTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIGFsbG93X211bHRpX3NlbGVjdGlvbg0KICAgICoNCiAgICAqIEByZXR1cm4gSW50ZWdlcg0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsb3dNdWx0aVNlbGVjdGlvbigpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+aW50QWxsb3dNdWx0aVNlbGVjdGlvbjsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIGFsbG93X211bHRpX3NlbGVjdGlvbg0KICAgICoNCiAgICAqIEBwYXJhbSAkdmFsdWUgSW50ZWdlcg0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0QWxsb3dNdWx0aVNlbGVjdGlvbigkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgICR2YWx1ZSA9IG51bGw7DQogICAgICB9DQoNCiAgICAgIGlmICghaXNfbnVsbCgkdmFsdWUpICYmICFpc19udW1lcmljKCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbHRlcnMtYWxsb3dfbXVsdGlfc2VsZWN0aW9uLWludmFsaWQnKTsNCiAgICAgIH0NCg0KICAgICAgJHRoaXMtPmludEFsbG93TXVsdGlTZWxlY3Rpb24gPSAkdmFsdWU7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBzZWFyY2ggaW4gU1FMIGZvciBtYXRjaGluZyBmaWx0ZXIgY29sdW1ucw0KICAgICoNCiAgICAqIEBwYXJhbSBTdHJpbmcgJHN0clF1ZXJ5DQogICAgKiBAcmV0dXJuIEFycmF5IG9mIEZpbHRlcnMNCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWx0ZXJzKCRzdHJRdWVyeSkgew0KICAgICAgJGFyckZpbHRlcnMgPSBzZWxmOjpnZXRJbnN0YW5jZXNMaXN0KCk7DQogICAgICAkYXJyUmV0dXJuRmlsdGVycyA9IGFycmF5KCk7DQogICAgICBmb3JlYWNoKCRhcnJGaWx0ZXJzIGFzICRvYmpGaWx0ZXIpIHsNCiAgICAgICAgICRzdHJGaWx0ZXJDb2x1bW4gPSAkb2JqRmlsdGVyLT5nZXRGaWx0ZXJDb2x1bW4oKTsNCiAgICAgICAgIGxpc3QoJHN0clRhYmxlLCAkc3RyQ29sdW1uKSA9IGV4cGxvZGUoIi4iLCAkc3RyRmlsdGVyQ29sdW1uKTsNCiAgICAgICAgIC8vY2hlY2sgaWYgZmlsdGVyIGNhbiBiZSB1c2VkIGZvciB0aGUgZ2l2ZW4gcXVlcnkNCiAgICAgICAgIGlmIChwcmVnX21hdGNoKCd+Jy4kc3RyVGFibGUuJ34nLCAkc3RyUXVlcnkpKSB7DQogICAgICAgICAgICAkYXJyUmV0dXJuRmlsdGVyc1tdID0gJG9iakZpbHRlcjsNCiAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgcmV0dXJuICRhcnJSZXR1cm5GaWx0ZXJzOw0KICAgfQ0KDQogICAvKioNCiAgICAqIGNvbnZlcnQgKFBPU1QpIGFycmF5IHRvIHNlcmlhbGl6ZWQgc3RyaW5nDQogICAgKg0KICAgICogQHBhcmFtICRhcnJQb3N0RGF0YQ0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXJpYWxpemUoJGFyclBvc3REYXRhKSB7DQogICAgICAvL2pzb24gZW5jb2RlIGZvciBzaG9ydCB3cml0aW5nDQogICAgICAkc3RyRmlsdGVyRW5jb2RlZCA9IGpzb25fZW5jb2RlKCRhcnJQb3N0RGF0YSk7DQogICAgICAvL3Rha2UgY2FyZSBvZiBzbWFydHkgdGFncyBpbiBTbWFydHkgMi54DQogICAgICAkc3RyRmlsdGVyRW5jb2RlZCA9IHN0cl9yZXBsYWNlKCJ7IiwgJygnLCAkc3RyRmlsdGVyRW5jb2RlZCk7DQogICAgICAkc3RyRmlsdGVyRW5jb2RlZCA9IHN0cl9yZXBsYWNlKCJ9IiwgJyknLCAkc3RyRmlsdGVyRW5jb2RlZCk7DQoNCiAgICAgIHJldHVybiAkc3RyRmlsdGVyRW5jb2RlZDsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBjb252ZXJ0IHNlcmlhbGl6ZWQgc3RyaW5nIHRvIGFycmF5IChhY2NvcmRpbmcgdG8gUE9TVCB2YXJzKQ0KICAgICoNCiAgICAqIEBwYXJhbSBTdHJpbmcgJHN0ckZpbHRlcg0KICAgICogQHJldHVybiBBcnJheQ0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKCRzdHJGaWx0ZXIpIHsNCiAgICAgIC8vcmV2ZXJ0IFNtYXJ0eSBzcGVjaWFscw0KICAgICAgJHN0ckZpbHRlckRlY29kZWQgPSBzdHJfcmVwbGFjZSgiKCIsICd7JywgJHN0ckZpbHRlcik7DQogICAgICAkc3RyRmlsdGVyRGVjb2RlZCA9IHN0cl9yZXBsYWNlKCIpIiwgJ30nLCAkc3RyRmlsdGVyRGVjb2RlZCk7DQogICAgICAvL3JldmVydCBodG1sZW50aXRpZXMNCiAgICAgICRzdHJGaWx0ZXJEZWNvZGVkID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJGaWx0ZXJEZWNvZGVkKTsNCiAgICAgIC8vY3V0IHF1b3Rlcw0KICAgICAgJHN0ckZpbHRlckRlY29kZWQgPSBwcmVnX3JlcGxhY2UoJ35eXCJ+JywgJycsICRzdHJGaWx0ZXJEZWNvZGVkKTsNCiAgICAgICRzdHJGaWx0ZXJEZWNvZGVkID0gcHJlZ19yZXBsYWNlKCd+XCIkficsICcnLCAkc3RyRmlsdGVyRGVjb2RlZCk7DQogICAgICAvL2pzb24gZGVjb2RlDQogICAgICAkYXJyRmlsdGVyRGF0YSA9IChhcnJheSlqc29uX2RlY29kZSgkc3RyRmlsdGVyRGVjb2RlZCk7DQogICAgICAvL2JlY2F1c2Ugb2Ygc29tZSBjdXJpb3VzIGJlaGF2aW9yIHdlIGhhdmUgdG8gY2FzdCB0aGUgZmlsdGVyIElEcw0KICAgICAgZm9yZWFjaCgkYXJyRmlsdGVyRGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkgew0KICAgICAgICAgaWYgKGlzX251bWVyaWMoJGtleSkpIHsNCiAgICAgICAgICAgICRhcnJGaWx0ZXJEYXRhWyhpbnQpJGtleV0gPSAkdmFsdWU7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkYXJyRmlsdGVyRGF0YTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIFNRTA0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRTUUwoKTsNCg0KICAgLyoqDQogICAgKiBnZXR0ZXIgZm9yIGxlZ2VuZCB0ZXh0DQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldExlZ2VuZFZhbHVlcygpOw0KDQogICAvKioNCiAgICAqIGdldHRlciBmb3IgSFRNTCBmb3JtDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldEZvcm0oKTsNCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIHZvaWQNCiAgICAqLw0KICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGV2YWx1YXRlRm9ybSgkYXJyUG9zdFZhbHVlcyk7DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_FilterLookup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpjbGFzcyBTUUxSZXBvcnRfRmlsdGVyTG9va3VwIGV4dGVuZHMgU1FMUmVwb3J0X0ZpbHRlciB7DQoNCiAgIC8qKg0KICAgICogQHZhciBBcnJheQ0KICAgICovDQogICBwcml2YXRlICRhcnJEYXRhID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFNRTFJlcG9ydF9GaWx0ZXJMb29rdXANCiAgICAqLw0KICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgew0KICAgICAgJHRoaXMtPnN0ckZpbHRlclR5cGUgPSAnbG9va3VwJzsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGFuIG5ldyBFbXB0eSBJbnN0YW5jZQ0KICAgICogQHJldHVybiBTUUxSZXBvcnRfRmlsdGVyTG9va3VwDQogICAgKi8NCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RW1wdHlJbnN0YW5jZSgpIHsNCiAgICAgIHJldHVybiBuZXcgU1FMUmVwb3J0X0ZpbHRlckxvb2t1cCgpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEdldHRlciBmb3IgU1FMDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldFNRTCgpIHsNCiAgICAgIGlmIChpc19udWxsKCR0aGlzLT5hcnJEYXRhKSkgew0KICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gIiBBTkQgIiAuICR0aGlzLT5zdHJGaWx0ZXJDb2x1bW4gLiAiIElOICgnIi5pbXBsb2RlKCInLCciLCAkdGhpcy0+YXJyRGF0YSkuIicpICI7DQogICB9DQoNCiAgIC8qKg0KICAgICogZ2V0dGVyIGZvciBsZWdlbmQgdGV4dA0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWdlbmRWYWx1ZXMoKSB7DQogICAgICAkZGJyZXN1bHQgPSBzZWxmOjpnZXREYXRhYmFzZUNvbm5lY3Rpb24oKS0+RXhlY3V0ZSgkdGhpcy0+c3RyTG9va3VwUXVlcnkpOw0KICAgICAgJGFyclZhbHVlcyA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICAgICAgcmVzZXQoJHJvdyk7DQogICAgICAgICAkaWQgPSBjdXJyZW50KCRyb3cpOw0KICAgICAgICAgaWYgKGlzX2FycmF5KCR0aGlzLT5hcnJEYXRhKSAmJiAhZW1wdHkoJHRoaXMtPmFyckRhdGEpICYmICFpbl9hcnJheSgkaWQsICR0aGlzLT5hcnJEYXRhKSkgY29udGludWU7DQogICAgICAgICBuZXh0KCRyb3cpOw0KICAgICAgICAgJGNhcHRpb24gPSBjdXJyZW50KCRyb3cpOw0KICAgICAgICAgJGFyclZhbHVlc1tdID0gJGNhcHRpb247DQogICAgICB9DQoNCiAgICAgIHJldHVybiAgJHRoaXMtPnN0ck5hbWUgLiAnOiAnIC4gaW1wbG9kZSgnLCcsICRhcnJWYWx1ZXMpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIGdldHRlciBmb3IgSFRNTCBmb3JtDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldEZvcm0oKSB7DQogICAgICAkc3RySFRNTCA9ICcnOw0KICAgICAgJHN0ckhUTUwgLj0gJzxiPicuJHRoaXMtPmdldE5hbWUoKS4nOjwvYj48YnIgLz4nOw0KICAgICAgJHN0ckhUTUwgLj0gJzxzZWxlY3QgbmFtZT0iZmlsdGVyWycuJHRoaXMtPmludElkLiddJy4oJHRoaXMtPmludEFsbG93TXVsdGlTZWxlY3Rpb24gPiAwPydbXSIgbXVsdGlwbGU9Im11bHRpcGxlIic6JyInKS4nPicuUEhQX0VPTDsNCiAgICAgICRkYnJlc3VsdCA9IHNlbGY6OmdldERhdGFiYXNlQ29ubmVjdGlvbigpLT5FeGVjdXRlKCR0aGlzLT5zdHJMb29rdXBRdWVyeSk7DQogICAgICBpZiAoISRkYnJlc3VsdCkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignU1FMLUVSUk9SOiAnIC4gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCktPkVycm9yTXNnKCkpOw0KICAgICAgfQ0KDQogICAgICB3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICAgICAgLy9maXJzdCBpdGVtIGhhcyB0byBiZSB0aGUgSUQNCiAgICAgICAgIHJlc2V0KCRyb3cpOw0KICAgICAgICAgJGlkID0gY3VycmVudCgkcm93KTsNCiAgICAgICAgIC8vc2Vjb25kIHZhbHVlIGhhcyB0byBiZSB0aGUgQ0FQVElPTg0KICAgICAgICAgbmV4dCgkcm93KTsNCiAgICAgICAgICRjYXB0aW9uID0gY3VycmVudCgkcm93KTsNCiAgICAgICAgICRzdHJIVE1MIC49ICc8b3B0aW9uIHZhbHVlPSInLiRpZC4nIj4nLiRjYXB0aW9uLic8L29wdGlvbj4nLlBIUF9FT0w7DQogICAgICB9DQogICAgICAkc3RySFRNTCAuPSAnPC9zZWxlY3Q+Jy5QSFBfRU9MOw0KDQogICAgICByZXR1cm4gJHN0ckhUTUw7DQogICB9DQoNCiAgIC8qKg0KICAgICogQHJldHVybiB2b2lkDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBldmFsdWF0ZUZvcm0oJGFyclBvc3RWYWx1ZXMpIHsNCiAgICAgIGlmIChpc3NldCgkYXJyUG9zdFZhbHVlc1skdGhpcy0+aW50SWRdKSkgew0KICAgICAgICAgaWYgKGlzX2FycmF5KCRhcnJQb3N0VmFsdWVzWyR0aGlzLT5pbnRJZF0pKSB7DQogICAgICAgICAgICAkdGhpcy0+YXJyRGF0YSA9ICRhcnJQb3N0VmFsdWVzWyR0aGlzLT5pbnRJZF07DQogICAgICAgICB9DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5hcnJEYXRhID0gYXJyYXkoJGFyclBvc3RWYWx1ZXNbJHRoaXMtPmludElkXSk7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_FilterPeriod.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpjbGFzcyBTUUxSZXBvcnRfRmlsdGVyUGVyaW9kIGV4dGVuZHMgU1FMUmVwb3J0X0ZpbHRlciB7DQoNCiAgIC8qKg0KICAgICogQHZhciBVbml4VGltZXN0YW1wDQogICAgKi8NCiAgIHByb3RlY3RlZCAkdHNTdGFydCA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHZhciBVbml4VGltZXN0YW1wDQogICAgKi8NCiAgIHByb3RlY3RlZCAkdHNFbmQgPSBudWxsOw0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU1FMUmVwb3J0X0ZpbHRlckxvb2t1cA0KICAgICovDQogICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQogICAgICAkdGhpcy0+c3RyRmlsdGVyVHlwZSA9ICdwZXJpb2QnOw0KICAgfQ0KDQogICAvKioNCiAgICAqIFJldHVybnMgYW4gbmV3IEVtcHR5IEluc3RhbmNlDQogICAgKiBAcmV0dXJuIFNRTFJlcG9ydF9GaWx0ZXJMb29rdXANCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRFbXB0eUluc3RhbmNlKCkgew0KICAgICAgcmV0dXJuIG5ldyBTUUxSZXBvcnRfRmlsdGVyUGVyaW9kKCk7DQogICB9DQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBTUUwNCiAgICAqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0U1FMKCkgew0KICAgICAgaWYgKGlzX251bGwoJHRoaXMtPnRzU3RhcnQpKSB7DQogICAgICAgICByZXR1cm4gJyc7DQogICAgICB9DQoNCiAgICAgIHJldHVybiAiIEFORCAiIC4gJHRoaXMtPnN0ckZpbHRlckNvbHVtbiAuICIgQkVUV0VFTiAnIi5kYXRlKCJZLW0tZCIsICR0aGlzLT50c1N0YXJ0KS4iIDAwOjAwOjAwJyBBTkQgJyIuZGF0ZSgiWS1tLWQiLCAkdGhpcy0+dHNFbmQpLiIgMjM6NTk6NTknICI7DQogICB9DQoNCiAgIC8qKg0KICAgICogZ2V0dGVyIGZvciBsZWdlbmQgdGV4dA0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZWdlbmRWYWx1ZXMoKSB7DQogICAgICBnbG9iYWwgJGdDbXM7DQogICAgICAkb2JqTW9kdWxlSW5zdGFuY2UgPSAkZ0Ntcy0+R2V0TW9kdWxlSW5zdGFuY2UoIlNRTFJlcG9ydCIpOw0KDQogICAgICBpZiAoaXNfbnVsbCgkdGhpcy0+dHNTdGFydCkpIHsNCiAgICAgICAgIHJldHVybiAnJzsNCiAgICAgIH0NCg0KICAgICAgcmV0dXJuICAkdGhpcy0+c3RyTmFtZSAuICc6ICcuDQogICAgICAgICAgICAgICRvYmpNb2R1bGVJbnN0YW5jZS0+TGFuZygncGVyaW9kLWZyb20nKS4nICcuZGF0ZSgiWS1tLWQiLCAkdGhpcy0+dHNTdGFydCkuJyAnLg0KICAgICAgICAgICAgICAkb2JqTW9kdWxlSW5zdGFuY2UtPkxhbmcoJ3BlcmlvZC1mcm9tJykuJyAnLmRhdGUoIlktbS1kIiwgJHRoaXMtPnRzRW5kKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBnZXR0ZXIgZm9yIEhUTUwgZm9ybQ0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtKCkgew0KICAgICAgZ2xvYmFsICRnQ21zOw0KICAgICAgJG9iak1vZHVsZUluc3RhbmNlID0gJGdDbXMtPkdldE1vZHVsZUluc3RhbmNlKCJTUUxSZXBvcnQiKTsNCg0KICAgICAgJHN0ckhUTUwgPSAnJzsNCiAgICAgICRzdHJIVE1MIC49ICc8Yj4nLiR0aGlzLT5nZXROYW1lKCkuJzo8L2I+PGJyIC8+JzsNCiAgICAgICRzdHJIVE1MIC49ICRvYmpNb2R1bGVJbnN0YW5jZS0+TGFuZygncGVyaW9kLWZyb20nKS4nIDxpbnB1dCBzdHlsZT0id2lkdGg6IDcwcHg7IiBuYW1lPSJmaWx0ZXJbJy4kdGhpcy0+aW50SWQuJ11bZnJvbV0iID4gJy5QSFBfRU9MOw0KICAgICAgJHN0ckhUTUwgLj0gJG9iak1vZHVsZUluc3RhbmNlLT5MYW5nKCdwZXJpb2QtdG8nKS4nIDxpbnB1dCBzdHlsZT0id2lkdGg6IDcwcHg7IiBuYW1lPSJmaWx0ZXJbJy4kdGhpcy0+aW50SWQuJ11bdG9dIiA+ICcuUEhQX0VPTDsNCg0KICAgICAgcmV0dXJuICRzdHJIVE1MOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gdm9pZA0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZXZhbHVhdGVGb3JtKCRhcnJQb3N0VmFsdWVzKSB7DQogICAgICBpZiAoaXNzZXQoJGFyclBvc3RWYWx1ZXNbJHRoaXMtPmludElkXSkpIHsNCiAgICAgICAgIGlmIChlbXB0eSgkYXJyUG9zdFZhbHVlc1skdGhpcy0+aW50SWRdWydmcm9tJ10pKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWx0ZXJzLWZpbHRlcl9zdGFydC1lbXB0eScpOw0KICAgICAgICAgfQ0KICAgICAgICAgJHRoaXMtPnRzU3RhcnQgPSBzdHJ0b3RpbWUoJGFyclBvc3RWYWx1ZXNbJHRoaXMtPmludElkXVsnZnJvbSddKTsNCiAgICAgICAgIGlmICgkdGhpcy0+dHNTdGFydCA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbHRlcnMtZmlsdGVyX3N0YXJ0LWludmFsaWQnKTsNCiAgICAgICAgIH0NCg0KICAgICAgICAgaWYgKGVtcHR5KCRhcnJQb3N0VmFsdWVzWyR0aGlzLT5pbnRJZF1bJ3RvJ10pKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWx0ZXJzLWZpbHRlcl9lbmQtZW1wdHknKTsNCiAgICAgICAgIH0NCiAgICAgICAgICR0aGlzLT50c0VuZCA9IHN0cnRvdGltZSgkYXJyUG9zdFZhbHVlc1skdGhpcy0+aW50SWRdWyd0byddKTsNCiAgICAgICAgIGlmICgkdGhpcy0+dHNFbmQgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWx0ZXJzLWZpbHRlcl9lbmQtaW52YWxpZCcpOw0KICAgICAgICAgfQ0KDQogICAgICAgICBpZiAoJHRoaXMtPnRzU3RhcnQgPiAkdGhpcy0+dHNFbmQpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbHRlcnMtZmlsdGVyX3N0YXJ0X2VuZC1pbnZhbGlkJyk7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_Query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpkZWZpbmUoJ1RBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFUycsICAgICAgICAgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3NxbHJlcG9ydF9xdWVyaWVzJyk7DQpkZWZpbmUoJ1RBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFU19GSUxURVJTJywgIGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3NxbHJlcG9ydF9xdWVyaWVzX2ZpbHRlcnMnKTsNCg0KY2xhc3MgU1FMUmVwb3J0X1F1ZXJ5IGV4dGVuZHMgU1FMUmVwb3J0X0V4cG9ydGFibGUgew0KDQogICAvKioNCiAgICAqIEB2YXIgSW50ZWdlcg0KICAgICovDQogICBwcml2YXRlICRpbnRJZCA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHZhciBJbnRlZ2VyDQogICAgKi8NCiAgIHByaXZhdGUgJGludFJlcG9ydElkID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwcml2YXRlICRzdHJRdWVyeSA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHZhciBBcnJheQ0KICAgICovDQogICBwcml2YXRlICRhcnJGaWx0ZXIgPSBudWxsOw0KDQogICAvKioNCiAgICAqIEB2YXIgQXJyYXkNCiAgICAqLw0KICAgcHJpdmF0ZSAkYXJyRGF0YSA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogSW5zdGFuY2UtQnVmZmVyDQogICAgKg0KICAgICogQHZhciBhcnJheQ0KICAgICovDQogICBwcml2YXRlIHN0YXRpYyAkaW5zdGFuY2VzID0gYXJyYXkoKTsNCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFNRTFJlcG9ydF9RdWVyeQ0KICAgICovDQogICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgew0KICAgICAgLy9ub3RoaWcgdG8gZG8NCiAgIH0NCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGFuIG5ldyBFbXB0eSBJbnN0YW5jZQ0KICAgICogQHJldHVybiBTUUxSZXBvcnRfUXVlcnkNCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRFbXB0eUluc3RhbmNlKCkgew0KICAgICAgcmV0dXJuIG5ldyBTUUxSZXBvcnRfUXVlcnkoKTsNCiAgIH0NCg0KDQogICAvKioNCiAgICAqIFJldHVybnMgYSBJbnN0YW5jZSwgYmVjYXVzZSBjb25zdHJ1Y3RvciBpc3QgcHJpdmF0ZQ0KICAgICoNCiAgICAqIEBwYXJhbSBJbnRlZ2VyICRpZA0KICAgICogQHJldHVybiBTUUxSZXBvcnRfUXVlcnkNCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YW5jZUJ5SWQoJGlkKSB7DQoNCiAgICAgIGlmICghaXNfbnVtZXJpYygkaWQpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJJbnZhbGlkIGlkICciLiRpZC4iJyBmb3IgJyIuX19DTEFTU19fLiInIik7DQogICAgICB9DQoNCiAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkaWQsIHNlbGY6OiRpbnN0YW5jZXMpKSB7DQogICAgICAgICAkaW5zdGFuY2VzID0gc2VsZjo6Z2V0SW5zdGFuY2VzTGlzdCgkaWQpOw0KICAgICAgICAgaWYgKGNvdW50KCRpbnN0YW5jZXMpID09IDEpIHsNCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJGlkXSA9ICRpbnN0YW5jZXNbMF07DQogICAgICAgICB9DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInF1ZXJpZXMtcXVlcmllc19pZC1ub3QtZm91bmR8JGlkIik7DQogICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gc2VsZjo6JGluc3RhbmNlc1skaWRdOw0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogUmV0dXJucyBhIGFycmF5IG9mIEluc3RhbmNlcw0KICAgICoNCiAgICAqIEBwYXJhbSAkaWQgSWYgZ2l2ZW4sIHRoZXJlIHdpbGwgYmUgc2V0IGEgZmlsdGVyIG9uIGl0DQogICAgKiBAcGFyYW0gJGFkZGl0aXZlIElmIGdpdmVuLCBpdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBxdWVyeSAoZS5nLiBhIFdIRVJFIGNsYXVzZSkNCiAgICAqIEByZXR1cm4gQXJyYXkgb2YgU1FMUmVwb3J0X1F1ZXJ5DQogICAgKi8NCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFuY2VzTGlzdCgkaWQgPSAwLCAkYWRkaXRpdmUgPSAnJykgew0KICAgICAgLy9idWlsZCBzcWwtcXVlcnkNCiAgICAgICRxdWVyeSA9ICJTRUxFQ1QgKg0KICAgICAgICAgICAgICAgICAgRlJPTSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFUy4iICI7DQogICAgICAvL2NoZWNrIGZvciBpZA0KICAgICAgaWYgKCRpZCA+IDApIHsNCiAgICAgICAgICRxdWVyeSAuPSAiIFdIRVJFIHF1ZXJpZXNfaWQgPSAiLihpbnQpJGlkOw0KICAgICAgfQ0KICAgICAgZWxzZSB7DQogICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSAxICI7DQogICAgICB9DQogICAgICAvL2NoZWNrIGFkZGl0aXZlDQogICAgICBpZiAoc3RybGVuKCRhZGRpdGl2ZSkgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gJyBBTkQgJyAuICRhZGRpdGl2ZTsNCiAgICAgIH0NCg0KICAgICAgJGRicmVzdWx0ID0gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCktPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICRyZXRBcnJheSA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAgICAgIC8vY3JlYXRlIGluc3RhbmNlIGlmIG5vdCBkb25lDQogICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJHJvd1sncXVlcmllc19pZCddLCBzZWxmOjokaW5zdGFuY2VzKSkgew0KICAgICAgICAgICAgJG15SW5zdGFuY2UgPSBzZWxmOjpnZXRFbXB0eUluc3RhbmNlKCk7DQogICAgICAgICAgICAkbXlJbnN0YW5jZS0+YmluZCgkcm93KTsNCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJHJvd1sncXVlcmllc19pZCddXSA9ICRteUluc3RhbmNlOw0KICAgICAgICAgfQ0KICAgICAgICAgLy9hbmQgYWRkIHRvIHRoZSByZXRBcnJheQ0KICAgICAgICAgJHJldEFycmF5W10gPSBzZWxmOjokaW5zdGFuY2VzWyRyb3dbJ3F1ZXJpZXNfaWQnXV07DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkcmV0QXJyYXk7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBMb2FkcyB0aGUgZGF0YSBhY2NvcmRpbmcgdG8gdGhlIERCDQogICAgKg0KICAgICogIEByZXR1cm4gQm9vbGVhbg0KICAgICovDQogICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmluZCgkZGJEYXRhKSB7DQogICAgICBpZiAoIWlzX2FycmF5KCRkYkRhdGEpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdQYXJhbWV0ZXIgb2YgJy5fX01FVEhPRF9fLicgaGFzIHRvIGJlIGFuIGFycmF5IScpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+aW50SWQgICAgICAgPSAkZGJEYXRhWydxdWVyaWVzX2lkJ107DQogICAgICAkdGhpcy0+aW50UmVwb3J0SWQgPSAkZGJEYXRhWydyZXBvcnRzX2lkJ107DQogICAgICAkdGhpcy0+c3RyUXVlcnkgICAgPSAkZGJEYXRhWydxdWVyeSddOw0KDQogICAgICAvL2xvYWQgZmlsdGVycw0KICAgICAgJHRoaXMtPmdldEZpbHRlcnMoKTsNCiAgIH0NCg0KDQogICAvKioNCiAgICAqIFNhdmVzIHZhbGV1cyB0byBEQg0KICAgICoNCiAgICAqICBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIHNhdmVUb0RCKCkgew0KDQogICAgICAkb2JqQURPQ29ubmVjdGlvbiA9ICR0aGlzLT5nZXREYXRhYmFzZUNvbm5lY3Rpb24oKTsNCg0KICAgICAgLy9pbnNlcnQNCiAgICAgIGlmICgkdGhpcy0+aW50SWQgPT09IG51bGwpIHsNCiAgICAgICAgICRuZXdpZCA9ICRvYmpBRE9Db25uZWN0aW9uLT5HZW5JRChUQUJMRV9NT0RVTEVfU1FMUkVQT1JUX1FVRVJJRVMuIl9zZXEiKTsNCiAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFUy4nDQogICAgICAgICAgICAgICAgICAgICAgKHF1ZXJpZXNfaWQsDQogICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydHNfaWQsDQogICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5KQ0KICAgICAgICAgICAgICAgICAgIFZBTFVFUw0KICAgICAgICAgICAgICAgICAgICAgICg/LD8sPyknOw0KICAgICAgICAgJHJlcyA9ICRvYmpBRE9Db25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmludFJlcG9ydElkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0clF1ZXJ5KSk7DQogICAgICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICAgICB9DQogICAgICAgICAkdGhpcy0+aW50SWQgPSAkbmV3aWQ7DQogICAgICB9DQogICAgICAvL3VwZGF0ZQ0KICAgICAgZWxzZSB7DQogICAgICAgICAkcXVlcnkgPSAiVVBEQVRFICIuVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9RVUVSSUVTLiIgU0VUDQogICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gPw0KICAgICAgICAgICAgICAgICBXSEVSRSBxdWVyaWVzX2lkID0gIi4kdGhpcy0+aW50SWQ7DQogICAgICAgICAkcmVzID0gJG9iakFET0Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdGhpcy0+c3RyUXVlcnkpKTsNCiAgICAgICAgIGlmICgkcmVzID09PSBmYWxzZSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbiggImRhdGFiYXNlLWVycm9yfCIuJG9iakFET0Nvbm5lY3Rpb24tPkVycm9yTXNnKCkgKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogRGVsZXRlcyBhbGwgdmFsdWVzIGZyb20gdGhlIGRhdGFiYXNlDQogICAgKg0KICAgICogQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKSB7DQogICAgICAkb2JqQURPQ29ubmVjdGlvbiA9ICR0aGlzLT5nZXREYXRhYmFzZUNvbm5lY3Rpb24oKTsNCiAgICAgICRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFUy4iDQogICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcXVlcmllc19pZCA9ICIuJHRoaXMtPmludElkOw0KICAgICAgJHJlcyA9ICRvYmpBRE9Db25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICB9DQogICB9DQoNCg0KDQovKiAqICogKiAqICogKiAqICogKiAqICogKiAqIEVORCBPRiBFWFBPUlRBQkxFcyAqICogKiAqICogKiAqICogKiAqICogKiAqICovDQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBpZA0KICAgICoNCiAgICAqIEByZXR1cm4gSW50ZWdlcg0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWQoKSB7DQogICAgICByZXR1cm4gKGludCkkdGhpcy0+aW50SWQ7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBHZXR0ZXIgZm9yIHJlcG9ydHNfaWQNCiAgICAqDQogICAgKiBAcmV0dXJuIEludGVnZXINCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldFJlcG9ydHNJZCgpIHsNCiAgICAgIHJldHVybiAoaW50KSR0aGlzLT5pbnRSZXBvcnRJZDsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIHJlcG9ydHNfaWQNCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIEludGVnZXINCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIHNldFJlcG9ydHNJZCgkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3F1ZXJpZXMtcmVwb3J0c19pZC1lbXB0eScpOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWlzX251bGwoJHZhbHVlKSAmJiAhaXNfbnVtZXJpYygkdmFsdWUpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdxdWVyaWVzLXJlcG9ydHNfaWQtaW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+aW50UmVwb3J0SWQgPSAkdmFsdWU7DQogICB9DQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBxdWVyeQ0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+c3RyUXVlcnk7DQogICB9DQoNCiAgIC8qKg0KICAgICogU2V0dGVyIGZvciBxdWVyeQ0KICAgICoNCiAgICAqIEBwYXJhbSAkdmFsdWUgU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzZXRRdWVyeSgkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgICR2YWx1ZSA9IG51bGw7DQogICAgICB9DQoNCiAgICAgIGlmICghaXNfbnVsbCgkdmFsdWUpICYmICFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigncXVlcmllcy1xdWVyeS1pbnZhbGlkJyk7DQogICAgICB9DQoNCiAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSA8IDUpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3F1ZXJpZXMtcXVlcnktaW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+c3RyUXVlcnkgPSAkdmFsdWU7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBtYWluIGZ1bmN0aW9uLg0KICAgICogZXhlY3V0ZXMgdGhlIHF1ZXJ5IGFuZCBmaWxscyB0aGUgZGF0YSBhcnJheQ0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gcnVuKCkgew0KDQogICAgICAvL3J1biBvbmx5IGlmIG5vdCBhbHJlYWR5IGRvbmUNCiAgICAgIGlmIChpc19udWxsKCR0aGlzLT5hcnJEYXRhKSkgew0KICAgICAgICAgJHRoaXMtPmFyckRhdGEgPSBhcnJheSgpOw0KDQogICAgICAgICAkc3RyRmlsdGVyID0gJyAxICc7DQogICAgICAgICBmb3JlYWNoKCR0aGlzLT5hcnJGaWx0ZXIgYXMgJG9iakZpbHRlcikgew0KICAgICAgICAgICAgJHN0ckZpbHRlciAuPSAkb2JqRmlsdGVyLT5nZXRTUUwoKTsNCiAgICAgICAgIH0NCiAgICAgICAgICRzdHJRdWVyeSA9IHN0cl9yZXBsYWNlKCcjRklMVEVSIycsICRzdHJGaWx0ZXIsICR0aGlzLT5zdHJRdWVyeSk7DQoNCiAgICAgICAgICRvYmpBRE9Db25uZWN0aW9uID0gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQogICAgICAgICAkZGJyZXN1bHQgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkc3RyUXVlcnkpOw0KICAgICAgICAgaWYgKCEkZGJyZXN1bHQpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICAgICB9DQogICAgICAgICB3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICAgICAgICAgJHRoaXMtPmFyckRhdGFbXSA9ICRyb3c7DQogICAgICAgICB9DQoNCiAgICAgIH0NCg0KICAgfQ0KDQogICAvKioNCiAgICAqIGdldGVyIGZvciBmaWx0ZXJzDQogICAgKg0KICAgICogQHJldHVybiBBcnJheQ0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsdGVycygpIHsNCg0KICAgICAgaWYgKCR0aGlzLT5hcnJGaWx0ZXIgPT09IG51bGwpIHsNCiAgICAgICAgIC8vYnVpbGQgc3FsLXF1ZXJ5DQogICAgICAgICAkcXVlcnkgPSAiU0VMRUNUIEdST1VQX0NPTkNBVChmaWx0ZXJzX2lkKSBBUyBpZHMNCiAgICAgICAgICAgICAgICAgICAgIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX1FVRVJJRVNfRklMVEVSUy4iDQogICAgICAgICAgICAgICAgICAgIFdIRVJFIHF1ZXJpZXNfaWQgPSAiLihpbnQpJHRoaXMtPmdldElkKCkuIg0KICAgICAgICAgICAgICAgICBHUk9VUCBCWSBxdWVyaWVzX2lkIjsNCiAgICAgICAgICRkYnJlc3VsdCA9IHNlbGY6OmdldERhdGFiYXNlQ29ubmVjdGlvbigpLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICAgICAkYXJySURzID0gYXJyYXkoLTEpOw0KICAgICAgICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7DQogICAgICAgICAgICAkYXJySURzID0gZXhwbG9kZSgnLCcsICRyb3dbJ2lkcyddKTsNCiAgICAgICAgIH0NCiAgICAgICAgICR0aGlzLT5hcnJGaWx0ZXIgPSBTUUxSZXBvcnRfRmlsdGVyOjpnZXRJbnN0YW5jZXNMaXN0KDAsICdmaWx0ZXJzX2lkIElOICgnLmltcGxvZGUoJywnLCAkYXJySURzKS4nKScpOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gJHRoaXMtPmFyckZpbHRlcjsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBhc3NpZ24gZmlsdGVycw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gYXNzaWduRmlsc3RlcigkYXJySURzKSB7DQogICAgICAkb2JqQURPQ29ubmVjdGlvbiA9ICR0aGlzLT5nZXREYXRhYmFzZUNvbm5lY3Rpb24oKTsNCg0KICAgICAgLy9kZWxldGUgb2xkIGZpbHRlcnMNCiAgICAgICRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUVVFUklFU19GSUxURVJTLiINCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBxdWVyaWVzX2lkID0gIi4kdGhpcy0+aW50SWQ7DQogICAgICAkcmVzID0gJG9iakFET0Nvbm5lY3Rpb24tPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgIGlmICgkcmVzID09PSBmYWxzZSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbiggImRhdGFiYXNlLWVycm9yfCIuJG9iakFET0Nvbm5lY3Rpb24tPkVycm9yTXNnKCkgKTsNCiAgICAgIH0NCg0KICAgICAgLy9zZXQgbmV3IGZpbHRlcnMNCiAgICAgIGlmIChpc19hcnJheSgkYXJySURzKSAmJiBjb3VudCgkYXJySURzKSA+MCkgew0KICAgICAgICAgZm9yZWFjaCgkYXJySURzIGFzICRpbnRJZCkgew0KICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9RVUVSSUVTX0ZJTFRFUlMuJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChxdWVyaWVzX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzX2lkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIFZBTFVFUw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICg/LD8pJzsNCiAgICAgICAgICAgICRyZXMgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0aGlzLT5pbnRJZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnRJZCkpOw0KICAgICAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAvL3JlbG9hZCBidWZmZXINCiAgICAgICR0aGlzLT5hcnJGaWx0ZXIgPSBudWxsOw0KICAgICAgJHRoaXMtPmdldEZpbHRlcnMoKTsNCg0KICAgfQ0KDQogICAvKioNCiAgICAqIGdldHRlciBmb3IgSFRNTCBvdXRwdXQgb2YgdGhlIHF1ZXJ5IHJlc3VsdA0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIVE1MKCkgew0KDQogICAgICBpZiAoZW1wdHkoJHRoaXMtPmFyckRhdGEpKSB7DQogICAgICAgICBnbG9iYWwgJGdDbXM7DQogICAgICAgICAkb2JqTW9kdWxlID0gJGdDbXMtPkdldE1vZHVsZUluc3RhbmNlKCdTUUxSZXBvcnQnKTsNCiAgICAgICAgIHJldHVybiAnPHA+PGk+Jy4kb2JqTW9kdWxlLT5MYW5nKCduby1kYXRhLWZvdW5kJykuJzwvaT48L3A+Jy5QSFBfRU9MOw0KICAgICAgfQ0KDQogICAgICAkc3RySFRNTCA9ICc8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJkaXNwbGF5IiBpZD0idHQtcXVlcnktJy4kdGhpcy0+Z2V0SWQoKS4nIj4nLlBIUF9FT0w7DQoNCiAgICAgIC8vaGVhZGxpbmUNCiAgICAgICRhcnJIZWFkbGluZSA9IGFycmF5X2tleXMoY3VycmVudCgkdGhpcy0+YXJyRGF0YSkpOw0KICAgICAgJHN0ckhUTUwgLj0gJyAgIDx0aGVhZD4nLlBIUF9FT0w7DQogICAgICAkc3RySFRNTCAuPSAnICAgPHRyPicuUEhQX0VPTDsNCiAgICAgIGZvcmVhY2goJGFyckhlYWRsaW5lIGFzICRuYW1lKSB7DQogICAgICAgICAkc3RySFRNTCAuPSAnICAgICAgPHRoPicuJG5hbWUuJzwvdGg+Jy5QSFBfRU9MOw0KICAgICAgfQ0KICAgICAgJHN0ckhUTUwgLj0gJyAgIDwvdHI+Jy5QSFBfRU9MOw0KICAgICAgJHN0ckhUTUwgLj0gJyAgIDwvdGhlYWQ+Jy5QSFBfRU9MOw0KDQogICAgICAvL2RhdGEgcm93cw0KICAgICAgJHN0ckhUTUwgLj0gJyAgIDx0Ym9keT4nLlBIUF9FT0w7DQogICAgICAkaVJvd0NvdW50ID0gMDsNCiAgICAgIGZvcmVhY2goJHRoaXMtPmFyckRhdGEgYXMgJHJvdykgew0KICAgICAgICAgJHN0ckhUTUwgLj0gJyAgIDx0ciBjbGFzcz0idHJfJy4oKCRpUm93Q291bnQlMikrMSkuJyI+Jy5QSFBfRU9MOw0KICAgICAgICAgZm9yZWFjaCgkcm93IGFzICR2YWx1ZSkgew0KICAgICAgICAgICAgJHN0ckhUTUwgLj0gJyAgICAgIDx0ZD4nLiR2YWx1ZS4nPC90ZD4nLlBIUF9FT0w7DQogICAgICAgICB9DQogICAgICAgICAkaVJvd0NvdW50Kys7DQogICAgICAgICAkc3RySFRNTCAuPSAnICAgPC90cj4nLlBIUF9FT0w7DQogICAgICB9DQogICAgICAkc3RySFRNTCAuPSAnICAgPC90Ym9keT4nLlBIUF9FT0w7DQoNCiAgICAgICRzdHJIVE1MIC49ICc8L3RhYmxlPicuUEhQX0VPTDsNCg0KICAgICAgJHN0ckZpbHRlciA9ICcnOw0KICAgICAgZm9yZWFjaCgkdGhpcy0+YXJyRmlsdGVyIGFzICRvYmpGaWx0ZXIpIHsNCiAgICAgICAgICRzdHJGaWx0ZXIgLj0gJzxiciAvPicuJG9iakZpbHRlci0+Z2V0TGVnZW5kVmFsdWVzKCk7DQogICAgICB9DQogICAgICBpZiAoIWVtcHR5KCRzdHJGaWx0ZXIpKSB7DQogICAgICAgICAkc3RySFRNTCAuPSAnPGRpdiBjbGVhcj0iYm90aCI+PCEtLSAtLT48L2Rpdj48cCBjbGFzcz0iZmlsdGVyIj48Yj5GaWx0ZXI8L2I+Jy4kc3RyRmlsdGVyLic8L3A+Jy5QSFBfRU9MOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gJHN0ckhUTUw7DQogICB9DQoNCiAgIC8qKg0KICAgICogZ2V0dGVyIGZvciBDU1Ygb3V0cHV0IG9mIHRoZSBxdWVyeSByZXN1bHQNCiAgICAqDQogICAgKiBAcGFyYW0gU3RyaW5nICRzdHJHbHVlIChvcHRpb25hbCkNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDU1YoJHN0ckdsdWU9IjsiKSB7DQoNCiAgICAgIGlmIChlbXB0eSgkdGhpcy0+YXJyRGF0YSkpIHsNCiAgICAgICAgIGdsb2JhbCAkZ0NtczsNCiAgICAgICAgICRvYmpNb2R1bGUgPSAkZ0Ntcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NRTFJlcG9ydCcpOw0KICAgICAgICAgcmV0dXJuIFBIUF9FT0wuJG9iak1vZHVsZS0+TGFuZygnbm8tZGF0YS1mb3VuZCcpLlBIUF9FT0w7DQogICAgICB9DQoNCiAgICAgIC8vaGVhZGxpbmUNCiAgICAgICRhcnJIZWFkbGluZSA9IGFycmF5X2tleXMoY3VycmVudCgkdGhpcy0+YXJyRGF0YSkpOw0KICAgICAgJHN0ckNTViA9IGltcGxvZGUoJHN0ckdsdWUsICRhcnJIZWFkbGluZSkuUEhQX0VPTDsNCg0KICAgICAgLy9kYXRhIHJvd3MNCiAgICAgIGZvcmVhY2goJHRoaXMtPmFyckRhdGEgYXMgJHJvdykgew0KICAgICAgICAgJHN0ckNTViAuPSBpbXBsb2RlKCRzdHJHbHVlLCAkcm93KS5QSFBfRU9MOw0KICAgICAgfQ0KDQogICAgICAkc3RyQ1NWIC49IFBIUF9FT0w7DQoNCiAgICAgICRzdHJGaWx0ZXIgPSAnJzsNCiAgICAgIGZvcmVhY2goJHRoaXMtPmFyckZpbHRlciBhcyAkb2JqRmlsdGVyKSB7DQogICAgICAgICAkc3RyRmlsdGVyIC49IFBIUF9FT0wuJG9iakZpbHRlci0+Z2V0TGVnZW5kVmFsdWVzKCk7DQogICAgICB9DQogICAgICBpZiAoIWVtcHR5KCRzdHJGaWx0ZXIpKSB7DQogICAgICAgICAkc3RyQ1NWIC49ICdGaWx0ZXI6Jy4kc3RyRmlsdGVyLlBIUF9FT0w7DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkc3RyQ1NWOw0KICAgfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/classes/SQLReport_Report.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpkZWZpbmUoJ1RBQkxFX01PRFVMRV9TUUxSRVBPUlRfUkVQT1JUUycsICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zcWxyZXBvcnRfcmVwb3J0cycpOw0KDQpjbGFzcyBTUUxSZXBvcnRfUmVwb3J0IGV4dGVuZHMgU1FMUmVwb3J0X0V4cG9ydGFibGUgew0KDQogICAvKioNCiAgICAqIEB2YXIgSW50ZWdlcg0KICAgICovDQogICBwcml2YXRlICRpbnRJZCA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHZhciBTdHJpbmcNCiAgICAqLw0KICAgcHJpdmF0ZSAkc3RyTmFtZSA9IG51bGw7DQoNCiAgIC8qKg0KICAgICogQHZhciBTdHJpbmcNCiAgICAqLw0KICAgcHJpdmF0ZSAkc3RyRGVzY3JpcHRpb24gPSBudWxsOw0KDQogICAvKioNCiAgICAqIEB2YXIgSW50ZWdlcg0KICAgICovDQogICBwcml2YXRlICRpbnRDYXRlZ29yeUlkID0gbnVsbDsNCg0KICAgLyoqDQogICAgKiBAdmFyIEFycmF5DQogICAgKi8NCiAgIHByaXZhdGUgJGFyclF1ZXJpZXMgPSBhcnJheSgpOw0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU1FMUmVwb3J0X1JlcG9ydA0KICAgICovDQogICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgew0KICAgICAgLy9ub3RoaWcgdG8gZG8NCiAgIH0NCg0KICAgLyoqDQogICAgKiBJbnN0YW5jZWJ1ZmZlcg0KICAgICoNCiAgICAqIEB2YXIgYXJyYXkNCiAgICAqLw0KICAgcHJpdmF0ZSBzdGF0aWMgJGluc3RhbmNlcyA9IGFycmF5KCk7DQoNCg0KICAgLyoqDQogICAgKiBSZXR1cm5zIGFuIG5ldyBFbXB0eSBJbnN0YW5jZQ0KICAgICogQHJldHVybiBTUUxSZXBvcnRfUmVwb3J0DQogICAgKi8NCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RW1wdHlJbnN0YW5jZSgpIHsNCiAgICAgIHJldHVybiBuZXcgU1FMUmVwb3J0X1JlcG9ydCgpOw0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogUmV0dXJucyBhIEluc3RhbmNlLCBiZWNhdXNlIGNvbnN0cnVjdG9yIGlzdCBwcml2YXRlDQogICAgKg0KICAgICogQHBhcmFtIEludGVnZXIgJGlkDQogICAgKiBAcmV0dXJuIFNRTFJlcG9ydF9SZXBvcnQNCiAgICAqLw0KICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YW5jZUJ5SWQoJGlkKSB7DQoNCiAgICAgIGlmICghaXNfbnVtZXJpYygkaWQpKSB7DQogICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJJbnZhbGlkIGlkICciLiRpZC4iJyBmb3IgJyIuX19DTEFTU19fLiInIik7DQogICAgICB9DQoNCiAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkaWQsIHNlbGY6OiRpbnN0YW5jZXMpKSB7DQogICAgICAgICAkaW5zdGFuY2VzID0gc2VsZjo6Z2V0SW5zdGFuY2VzTGlzdCgkaWQpOw0KICAgICAgICAgaWYgKGNvdW50KCRpbnN0YW5jZXMpID09IDEpIHsNCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJGlkXSA9ICRpbnN0YW5jZXNbMF07DQogICAgICAgICB9DQogICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oInJlcG9ydHMtcmVwb3J0c19pZC1ub3QtZm91bmR8JGlkIik7DQogICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gc2VsZjo6JGluc3RhbmNlc1skaWRdOw0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogUmV0dXJucyBhIGFycmF5IG9mIEluc3RhbmNlcw0KICAgICoNCiAgICAqIEBwYXJhbSAkaWQgSWYgZ2l2ZW4sIHRoZXJlIHdpbGwgYmUgc2V0IGEgZmlsdGVyIG9uIGl0DQogICAgKiBAcGFyYW0gJGFkZGl0aXZlIElmIGdpdmVuLCBpdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBxdWVyeSAoZS5nLiBhIFdIRVJFIGNsYXVzZSkNCiAgICAqIEByZXR1cm4gQXJyYXkgb2YgU1FMUmVwb3J0X1JlcG9ydA0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlc0xpc3QoJGlkID0gMCwgJGFkZGl0aXZlID0gJycpIHsNCiAgICAgIC8vYnVpbGQgc3FsLXF1ZXJ5DQogICAgICAkcXVlcnkgPSAiU0VMRUNUICoNCiAgICAgICAgICAgICAgICAgIEZST00gIi5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX1JFUE9SVFMuIiAiOw0KICAgICAgLy9jaGVjayBmb3IgaWQNCiAgICAgIGlmICgkaWQgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gIiBXSEVSRSByZXBvcnRzX2lkID0gIi4oaW50KSRpZDsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICAgJHF1ZXJ5IC49ICIgV0hFUkUgMSI7DQogICAgICB9DQogICAgICAvL2NoZWNrIGFkZGl0aXZlDQogICAgICBpZiAoc3RybGVuKCRhZGRpdGl2ZSkgPiAwKSB7DQogICAgICAgICAkcXVlcnkgLj0gJyBBTkQgJyAuICRhZGRpdGl2ZTsNCiAgICAgIH0NCg0KICAgICAgJGRicmVzdWx0ID0gc2VsZjo6Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCktPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICRyZXRBcnJheSA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsNCiAgICAgICAgIC8vY3JlYXRlIGluc3RhbmNlIGlmIG5vdCBkb25lDQogICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJHJvd1sncmVwb3J0c19pZCddLCBzZWxmOjokaW5zdGFuY2VzKSkgew0KICAgICAgICAgICAgJG15SW5zdGFuY2UgPSBzZWxmOjpnZXRFbXB0eUluc3RhbmNlKCk7DQogICAgICAgICAgICAkbXlJbnN0YW5jZS0+YmluZCgkcm93KTsNCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZXNbJHJvd1sncmVwb3J0c19pZCddXSA9ICRteUluc3RhbmNlOw0KICAgICAgICAgfQ0KICAgICAgICAgLy9hbmQgYWRkIHRvIHRoZSByZXRBcnJheQ0KICAgICAgICAgJHJldEFycmF5W10gPSBzZWxmOjokaW5zdGFuY2VzWyRyb3dbJ3JlcG9ydHNfaWQnXV07DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkcmV0QXJyYXk7DQogICB9DQoNCg0KICAgLyoqDQogICAgKiBTYXZlcyB2YWxldXMgdG8gREINCiAgICAqDQogICAgKiAgQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlVG9EQigpIHsNCg0KICAgICAgJG9iakFET0Nvbm5lY3Rpb24gPSAkdGhpcy0+Z2V0RGF0YWJhc2VDb25uZWN0aW9uKCk7DQoNCiAgICAgIC8vaW5zZXJ0DQogICAgICBpZiAoJHRoaXMtPmludElkID09PSBudWxsKSB7DQogICAgICAgICAkbmV3aWQgPSAkb2JqQURPQ29ubmVjdGlvbi0+R2VuSUQoVEFCTEVfTU9EVUxFX1NRTFJFUE9SVF9SRVBPUlRTLiJfc2VxIik7DQogICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5UQUJMRV9NT0RVTEVfU1FMUkVQT1JUX1JFUE9SVFMuJw0KICAgICAgICAgICAgICAgICAgICAgIChyZXBvcnRzX2lkLA0KICAgICAgICAgICAgICAgICAgICAgICBuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcmllc19pZCkNCiAgICAgICAgICAgICAgICAgICBWQUxVRVMNCiAgICAgICAgICAgICAgICAgICAgICAoPyw/LD8sPyknOw0KICAgICAgICAgJHJlcyA9ICRvYmpBRE9Db25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld2lkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0ck5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c3RyRGVzY3JpcHRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW50Q2F0ZWdvcnlJZCkpOw0KICAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCAiZGF0YWJhc2UtZXJyb3J8Ii4kb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSApOw0KICAgICAgICAgfQ0KICAgICAgICAgJHRoaXMtPmludElkID0gJG5ld2lkOw0KICAgICAgfQ0KICAgICAgLy91cGRhdGUNCiAgICAgIGVsc2Ugew0KICAgICAgICAgJHF1ZXJ5ID0gIlVQREFURSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUkVQT1JUUy4iIFNFVA0KICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gPywNCiAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSA/LA0KICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzX2lkID0gPw0KICAgICAgICAgICAgICAgICBXSEVSRSByZXBvcnRzX2lkID0gIi4oaW50KSR0aGlzLT5pbnRJZDsNCiAgICAgICAgICRyZXMgPSAkb2JqQURPQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0aGlzLT5zdHJOYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnN0ckRlc2NyaXB0aW9uLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmludENhdGVnb3J5SWQpKTsNCiAgICAgICAgIGlmICgkcmVzID09PSBmYWxzZSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbiggImRhdGFiYXNlLWVycm9yfCIuJG9iakFET0Nvbm5lY3Rpb24tPkVycm9yTXNnKCkgKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgLy9zYXZlIHF1ZXJpZXMgYWxzbw0KICAgICAgZm9yZWFjaCgkdGhpcy0+YXJyUXVlcmllcyBhcyAkb2JqUXVlcnkpIHsNCiAgICAgICAgIGlmICgkb2JqUXVlcnktPmdldFJlcG9ydHNJZCgpID09IDApIHsNCiAgICAgICAgICAgICRvYmpRdWVyeS0+c2V0UmVwb3J0c0lkKCR0aGlzLT5pbnRJZCk7DQogICAgICAgICB9DQogICAgICAgICAkb2JqUXVlcnktPnNhdmVUb0RCKCk7DQogICAgICB9DQoNCiAgIH0NCg0KDQogICAvKioNCiAgICAqIExvYWRzIHRoZSBkYXRhIGFjY29yZGluZyB0byB0aGUgREINCiAgICAqDQogICAgKiBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJpbmQoJGRiRGF0YSkgew0KICAgICAgaWYgKCFpc19hcnJheSgkZGJEYXRhKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignUGFyYW1ldGVyIG9mICcuX19NRVRIT0RfXy4nIGhhcyB0byBiZSBhbiBhcnJheSEnKTsNCiAgICAgIH0NCg0KICAgICAgJHRoaXMtPmludElkICAgICAgICAgID0gJGRiRGF0YVsncmVwb3J0c19pZCddOw0KICAgICAgJHRoaXMtPnN0ck5hbWUgICAgICAgID0gJGRiRGF0YVsnbmFtZSddOw0KICAgICAgJHRoaXMtPnN0ckRlc2NyaXB0aW9uID0gJGRiRGF0YVsnZGVzY3JpcHRpb24nXTsNCiAgICAgICR0aGlzLT5pbnRDYXRlZ29yeUlkICA9ICRkYkRhdGFbJ2NhdGVnb3JpZXNfaWQnXTsNCg0KICAgICAgJHRoaXMtPmFyclF1ZXJpZXMgICAgID0gU1FMUmVwb3J0X1F1ZXJ5OjpnZXRJbnN0YW5jZXNMaXN0KDAsICJyZXBvcnRzX2lkID0gIi4kdGhpcy0+aW50SWQpOw0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogRGVsZXRlcyBhbGwgdmFsdWVzIGZyb20gdGhlIGRhdGFiYXNlDQogICAgKg0KICAgICogQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKSB7DQoNCiAgICAgIGZvcmVhY2goJHRoaXMtPmFyclF1ZXJpZXMgYXMgJG9ialF1ZXJ5KSB7DQogICAgICAgICAkb2JqUXVlcnktPmRlbGV0ZSgpOw0KICAgICAgfQ0KDQogICAgICAkb2JqQURPQ29ubmVjdGlvbiA9ICR0aGlzLT5nZXREYXRhYmFzZUNvbm5lY3Rpb24oKTsNCiAgICAgICRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLlRBQkxFX01PRFVMRV9TUUxSRVBPUlRfUkVQT1JUUy4iDQogICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcmVwb3J0c19pZCA9ICIuJHRoaXMtPmludElkOw0KICAgICAgJHJlcyA9ICRvYmpBRE9Db25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICBpZiAoJHJlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oICJkYXRhYmFzZS1lcnJvcnwiLiRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpICk7DQogICAgICB9DQoNCiAgICAgIHJldHVybiB0cnVlOw0KICAgfQ0KDQoNCi8qICogKiAqICogKiAqICogKiAqICogKiAqICogRU5EIE9GIEVYUE9SVEFCTEVzICogKiAqICogKiAqICogKiAqICogKiAqICogKi8NCg0KDQogICAvKioNCiAgICAqIGdldHRlciBmb3IgaWQNCiAgICAqDQogICAgKiBAcmV0dXJuIEludGVnZXINCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldElkKCkgew0KICAgICAgcmV0dXJuIChpbnQpJHRoaXMtPmludElkOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEdldHRlciBmb3IgbmFtZQ0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkgew0KICAgICAgcmV0dXJuICR0aGlzLT5zdHJOYW1lOw0KICAgfQ0KDQogICAvKioNCiAgICAqIHJldHVybnMgdGhlIG5hbWUgd2l0aG91dCBzcGVjaWFsIGNoYXJzDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWVFbmNvZGVkKCkgew0KICAgICAgJHN0ck5hbWUgPSAkdGhpcy0+c3RyTmFtZTsNCiAgICAgIC8vcmVwbGFjZSBzcGVjaWFsIGNoYXJzDQogICAgICAkYXJyU2VhcmNoICA9IGFycmF5KCd+w6R+JywnfsO2ficsJ37DvH4nLCd+w4R+JywnfsOWficsJ37DnH4nLCd+IH4nKTsNCiAgICAgICRhcnJSZXBsYWNlID0gYXJyYXkoJ2FlJywnb2UnLCd1ZScsJ0FlJywnT2UnLCdVZScsJ18nKTsNCiAgICAgICRzdHJOYW1lID0gcHJlZ19yZXBsYWNlKCRhcnJTZWFyY2gsICRhcnJSZXBsYWNlLCAkc3RyTmFtZSk7DQogICAgICAvL3JlbW92ZSBhbGwgdW53YW50ZWQgY2hhcnMNCiAgICAgICRzdHJOYW1lID0gcHJlZ19yZXBsYWNlKCJ+W15hLXpBLVowLTlfXSp+IiwgIiIsICRzdHJOYW1lKTsNCg0KICAgICAgcmV0dXJuICRzdHJOYW1lOw0KICAgfQ0KDQogICAvKioNCiAgICAqIFNldHRlciBmb3IgbmFtZQ0KICAgICoNCiAgICAqIEBwYXJhbSAkdmFsdWUgU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzZXROYW1lKCR2YWx1ZSkgew0KDQogICAgICBpZiAoZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigncmVwb3J0cy1uYW1lLWludmFsaWQnKTsNCiAgICAgIH0NCg0KICAgICAgJHRoaXMtPnN0ck5hbWUgPSAkdmFsdWU7DQogICB9DQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBkZXNjcmlwdGlvbg0KICAgICoNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbigpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+c3RyRGVzY3JpcHRpb247DQogICB9DQoNCiAgIC8qKg0KICAgICogU2V0dGVyIGZvciBkZXNjcmlwdGlvbg0KICAgICoNCiAgICAqIEBwYXJhbSAkdmFsdWUgU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZXNjcmlwdGlvbigkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3JlcG9ydHMtZGVzY3JpcHRpb24taW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICBpZiAoIWlzX251bGwoJHZhbHVlKSAmJiAhaXNfc3RyaW5nKCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3JlcG9ydHMtZGVzY3JpcHRpb24taW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+c3RyRGVzY3JpcHRpb24gPSAkdmFsdWU7DQogICB9DQoNCiAgIC8qKg0KICAgICogR2V0dGVyIGZvciBjYXRlZ29yaWVzX2lkDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldENhdGVnb3J5SWQoKSB7DQogICAgICByZXR1cm4gKGludCkkdGhpcy0+aW50Q2F0ZWdvcnlJZDsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBTZXR0ZXIgZm9yIGNhdGVnb3JpZXNfaWQNCiAgICAqDQogICAgKiBAcGFyYW0gJHZhbHVlIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gc2V0Q2F0ZWdvcnlJZCgkdmFsdWUpIHsNCg0KICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgICR2YWx1ZSA9IG51bGw7DQogICAgICB9DQoNCiAgICAgIGlmICghaXNfbnVsbCgkdmFsdWUpICYmICFpc19udW1lcmljKCR2YWx1ZSkpIHsNCiAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3JlcG9ydHMtY2F0ZWdvcnktaW52YWxpZCcpOw0KICAgICAgfQ0KDQogICAgICAkdGhpcy0+aW50Q2F0ZWdvcnlJZCA9ICR2YWx1ZTsNCiAgIH0NCg0KDQoNCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPdXRwdXRGb3JtYXQoKSB7DQogICAgICAvL3RvZG8gICB0YWJsZXRvb2xzfGh0bWx0YWJsZQ0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogd3JhcHBlciBmdW5jdGlvbiB0byBydW4gYWxsIHF1ZXJpZXMNCiAgICAqLw0KICAgcHJpdmF0ZSBmdW5jdGlvbiBydW4oKSB7DQogICAgICBmb3JlYWNoKCR0aGlzLT5hcnJRdWVyaWVzIGFzICRvYmpRdWVyeSkgew0KICAgICAgICAgJG9ialF1ZXJ5LT5ydW4oKTsNCiAgICAgIH0NCiAgIH0NCg0KICAgLyoqDQogICAgKiBhZGQgcXVlcnkgdG8gcmVwb3J0DQogICAgKg0KICAgICogQHBhcmFtIFNRTFJlcG9ydF9RdWVyeSAkb2JqUXVlcnkNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGFkZFF1ZXJ5KFNRTFJlcG9ydF9RdWVyeSAkb2JqUXVlcnkpIHsNCiAgICAgICR0aGlzLT5hcnJRdWVyaWVzW10gPSAkb2JqUXVlcnk7DQogICB9DQoNCiAgIC8qKg0KICAgICogZ2V0dGVyIGZvciBxdWVpcmVzDQogICAgKg0KICAgICogQHJldHVybiBBcnJheQ0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gZ2V0UXVlcmllcygpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+YXJyUXVlcmllczsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBCdWlsZCByZXBvcnQgYXMgSFRNTCBjb2RlDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldEhUTUwoKSB7DQoNCiAgICAgICRzdHJIVE1MICA9ICc8ZGl2IGNsYXNzPSJzcWxyZXBvcnQiPicuUEhQX0VPTDsNCiAgICAgICRzdHJIVE1MIC49ICc8aDI+Jy4kdGhpcy0+c3RyTmFtZS4nPC9oMj4nLlBIUF9FT0w7DQogICAgICAkc3RySFRNTCAuPSAnPHA+Jy4kdGhpcy0+c3RyRGVzY3JpcHRpb24uJzwvcD4nLlBIUF9FT0w7DQogICAgICB0cnkgew0KICAgICAgICAgJHRoaXMtPnJ1bigpOw0KICAgICAgICAgZm9yZWFjaCgkdGhpcy0+YXJyUXVlcmllcyBhcyAkb2JqUXVlcnkpIHsNCiAgICAgICAgICAgICRzdHJIVE1MIC49ICRvYmpRdWVyeS0+Z2V0SFRNTCgpLlBIUF9FT0w7DQogICAgICAgICB9DQogICAgICB9DQogICAgICBjYXRjaChFeGNlcHRpb24gJGUpIHsNCiAgICAgICAgICRhcnJQYXJhbXMgPSBleHBsb2RlKCJ8IiwgJGUtPmdldE1lc3NhZ2UoKSk7DQogICAgICAgICAkc3RyTGFuZ0tleSA9IGFycmF5X3NoaWZ0KCRhcnJQYXJhbXMpOw0KICAgICAgICAgJHN0ck1lc3NhZ2UgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICRzdHJIVE1MIC49ICc8YnIgLz48YiBzdHlsZT0iY29sb3I6IHJlZDsiPkZBVEFMIEVSUk9SOiAnLiRzdHJNZXNzYWdlLic8L2I+PGJyIC8+PGJyIC8+JzsNCiAgICAgIH0NCiAgICAgICRzdHJIVE1MIC49ICc8L2Rpdj4nLlBIUF9FT0w7DQogICAgICByZXR1cm4gJHN0ckhUTUw7DQogICB9DQoNCiAgIC8qKg0KICAgICogQnVpbGQgcmVwb3J0IGFzIEhUTUwgY29kZQ0KICAgICoNCiAgICAqIEBwYXJhbSBTdHJpbmcgJHN0ckdsdWUNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDU1YoJHN0ckdsdWU9IjsiKSB7DQoNCg0KICAgICAgJHN0ckNTViAgPSAkdGhpcy0+c3RyTmFtZS5QSFBfRU9MOw0KICAgICAgJHN0ckNTViAuPSAkdGhpcy0+c3RyRGVzY3JpcHRpb24uUEhQX0VPTC5QSFBfRU9MOw0KICAgICAgdHJ5IHsNCiAgICAgICAgICR0aGlzLT5ydW4oKTsNCiAgICAgICAgIGZvcmVhY2goJHRoaXMtPmFyclF1ZXJpZXMgYXMgJG9ialF1ZXJ5KSB7DQogICAgICAgICAgICAkc3RyQ1NWIC49ICRvYmpRdWVyeS0+Z2V0Q1NWKCRzdHJHbHVlKS5QSFBfRU9MOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKSB7DQogICAgICAgICAkYXJyUGFyYW1zID0gZXhwbG9kZSgifCIsICRlLT5nZXRNZXNzYWdlKCkpOw0KICAgICAgICAgJHN0ckxhbmdLZXkgPSBhcnJheV9zaGlmdCgkYXJyUGFyYW1zKTsNCiAgICAgICAgICRzdHJNZXNzYWdlID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICAkc3RyQ1NWIC49IFBIUF9FT0wuUEhQX0VPTC4nRkFUQUwgRVJST1I6ICcuJHN0ck1lc3NhZ2UuUEhQX0VPTC5QSFBfRU9MLlBIUF9FT0w7DQogICAgICB9DQoNCiAgICAgIHJldHVybiAkc3RyQ1NWOw0KICAgfQ0KDQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/data.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCg0KLy9zdGFydCBDTVMNCiRDTVNfQURNSU5fUEFHRT0xOw0KJHBhdGggPSBkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKTsNCnJlcXVpcmVfb25jZSgkcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnaW5jbHVkZS5waHAnKTsNCg0KLy9pbmNsdWRlIGNsYXNzIGZpbGVzDQokYXJyQ2xhc3NGaWxlcyA9IGdsb2IoZGlybmFtZShfX0ZJTEVfXykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NsYXNzZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcqLnBocCcpOw0KZm9yZWFjaCgkYXJyQ2xhc3NGaWxlcyBhcyAkc3RyQ2xhc3NGaWxlKSB7DQogICByZXF1aXJlX29uY2UgJHN0ckNsYXNzRmlsZTsNCn0NCg0KLy9nZXQgbW9kdWxlIG9iamVjdA0KJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsNCiRtb2R1bGVzID0gJGdDbXMtPm1vZHVsZXM7DQokb2JqU1FMUmVwb3J0ID0gJG1vZHVsZXNbIlNRTFJlcG9ydCJdWydvYmplY3QnXTsNCg0KLy9jaGVjayBwZXJtaXNzaW9uDQppZiAoISRvYmpTUUxSZXBvcnQtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnKSkgew0KICAgZWNobyAkb2JqU1FMUmVwb3J0LT5nZXRNZXNzYWdlYm94KCdQZXJtaXNzaW9uIGRlbmllZCEnLCAnZXJyb3InKTsNCiAgIHJldHVybjsNCn0NCg0KaWYgKCFpc3NldCgkX0dFVFsnY0lkJ10pKSB7DQogICBkaWUoJ0ludmFsaWQgUmVxdWVzdCcpOw0KfQ0KJHN0ckNhY2hlSWQgPSAkX0dFVFsnY0lkJ107DQoNCmlmICghaXNzZXQoJF9TRVNTSU9OWydTUUxSZXBvcnQnXVsnY2FjaGUnXVskc3RyQ2FjaGVJZF0pKSB7DQogICBkaWUoJ0ludmFsaWQgY2FjaGUnKTsNCn0NCiRvYmpSZXBvcnQgPSB1bnNlcmlhbGl6ZSgkX1NFU1NJT05bJ1NRTFJlcG9ydCddWydjYWNoZSddWyRzdHJDYWNoZUlkXSk7DQoNCmlmIChpc3NldCgkX0dFVFsnY3N2J10pKSB7DQogICAvLyBIZXJlIHdlIGFkanVzdCBoZWFkZXJzIGZvciBub24gY2FjaGFibGUgcGFnZXMNCiAgIGhlYWRlcigiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCiAgIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuIGdtZGF0ZSgiRCwgZCBNIFkgSDppOnMiKSAuICIgR01UIik7DQogICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7DQogICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAiLCBmYWxzZSk7DQogICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsNCg0KICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2NzdicpOw0KICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy4kb2JqUmVwb3J0LT5nZXROYW1lRW5jb2RlZCgpLicuJy5kYXRlKCJZbWQtSGkiKS4nLmNzdiInKTsNCg0KICAgZWNobyAkb2JqUmVwb3J0LT5nZXRDU1YoKTsNCn0NCmVsc2Ugew0KPz4NCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4NCjxoZWFkPg0KICAgPHRpdGxlPkNNUyBNYWRlIFNpbXBsZSAtIFNRTCBSZXBvcnQ8L3RpdGxlPg0KICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+DQogICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93IiAvPg0KICAgPGJhc2UgaHJlZj0iPD9waHAgZWNobyAkY29uZmlnWydyb290X3VybCddOyA/PiIgLz4NCiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iPD9waHAgZWNobyAkY29uZmlnWydyb290X3VybCddOyA/Pi9tb2R1bGVzL1NRTFJlcG9ydC9zdHlsZS5waHAiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPg0KPC9oZWFkPg0KPGJvZHk+DQogICA8P3BocCBlY2hvICRvYmpSZXBvcnQtPmdldEhUTUwoKS5QSFBfRU9MOyA/Pg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHANCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/db_structure.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X0FkbWluJykpIGV4aXQ7DQoNCiAgIC8vIGdldCBkYXRhYmFzZSBjb25uZWN0aW9uIGhhbmRsZQ0KICAgJG9iakRhdGFiYXNlQ29ubmVjdGlvbiA9ICRnQ21zLT5HZXREYigpOw0KDQogICAvL2FuYWx5emUgZGF0YWJhc2UgdGFibGVzDQogICAkcXVlcnkgPSAiU0hPVyBUQUJMRVMiOw0KICAgJGRicmVzdWx0ID0gJG9iakRhdGFiYXNlQ29ubmVjdGlvbi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgaWYgKCEkZGJyZXN1bHQpIGRpZSgiREFUQUJBU0UgRVJST1I6ICIuJG9iakRhdGFiYXNlQ29ubmVjdGlvbi0+RXJyb3JNc2coKSk7DQogICB3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgew0KICAgICAgJHN0clRhYmxlID0gY3VycmVudCgkcm93KTsNCiAgICAgIC8vaWdub3JlIHNlcXVlbmNlcw0KICAgICAgaWYgKHByZWdfbWF0Y2goJ35fc2VxJH4nLCAkc3RyVGFibGUpKSBjb250aW51ZTsNCg0KICAgICAgLy9hbmFseXplIHRhYmxlcyBjb2x1bW5zDQogICAgICBlY2hvICc8Yj4nLiRzdHJUYWJsZS4nPC9iPjxiciAvPicuUEhQX0VPTDsNCiAgICAgICRxdWVyeTIgPSAiREVTQ1JJQkUgIiAuICRzdHJUYWJsZTsNCiAgICAgICRkYnJlc3VsdDIgPSAkb2JqRGF0YWJhc2VDb25uZWN0aW9uLT5FeGVjdXRlKCRxdWVyeTIpOw0KICAgICAgaWYgKCRkYnJlc3VsdDIpIHsNCiAgICAgICAgIHdoaWxlICgkcm93MiA9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpIHsNCiAgICAgICAgICAgIGVjaG8gJyZuYnNwOy0mbmJzcDsnLiRyb3cyWydGaWVsZCddLic8YnIgLz4nLlBIUF9FT0w7DQogICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHsNCiAgICAgICAgIGVjaG8gJG9iakRhdGFiYXNlQ29ubmVjdGlvbi0+RXJyb3JNc2coKS4nPGJyIC8+Jy5QSFBfRU9MOw0KICAgICAgfQ0KICAgICAgZWNobyAnPGJyIC8+Jy5QSFBfRU9MOw0KICAgfQ0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/@eaDir/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/@eaDir/Thumbs.db@SynoEAStream</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAUWBwACAABNYWMgT1MgWCAgICAgICAgAAIAAAAJAAAAMgAAAF4AAAACAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQVRUUgAAAAAAAACQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAkAAAAAAAAAxlbmNyeXB0YWJsZQAA]]></data>
	</file>
	<file>
	  <filename>/images/icon_error.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhHgAZAPcAAKcaAcPMz6mQh6pqV9QrAOLn6LCwsa85IPhPFP/MzLCBdOf0+LsiAb2iovfPz9ViOeC1sdlvSNhMHuXOzL4uB/nm5s+bj/35+f7X19emoqAdEsp/dqZENsd0XsnFxdc+Cs/X2vfV1d3CvtSTjMN/c9i2s/BYIdjo7eTg4Kd4aff399B1WLAdA/zc3MsyDPJGC9VEGtC3t7ZZPdU7EbolCMFvX9eemMyUi/Dv77EkGNWyr+XEwf9ZGNvNzfnc3Pfu7+pACNd4WMWoqNGOh96We8K0tOTW1sBbTcdyaLQQAOHT0uC/vOBsQ9I2A79LN+z3+uZGFN+hifn//+nu8MIgAMUwBf///75DH8vHyPBPGfLm5qSOhe9MFbNPPc5zUs46E8tuYuzGxsNYOcUsCq8iDtuopO/b2bYjBrgyG9eblc2BecV6aOM4Aq0SAOHHxP9cH+S8vLewsNi+vt5BEvpXG92vqsWrq8cnAM66tf/v78WDb+fKx/D8/r0tDu3MzPdUGt1hM9mln+/Z19zc3cUyEO/g4Nvr8OBKGt83BLCKfrMpEtbf4vlKDef5/95CGdpyTsAuDce7u7EZAMx0aKoZAOdLGLUfAv/m5unj49q8tL4oCObWztOrpNaUlOXy9s6Me+HNybysrPlaIN6yrdbGwszMzNyrp8qbkcWEa8o1D74tA70+KMh3Y9W6t8y/vt6lnPBCCLg9Hv9RENc/FNDb3utJFLdZRLt2YOnDw9x8W86MjORvQ+v5/NV1VdCvr9ErAMaHfOA9BquLgP/MzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAMMALAAAAAAeABkAAAj/AIcJHCjQQQgfLRL6COGAoMOHBB0krJBHhcU8FVpgaAgRYoKDP36YmbBjiclNWn4sTNCR4MdCPyaY3GOm5o4yGXQUKoSBZcsEGHaaXDLKiJWjRtIovSFCS8+WIQoZGQUBQp1AoI5amTBkyCc1SFppCdHRgQ9MptIGCpTGjdYbORSRmashhg+ODjFoKWHDhtI0YG5oXZPEkmEWbThgavHQLKYbIyJPWpWkxmAqY8Zo0nQGAKkWeAtWcLPhqxNLDKiwkqKCTwcCM1y4yNzmVAWyBDH80IEECRpLkFz86sBrygIvbOYo/+LCEok8uAe2UMHpiKIzkFLNQLTCk/FesLjU/4IyZwYVEhcYE2whpQSZM30IfZkDJMgCHAseMfrzJ0ulOXdYkJ5DLeCgBAB99JHKLFC8kEsjUxgSgSx0VOhfFaCooN5ADhjVhSXyzVIJAg9sIYwAgPCgIg9/ACGGFIWENowDflwgAiXyOVLJHyYQEQURorwh5Bt0NJGJFYLI+JFRwEjyxSyHcMFEI1LwsQsPomQZjB5S4BCCT7nJ8YMVJLCQCgxQPHDCE4Y8wKMJH9wyhYEYQIRBCK3kYQUnBzBw5gApDCABFB9ckQgtKCiBQZ12OhADJlbgcIotsVBg6RUyKGBAAKUoEQKjHm0khCsqHIUCKXjg4QEIi5TiQQ8OPD7100a+hOLBIAVMMUUBg2ARRxFyxArmrBjgYkcokZDSw7KhNLDDosO2JNCiG4UBBxy4hBHrotISm5BGsnYbEAA7]]></data>
	</file>
	<file>
	  <filename>/images/icon_hint.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhHgAZAPfCAPLv9u7q7/r3/MXFxanOn7XTrqSkpLHOp4yMjK6uq73Ytujk7jqZANXV1f/5/5mZmfPu993m3JvaH+ju5s/fzJvMi76+vqDLk1SyIorWL63PpZvFjjylAMHbu6bMm3Nzc1myJpnaJ8fbwpK/he7p+XC+EHnOMpOTk8XYvpbWGjGRAHy8IEK0AobEGU+oCNnez2q/DbnWskuoAOTe6lWzCeLd62urSZzFkrjLtLvLtoHOFFmyDKTNl/bx/VuvIu/07ozHdNjhx7W1tbm4utvf1WuoUnx8fGK0AKPImoSEhIHFaOXg72W8AcnUxUWeBoq4ckqtAKazkluvFN7X4aCthHW9AD21AF7UD4alXI+rgdjS3YvZK5aej2u6I3GpYSGGAFizAonUF0zNAFGrKJqreHjSCFCeL4vID8rEzpeljpvbGYW8b0u4BnqxY1uWO7TNr87nvTyvAFG1AGXZDXO0J9nh15SthHfGEYrQFm6uM4nHCcrdxkS7AIiqecvZx2G7DI3bGmnDInPNKj+YESJ8DXWcTnDICWqyS0CJJF6vMMfcqHOuTnXHAHO/RJTMf12oO4G4bYXYKYLDBWG2JyaIBJPBfF/YBmGuHnzGW4G2cmWyO+/06UmmBkKWHGW0DaOon2zCRVKnJmSTQleqCtXQ2N7e5oSyY5/AkWCsLJK7cJHcJHO1NpvfJECcAqTHjlG1E0i7CJOrabnItG6sQ5DNM2bBH2/GD0uvFYq9c5quc3rQEiSLAO/v7/f3997e3ubm5v///8zMzP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMIALAAAAAAeABkAAAj/AIUJHDiQ14RfARL+IsiwIcNeAQD0EtCrIsVfv3o53CjMV8YfESjsEUGSwoReGDkyDLbgBwUUHWIqiFHgAIE3EQL4UilwwK8ICoIqKFDTJgEkN0ag0KmSyK86RIlqIED16IYRmUZ4wRFgoUMAHg+IJeCh7AZINsx0otSmlwZCskppbIgQBw8eF/KueTRIhd9dRYAJAFYE0QKvDDFuqMBYSSgGDFo5ccJgFsVeNdx8abKgIS8AfoA4AgKCAwdOLlyMkpEnIq8ZoiCf6hEgca8CSjDdajQJyo4dno7Q8QWA15JCMmhweOJgJ0FfAg6AwgAH2KYuTEqUWEGkOAksR2D8/4HyBJjzgb4cxLCyyIEDAUFKMGrxAgIvErGq6LhjS44r8wwNAMALcbCRBgQTQKAILUH0cF8ukqSAhw66gEGBAA0wZEEDwGgiBg2f2AfAiBMsQYYeaqSQQhhlrCLAL8EwxEsCwKDAgiVSJCAAL7/4UgMVZ0ggpASAMKEAMMEgNpABHFbCxxyXGDDDLwtE0QIrIWSpiiGpOMDLAA75gkAvwODCwhU+cDGEHStskcGbkcBgygK8BHMeQwYYMJgGY8Dyig+BmCCoILWgkoUWvjQAJkcnGPALMLzccAgIGGAAQiI29JEAGsEoCoBKvJxgxBBkAhNBEznkMAApUwRjQTAD1D/GkzAPfPCABb7QyaMvAyTgqxCzFmTAB0k8IMQAwSR7wgdGPHDnrL0E8wACSSBgrbUGBPNpsA314gusdnIrTEAAOw==]]></data>
	</file>
	<file>
	  <filename>/images/icon_warn.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhHgAZAOYAAIRwHenag9KyM/bw193FZLKWJ/Dmvfv46t3bqePQhKWLJMOkKta5R/Low/Pur+rco/n15v///+fWkpiAIffmveDLdc6uLdrAWenanO7jrfXtw6yRJfz79byfKdW3QPfy3vDmpPf1vpN8IOXXhNi9Ufbwt+fdku3grtGxMOzfnfbwzerpuLeaKPr34Z2EIuHNevv47vz68d3GaObVj+jZm9S1O6qPJcmqLO7is//3va+UJvfmxezfpvfmtb+hKu7mn/PsqIx2H9e7SuzhlPbwrvz6xM61Mezfjvf3tf//+vf31v398PbwvfHotY54H9/Jcv//5vf3xf//zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFIALAAAAAAeABkAAAf/gFKCg4MhKgMfHyolhI2OjTlRLTEcMZYcB4s5j5xSQCoxmQY4J6UNH5mMnYQpAxCjJwYDszgSEhiITauCJrOlJxgNEcMNCcYVJx+6nSAqKg/QGBIGwxEGFdgyJBgfqo45sjTitgk41RUKChPrIjQqRY8lHxjG9SQV1SQi7CJBBQNMHjl7QfDFhQ4ihORzYSOdCxcATqhwFKIFDgJPZNzY54JEEhgwhGxgwUJHwyAvYAQkxAQGDRIkNohQsGGDkAMfIAjpsKBnyQkXkngT1ISDhBrqFBQgKSQRBBI3UKCwsKCDiwsRVg4CwgHDOgU6WPQkAaGsEAFoBVBV8EJooyEQ4BoEUWCjgI8bFi7gHCCkhgcPNWpYUFAURCMEBpIsmDBygYXAMEn4/Qv4xg0OA4Y4GpLkRJDGKAI/SVCBgWnTHjY8iMBjhSMQGiIQcFLAsYCbHEJS9tAh6IcjnI4ciHCB9oIbNVQcGBA4MAsGrjIQ4VQixZIIM2xMqB0ahWWSJAyoMOBgVYkhAyJAeGFBx0OlC4S84BFrKPURKYZHUHFC3IMmDZyQQhP2dRKCCQGk0IArEAzQAA8JzPBDgbuAEMAIGGTQxIYBJPBDCLtwEoIDQJQIhAMlgBjiLiEwoeKKUgQCADs=]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/images/Thumbs.db</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAABQAAAP7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgJZ0en80BAwAAAMAFAAAAAAAAMgA1ADYAXwBiADYANgAzAGIAOABkADMANABhADIANgA0AGEANQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8YAAAAAwAAAIMFAAAAAAAAy5zaonRyra2JUE5HDQoaCgAAAA1JSERSAAAAHgAAABkIBgAAACY1nhoAAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAABS1JREFUSEuVVslvG2UU/81iezzes7VJuqUN0LK1ajmgFk4IiUMRihDixH/AhQuLkDhx5MABcUHignrghAQnlgJCKdA2baBQWmjSkkSKncVx7NjjGXvGw3tv6knc2jh90rPnG3/+fu/93vYpvj+DfmJbFd9vZmibCUWNyXa/VaLPVcQzw0q//3f7XekJbJd9GwY07IOqZQFFJzR3+wxa+14NTXspMCAWBYzMro3oClwtzvma/hCi5iR55sjhDWsTLdeidTMEjxjDiJjj0KPJbQN2ycB9wMV/f/fN3GlokQzq5RshmBbNkCFjIahdmYNTvSNrVTeRGjkjYWhYN5Des6ev5+pO/gu3fxZQlurar/AaZfHQbWxAVaMUz6Oh6tEsva+INqwCVm99CmvjNzLuGCorK36/uIfA5fxNPzN4hvZbqK7PwHNrogzKFLdajY6zeO01yzt0C2vzn6FS+F7A6+W1/wUPqKZEKlOSMpWVlekQwPfq8sxeJQaOI7f/bPjbwsybuPDjF7Leqnnh+6br45XX3iW6T9J5dQqZ0ZV28bjuNBBLTmBr9QKa9ZVQ21TWilfIoJ86POYYb5TdEJQBWZ2Gj0vnP6C9JoXA6cn4XapHpC7trdtoeUTrXa1vXsffs+fw7Q+z4Od7xTRUDGR0pBKafPM6l9Zw7R+L9t+g7VSGPUTl5qDHhmBXluHaqxRPG66zgcL8l/j6u18wt2DLgUHjoERzSqJcZpmUtg0aV+XZiKkwoiqqxRlEjAmKdblrrFW/6UNRUmjUC1SLRSmR2cvncelaVbwYyukCwECus0nxpnr2bPEjm9aRNFXRoWzguUkG8NrZugM9lqRdnUnZJkBt2jYULUZdqC4eX7n6B9ZLbkhhIq6BNUiyakgcM8BA6VRUNGFqAsjvIno7nyK0nzpaF1FVfUtecxOYvrwsydK2nA9oe8RAqmaIsjADcSNGbGmiuh6AxyKK0B1LTUhoenrs1NalUcTTj6BqtUKLNTU4IErx4gMDUF1o5voVY+mdFkmJ8nM0lpa9EobxM9QHmpTZxa4eK/O3PvcHE0PIjD6L6XMncH2uLnFletlbPogPZNGNkfAQDouiMpXbwl2uVguMOjV1EY3aIqzyeQweePq+WlYPTx5R3CanPvDoM++L1ztF0wIPWLjWE4OnYKQnKTRJyfROjWAp72Di5FvQKHRWaRYtY7Krx1LHeiRLffYiBg5OYeql57GYb0gzYPE8T+jlIbHv+NsYfewNjD/xDgEGmb5T84UVPHn8KQwfeZV6Ag+QAoZHhnp3rszoUaVeuUzlsobDpz/B2RdOY27RRqnioWZ5qNuO5AGPx2AGr4QDhOllXVwqYGzsAPadeI/iuk71Owszd6irt/wyHIvc1K3SMnIHXqZJlEH+rw8x/c3H0hbHRqLSkbhsND0hw8N2gkvBxmbwPXHkGPYee536c1Zmt2ZUkMzt7zkeO+axgJfnYWaek/HXsPIo3PwIxYWvsLDshCCc7VxybMzQnkMwB07QEHmcyoqyXOZ2o++V6L6LAIOX8lcQM0Yp01+k7jMsHtXLV6n/LqDpBOXB5RNLDkBBmqhfg++XEInvpTap9gXtoHpnMLh/bxb+hOqVqUbHEI0/TKU0JLcSSTiqY9depza7RAbdpvcJGLksDHPvrkB7AreN4MsB927XU6Br5E08x/M1tNGuXKVwKEiMjBPgQQJO973ytP/c+5Z5dwd77zrUFKh0OoRqWFMNKJHYAwHuGvjeEMg04378AN51q6n/AFv5nEthSAQWAAAAAElFTkSuQmCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/install.demo-data.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiR0aGlzLT5DcmVhdGVFdmVudCgnQWRkaW5nIHRlc3RkYXRhIHRvIG1vZHVsZV9za2lwcGluZ2hlYXJ0cyB0YWJsZXMuJyk7DQoNCi8vY3JlYXRlIG5ldyBjYXRlZ29yeSBhbmQgc2V0IGV4YW1wbGUgdmFsdWVzDQokb2JqQ2F0ZWdvcnkgPSBTUUxSZXBvcnRfQ2F0ZWdvcnk6OmdldEVtcHR5SW5zdGFuY2UoKTsNCiRvYmpDYXRlZ29yeS0+c2V0TmFtZSgnRGVmYXVsdCcpOw0KJG9iakNhdGVnb3J5LT5zZXREZXNjcmlwdGlvbignRGVmYXVsdCBjYXRlZ29yeScpOw0KJG9iakNhdGVnb3J5LT5zYXZlVG9EQigpOw0KDQovL2NyZWF0ZSBuZXcgcmVwb3J0IGFuZCBzZXQgZXhhbXBsZSB2YWx1ZXMNCiRvYmpSZXBvcnQgPSBTUUxSZXBvcnRfUmVwb3J0OjpnZXRFbXB0eUluc3RhbmNlKCk7DQokb2JqUmVwb3J0LT5zZXROYW1lKCdDTVMgVXNlcnMnKTsNCiRvYmpSZXBvcnQtPnNldERlc2NyaXB0aW9uKCdPdmVydmlldyBvZiBDTVMgdXNlcnMnKTsNCiRvYmpSZXBvcnQtPnNldENhdGVnb3J5SWQoJG9iakNhdGVnb3J5LT5nZXRJZCgpKTsNCiRvYmpSZXBvcnQtPnNhdmVUb0RCKCk7DQoNCi8vY3JlYXRlIHRoZSBxdWVyeQ0KJG9ialF1ZXJ5ID0gU1FMUmVwb3J0X1F1ZXJ5OjpnZXRFbXB0eUluc3RhbmNlKCk7DQokb2JqUXVlcnktPnNldFJlcG9ydHNJZCgkb2JqUmVwb3J0LT5nZXRJZCgpKTsNCiRvYmpRdWVyeS0+c2V0UXVlcnkoJ1NFTEVDVCAnLmNtc19kYl9wcmVmaXgoKS4ndXNlcnMudXNlcl9pZCBBUyBVc2VySWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbmFtZSBBUyBGaXJzdG5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9uYW1lIEFTIExhc3RuYW1lLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsIEFTIEVtYWlsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdST1VQX0NPTkNBVChESVNUSU5DVCBncm91cF9uYW1lKSBBUyBHcm91cHMNCiAgICAgICAgICAgICAgICAgICAgICAgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4ndXNlcnMNCiAgICAgICAgICAgICAgICAgICAgICAgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ndXNlcl9ncm91cHMgT04gKCcuY21zX2RiX3ByZWZpeCgpLid1c2Vycy51c2VyX2lkID0gJy5jbXNfZGJfcHJlZml4KCkuJ3VzZXJfZ3JvdXBzLnVzZXJfaWQpDQogICAgICAgICAgICAgICAgICAgICAgIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2dyb3VwcyBPTiAoJy5jbXNfZGJfcHJlZml4KCkuJ3VzZXJfZ3JvdXBzLmdyb3VwX2lkID0gJy5jbXNfZGJfcHJlZml4KCkuJ2dyb3Vwcy5ncm91cF9pZCkNCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSAjRklMVEVSIw0KICAgICAgICAgICAgICAgICAgIEdST1VQIEJZICcuY21zX2RiX3ByZWZpeCgpLid1c2Vycy51c2VyX2lkJyk7DQokb2JqUXVlcnktPnNhdmVUb0RCKCk7DQoNCi8vY3JlYXRlIHRoZSBmaWx0ZXINCiRvYmpGaWx0ZXIgPSBTUUxSZXBvcnRfRmlsdGVyTG9va3VwOjpnZXRFbXB0eUluc3RhbmNlKCk7DQokb2JqRmlsdGVyLT5zZXROYW1lKCdHcm91cHMnKTsNCiRvYmpGaWx0ZXItPnNldEZpbHRlckNvbHVtbihjbXNfZGJfcHJlZml4KCkuJ2dyb3Vwcy5ncm91cF9pZCcpOw0KJG9iakZpbHRlci0+c2V0TG9va3VwUXVlcnkoJ1NFTEVDVCBncm91cF9pZCwgZ3JvdXBfbmFtZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidncm91cHMnKTsNCiRvYmpGaWx0ZXItPnNldEFsbG93TXVsdGlTZWxlY3Rpb24oMSk7DQokb2JqRmlsdGVyLT5zYXZlVG9EQigpOw0KDQovL2FkZCBldmVudA0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdBZGRpbmcgdGVzdGRhdGEgY29tcGxldGVkLicpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.help.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQpvYl9zdGFydCgpDQo/Pg0KDQo8aDM+PD9waHAgZWNobyAkbGFuZ1snZnJpZW5kbHluYW1lJ107ID8+PC9oMz48cD5UT0RPPC9wPg0KDQo8P3BocA0KJGxhbmdbJ2hlbHAtY29udGV4dCddID0gb2JfZ2V0X2NsZWFuKCkNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[77u/PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAkbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgICAgID0gJ01hbmFnZSBhbGwgdGhlIFNRTCByZXBvcnRzIGFuZCB0aGVpciBhY2Nlc3NvcnkgcGFydHMuJzsNCiAgICRsYW5nWydhZG1pbi1kZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgICAgPSAkbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddOw0KICAgJGxhbmdbJ2FsbG93LW11bHRpLXNlbGVjdGlvbiddICAgICAgICAgICAgICAgICA9ICdBbGxvdyBtdWx0aSBzZWxlY3Rpb24nOw0KICAgJGxhbmdbJ2JhY2snXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdHbyBiYWNrJzsNCiAgICRsYW5nWydibGFja2xpc3Qtd29yZC1mb3VuZCddICAgICAgICAgICAgICAgICAgPSAnVGhlIHdvcmQgXCclc1wnIG1heSBub3QgYmUgdXNlZCB3aXRoaW4gcXVlcmllcyc7DQogICAkbGFuZ1snY2FwdGlvbi1kZWxldGUtY2F0ZWdvcnknXSAgICAgICAgICAgICAgID0gJ0RlbGV0ZSBjYXRlZ29yeSAmcXVvdDslcyZxdW90Oyc7DQogICAkbGFuZ1snY2FwdGlvbi1kZWxldGUtZmlsdGVyJ10gICAgICAgICAgICAgICAgID0gJ0RlbGV0ZSBmaWx0ZXIgJnF1b3Q7JXMmcXVvdDsnOw0KICAgJGxhbmdbJ2NhcHRpb24tZGVsZXRlLXJlcG9ydCddICAgICAgICAgICAgICAgICA9ICdEZWxldGUgcmVwb3J0ICZxdW90OyVzJnF1b3Q7JzsNCiAgICRsYW5nWydjYXB0aW9uLWVkaXQtY2F0ZWdvcnknXSAgICAgICAgICAgICAgICAgPSAnRWRpdCAmcXVvdDslcyZxdW90Oyc7DQogICAkbGFuZ1snY2FwdGlvbi1lZGl0LWZpbHRlciddICAgICAgICAgICAgICAgICAgID0gJ0VkaXQgJnF1b3Q7JXMmcXVvdDsnOw0KICAgJGxhbmdbJ2NhcHRpb24tZWRpdC1yZXBvcnQnXSAgICAgICAgICAgICAgICAgICA9ICdFZGl0ICZxdW90OyVzJnF1b3Q7JzsNCiAgICRsYW5nWydjYXRlZ29yaWVzLWNhdGVnb3JpZXNfaWQtbm90LWZvdW5kJ10gICAgPSAnTm8gQ2F0ZWdvcnkgd2l0aCBpZCAlcyBmb3VuZCc7DQogICAkbGFuZ1snY2F0ZWdvcmllcy1uYW1lLWludmFsaWQnXSAgICAgICAgICAgICAgID0gJ0ludmFsaWQgQ2F0ZWdvcnluYW1lJzsNCiAgICRsYW5nWydjYXRlZ29yaWVzLWRlc2NyaXB0aW9uLWludmFsaWQnXSAgICAgICAgPSAnSW52YWxpZCBDYXRlZ29yeWRlc2NyaXB0aW9uJzsNCiAgICRsYW5nWydjYXRlZ29yaWVzLXJlcG9ydHMtbGVmdCddICAgICAgICAgICAgICAgPSAnQ2F0ZWdvcnkgY2FuIG5vdCBiZSBkZWxldGVkLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lIHJlcG9ydHMgbGVmdCc7DQogICAkbGFuZ1snY2F0ZWdvcnknXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0NhdGVnb3J5JzsNCiAgICRsYW5nWydjYXRlZ29yeS1kZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgPSAnRGVzY3JpcHRpb24nOw0KICAgJGxhbmdbJ2NhdGVnb3J5LXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnXSAgICAgICAgICA9ICdDYXRlZ29yeSBzdWNjZXNzZnVsbCBkZWxldGVkJzsNCiAgICRsYW5nWydjaG9vc2UtZmlsdGVyJ10gICAgICAgICAgICAgICAgICAgICAgICAgPSAnQ2hvb3NlIGZpbHRlcihzKSc7DQogICAkbGFuZ1snY3JlYXRlLW5ldy1jYXRlZ29yeSddICAgICAgICAgICAgICAgICAgID0gJ0NyZWF0ZSBhIG5ldyBjYXRlZ29yeSc7DQogICAkbGFuZ1snY3JlYXRlLW5ldy1maWx0ZXInXSAgICAgICAgICAgICAgICAgICAgID0gJ0NyZWF0ZSBhIG5ldyBmaWx0ZXInOw0KICAgJGxhbmdbJ2NyZWF0ZS1uZXctcmVwb3J0J10gICAgICAgICAgICAgICAgICAgICA9ICdDcmVhdGUgYSBuZXcgcmVwb3J0JzsNCiAgICRsYW5nWydjc3YtZG93bmxvYWQnXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnQ1NWLURvd25sb2FkJzsNCiAgICRsYW5nWydkYXRhYmFzZS1lcnJvciddICAgICAgICAgICAgICAgICAgICAgICAgPSAnRGF0YWJhc2VlcnJvcjogJXMnOw0KICAgJGxhbmdbJ2RhdGFiYXNlLXN0cnVjdHVyZSddICAgICAgICAgICAgICAgICAgICA9ICdEYXRhYmFzZSBzdHJ1Y3R1cmUnOw0KICAgJGxhbmdbJ2RlbGV0ZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdEZWxldGUnOw0KICAgJGxhbmdbJ2RlbGV0ZS1jYXRlZ29yeS1hcmUteW91LXN1cmUnXSAgICAgICAgICA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAmcXVvdDslcyZxdW90Oz8nOw0KICAgJGxhbmdbJ2RlbGV0ZS1maWx0ZXItYXJlLXlvdS1zdXJlJ10gICAgICAgICAgICA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBmaWx0ZXIgJnF1b3Q7JXMmcXVvdDs/JzsNCiAgICRsYW5nWydkZWxldGUtcmVwb3J0LWFyZS15b3Utc3VyZSddICAgICAgICAgICAgPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgcmVwb3J0ICZxdW90OyVzJnF1b3Q7Pyc7DQogICAkbGFuZ1snZGVzY3JpcHRpb24nXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0Rlc2NyaXB0aW9uJzsNCiAgICRsYW5nWydlZGl0J10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnRWRpdCc7DQogICAkbGFuZ1snZmlsdGVyJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0ZpbHRlcic7DQogICAkbGFuZ1snZmlsdGVyLWNvbHVtbiddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0ZpbHRlciBjb2x1bW4nOw0KICAgJGxhbmdbJ2ZpbHRlci1sb29rdXAnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdMb29rdXBmaWx0ZXInOw0KICAgJGxhbmdbJ2ZpbHRlci1sb29rdXAtdmFsdWVzJ10gICAgICAgICAgICAgICAgICA9ICdMb29rdXAgdmFsdWVzJzsNCiAgICRsYW5nWydmaWx0ZXItcGVyaW9kJ10gICAgICAgICAgICAgICAgICAgICAgICAgPSAnUGVyaW9kJzsNCiAgICRsYW5nWydmaWx0ZXItc3VjY2Vzc2Z1bGwtZGVsZXRlZCddICAgICAgICAgICAgPSAnRmlsdGVyICZxdW90OyVzJnF1b3Q7IGhhcyBiZWVuIGRlbGV0ZWQnOw0KICAgJGxhbmdbJ2ZpbHRlci10eXBlJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdGaWx0ZXJ0eXBlJzsNCiAgICRsYW5nWydmaWx0ZXItdmFyLWhpbnQnXSAgICAgICAgICAgICAgICAgICAgICAgPSAnQXQgdGhlIHBsYWNlIGhvbGRlciAjRklMVEVSIyB0byB0aGUgV0hFUkUtQ2xhdXNlLiBJdCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBmaWx0ZXJzIGF0IHJ1bnRpbWUuJzsNCiAgICRsYW5nWydmaWx0ZXItdmFyLW1pc3NpbmcnXSAgICAgICAgICAgICAgICAgICAgPSAnVGhlIHBsYWNlIGhvbGRlciBmb3IgcG9zc2libGUgZmlsdGVycyAoI0ZJTFRFUiMpIGlzIG1pc3NpbmcuJzsNCiAgICRsYW5nWydmaWx0ZXJzLWFsbG93X211bHRpX3NlbGVjdGlvbi1pbnZhbGlkJ10gPSAnSW52YWxpZCBtdWx0aSBzZWxlc2N0aW9uJzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9jb2x1bW4tZW1wdHknXSAgICAgICAgICAgPSAnRmlsdGVyLUNvbHVtbnNwYWx0ZSBtYXkgbm90IGJlIGVtcHR5JzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9jb2x1bW4taW52YWxpZCddICAgICAgICAgPSAnSW52YWxpZCBGaWx0ZXItQ29sdW1uc3BhbHRlJzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9lbmQtZW1wdHknXSAgICAgICAgICAgICAgPSAnRW5kIHZhbHVlIG15IG5vdCBiZSBlbXB0eSc7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJfZW5kLWludmFsaWQnXSAgICAgICAgICAgID0gJ0VuZCB2YWx1ZSBpcyBub3QgYSB2YWxpZCBkYXRlJzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9zdGFydC1lbXB0eSddICAgICAgICAgICAgPSAnU3RhcnQgdmFsdWUgbXkgbm90IGJlIGVtcHR5JzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9zdGFydC1pbnZhbGlkJ10gICAgICAgICAgPSAnU3RhcnQgdmFsdWUgaXMgbm90IGEgdmFsaWQgZGF0ZSc7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJfc3RhcnRfZW5kLWludmFsaWQnXSAgICAgID0gJ1N0YXJ0IGRhdGUgbGllcyBhZnRlciBlbmQgZGF0ZSc7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJzX2lkLW5vdC1mb3VuZCddICAgICAgICAgID0gJ05vIEZpbHRlciB3aXRoIGlkICVzIGZvdW5kJzsNCiAgICRsYW5nWydmaWx0ZXJzLWxvb2t1cF9xdWVyeS1pbnZhbGlkJ10gICAgICAgICAgPSAnSW52YWxpZCBRdWVyeSc7DQogICAkbGFuZ1snZmlsdGVycy1uYW1lLWVtcHR5J10gICAgICAgICAgICAgICAgICAgID0gJ0ZpbHRlci1OYW1lIG1heSBub3QgYmUgZW1wdHknOw0KICAgJGxhbmdbJ2ZpbHRlcnMtbmFtZS1pbnZhbGlkJ10gICAgICAgICAgICAgICAgICA9ICdJbnZhbGlkIEZpbHRlcm5hbWUnOw0KICAgJGxhbmdbJ2ZyaWVuZGx5bmFtZSddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdTUUwgUmVwb3J0JzsNCiAgICRsYW5nWydmcm9udGVuZC1jb2RlLXNuaXBwZXQnXSAgICAgICAgICAgICAgICAgPSAnRnJvbnRFbmQtQ29kZSAoZmlsdGVycyBhcmUgb3B0aW9uYWwpJzsNCiAgICRsYW5nWydmdXJ0aGVyLXVzYWdlJ10gICAgICAgICAgICAgICAgICAgICAgICAgPSAnRnVydGhlciB1c2FnZSc7DQogICAkbGFuZ1snaGVscCddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0hlbHAnOyAgcmVxdWlyZV9vbmNlICdlbl9VUy5oZWxwLnBocCc7DQogICAkbGFuZ1snbG9hZC1kZWZhdWx0X3ZhbHVlcyddICAgICAgICAgICAgICAgICAgID0gJ0xvYWQgZGVmYXVsdCB2YWx1ZXMnOw0KICAgJGxhbmdbJ2xvYWRpbmctc2V0dGluZ3MnXSAgICAgICAgICAgICAgICAgICAgICA9ICdMb2FkaW5nIHNldHRpbmdzIC4uLic7DQogICAkbGFuZ1snbG9va3VwLXF1ZXJ5J10gICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0xvb2t1cCBxdWVyeSc7DQogICAkbGFuZ1snbW9kdWxlLW92ZXJ2aWV3J10gICAgICAgICAgICAgICAgICAgICAgID0gJ0JhY2sgdG8gJyAuICRsYW5nWydmcmllbmRseW5hbWUnXS4gJyBPdmVydmlldyc7DQogICAkbGFuZ1snbmFtZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ05hbWUnOw0KICAgJGxhbmdbJ25vJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdObyc7DQogICAkbGFuZ1snbm8tZGF0YS1mb3VuZCddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ05vIGRhdGEgZm91bmQnOw0KICAgJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0J10gICAgICAgICAgICAgICAgICA9ICdTUUwgLSBCbGFja2xpc3QnOw0KICAgJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0LWhpbnQnXSAgICAgICAgICAgICA9ICd0byBwcmV2ZW50IGFnZ3Jlc3Npb25zLCB5b3UgY2FuIGRlZmluZWQgYSB2aWV3IHdvcmRzIHdoaWNoIGFyZSBub3QgYWxsb3dlIGluIFNRTCBxdWVyaWVzLiAnLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb3RpY2U6IFRoZSB2YWx1ZXMgaGF2ZSB0byBiZSBzZXBlcmF0ZWQgYnkgc2VtaWNvbG9uLic7DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QtaW52YWxpZCddICAgICAgICAgID0gJ0ludmFsaWQgdmFsdWUgZm9yICcuJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0J107DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QtZW1wdHknXSAgICAgICAgICAgID0gJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0J10uJyBtYXkgbm90IGJlIGVtcHR5JzsNCiAgICRsYW5nWydvcHRpb24tcmVwb3J0LWNzcyddICAgICAgICAgICAgICAgICAgICAgPSAnQ1NTIGZvciByZXBvcnRzJzsNCiAgICRsYW5nWydvcHRpb24tcmVwb3J0LWNzcy1oaW50J10gICAgICAgICAgICAgICAgPSAnVGhlIHN0eWxlIHNoZWV0IHdpbGwgYmUgdXNlZCBvbiBkaXNwbGF5aW5nIHRoZSByZXBvcnQuJzsNCiAgICRsYW5nWydvcHRpb24tcmVwb3J0LWNzcy1pbnZhbGlkJ10gICAgICAgICAgICAgPSAnSW52YWxpZCB2YWx1ZSBmb3IgJy4kbGFuZ1snb3B0aW9uLXJlcG9ydC1jc3MnXTsNCiAgICRsYW5nWydvcHRpb24tcmVwb3J0LWNzcy1lbXB0eSddICAgICAgICAgICAgICAgPSAkbGFuZ1snb3B0aW9uLXJlcG9ydC1jc3MnXS4nIG1heSBub3QgYmUgZW1wdHknOw0KICAgJGxhbmdbJ29wdGlvbnMtc2F2ZWQnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdPcHRpb25zIHNhdmVkJzsNCiAgICRsYW5nWydvdXRwdXQtZm9ybWF0J10gICAgICAgICAgICAgICAgICAgICAgICAgPSAnT3V0cHV0IGZvcm1hdCc7DQogICAkbGFuZ1snb3V0cHV0LWh0bWx0YWJsZSddICAgICAgICAgICAgICAgICAgICAgID0gJ0hUTUwgdGFibGUnOw0KICAgJGxhbmdbJ291dHB1dC10YWJsZXRvb2xzJ10gICAgICAgICAgICAgICAgICAgICA9ICdUYWJsZSBUb29scyAmcmVnOyc7DQogICAkbGFuZ1sncGVyaW9kLWZyb20nXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ2Zyb20nOw0KICAgJGxhbmdbJ3BlcmlvZC10byddICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICd0byc7DQogICAkbGFuZ1sncGxlYXNlLXNldC12YWx1ZSddICAgICAgICAgICAgICAgICAgICAgID0gJ1BsZWFzZSBzZXQgdmFsdWUnOw0KICAgJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRsYW5nWydmcmllbmRseW5hbWUnXS4nIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQhJzsNCiAgICRsYW5nWydwb3N0dW5pbnN0YWxsJ10gICAgICAgICAgICAgICAgICAgICAgICAgPSAkbGFuZ1snZnJpZW5kbHluYW1lJ10uJyBzdWNjZXNzZnVsbHkgdW4taW5zdGFsbGVkLic7DQogICAkbGFuZ1sncHJpbnQtdmlldyddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1ByaW50IHZpZXcnOw0KICAgJGxhbmdbJ3F1ZXJpZXMtcXVlcmllc19pZC1ub3QtZm91bmQnXSAgICAgICAgICA9ICdRdWVyeSB3aXRoIElEICVzIG5vdCBmb3VuZCc7DQogICAkbGFuZ1sncXVlcmllcy1xdWVyeS1pbnZhbGlkJ10gICAgICAgICAgICAgICAgID0gJ0ludmFsaWQgcXVlcnknOw0KICAgJGxhbmdbJ3F1ZXJpZXMtcmVwb3J0c19pZC1lbXB0eSddICAgICAgICAgICAgICA9ICdSZXBvcnRJZCBtYXkgbm90IGJlIGVtcHR5JzsNCiAgICRsYW5nWydxdWVyaWVzLXJlcG9ydHNfaWQtaW52YWxpZCddICAgICAgICAgICAgPSAnUmVwb3J0SWQgSW52YWxpZCc7DQogICAkbGFuZ1sncmVwb3J0J10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1JlcG9ydCc7DQogICAkbGFuZ1sncmVwb3J0LXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnXSAgICAgICAgICAgID0gJ1JlcG9ydCAmcXVvdDslcyZxdW90OyBoYXMgYmVlbiBkZWxldGVkJzsNCiAgICRsYW5nWydyZXBvcnRzLWNhdGVnb3J5LWludmFsaWQnXSAgICAgICAgICAgICAgPSAnSW52YWxpZCBSZXBvcnRjYXRlZ29yeSc7DQogICAkbGFuZ1sncmVwb3J0cy1kZXNjcmlwdGlvbi1pbnZhbGlkJ10gICAgICAgICAgID0gJ0ludmFsaWQgUmVwb3J0ZGVzY3JpcHRpb24nOw0KICAgJGxhbmdbJ3JlcG9ydHMtbmFtZS1pbnZhbGlkJ10gICAgICAgICAgICAgICAgICA9ICdJbnZhbGlkIFJlcG9ydG5hbWUnOw0KICAgJGxhbmdbJ3JlcG9ydHMtcmVwb3J0c19pZC1ub3QtZm91bmQnXSAgICAgICAgICA9ICdSZXBvcnQgd2l0aCBJRCAlcyBub3QgZm91bmQnOw0KICAgJGxhbmdbJ3J1bi1yZXBvcnQnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdSdW4gdGhlIHJlcG9ydCc7DQogICAkbGFuZ1snc2F2ZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1NhdmUnOw0KICAgJGxhbmdbJ3NhdmUtY2hhbmdlcyddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdTYXZlIGNoYW5nZXMnOw0KICAgJGxhbmdbJ3NhdmVkLWNoYW5nZXMnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdDaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCc7DQogICAkbGFuZ1snc2V0dGluZ3MnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1NldHRpbmdzJzsNCiAgICRsYW5nWyd0YWItY2F0ZWdvcmllcyddICAgICAgICAgICAgICAgICAgICAgICAgPSAnQ2F0ZWdvcmllcyc7DQogICAkbGFuZ1sndGFiLWRlZmF1bHQtY2F0ZWdvcnknXSAgICAgICAgICAgICAgICAgID0gJ0RlZmF1bHQnOw0KICAgJGxhbmdbJ3RhYi1lZGl0b3InXSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdFZGl0b3InOw0KICAgJGxhbmdbJ3RhYi1maWx0ZXJzJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdGaWx0ZXJzJzsNCiAgICRsYW5nWyd0YWItb3B0aW9ucyddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnT3B0aW9ucyc7DQogICAkbGFuZ1sndGFiLXJlcG9ydHMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1JlcG9ydHMnOw0KICAgJGxhbmdbJ3VuaW5zdGFsbF9jb25maXJtJ10gICAgICAgICAgICAgICAgICAgICA9ICdBbGwgZGF0YSB3aWxsIGJlIGRlbGV0ZWQhIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhlICcuJGxhbmdbJ2ZyaWVuZGx5bmFtZSddLicgbW9kdWxlPyc7DQogICAkbGFuZ1sndXBncmFkZWQnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGxhbmdbJ2ZyaWVuZGx5bmFtZSddLicgc3VjY2Vzc2Z1bGx5IHVwZ3JhZGVkISc7DQogICAkbGFuZ1sneWVzJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1llcyc7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.help.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm9iX3N0YXJ0KCkgPz4NCg0KPGgzPjw/cGhwIGVjaG8gJGxhbmdbJ2ZyaWVuZGx5bmFtZSddOyA/PjwvaDM+PHA+VE9ETzwvcD4NCg0KPD9waHANCiRsYW5nWydoZWxwLWNvbnRleHQnXSA9IG9iX2dldF9jbGVhbigpDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAkbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgICAgID0gJ1ZlcndhbHRlbiB2b24gQmVyaWNodGVuIHVuZCBkZXJlbiBCZWl3ZXJrLic7DQogICAkbGFuZ1snYWRtaW4tZGVzY3JpcHRpb24nXSAgICAgICAgICAgICAgICAgICAgID0gJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXTsNCiAgICRsYW5nWydhbGxvdy1tdWx0aS1zZWxlY3Rpb24nXSAgICAgICAgICAgICAgICAgPSAnTWVocmZhY2hhdXN3YWhsIGVybGF1YmVuJzsNCiAgICRsYW5nWydiYWNrJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnWnVyJnV1bWw7Y2snOw0KICAgJGxhbmdbJ2JsYWNrbGlzdC13b3JkLWZvdW5kJ10gICAgICAgICAgICAgICAgICA9ICdEYXMgV29ydCBcJyVzXCcgZGFyZiBuaWNodCBpbiBBYmZyYWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuJzsNCiAgICRsYW5nWydjYXB0aW9uLWRlbGV0ZS1jYXRlZ29yeSddICAgICAgICAgICAgICAgPSAnS2F0ZWdvcmllICZxdW90OyVzJnF1b3Q7IGwmb3VtbDtzY2hlbic7DQogICAkbGFuZ1snY2FwdGlvbi1kZWxldGUtZmlsdGVyJ10gICAgICAgICAgICAgICAgID0gJ0ZpbHRlciAmcXVvdDslcyZxdW90OyBsJm91bWw7c2NoZW4nOw0KICAgJGxhbmdbJ2NhcHRpb24tZGVsZXRlLXJlcG9ydCddICAgICAgICAgICAgICAgICA9ICdCZXJpY2h0ICZxdW90OyVzJnF1b3Q7IGwmb3VtbDtzY2hlbic7DQogICAkbGFuZ1snY2FwdGlvbi1lZGl0LWNhdGVnb3J5J10gICAgICAgICAgICAgICAgID0gJyZxdW90OyVzJnF1b3Q7IGJlYXJiZWl0ZW4nOw0KICAgJGxhbmdbJ2NhcHRpb24tZWRpdC1maWx0ZXInXSAgICAgICAgICAgICAgICAgICA9ICcmcXVvdDslcyZxdW90OyBiZWFyYmVpdGVuJzsNCiAgICRsYW5nWydjYXB0aW9uLWVkaXQtcmVwb3J0J10gICAgICAgICAgICAgICAgICAgPSAnJnF1b3Q7JXMmcXVvdDsgYmVhcmJlaXRlbic7DQogICAkbGFuZ1snY2F0ZWdvcmllcy1jYXRlZ29yaWVzX2lkLW5vdC1mb3VuZCddICAgID0gJ0RlciBLYXRlZ29yaWUgbWl0IElEICVzIGtvbm50ZSBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4nOw0KICAgJGxhbmdbJ2NhdGVnb3JpZXMtbmFtZS1pbnZhbGlkJ10gICAgICAgICAgICAgICA9ICdEZXIgTmFtZSBpc3QgdW5nJnV1bWw7bHRpZyc7DQogICAkbGFuZ1snY2F0ZWdvcmllcy1kZXNjcmlwdGlvbi1pbnZhbGlkJ10gICAgICAgID0gJ0RpZSBCZXNjaHJlaWJ1bmcgaXN0IHVuZyZ1dW1sO2x0aWcnOw0KICAgJGxhbmdbJ2NhdGVnb3JpZXMtcmVwb3J0cy1sZWZ0J10gICAgICAgICAgICAgICA9ICdLYXRlZ29yaWUga2FubiBuaWNodCBnZWwmb3VtbDtzY2h0IHdlcmRlbiwgZGEgc2llIG5vY2ggQmVyaWNodGUgZW50aCZhdW1sO2x0JzsNCiAgICRsYW5nWydjYXRlZ29yeSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnS2F0ZWdvcmllJzsNCiAgICRsYW5nWydjYXRlZ29yeS1kZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgPSAnQmVzY2hyZWlidW5nJzsNCiAgICRsYW5nWydjYXRlZ29yeS1zdWNjZXNzZnVsbC1kZWxldGVkJ10gICAgICAgICAgPSAnS2F0ZWdvcmllIGVyZm9sZ3JlaWNoIGdlbCVvdW1sO3NjaHQnOw0KICAgJGxhbmdbJ2Nob29zZS1maWx0ZXInXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdGaWx0ZXIgdyZhdW1sO2hsZW4nOw0KICAgJGxhbmdbJ2NyZWF0ZS1uZXctY2F0ZWdvcnknXSAgICAgICAgICAgICAgICAgICA9ICdFaW5lIG5ldWUgS2V0ZWdvcmllIGFubGVnZW4nOw0KICAgJGxhbmdbJ2NyZWF0ZS1uZXctZmlsdGVyJ10gICAgICAgICAgICAgICAgICAgICA9ICdFaW5lbiBuZXVlbiBGaWx0ZXIgYW5sZWdlbic7DQogICAkbGFuZ1snY3JlYXRlLW5ldy1yZXBvcnQnXSAgICAgICAgICAgICAgICAgICAgID0gJ0VpbmVuIG5ldWVuIEJlcmljaHQgYW5sZWdlbic7DQogICAkbGFuZ1snY3N2LWRvd25sb2FkJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0NTVi1Eb3dubG9hZCc7DQogICAkbGFuZ1snZGF0YWJhc2UtZXJyb3InXSAgICAgICAgICAgICAgICAgICAgICAgID0gJ0RhdGVuYmFua2ZlaGxlcjogJXMnOw0KICAgJGxhbmdbJ2RhdGFiYXNlLXN0cnVjdHVyZSddICAgICAgICAgICAgICAgICAgICA9ICdEYXRlbmJhbmsgU3RydWt0dXInOw0KICAgJGxhbmdbJ2RlbGV0ZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdMJm91bWw7c2NoZW4nOw0KICAgJGxhbmdbJ2RlbGV0ZS1jYXRlZ29yeS1hcmUteW91LXN1cmUnXSAgICAgICAgICA9ICdTb2xsIGRpZSBLYXRlZ29yaWUgJnF1b3Q7JXMmcXVvdDsgd2lya2xpY2ggZ2VsJm91bWw7c2NodCB3ZXJkZW4/JzsNCiAgICRsYW5nWydkZWxldGUtZmlsdGVyLWFyZS15b3Utc3VyZSddICAgICAgICAgICAgPSAnU29sbCBkZXIgRmlsdGVyICZxdW90OyVzJnF1b3Q7IHdpcmtsaWNoIGdlbCZvdW1sO3NjaHQgd2VyZGVuPyc7DQogICAkbGFuZ1snZGVsZXRlLXJlcG9ydC1hcmUteW91LXN1cmUnXSAgICAgICAgICAgID0gJ1NvbGwgZGVyIEJlcmljaHQgJnF1b3Q7JXMmcXVvdDsgd2lya2xpY2ggZ2VsJm91bWw7c2NodCB3ZXJkZW4/JzsNCiAgICRsYW5nWydkZXNjcmlwdGlvbiddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnQmVzY2hyZWlidW5nJzsNCiAgICRsYW5nWydlZGl0J10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnQmVhcmJlaXRlbic7DQogICAkbGFuZ1snZmlsdGVyJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0ZpbHRlcic7DQogICAkbGFuZ1snZmlsdGVyLWNvbHVtbiddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0ZpbHRlcnNwYWx0ZSc7DQogICAkbGFuZ1snZmlsdGVyLWxvb2t1cCddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ05hY2hzY2hsYWdlZmlsdGVyJzsNCiAgICRsYW5nWydmaWx0ZXItbG9va3VwLXZhbHVlcyddICAgICAgICAgICAgICAgICAgPSAnTmFjaHNjaGxhZ2V3ZXJ0ZSc7DQogICAkbGFuZ1snZmlsdGVyLXBlcmlvZCddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1plaXRyYXVtJzsNCiAgICRsYW5nWydmaWx0ZXItc3VjY2Vzc2Z1bGwtZGVsZXRlZCddICAgICAgICAgICAgPSAnRGVyIEZpbHRlciAmcXVvdDslcyZxdW90OyB3dXJkZSBnZWwmb3VtbDtzY2h0JzsNCiAgICRsYW5nWydmaWx0ZXItdHlwZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnRmlsdGVydHlwJzsNCiAgICRsYW5nWydmaWx0ZXItdmFyLWhpbnQnXSAgICAgICAgICAgICAgICAgICAgICAgPSAnSW4gZGllIFdIRVJFLUJlZGluZ3VuZyBzb2xsdGUgZGVyIFBsYXR6aGFsdGVyICNGSUxURVIjIGVpbmdlZiZ1dW1sO2d0IHdlcmRlbi4gRGllc2VyIHdpcmQgc3AmYXVtbDt0ZXIgZHVyY2ggZGllIGVpZ2VudGxpY2hlbiBGaWx0ZXIgZXJzZXR6dC4nOw0KICAgJGxhbmdbJ2ZpbHRlci12YXItbWlzc2luZyddICAgICAgICAgICAgICAgICAgICA9ICdEZXIgUGxhdHpoYWx0ZXIgZiZ1dW1sO3IgZXZlbnR1ZWxsZSBGaWx0ZXIgKCNGSUxURVIjKSBmZWhsdC4nOw0KICAgJGxhbmdbJ2ZpbHRlcnMtYWxsb3dfbXVsdGlfc2VsZWN0aW9uLWludmFsaWQnXSA9ICdEaWUgTWVocmZhY2hhdXN3YWhsIGlzdCB1bmcmdXVtbDtsdGlnJzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9jb2x1bW4tZW1wdHknXSAgICAgICAgICAgPSAnRGllIEZpbHRlcnNwYWx0ZSBkYXJmIG5pY2h0IGxlZXIgc2Vpbic7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJfY29sdW1uLWludmFsaWQnXSAgICAgICAgID0gJ0RpZSBGaWx0ZXJzcGFsdGUgaXN0IHVuZyZ1dW1sO2x0aWcnOw0KICAgJGxhbmdbJ2ZpbHRlcnMtZmlsdGVyX2VuZC1lbXB0eSddICAgICAgICAgICAgICA9ICdEYXMgRW5kZGF0dW0gZGFyZiBuaWNodCBsZWVyIHNlaW4nOw0KICAgJGxhbmdbJ2ZpbHRlcnMtZmlsdGVyX2VuZC1pbnZhbGlkJ10gICAgICAgICAgICA9ICdEYXMgRW5kZGF0dW0gaXN0IHVuZyZ1dW1sO2x0aWcnOw0KICAgJGxhbmdbJ2ZpbHRlcnMtZmlsdGVyX3N0YXJ0LWVtcHR5J10gICAgICAgICAgICA9ICdEYXMgU3RhcnRkYXR1bSBkYXJmIG5pY2h0IGxlZXIgc2Vpbic7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJfc3RhcnQtaW52YWxpZCddICAgICAgICAgID0gJ0RhcyBTdGFydGRhdHVtIGlzdCB1bmcmdXVtbDtsdGlnJzsNCiAgICRsYW5nWydmaWx0ZXJzLWZpbHRlcl9zdGFydF9lbmQtaW52YWxpZCddICAgICAgPSAnRGFzIEVuZGRhdHVtIGxpZWd0IHZvciBkZW0gU3RhcnRkYXR1bSc7DQogICAkbGFuZ1snZmlsdGVycy1maWx0ZXJzX2lkLW5vdC1mb3VuZCddICAgICAgICAgID0gJ0RlciBGaWx0ZXIgbWl0IElEICVzIGtvbm50ZSBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4nOw0KICAgJGxhbmdbJ2ZpbHRlcnMtbG9va3VwX3F1ZXJ5LWludmFsaWQnXSAgICAgICAgICA9ICdEaWUgQWJmcmFnZSBpc3QgdW5nJnV1bWw7bHRpZyc7DQogICAkbGFuZ1snZmlsdGVycy1uYW1lLWVtcHR5J10gICAgICAgICAgICAgICAgICAgID0gJ0RlciBGaWx0ZXJuYW1lIGRhcmYgbmljaHQgbGVlciBzZWluJzsNCiAgICRsYW5nWydmaWx0ZXJzLW5hbWUtaW52YWxpZCddICAgICAgICAgICAgICAgICAgPSAnRGVyIEZpbHRlcm5hbWUgaXN0IHVuZyZ1dW1sO2x0aWcnOw0KICAgJGxhbmdbJ2ZyaWVuZGx5bmFtZSddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdTUUwgUmVwb3J0JzsNCiAgICRsYW5nWydmcm9udGVuZC1jb2RlLXNuaXBwZXQnXSAgICAgICAgICAgICAgICAgPSAnRnJvbnRFbmQtQ29kZSAoRmlsdGVyIHNpbmQgb3B0aW9uYWwpJzsNCiAgICRsYW5nWydmdXJ0aGVyLXVzYWdlJ10gICAgICAgICAgICAgICAgICAgICAgICAgPSAnV2VpdGVyZSBWZXJ3ZW5kdW5nJzsNCiAgICRsYW5nWydoZWxwJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnSGlsZmUnOyByZXF1aXJlX29uY2UgJ2RlX0RFLmhlbHAucGhwJzsNCiAgICRsYW5nWydsb2FkLWRlZmF1bHRfdmFsdWVzJ10gICAgICAgICAgICAgICAgICAgPSAnU3RhbmRhcmR3ZXJ0ZSBsYWRlbic7DQogICAkbGFuZ1snbG9hZGluZy1zZXR0aW5ncyddICAgICAgICAgICAgICAgICAgICAgID0gJ0VpbnN0ZWxsdW5nZW4gd2VyZGVuIGdlbGFkZW4gLi4uJzsNCiAgICRsYW5nWydsb29rdXAtcXVlcnknXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnTmFjaHNjaGxhZ2UgQWJmcmFnZSc7DQogICAkbGFuZ1snbW9kdWxlLW92ZXJ2aWV3J10gICAgICAgICAgICAgICAgICAgICAgID0gJ1p1ciZ1dW1sO2NrIHp1ciAnIC4gJGxhbmdbJ2ZyaWVuZGx5bmFtZSddLiAnICZVdW1sO2JlcnNpY2h0JzsNCiAgICRsYW5nWyduYW1lJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnTmFtZSc7DQogICAkbGFuZ1snbm8nXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ05laW4nOw0KICAgJGxhbmdbJ25vLWRhdGEtZm91bmQnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdLZWluZSBEYXRlbiB2ZXJmJnV1bWw7Z2Jhcic7DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QnXSAgICAgICAgICAgICAgICAgID0gJ1NRTCAtIEJsYWNrbGlzdCc7DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QtaGludCddICAgICAgICAgICAgID0gJ1VtIEFuZ3JpZmZlIHp1IHZlcmhpbmRlcm4sIGvDtm5uZW4gaGllciBXb3J0ZSBkZWZpbmllcnQsIGRpZSBpbiBTUUwgQWJmcmFnZW4gdmVyYm90ZW4gc2luZC4gJy4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSGlud2llczogRGllIGVpbnplbG5lbiBXZXJ0ZSBtw7xzc2VuIG1pdCBTZW1pa29sb24gZ2V0cmVubnQgd2VyZGVuLic7DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QtaW52YWxpZCddICAgICAgICAgID0gJ1VuZyZ1dW1sO2x0aWdlciBXZXJ0IGYmdXVtbDtyICcuJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0J107DQogICAkbGFuZ1snb3B0aW9uLXNxbC1ibGFja2xpc3QtZW1wdHknXSAgICAgICAgICAgID0gJGxhbmdbJ29wdGlvbi1zcWwtYmxhY2tsaXN0J10uJyBkYXJmIG5pY2h0IGxlZXIgc2Vpbic7DQogICAkbGFuZ1snb3B0aW9uLXJlcG9ydC1jc3MnXSAgICAgICAgICAgICAgICAgICAgID0gJ0NTUyBmJnV1bWw7ciBCZXJpY2h0ZSc7DQogICAkbGFuZ1snb3B0aW9uLXJlcG9ydC1jc3MtaGludCddICAgICAgICAgICAgICAgID0gJ0RhcyBDU1MtU3R5bGUgc3dpcmQgenVyIEFuemVpZ2Ugdm9uIEJyaWNodGVuIHZlcndlbmRldC4nOw0KICAgJGxhbmdbJ29wdGlvbi1yZXBvcnQtY3NzLWludmFsaWQnXSAgICAgICAgICAgICA9ICdVbmcmdXVtbDtsdGlnZXIgV2VydCBmJnV1bWw7ciAnLiRsYW5nWydvcHRpb24tcmVwb3J0LWNzcyddOw0KICAgJGxhbmdbJ29wdGlvbi1yZXBvcnQtY3NzLWVtcHR5J10gICAgICAgICAgICAgICA9ICRsYW5nWydvcHRpb24tcmVwb3J0LWNzcyddLicgZGFyZiBuaWNodCBsZWVyIHNlaW4nOw0KICAgJGxhbmdbJ29wdGlvbnMtc2F2ZWQnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICdPcHRpb25lbiBnZXNwZWljaGVydCc7DQogICAkbGFuZ1snb3V0cHV0LWZvcm1hdCddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0F1c2dhYmVmb3JtYXQnOw0KICAgJGxhbmdbJ291dHB1dC1odG1sdGFibGUnXSAgICAgICAgICAgICAgICAgICAgICA9ICdIVE1MIFRhYmVsbGUnOw0KICAgJGxhbmdbJ291dHB1dC10YWJsZXRvb2xzJ10gICAgICAgICAgICAgICAgICAgICA9ICdUYWJsZSBUb29scyAmcmVnOyc7DQogICAkbGFuZ1sncGVyaW9kLWZyb20nXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ3Zvbic7DQogICAkbGFuZ1sncGVyaW9kLXRvJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ2Jpcyc7DQogICAkbGFuZ1sncGxlYXNlLXNldC12YWx1ZSddICAgICAgICAgICAgICAgICAgICAgID0gJ0JpdHRlIFdlcnQgZWluZ2ViZW4nOw0KICAgJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRsYW5nWydmcmllbmRseW5hbWUnXS4nIHd1cmRlIGVyZm9sZ3JlaWNoIGluc3RhbGxpZXJ0ISc7DQogICAkbGFuZ1sncG9zdHVuaW5zdGFsbCddICAgICAgICAgICAgICAgICAgICAgICAgID0gJGxhbmdbJ2ZyaWVuZGx5bmFtZSddLicgd3VyZGUgZXJmb2xncmVpY2ggZGVpbnN0YWxsaWVydC4nOw0KICAgJGxhbmdbJ3ByaW50LXZpZXcnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdEcnVja2Fuc2ljaHQnOw0KICAgJGxhbmdbJ3F1ZXJpZXMtcXVlcmllc19pZC1ub3QtZm91bmQnXSAgICAgICAgICA9ICdEaWUgQWJmcmFnZSBtaXQgSUQgJXMga29ubnRlIG5pY2h0IGdlZnVuZGVuIHdlcmRlbic7DQogICAkbGFuZ1sncXVlcmllcy1xdWVyeS1pbnZhbGlkJ10gICAgICAgICAgICAgICAgID0gJ0RpZSBBYmZyYWdlIGlzdCB1bmcmdXVtbDtsdGlnJzsNCiAgICRsYW5nWydxdWVyaWVzLXJlcG9ydHNfaWQtZW1wdHknXSAgICAgICAgICAgICAgPSAnRGllIEJlcmljaHRzLUlEIGRhcmYgbmljaHQgbGVlciBzZWluJzsNCiAgICRsYW5nWydxdWVyaWVzLXJlcG9ydHNfaWQtaW52YWxpZCddICAgICAgICAgICAgPSAnRGllIEJlcmljaHRzLUlEIGlzdCB1bmcmdXVtbDtsdGlnJzsNCiAgICRsYW5nWydyZXBvcnQnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnQmVyaWNodCc7DQogICAkbGFuZ1sncmVwb3J0LXN1Y2Nlc3NmdWxsLWRlbGV0ZWQnXSAgICAgICAgICAgID0gJ0RlciBCZXJpY2h0ICZxdW90OyVzJnF1b3Q7IHd1cmRlIGdlbCZvdW1sO3NjaHQnOw0KICAgJGxhbmdbJ3JlcG9ydHMtY2F0ZWdvcnktaW52YWxpZCddICAgICAgICAgICAgICA9ICdEaWUgS2F0ZWdvcmllIGlzdCB1bmcmdXVtbDtsdGlnJzsNCiAgICRsYW5nWydyZXBvcnRzLWRlc2NyaXB0aW9uLWludmFsaWQnXSAgICAgICAgICAgPSAnRGllIEJlc2NocmVpYnVuZyBpc3QgdW5nJnV1bWw7bHRpZyc7DQogICAkbGFuZ1sncmVwb3J0cy1uYW1lLWludmFsaWQnXSAgICAgICAgICAgICAgICAgID0gJ0RlciBCZXJpY2h0c25hbWUgaXN0IHVuZyZ1dW1sO2x0aWcnOw0KICAgJGxhbmdbJ3JlcG9ydHMtcmVwb3J0c19pZC1ub3QtZm91bmQnXSAgICAgICAgICA9ICdEZXIgQmVyaWNodCBtaXQgSUQgJXMga29ubnRlIG5pY2h0IGdlZnVuZGVuIHdlcmRlbic7DQogICAkbGFuZ1sncnVuLXJlcG9ydCddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0JlcmljaHQgYW5mb3JkZXJuJzsNCiAgICRsYW5nWydzYXZlJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnU3BlaWNoZXJuJzsNCiAgICRsYW5nWydzYXZlLWNoYW5nZXMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnJkF1bWw7bmRlcnVuZ2VuICZ1dW1sO2Jlcm5laG1lbic7DQogICAkbGFuZ1snc2F2ZWQtY2hhbmdlcyddICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0RpZSAmQXVtbDtuZGVydW5nZW4gd3VyZGVuICZ1dW1sO2Jlcm5vbW1lbic7DQogICAkbGFuZ1snc2V0dGluZ3MnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0VpbnN0ZWxsdW5nZW4nOw0KICAgJGxhbmdbJ3RhYi1jYXRlZ29yaWVzJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICdLYXRlZ29yaWVuJzsNCiAgICRsYW5nWyd0YWItZGVmYXVsdC1jYXRlZ29yeSddICAgICAgICAgICAgICAgICAgPSAnU3RhbmRhcmQnOw0KICAgJGxhbmdbJ3RhYi1lZGl0b3InXSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdFZGl0b3InOw0KICAgJGxhbmdbJ3RhYi1maWx0ZXJzJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdGaWx0ZXInOw0KICAgJGxhbmdbJ3RhYi1vcHRpb25zJ10gICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdPcHRpb25lbic7DQogICAkbGFuZ1sndGFiLXJlcG9ydHMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ0JlcmljaHRlJzsNCiAgICRsYW5nWyd1bmluc3RhbGxfY29uZmlybSddICAgICAgICAgICAgICAgICAgICAgPSAnQWNodHVuZywgYWxsZSBEYXRlbiB3ZXJkZW4gZ2Vsw7ZzY2h0ISBTaWUgc2luZCBzaWNoZXIsIGRhc3MgU2llIGRpZSAnLiRsYW5nWydmcmllbmRseW5hbWUnXS4nIGRlaW5zdGFsbGllcmVuIHdvbGxlbj8nOw0KICAgJGxhbmdbJ3VwZ3JhZGVkJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRsYW5nWydmcmllbmRseW5hbWUnXS4nIHd1cmRlIGVyZm9sZ3JlaWNoIHVwZ2VncmFkZXQhJzsNCiAgICRsYW5nWyd5ZXMnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnSmEnOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAvKiAqICogKiAqICogRGF0YWJhc2UgKiAqICogKiAqICovDQoNCiAgICRvYmpBRE9Db25uZWN0aW9uID0gJHRoaXMtPkdldERiKCk7DQogICAkYXJyRGF0YWJhc2VEZWZpbml0aW9uID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsNCg0KICAgJG9iakRhdGFEaWN0aW9uYXJ5ID0gTmV3RGF0YURpY3Rpb25hcnkoJG9iakFET0Nvbm5lY3Rpb24pOw0KDQogICAvLyBTZWUgdGhlIEFET0RCIG1hbnVhbCBmb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSBmaWVsZCB0eXBlcy4NCiAgIC8vIGh0dHA6Ly9waHBsZW5zLmNvbS9sZW5zL2Fkb2RiL2RvY3MtYWRvZGIuaHRtI21ldGF0eXBlDQogICAvLyBhbmQgc2VlIGxpYi9hZG9kYl9saXRlL2Fkb2RiLWRhdGFkaWN0LmluYy5waHAgZm9yIG1vZGlmaWVycyBldGMuDQoNCiAgIC8qDQogICAgKiBUYWJsZTogIHJlcG9ydHMNCiAgICAqLw0KICAgJGFyckZpZWxkRGVmaW5pdGlvbiA9ICJjYXRlZ29yaWVzX2lkIEkgS0VZIE5PVE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgQygxMjgpIE5PVE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIEMoMjU1KSI7DQogICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX2NhdGVnb3JpZXMnOw0KICAgJHNxbGFycmF5ID0gJG9iakRhdGFEaWN0aW9uYXJ5LT5DcmVhdGVUYWJsZVNRTCgkc3RyVGFibGVOYW1lLCAkYXJyRmllbGREZWZpbml0aW9uLCAkYXJyRGF0YWJhc2VEZWZpbml0aW9uKTsNCiAgICRyZXMgPSAkb2JqRGF0YURpY3Rpb25hcnktPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgaWYgKCRyZXMgIT0gMikgZGllKGJhc2VuYW1lKF9fRklMRV9fKS4nOicuX19MSU5FX18uIiBEQi1FcnJvcjogIiAuICRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpKTsNCiAgIC8vc2VxdWVuY2UNCiAgICRvYmpBRE9Db25uZWN0aW9uLT5DcmVhdGVTZXF1ZW5jZSgkc3RyVGFibGVOYW1lIC4gJ19zZXEnKTsNCiAgIC8vZXZlbnQNCiAgICR0aGlzLT5DcmVhdGVFdmVudCgnVGFibGUgJy4kc3RyVGFibGVOYW1lLicgY3JlYXRlZC4nKTsNCg0KDQogICAvKg0KICAgICogVGFibGU6ICByZXBvcnRzDQogICAgKi8NCiAgICRhcnJGaWVsZERlZmluaXRpb24gPSAicmVwb3J0c19pZCBJIEtFWSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIEMoMTI4KSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBDKDI1NSksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNfaWQgSSI7DQogICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX3JlcG9ydHMnOw0KICAgJHNxbGFycmF5ID0gJG9iakRhdGFEaWN0aW9uYXJ5LT5DcmVhdGVUYWJsZVNRTCgkc3RyVGFibGVOYW1lLCAkYXJyRmllbGREZWZpbml0aW9uLCAkYXJyRGF0YWJhc2VEZWZpbml0aW9uKTsNCiAgICRyZXMgPSAkb2JqRGF0YURpY3Rpb25hcnktPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgaWYgKCRyZXMgIT0gMikgZGllKGJhc2VuYW1lKF9fRklMRV9fKS4nOicuX19MSU5FX18uIiBEQi1FcnJvcjogIiAuICRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpKTsNCiAgIC8vc2VxdWVuY2UNCiAgICRvYmpBRE9Db25uZWN0aW9uLT5DcmVhdGVTZXF1ZW5jZSgkc3RyVGFibGVOYW1lIC4gJ19zZXEnKTsNCiAgIC8vZXZlbnQNCiAgICR0aGlzLT5DcmVhdGVFdmVudCgnVGFibGUgJy4kc3RyVGFibGVOYW1lLicgY3JlYXRlZC4nKTsNCg0KDQogICAvKg0KICAgICogVGFibGU6ICBmaWx0ZXJzDQogICAgKi8NCiAgICRhcnJGaWVsZERlZmluaXRpb24gPSAiZmlsdGVyc19pZCBJIEtFWSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIEMoMTI4KSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfY29sdW1uIEMoMTI4KSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfdHlwZSBDKDE2KSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBfcXVlcnkgQygyNTUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19tdWx0aV9zZWxlY3Rpb24gSSI7DQogICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX2ZpbHRlcnMnOw0KICAgJHNxbGFycmF5ID0gJG9iakRhdGFEaWN0aW9uYXJ5LT5DcmVhdGVUYWJsZVNRTCgkc3RyVGFibGVOYW1lLCAkYXJyRmllbGREZWZpbml0aW9uLCAkYXJyRGF0YWJhc2VEZWZpbml0aW9uKTsNCiAgICRyZXMgPSAkb2JqRGF0YURpY3Rpb25hcnktPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KICAgaWYgKCRyZXMgIT0gMikgZGllKGJhc2VuYW1lKF9fRklMRV9fKS4nOicuX19MSU5FX18uIiBEQi1FcnJvcjogIiAuICRvYmpBRE9Db25uZWN0aW9uLT5FcnJvck1zZygpKTsNCiAgIC8vc2VxdWVuY2UNCiAgICRvYmpBRE9Db25uZWN0aW9uLT5DcmVhdGVTZXF1ZW5jZSgkc3RyVGFibGVOYW1lIC4gJ19zZXEnKTsNCiAgIC8vZXZlbnQNCiAgICR0aGlzLT5DcmVhdGVFdmVudCgnVGFibGUgJy4kc3RyVGFibGVOYW1lLicgY3JlYXRlZC4nKTsNCg0KDQogICAvKg0KICAgICogVGFibGU6ICBxdWVyaWVzDQogICAgKi8NCiAgICRhcnJGaWVsZERlZmluaXRpb24gPSAicXVlcmllc19pZCBJIEtFWSBOT1ROVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRzX2lkIEkgTk9UTlVMTCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgWCBOT1ROVUxMIjsNCiAgICRzdHJUYWJsZU5hbWUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV8nLiR0aGlzLT5HZXRNb2R1bGVBbGlhcygpLidfcXVlcmllcyc7DQogICAkc3FsYXJyYXkgPSAkb2JqRGF0YURpY3Rpb25hcnktPkNyZWF0ZVRhYmxlU1FMKCRzdHJUYWJsZU5hbWUsICRhcnJGaWVsZERlZmluaXRpb24sICRhcnJEYXRhYmFzZURlZmluaXRpb24pOw0KICAgJHJlcyA9ICRvYmpEYXRhRGljdGlvbmFyeS0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICBpZiAoJHJlcyAhPSAyKSBkaWUoYmFzZW5hbWUoX19GSUxFX18pLic6Jy5fX0xJTkVfXy4iIERCLUVycm9yOiAiIC4gJG9iakFET0Nvbm5lY3Rpb24tPkVycm9yTXNnKCkpOw0KICAgLy9zZXF1ZW5jZQ0KICAgJG9iakFET0Nvbm5lY3Rpb24tPkNyZWF0ZVNlcXVlbmNlKCRzdHJUYWJsZU5hbWUgLiAnX3NlcScpOw0KICAgLy9ldmVudA0KICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCdUYWJsZSAnLiRzdHJUYWJsZU5hbWUuJyBjcmVhdGVkLicpOw0KDQoNCiAgIC8qDQogICAgKiBQcmVmZXJlbmNlcw0KICAgICovDQogICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3FsLWJsYWNrbGlzdCcsIGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvb3B0aW9ucy5ibGFja2xpc3QuZGVmYXVsdCcpKTsNCiAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXBvcnQtY3NzJywgZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX0ZJTEVfXykuJy9vcHRpb25zLmNzcy5kZWZhdWx0JykpOw0KDQoNCiAgIC8qDQogICAgKiBQZXJtaXNzaW9ucw0KICAgICovDQogICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnLCAgICAgICAnQWxsb3dlZCB0byByZWFkIHJlcG9ydHMnKTsNCiAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdTUUxSZXBvcnRfQWRtaW4nLCAgICAgICdBY2Nlc3MgdG8gcmVwb3J0IG1hbmFnZW1lbnQnKTsNCiAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdTUUxSZXBvcnRfU3VwZXJBZG1pbicsICdTdXBlci1BY2Nlc3MgKGFsbG93ZWQgdG8gY2hhbmdlIG9wdGlvbnMpJyk7DQoNCg0KICAgLyoNCiAgICAqIERlbW8gRGF0YQ0KICAgICovDQogICByZXF1aXJlX29uY2UoJ2luc3RhbGwuZGVtby1kYXRhLnBocCcpOw0KDQoNCiAgIC8qDQogICAgKiBDYWxsIHVwZ3JhZGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbg0KICAgICogSSBkbyBub3Qga25vdyB3aHksIGJ1dCBDTVMgZG9lcyBub3QhDQogICAgKi8NCiAgICR0aGlzLT5VcGdyYWRlKDAsMCk7DQoNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCiAgIC8vUmVtb3ZlIHRoZSBkYXRhYmFzZSB0YWJsZXMNCiAgICRvYmpBRE9Db25uZWN0aW9uICA9ICR0aGlzLT5HZXREYigpOw0KICAgJG9iakRhdGFEaWN0aW9uYXJ5ID0gTmV3RGF0YURpY3Rpb25hcnkoJG9iakFET0Nvbm5lY3Rpb24pOw0KDQogICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX2NhdGVnb3JpZXMnOw0KICAgJGFyclNRTCA9ICRvYmpEYXRhRGljdGlvbmFyeS0+RHJvcFRhYmxlU1FMKCRzdHJUYWJsZU5hbWUpOw0KICAgJG9iakRhdGFEaWN0aW9uYXJ5LT5FeGVjdXRlU1FMQXJyYXkoJGFyclNRTCk7DQogICAkb2JqQURPQ29ubmVjdGlvbi0+RHJvcFNlcXVlbmNlKCRzdHJUYWJsZU5hbWUuJ19zZXEnKTsNCg0KICAgJHN0clRhYmxlTmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRoaXMtPkdldE1vZHVsZUFsaWFzKCkuJ19yZXBvcnRzJzsNCiAgICRhcnJTUUwgPSAkb2JqRGF0YURpY3Rpb25hcnktPkRyb3BUYWJsZVNRTCgkc3RyVGFibGVOYW1lKTsNCiAgICRvYmpEYXRhRGljdGlvbmFyeS0+RXhlY3V0ZVNRTEFycmF5KCRhcnJTUUwpOw0KICAgJG9iakFET0Nvbm5lY3Rpb24tPkRyb3BTZXF1ZW5jZSgkc3RyVGFibGVOYW1lLidfc2VxJyk7DQoNCiAgICRzdHJUYWJsZU5hbWUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV8nLiR0aGlzLT5HZXRNb2R1bGVBbGlhcygpLidfZmlsdGVycyc7DQogICAkYXJyU1FMID0gJG9iakRhdGFEaWN0aW9uYXJ5LT5Ecm9wVGFibGVTUUwoJHN0clRhYmxlTmFtZSk7DQogICAkb2JqRGF0YURpY3Rpb25hcnktPkV4ZWN1dGVTUUxBcnJheSgkYXJyU1FMKTsNCiAgICRvYmpBRE9Db25uZWN0aW9uLT5Ecm9wU2VxdWVuY2UoJHN0clRhYmxlTmFtZS4nX3NlcScpOw0KDQogICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX3F1ZXJpZXMnOw0KICAgJGFyclNRTCA9ICRvYmpEYXRhRGljdGlvbmFyeS0+RHJvcFRhYmxlU1FMKCRzdHJUYWJsZU5hbWUpOw0KICAgJG9iakRhdGFEaWN0aW9uYXJ5LT5FeGVjdXRlU1FMQXJyYXkoJGFyclNRTCk7DQogICAkb2JqQURPQ29ubmVjdGlvbi0+RHJvcFNlcXVlbmNlKCRzdHJUYWJsZU5hbWUuJ19zZXEnKTsNCg0KICAgJHN0clRhYmxlTmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRoaXMtPkdldE1vZHVsZUFsaWFzKCkuJ19xdWVyaWVzX2ZpbHRlcnMnOw0KICAgJGFyclNRTCA9ICRvYmpEYXRhRGljdGlvbmFyeS0+RHJvcFRhYmxlU1FMKCRzdHJUYWJsZU5hbWUpOw0KICAgJG9iakRhdGFEaWN0aW9uYXJ5LT5FeGVjdXRlU1FMQXJyYXkoJGFyclNRTCk7DQoNCg0KICAgLy9SZW1vdmUgdGhlIHBlcm1pc3Npb24NCiAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdTUUxSZXBvcnRfU3VwZXJBZG1pbicpOw0KICAgJHRoaXMtPlJlbW92ZUV2ZW50KCdSZW1vdmVkIFBlcm1pc3Npb25zJyk7DQoNCg0KICAgLy8gUmVtb3ZlIGFsbCBwcmVmZXJlbmNlcyBmb3IgdGhpcyBtb2R1bGUNCiAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7DQogICAkdGhpcy0+UmVtb3ZlRXZlbnQoJ1JlbW92ZWQgUHJlZmVyZW5jZXMnKTsNCg0KDQogICAvLyBBbmQgYWxsIFRlbXBsYXRlcw0KICAgJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7DQogICAkdGhpcy0+UmVtb3ZlRXZlbnQoJ0RlbGV0ZWQgVGVtcGxhdGVzJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQogICAkY3VycmVudF92ZXJzaW9uICAgPSAkb2xkdmVyc2lvbjsNCiAgICRvYmpBRE9Db25uZWN0aW9uICA9ICR0aGlzLT5HZXREYigpOw0KICAgJG9iakRhdGFEaWN0aW9uYXJ5ID0gTmV3RGF0YURpY3Rpb25hcnkoJG9iakFET0Nvbm5lY3Rpb24pOw0KICAgc3dpdGNoKCRvbGR2ZXJzaW9uKSB7DQogICAgICBjYXNlICIwLjAiOg0KICAgICAgICAgJHN0clRhYmxlTmFtZSA9IGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlXycuJHRoaXMtPkdldE1vZHVsZUFsaWFzKCkuJ19maWx0ZXJzJzsNCiAgICAgICAgICRzcWxhcnJheSA9ICRvYmpEYXRhRGljdGlvbmFyeS0+QWx0ZXJDb2x1bW5TUUwoJHN0clRhYmxlTmFtZSwgImxvb2t1cF9xdWVyeSBYIik7DQogICAgICAgICAkcmVzID0gJG9iakRhdGFEaWN0aW9uYXJ5LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiAgICAgICAgIGlmICgkcmVzICE9IDIpIGRpZShiYXNlbmFtZShfX0ZJTEVfXykuJzonLl9fTElORV9fLiIgREItRXJyb3I6ICIgLiAkb2JqQURPQ29ubmVjdGlvbi0+RXJyb3JNc2coKSk7DQoNCiAgICAgIGNhc2UgIjAuMSI6DQoNCiAgICAgIGNhc2UgIjAuMiI6DQogICAgICAgICAvL3JlcG9ydHMgZmlsdGVycw0KICAgICAgICAgJGFyckZpZWxkRGVmaW5pdGlvbiA9ICJxdWVyaWVzX2lkIEkgS0VZIE5PVE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnNfaWQgSSBLRVkgTk9UTlVMTCI7DQogICAgICAgICAkc3RyVGFibGVOYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfJy4kdGhpcy0+R2V0TW9kdWxlQWxpYXMoKS4nX3F1ZXJpZXNfZmlsdGVycyc7DQogICAgICAgICAkc3FsYXJyYXkgPSAkb2JqRGF0YURpY3Rpb25hcnktPkNyZWF0ZVRhYmxlU1FMKCRzdHJUYWJsZU5hbWUsICRhcnJGaWVsZERlZmluaXRpb24sICRhcnJEYXRhYmFzZURlZmluaXRpb24pOw0KICAgICAgICAgJHJlcyA9ICRvYmpEYXRhRGljdGlvbmFyeS0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQogICAgICAgICBpZiAoJHJlcyAhPSAyKSBkaWUoYmFzZW5hbWUoX19GSUxFX18pLic6Jy5fX0xJTkVfXy4iIERCLUVycm9yOiAiIC4gJG9iakFET0Nvbm5lY3Rpb24tPkVycm9yTXNnKCkpOw0KICAgICAgICAgLy9ldmVudA0KICAgICAgICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCdUYWJsZSAnLiRzdHJUYWJsZU5hbWUuJyBjcmVhdGVkLicpOw0KDQogICAgICBjYXNlICIwLjMiOg0KICAgICAgICAgLy90aGlzIGlzIHRoZSBhY3R1YWwgdmVyc2lvbg0KDQoNCiAgIH0NCg0KICAgLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQogICAkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/options.blacklist.default</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5zZXJ0O3VwZGF0ZTtkZWxldGU7Y3JlYXRlO2FsdGVyO3JlbmFtZTt0cnVuY2F0ZTtkcm9w]]></data>
	</file>
	<file>
	  <filename>/options.css.default</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QENIQVJTRVQgInV0Zi04IjsNCg0KLyoqKiBSZXBvcnQgT1VUUFVUICoqKi8NCg0KLnNxbHJlcG9ydCBoMiB7DQogICBjb2xvcjogIzQ2NDY0NiAhaW1wb3J0YW50Ow0KICAgbWFyZ2luLWxlZnQ6IDJweDsNCn0NCg0KLnNxbHJlcG9ydCBwIHsNCiAgIGNvbG9yOiAjNDY0NjQ2ICFpbXBvcnRhbnQ7DQogICBtYXJnaW46IDBweCAwcHggMHB4IDJweDsNCn0NCg0KLnNxbHJlcG9ydCBwLmZpbHRlciB7DQogICBtYXJnaW4tdG9wOiAyNXB4ICFpbXBvcnRhbnQ7IA0KICAgY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDsNCn0NCi5zcWxyZXBvcnQgcC5maWx0ZXIgYiB7DQogICBjb2xvcjogIzY2NjY2NiAhaW1wb3J0YW50Ow0KfQ0KLnNxbHJlcG9ydF9sZWdlbmQgew0KICAgY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDsNCn0NCi5zcWxyZXBvcnRfbGVnZW5kIGIgew0KICAgY29sb3I6ICM2NjY2NjYgIWltcG9ydGFudDsNCn0NCi5zcWxyZXBvcnRfbGVnZW5kIGEgew0KICAgY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDsNCn0NCi5zcWxyZXBvcnRfbGVnZW5kIGE6bGluayB7IA0KICAgY29sb3I6ICM5OTk5OTkgIWltcG9ydGFudDsNCn0NCg0KLnNxbHJlcG9ydCB0YWJsZSB7DQogICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOw0KICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggNXB4Ow0KICAgZm9udC1zaXplOiAxZW07DQogICBtYXJnaW46IDVweCBhdXRvOw0KICAgd2lkdGg6IDEwMCU7DQp9DQoNCi5zcWxyZXBvcnQgdGFibGUgdGggew0KICAgY29sb3I6ICM0NjQ2NDY7DQogICBoZWlnaHQ6IDNlbTsNCiAgIHBhZGRpbmctbGVmdDogNXB4Ow0KICAgcGFkZGluZy1yaWdodDogNXB4Ow0KICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkZGRkY7DQogICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICAgDQogICBiYWNrZ3JvdW5kOiByZ2IoMjQyLDI0NSwyNDYpOyAvKiBPbGQgYnJvd3NlcnMgKi8NCiAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgyNDIsMjQ1LDI0NiwxKSAwJSwgcmdiYSgyNDAsMjQyLDIzMiwxKSAzNyUsIHJnYmEoMjIzLDIyNiwyMDYsMSkgMTAwJSk7IC8qIEZGMy42KyAqLw0KICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwJSxyZ2JhKDI0MiwyNDUsMjQ2LDEpKSwgY29sb3Itc3RvcCgzNyUscmdiYSgyNDAsMjQyLDIzMiwxKSksIGNvbG9yLXN0b3AoMTAwJSxyZ2JhKDIyMywyMjYsMjA2LDEpKSk7IC8qIENocm9tZSxTYWZhcmk0KyAqLw0KICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDI0MiwyNDUsMjQ2LDEpIDAlLHJnYmEoMjQwLDI0MiwyMzIsMSkgMzclLHJnYmEoMjIzLDIyNiwyMDYsMSkgMTAwJSk7IC8qIENocm9tZTEwKyxTYWZhcmk1LjErICovDQogICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDI0MiwyNDUsMjQ2LDEpIDAlLHJnYmEoMjQwLDI0MiwyMzIsMSkgMzclLHJnYmEoMjIzLDIyNiwyMDYsMSkgMTAwJSk7IC8qIE9wZXJhMTEuMTArICovDQogICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgyNDIsMjQ1LDI0NiwxKSAwJSxyZ2JhKDI0MCwyNDIsMjMyLDEpIDM3JSxyZ2JhKDIyMywyMjYsMjA2LDEpIDEwMCUpOyAvKiBJRTEwKyAqLw0KICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoIHN0YXJ0Q29sb3JzdHI9JyNmMmY1ZjYnLCBlbmRDb2xvcnN0cj0nI2RmZTJjZScsR3JhZGllbnRUeXBlPTAgKTsgLyogSUU2LTkgKi8NCiAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMjQyLDI0NSwyNDYsMSkgMCUscmdiYSgyNDAsMjQyLDIzMiwxKSAzNyUscmdiYSgyMjMsMjI2LDIwNiwxKSAxMDAlKTsgLyogVzNDICovDQogICANCiAgIA0KfQ0KDQoNCi5zcWxyZXBvcnQgdHIgew0KICAgaGVpZ2h0OiAyZW07DQp9DQoNCi5zcWxyZXBvcnQgdHIucm93MSB7DQogICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KfQ0KDQouc3FscmVwb3J0IHRyLnJvdzIgew0KICAgYmFja2dyb3VuZC1jb2xvcjogI0U1RTVFNTsNCn0NCg0KLnNxbHJlcG9ydCB0ZCB7DQogICBjb2xvcjogIzMzMzMzMzsNCiAgIHBhZGRpbmctbGVmdDogNXB4Ow0KICAgcGFkZGluZy1yaWdodDogNXB4Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/report-show.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCiAgIGlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KICAgZWNobyBQSFBfRU9MOw0KDQogICAvL2NoZWNrIHBlcm1pc3Npb24NCiAgIGlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnKSkgew0KICAgICAgZWNobyAkdGhpcy0+Z2V0TWVzc2FnZWJveCgnUGVybWlzc2lvbiBkZW5pZWQhJywgJ2Vycm9yJyk7DQogICAgICByZXR1cm47DQogICB9DQoNCiAgIC8vZ2V0IGNvbmZpZyBmcm9tIENNUw0KICAgJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsNCg0KICAgZGVmaW5lKCdUQUJMRV9UT09MU19VUkwnLCAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy90dC8nKTsNCg0KICAgLy9Mb2FkIGpxdWVyeSBpZiBub3QgYWxyZWFkeSBkb25lDQogICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Jy5QSFBfRU9MLg0KICAgICAgICAnIGlmICh0eXBlb2YgalF1ZXJ5ID09ICJ1bmRlZmluZWQiKSB7ICcuUEhQX0VPTC4NCiAgICAgICAgJyAgICBkb2N1bWVudC53cml0ZShcJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuVEFCTEVfVE9PTFNfVVJMLidqcXVlcnkuanMiPjwvc2NyXCcgKyBcJ2lwdD5cJyk7ICcuUEhQX0VPTC4NCiAgICAgICAgJyB9ICcuUEhQX0VPTC4NCiAgICAgICAgJzwvc2NyaXB0PicuUEhQX0VPTDsNCiAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCIgc3JjPSInLlRBQkxFX1RPT0xTX1VSTC4nanF1ZXJ5LmRhdGFUYWJsZXMubWluLmpzIj48L3NjcmlwdD4nLlBIUF9FT0w7DQogICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIHNyYz0iJy5UQUJMRV9UT09MU19VUkwuJ1plcm9DbGlwYm9hcmQuanMiPjwvc2NyaXB0PicuUEhQX0VPTDsNCiAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCIgc3JjPSInLlRBQkxFX1RPT0xTX1VSTC4nVGFibGVUb29scy5taW4uanMiPjwvc2NyaXB0PicuUEhQX0VPTDsNCiAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJy5UQUJMRV9UT09MU19VUkwuJ1RhYmxlLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+Jy5QSFBfRU9MOw0KICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInLlRBQkxFX1RPT0xTX1VSTC4nVGFibGVUb29scy5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPicuUEhQX0VPTDsNCiAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9zdHlsZS5waHAiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiAvPicuUEhQX0VPTDsNCg0KICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzLycuJHRoaXMtPkdldE5hbWUoKS4nL3N0eWxlLnBocCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIC8+Jy5QSFBfRU9MOw0KICAgZWNobyAnPGRpdiBjbGFzcz0ic3FscmVwb3J0IiBpZD0ic3FscmVwb3J0LScuKCR0aGlzLT5zdHJBY3Rpb24gIT0gJ2RlZmF1bHQnPydmZSc6J2JlJykuJyI+Jy5QSFBfRU9MOw0KDQogICAvL3N0YXkgZmxleGlibGUNCiAgIGlmIChpc3NldCgkdGhpcy0+YXJyUGFyYW1zWydyZXBvcnRfaWQnXSkpIHsNCiAgICAgICRfUE9TVFsncmVwb3J0X2lkJ10gPSAkdGhpcy0+YXJyUGFyYW1zWydyZXBvcnRfaWQnXTsNCiAgIH0NCiAgIGlmIChpc3NldCgkdGhpcy0+YXJyUGFyYW1zWydmaWx0ZXInXSkpIHsNCiAgICAgICRfUE9TVFsnZmlsdGVyJ10gPSAkdGhpcy0+YXJyUGFyYW1zWydmaWx0ZXInXTsNCiAgICAgICRfUE9TVFsnc3FscmVwb3J0X2ZpbHRlciddID0gdHJ1ZTsNCiAgIH0NCg0KICAgaWYgKGlzc2V0KCRfUE9TVFsncmVwb3J0X2lkJ10pKSB7DQogICAgICAkb2JqUmVwb3J0ID0gU1FMUmVwb3J0X1JlcG9ydDo6Z2V0SW5zdGFuY2VCeUlkKChpbnQpJF9QT1NUWydyZXBvcnRfaWQnXSk7DQogICAgICAkYXJyUXVlcmllcyA9ICRvYmpSZXBvcnQtPmdldFF1ZXJpZXMoKTsNCiAgICAgICRhcnJGaWx0ZXJzID0gYXJyYXkoKTsNCiAgICAgIGZvcmVhY2goJGFyclF1ZXJpZXMgQXMgJG9ialF1ZXJ5KSB7DQogICAgICAgICAvL2luaXQgVGFibGVUb29scw0KICAgICAgICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4nLg0KICAgICAgICAgICAgICAnICAgJChkb2N1bWVudCkucmVhZHkoIGZ1bmN0aW9uICgpIHsgJy4NCiAgICAgICAgICAgICAgJyAgICAgICQoXCcjdHQtcXVlcnktJy4kb2JqUXVlcnktPmdldElkKCkuJ1wnKS5kYXRhVGFibGUoIHsgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAic0RvbSI6IFwnbGZydGlwXCcsICcuDQoNCiAgICAgICAgICAgICAgJyAgICAgICAgICAic0RvbSI6IFwnVFI8ImNsZWFyIj5sZnJ0aXBcJywgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAib1RhYmxlVG9vbHMiOiB7ICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNTd2ZQYXRoIjogIicuVEFCTEVfVE9PTFNfVVJMLidjb3B5X2N2c194bHNfcGRmLnN3ZiIgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICB9LCAnLg0KDQovL1RoZSB3b3JkcyBpbiB0aGUgZm9ybWF0IF9WQVJfIGFyZSB2YXJpYWJsZXMgd2hpY2ggYXJlIGR5bmFtaWNhbGx5IHJlcGxhY2VkIGJ5IGphdmFzY3JpcHQNCiAgICAgICAgICAgICAgJyAgICAgICAgICAib0xhbmd1YWdlIjogeyAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICJzUHJvY2Vzc2luZyI6ICJQcm9jZXNzaW5nLi4uIiwgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAgICAic0xlbmd0aE1lbnUiOiAiU2hvdyBfTUVOVV8gZW50cmllcyIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNaZXJvUmVjb3JkcyI6ICJObyBtYXRjaGluZyByZWNvcmRzIGZvdW5kIiwgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAgICAic0VtcHR5VGFibGUiOiAiTm8gZGF0YSBhdmFpbGFibGUgaW4gdGFibGUiLCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICJzTG9hZGluZ1JlY29yZHMiOiAiTG9hZGluZy4uLiIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNJbmZvIjogIlNob3dpbmcgX1NUQVJUXyB0byBfRU5EXyBvZiBfVE9UQUxfIGVudHJpZXMiLCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICJzSW5mb0VtcHR5IjogIlNob3dpbmcgMCB0byAwIG9mIDAgZW50cmllcyIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNJbmZvRmlsdGVyZWQiOiAiKGZpbHRlcmVkIGZyb20gX01BWF8gdG90YWwgZW50cmllcykiLCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICJzSW5mb1Bvc3RGaXgiOiAiIiwgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAgICAic0luZm9UaG91c2FuZHMiOiAiLCIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNTZWFyY2giOiAiU2VhcmNoOiIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgInNVcmwiOiAiIiwgJy4NCiAgICAgICAgICAgICAgJyAgICAgICAgICAgICAib1BhZ2luYXRlIjogeyAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJzRmlyc3QiOiAgICAiRmlyc3QiLCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJzUHJldmlvdXMiOiAiUHJldmlvdXMiLCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICJzTmV4dCI6ICAgICAiTmV4dCIsICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgInNMYXN0IjogICAgICJMYXN0IiAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgICAgIH0sICcuDQogICAgICAgICAgICAgICcgICAgICAgICAgICAgImZuSW5mb0NhbGxiYWNrIjogbnVsbCAnLg0KICAgICAgICAgICAgICAnICAgICAgICAgIH0gJy4NCiAgICAgICAgICAgICAgJyAgICAgIH0gKTsgJy4NCiAgICAgICAgICAgICAgJyAgIH0gKTsgJy4NCiAgICAgICAgICAgICAgJyAgIDwvc2NyaXB0Pic7DQogICAgICAgICAvL2FuZCBnZXQgZmlsdGVycw0KICAgICAgICAgJGFyckZpbHRlcnMgPSBhcnJheV9tZXJnZSgkYXJyRmlsdGVycywgJG9ialF1ZXJ5LT5nZXRGaWx0ZXJzKCkpOw0KICAgICAgfQ0KICAgICAgLy9ldmFsdWF0ZSBmaWx0ZXJzDQogICAgICAkc3RyRmlsdGVyRW5jb2RlZCA9ICcnOw0KICAgICAgaWYgKGlzc2V0KCRfUE9TVFsnZmlsdGVyJ10pKSB7DQogICAgICAgICB0cnkgew0KICAgICAgICAgICAgZm9yZWFjaCgkYXJyRmlsdGVycyBhcyAkb2JqRmlsdGVyKSB7DQogICAgICAgICAgICAgICAkb2JqRmlsdGVyLT5ldmFsdWF0ZUZvcm0oJF9QT1NUWydmaWx0ZXInXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkc3RyRmlsdGVyRW5jb2RlZCA9IFNRTFJlcG9ydF9GaWx0ZXI6OnNlcmlhbGl6ZSgkX1BPU1RbJ2ZpbHRlciddKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiAkZSkgew0KICAgICAgICAgICAgJGFyclBhcmFtcyA9IGV4cGxvZGUoInwiLCAkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICAgICAgICAgICRzdHJMYW5nS2V5ID0gYXJyYXlfc2hpZnQoJGFyclBhcmFtcyk7DQogICAgICAgICAgICBlY2hvICR0aGlzLT5nZXRNZXNzYWdlYm94KCR0aGlzLT5MYW5nKCRzdHJMYW5nS2V5LCAkYXJyUGFyYW1zKSwgJ2Vycm9yJyk7DQogICAgICAgICAgICB1bnNldCgkX1BPU1RbJ3NxbHJlcG9ydF9maWx0ZXInXSk7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIC8vc2hvdyByZXBvcnQNCiAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3NxbHJlcG9ydF9maWx0ZXInXSkgfHwgY291bnQoJGFyckZpbHRlcnMpID09IDApIHsNCg0KICAgICAgICAgLy9zYXZlIG9iamVjdCBpbiBzZXNzaW9uICh0byBiZSBhYmxlIHRvIHVzZSBwb3B1cCBvciBkb3dubG9hZCkNCiAgICAgICAgICMkc3RyQ2FjaGVJZCA9IHVuaXFpZCgkb2JqUmVwb3J0LT5nZXRJZCgpLidfJyk7DQogICAgICAgICAkc3RyQ2FjaGVJZCA9ICRvYmpSZXBvcnQtPmdldE5hbWVFbmNvZGVkKCk7DQogICAgICAgICAkX1NFU1NJT05bJ1NRTFJlcG9ydCddWydjYWNoZSddWyRzdHJDYWNoZUlkXSA9IHNlcmlhbGl6ZSgkb2JqUmVwb3J0KTsNCg0KICAgICAgICAgLy9kaXNwbGF5IHRoZSByZXBvcnQNCiAgICAgICAgIGVjaG8gJG9ialJlcG9ydC0+Z2V0SFRNTCgpLlBIUF9FT0w7DQoNCiAgICAgICAgIC8vamF2YXNjcmlwdCBhbmQgcG9wdXAgc3R1ZmYNCiAgICAgICAgICRzdHJQb3B1cExpbmsgPSAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9kYXRhLnBocD8nLkNNU19TRUNVUkVfUEFSQU1fTkFNRS4nPScuJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXS4nJmNJZD0nLiRzdHJDYWNoZUlkOw0KICAgICAgICAgJHN0ckNTVkxpbmsgPSAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9kYXRhLnBocD8nLkNNU19TRUNVUkVfUEFSQU1fTkFNRS4nPScuJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXS4nJmNJZD0nLiRzdHJDYWNoZUlkLicmY3N2PTEnOw0KICAgICAgICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicuUEhQX0VPTC4nZnVuY3Rpb24gcG9wdXAodXJsKSB7Jy5QSFBfRU9MLid2YXIgbndsID0gKHNjcmVlbi53aWR0aC02MjApLzI7Jy5QSFBfRU9MLid2YXIgbndoID0gKHNjcmVlbi5oZWlnaHQtNDUwKS8yOycuUEhQX0VPTC4ncG9wdXA9d2luZG93Lm9wZW4odXJsLCBcJ1JlcG9ydCBOYW1lIFBSSU5UXCcsIFwndG9vbGJhcj15ZXMsbG9jYXRpb249bm8sZGlyZWN0b3JpZXM9bm8sc3RhdHVzPW5vLG1lbnViYXI9eWVzLHNjcm9sbGJhcnM9eWVzLHJlc2l6YWJsZT15ZXMsd2lkdGg9NjIwLGhlaWdodD00NTAsbGVmdD1cJytud2wrXCcsdG9wPVwnK253aCtcJ1wnKTsnLlBIUF9FT0wuJ3BvcHVwLndpbmRvdy5mb2N1cygpOycuUEhQX0VPTC4nfScuUEhQX0VPTC4nPC9zY3JpcHQ+Jy5QSFBfRU9MOw0KICAgICAgICAgZWNobyAnPHAgY2xhc3M9InNxbHJlcG9ydF9sZWdlbmQiPjxiPicuJHRoaXMtPkxhbmcoJ2Z1cnRoZXItdXNhZ2UnKS4nPC9iPjxiciAvPic7DQogICAgICAgICBlY2hvICc8YSBocmVmPSJqYXZhc2NyaXB0OnBvcHVwKFwnJy4kc3RyUG9wdXBMaW5rLidcJykiPicuJHRoaXMtPkxhbmcoJ3ByaW50LXZpZXcnKS4nPC9hPiB8ICcuDQogICAgICAgICAgICAgICc8YSBocmVmPSInLiRzdHJDU1ZMaW5rLiciPicuJHRoaXMtPkxhbmcoJ2Nzdi1kb3dubG9hZCcpLic8L2E+JzsNCiAgICAgICAgIGlmICgkdGhpcy0+c3RyQWN0aW9uICE9ICdkZWZhdWx0Jykgew0KICAgICAgICAgICAgZWNobyAnIHwgJy4kdGhpcy0+TGFuZygnZnJvbnRlbmQtY29kZS1zbmlwcGV0JykuJzogJy4ne1NRTFJlcG9ydCByZXBvcnQ9Jy4kb2JqUmVwb3J0LT5nZXRJZCgpLihpc3NldCgkX1BPU1RbJ2ZpbHRlciddKT8nIGZpbHRlcj0iJy4kc3RyRmlsdGVyRW5jb2RlZC4nIic6JycpLid9Jy5QSFBfRU9MOw0KICAgICAgICAgfQ0KICAgICAgICAgZWNobyAnPC9wPic7DQogICAgICB9DQogICAgICAvL3Nob3cgZmlsdGVycyBhcyBmaXJzdCBzdGVwDQogICAgICBlbHNlIHsNCiAgICAgICAgIGVjaG8gJzxmb3JtIG1ldGhvZD0icG9zdCI+Jy5QSFBfRU9MOw0KICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVwb3J0X2lkIiB2YWx1ZT0iJy4kb2JqUmVwb3J0LT5nZXRJZCgpLiciIC8+Jy5QSFBfRU9MOw0KICAgICAgICAgZWNobyAnPHA+PGI+Jy4kdGhpcy0+TGFuZygnY2hvb3NlLWZpbHRlcicpLic6PC9iPjwvcD4nOw0KICAgICAgICAgZm9yZWFjaCgkYXJyRmlsdGVycyBhcyAkb2JqRmlsdGVyKSB7DQogICAgICAgICAgICBlY2hvICc8cD4nLiRvYmpGaWx0ZXItPmdldEZvcm0oKS4nPC9wPicuUEhQX0VPTDsNCiAgICAgICAgIH0NCiAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNxbHJlcG9ydF9maWx0ZXIiIHZhbHVlPSInLiR0aGlzLT5MYW5nKCdydW4tcmVwb3J0JykuJyIvPicuUEhQX0VPTDsNCiAgICAgICAgIGVjaG8gJzwvZm9ybT4nLlBIUF9FT0w7DQogICAgICAgICBlY2hvICc8cD4mbmJzcDs8L3A+JzsNCiAgICAgIH0NCiAgIH0NCg0KICAgZWNobyAnPC9kaXY+Jy5QSFBfRU9MOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/SQLReport.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9jbGFzc2VzL1NRTFJlcG9ydF9FeHBvcnRhYmxlLnBocCc7DQpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9jbGFzc2VzL1NRTFJlcG9ydF9DYXRlZ29yeS5waHAnOw0KcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pLicvY2xhc3Nlcy9TUUxSZXBvcnRfRmlsdGVyLnBocCc7DQpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9jbGFzc2VzL1NRTFJlcG9ydF9GaWx0ZXJMb29rdXAucGhwJzsNCnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL2NsYXNzZXMvU1FMUmVwb3J0X0ZpbHRlclBlcmlvZC5waHAnOw0KcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pLicvY2xhc3Nlcy9TUUxSZXBvcnRfUXVlcnkucGhwJzsNCnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL2NsYXNzZXMvU1FMUmVwb3J0X1JlcG9ydC5waHAnOw0KDQovKioNCiAqIENsYXNzIGZvciBNb2R1bGUgU1FMUmVwb3J0DQogKiBAYXV0aG9yIE9saXZlcg0KICovDQpjbGFzcyBTUUxSZXBvcnQgZXh0ZW5kcyBDTVNNb2R1bGUgew0KDQogICAvKioNCiAgICAqIEB2YXIgU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyAkc3RyTW9kdWxlSWQgPSAnJzsNCg0KICAgLyoqDQogICAgKiBAdmFyIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgJHN0clJldHVybklkID0gJyc7DQoNCiAgIC8qKg0KICAgICogQHZhciBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljICRzdHJBY3Rpb24gPSAnZGVmYXVsdCc7DQoNCiAgIC8qKg0KICAgICogQHZhciBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljICRzdHJBY3RpdmVUYWIgPSAnb3ZlcnZpZXcnOw0KDQogICAvKioNCiAgICAqIEB2YXIgQXJyYXkNCiAgICAqLw0KICAgcHVibGljICRhcnJQYXJhbXMgPSBhcnJheSgpOw0KDQogICAvKioNCiAgICAqIGp1c3QgYSBkZWJ1ZyBmdW5jdGlvbg0KICAgICogQHBhcmFtIG1peGVkICRtaXhlZA0KICAgICovDQogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGR1bXAoJG1peGVkLCAkc3RyQ2FwdGlvbj0nJykgew0KICAgICAgZWNobyAnPHByZT4nLiRzdHJDYXB0aW9uLlBIUF9FT0wucHJpbnRfcigkbWl4ZWQsIHRydWUpLic8L3ByZT4nOw0KICAgfQ0KDQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTUUxSZXBvcnQNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgew0KICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEJ1aWxkcyBhIG5pY2UgSFRNTCBhcnJvdW5kIHRoZSBtZXNzYWdlcw0KICAgICogQHBhcmFtIEFycmF5ICRhcnJNZXNzYWdlcw0KICAgICogQHBhcmFtIFN0cmluZyAkc3RyVHlwZSAoaGludCwgd2FybiwgZXJyb3IpDQogICAgKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGdldE1lc3NhZ2Vib3goJGFyck1lc3NhZ2VzLCAkc3RyVHlwZT0naGludCcpIHsNCiAgICAgIGlmICghaXNfYXJyYXkoJGFyck1lc3NhZ2VzKSkgew0KICAgICAgICAgJGFyck1lc3NhZ2VzID0gYXJyYXkoJGFyck1lc3NhZ2VzKTsNCiAgICAgIH0NCg0KICAgICAgJGFyckNvbmZpZyA9ICR0aGlzLT5jbXMtPkdldENvbmZpZygpOw0KICAgICAgJHN0ckltYWdlVVJMID0gJGFyckNvbmZpZ1sicm9vdF91cmwiXS4nL21vZHVsZXMvJy5fX0NMQVNTX18uJy9pbWFnZXMvaWNvbl8nLiRzdHJUeXBlLicuZ2lmJzsNCiAgICAgICRvdXRwdXQgPSAnDQogICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICAgICAgLm1za19lcnJvcmNvbnRhaW5lciB7DQogICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4IDEwcHggMTBweCAxMHB4Ow0KICAgICAgICAgICAgICAgY29sb3I6ICMwMDAwMDA7DQogICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgIGhlaWdodDogMSU7DQogICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMjBweDsNCiAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7DQogICAgICAgICAgICAgICB3aWR0aDogYXV0bzsNCiAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwcHg7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAubXNrX2Vycm9yY29udGFpbmVyIHVsIGxpIHsNCiAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmUgb3V0c2lkZSBub25lICFpbXBvcnRhbnQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAubXNrX2Vycm9yIHsNCiAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0ZFRjVGNTsNCiAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRUUyRTI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAubXNrX2hpbnQgew0KICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZSByZXBlYXQgc2Nyb2xsIDAgMCAjRjlGQkY3Ow0KICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0U4RUZERTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC5tc2tfd2FybiB7DQogICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lIHJlcGVhdCBzY3JvbGwgMCAwICNGRUY0RTc7DQogICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkRFQUQwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgIDxkaXYgY2xhc3M9Im1za19lcnJvcmNvbnRhaW5lciBtc2tfJy4kc3RyVHlwZS4nIj4NCiAgICAgICAgICAgIDxpbWcgc3JjPSInLiRzdHJJbWFnZVVSTC4nIiBhbGlnbj0ibGVmdCIgLz4NCiAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nLWxlZnQ6IDQwcHg7IHBhZGRpbmctdG9wOiA1cHg7Ij4nOw0KICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFyck1lc3NhZ2VzIGFzICRzdHJNZXNzYWdlKSB7DQogICAgICAgICAgICAgICAgICAkb3V0cHV0IC49IFBIUF9FT0wuJyAgIDxsaT4nLiRzdHJNZXNzYWdlLic8L2xpPic7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAkb3V0cHV0IC49ICcNCiAgICAgICAgICAgIDwvdWw+DQogICAgICAgICA8L2Rpdj4nOw0KDQogICAgICByZXR1cm4gJG91dHB1dDsNCiAgIH0NCg0KDQogICAvKiAqICogKiAqICogKiBDTVMgTW9kdWxlIFN0dWZmICogKiAqICogKiAqICovDQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSB7DQogICAgICByZXR1cm4gX19DTEFTU19fOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2R1bGVBbGlhcygpIHsNCiAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCR0aGlzLT5HZXROYW1lKCkpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgew0KICAgICByZXR1cm4gJzAuMyc7DQogICB9DQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgew0KICAgICAgcmV0dXJuICcxLjkuMCc7DQogICB9DQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsNCiAgICAgIHJldHVybiAnT2xpdmVyIEpvbyZzemxpZzsnOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCl7DQogICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluLWRlc2NyaXB0aW9uJyk7DQogICB9DQoNCiAgLyoqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7DQogICAgICByZXR1cm4gJyc7ICR0aGlzLT5MYW5nKCdoZWxwLWNvbnRleHQnKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgew0KICAgICAgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvY2hhbmdlbG9nLmluYycpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gQm9vbGVhbg0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7DQogICAgIHJldHVybiB0cnVlOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gdm9pZA0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCiAgICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOw0KICAgfQ0KDQogICAvKioNCiAgICAqIEByZXR1cm4gU3RyaW5nDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQogICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsNCiAgICAgIHJldHVybiAkdGhpcy0+TGFuZygndW5pbnN0YWxsX2NvbmZpcm0nKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICovDQogICBmdW5jdGlvbiBEZWZhdWx0TGFuZ3VhZ2UoKSB7DQogICAgICByZXR1cm4gJ2RlX0RFJzsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBAcmV0dXJuIEJvb2xlYW4NCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgew0KICAgICAgcmV0dXJuIHRydWU7DQogICB9DQoNCiAgIC8qKg0KICAgICogQHJldHVybiBTdHJpbmcNCiAgICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsNCiAgICAgIHJldHVybiAnZXh0ZW5zaW9ucyc7IC8vIGV4dGVuc2lvbnMgfCBjb250ZW50DQogICB9DQoNCiAgIC8qKg0KICAgICogQHJldHVybiBCb29sZWFuDQogICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignU1FMUmVwb3J0X1JlYWQnKTsNCiAgIH0NCg0KICAgLyoqDQogICAgKiBiZWZvcmUgY2FsbGluZyBwYXJlbnQsIHdlIHN0b3JlIHRoZSBwYXJhbXMNCiAgICAqDQogICAgKiBAcGFyYW0gc3RyaW5nIE5hbWUgb2YgdGhlIGFjdGlvbiB0byBwZXJmb3JtDQogICAgKiBAcGFyYW0gc3RyaW5nIFRoZSBJRCBvZiB0aGUgbW9kdWxlDQogICAgKiBAcGFyYW0gc3RyaW5nIFRoZSBwYXJhbWV0ZXJzIHRhcmdldGVkIGZvciB0aGlzIG1vZHVsZQ0KICAgICogQHJldHVybiBzdHJpbmcgb3V0cHV0IFhIVE1MLg0KICAgICovDQogICBmdW5jdGlvbiBEb0FjdGlvbigkbmFtZSwkaWQsJHBhcmFtcywkcmV0dXJuSWQ9JycpIHsNCiAgICAgIC8vc2V0IGF0dHJpYnV0ZXMgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1zIChJIGRvbid0IGxpa2UgdmFyaWFibGUgYXBwZWFyaW5nIGZyb20gbm93aGVyZSkNCiAgICAgICR0aGlzLT5zdHJNb2R1bGVJZCA9ICRpZDsNCiAgICAgICR0aGlzLT5zdHJSZXR1cm5JZCA9ICR0aGlzLT5zdHJSZXR1cm5JZDsNCiAgICAgICR0aGlzLT5zdHJBY3Rpb24gICA9ICRuYW1lOw0KICAgICAgJHRoaXMtPmFyclBhcmFtcyAgID0gJHBhcmFtczsNCg0KICAgICAgLy9pZiB3ZSBnb3QgYSBuZXcgdGFiLCB3ZSBrZWVwIGl0IGluIG1pbmQNCiAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3RhYiddKSkgew0KICAgICAgICAgJHRoaXMtPnN0ckFjdGl2ZVRhYiA9ICRfUE9TVFsndGFiJ107DQogICAgICB9DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1sndGFiJ10pKSB7DQogICAgICAgICAkdGhpcy0+c3RyQWN0aXZlVGFiID0gJHBhcmFtc1sndGFiJ107DQogICAgICB9DQoNCiAgICAgIC8vbm93IGNhbGwgdGhlIHBhcmVudCBmdW5jdGlvbg0KICAgICAgcGFyZW50OjpEb0FjdGlvbigkbmFtZSwkaWQsJHBhcmFtcywkcmV0dXJuSWQpOw0KICAgfQ0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/style.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNRTFJlcG9ydCAoYykgMjAxMSBieSBPbGl2ZXIgSm9vw58NCiMNCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgcG9zaWJpbGl0eSB0bw0KIyAgc2ltcGx5IGNyZWF0ZSByZXBvcnRzIHVzaW5nIHNxbCBzeW50YXguDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCg0KLy9zdGFydCBDTVMNCiRDTVNfQURNSU5fUEFHRT0xOw0KJHBhdGggPSBkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKTsNCnJlcXVpcmVfb25jZSgkcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnaW5jbHVkZS5waHAnKTsNCg0KDQovL2dldCBtb2R1bGUgb2JqZWN0DQokY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOw0KJG1vZHVsZXMgPSAkZ0Ntcy0+bW9kdWxlczsNCiRvYmpTUUxSZXBvcnQgPSAkbW9kdWxlc1siU1FMUmVwb3J0Il1bJ29iamVjdCddOw0KDQovL3NlbmQgaGVhZGVyDQpoZWFkZXIoIkV4cGlyZXM6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIiwgdGltZSgpKzM2NDAwKSAuICIiKTsNCmhlYWRlcigiTGFzdC1Nb2RpZmllZDogIiAuIGdtZGF0ZSgiRCwgZCBNIFkgSDppOnMiKSAuICIgR01UIik7DQpoZWFkZXIoJ0NvbnRlbnQtdHlwZTogdGV4dC9jc3MnKTsNCg0KLy9zZW5kIGNzcyB0byBicm93c2VyDQplY2hvICRvYmpTUUxSZXBvcnQtPkdldFByZWZlcmVuY2UoJ3JlcG9ydC1jc3MnKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/tt/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/tt/copy_cvs_xls_pdf.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/tt/images/@eaDir/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/tt/images/@eaDir/Thumbs.db@SynoEAStream</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAUWBwACAABNYWMgT1MgWCAgICAgICAgAAIAAAAJAAAAMgAAAF4AAAACAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQVRUUgAAAAAAAACQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAkAAAAAAAAAxlbmNyeXB0YWJsZQAA]]></data>
	</file>
	<file>
	  <filename>/tt/images/back_disabled.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAHoAAQADAQAAAAAAAAAAAAAAAAYFBwgKAQEBAAAAAAAAAAAAAAAAAAAAARAAAAQDBAUHDQEAAAAAAAAAAQIEBREDBgASEwchMRQVNkFRkTIjNBZhcYHB4UJSgjNDZUYXCBEBAAICAwAAAAAAAAAAAAAAAAERITFBcZH/2gAMAwEAAhEDEQA/AOvdZWSqUoOQs+ABDQAhoD12ChaE/wBhZVZo5gVZltlxW6KuH2hUJ1VXr6ZA7rSrEsBYnQ7hUVWmKZiWVEWbPNjI0s6fNSYJyqAknApDA1/obljd4CHiHChD7ew9XX8WmxcM353UjTGctJvWXlYq32VTj3dlucin6jdqbUOCUCmJObXCe0K0kxwZ1suYYilHOxEyggwOQYAINJ0C5JZQZaZAMM1jy5bW5hboCmltyFMRMXBNdmDNMYscQ4GklAbxhHVyWBf4l7X6o8Rx63Lsfn12UWqd/wBq3mo45heNq3PDX7kdMOeySdoQdqgPHHp3Pz9PttV4He3j+1d//H3r1zo2mHy3fLYnr//Z]]></data>
	</file>
	<file>
	  <filename>/tt/images/back_enabled.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAJAAAAIDAAAAAAAAAAAAAAAAAAcIBQYKAQABBAMAAAAAAAAAAAAAAAAAAQMFBgQHCBAAAAUCAQcHDAMAAAAAAAAAAQIDBAURBgcAITESExQIUZEyIzQVNkFhcYHB4UJSgjNDFmVGFxEAAgAFAgQEBwAAAAAAAAAAAQIAEQMEBSEGMUESB1GxIhTwYZFCghMj/9oADAMBAAIRAxEAPwDXu8vJ0k4OQq9ACmYBDMHtyIIXaweNXBvFXE+7sIsNMQY2/LssOIWlbycWuIy9sW+olIsowYR1dTUDwbu4iOXtFmTVZwq02RyuQROBSGsdfaeetNurum6t3p4Z7pbdXbTrqMlSoOkcZdNNiSZcpT1kwLmi1f2ysDWC9UvkCB5mCJ/ocltu0BT9h2VKfj3Ho6fmz5VyMjSFW4jMO7b4gMP7jwruyfu6CgbiICT91Zd0SNrybhECHTUj3y0esmnKwb4ihiO2DkqrVymNDkqBTFsO2M+Ns5mllzaWl8lM60blC9Jh+LK6sPtZWBB8RMFi4oe4omkGZJ81MiPjwMKTwf8ACow4SbquRtba8YvacjbrqPjHLBJNooJhk4hykm+aGMZVB1smphECmVSENB65g3h3Y7x4TuLsOwwmNtBj7i1vlqNbqPQP5VUZkcaOJsomwV+HpkJxD4zFVbG8etUb9gZJdXPiDIjl5Q4n7L1v3R8R16Xl3P06cubpRPTgTz+9d5uPHNNY2juemn4K56cuQYDxiEHeqD449fc/Lz+/JYXlFd6+v9q7f/H62tqc280+nV8+RCfWP//Z]]></data>
	</file>
	<file>
	  <filename>/tt/images/copy.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAAHeTXxYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTg2OUIwRDU3MTRGMTFERkE4ODk4NjJCQkNBODUwREUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTg2OUIwRDY3MTRGMTFERkE4ODk4NjJCQkNBODUwREUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFODY5QjBEMzcxNEYxMURGQTg4OTg2MkJCQ0E4NTBERSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFODY5QjBENDcxNEYxMURGQTg4OTg2MkJCQ0E4NTBERSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjvI5ooAAAT8SURBVHjaYvz//z8DMmACEV+/fv1/+vTp/3ABkKpTp06BVbCAiIqKin3fv39nBrEBAogR2QymO3fu/ADp//z583+mHz9+MOzcuZPh79+/DMxAQv/Bgwfv9+/ffwUgAJFjjAJACAPBPRGOQGxT5gfp/Z+v9AWWsbAw3UGaq4dhJp055xWRNyJQa8VaC2b2ZLKUAiKCu2OMgdbaP3jOwd4bqoreO5g54SeAGNG9AwNgRwON+g8yFmSPpKQkw4wZM1zAOj59+gSWAGFGRkaG+/fv/wTrYGZmBuPy8nKwZGpqKsQB//79Y3j27BmDsbExQ2dnJ8O3b98gEsBAYRAWFmZwcnICBSNYIdiopqamHUC7uIDmgxT+ADrmLUAANskYhYEQiKJDgqxsb2lpu6cQ9jDpt/IeKTzDnkKwEoRtPcGeIGGFEP+AkiKCWDjfef+PAzeE8Goepo57nifN88ymr+uinPOzQT62baMhKqW8lVJTJ0crtIQ9YwzXxBg/67reb79hCCE4b4jAm1KiNm7y3pOUkrTWdUSNBQSMsM8FcVtraVkWNosx46GRdI8IIuA2ftr3nXqmzjm+Q81fETZeb9+BBcdx8FlrHSRfAfioetQKgSC8kReFpNITKFgJr7FIKR7EA1h4BzstxEoQvIGtEBG8gJZewkawMCRFgjwy3zzWxCJZWNbZnW9+v/HPZv+32FNd1y+O44zSEqwSGdkjIpjnWRCPFdd1hed5dxAeLMt6QDEQCoiiqioTFIqGYQjTND/WdX0+VU+SSIJs2+YTLQBI1/UnYvr1AOERZYaCBGKRdbFtG8sEQmVvR04AoSASjHD7vhcYrmmaRBRF3KvToB+CchfR/bZtxTiOXJQ8z/kORg/QsizsSTYQnS+KQgRBwN4AwkmE/Sm59AAQ8mqahnk4DINIkoQnGnlJPeU3I6SBrusE/T34LsuyQ1kS4SKFfd85LORQliXHH4ahqKqK7+HpBIIlXGiaxicYjVDjOOZc8C1bcoDSNH0j2rxSOBqBHmlfyBN4eaO9E+CLPH3SFL/7vi++Beiz/FUTCIIwviYQC+G8JjnBg4CNwhVBsBR8ADtfIw9jlTyArS9wzRVnevs0NhLwIQLJ/Ib7ZI1nFhbP3dn95t83sxcJaxWja+pldrgj9yqGGnEsWWfK5ubMl81vaU6oLujEME+/zGazj+Fw+CA+ulBjCmuE1EqzF9zRaBT6/b6D4kfKCaXucDi8Wl16n8/nYbFYXCdR4/yfODcEIOAsy0Kapn5xXddU2qD6xR4KWO16GwwGn+a6pwvaxgPzY7cpgCIcYzwe+/rxePT8khz7RVH4r8Xm2cLwSF63WiQg3EXCCoD/4hv1sNfrOb9YX6/XXk+whn3kFZubFsld0lLNCFcRXC7cbDbBOuY5fuxtt9uw3+/DarVyOd3TCgQnFQsmwgIBkD205pvChgyEYR8y0VeIH5wQyVqBEI5BRDKRiMpJphmHPPug83K5dHCKPjL2hHCXoxRgrUBoL37EPCEeZFhZlsG6pK8RB9arqgqTycSB5AFxT/y6AkJQlqgNKQH0OMG9XECP4BvA6XTqVqiJIh/z8KZFgPCtrOM/LuMxIkVwy263C3me07b9HSLOiQaiyVV6W3u4N827+JzMISZMfK/ewzozSZJgVeS8h1JMnTXZ7ul0uosrwXnylPlndBrF/s7OrQP0Mt39C/jw/0+zWlwxAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/tt/images/copy_hover.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAAHeTXxYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABKdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wUmlnaHRzOk1hcmtlZD0iRmFsc2UiIHhtcFJpZ2h0czpXZWJTdGF0ZW1lbnQ9Imh0dHA6Ly9ibG9nLmFkZGljdGVkdG9jb2ZmZWUuZGUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTg2OUIwRDI3MTRGMTFERkE4ODk4NjJCQkNBODUwREUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTg2OUIwRDE3MTRGMTFERkE4ODk4NjJCQkNBODUwREUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTIE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmUz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]]></data>
	</file>
	<file>
	  <filename>/tt/images/csv.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/csv_hover.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/forward_disabled.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAHoAAAICAwAAAAAAAAAAAAAAAAIFBAYHCAoBAQEAAAAAAAAAAAAAAAAAAAABEAAABAMEBAoLAAAAAAAAAAABAgMEEQUGABIUByExEwhBUZEygiM0FRY2YXGB4UJSM0NlRhcRAQACAwEAAAAAAAAAAAAAAAABESExQZH/2gAMAwEAAhEDEQA/AOpPeK3oJDu3ZW1VnBWbWoZpS1HuKYTm7KlWLeZz3D1LVkipFJ0yYOXjBN4WXuZ8RwsQFQUFBI+zA57pDBOyr3mMvs7aWQrLK6tpXVsiWApVlGR1UH8rcnJtAYT2TPkWs4kEzKmIGFs8QQXAogN2AgIgx/ocy23aAh4h2UIfbwPN1/NpsXDV7eGpGXZ0Zf1BlpNngtpZUEypJw+VIJRPhqdrKnqnVTKUwwisWS3Ola6QdG0Zlnl2IK0TS0pkb3CAzczRsiklM5ikUpQg9XSAgKEvBeAggIFHhEdNoD8S9b9UfMcedw4P167KLYnn+K7zceeYXjau54a/gjphx2STskHFQHzx7e5+Pl99qvFd6+P7V2/8fevXOTEw6N302J6//9k=]]></data>
	</file>
	<file>
	  <filename>/tt/images/forward_enabled.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAI4AAAIDAQAAAAAAAAAAAAAAAAUHBAYICgEAAQUBAAAAAAAAAAAAAAAAAQADBAUGBxAAAAQDBAUHDQAAAAAAAAAAAQIDBBEFBgASBwgxEyMUFSFRkTI0FjZBYXGB4UJSgjNDZUYXEQABAwMDAgUFAQAAAAAAAAABEQIDAAQFITESBgdBYYGRMvBRsSITFP/aAAwDAQACEQMRAD8A6j8yGaWnMs+FNW4zVw3n8xpGjF6YJOWtLsm0yngNqlq2RUgk6ZMHLxgk7LL3U/TXWICoKCgkfVgc90hrbCYa7z+UixFgn+ybkGAqhLWuemgJ14oNN/Km5pWwRmV/xG/ulScIc0mGmPVJI1thJX0lrWn1bhHCstXOnMJS6UT1oS6oJK9SbTmnpoVMQMLV83brgUQNcuiAic1gcx07eHH5u3lt7seDwij7tOzh5tJFCKaKdnOFwc363o1/Q5lru0BDvDqoQ+3uPV0/Fy2qKe0rFWcigH2YDA6usIJa+bs3VXP6GAXThcqKTdpIsQ6SqWYLHMJTjs2EmVEClKJjjAoBEQtuu2ufxfSvW9h1DmRI7HWjpHuawK5xEMgYwBR83lrSSQGgknQGoV/BJcWb4IU5uAGuw1Cn0FAcD8vGEGAx0ZrR8kbt6qGWcNmFQpLLN3MwRMmUFU3SSKxEXaRjheAFinApgAxQKYI21XcvvX1P3ID7G8EMOE/pzbEI4y4EH9Tz48mlNEYW6KCXCo2PxNvYo9imZEVT66L+abHeXa/VHxHHreXc/TptxtKtVpTz/euJuPHMLxtHB4afcjyw57I0jvQQd6gPjj18H5+n22NHwqu7eP7V2/8AH3r1zo3mHy3fPZUPev/Z]]></data>
	</file>
	<file>
	  <filename>/tt/images/pdf.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/pdf_hover.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAAHeTXxYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABKdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wUmlnaHRzOk1hcmtlZD0iRmFsc2UiIHhtcFJpZ2h0czpXZWJTdGF0ZW1lbnQ9Imh0dHA6Ly9ibG9nLmFkZGljdGVkdG9jb2ZmZWUuZGUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDMyNzk5OEY3MTk5MTFERkE4ODk4NjJCQkNBODUwREUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDMyNzk5OEU3MTk5MTFERkE4ODk4NjJCQkNBODUwREUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTIE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOjAy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]]></data>
	</file>
	<file>
	  <filename>/tt/images/print.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/print_hover.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/sort_asc.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAtUExURfz8/+nr/7u//o2U/tbZ/6es/snM//f3//P0//v7/5GY/pqg/qSq/oyT/v///5DcV7sAAAAPdFJOU///////////////////ANTcmKEAAABFSURBVHja1M7JDQAgDAPBcJ+m/3IBISFIaIB9WfMyNRntlaRRDcI8NLeYYRQzDcDdpsww2MvcJBQ6zGLl2b/X53+sCzAA1PgS9UpksrIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/tt/images/sort_asc_disabled.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAnUExURf7+/uTk5O/v7/j4+PPz8+rq6vv7+/39/eDg4N7e3uPj49zc3P///5Oh5+8AAAANdFJOU////////////////wA96CKGAAAAQklEQVR42tTOuxIAEAxE0UTEa/3/9xo0hNG71c6pluoZvRaVeJiDWgsZEGMKgHcT9PxmPCzRYh4zZ17dPv9jTYABAN8tEESKzzNSAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/tt/images/sort_both.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAnUExURf7+/uTk5O/v7/j4+PPz8+rq6vv7+/39/eDg4N7e3uPj49zc3P///5Oh5+8AAAANdFJOU////////////////wA96CKGAAAAYElEQVR42oyQSQ4AIQgEUcSt5//vnXE5ACZm+kQqBAroOUO3ino5WIR4lhvAjgmAYBljJBkWJqukWMJKdFbeOe6+pBjViYLZsQay9RuLxTl/gi37e2WLaFY6/fqfyivAAJZtD5sIf8u6AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/tt/images/sort_desc.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAtUExURfz8/+nr/7u//o2U/tbZ/6es/snM//f3//P0//v7/5GY/pqg/qSq/oyT/v///5DcV7sAAAAPdFJOU///////////////////ANTcmKEAAABCSURBVHjaYuDDBAxDVoyNFwJYkMQYuMFCrCh6WUBCzIyo5rECxZjQ7GBk5uXiQLeXiZcNwy3sPAyY7uPE62aAAAMAUcUS9d3MkNkAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/tt/images/sort_desc_disabled.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAMAAABFjsb+AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAnUExURf7+/uTk5O/v7/j4+PPz8+rq6vv7+/39/eDg4N7e3uPj49zc3P///5Oh5+8AAAANdFJOU////////////////wA96CKGAAAAQUlEQVR42mLgwQQMQ1aMiRsCWJDEGDjAQowoelnAYsyo5jEChVjR7GDm5uZkQ7eXlZsJwy3sXAyY7mPA62aAAAMASJgQRHJpqXAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/tt/images/Thumbs.db</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAABQAAAAYAAAAHAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCEZK4in80BAwAAAMAJAAAAAAAAMgA1ADYAXwAyADUAYgA5AGEAMwA0ADMAOQA0ADkAYQAxADEAYgBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAgH/////AgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAUAAAAAAAAyADUANgBfADYAMQBhAGQAMwBjADgAZAAzAGMAMwAwADkANQBjADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAABHBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAD+////FgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8YAAAAAwAAAOwEAAAAAAAAOUdZ1AYICteJUE5HDQoaCgAAAA1JSERSAAAAGgAAABoIBgAAAKlKTM4AAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAABJZJREFUSEu9Vs1PY1UU/71+89kS+QYlMYRBNmaQZBiLdJwABaOkRpiICbM0zobVLHXjv4CZvZtxY2KICwedAAk6hGiCmQSjDqJSBkFaaEvb1/ftObdzSSnFSWYxJzl5952ee3/n43fPq+I4Dp6HKAz04SfbAsu03LjU/ge6W3Zv1wUbbypQTtiuKMVQZEyG6dDagWEYKBQKgePj4+/o+bGiKCYp+SuYm5s7E/8ZINtxocZ3gsGerTvXhl+95XJ5xOG8sVQ0zQbXIZ/P4/DwEPF4PH10dPQ+Ad9zu90VgTwiUuAzerzuOFYmkak1fvjtlb6/Mx5YlgsuwlBcgG07cNFLwO/C7DtBeirQtDpUVVWR3RXs6en5Ym1t7QPLsr6h93PdEJZCwbqcy1uX/R5Ehl/zjTgItG8+0pHKGPjzsYaHv6p4vG9g4xcVG5s5KhllZNsMgPr6egrIQktLS6i3t/cu2d6ybbupHEkApdMG1JyJkas1qKtW8GIzEA1XI3a9Dm8P12KM1mPhGjh0oGVYlGKxnAzk8/nQ1taGvb09+P3+UGNj4+fBYJArdEYEUDarQ9cN1FYp+P7HDI4I+CRrIq9a1CMbQ/01ODjUsP+vCrVgiAMUAmEwih4dHR3o6+tDd3c3gzYSUGdFINu0kEnrWHqQQmw0BFgOft7MYvNRHl/fP8JX3yZxfzUlfFIp/ZQgMisG43VDQwNCoRACgUDlHhEdloks9yibLz+d37v7+3ZyO1jr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]]></data>
	</file>
	<file>
	  <filename>/tt/images/xls.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/images/xls_hover.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/tt/jquery.dataTables.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogRmlsZTogICAgICAgIGpxdWVyeS5kYXRhVGFibGVzLm1pbi5qcwogKiBWZXJzaW9uOiAgICAgMS44LjIKICogQXV0aG9yOiAgICAgIEFsbGFuIEphcmRpbmUgKHd3dy5zcHJ5bWVkaWEuY28udWspCiAqIEluZm86ICAgICAgICB3d3cuZGF0YXRhYmxlcy5uZXQKICogCiAqIENvcHlyaWdodCAyMDA4LTIwMTEgQWxsYW4gSmFyZGluZSwgYWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogVGhpcyBzb3VyY2UgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCB1bmRlciBlaXRoZXIgdGhlIEdQTCB2MiBsaWNlbnNlIG9yIGEKICogQlNEIHN0eWxlIGxpY2Vuc2UsIGFzIHN1cHBsaWVkIHdpdGggdGhpcyBzb2Z0d2FyZS4KICogCiAqIFRoaXMgc291cmNlIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSAKICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgbGljZW5zZSBmaWxlcyBmb3IgZGV0YWlscy4KICovCihmdW5jdGlvbihpLHphLHApe2kuZm4uZGF0YVRhYmxlU2V0dGluZ3M9W107dmFyIEQ9aS5mbi5kYXRhVGFibGVTZXR0aW5ncztpLmZuLmRhdGFUYWJsZUV4dD17fTt2YXIgbj1pLmZuLmRhdGFUYWJsZUV4dDtuLnNWZXJzaW9uPSIxLjguMiI7bi5zRXJyTW9kZT0iYWxlcnQiO24uaUFwaUluZGV4PTA7bi5vQXBpPXt9O24uYWZuRmlsdGVyaW5nPVtdO24uYW9GZWF0dXJlcz1bXTtuLm9mblNlYXJjaD17fTtuLmFmblNvcnREYXRhPVtdO24ub1N0ZENsYXNzZXM9e3NQYWdlUHJldkVuYWJsZWQ6InBhZ2luYXRlX2VuYWJsZWRfcHJldmlvdXMiLHNQYWdlUHJldkRpc2FibGVkOiJwYWdpbmF0ZV9kaXNhYmxlZF9wcmV2aW91cyIsc1BhZ2VOZXh0RW5hYmxlZDoicGFnaW5hdGVfZW5hYmxlZF9uZXh0IixzUGFnZU5leHREaXNhYmxlZDoicGFnaW5hdGVfZGlzYWJsZWRfbmV4dCIsc1BhZ2VKVUlOZXh0OiIiLHNQYWdlSlVJUHJldjoiIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIixzUGFnZUJ1dHRvbkFjdGl2ZToicGFnaW5hdGVfYWN0aXZlIiwKc1BhZ2VCdXR0b25TdGF0aWNEaXNhYmxlZDoicGFnaW5hdGVfYnV0dG9uIHBhZ2luYXRlX2J1dHRvbl9kaXNhYmxlZCIsc1BhZ2VGaXJzdDoiZmlyc3QiLHNQYWdlUHJldmlvdXM6InByZXZpb3VzIixzUGFnZU5leHQ6Im5leHQiLHNQYWdlTGFzdDoibGFzdCIsc1N0cmlwZU9kZDoib2RkIixzU3RyaXBlRXZlbjoiZXZlbiIsc1Jvd0VtcHR5OiJkYXRhVGFibGVzX2VtcHR5IixzV3JhcHBlcjoiZGF0YVRhYmxlc193cmFwcGVyIixzRmlsdGVyOiJkYXRhVGFibGVzX2ZpbHRlciIsc0luZm86ImRhdGFUYWJsZXNfaW5mbyIsc1BhZ2luZzoiZGF0YVRhYmxlc19wYWdpbmF0ZSBwYWdpbmdfIixzTGVuZ3RoOiJkYXRhVGFibGVzX2xlbmd0aCIsc1Byb2Nlc3Npbmc6ImRhdGFUYWJsZXNfcHJvY2Vzc2luZyIsc1NvcnRBc2M6InNvcnRpbmdfYXNjIixzU29ydERlc2M6InNvcnRpbmdfZGVzYyIsc1NvcnRhYmxlOiJzb3J0aW5nIixzU29ydGFibGVBc2M6InNvcnRpbmdfYXNjX2Rpc2FibGVkIixzU29ydGFibGVEZXNjOiJzb3J0aW5nX2Rlc2NfZGlzYWJsZWQiLApzU29ydGFibGVOb25lOiJzb3J0aW5nX2Rpc2FibGVkIixzU29ydENvbHVtbjoic29ydGluZ18iLHNTb3J0SlVJQXNjOiIiLHNTb3J0SlVJRGVzYzoiIixzU29ydEpVSToiIixzU29ydEpVSUFzY0FsbG93ZWQ6IiIsc1NvcnRKVUlEZXNjQWxsb3dlZDoiIixzU29ydEpVSVdyYXBwZXI6IiIsc1NvcnRJY29uOiIiLHNTY3JvbGxXcmFwcGVyOiJkYXRhVGFibGVzX3Njcm9sbCIsc1Njcm9sbEhlYWQ6ImRhdGFUYWJsZXNfc2Nyb2xsSGVhZCIsc1Njcm9sbEhlYWRJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXIiLHNTY3JvbGxCb2R5OiJkYXRhVGFibGVzX3Njcm9sbEJvZHkiLHNTY3JvbGxGb290OiJkYXRhVGFibGVzX3Njcm9sbEZvb3QiLHNTY3JvbGxGb290SW5uZXI6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdElubmVyIixzRm9vdGVyVEg6IiJ9O24ub0pVSUNsYXNzZXM9e3NQYWdlUHJldkVuYWJsZWQ6ImZnLWJ1dHRvbiB1aS1idXR0b24gdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItbGVmdCIsCnNQYWdlUHJldkRpc2FibGVkOiJmZy1idXR0b24gdWktYnV0dG9uIHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWxlZnQgdWktc3RhdGUtZGlzYWJsZWQiLHNQYWdlTmV4dEVuYWJsZWQ6ImZnLWJ1dHRvbiB1aS1idXR0b24gdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItcmlnaHQiLHNQYWdlTmV4dERpc2FibGVkOiJmZy1idXR0b24gdWktYnV0dG9uIHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXJpZ2h0IHVpLXN0YXRlLWRpc2FibGVkIixzUGFnZUpVSU5leHQ6InVpLWljb24gdWktaWNvbi1jaXJjbGUtYXJyb3ctZSIsc1BhZ2VKVUlQcmV2OiJ1aS1pY29uIHVpLWljb24tY2lyY2xlLWFycm93LXciLHNQYWdlQnV0dG9uOiJmZy1idXR0b24gdWktYnV0dG9uIHVpLXN0YXRlLWRlZmF1bHQiLHNQYWdlQnV0dG9uQWN0aXZlOiJmZy1idXR0b24gdWktYnV0dG9uIHVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtZGlzYWJsZWQiLHNQYWdlQnV0dG9uU3RhdGljRGlzYWJsZWQ6ImZnLWJ1dHRvbiB1aS1idXR0b24gdWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1kaXNhYmxlZCIsCnNQYWdlRmlyc3Q6ImZpcnN0IHVpLWNvcm5lci10bCB1aS1jb3JuZXItYmwiLHNQYWdlUHJldmlvdXM6InByZXZpb3VzIixzUGFnZU5leHQ6Im5leHQiLHNQYWdlTGFzdDoibGFzdCB1aS1jb3JuZXItdHIgdWktY29ybmVyLWJyIixzU3RyaXBlT2RkOiJvZGQiLHNTdHJpcGVFdmVuOiJldmVuIixzUm93RW1wdHk6ImRhdGFUYWJsZXNfZW1wdHkiLHNXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIiLHNGaWx0ZXI6ImRhdGFUYWJsZXNfZmlsdGVyIixzSW5mbzoiZGF0YVRhYmxlc19pbmZvIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIGZnLWJ1dHRvbnNldCB1aS1idXR0b25zZXQgZmctYnV0dG9uc2V0LW11bHRpIHVpLWJ1dHRvbnNldC1tdWx0aSBwYWdpbmdfIixzTGVuZ3RoOiJkYXRhVGFibGVzX2xlbmd0aCIsc1Byb2Nlc3Npbmc6ImRhdGFUYWJsZXNfcHJvY2Vzc2luZyIsc1NvcnRBc2M6InVpLXN0YXRlLWRlZmF1bHQiLHNTb3J0RGVzYzoidWktc3RhdGUtZGVmYXVsdCIsc1NvcnRhYmxlOiJ1aS1zdGF0ZS1kZWZhdWx0IiwKc1NvcnRhYmxlQXNjOiJ1aS1zdGF0ZS1kZWZhdWx0IixzU29ydGFibGVEZXNjOiJ1aS1zdGF0ZS1kZWZhdWx0IixzU29ydGFibGVOb25lOiJ1aS1zdGF0ZS1kZWZhdWx0IixzU29ydENvbHVtbjoic29ydGluZ18iLHNTb3J0SlVJQXNjOiJjc3NfcmlnaHQgdWktaWNvbiB1aS1pY29uLXRyaWFuZ2xlLTEtbiIsc1NvcnRKVUlEZXNjOiJjc3NfcmlnaHQgdWktaWNvbiB1aS1pY29uLXRyaWFuZ2xlLTEtcyIsc1NvcnRKVUk6ImNzc19yaWdodCB1aS1pY29uIHVpLWljb24tY2FyYXQtMi1uLXMiLHNTb3J0SlVJQXNjQWxsb3dlZDoiY3NzX3JpZ2h0IHVpLWljb24gdWktaWNvbi1jYXJhdC0xLW4iLHNTb3J0SlVJRGVzY0FsbG93ZWQ6ImNzc19yaWdodCB1aS1pY29uIHVpLWljb24tY2FyYXQtMS1zIixzU29ydEpVSVdyYXBwZXI6IkRhdGFUYWJsZXNfc29ydF93cmFwcGVyIixzU29ydEljb246IkRhdGFUYWJsZXNfc29ydF9pY29uIixzU2Nyb2xsV3JhcHBlcjoiZGF0YVRhYmxlc19zY3JvbGwiLApzU2Nyb2xsSGVhZDoiZGF0YVRhYmxlc19zY3JvbGxIZWFkIHVpLXN0YXRlLWRlZmF1bHQiLHNTY3JvbGxIZWFkSW5uZXI6ImRhdGFUYWJsZXNfc2Nyb2xsSGVhZElubmVyIixzU2Nyb2xsQm9keToiZGF0YVRhYmxlc19zY3JvbGxCb2R5IixzU2Nyb2xsRm9vdDoiZGF0YVRhYmxlc19zY3JvbGxGb290IHVpLXN0YXRlLWRlZmF1bHQiLHNTY3JvbGxGb290SW5uZXI6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdElubmVyIixzRm9vdGVyVEg6InVpLXN0YXRlLWRlZmF1bHQifTtuLm9QYWdpbmF0aW9uPXt0d29fYnV0dG9uOntmbkluaXQ6ZnVuY3Rpb24oZyxsLHMpe3ZhciB0LHcseTtpZihnLmJKVUkpe3Q9cC5jcmVhdGVFbGVtZW50KCJhIik7dz1wLmNyZWF0ZUVsZW1lbnQoImEiKTt5PXAuY3JlYXRlRWxlbWVudCgic3BhbiIpO3kuY2xhc3NOYW1lPWcub0NsYXNzZXMuc1BhZ2VKVUlOZXh0O3cuYXBwZW5kQ2hpbGQoeSk7eT1wLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt5LmNsYXNzTmFtZT1nLm9DbGFzc2VzLnNQYWdlSlVJUHJldjsKdC5hcHBlbmRDaGlsZCh5KX1lbHNle3Q9cC5jcmVhdGVFbGVtZW50KCJkaXYiKTt3PXAuY3JlYXRlRWxlbWVudCgiZGl2Iil9dC5jbGFzc05hbWU9Zy5vQ2xhc3Nlcy5zUGFnZVByZXZEaXNhYmxlZDt3LmNsYXNzTmFtZT1nLm9DbGFzc2VzLnNQYWdlTmV4dERpc2FibGVkO3QudGl0bGU9Zy5vTGFuZ3VhZ2Uub1BhZ2luYXRlLnNQcmV2aW91czt3LnRpdGxlPWcub0xhbmd1YWdlLm9QYWdpbmF0ZS5zTmV4dDtsLmFwcGVuZENoaWxkKHQpO2wuYXBwZW5kQ2hpbGQodyk7aSh0KS5iaW5kKCJjbGljay5EVCIsZnVuY3Rpb24oKXtnLm9BcGkuX2ZuUGFnZUNoYW5nZShnLCJwcmV2aW91cyIpJiZzKGcpfSk7aSh3KS5iaW5kKCJjbGljay5EVCIsZnVuY3Rpb24oKXtnLm9BcGkuX2ZuUGFnZUNoYW5nZShnLCJuZXh0IikmJnMoZyl9KTtpKHQpLmJpbmQoInNlbGVjdHN0YXJ0LkRUIixmdW5jdGlvbigpe3JldHVybiBmYWxzZX0pO2kodykuYmluZCgic2VsZWN0c3RhcnQuRFQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSk7CmlmKGcuc1RhYmxlSWQhPT0iIiYmdHlwZW9mIGcuYWFuRmVhdHVyZXMucD09InVuZGVmaW5lZCIpe2wuc2V0QXR0cmlidXRlKCJpZCIsZy5zVGFibGVJZCsiX3BhZ2luYXRlIik7dC5zZXRBdHRyaWJ1dGUoImlkIixnLnNUYWJsZUlkKyJfcHJldmlvdXMiKTt3LnNldEF0dHJpYnV0ZSgiaWQiLGcuc1RhYmxlSWQrIl9uZXh0Iil9fSxmblVwZGF0ZTpmdW5jdGlvbihnKXtpZihnLmFhbkZlYXR1cmVzLnApZm9yKHZhciBsPWcuYWFuRmVhdHVyZXMucCxzPTAsdD1sLmxlbmd0aDtzPHQ7cysrKWlmKGxbc10uY2hpbGROb2Rlcy5sZW5ndGghPT0wKXtsW3NdLmNoaWxkTm9kZXNbMF0uY2xhc3NOYW1lPWcuX2lEaXNwbGF5U3RhcnQ9PT0wP2cub0NsYXNzZXMuc1BhZ2VQcmV2RGlzYWJsZWQ6Zy5vQ2xhc3Nlcy5zUGFnZVByZXZFbmFibGVkO2xbc10uY2hpbGROb2Rlc1sxXS5jbGFzc05hbWU9Zy5mbkRpc3BsYXlFbmQoKT09Zy5mblJlY29yZHNEaXNwbGF5KCk/Zy5vQ2xhc3Nlcy5zUGFnZU5leHREaXNhYmxlZDoKZy5vQ2xhc3Nlcy5zUGFnZU5leHRFbmFibGVkfX19LGlGdWxsTnVtYmVyc1Nob3dQYWdlczo1LGZ1bGxfbnVtYmVyczp7Zm5Jbml0OmZ1bmN0aW9uKGcsbCxzKXt2YXIgdD1wLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSx3PXAuY3JlYXRlRWxlbWVudCgic3BhbiIpLHk9cC5jcmVhdGVFbGVtZW50KCJzcGFuIiksRj1wLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSx4PXAuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QuaW5uZXJIVE1MPWcub0xhbmd1YWdlLm9QYWdpbmF0ZS5zRmlyc3Q7dy5pbm5lckhUTUw9Zy5vTGFuZ3VhZ2Uub1BhZ2luYXRlLnNQcmV2aW91cztGLmlubmVySFRNTD1nLm9MYW5ndWFnZS5vUGFnaW5hdGUuc05leHQ7eC5pbm5lckhUTUw9Zy5vTGFuZ3VhZ2Uub1BhZ2luYXRlLnNMYXN0O3ZhciB2PWcub0NsYXNzZXM7dC5jbGFzc05hbWU9di5zUGFnZUJ1dHRvbisiICIrdi5zUGFnZUZpcnN0O3cuY2xhc3NOYW1lPXYuc1BhZ2VCdXR0b24rIiAiK3Yuc1BhZ2VQcmV2aW91cztGLmNsYXNzTmFtZT0Kdi5zUGFnZUJ1dHRvbisiICIrdi5zUGFnZU5leHQ7eC5jbGFzc05hbWU9di5zUGFnZUJ1dHRvbisiICIrdi5zUGFnZUxhc3Q7bC5hcHBlbmRDaGlsZCh0KTtsLmFwcGVuZENoaWxkKHcpO2wuYXBwZW5kQ2hpbGQoeSk7bC5hcHBlbmRDaGlsZChGKTtsLmFwcGVuZENoaWxkKHgpO2kodCkuYmluZCgiY2xpY2suRFQiLGZ1bmN0aW9uKCl7Zy5vQXBpLl9mblBhZ2VDaGFuZ2UoZywiZmlyc3QiKSYmcyhnKX0pO2kodykuYmluZCgiY2xpY2suRFQiLGZ1bmN0aW9uKCl7Zy5vQXBpLl9mblBhZ2VDaGFuZ2UoZywicHJldmlvdXMiKSYmcyhnKX0pO2koRikuYmluZCgiY2xpY2suRFQiLGZ1bmN0aW9uKCl7Zy5vQXBpLl9mblBhZ2VDaGFuZ2UoZywibmV4dCIpJiZzKGcpfSk7aSh4KS5iaW5kKCJjbGljay5EVCIsZnVuY3Rpb24oKXtnLm9BcGkuX2ZuUGFnZUNoYW5nZShnLCJsYXN0IikmJnMoZyl9KTtpKCJzcGFuIixsKS5iaW5kKCJtb3VzZWRvd24uRFQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSkuYmluZCgic2VsZWN0c3RhcnQuRFQiLApmdW5jdGlvbigpe3JldHVybiBmYWxzZX0pO2lmKGcuc1RhYmxlSWQhPT0iIiYmdHlwZW9mIGcuYWFuRmVhdHVyZXMucD09InVuZGVmaW5lZCIpe2wuc2V0QXR0cmlidXRlKCJpZCIsZy5zVGFibGVJZCsiX3BhZ2luYXRlIik7dC5zZXRBdHRyaWJ1dGUoImlkIixnLnNUYWJsZUlkKyJfZmlyc3QiKTt3LnNldEF0dHJpYnV0ZSgiaWQiLGcuc1RhYmxlSWQrIl9wcmV2aW91cyIpO0Yuc2V0QXR0cmlidXRlKCJpZCIsZy5zVGFibGVJZCsiX25leHQiKTt4LnNldEF0dHJpYnV0ZSgiaWQiLGcuc1RhYmxlSWQrIl9sYXN0Iil9fSxmblVwZGF0ZTpmdW5jdGlvbihnLGwpe2lmKGcuYWFuRmVhdHVyZXMucCl7dmFyIHM9bi5vUGFnaW5hdGlvbi5pRnVsbE51bWJlcnNTaG93UGFnZXMsdD1NYXRoLmZsb29yKHMvMiksdz1NYXRoLmNlaWwoZy5mblJlY29yZHNEaXNwbGF5KCkvZy5faURpc3BsYXlMZW5ndGgpLHk9TWF0aC5jZWlsKGcuX2lEaXNwbGF5U3RhcnQvZy5faURpc3BsYXlMZW5ndGgpKzEsRj0KIiIseCx2PWcub0NsYXNzZXM7aWYodzxzKXt0PTE7eD13fWVsc2UgaWYoeTw9dCl7dD0xO3g9c31lbHNlIGlmKHk+PXctdCl7dD13LXMrMTt4PXd9ZWxzZXt0PXktTWF0aC5jZWlsKHMvMikrMTt4PXQrcy0xfWZvcihzPXQ7czw9eDtzKyspRis9eSE9cz8nPHNwYW4gY2xhc3M9Iicrdi5zUGFnZUJ1dHRvbisnIj4nK3MrIjwvc3Bhbj4iOic8c3BhbiBjbGFzcz0iJyt2LnNQYWdlQnV0dG9uQWN0aXZlKyciPicrcysiPC9zcGFuPiI7eD1nLmFhbkZlYXR1cmVzLnA7dmFyIHosJD1mdW5jdGlvbihNKXtnLl9pRGlzcGxheVN0YXJ0PSh0aGlzLmlubmVySFRNTCoxLTEpKmcuX2lEaXNwbGF5TGVuZ3RoO2woZyk7TS5wcmV2ZW50RGVmYXVsdCgpfSxYPWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfTtzPTA7Zm9yKHQ9eC5sZW5ndGg7czx0O3MrKylpZih4W3NdLmNoaWxkTm9kZXMubGVuZ3RoIT09MCl7ej1pKCJzcGFuOmVxKDIpIix4W3NdKTt6Lmh0bWwoRik7aSgic3BhbiIseikuYmluZCgiY2xpY2suRFQiLAokKS5iaW5kKCJtb3VzZWRvd24uRFQiLFgpLmJpbmQoInNlbGVjdHN0YXJ0LkRUIixYKTt6PXhbc10uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTt6PVt6WzBdLHpbMV0selt6Lmxlbmd0aC0yXSx6W3oubGVuZ3RoLTFdXTtpKHopLnJlbW92ZUNsYXNzKHYuc1BhZ2VCdXR0b24rIiAiK3Yuc1BhZ2VCdXR0b25BY3RpdmUrIiAiK3Yuc1BhZ2VCdXR0b25TdGF0aWNEaXNhYmxlZCk7aWYoeT09MSl7elswXS5jbGFzc05hbWUrPSIgIit2LnNQYWdlQnV0dG9uU3RhdGljRGlzYWJsZWQ7elsxXS5jbGFzc05hbWUrPSIgIit2LnNQYWdlQnV0dG9uU3RhdGljRGlzYWJsZWR9ZWxzZXt6WzBdLmNsYXNzTmFtZSs9IiAiK3Yuc1BhZ2VCdXR0b247elsxXS5jbGFzc05hbWUrPSIgIit2LnNQYWdlQnV0dG9ufWlmKHc9PT0wfHx5PT13fHxnLl9pRGlzcGxheUxlbmd0aD09LTEpe3pbMl0uY2xhc3NOYW1lKz0iICIrdi5zUGFnZUJ1dHRvblN0YXRpY0Rpc2FibGVkO3pbM10uY2xhc3NOYW1lKz0iICIrCnYuc1BhZ2VCdXR0b25TdGF0aWNEaXNhYmxlZH1lbHNle3pbMl0uY2xhc3NOYW1lKz0iICIrdi5zUGFnZUJ1dHRvbjt6WzNdLmNsYXNzTmFtZSs9IiAiK3Yuc1BhZ2VCdXR0b259fX19fX07bi5vU29ydD17InN0cmluZy1hc2MiOmZ1bmN0aW9uKGcsbCl7aWYodHlwZW9mIGchPSJzdHJpbmciKWc9IiI7aWYodHlwZW9mIGwhPSJzdHJpbmciKWw9IiI7Zz1nLnRvTG93ZXJDYXNlKCk7bD1sLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGc8bD8tMTpnPmw/MTowfSwic3RyaW5nLWRlc2MiOmZ1bmN0aW9uKGcsbCl7aWYodHlwZW9mIGchPSJzdHJpbmciKWc9IiI7aWYodHlwZW9mIGwhPSJzdHJpbmciKWw9IiI7Zz1nLnRvTG93ZXJDYXNlKCk7bD1sLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGc8bD8xOmc+bD8tMTowfSwiaHRtbC1hc2MiOmZ1bmN0aW9uKGcsbCl7Zz1nLnJlcGxhY2UoLzwuKj8+L2csIiIpLnRvTG93ZXJDYXNlKCk7bD1sLnJlcGxhY2UoLzwuKj8+L2csIiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGc8Cmw/LTE6Zz5sPzE6MH0sImh0bWwtZGVzYyI6ZnVuY3Rpb24oZyxsKXtnPWcucmVwbGFjZSgvPC4qPz4vZywiIikudG9Mb3dlckNhc2UoKTtsPWwucmVwbGFjZSgvPC4qPz4vZywiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gZzxsPzE6Zz5sPy0xOjB9LCJkYXRlLWFzYyI6ZnVuY3Rpb24oZyxsKXtnPURhdGUucGFyc2UoZyk7bD1EYXRlLnBhcnNlKGwpO2lmKGlzTmFOKGcpfHxnPT09IiIpZz1EYXRlLnBhcnNlKCIwMS8wMS8xOTcwIDAwOjAwOjAwIik7aWYoaXNOYU4obCl8fGw9PT0iIilsPURhdGUucGFyc2UoIjAxLzAxLzE5NzAgMDA6MDA6MDAiKTtyZXR1cm4gZy1sfSwiZGF0ZS1kZXNjIjpmdW5jdGlvbihnLGwpe2c9RGF0ZS5wYXJzZShnKTtsPURhdGUucGFyc2UobCk7aWYoaXNOYU4oZyl8fGc9PT0iIilnPURhdGUucGFyc2UoIjAxLzAxLzE5NzAgMDA6MDA6MDAiKTtpZihpc05hTihsKXx8bD09PSIiKWw9RGF0ZS5wYXJzZSgiMDEvMDEvMTk3MCAwMDowMDowMCIpO3JldHVybiBsLQpnfSwibnVtZXJpYy1hc2MiOmZ1bmN0aW9uKGcsbCl7cmV0dXJuKGc9PSItInx8Zz09PSIiPzA6ZyoxKS0obD09Ii0ifHxsPT09IiI/MDpsKjEpfSwibnVtZXJpYy1kZXNjIjpmdW5jdGlvbihnLGwpe3JldHVybihsPT0iLSJ8fGw9PT0iIj8wOmwqMSktKGc9PSItInx8Zz09PSIiPzA6ZyoxKX19O24uYVR5cGVzPVtmdW5jdGlvbihnKXtpZih0eXBlb2YgZz09Im51bWJlciIpcmV0dXJuIm51bWVyaWMiO2Vsc2UgaWYodHlwZW9mIGchPSJzdHJpbmciKXJldHVybiBudWxsO3ZhciBsLHM9ZmFsc2U7bD1nLmNoYXJBdCgwKTtpZigiMDEyMzQ1Njc4OS0iLmluZGV4T2YobCk9PS0xKXJldHVybiBudWxsO2Zvcih2YXIgdD0xO3Q8Zy5sZW5ndGg7dCsrKXtsPWcuY2hhckF0KHQpO2lmKCIwMTIzNDU2Nzg5LiIuaW5kZXhPZihsKT09LTEpcmV0dXJuIG51bGw7aWYobD09Ii4iKXtpZihzKXJldHVybiBudWxsO3M9dHJ1ZX19cmV0dXJuIm51bWVyaWMifSxmdW5jdGlvbihnKXt2YXIgbD1EYXRlLnBhcnNlKGcpOwppZihsIT09bnVsbCYmIWlzTmFOKGwpfHx0eXBlb2YgZz09InN0cmluZyImJmcubGVuZ3RoPT09MClyZXR1cm4iZGF0ZSI7cmV0dXJuIG51bGx9LGZ1bmN0aW9uKGcpe2lmKHR5cGVvZiBnPT0ic3RyaW5nIiYmZy5pbmRleE9mKCI8IikhPS0xJiZnLmluZGV4T2YoIj4iKSE9LTEpcmV0dXJuImh0bWwiO3JldHVybiBudWxsfV07bi5mblZlcnNpb25DaGVjaz1mdW5jdGlvbihnKXt2YXIgbD1mdW5jdGlvbih4LHYpe2Zvcig7eC5sZW5ndGg8djspeCs9IjAiO3JldHVybiB4fSxzPW4uc1ZlcnNpb24uc3BsaXQoIi4iKTtnPWcuc3BsaXQoIi4iKTtmb3IodmFyIHQ9IiIsdz0iIix5PTAsRj1nLmxlbmd0aDt5PEY7eSsrKXt0Kz1sKHNbeV0sMyk7dys9bChnW3ldLDMpfXJldHVybiBwYXJzZUludCh0LDEwKT49cGFyc2VJbnQodywxMCl9O24uX29FeHRlcm5Db25maWc9e2lOZXh0VW5pcXVlOjB9O2kuZm4uZGF0YVRhYmxlPWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGwoKXt0aGlzLmZuUmVjb3Jkc1RvdGFsPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9GZWF0dXJlcy5iU2VydmVyU2lkZT9wYXJzZUludCh0aGlzLl9pUmVjb3Jkc1RvdGFsLDEwKTp0aGlzLmFpRGlzcGxheU1hc3Rlci5sZW5ndGh9O3RoaXMuZm5SZWNvcmRzRGlzcGxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9GZWF0dXJlcy5iU2VydmVyU2lkZT9wYXJzZUludCh0aGlzLl9pUmVjb3Jkc0Rpc3BsYXksMTApOnRoaXMuYWlEaXNwbGF5Lmxlbmd0aH07dGhpcy5mbkRpc3BsYXlFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vRmVhdHVyZXMuYlNlcnZlclNpZGU/dGhpcy5vRmVhdHVyZXMuYlBhZ2luYXRlPT09ZmFsc2V8fHRoaXMuX2lEaXNwbGF5TGVuZ3RoPT0tMT90aGlzLl9pRGlzcGxheVN0YXJ0K3RoaXMuYWlEaXNwbGF5Lmxlbmd0aDpNYXRoLm1pbih0aGlzLl9pRGlzcGxheVN0YXJ0K3RoaXMuX2lEaXNwbGF5TGVuZ3RoLHRoaXMuX2lSZWNvcmRzRGlzcGxheSk6dGhpcy5faURpc3BsYXlFbmR9O3RoaXMuc0luc3RhbmNlPQp0aGlzLm9JbnN0YW5jZT1udWxsO3RoaXMub0ZlYXR1cmVzPXtiUGFnaW5hdGU6dHJ1ZSxiTGVuZ3RoQ2hhbmdlOnRydWUsYkZpbHRlcjp0cnVlLGJTb3J0OnRydWUsYkluZm86dHJ1ZSxiQXV0b1dpZHRoOnRydWUsYlByb2Nlc3Npbmc6ZmFsc2UsYlNvcnRDbGFzc2VzOnRydWUsYlN0YXRlU2F2ZTpmYWxzZSxiU2VydmVyU2lkZTpmYWxzZSxiRGVmZXJSZW5kZXI6ZmFsc2V9O3RoaXMub1Njcm9sbD17c1g6IiIsc1hJbm5lcjoiIixzWToiIixiQ29sbGFwc2U6ZmFsc2UsYkluZmluaXRlOmZhbHNlLGlMb2FkR2FwOjEwMCxpQmFyV2lkdGg6MCxiQXV0b0Nzczp0cnVlfTt0aGlzLmFhbkZlYXR1cmVzPVtdO3RoaXMub0xhbmd1YWdlPXtzUHJvY2Vzc2luZzoiUHJvY2Vzc2luZy4uLiIsc0xlbmd0aE1lbnU6IlNob3cgX01FTlVfIGVudHJpZXMiLHNaZXJvUmVjb3JkczoiTm8gbWF0Y2hpbmcgcmVjb3JkcyBmb3VuZCIsc0VtcHR5VGFibGU6Ik5vIGRhdGEgYXZhaWxhYmxlIGluIHRhYmxlIiwKc0xvYWRpbmdSZWNvcmRzOiJMb2FkaW5nLi4uIixzSW5mbzoiU2hvd2luZyBfU1RBUlRfIHRvIF9FTkRfIG9mIF9UT1RBTF8gZW50cmllcyIsc0luZm9FbXB0eToiU2hvd2luZyAwIHRvIDAgb2YgMCBlbnRyaWVzIixzSW5mb0ZpbHRlcmVkOiIoZmlsdGVyZWQgZnJvbSBfTUFYXyB0b3RhbCBlbnRyaWVzKSIsc0luZm9Qb3N0Rml4OiIiLHNJbmZvVGhvdXNhbmRzOiIsIixzU2VhcmNoOiJTZWFyY2g6IixzVXJsOiIiLG9QYWdpbmF0ZTp7c0ZpcnN0OiJGaXJzdCIsc1ByZXZpb3VzOiJQcmV2aW91cyIsc05leHQ6Ik5leHQiLHNMYXN0OiJMYXN0In0sZm5JbmZvQ2FsbGJhY2s6bnVsbH07dGhpcy5hb0RhdGE9W107dGhpcy5haURpc3BsYXk9W107dGhpcy5haURpc3BsYXlNYXN0ZXI9W107dGhpcy5hb0NvbHVtbnM9W107dGhpcy5hb0hlYWRlcj1bXTt0aGlzLmFvRm9vdGVyPVtdO3RoaXMuaU5leHRJZD0wO3RoaXMuYXNEYXRhU2VhcmNoPVtdO3RoaXMub1ByZXZpb3VzU2VhcmNoPXtzU2VhcmNoOiIiLApiUmVnZXg6ZmFsc2UsYlNtYXJ0OnRydWV9O3RoaXMuYW9QcmVTZWFyY2hDb2xzPVtdO3RoaXMuYWFTb3J0aW5nPVtbMCwiYXNjIiwwXV07dGhpcy5hYVNvcnRpbmdGaXhlZD1udWxsO3RoaXMuYXNTdHJpcGVDbGFzc2VzPVtdO3RoaXMuYXNEZXN0cm95U3RyaXBlcz1bXTt0aGlzLnNEZXN0cm95V2lkdGg9MDt0aGlzLmZuRm9vdGVyQ2FsbGJhY2s9dGhpcy5mbkhlYWRlckNhbGxiYWNrPXRoaXMuZm5Sb3dDYWxsYmFjaz1udWxsO3RoaXMuYW9EcmF3Q2FsbGJhY2s9W107dGhpcy5mbkluaXRDb21wbGV0ZT10aGlzLmZuUHJlRHJhd0NhbGxiYWNrPW51bGw7dGhpcy5zVGFibGVJZD0iIjt0aGlzLm5UYWJsZVdyYXBwZXI9dGhpcy5uVEJvZHk9dGhpcy5uVEZvb3Q9dGhpcy5uVEhlYWQ9dGhpcy5uVGFibGU9bnVsbDt0aGlzLmJJbml0aWFsaXNlZD10aGlzLmJEZWZlckxvYWRpbmc9ZmFsc2U7dGhpcy5hb09wZW5Sb3dzPVtdO3RoaXMuc0RvbT0ibGZydGlwIjt0aGlzLnNQYWdpbmF0aW9uVHlwZT0KInR3b19idXR0b24iO3RoaXMuaUNvb2tpZUR1cmF0aW9uPTcyMDA7dGhpcy5zQ29va2llUHJlZml4PSJTcHJ5TWVkaWFfRGF0YVRhYmxlc18iO3RoaXMuZm5Db29raWVDYWxsYmFjaz1udWxsO3RoaXMuYW9TdGF0ZVNhdmU9W107dGhpcy5hb1N0YXRlTG9hZD1bXTt0aGlzLnNBamF4U291cmNlPXRoaXMub0xvYWRlZFN0YXRlPW51bGw7dGhpcy5zQWpheERhdGFQcm9wPSJhYURhdGEiO3RoaXMuYkFqYXhEYXRhR2V0PXRydWU7dGhpcy5qcVhIUj1udWxsO3RoaXMuZm5TZXJ2ZXJEYXRhPWZ1bmN0aW9uKGEsYixjLGQpe2QuanFYSFI9aS5hamF4KHt1cmw6YSxkYXRhOmIsc3VjY2VzczpmdW5jdGlvbihmKXtpKGQub0luc3RhbmNlKS50cmlnZ2VyKCJ4aHIiLGQpO2MoZil9LGRhdGFUeXBlOiJqc29uIixjYWNoZTpmYWxzZSxlcnJvcjpmdW5jdGlvbihmLGUpe2U9PSJwYXJzZXJlcnJvciImJmFsZXJ0KCJEYXRhVGFibGVzIHdhcm5pbmc6IEpTT04gZGF0YSBmcm9tIHNlcnZlciBjb3VsZCBub3QgYmUgcGFyc2VkLiBUaGlzIGlzIGNhdXNlZCBieSBhIEpTT04gZm9ybWF0dGluZyBlcnJvci4iKX19KX07CnRoaXMuYW9TZXJ2ZXJQYXJhbXM9W107dGhpcy5mbkZvcm1hdE51bWJlcj1mdW5jdGlvbihhKXtpZihhPDFFMylyZXR1cm4gYTtlbHNle3ZhciBiPWErIiI7YT1iLnNwbGl0KCIiKTt2YXIgYz0iIjtiPWIubGVuZ3RoO2Zvcih2YXIgZD0wO2Q8YjtkKyspe2lmKGQlMz09PTAmJmQhPT0wKWM9dGhpcy5vTGFuZ3VhZ2Uuc0luZm9UaG91c2FuZHMrYztjPWFbYi1kLTFdK2N9fXJldHVybiBjfTt0aGlzLmFMZW5ndGhNZW51PVsxMCwyNSw1MCwxMDBdO3RoaXMuYkRyYXdpbmc9dGhpcy5pRHJhdz0wO3RoaXMuaURyYXdFcnJvcj0tMTt0aGlzLl9pRGlzcGxheUxlbmd0aD0xMDt0aGlzLl9pRGlzcGxheVN0YXJ0PTA7dGhpcy5faURpc3BsYXlFbmQ9MTA7dGhpcy5faVJlY29yZHNEaXNwbGF5PXRoaXMuX2lSZWNvcmRzVG90YWw9MDt0aGlzLmJKVUk9ZmFsc2U7dGhpcy5vQ2xhc3Nlcz1uLm9TdGRDbGFzc2VzO3RoaXMuYlNvcnRDZWxsc1RvcD10aGlzLmJTb3J0ZWQ9dGhpcy5iRmlsdGVyZWQ9ZmFsc2U7CnRoaXMub0luaXQ9bnVsbDt0aGlzLmFvRGVzdHJveUNhbGxiYWNrPVtdfWZ1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W0EodGhpc1tuLmlBcGlJbmRleF0pXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIG4ub0FwaVthXS5hcHBseSh0aGlzLGIpfX1mdW5jdGlvbiB0KGEpe3ZhciBiLGMsZD1hLmlJbml0RGlzcGxheVN0YXJ0O2lmKGEuYkluaXRpYWxpc2VkPT09ZmFsc2Upc2V0VGltZW91dChmdW5jdGlvbigpe3QoYSl9LDIwMCk7ZWxzZXtBYShhKTtYKGEpO00oYSxhLmFvSGVhZGVyKTthLm5URm9vdCYmTShhLGEuYW9Gb290ZXIpO0soYSx0cnVlKTthLm9GZWF0dXJlcy5iQXV0b1dpZHRoJiZnYShhKTtiPTA7Zm9yKGM9YS5hb0NvbHVtbnMubGVuZ3RoO2I8YztiKyspaWYoYS5hb0NvbHVtbnNbYl0uc1dpZHRoIT09bnVsbClhLmFvQ29sdW1uc1tiXS5uVGguc3R5bGUud2lkdGg9cShhLmFvQ29sdW1uc1tiXS5zV2lkdGgpOwppZihhLm9GZWF0dXJlcy5iU29ydClSKGEpO2Vsc2UgaWYoYS5vRmVhdHVyZXMuYkZpbHRlcilOKGEsYS5vUHJldmlvdXNTZWFyY2gpO2Vsc2V7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTtFKGEpO0MoYSl9aWYoYS5zQWpheFNvdXJjZSE9PW51bGwmJiFhLm9GZWF0dXJlcy5iU2VydmVyU2lkZSl7Yz1bXTtoYShhLGMpO2EuZm5TZXJ2ZXJEYXRhLmNhbGwoYS5vSW5zdGFuY2UsYS5zQWpheFNvdXJjZSxjLGZ1bmN0aW9uKGYpe3ZhciBlPWY7aWYoYS5zQWpheERhdGFQcm9wIT09IiIpZT1hYShhLnNBamF4RGF0YVByb3ApKGYpO2ZvcihiPTA7YjxlLmxlbmd0aDtiKyspdihhLGVbYl0pO2EuaUluaXREaXNwbGF5U3RhcnQ9ZDtpZihhLm9GZWF0dXJlcy5iU29ydClSKGEpO2Vsc2V7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTtFKGEpO0MoYSl9SyhhLGZhbHNlKTt3KGEsZil9LGEpfWVsc2UgaWYoIWEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlKXtLKGEsCmZhbHNlKTt3KGEpfX19ZnVuY3Rpb24gdyhhLGIpe2EuX2JJbml0Q29tcGxldGU9dHJ1ZTtpZih0eXBlb2YgYS5mbkluaXRDb21wbGV0ZT09ImZ1bmN0aW9uIil0eXBlb2YgYiE9InVuZGVmaW5lZCI/YS5mbkluaXRDb21wbGV0ZS5jYWxsKGEub0luc3RhbmNlLGEsYik6YS5mbkluaXRDb21wbGV0ZS5jYWxsKGEub0luc3RhbmNlLGEpfWZ1bmN0aW9uIHkoYSxiLGMpe2Eub0xhbmd1YWdlPWkuZXh0ZW5kKHRydWUsYS5vTGFuZ3VhZ2UsYik7dHlwZW9mIGIuc0VtcHR5VGFibGU9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgYi5zWmVyb1JlY29yZHMhPSJ1bmRlZmluZWQiJiZvKGEub0xhbmd1YWdlLGIsInNaZXJvUmVjb3JkcyIsInNFbXB0eVRhYmxlIik7dHlwZW9mIGIuc0xvYWRpbmdSZWNvcmRzPT0idW5kZWZpbmVkIiYmdHlwZW9mIGIuc1plcm9SZWNvcmRzIT0idW5kZWZpbmVkIiYmbyhhLm9MYW5ndWFnZSxiLCJzWmVyb1JlY29yZHMiLCJzTG9hZGluZ1JlY29yZHMiKTtjJiZ0KGEpfWZ1bmN0aW9uIEYoYSwKYil7dmFyIGM9YS5hb0NvbHVtbnMubGVuZ3RoO2I9e3NUeXBlOm51bGwsX2JBdXRvVHlwZTp0cnVlLGJWaXNpYmxlOnRydWUsYlNlYXJjaGFibGU6dHJ1ZSxiU29ydGFibGU6dHJ1ZSxhc1NvcnRpbmc6WyJhc2MiLCJkZXNjIl0sc1NvcnRpbmdDbGFzczphLm9DbGFzc2VzLnNTb3J0YWJsZSxzU29ydGluZ0NsYXNzSlVJOmEub0NsYXNzZXMuc1NvcnRKVUksc1RpdGxlOmI/Yi5pbm5lckhUTUw6IiIsc05hbWU6IiIsc1dpZHRoOm51bGwsc1dpZHRoT3JpZzpudWxsLHNDbGFzczpudWxsLGZuUmVuZGVyOm51bGwsYlVzZVJlbmRlcmVkOnRydWUsaURhdGFTb3J0OmMsbURhdGFQcm9wOmMsZm5HZXREYXRhOm51bGwsZm5TZXREYXRhOm51bGwsc1NvcnREYXRhVHlwZToic3RkIixzRGVmYXVsdENvbnRlbnQ6bnVsbCxzQ29udGVudFBhZGRpbmc6IiIsblRoOmI/YjpwLmNyZWF0ZUVsZW1lbnQoInRoIiksblRmOm51bGx9O2EuYW9Db2x1bW5zLnB1c2goYik7aWYodHlwZW9mIGEuYW9QcmVTZWFyY2hDb2xzW2NdPT0KInVuZGVmaW5lZCJ8fGEuYW9QcmVTZWFyY2hDb2xzW2NdPT09bnVsbClhLmFvUHJlU2VhcmNoQ29sc1tjXT17c1NlYXJjaDoiIixiUmVnZXg6ZmFsc2UsYlNtYXJ0OnRydWV9O2Vsc2V7aWYodHlwZW9mIGEuYW9QcmVTZWFyY2hDb2xzW2NdLmJSZWdleD09InVuZGVmaW5lZCIpYS5hb1ByZVNlYXJjaENvbHNbY10uYlJlZ2V4PXRydWU7aWYodHlwZW9mIGEuYW9QcmVTZWFyY2hDb2xzW2NdLmJTbWFydD09InVuZGVmaW5lZCIpYS5hb1ByZVNlYXJjaENvbHNbY10uYlNtYXJ0PXRydWV9eChhLGMsbnVsbCl9ZnVuY3Rpb24geChhLGIsYyl7Yj1hLmFvQ29sdW1uc1tiXTtpZih0eXBlb2YgYyE9InVuZGVmaW5lZCImJmMhPT1udWxsKXtpZih0eXBlb2YgYy5zVHlwZSE9InVuZGVmaW5lZCIpe2Iuc1R5cGU9Yy5zVHlwZTtiLl9iQXV0b1R5cGU9ZmFsc2V9byhiLGMsImJWaXNpYmxlIik7byhiLGMsImJTZWFyY2hhYmxlIik7byhiLGMsImJTb3J0YWJsZSIpO28oYixjLCJzVGl0bGUiKTtvKGIsCmMsInNOYW1lIik7byhiLGMsInNXaWR0aCIpO28oYixjLCJzV2lkdGgiLCJzV2lkdGhPcmlnIik7byhiLGMsInNDbGFzcyIpO28oYixjLCJmblJlbmRlciIpO28oYixjLCJiVXNlUmVuZGVyZWQiKTtvKGIsYywiaURhdGFTb3J0Iik7byhiLGMsIm1EYXRhUHJvcCIpO28oYixjLCJhc1NvcnRpbmciKTtvKGIsYywic1NvcnREYXRhVHlwZSIpO28oYixjLCJzRGVmYXVsdENvbnRlbnQiKTtvKGIsYywic0NvbnRlbnRQYWRkaW5nIil9Yi5mbkdldERhdGE9YWEoYi5tRGF0YVByb3ApO2IuZm5TZXREYXRhPUJhKGIubURhdGFQcm9wKTtpZighYS5vRmVhdHVyZXMuYlNvcnQpYi5iU29ydGFibGU9ZmFsc2U7aWYoIWIuYlNvcnRhYmxlfHxpLmluQXJyYXkoImFzYyIsYi5hc1NvcnRpbmcpPT0tMSYmaS5pbkFycmF5KCJkZXNjIixiLmFzU29ydGluZyk9PS0xKXtiLnNTb3J0aW5nQ2xhc3M9YS5vQ2xhc3Nlcy5zU29ydGFibGVOb25lO2Iuc1NvcnRpbmdDbGFzc0pVST0iIn1lbHNlIGlmKGIuYlNvcnRhYmxlfHwKaS5pbkFycmF5KCJhc2MiLGIuYXNTb3J0aW5nKT09LTEmJmkuaW5BcnJheSgiZGVzYyIsYi5hc1NvcnRpbmcpPT0tMSl7Yi5zU29ydGluZ0NsYXNzPWEub0NsYXNzZXMuc1NvcnRhYmxlO2Iuc1NvcnRpbmdDbGFzc0pVST1hLm9DbGFzc2VzLnNTb3J0SlVJfWVsc2UgaWYoaS5pbkFycmF5KCJhc2MiLGIuYXNTb3J0aW5nKSE9LTEmJmkuaW5BcnJheSgiZGVzYyIsYi5hc1NvcnRpbmcpPT0tMSl7Yi5zU29ydGluZ0NsYXNzPWEub0NsYXNzZXMuc1NvcnRhYmxlQXNjO2Iuc1NvcnRpbmdDbGFzc0pVST1hLm9DbGFzc2VzLnNTb3J0SlVJQXNjQWxsb3dlZH1lbHNlIGlmKGkuaW5BcnJheSgiYXNjIixiLmFzU29ydGluZyk9PS0xJiZpLmluQXJyYXkoImRlc2MiLGIuYXNTb3J0aW5nKSE9LTEpe2Iuc1NvcnRpbmdDbGFzcz1hLm9DbGFzc2VzLnNTb3J0YWJsZURlc2M7Yi5zU29ydGluZ0NsYXNzSlVJPWEub0NsYXNzZXMuc1NvcnRKVUlEZXNjQWxsb3dlZH19ZnVuY3Rpb24gdihhLGIpe3ZhciBjOwpjPWkuaXNBcnJheShiKT9iLnNsaWNlKCk6aS5leHRlbmQodHJ1ZSx7fSxiKTtiPWEuYW9EYXRhLmxlbmd0aDt2YXIgZD17blRyOm51bGwsX2lJZDphLmlOZXh0SWQrKyxfYURhdGE6YyxfYW5IaWRkZW46W10sX3NSb3dTdHJpcGU6IiJ9O2EuYW9EYXRhLnB1c2goZCk7Zm9yKHZhciBmLGU9MCxoPWEuYW9Db2x1bW5zLmxlbmd0aDtlPGg7ZSsrKXtjPWEuYW9Db2x1bW5zW2VdO3R5cGVvZiBjLmZuUmVuZGVyPT0iZnVuY3Rpb24iJiZjLmJVc2VSZW5kZXJlZCYmYy5tRGF0YVByb3AhPT1udWxsJiZPKGEsYixlLGMuZm5SZW5kZXIoe2lEYXRhUm93OmIsaURhdGFDb2x1bW46ZSxhRGF0YTpkLl9hRGF0YSxvU2V0dGluZ3M6YX0pKTtpZihjLl9iQXV0b1R5cGUmJmMuc1R5cGUhPSJzdHJpbmciKXtmPUcoYSxiLGUsInR5cGUiKTtpZihmIT09bnVsbCYmZiE9PSIiKXtmPWlhKGYpO2lmKGMuc1R5cGU9PT1udWxsKWMuc1R5cGU9ZjtlbHNlIGlmKGMuc1R5cGUhPWYmJmMuc1R5cGUhPSJodG1sIiljLnNUeXBlPQoic3RyaW5nIn19fWEuYWlEaXNwbGF5TWFzdGVyLnB1c2goYik7YS5vRmVhdHVyZXMuYkRlZmVyUmVuZGVyfHx6KGEsYik7cmV0dXJuIGJ9ZnVuY3Rpb24geihhLGIpe3ZhciBjPWEuYW9EYXRhW2JdLGQ7aWYoYy5uVHI9PT1udWxsKXtjLm5Ucj1wLmNyZWF0ZUVsZW1lbnQoInRyIik7dHlwZW9mIGMuX2FEYXRhLkRUX1Jvd0lkIT0idW5kZWZpbmVkIiYmYy5uVHIuc2V0QXR0cmlidXRlKCJpZCIsYy5fYURhdGEuRFRfUm93SWQpO3R5cGVvZiBjLl9hRGF0YS5EVF9Sb3dDbGFzcyE9InVuZGVmaW5lZCImJmkoYy5uVHIpLmFkZENsYXNzKGMuX2FEYXRhLkRUX1Jvd0NsYXNzKTtmb3IodmFyIGY9MCxlPWEuYW9Db2x1bW5zLmxlbmd0aDtmPGU7ZisrKXt2YXIgaD1hLmFvQ29sdW1uc1tmXTtkPXAuY3JlYXRlRWxlbWVudCgidGQiKTtkLmlubmVySFRNTD10eXBlb2YgaC5mblJlbmRlcj09ImZ1bmN0aW9uIiYmKCFoLmJVc2VSZW5kZXJlZHx8aC5tRGF0YVByb3A9PT1udWxsKT9oLmZuUmVuZGVyKHtpRGF0YVJvdzpiLAppRGF0YUNvbHVtbjpmLGFEYXRhOmMuX2FEYXRhLG9TZXR0aW5nczphfSk6RyhhLGIsZiwiZGlzcGxheSIpO2lmKGguc0NsYXNzIT09bnVsbClkLmNsYXNzTmFtZT1oLnNDbGFzcztpZihoLmJWaXNpYmxlKXtjLm5Uci5hcHBlbmRDaGlsZChkKTtjLl9hbkhpZGRlbltmXT1udWxsfWVsc2UgYy5fYW5IaWRkZW5bZl09ZH19fWZ1bmN0aW9uICQoYSl7dmFyIGIsYyxkLGYsZSxoLGosayxtO2lmKGEuYkRlZmVyTG9hZGluZ3x8YS5zQWpheFNvdXJjZT09PW51bGwpe2o9YS5uVEJvZHkuY2hpbGROb2RlcztiPTA7Zm9yKGM9ai5sZW5ndGg7YjxjO2IrKylpZihqW2JdLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PSJUUiIpe2s9YS5hb0RhdGEubGVuZ3RoO2EuYW9EYXRhLnB1c2goe25UcjpqW2JdLF9pSWQ6YS5pTmV4dElkKyssX2FEYXRhOltdLF9hbkhpZGRlbjpbXSxfc1Jvd1N0cmlwZToiIn0pO2EuYWlEaXNwbGF5TWFzdGVyLnB1c2goayk7aD1qW2JdLmNoaWxkTm9kZXM7ZD1lPTA7Zm9yKGY9CmgubGVuZ3RoO2Q8ZjtkKyspe209aFtkXS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKG09PSJURCJ8fG09PSJUSCIpe08oYSxrLGUsaS50cmltKGhbZF0uaW5uZXJIVE1MKSk7ZSsrfX19fWo9YmEoYSk7aD1bXTtiPTA7Zm9yKGM9ai5sZW5ndGg7YjxjO2IrKyl7ZD0wO2ZvcihmPWpbYl0uY2hpbGROb2Rlcy5sZW5ndGg7ZDxmO2QrKyl7ZT1qW2JdLmNoaWxkTm9kZXNbZF07bT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7aWYobT09IlREInx8bT09IlRIIiloLnB1c2goZSl9fWgubGVuZ3RoIT1qLmxlbmd0aCphLmFvQ29sdW1ucy5sZW5ndGgmJkooYSwxLCJVbmV4cGVjdGVkIG51bWJlciBvZiBURCBlbGVtZW50cy4gRXhwZWN0ZWQgIitqLmxlbmd0aCphLmFvQ29sdW1ucy5sZW5ndGgrIiBhbmQgZ290ICIraC5sZW5ndGgrIi4gRGF0YVRhYmxlcyBkb2VzIG5vdCBzdXBwb3J0IHJvd3NwYW4gLyBjb2xzcGFuIGluIHRoZSB0YWJsZSBib2R5LCBhbmQgdGhlcmUgbXVzdCBiZSBvbmUgY2VsbCBmb3IgZWFjaCByb3cvY29sdW1uIGNvbWJpbmF0aW9uLiIpOwpkPTA7Zm9yKGY9YS5hb0NvbHVtbnMubGVuZ3RoO2Q8ZjtkKyspe2lmKGEuYW9Db2x1bW5zW2RdLnNUaXRsZT09PW51bGwpYS5hb0NvbHVtbnNbZF0uc1RpdGxlPWEuYW9Db2x1bW5zW2RdLm5UaC5pbm5lckhUTUw7aj1hLmFvQ29sdW1uc1tkXS5fYkF1dG9UeXBlO209dHlwZW9mIGEuYW9Db2x1bW5zW2RdLmZuUmVuZGVyPT0iZnVuY3Rpb24iO2U9YS5hb0NvbHVtbnNbZF0uc0NsYXNzIT09bnVsbDtrPWEuYW9Db2x1bW5zW2RdLmJWaXNpYmxlO3ZhciB1LHI7aWYoanx8bXx8ZXx8IWspe2I9MDtmb3IoYz1hLmFvRGF0YS5sZW5ndGg7YjxjO2IrKyl7dT1oW2IqZitkXTtpZihqJiZhLmFvQ29sdW1uc1tkXS5zVHlwZSE9InN0cmluZyIpe3I9RyhhLGIsZCwidHlwZSIpO2lmKHIhPT0iIil7cj1pYShyKTtpZihhLmFvQ29sdW1uc1tkXS5zVHlwZT09PW51bGwpYS5hb0NvbHVtbnNbZF0uc1R5cGU9cjtlbHNlIGlmKGEuYW9Db2x1bW5zW2RdLnNUeXBlIT1yJiZhLmFvQ29sdW1uc1tkXS5zVHlwZSE9CiJodG1sIilhLmFvQ29sdW1uc1tkXS5zVHlwZT0ic3RyaW5nIn19aWYobSl7cj1hLmFvQ29sdW1uc1tkXS5mblJlbmRlcih7aURhdGFSb3c6YixpRGF0YUNvbHVtbjpkLGFEYXRhOmEuYW9EYXRhW2JdLl9hRGF0YSxvU2V0dGluZ3M6YX0pO3UuaW5uZXJIVE1MPXI7YS5hb0NvbHVtbnNbZF0uYlVzZVJlbmRlcmVkJiZPKGEsYixkLHIpfWlmKGUpdS5jbGFzc05hbWUrPSIgIithLmFvQ29sdW1uc1tkXS5zQ2xhc3M7aWYoaylhLmFvRGF0YVtiXS5fYW5IaWRkZW5bZF09bnVsbDtlbHNle2EuYW9EYXRhW2JdLl9hbkhpZGRlbltkXT11O3UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1KX19fX19ZnVuY3Rpb24gWChhKXt2YXIgYixjLGQ7YS5uVEhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7aWYoYS5uVEhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRoIikubGVuZ3RoIT09MCl7Yj0wO2ZvcihkPWEuYW9Db2x1bW5zLmxlbmd0aDtiPGQ7YisrKXtjPWEuYW9Db2x1bW5zW2JdLm5UaDsKYS5hb0NvbHVtbnNbYl0uc0NsYXNzIT09bnVsbCYmaShjKS5hZGRDbGFzcyhhLmFvQ29sdW1uc1tiXS5zQ2xhc3MpO2lmKGEuYW9Db2x1bW5zW2JdLnNUaXRsZSE9Yy5pbm5lckhUTUwpYy5pbm5lckhUTUw9YS5hb0NvbHVtbnNbYl0uc1RpdGxlfX1lbHNle3ZhciBmPXAuY3JlYXRlRWxlbWVudCgidHIiKTtiPTA7Zm9yKGQ9YS5hb0NvbHVtbnMubGVuZ3RoO2I8ZDtiKyspe2M9YS5hb0NvbHVtbnNbYl0ublRoO2MuaW5uZXJIVE1MPWEuYW9Db2x1bW5zW2JdLnNUaXRsZTthLmFvQ29sdW1uc1tiXS5zQ2xhc3MhPT1udWxsJiZpKGMpLmFkZENsYXNzKGEuYW9Db2x1bW5zW2JdLnNDbGFzcyk7Zi5hcHBlbmRDaGlsZChjKX1pKGEublRIZWFkKS5odG1sKCIiKVswXS5hcHBlbmRDaGlsZChmKTtZKGEuYW9IZWFkZXIsYS5uVEhlYWQpfWlmKGEuYkpVSSl7Yj0wO2ZvcihkPWEuYW9Db2x1bW5zLmxlbmd0aDtiPGQ7YisrKXtjPWEuYW9Db2x1bW5zW2JdLm5UaDtmPXAuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmYuY2xhc3NOYW1lPWEub0NsYXNzZXMuc1NvcnRKVUlXcmFwcGVyO2koYykuY29udGVudHMoKS5hcHBlbmRUbyhmKTt2YXIgZT1wLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtlLmNsYXNzTmFtZT1hLm9DbGFzc2VzLnNTb3J0SWNvbjtmLmFwcGVuZENoaWxkKGUpO2MuYXBwZW5kQ2hpbGQoZil9fWQ9ZnVuY3Rpb24oKXt0aGlzLm9uc2VsZWN0c3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9O3JldHVybiBmYWxzZX07aWYoYS5vRmVhdHVyZXMuYlNvcnQpZm9yKGI9MDtiPGEuYW9Db2x1bW5zLmxlbmd0aDtiKyspaWYoYS5hb0NvbHVtbnNbYl0uYlNvcnRhYmxlIT09ZmFsc2Upe2phKGEsYS5hb0NvbHVtbnNbYl0ublRoLGIpO2koYS5hb0NvbHVtbnNbYl0ublRoKS5iaW5kKCJtb3VzZWRvd24uRFQiLGQpfWVsc2UgaShhLmFvQ29sdW1uc1tiXS5uVGgpLmFkZENsYXNzKGEub0NsYXNzZXMuc1NvcnRhYmxlTm9uZSk7YS5vQ2xhc3Nlcy5zRm9vdGVyVEghPT0iIiYmaShhLm5URm9vdCkuY2hpbGRyZW4oInRyIikuY2hpbGRyZW4oInRoIikuYWRkQ2xhc3MoYS5vQ2xhc3Nlcy5zRm9vdGVyVEgpOwppZihhLm5URm9vdCE9PW51bGwpe2M9UyhhLG51bGwsYS5hb0Zvb3Rlcik7Yj0wO2ZvcihkPWEuYW9Db2x1bW5zLmxlbmd0aDtiPGQ7YisrKWlmKHR5cGVvZiBjW2JdIT0idW5kZWZpbmVkIilhLmFvQ29sdW1uc1tiXS5uVGY9Y1tiXX19ZnVuY3Rpb24gTShhLGIsYyl7dmFyIGQsZixlLGg9W10saj1bXSxrPWEuYW9Db2x1bW5zLmxlbmd0aDtpZih0eXBlb2YgYz09InVuZGVmaW5lZCIpYz1mYWxzZTtkPTA7Zm9yKGY9Yi5sZW5ndGg7ZDxmO2QrKyl7aFtkXT1iW2RdLnNsaWNlKCk7aFtkXS5uVHI9YltkXS5uVHI7Zm9yKGU9ay0xO2U+PTA7ZS0tKSFhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZSYmIWMmJmhbZF0uc3BsaWNlKGUsMSk7ai5wdXNoKFtdKX1kPTA7Zm9yKGY9aC5sZW5ndGg7ZDxmO2QrKyl7aWYoaFtkXS5uVHIpe2E9MDtmb3IoZT1oW2RdLm5Uci5jaGlsZE5vZGVzLmxlbmd0aDthPGU7YSsrKWhbZF0ublRyLnJlbW92ZUNoaWxkKGhbZF0ublRyLmNoaWxkTm9kZXNbMF0pfWU9MDsKZm9yKGI9aFtkXS5sZW5ndGg7ZTxiO2UrKyl7az1jPTE7aWYodHlwZW9mIGpbZF1bZV09PSJ1bmRlZmluZWQiKXtoW2RdLm5Uci5hcHBlbmRDaGlsZChoW2RdW2VdLmNlbGwpO2ZvcihqW2RdW2VdPTE7dHlwZW9mIGhbZCtjXSE9InVuZGVmaW5lZCImJmhbZF1bZV0uY2VsbD09aFtkK2NdW2VdLmNlbGw7KXtqW2QrY11bZV09MTtjKyt9Zm9yKDt0eXBlb2YgaFtkXVtlK2tdIT0idW5kZWZpbmVkIiYmaFtkXVtlXS5jZWxsPT1oW2RdW2Ura10uY2VsbDspe2ZvcihhPTA7YTxjO2ErKylqW2QrYV1bZStrXT0xO2srK31oW2RdW2VdLmNlbGwucm93U3Bhbj1jO2hbZF1bZV0uY2VsbC5jb2xTcGFuPWt9fX19ZnVuY3Rpb24gQyhhKXt2YXIgYixjLGQ9W10sZj0wLGU9ZmFsc2U7Yj1hLmFzU3RyaXBlQ2xhc3Nlcy5sZW5ndGg7Yz1hLmFvT3BlblJvd3MubGVuZ3RoO2lmKCEoYS5mblByZURyYXdDYWxsYmFjayE9PW51bGwmJmEuZm5QcmVEcmF3Q2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhKT09PQpmYWxzZSkpe2EuYkRyYXdpbmc9dHJ1ZTtpZih0eXBlb2YgYS5pSW5pdERpc3BsYXlTdGFydCE9InVuZGVmaW5lZCImJmEuaUluaXREaXNwbGF5U3RhcnQhPS0xKXthLl9pRGlzcGxheVN0YXJ0PWEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlP2EuaUluaXREaXNwbGF5U3RhcnQ6YS5pSW5pdERpc3BsYXlTdGFydD49YS5mblJlY29yZHNEaXNwbGF5KCk/MDphLmlJbml0RGlzcGxheVN0YXJ0O2EuaUluaXREaXNwbGF5U3RhcnQ9LTE7RShhKX1pZihhLmJEZWZlckxvYWRpbmcpe2EuYkRlZmVyTG9hZGluZz1mYWxzZTthLmlEcmF3Kyt9ZWxzZSBpZihhLm9GZWF0dXJlcy5iU2VydmVyU2lkZSl7aWYoIWEuYkRlc3Ryb3lpbmcmJiFDYShhKSlyZXR1cm59ZWxzZSBhLmlEcmF3Kys7aWYoYS5haURpc3BsYXkubGVuZ3RoIT09MCl7dmFyIGg9YS5faURpc3BsYXlTdGFydCxqPWEuX2lEaXNwbGF5RW5kO2lmKGEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlKXtoPTA7aj1hLmFvRGF0YS5sZW5ndGh9Zm9yKGg9Cmg7aDxqO2grKyl7dmFyIGs9YS5hb0RhdGFbYS5haURpc3BsYXlbaF1dO2sublRyPT09bnVsbCYmeihhLGEuYWlEaXNwbGF5W2hdKTt2YXIgbT1rLm5UcjtpZihiIT09MCl7dmFyIHU9YS5hc1N0cmlwZUNsYXNzZXNbZiViXTtpZihrLl9zUm93U3RyaXBlIT11KXtpKG0pLnJlbW92ZUNsYXNzKGsuX3NSb3dTdHJpcGUpLmFkZENsYXNzKHUpO2suX3NSb3dTdHJpcGU9dX19aWYodHlwZW9mIGEuZm5Sb3dDYWxsYmFjaz09ImZ1bmN0aW9uIil7bT1hLmZuUm93Q2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxtLGEuYW9EYXRhW2EuYWlEaXNwbGF5W2hdXS5fYURhdGEsZixoKTtpZighbSYmIWUpe0ooYSwwLCJBIG5vZGUgd2FzIG5vdCByZXR1cm5lZCBieSBmblJvd0NhbGxiYWNrIik7ZT10cnVlfX1kLnB1c2gobSk7ZisrO2lmKGMhPT0wKWZvcihrPTA7azxjO2srKyltPT1hLmFvT3BlblJvd3Nba10ublBhcmVudCYmZC5wdXNoKGEuYW9PcGVuUm93c1trXS5uVHIpfX1lbHNle2RbMF09cC5jcmVhdGVFbGVtZW50KCJ0ciIpOwppZih0eXBlb2YgYS5hc1N0cmlwZUNsYXNzZXNbMF0hPSJ1bmRlZmluZWQiKWRbMF0uY2xhc3NOYW1lPWEuYXNTdHJpcGVDbGFzc2VzWzBdO2U9YS5vTGFuZ3VhZ2Uuc1plcm9SZWNvcmRzLnJlcGxhY2UoIl9NQVhfIixhLmZuRm9ybWF0TnVtYmVyKGEuZm5SZWNvcmRzVG90YWwoKSkpO2lmKGEuaURyYXc9PTEmJmEuc0FqYXhTb3VyY2UhPT1udWxsJiYhYS5vRmVhdHVyZXMuYlNlcnZlclNpZGUpZT1hLm9MYW5ndWFnZS5zTG9hZGluZ1JlY29yZHM7ZWxzZSBpZih0eXBlb2YgYS5vTGFuZ3VhZ2Uuc0VtcHR5VGFibGUhPSJ1bmRlZmluZWQiJiZhLmZuUmVjb3Jkc1RvdGFsKCk9PT0wKWU9YS5vTGFuZ3VhZ2Uuc0VtcHR5VGFibGU7Yj1wLmNyZWF0ZUVsZW1lbnQoInRkIik7Yi5zZXRBdHRyaWJ1dGUoInZhbGlnbiIsInRvcCIpO2IuY29sU3Bhbj1aKGEpO2IuY2xhc3NOYW1lPWEub0NsYXNzZXMuc1Jvd0VtcHR5O2IuaW5uZXJIVE1MPWU7ZFtmXS5hcHBlbmRDaGlsZChiKX10eXBlb2YgYS5mbkhlYWRlckNhbGxiYWNrPT0KImZ1bmN0aW9uIiYmYS5mbkhlYWRlckNhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsaShhLm5USGVhZCkuY2hpbGRyZW4oInRyIilbMF0sY2EoYSksYS5faURpc3BsYXlTdGFydCxhLmZuRGlzcGxheUVuZCgpLGEuYWlEaXNwbGF5KTt0eXBlb2YgYS5mbkZvb3RlckNhbGxiYWNrPT0iZnVuY3Rpb24iJiZhLmZuRm9vdGVyQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxpKGEublRGb290KS5jaGlsZHJlbigidHIiKVswXSxjYShhKSxhLl9pRGlzcGxheVN0YXJ0LGEuZm5EaXNwbGF5RW5kKCksYS5haURpc3BsYXkpO2Y9cC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yj1wLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihhLm5UQm9keSl7ZT1hLm5UQm9keS5wYXJlbnROb2RlO2IuYXBwZW5kQ2hpbGQoYS5uVEJvZHkpO2lmKCFhLm9TY3JvbGwuYkluZmluaXRlfHwhYS5fYkluaXRDb21wbGV0ZXx8YS5iU29ydGVkfHxhLmJGaWx0ZXJlZCl7Yz1hLm5UQm9keS5jaGlsZE5vZGVzO2ZvcihiPQpjLmxlbmd0aC0xO2I+PTA7Yi0tKWNbYl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjW2JdKX1iPTA7Zm9yKGM9ZC5sZW5ndGg7YjxjO2IrKylmLmFwcGVuZENoaWxkKGRbYl0pO2EublRCb2R5LmFwcGVuZENoaWxkKGYpO2UhPT1udWxsJiZlLmFwcGVuZENoaWxkKGEublRCb2R5KX1mb3IoYj1hLmFvRHJhd0NhbGxiYWNrLmxlbmd0aC0xO2I+PTA7Yi0tKWEuYW9EcmF3Q2FsbGJhY2tbYl0uZm4uY2FsbChhLm9JbnN0YW5jZSxhKTtpKGEub0luc3RhbmNlKS50cmlnZ2VyKCJkcmF3IixhKTthLmJTb3J0ZWQ9ZmFsc2U7YS5iRmlsdGVyZWQ9ZmFsc2U7YS5iRHJhd2luZz1mYWxzZTtpZihhLm9GZWF0dXJlcy5iU2VydmVyU2lkZSl7SyhhLGZhbHNlKTt0eXBlb2YgYS5fYkluaXRDb21wbGV0ZT09InVuZGVmaW5lZCImJncoYSl9fX1mdW5jdGlvbiBkYShhKXtpZihhLm9GZWF0dXJlcy5iU29ydClSKGEsYS5vUHJldmlvdXNTZWFyY2gpO2Vsc2UgaWYoYS5vRmVhdHVyZXMuYkZpbHRlcilOKGEsCmEub1ByZXZpb3VzU2VhcmNoKTtlbHNle0UoYSk7QyhhKX19ZnVuY3Rpb24gQ2EoYSl7aWYoYS5iQWpheERhdGFHZXQpe2EuaURyYXcrKztLKGEsdHJ1ZSk7dmFyIGI9RGEoYSk7aGEoYSxiKTthLmZuU2VydmVyRGF0YS5jYWxsKGEub0luc3RhbmNlLGEuc0FqYXhTb3VyY2UsYixmdW5jdGlvbihjKXtFYShhLGMpfSxhKTtyZXR1cm4gZmFsc2V9ZWxzZSByZXR1cm4gdHJ1ZX1mdW5jdGlvbiBEYShhKXt2YXIgYj1hLmFvQ29sdW1ucy5sZW5ndGgsYz1bXSxkLGY7Yy5wdXNoKHtuYW1lOiJzRWNobyIsdmFsdWU6YS5pRHJhd30pO2MucHVzaCh7bmFtZToiaUNvbHVtbnMiLHZhbHVlOmJ9KTtjLnB1c2goe25hbWU6InNDb2x1bW5zIix2YWx1ZTprYShhKX0pO2MucHVzaCh7bmFtZToiaURpc3BsYXlTdGFydCIsdmFsdWU6YS5faURpc3BsYXlTdGFydH0pO2MucHVzaCh7bmFtZToiaURpc3BsYXlMZW5ndGgiLHZhbHVlOmEub0ZlYXR1cmVzLmJQYWdpbmF0ZSE9PWZhbHNlP2EuX2lEaXNwbGF5TGVuZ3RoOgotMX0pO2ZvcihmPTA7ZjxiO2YrKyl7ZD1hLmFvQ29sdW1uc1tmXS5tRGF0YVByb3A7Yy5wdXNoKHtuYW1lOiJtRGF0YVByb3BfIitmLHZhbHVlOnR5cGVvZiBkPT0iZnVuY3Rpb24iPyJmdW5jdGlvbiI6ZH0pfWlmKGEub0ZlYXR1cmVzLmJGaWx0ZXIhPT1mYWxzZSl7Yy5wdXNoKHtuYW1lOiJzU2VhcmNoIix2YWx1ZTphLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNofSk7Yy5wdXNoKHtuYW1lOiJiUmVnZXgiLHZhbHVlOmEub1ByZXZpb3VzU2VhcmNoLmJSZWdleH0pO2ZvcihmPTA7ZjxiO2YrKyl7Yy5wdXNoKHtuYW1lOiJzU2VhcmNoXyIrZix2YWx1ZTphLmFvUHJlU2VhcmNoQ29sc1tmXS5zU2VhcmNofSk7Yy5wdXNoKHtuYW1lOiJiUmVnZXhfIitmLHZhbHVlOmEuYW9QcmVTZWFyY2hDb2xzW2ZdLmJSZWdleH0pO2MucHVzaCh7bmFtZToiYlNlYXJjaGFibGVfIitmLHZhbHVlOmEuYW9Db2x1bW5zW2ZdLmJTZWFyY2hhYmxlfSl9fWlmKGEub0ZlYXR1cmVzLmJTb3J0IT09ZmFsc2Upe2Q9CmEuYWFTb3J0aW5nRml4ZWQhPT1udWxsP2EuYWFTb3J0aW5nRml4ZWQubGVuZ3RoOjA7dmFyIGU9YS5hYVNvcnRpbmcubGVuZ3RoO2MucHVzaCh7bmFtZToiaVNvcnRpbmdDb2xzIix2YWx1ZTpkK2V9KTtmb3IoZj0wO2Y8ZDtmKyspe2MucHVzaCh7bmFtZToiaVNvcnRDb2xfIitmLHZhbHVlOmEuYWFTb3J0aW5nRml4ZWRbZl1bMF19KTtjLnB1c2goe25hbWU6InNTb3J0RGlyXyIrZix2YWx1ZTphLmFhU29ydGluZ0ZpeGVkW2ZdWzFdfSl9Zm9yKGY9MDtmPGU7ZisrKXtjLnB1c2goe25hbWU6ImlTb3J0Q29sXyIrKGYrZCksdmFsdWU6YS5hYVNvcnRpbmdbZl1bMF19KTtjLnB1c2goe25hbWU6InNTb3J0RGlyXyIrKGYrZCksdmFsdWU6YS5hYVNvcnRpbmdbZl1bMV19KX1mb3IoZj0wO2Y8YjtmKyspYy5wdXNoKHtuYW1lOiJiU29ydGFibGVfIitmLHZhbHVlOmEuYW9Db2x1bW5zW2ZdLmJTb3J0YWJsZX0pfXJldHVybiBjfWZ1bmN0aW9uIGhhKGEsYil7Zm9yKHZhciBjPTAsZD1hLmFvU2VydmVyUGFyYW1zLmxlbmd0aDtjPApkO2MrKylhLmFvU2VydmVyUGFyYW1zW2NdLmZuLmNhbGwoYS5vSW5zdGFuY2UsYil9ZnVuY3Rpb24gRWEoYSxiKXtpZih0eXBlb2YgYi5zRWNobyE9InVuZGVmaW5lZCIpaWYoYi5zRWNobyoxPGEuaURyYXcpcmV0dXJuO2Vsc2UgYS5pRHJhdz1iLnNFY2hvKjE7aWYoIWEub1Njcm9sbC5iSW5maW5pdGV8fGEub1Njcm9sbC5iSW5maW5pdGUmJihhLmJTb3J0ZWR8fGEuYkZpbHRlcmVkKSlsYShhKTthLl9pUmVjb3Jkc1RvdGFsPWIuaVRvdGFsUmVjb3JkczthLl9pUmVjb3Jkc0Rpc3BsYXk9Yi5pVG90YWxEaXNwbGF5UmVjb3Jkczt2YXIgYz1rYShhKTtpZihjPXR5cGVvZiBiLnNDb2x1bW5zIT0idW5kZWZpbmVkIiYmYyE9PSIiJiZiLnNDb2x1bW5zIT1jKXZhciBkPUZhKGEsYi5zQ29sdW1ucyk7Yj1hYShhLnNBamF4RGF0YVByb3ApKGIpO2Zvcih2YXIgZj0wLGU9Yi5sZW5ndGg7ZjxlO2YrKylpZihjKXtmb3IodmFyIGg9W10saj0wLGs9YS5hb0NvbHVtbnMubGVuZ3RoO2o8aztqKyspaC5wdXNoKGJbZl1bZFtqXV0pOwp2KGEsaCl9ZWxzZSB2KGEsYltmXSk7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTthLmJBamF4RGF0YUdldD1mYWxzZTtDKGEpO2EuYkFqYXhEYXRhR2V0PXRydWU7SyhhLGZhbHNlKX1mdW5jdGlvbiBBYShhKXt2YXIgYj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EublRhYmxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsYS5uVGFibGUpO2EublRhYmxlV3JhcHBlcj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EublRhYmxlV3JhcHBlci5jbGFzc05hbWU9YS5vQ2xhc3Nlcy5zV3JhcHBlcjthLnNUYWJsZUlkIT09IiImJmEublRhYmxlV3JhcHBlci5zZXRBdHRyaWJ1dGUoImlkIixhLnNUYWJsZUlkKyJfd3JhcHBlciIpO2EublRhYmxlUmVpbnNlcnRCZWZvcmU9YS5uVGFibGUubmV4dFNpYmxpbmc7Zm9yKHZhciBjPWEublRhYmxlV3JhcHBlcixkPWEuc0RvbS5zcGxpdCgiIiksZixlLGgsaixrLG0sdSxyPTA7cjxkLmxlbmd0aDtyKyspe2U9MDtoPWRbcl07aWYoaD09CiI8Iil7aj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2s9ZFtyKzFdO2lmKGs9PSInInx8az09JyInKXttPSIiO2Zvcih1PTI7ZFtyK3VdIT1rOyl7bSs9ZFtyK3VdO3UrK31pZihtPT0iSCIpbT0iZmctdG9vbGJhciB1aS10b29sYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLXRsIHVpLWNvcm5lci10ciB1aS1oZWxwZXItY2xlYXJmaXgiO2Vsc2UgaWYobT09IkYiKW09ImZnLXRvb2xiYXIgdWktdG9vbGJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1ibCB1aS1jb3JuZXItYnIgdWktaGVscGVyLWNsZWFyZml4IjtpZihtLmluZGV4T2YoIi4iKSE9LTEpe2s9bS5zcGxpdCgiLiIpO2ouc2V0QXR0cmlidXRlKCJpZCIsa1swXS5zdWJzdHIoMSxrWzBdLmxlbmd0aC0xKSk7ai5jbGFzc05hbWU9a1sxXX1lbHNlIGlmKG0uY2hhckF0KDApPT0iIyIpai5zZXRBdHRyaWJ1dGUoImlkIixtLnN1YnN0cigxLG0ubGVuZ3RoLTEpKTtlbHNlIGouY2xhc3NOYW1lPW07cis9dX1jLmFwcGVuZENoaWxkKGopOwpjPWp9ZWxzZSBpZihoPT0iPiIpYz1jLnBhcmVudE5vZGU7ZWxzZSBpZihoPT0ibCImJmEub0ZlYXR1cmVzLmJQYWdpbmF0ZSYmYS5vRmVhdHVyZXMuYkxlbmd0aENoYW5nZSl7Zj1HYShhKTtlPTF9ZWxzZSBpZihoPT0iZiImJmEub0ZlYXR1cmVzLmJGaWx0ZXIpe2Y9SGEoYSk7ZT0xfWVsc2UgaWYoaD09InIiJiZhLm9GZWF0dXJlcy5iUHJvY2Vzc2luZyl7Zj1JYShhKTtlPTF9ZWxzZSBpZihoPT0idCIpe2Y9SmEoYSk7ZT0xfWVsc2UgaWYoaD09ImkiJiZhLm9GZWF0dXJlcy5iSW5mbyl7Zj1LYShhKTtlPTF9ZWxzZSBpZihoPT0icCImJmEub0ZlYXR1cmVzLmJQYWdpbmF0ZSl7Zj1MYShhKTtlPTF9ZWxzZSBpZihuLmFvRmVhdHVyZXMubGVuZ3RoIT09MCl7aj1uLmFvRmVhdHVyZXM7dT0wO2ZvcihrPWoubGVuZ3RoO3U8azt1KyspaWYoaD09alt1XS5jRmVhdHVyZSl7aWYoZj1qW3VdLmZuSW5pdChhKSllPTE7YnJlYWt9fWlmKGU9PTEmJmYhPT1udWxsKXtpZih0eXBlb2YgYS5hYW5GZWF0dXJlc1toXSE9CiJvYmplY3QiKWEuYWFuRmVhdHVyZXNbaF09W107YS5hYW5GZWF0dXJlc1toXS5wdXNoKGYpO2MuYXBwZW5kQ2hpbGQoZil9fWIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYS5uVGFibGVXcmFwcGVyLGIpfWZ1bmN0aW9uIEphKGEpe2lmKGEub1Njcm9sbC5zWD09PSIiJiZhLm9TY3JvbGwuc1k9PT0iIilyZXR1cm4gYS5uVGFibGU7dmFyIGI9cC5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPXAuY3JlYXRlRWxlbWVudCgiZGl2IiksZD1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGY9cC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXAuY3JlYXRlRWxlbWVudCgiZGl2IiksaD1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGo9YS5uVGFibGUuY2xvbmVOb2RlKGZhbHNlKSxrPWEublRhYmxlLmNsb25lTm9kZShmYWxzZSksbT1hLm5UYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKVswXSx1PWEublRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Zm9vdCIpLmxlbmd0aD09PTA/bnVsbDphLm5UYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGZvb3QiKVswXSwKcj10eXBlb2YgZy5iSlF1ZXJ5VUkhPSJ1bmRlZmluZWQiJiZnLmJKUXVlcnlVST9uLm9KVUlDbGFzc2VzOm4ub1N0ZENsYXNzZXM7Yy5hcHBlbmRDaGlsZChkKTtlLmFwcGVuZENoaWxkKGgpO2YuYXBwZW5kQ2hpbGQoYS5uVGFibGUpO2IuYXBwZW5kQ2hpbGQoYyk7Yi5hcHBlbmRDaGlsZChmKTtkLmFwcGVuZENoaWxkKGopO2ouYXBwZW5kQ2hpbGQobSk7aWYodSE9PW51bGwpe2IuYXBwZW5kQ2hpbGQoZSk7aC5hcHBlbmRDaGlsZChrKTtrLmFwcGVuZENoaWxkKHUpfWIuY2xhc3NOYW1lPXIuc1Njcm9sbFdyYXBwZXI7Yy5jbGFzc05hbWU9ci5zU2Nyb2xsSGVhZDtkLmNsYXNzTmFtZT1yLnNTY3JvbGxIZWFkSW5uZXI7Zi5jbGFzc05hbWU9ci5zU2Nyb2xsQm9keTtlLmNsYXNzTmFtZT1yLnNTY3JvbGxGb290O2guY2xhc3NOYW1lPXIuc1Njcm9sbEZvb3RJbm5lcjtpZihhLm9TY3JvbGwuYkF1dG9Dc3Mpe2Muc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7Yy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiOwplLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Yuc3R5bGUub3ZlcmZsb3c9ImF1dG8ifWMuc3R5bGUuYm9yZGVyPSIwIjtjLnN0eWxlLndpZHRoPSIxMDAlIjtlLnN0eWxlLmJvcmRlcj0iMCI7ZC5zdHlsZS53aWR0aD0iMTUwJSI7ai5yZW1vdmVBdHRyaWJ1dGUoImlkIik7ai5zdHlsZS5tYXJnaW5MZWZ0PSIwIjthLm5UYWJsZS5zdHlsZS5tYXJnaW5MZWZ0PSIwIjtpZih1IT09bnVsbCl7ay5yZW1vdmVBdHRyaWJ1dGUoImlkIik7ay5zdHlsZS5tYXJnaW5MZWZ0PSIwIn1kPWkoYS5uVGFibGUpLmNoaWxkcmVuKCJjYXB0aW9uIik7aD0wO2ZvcihrPWQubGVuZ3RoO2g8aztoKyspai5hcHBlbmRDaGlsZChkW2hdKTtpZihhLm9TY3JvbGwuc1ghPT0iIil7Yy5zdHlsZS53aWR0aD1xKGEub1Njcm9sbC5zWCk7Zi5zdHlsZS53aWR0aD1xKGEub1Njcm9sbC5zWCk7aWYodSE9PW51bGwpZS5zdHlsZS53aWR0aD1xKGEub1Njcm9sbC5zWCk7aShmKS5zY3JvbGwoZnVuY3Rpb24oKXtjLnNjcm9sbExlZnQ9CnRoaXMuc2Nyb2xsTGVmdDtpZih1IT09bnVsbCllLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxMZWZ0fSl9aWYoYS5vU2Nyb2xsLnNZIT09IiIpZi5zdHlsZS5oZWlnaHQ9cShhLm9TY3JvbGwuc1kpO2EuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46TWEsc05hbWU6InNjcm9sbGluZyJ9KTthLm9TY3JvbGwuYkluZmluaXRlJiZpKGYpLnNjcm9sbChmdW5jdGlvbigpe2lmKCFhLmJEcmF3aW5nKWlmKGkodGhpcykuc2Nyb2xsVG9wKCkraSh0aGlzKS5oZWlnaHQoKT5pKGEublRhYmxlKS5oZWlnaHQoKS1hLm9TY3JvbGwuaUxvYWRHYXApaWYoYS5mbkRpc3BsYXlFbmQoKTxhLmZuUmVjb3Jkc0Rpc3BsYXkoKSl7bWEoYSwibmV4dCIpO0UoYSk7QyhhKX19KTthLm5TY3JvbGxIZWFkPWM7YS5uU2Nyb2xsRm9vdD1lO3JldHVybiBifWZ1bmN0aW9uIE1hKGEpe3ZhciBiPWEublNjcm9sbEhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzBdLGM9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKVswXSwKZD1hLm5UYWJsZS5wYXJlbnROb2RlLGYsZSxoLGosayxtLHUscixIPVtdLEw9YS5uVEZvb3QhPT1udWxsP2EublNjcm9sbEZvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzBdOm51bGwsVD1hLm5URm9vdCE9PW51bGw/TC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKVswXTpudWxsLEI9aS5icm93c2VyLm1zaWUmJmkuYnJvd3Nlci52ZXJzaW9uPD03O2g9YS5uVGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRoZWFkIik7aC5sZW5ndGg+MCYmYS5uVGFibGUucmVtb3ZlQ2hpbGQoaFswXSk7aWYoYS5uVEZvb3QhPT1udWxsKXtrPWEublRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Zm9vdCIpO2subGVuZ3RoPjAmJmEublRhYmxlLnJlbW92ZUNoaWxkKGtbMF0pfWg9YS5uVEhlYWQuY2xvbmVOb2RlKHRydWUpO2EublRhYmxlLmluc2VydEJlZm9yZShoLGEublRhYmxlLmNoaWxkTm9kZXNbMF0pO2lmKGEublRGb290IT09bnVsbCl7az1hLm5URm9vdC5jbG9uZU5vZGUodHJ1ZSk7CmEublRhYmxlLmluc2VydEJlZm9yZShrLGEublRhYmxlLmNoaWxkTm9kZXNbMV0pfWlmKGEub1Njcm9sbC5zWD09PSIiKXtkLnN0eWxlLndpZHRoPSIxMDAlIjtiLnBhcmVudE5vZGUuc3R5bGUud2lkdGg9IjEwMCUifXZhciBVPVMoYSxoKTtmPTA7Zm9yKGU9VS5sZW5ndGg7ZjxlO2YrKyl7dT1OYShhLGYpO1VbZl0uc3R5bGUud2lkdGg9YS5hb0NvbHVtbnNbdV0uc1dpZHRofWEublRGb290IT09bnVsbCYmUChmdW5jdGlvbihJKXtJLnN0eWxlLndpZHRoPSIifSxrLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpKTtmPWkoYS5uVGFibGUpLm91dGVyV2lkdGgoKTtpZihhLm9TY3JvbGwuc1g9PT0iIil7YS5uVGFibGUuc3R5bGUud2lkdGg9IjEwMCUiO2lmKEImJihkLnNjcm9sbEhlaWdodD5kLm9mZnNldEhlaWdodHx8aShkKS5jc3MoIm92ZXJmbG93LXkiKT09InNjcm9sbCIpKWEublRhYmxlLnN0eWxlLndpZHRoPXEoaShhLm5UYWJsZSkub3V0ZXJXaWR0aCgpLWEub1Njcm9sbC5pQmFyV2lkdGgpfWVsc2UgaWYoYS5vU2Nyb2xsLnNYSW5uZXIhPT0KIiIpYS5uVGFibGUuc3R5bGUud2lkdGg9cShhLm9TY3JvbGwuc1hJbm5lcik7ZWxzZSBpZihmPT1pKGQpLndpZHRoKCkmJmkoZCkuaGVpZ2h0KCk8aShhLm5UYWJsZSkuaGVpZ2h0KCkpe2EublRhYmxlLnN0eWxlLndpZHRoPXEoZi1hLm9TY3JvbGwuaUJhcldpZHRoKTtpZihpKGEublRhYmxlKS5vdXRlcldpZHRoKCk+Zi1hLm9TY3JvbGwuaUJhcldpZHRoKWEublRhYmxlLnN0eWxlLndpZHRoPXEoZil9ZWxzZSBhLm5UYWJsZS5zdHlsZS53aWR0aD1xKGYpO2Y9aShhLm5UYWJsZSkub3V0ZXJXaWR0aCgpO2U9YS5uVEhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIik7aD1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpO1AoZnVuY3Rpb24oSSxuYSl7bT1JLnN0eWxlO20ucGFkZGluZ1RvcD0iMCI7bS5wYWRkaW5nQm90dG9tPSIwIjttLmJvcmRlclRvcFdpZHRoPSIwIjttLmJvcmRlckJvdHRvbVdpZHRoPSIwIjttLmhlaWdodD0wO3I9aShJKS53aWR0aCgpO25hLnN0eWxlLndpZHRoPQpxKHIpO0gucHVzaChyKX0saCxlKTtpKGgpLmhlaWdodCgwKTtpZihhLm5URm9vdCE9PW51bGwpe2o9ay5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHIiKTtrPWEublRGb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpO1AoZnVuY3Rpb24oSSxuYSl7bT1JLnN0eWxlO20ucGFkZGluZ1RvcD0iMCI7bS5wYWRkaW5nQm90dG9tPSIwIjttLmJvcmRlclRvcFdpZHRoPSIwIjttLmJvcmRlckJvdHRvbVdpZHRoPSIwIjttLmhlaWdodD0wO3I9aShJKS53aWR0aCgpO25hLnN0eWxlLndpZHRoPXEocik7SC5wdXNoKHIpfSxqLGspO2koaikuaGVpZ2h0KDApfVAoZnVuY3Rpb24oSSl7SS5pbm5lckhUTUw9IiI7SS5zdHlsZS53aWR0aD1xKEguc2hpZnQoKSl9LGgpO2EublRGb290IT09bnVsbCYmUChmdW5jdGlvbihJKXtJLmlubmVySFRNTD0iIjtJLnN0eWxlLndpZHRoPXEoSC5zaGlmdCgpKX0saik7aWYoaShhLm5UYWJsZSkub3V0ZXJXaWR0aCgpPGYpe2o9ZC5zY3JvbGxIZWlnaHQ+ZC5vZmZzZXRIZWlnaHR8fAppKGQpLmNzcygib3ZlcmZsb3cteSIpPT0ic2Nyb2xsIj9mK2Eub1Njcm9sbC5pQmFyV2lkdGg6ZjtpZihCJiYoZC5zY3JvbGxIZWlnaHQ+ZC5vZmZzZXRIZWlnaHR8fGkoZCkuY3NzKCJvdmVyZmxvdy15Iik9PSJzY3JvbGwiKSlhLm5UYWJsZS5zdHlsZS53aWR0aD1xKGotYS5vU2Nyb2xsLmlCYXJXaWR0aCk7ZC5zdHlsZS53aWR0aD1xKGopO2IucGFyZW50Tm9kZS5zdHlsZS53aWR0aD1xKGopO2lmKGEublRGb290IT09bnVsbClMLnBhcmVudE5vZGUuc3R5bGUud2lkdGg9cShqKTtpZihhLm9TY3JvbGwuc1g9PT0iIilKKGEsMSwiVGhlIHRhYmxlIGNhbm5vdCBmaXQgaW50byB0aGUgY3VycmVudCBlbGVtZW50IHdoaWNoIHdpbGwgY2F1c2UgY29sdW1uIG1pc2FsaWdubWVudC4gVGhlIHRhYmxlIGhhcyBiZWVuIGRyYXduIGF0IGl0cyBtaW5pbXVtIHBvc3NpYmxlIHdpZHRoLiIpO2Vsc2UgYS5vU2Nyb2xsLnNYSW5uZXIhPT0iIiYmSihhLDEsIlRoZSB0YWJsZSBjYW5ub3QgZml0IGludG8gdGhlIGN1cnJlbnQgZWxlbWVudCB3aGljaCB3aWxsIGNhdXNlIGNvbHVtbiBtaXNhbGlnbm1lbnQuIEluY3JlYXNlIHRoZSBzU2Nyb2xsWElubmVyIHZhbHVlIG9yIHJlbW92ZSBpdCB0byBhbGxvdyBhdXRvbWF0aWMgY2FsY3VsYXRpb24iKX1lbHNle2Quc3R5bGUud2lkdGg9CnEoIjEwMCUiKTtiLnBhcmVudE5vZGUuc3R5bGUud2lkdGg9cSgiMTAwJSIpO2lmKGEublRGb290IT09bnVsbClMLnBhcmVudE5vZGUuc3R5bGUud2lkdGg9cSgiMTAwJSIpfWlmKGEub1Njcm9sbC5zWT09PSIiKWlmKEIpZC5zdHlsZS5oZWlnaHQ9cShhLm5UYWJsZS5vZmZzZXRIZWlnaHQrYS5vU2Nyb2xsLmlCYXJXaWR0aCk7aWYoYS5vU2Nyb2xsLnNZIT09IiImJmEub1Njcm9sbC5iQ29sbGFwc2Upe2Quc3R5bGUuaGVpZ2h0PXEoYS5vU2Nyb2xsLnNZKTtCPWEub1Njcm9sbC5zWCE9PSIiJiZhLm5UYWJsZS5vZmZzZXRXaWR0aD5kLm9mZnNldFdpZHRoP2Eub1Njcm9sbC5pQmFyV2lkdGg6MDtpZihhLm5UYWJsZS5vZmZzZXRIZWlnaHQ8ZC5vZmZzZXRIZWlnaHQpZC5zdHlsZS5oZWlnaHQ9cShpKGEublRhYmxlKS5oZWlnaHQoKStCKX1CPWkoYS5uVGFibGUpLm91dGVyV2lkdGgoKTtjLnN0eWxlLndpZHRoPXEoQik7Yi5zdHlsZS53aWR0aD1xKEIrYS5vU2Nyb2xsLmlCYXJXaWR0aCk7CmlmKGEublRGb290IT09bnVsbCl7TC5zdHlsZS53aWR0aD1xKGEublRhYmxlLm9mZnNldFdpZHRoK2Eub1Njcm9sbC5pQmFyV2lkdGgpO1Quc3R5bGUud2lkdGg9cShhLm5UYWJsZS5vZmZzZXRXaWR0aCl9aWYoYS5iU29ydGVkfHxhLmJGaWx0ZXJlZClkLnNjcm9sbFRvcD0wfWZ1bmN0aW9uIGVhKGEpe2lmKGEub0ZlYXR1cmVzLmJBdXRvV2lkdGg9PT1mYWxzZSlyZXR1cm4gZmFsc2U7Z2EoYSk7Zm9yKHZhciBiPTAsYz1hLmFvQ29sdW1ucy5sZW5ndGg7YjxjO2IrKylhLmFvQ29sdW1uc1tiXS5uVGguc3R5bGUud2lkdGg9YS5hb0NvbHVtbnNbYl0uc1dpZHRofWZ1bmN0aW9uIEhhKGEpe3ZhciBiPWEub0xhbmd1YWdlLnNTZWFyY2g7Yj1iLmluZGV4T2YoIl9JTlBVVF8iKSE9PS0xP2IucmVwbGFjZSgiX0lOUFVUXyIsJzxpbnB1dCB0eXBlPSJ0ZXh0IiAvPicpOmI9PT0iIj8nPGlucHV0IHR5cGU9InRleHQiIC8+JzpiKycgPGlucHV0IHR5cGU9InRleHQiIC8+Jzt2YXIgYz1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpjLmNsYXNzTmFtZT1hLm9DbGFzc2VzLnNGaWx0ZXI7Yy5pbm5lckhUTUw9IjxsYWJlbD4iK2IrIjwvbGFiZWw+IjthLnNUYWJsZUlkIT09IiImJnR5cGVvZiBhLmFhbkZlYXR1cmVzLmY9PSJ1bmRlZmluZWQiJiZjLnNldEF0dHJpYnV0ZSgiaWQiLGEuc1RhYmxlSWQrIl9maWx0ZXIiKTtiPWkoImlucHV0IixjKTtiLnZhbChhLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoLnJlcGxhY2UoJyInLCImcXVvdDsiKSk7Yi5iaW5kKCJrZXl1cC5EVCIsZnVuY3Rpb24oKXtmb3IodmFyIGQ9YS5hYW5GZWF0dXJlcy5mLGY9MCxlPWQubGVuZ3RoO2Y8ZTtmKyspZFtmXSE9aSh0aGlzKS5wYXJlbnRzKCJkaXYuZGF0YVRhYmxlc19maWx0ZXIiKVswXSYmaSgiaW5wdXQiLGRbZl0pLnZhbCh0aGlzLnZhbHVlKTt0aGlzLnZhbHVlIT1hLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoJiZOKGEse3NTZWFyY2g6dGhpcy52YWx1ZSxiUmVnZXg6YS5vUHJldmlvdXNTZWFyY2guYlJlZ2V4LGJTbWFydDphLm9QcmV2aW91c1NlYXJjaC5iU21hcnR9KX0pOwpiLmJpbmQoImtleXByZXNzLkRUIixmdW5jdGlvbihkKXtpZihkLmtleUNvZGU9PTEzKXJldHVybiBmYWxzZX0pO3JldHVybiBjfWZ1bmN0aW9uIE4oYSxiLGMpe09hKGEsYi5zU2VhcmNoLGMsYi5iUmVnZXgsYi5iU21hcnQpO2ZvcihiPTA7YjxhLmFvUHJlU2VhcmNoQ29scy5sZW5ndGg7YisrKVBhKGEsYS5hb1ByZVNlYXJjaENvbHNbYl0uc1NlYXJjaCxiLGEuYW9QcmVTZWFyY2hDb2xzW2JdLmJSZWdleCxhLmFvUHJlU2VhcmNoQ29sc1tiXS5iU21hcnQpO24uYWZuRmlsdGVyaW5nLmxlbmd0aCE9PTAmJlFhKGEpO2EuYkZpbHRlcmVkPXRydWU7aShhLm9JbnN0YW5jZSkudHJpZ2dlcigiZmlsdGVyIixhKTthLl9pRGlzcGxheVN0YXJ0PTA7RShhKTtDKGEpO29hKGEsMCl9ZnVuY3Rpb24gUWEoYSl7Zm9yKHZhciBiPW4uYWZuRmlsdGVyaW5nLGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspZm9yKHZhciBmPTAsZT0wLGg9YS5haURpc3BsYXkubGVuZ3RoO2U8aDtlKyspe3ZhciBqPWEuYWlEaXNwbGF5W2UtCmZdO2lmKCFiW2NdKGEsZmEoYSxqLCJmaWx0ZXIiKSxqKSl7YS5haURpc3BsYXkuc3BsaWNlKGUtZiwxKTtmKyt9fX1mdW5jdGlvbiBQYShhLGIsYyxkLGYpe2lmKGIhPT0iIil7dmFyIGU9MDtiPXBhKGIsZCxmKTtmb3IoZD1hLmFpRGlzcGxheS5sZW5ndGgtMTtkPj0wO2QtLSl7Zj1xYShHKGEsYS5haURpc3BsYXlbZF0sYywiZmlsdGVyIiksYS5hb0NvbHVtbnNbY10uc1R5cGUpO2lmKCFiLnRlc3QoZikpe2EuYWlEaXNwbGF5LnNwbGljZShkLDEpO2UrK319fX1mdW5jdGlvbiBPYShhLGIsYyxkLGYpe3ZhciBlPXBhKGIsZCxmKTtpZih0eXBlb2YgYz09InVuZGVmaW5lZCJ8fGM9PT1udWxsKWM9MDtpZihuLmFmbkZpbHRlcmluZy5sZW5ndGghPT0wKWM9MTtpZihiLmxlbmd0aDw9MCl7YS5haURpc3BsYXkuc3BsaWNlKDAsYS5haURpc3BsYXkubGVuZ3RoKTthLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpfWVsc2UgaWYoYS5haURpc3BsYXkubGVuZ3RoPT1hLmFpRGlzcGxheU1hc3Rlci5sZW5ndGh8fAphLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoLmxlbmd0aD5iLmxlbmd0aHx8Yz09MXx8Yi5pbmRleE9mKGEub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2gpIT09MCl7YS5haURpc3BsYXkuc3BsaWNlKDAsYS5haURpc3BsYXkubGVuZ3RoKTtvYShhLDEpO2ZvcihjPTA7YzxhLmFpRGlzcGxheU1hc3Rlci5sZW5ndGg7YysrKWUudGVzdChhLmFzRGF0YVNlYXJjaFtjXSkmJmEuYWlEaXNwbGF5LnB1c2goYS5haURpc3BsYXlNYXN0ZXJbY10pfWVsc2V7dmFyIGg9MDtmb3IoYz0wO2M8YS5hc0RhdGFTZWFyY2gubGVuZ3RoO2MrKylpZighZS50ZXN0KGEuYXNEYXRhU2VhcmNoW2NdKSl7YS5haURpc3BsYXkuc3BsaWNlKGMtaCwxKTtoKyt9fWEub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2g9YjthLm9QcmV2aW91c1NlYXJjaC5iUmVnZXg9ZDthLm9QcmV2aW91c1NlYXJjaC5iU21hcnQ9Zn1mdW5jdGlvbiBvYShhLGIpe2lmKCFhLm9GZWF0dXJlcy5iU2VydmVyU2lkZSl7YS5hc0RhdGFTZWFyY2guc3BsaWNlKDAsCmEuYXNEYXRhU2VhcmNoLmxlbmd0aCk7Yj10eXBlb2YgYiE9InVuZGVmaW5lZCImJmI9PTE/YS5haURpc3BsYXlNYXN0ZXI6YS5haURpc3BsYXk7Zm9yKHZhciBjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKWEuYXNEYXRhU2VhcmNoW2NdPXJhKGEsZmEoYSxiW2NdLCJmaWx0ZXIiKSl9fWZ1bmN0aW9uIHJhKGEsYil7dmFyIGM9IiI7aWYodHlwZW9mIGEuX19uVG1wRmlsdGVyPT0idW5kZWZpbmVkIilhLl9fblRtcEZpbHRlcj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Zvcih2YXIgZD1hLl9fblRtcEZpbHRlcixmPTAsZT1hLmFvQ29sdW1ucy5sZW5ndGg7ZjxlO2YrKylpZihhLmFvQ29sdW1uc1tmXS5iU2VhcmNoYWJsZSljKz1xYShiW2ZdLGEuYW9Db2x1bW5zW2ZdLnNUeXBlKSsiICAiO2lmKGMuaW5kZXhPZigiJiIpIT09LTEpe2QuaW5uZXJIVE1MPWM7Yz1kLnRleHRDb250ZW50P2QudGV4dENvbnRlbnQ6ZC5pbm5lclRleHQ7Yz1jLnJlcGxhY2UoL1xuL2csIiAiKS5yZXBsYWNlKC9cci9nLAoiIil9cmV0dXJuIGN9ZnVuY3Rpb24gcGEoYSxiLGMpe2lmKGMpe2E9Yj9hLnNwbGl0KCIgIik6c2EoYSkuc3BsaXQoIiAiKTthPSJeKD89Lio/IithLmpvaW4oIikoPz0uKj8iKSsiKS4qJCI7cmV0dXJuIG5ldyBSZWdFeHAoYSwiaSIpfWVsc2V7YT1iP2E6c2EoYSk7cmV0dXJuIG5ldyBSZWdFeHAoYSwiaSIpfX1mdW5jdGlvbiBxYShhLGIpe2lmKHR5cGVvZiBuLm9mblNlYXJjaFtiXT09ImZ1bmN0aW9uIilyZXR1cm4gbi5vZm5TZWFyY2hbYl0oYSk7ZWxzZSBpZihiPT0iaHRtbCIpcmV0dXJuIGEucmVwbGFjZSgvXG4vZywiICIpLnJlcGxhY2UoLzwuKj8+L2csIiIpO2Vsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBhLnJlcGxhY2UoL1xuL2csIiAiKTtlbHNlIGlmKGE9PT1udWxsKXJldHVybiIiO3JldHVybiBhfWZ1bmN0aW9uIFIoYSxiKXt2YXIgYyxkLGYsZSxoPVtdLGo9W10saz1uLm9Tb3J0O2Q9YS5hb0RhdGE7dmFyIG09YS5hb0NvbHVtbnM7aWYoIWEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlJiYKKGEuYWFTb3J0aW5nLmxlbmd0aCE9PTB8fGEuYWFTb3J0aW5nRml4ZWQhPT1udWxsKSl7aD1hLmFhU29ydGluZ0ZpeGVkIT09bnVsbD9hLmFhU29ydGluZ0ZpeGVkLmNvbmNhdChhLmFhU29ydGluZyk6YS5hYVNvcnRpbmcuc2xpY2UoKTtmb3IoYz0wO2M8aC5sZW5ndGg7YysrKXt2YXIgdT1oW2NdWzBdO2Y9dGEoYSx1KTtlPWEuYW9Db2x1bW5zW3VdLnNTb3J0RGF0YVR5cGU7aWYodHlwZW9mIG4uYWZuU29ydERhdGFbZV0hPSJ1bmRlZmluZWQiKXt2YXIgcj1uLmFmblNvcnREYXRhW2VdKGEsdSxmKTtmPTA7Zm9yKGU9ZC5sZW5ndGg7ZjxlO2YrKylPKGEsZix1LHJbZl0pfX1jPTA7Zm9yKGQ9YS5haURpc3BsYXlNYXN0ZXIubGVuZ3RoO2M8ZDtjKyspalthLmFpRGlzcGxheU1hc3RlcltjXV09Yzt2YXIgSD1oLmxlbmd0aDthLmFpRGlzcGxheU1hc3Rlci5zb3J0KGZ1bmN0aW9uKEwsVCl7dmFyIEIsVTtmb3IoYz0wO2M8SDtjKyspe0I9bVtoW2NdWzBdXS5pRGF0YVNvcnQ7VT1tW0JdLnNUeXBlOwpCPWtbKFU/VToic3RyaW5nIikrIi0iK2hbY11bMV1dKEcoYSxMLEIsInNvcnQiKSxHKGEsVCxCLCJzb3J0IikpO2lmKEIhPT0wKXJldHVybiBCfXJldHVybiBrWyJudW1lcmljLWFzYyJdKGpbTF0saltUXSl9KX1pZigodHlwZW9mIGI9PSJ1bmRlZmluZWQifHxiKSYmIWEub0ZlYXR1cmVzLmJEZWZlclJlbmRlcilWKGEpO2EuYlNvcnRlZD10cnVlO2koYS5vSW5zdGFuY2UpLnRyaWdnZXIoInNvcnQiLGEpO2lmKGEub0ZlYXR1cmVzLmJGaWx0ZXIpTihhLGEub1ByZXZpb3VzU2VhcmNoLDEpO2Vsc2V7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTthLl9pRGlzcGxheVN0YXJ0PTA7RShhKTtDKGEpfX1mdW5jdGlvbiBqYShhLGIsYyxkKXtpKGIpLmJpbmQoImNsaWNrLkRUIixmdW5jdGlvbihmKXtpZihhLmFvQ29sdW1uc1tjXS5iU29ydGFibGUhPT1mYWxzZSl7dmFyIGU9ZnVuY3Rpb24oKXt2YXIgaCxqO2lmKGYuc2hpZnRLZXkpe2Zvcih2YXIgaz1mYWxzZSxtPTA7bTwKYS5hYVNvcnRpbmcubGVuZ3RoO20rKylpZihhLmFhU29ydGluZ1ttXVswXT09Yyl7az10cnVlO2g9YS5hYVNvcnRpbmdbbV1bMF07aj1hLmFhU29ydGluZ1ttXVsyXSsxO2lmKHR5cGVvZiBhLmFvQ29sdW1uc1toXS5hc1NvcnRpbmdbal09PSJ1bmRlZmluZWQiKWEuYWFTb3J0aW5nLnNwbGljZShtLDEpO2Vsc2V7YS5hYVNvcnRpbmdbbV1bMV09YS5hb0NvbHVtbnNbaF0uYXNTb3J0aW5nW2pdO2EuYWFTb3J0aW5nW21dWzJdPWp9YnJlYWt9az09PWZhbHNlJiZhLmFhU29ydGluZy5wdXNoKFtjLGEuYW9Db2x1bW5zW2NdLmFzU29ydGluZ1swXSwwXSl9ZWxzZSBpZihhLmFhU29ydGluZy5sZW5ndGg9PTEmJmEuYWFTb3J0aW5nWzBdWzBdPT1jKXtoPWEuYWFTb3J0aW5nWzBdWzBdO2o9YS5hYVNvcnRpbmdbMF1bMl0rMTtpZih0eXBlb2YgYS5hb0NvbHVtbnNbaF0uYXNTb3J0aW5nW2pdPT0idW5kZWZpbmVkIilqPTA7YS5hYVNvcnRpbmdbMF1bMV09YS5hb0NvbHVtbnNbaF0uYXNTb3J0aW5nW2pdOwphLmFhU29ydGluZ1swXVsyXT1qfWVsc2V7YS5hYVNvcnRpbmcuc3BsaWNlKDAsYS5hYVNvcnRpbmcubGVuZ3RoKTthLmFhU29ydGluZy5wdXNoKFtjLGEuYW9Db2x1bW5zW2NdLmFzU29ydGluZ1swXSwwXSl9UihhKX07aWYoYS5vRmVhdHVyZXMuYlByb2Nlc3Npbmcpe0soYSx0cnVlKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSgpO2Eub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlfHxLKGEsZmFsc2UpfSwwKX1lbHNlIGUoKTt0eXBlb2YgZD09ImZ1bmN0aW9uIiYmZChhKX19KX1mdW5jdGlvbiBWKGEpe3ZhciBiLGMsZCxmLGUsaD1hLmFvQ29sdW1ucy5sZW5ndGgsaj1hLm9DbGFzc2VzO2ZvcihiPTA7YjxoO2IrKylhLmFvQ29sdW1uc1tiXS5iU29ydGFibGUmJmkoYS5hb0NvbHVtbnNbYl0ublRoKS5yZW1vdmVDbGFzcyhqLnNTb3J0QXNjKyIgIitqLnNTb3J0RGVzYysiICIrYS5hb0NvbHVtbnNbYl0uc1NvcnRpbmdDbGFzcyk7Zj1hLmFhU29ydGluZ0ZpeGVkIT09bnVsbD9hLmFhU29ydGluZ0ZpeGVkLmNvbmNhdChhLmFhU29ydGluZyk6CmEuYWFTb3J0aW5nLnNsaWNlKCk7Zm9yKGI9MDtiPGEuYW9Db2x1bW5zLmxlbmd0aDtiKyspaWYoYS5hb0NvbHVtbnNbYl0uYlNvcnRhYmxlKXtlPWEuYW9Db2x1bW5zW2JdLnNTb3J0aW5nQ2xhc3M7ZD0tMTtmb3IoYz0wO2M8Zi5sZW5ndGg7YysrKWlmKGZbY11bMF09PWIpe2U9ZltjXVsxXT09ImFzYyI/ai5zU29ydEFzYzpqLnNTb3J0RGVzYztkPWM7YnJlYWt9aShhLmFvQ29sdW1uc1tiXS5uVGgpLmFkZENsYXNzKGUpO2lmKGEuYkpVSSl7Yz1pKCJzcGFuIixhLmFvQ29sdW1uc1tiXS5uVGgpO2MucmVtb3ZlQ2xhc3Moai5zU29ydEpVSUFzYysiICIrai5zU29ydEpVSURlc2MrIiAiK2ouc1NvcnRKVUkrIiAiK2ouc1NvcnRKVUlBc2NBbGxvd2VkKyIgIitqLnNTb3J0SlVJRGVzY0FsbG93ZWQpO2MuYWRkQ2xhc3MoZD09LTE/YS5hb0NvbHVtbnNbYl0uc1NvcnRpbmdDbGFzc0pVSTpmW2RdWzFdPT0iYXNjIj9qLnNTb3J0SlVJQXNjOmouc1NvcnRKVUlEZXNjKX19ZWxzZSBpKGEuYW9Db2x1bW5zW2JdLm5UaCkuYWRkQ2xhc3MoYS5hb0NvbHVtbnNbYl0uc1NvcnRpbmdDbGFzcyk7CmU9ai5zU29ydENvbHVtbjtpZihhLm9GZWF0dXJlcy5iU29ydCYmYS5vRmVhdHVyZXMuYlNvcnRDbGFzc2VzKXtkPVEoYSk7aWYoYS5vRmVhdHVyZXMuYkRlZmVyUmVuZGVyKWkoZCkucmVtb3ZlQ2xhc3MoZSsiMSAiK2UrIjIgIitlKyIzIik7ZWxzZSBpZihkLmxlbmd0aD49aClmb3IoYj0wO2I8aDtiKyspaWYoZFtiXS5jbGFzc05hbWUuaW5kZXhPZihlKyIxIikhPS0xKXtjPTA7Zm9yKGE9ZC5sZW5ndGgvaDtjPGE7YysrKWRbaCpjK2JdLmNsYXNzTmFtZT1pLnRyaW0oZFtoKmMrYl0uY2xhc3NOYW1lLnJlcGxhY2UoZSsiMSIsIiIpKX1lbHNlIGlmKGRbYl0uY2xhc3NOYW1lLmluZGV4T2YoZSsiMiIpIT0tMSl7Yz0wO2ZvcihhPWQubGVuZ3RoL2g7YzxhO2MrKylkW2gqYytiXS5jbGFzc05hbWU9aS50cmltKGRbaCpjK2JdLmNsYXNzTmFtZS5yZXBsYWNlKGUrIjIiLCIiKSl9ZWxzZSBpZihkW2JdLmNsYXNzTmFtZS5pbmRleE9mKGUrIjMiKSE9LTEpe2M9MDtmb3IoYT1kLmxlbmd0aC8KaDtjPGE7YysrKWRbaCpjK2JdLmNsYXNzTmFtZT1pLnRyaW0oZFtoKmMrYl0uY2xhc3NOYW1lLnJlcGxhY2UoIiAiK2UrIjMiLCIiKSl9aj0xO3ZhciBrO2ZvcihiPTA7YjxmLmxlbmd0aDtiKyspe2s9cGFyc2VJbnQoZltiXVswXSwxMCk7Yz0wO2ZvcihhPWQubGVuZ3RoL2g7YzxhO2MrKylkW2gqYytrXS5jbGFzc05hbWUrPSIgIitlK2o7ajwzJiZqKyt9fX1mdW5jdGlvbiBMYShhKXtpZihhLm9TY3JvbGwuYkluZmluaXRlKXJldHVybiBudWxsO3ZhciBiPXAuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yi5jbGFzc05hbWU9YS5vQ2xhc3Nlcy5zUGFnaW5nK2Euc1BhZ2luYXRpb25UeXBlO24ub1BhZ2luYXRpb25bYS5zUGFnaW5hdGlvblR5cGVdLmZuSW5pdChhLGIsZnVuY3Rpb24oYyl7RShjKTtDKGMpfSk7dHlwZW9mIGEuYWFuRmVhdHVyZXMucD09InVuZGVmaW5lZCImJmEuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46ZnVuY3Rpb24oYyl7bi5vUGFnaW5hdGlvbltjLnNQYWdpbmF0aW9uVHlwZV0uZm5VcGRhdGUoYywKZnVuY3Rpb24oZCl7RShkKTtDKGQpfSl9LHNOYW1lOiJwYWdpbmF0aW9uIn0pO3JldHVybiBifWZ1bmN0aW9uIG1hKGEsYil7dmFyIGM9YS5faURpc3BsYXlTdGFydDtpZihiPT0iZmlyc3QiKWEuX2lEaXNwbGF5U3RhcnQ9MDtlbHNlIGlmKGI9PSJwcmV2aW91cyIpe2EuX2lEaXNwbGF5U3RhcnQ9YS5faURpc3BsYXlMZW5ndGg+PTA/YS5faURpc3BsYXlTdGFydC1hLl9pRGlzcGxheUxlbmd0aDowO2lmKGEuX2lEaXNwbGF5U3RhcnQ8MClhLl9pRGlzcGxheVN0YXJ0PTB9ZWxzZSBpZihiPT0ibmV4dCIpaWYoYS5faURpc3BsYXlMZW5ndGg+PTApe2lmKGEuX2lEaXNwbGF5U3RhcnQrYS5faURpc3BsYXlMZW5ndGg8YS5mblJlY29yZHNEaXNwbGF5KCkpYS5faURpc3BsYXlTdGFydCs9YS5faURpc3BsYXlMZW5ndGh9ZWxzZSBhLl9pRGlzcGxheVN0YXJ0PTA7ZWxzZSBpZihiPT0ibGFzdCIpaWYoYS5faURpc3BsYXlMZW5ndGg+PTApe2I9cGFyc2VJbnQoKGEuZm5SZWNvcmRzRGlzcGxheSgpLQoxKS9hLl9pRGlzcGxheUxlbmd0aCwxMCkrMTthLl9pRGlzcGxheVN0YXJ0PShiLTEpKmEuX2lEaXNwbGF5TGVuZ3RofWVsc2UgYS5faURpc3BsYXlTdGFydD0wO2Vsc2UgSihhLDAsIlVua25vd24gcGFnaW5nIGFjdGlvbjogIitiKTtpKGEub0luc3RhbmNlKS50cmlnZ2VyKCJwYWdlIixhKTtyZXR1cm4gYyE9YS5faURpc3BsYXlTdGFydH1mdW5jdGlvbiBLYShhKXt2YXIgYj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuY2xhc3NOYW1lPWEub0NsYXNzZXMuc0luZm87aWYodHlwZW9mIGEuYWFuRmVhdHVyZXMuaT09InVuZGVmaW5lZCIpe2EuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46UmEsc05hbWU6ImluZm9ybWF0aW9uIn0pO2Euc1RhYmxlSWQhPT0iIiYmYi5zZXRBdHRyaWJ1dGUoImlkIixhLnNUYWJsZUlkKyJfaW5mbyIpfXJldHVybiBifWZ1bmN0aW9uIFJhKGEpe2lmKCEoIWEub0ZlYXR1cmVzLmJJbmZvfHxhLmFhbkZlYXR1cmVzLmkubGVuZ3RoPT09MCkpe3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQrCjEsYz1hLmZuRGlzcGxheUVuZCgpLGQ9YS5mblJlY29yZHNUb3RhbCgpLGY9YS5mblJlY29yZHNEaXNwbGF5KCksZT1hLmZuRm9ybWF0TnVtYmVyKGIpLGg9YS5mbkZvcm1hdE51bWJlcihjKSxqPWEuZm5Gb3JtYXROdW1iZXIoZCksaz1hLmZuRm9ybWF0TnVtYmVyKGYpO2lmKGEub1Njcm9sbC5iSW5maW5pdGUpZT1hLmZuRm9ybWF0TnVtYmVyKDEpO2U9YS5mblJlY29yZHNEaXNwbGF5KCk9PT0wJiZhLmZuUmVjb3Jkc0Rpc3BsYXkoKT09YS5mblJlY29yZHNUb3RhbCgpP2Eub0xhbmd1YWdlLnNJbmZvRW1wdHkrYS5vTGFuZ3VhZ2Uuc0luZm9Qb3N0Rml4OmEuZm5SZWNvcmRzRGlzcGxheSgpPT09MD9hLm9MYW5ndWFnZS5zSW5mb0VtcHR5KyIgIithLm9MYW5ndWFnZS5zSW5mb0ZpbHRlcmVkLnJlcGxhY2UoIl9NQVhfIixqKSthLm9MYW5ndWFnZS5zSW5mb1Bvc3RGaXg6YS5mblJlY29yZHNEaXNwbGF5KCk9PWEuZm5SZWNvcmRzVG90YWwoKT9hLm9MYW5ndWFnZS5zSW5mby5yZXBsYWNlKCJfU1RBUlRfIiwKZSkucmVwbGFjZSgiX0VORF8iLGgpLnJlcGxhY2UoIl9UT1RBTF8iLGspK2Eub0xhbmd1YWdlLnNJbmZvUG9zdEZpeDphLm9MYW5ndWFnZS5zSW5mby5yZXBsYWNlKCJfU1RBUlRfIixlKS5yZXBsYWNlKCJfRU5EXyIsaCkucmVwbGFjZSgiX1RPVEFMXyIsaykrIiAiK2Eub0xhbmd1YWdlLnNJbmZvRmlsdGVyZWQucmVwbGFjZSgiX01BWF8iLGEuZm5Gb3JtYXROdW1iZXIoYS5mblJlY29yZHNUb3RhbCgpKSkrYS5vTGFuZ3VhZ2Uuc0luZm9Qb3N0Rml4O2lmKGEub0xhbmd1YWdlLmZuSW5mb0NhbGxiYWNrIT09bnVsbCllPWEub0xhbmd1YWdlLmZuSW5mb0NhbGxiYWNrKGEsYixjLGQsZixlKTthPWEuYWFuRmVhdHVyZXMuaTtiPTA7Zm9yKGM9YS5sZW5ndGg7YjxjO2IrKylpKGFbYl0pLmh0bWwoZSl9fWZ1bmN0aW9uIEdhKGEpe2lmKGEub1Njcm9sbC5iSW5maW5pdGUpcmV0dXJuIG51bGw7dmFyIGI9JzxzZWxlY3Qgc2l6ZT0iMSIgJysoYS5zVGFibGVJZD09PSIiPyIiOiduYW1lPSInKwphLnNUYWJsZUlkKydfbGVuZ3RoIicpKyI+IixjLGQ7aWYoYS5hTGVuZ3RoTWVudS5sZW5ndGg9PTImJnR5cGVvZiBhLmFMZW5ndGhNZW51WzBdPT0ib2JqZWN0IiYmdHlwZW9mIGEuYUxlbmd0aE1lbnVbMV09PSJvYmplY3QiKXtjPTA7Zm9yKGQ9YS5hTGVuZ3RoTWVudVswXS5sZW5ndGg7YzxkO2MrKyliKz0nPG9wdGlvbiB2YWx1ZT0iJythLmFMZW5ndGhNZW51WzBdW2NdKyciPicrYS5hTGVuZ3RoTWVudVsxXVtjXSsiPC9vcHRpb24+In1lbHNle2M9MDtmb3IoZD1hLmFMZW5ndGhNZW51Lmxlbmd0aDtjPGQ7YysrKWIrPSc8b3B0aW9uIHZhbHVlPSInK2EuYUxlbmd0aE1lbnVbY10rJyI+JythLmFMZW5ndGhNZW51W2NdKyI8L29wdGlvbj4ifWIrPSI8L3NlbGVjdD4iO3ZhciBmPXAuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5zVGFibGVJZCE9PSIiJiZ0eXBlb2YgYS5hYW5GZWF0dXJlcy5sPT0idW5kZWZpbmVkIiYmZi5zZXRBdHRyaWJ1dGUoImlkIixhLnNUYWJsZUlkKyJfbGVuZ3RoIik7CmYuY2xhc3NOYW1lPWEub0NsYXNzZXMuc0xlbmd0aDtmLmlubmVySFRNTD0iPGxhYmVsPiIrYS5vTGFuZ3VhZ2Uuc0xlbmd0aE1lbnUucmVwbGFjZSgiX01FTlVfIixiKSsiPC9sYWJlbD4iO2koJ3NlbGVjdCBvcHRpb25bdmFsdWU9IicrYS5faURpc3BsYXlMZW5ndGgrJyJdJyxmKS5hdHRyKCJzZWxlY3RlZCIsdHJ1ZSk7aSgic2VsZWN0IixmKS5iaW5kKCJjaGFuZ2UuRFQiLGZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzKS52YWwoKSxoPWEuYWFuRmVhdHVyZXMubDtjPTA7Zm9yKGQ9aC5sZW5ndGg7YzxkO2MrKyloW2NdIT10aGlzLnBhcmVudE5vZGUmJmkoInNlbGVjdCIsaFtjXSkudmFsKGUpO2EuX2lEaXNwbGF5TGVuZ3RoPXBhcnNlSW50KGUsMTApO0UoYSk7aWYoYS5mbkRpc3BsYXlFbmQoKT09YS5mblJlY29yZHNEaXNwbGF5KCkpe2EuX2lEaXNwbGF5U3RhcnQ9YS5mbkRpc3BsYXlFbmQoKS1hLl9pRGlzcGxheUxlbmd0aDtpZihhLl9pRGlzcGxheVN0YXJ0PDApYS5faURpc3BsYXlTdGFydD0KMH1pZihhLl9pRGlzcGxheUxlbmd0aD09LTEpYS5faURpc3BsYXlTdGFydD0wO0MoYSl9KTtyZXR1cm4gZn1mdW5jdGlvbiBJYShhKXt2YXIgYj1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc1RhYmxlSWQhPT0iIiYmdHlwZW9mIGEuYWFuRmVhdHVyZXMucj09InVuZGVmaW5lZCImJmIuc2V0QXR0cmlidXRlKCJpZCIsYS5zVGFibGVJZCsiX3Byb2Nlc3NpbmciKTtiLmlubmVySFRNTD1hLm9MYW5ndWFnZS5zUHJvY2Vzc2luZztiLmNsYXNzTmFtZT1hLm9DbGFzc2VzLnNQcm9jZXNzaW5nO2EublRhYmxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsYS5uVGFibGUpO3JldHVybiBifWZ1bmN0aW9uIEsoYSxiKXtpZihhLm9GZWF0dXJlcy5iUHJvY2Vzc2luZyl7YT1hLmFhbkZlYXR1cmVzLnI7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWFbY10uc3R5bGUudmlzaWJpbGl0eT1iPyJ2aXNpYmxlIjoiaGlkZGVuIn19ZnVuY3Rpb24gTmEoYSxiKXtmb3IodmFyIGM9LTEsZD0wO2Q8CmEuYW9Db2x1bW5zLmxlbmd0aDtkKyspe2EuYW9Db2x1bW5zW2RdLmJWaXNpYmxlPT09dHJ1ZSYmYysrO2lmKGM9PWIpcmV0dXJuIGR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdGEoYSxiKXtmb3IodmFyIGM9LTEsZD0wO2Q8YS5hb0NvbHVtbnMubGVuZ3RoO2QrKyl7YS5hb0NvbHVtbnNbZF0uYlZpc2libGU9PT10cnVlJiZjKys7aWYoZD09YilyZXR1cm4gYS5hb0NvbHVtbnNbZF0uYlZpc2libGU9PT10cnVlP2M6bnVsbH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBXKGEsYil7dmFyIGMsZDtjPWEuX2lEaXNwbGF5U3RhcnQ7Zm9yKGQ9YS5faURpc3BsYXlFbmQ7YzxkO2MrKylpZihhLmFvRGF0YVthLmFpRGlzcGxheVtjXV0ublRyPT1iKXJldHVybiBhLmFpRGlzcGxheVtjXTtjPTA7Zm9yKGQ9YS5hb0RhdGEubGVuZ3RoO2M8ZDtjKyspaWYoYS5hb0RhdGFbY10ublRyPT1iKXJldHVybiBjO3JldHVybiBudWxsfWZ1bmN0aW9uIFooYSl7Zm9yKHZhciBiPTAsYz0wO2M8YS5hb0NvbHVtbnMubGVuZ3RoO2MrKylhLmFvQ29sdW1uc1tjXS5iVmlzaWJsZT09PQp0cnVlJiZiKys7cmV0dXJuIGJ9ZnVuY3Rpb24gRShhKXthLl9pRGlzcGxheUVuZD1hLm9GZWF0dXJlcy5iUGFnaW5hdGU9PT1mYWxzZT9hLmFpRGlzcGxheS5sZW5ndGg6YS5faURpc3BsYXlTdGFydCthLl9pRGlzcGxheUxlbmd0aD5hLmFpRGlzcGxheS5sZW5ndGh8fGEuX2lEaXNwbGF5TGVuZ3RoPT0tMT9hLmFpRGlzcGxheS5sZW5ndGg6YS5faURpc3BsYXlTdGFydCthLl9pRGlzcGxheUxlbmd0aH1mdW5jdGlvbiBTYShhLGIpe2lmKCFhfHxhPT09bnVsbHx8YT09PSIiKXJldHVybiAwO2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkIiliPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTt2YXIgYz1wLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Muc3R5bGUud2lkdGg9cShhKTtiLmFwcGVuZENoaWxkKGMpO2E9Yy5vZmZzZXRXaWR0aDtiLnJlbW92ZUNoaWxkKGMpO3JldHVybiBhfWZ1bmN0aW9uIGdhKGEpe3ZhciBiPTAsYyxkPTAsZj1hLmFvQ29sdW1ucy5sZW5ndGgsZSxoPWkoInRoIiwKYS5uVEhlYWQpO2ZvcihlPTA7ZTxmO2UrKylpZihhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZSl7ZCsrO2lmKGEuYW9Db2x1bW5zW2VdLnNXaWR0aCE9PW51bGwpe2M9U2EoYS5hb0NvbHVtbnNbZV0uc1dpZHRoT3JpZyxhLm5UYWJsZS5wYXJlbnROb2RlKTtpZihjIT09bnVsbClhLmFvQ29sdW1uc1tlXS5zV2lkdGg9cShjKTtiKyt9fWlmKGY9PWgubGVuZ3RoJiZiPT09MCYmZD09ZiYmYS5vU2Nyb2xsLnNYPT09IiImJmEub1Njcm9sbC5zWT09PSIiKWZvcihlPTA7ZTxhLmFvQ29sdW1ucy5sZW5ndGg7ZSsrKXtjPWkoaFtlXSkud2lkdGgoKTtpZihjIT09bnVsbClhLmFvQ29sdW1uc1tlXS5zV2lkdGg9cShjKX1lbHNle2I9YS5uVGFibGUuY2xvbmVOb2RlKGZhbHNlKTtlPWEublRIZWFkLmNsb25lTm9kZSh0cnVlKTtkPXAuY3JlYXRlRWxlbWVudCgidGJvZHkiKTtjPXAuY3JlYXRlRWxlbWVudCgidHIiKTtiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTtiLmFwcGVuZENoaWxkKGUpO2lmKGEublRGb290IT09Cm51bGwpe2IuYXBwZW5kQ2hpbGQoYS5uVEZvb3QuY2xvbmVOb2RlKHRydWUpKTtQKGZ1bmN0aW9uKGspe2suc3R5bGUud2lkdGg9IiJ9LGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIikpfWIuYXBwZW5kQ2hpbGQoZCk7ZC5hcHBlbmRDaGlsZChjKTtkPWkoInRoZWFkIHRoIixiKTtpZihkLmxlbmd0aD09PTApZD1pKCJ0Ym9keSB0cjplcSgwKT50ZCIsYik7aD1TKGEsZSk7Zm9yKGU9ZD0wO2U8ZjtlKyspe3ZhciBqPWEuYW9Db2x1bW5zW2VdO2lmKGouYlZpc2libGUmJmouc1dpZHRoT3JpZyE9PW51bGwmJmouc1dpZHRoT3JpZyE9PSIiKWhbZS1kXS5zdHlsZS53aWR0aD1xKGouc1dpZHRoT3JpZyk7ZWxzZSBpZihqLmJWaXNpYmxlKWhbZS1kXS5zdHlsZS53aWR0aD0iIjtlbHNlIGQrK31mb3IoZT0wO2U8ZjtlKyspaWYoYS5hb0NvbHVtbnNbZV0uYlZpc2libGUpe2Q9VGEoYSxlKTtpZihkIT09bnVsbCl7ZD1kLmNsb25lTm9kZSh0cnVlKTtpZihhLmFvQ29sdW1uc1tlXS5zQ29udGVudFBhZGRpbmchPT0KIiIpZC5pbm5lckhUTUwrPWEuYW9Db2x1bW5zW2VdLnNDb250ZW50UGFkZGluZztjLmFwcGVuZENoaWxkKGQpfX1mPWEublRhYmxlLnBhcmVudE5vZGU7Zi5hcHBlbmRDaGlsZChiKTtpZihhLm9TY3JvbGwuc1ghPT0iIiYmYS5vU2Nyb2xsLnNYSW5uZXIhPT0iIiliLnN0eWxlLndpZHRoPXEoYS5vU2Nyb2xsLnNYSW5uZXIpO2Vsc2UgaWYoYS5vU2Nyb2xsLnNYIT09IiIpe2Iuc3R5bGUud2lkdGg9IiI7aWYoaShiKS53aWR0aCgpPGYub2Zmc2V0V2lkdGgpYi5zdHlsZS53aWR0aD1xKGYub2Zmc2V0V2lkdGgpfWVsc2UgaWYoYS5vU2Nyb2xsLnNZIT09IiIpYi5zdHlsZS53aWR0aD1xKGYub2Zmc2V0V2lkdGgpO2Iuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjtVYShhLGIpO2Y9aSgidGJvZHkgdHI6ZXEoMCkiLGIpLmNoaWxkcmVuKCk7aWYoZi5sZW5ndGg9PT0wKWY9UyhhLGkoInRoZWFkIixiKVswXSk7aWYoYS5vU2Nyb2xsLnNYIT09IiIpe2ZvcihlPWQ9Yz0wO2U8YS5hb0NvbHVtbnMubGVuZ3RoO2UrKylpZihhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZSl7Yys9CmEuYW9Db2x1bW5zW2VdLnNXaWR0aE9yaWc9PT1udWxsP2koZltkXSkub3V0ZXJXaWR0aCgpOnBhcnNlSW50KGEuYW9Db2x1bW5zW2VdLnNXaWR0aC5yZXBsYWNlKCJweCIsIiIpLDEwKSsoaShmW2RdKS5vdXRlcldpZHRoKCktaShmW2RdKS53aWR0aCgpKTtkKyt9Yi5zdHlsZS53aWR0aD1xKGMpO2EublRhYmxlLnN0eWxlLndpZHRoPXEoYyl9Zm9yKGU9ZD0wO2U8YS5hb0NvbHVtbnMubGVuZ3RoO2UrKylpZihhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZSl7Yz1pKGZbZF0pLndpZHRoKCk7aWYoYyE9PW51bGwmJmM+MClhLmFvQ29sdW1uc1tlXS5zV2lkdGg9cShjKTtkKyt9YS5uVGFibGUuc3R5bGUud2lkdGg9cShpKGIpLm91dGVyV2lkdGgoKSk7Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfX1mdW5jdGlvbiBVYShhLGIpe2lmKGEub1Njcm9sbC5zWD09PSIiJiZhLm9TY3JvbGwuc1khPT0iIil7aShiKS53aWR0aCgpO2Iuc3R5bGUud2lkdGg9cShpKGIpLm91dGVyV2lkdGgoKS1hLm9TY3JvbGwuaUJhcldpZHRoKX1lbHNlIGlmKGEub1Njcm9sbC5zWCE9PQoiIiliLnN0eWxlLndpZHRoPXEoaShiKS5vdXRlcldpZHRoKCkpfWZ1bmN0aW9uIFRhKGEsYil7dmFyIGM9VmEoYSxiKTtpZihjPDApcmV0dXJuIG51bGw7aWYoYS5hb0RhdGFbY10ublRyPT09bnVsbCl7dmFyIGQ9cC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2QuaW5uZXJIVE1MPUcoYSxjLGIsIiIpO3JldHVybiBkfXJldHVybiBRKGEsYylbYl19ZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGM9LTEsZD0tMSxmPTA7ZjxhLmFvRGF0YS5sZW5ndGg7ZisrKXt2YXIgZT1HKGEsZixiLCJkaXNwbGF5IikrIiI7ZT1lLnJlcGxhY2UoLzwuKj8+L2csIiIpO2lmKGUubGVuZ3RoPmMpe2M9ZS5sZW5ndGg7ZD1mfX1yZXR1cm4gZH1mdW5jdGlvbiBxKGEpe2lmKGE9PT1udWxsKXJldHVybiIwcHgiO2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoYTwwKXJldHVybiIwcHgiO3JldHVybiBhKyJweCJ9dmFyIGI9YS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpO2lmKGI8NDh8fGI+NTcpcmV0dXJuIGE7cmV0dXJuIGErCiJweCJ9ZnVuY3Rpb24gWmEoYSxiKXtpZihhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuIDE7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSE9YltjXSlyZXR1cm4gMjtyZXR1cm4gMH1mdW5jdGlvbiBpYShhKXtmb3IodmFyIGI9bi5hVHlwZXMsYz1iLmxlbmd0aCxkPTA7ZDxjO2QrKyl7dmFyIGY9YltkXShhKTtpZihmIT09bnVsbClyZXR1cm4gZn1yZXR1cm4ic3RyaW5nIn1mdW5jdGlvbiBBKGEpe2Zvcih2YXIgYj0wO2I8RC5sZW5ndGg7YisrKWlmKERbYl0ublRhYmxlPT1hKXJldHVybiBEW2JdO3JldHVybiBudWxsfWZ1bmN0aW9uIGNhKGEpe2Zvcih2YXIgYj1bXSxjPWEuYW9EYXRhLmxlbmd0aCxkPTA7ZDxjO2QrKyliLnB1c2goYS5hb0RhdGFbZF0uX2FEYXRhKTtyZXR1cm4gYn1mdW5jdGlvbiBiYShhKXtmb3IodmFyIGI9W10sYz0wLGQ9YS5hb0RhdGEubGVuZ3RoO2M8ZDtjKyspYS5hb0RhdGFbY10ublRyIT09bnVsbCYmYi5wdXNoKGEuYW9EYXRhW2NdLm5Ucik7CnJldHVybiBifWZ1bmN0aW9uIFEoYSxiKXt2YXIgYz1bXSxkLGYsZSxoLGo7Zj0wO3ZhciBrPWEuYW9EYXRhLmxlbmd0aDtpZih0eXBlb2YgYiE9InVuZGVmaW5lZCIpe2Y9YjtrPWIrMX1mb3IoZj1mO2Y8aztmKyspe2o9YS5hb0RhdGFbZl07aWYoai5uVHIhPT1udWxsKXtiPVtdO2U9MDtmb3IoaD1qLm5Uci5jaGlsZE5vZGVzLmxlbmd0aDtlPGg7ZSsrKXtkPWoublRyLmNoaWxkTm9kZXNbZV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihkPT0idGQifHxkPT0idGgiKWIucHVzaChqLm5Uci5jaGlsZE5vZGVzW2VdKX1lPWQ9MDtmb3IoaD1hLmFvQ29sdW1ucy5sZW5ndGg7ZTxoO2UrKylpZihhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZSljLnB1c2goYltlLWRdKTtlbHNle2MucHVzaChqLl9hbkhpZGRlbltlXSk7ZCsrfX19cmV0dXJuIGN9ZnVuY3Rpb24gc2EoYSl7cmV0dXJuIGEucmVwbGFjZShuZXcgUmVnRXhwKCIoXFwvfFxcLnxcXCp8XFwrfFxcP3xcXHx8XFwofFxcKXxcXFt8XFxdfFxce3xcXH18XFxcXHxcXCR8XFxeKSIsCiJnIiksIlxcJDEiKX1mdW5jdGlvbiB1YShhLGIpe2Zvcih2YXIgYz0tMSxkPTAsZj1hLmxlbmd0aDtkPGY7ZCsrKWlmKGFbZF09PWIpYz1kO2Vsc2UgYVtkXT5iJiZhW2RdLS07YyE9LTEmJmEuc3BsaWNlKGMsMSl9ZnVuY3Rpb24gRmEoYSxiKXtiPWIuc3BsaXQoIiwiKTtmb3IodmFyIGM9W10sZD0wLGY9YS5hb0NvbHVtbnMubGVuZ3RoO2Q8ZjtkKyspZm9yKHZhciBlPTA7ZTxmO2UrKylpZihhLmFvQ29sdW1uc1tkXS5zTmFtZT09YltlXSl7Yy5wdXNoKGUpO2JyZWFrfXJldHVybiBjfWZ1bmN0aW9uIGthKGEpe2Zvcih2YXIgYj0iIixjPTAsZD1hLmFvQ29sdW1ucy5sZW5ndGg7YzxkO2MrKyliKz1hLmFvQ29sdW1uc1tjXS5zTmFtZSsiLCI7aWYoYi5sZW5ndGg9PWQpcmV0dXJuIiI7cmV0dXJuIGIuc2xpY2UoMCwtMSl9ZnVuY3Rpb24gSihhLGIsYyl7YT1hLnNUYWJsZUlkPT09IiI/IkRhdGFUYWJsZXMgd2FybmluZzogIitjOiJEYXRhVGFibGVzIHdhcm5pbmcgKHRhYmxlIGlkID0gJyIrCmEuc1RhYmxlSWQrIicpOiAiK2M7aWYoYj09PTApaWYobi5zRXJyTW9kZT09ImFsZXJ0IilhbGVydChhKTtlbHNlIHRocm93IGE7ZWxzZSB0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCImJnR5cGVvZiBjb25zb2xlLmxvZyE9InVuZGVmaW5lZCImJmNvbnNvbGUubG9nKGEpfWZ1bmN0aW9uIGxhKGEpe2EuYW9EYXRhLnNwbGljZSgwLGEuYW9EYXRhLmxlbmd0aCk7YS5haURpc3BsYXlNYXN0ZXIuc3BsaWNlKDAsYS5haURpc3BsYXlNYXN0ZXIubGVuZ3RoKTthLmFpRGlzcGxheS5zcGxpY2UoMCxhLmFpRGlzcGxheS5sZW5ndGgpO0UoYSl9ZnVuY3Rpb24gdmEoYSl7aWYoISghYS5vRmVhdHVyZXMuYlN0YXRlU2F2ZXx8dHlwZW9mIGEuYkRlc3Ryb3lpbmchPSJ1bmRlZmluZWQiKSl7dmFyIGIsYyxkLGY9InsiO2YrPSciaUNyZWF0ZSI6JysobmV3IERhdGUpLmdldFRpbWUoKSsiLCI7Zis9JyJpU3RhcnQiOicrKGEub1Njcm9sbC5iSW5maW5pdGU/MDphLl9pRGlzcGxheVN0YXJ0KSsiLCI7CmYrPSciaUVuZCI6JysoYS5vU2Nyb2xsLmJJbmZpbml0ZT9hLl9pRGlzcGxheUxlbmd0aDphLl9pRGlzcGxheUVuZCkrIiwiO2YrPSciaUxlbmd0aCI6JythLl9pRGlzcGxheUxlbmd0aCsiLCI7Zis9JyJzRmlsdGVyIjoiJytlbmNvZGVVUklDb21wb25lbnQoYS5vUHJldmlvdXNTZWFyY2guc1NlYXJjaCkrJyIsJztmKz0nInNGaWx0ZXJFc2MiOicrIWEub1ByZXZpb3VzU2VhcmNoLmJSZWdleCsiLCI7Zis9JyJhYVNvcnRpbmciOlsgJztmb3IoYj0wO2I8YS5hYVNvcnRpbmcubGVuZ3RoO2IrKylmKz0iWyIrYS5hYVNvcnRpbmdbYl1bMF0rJywiJythLmFhU29ydGluZ1tiXVsxXSsnIl0sJztmPWYuc3Vic3RyaW5nKDAsZi5sZW5ndGgtMSk7Zis9Il0sIjtmKz0nImFhU2VhcmNoQ29scyI6WyAnO2ZvcihiPTA7YjxhLmFvUHJlU2VhcmNoQ29scy5sZW5ndGg7YisrKWYrPSdbIicrZW5jb2RlVVJJQ29tcG9uZW50KGEuYW9QcmVTZWFyY2hDb2xzW2JdLnNTZWFyY2gpKyciLCcrIWEuYW9QcmVTZWFyY2hDb2xzW2JdLmJSZWdleCsKIl0sIjtmPWYuc3Vic3RyaW5nKDAsZi5sZW5ndGgtMSk7Zis9Il0sIjtmKz0nImFiVmlzQ29scyI6WyAnO2ZvcihiPTA7YjxhLmFvQ29sdW1ucy5sZW5ndGg7YisrKWYrPWEuYW9Db2x1bW5zW2JdLmJWaXNpYmxlKyIsIjtmPWYuc3Vic3RyaW5nKDAsZi5sZW5ndGgtMSk7Zis9Il0iO2I9MDtmb3IoYz1hLmFvU3RhdGVTYXZlLmxlbmd0aDtiPGM7YisrKXtkPWEuYW9TdGF0ZVNhdmVbYl0uZm4oYSxmKTtpZihkIT09IiIpZj1kfWYrPSJ9IjtXYShhLnNDb29raWVQcmVmaXgrYS5zSW5zdGFuY2UsZixhLmlDb29raWVEdXJhdGlvbixhLnNDb29raWVQcmVmaXgsYS5mbkNvb2tpZUNhbGxiYWNrKX19ZnVuY3Rpb24gWGEoYSxiKXtpZihhLm9GZWF0dXJlcy5iU3RhdGVTYXZlKXt2YXIgYyxkLGY7ZD13YShhLnNDb29raWVQcmVmaXgrYS5zSW5zdGFuY2UpO2lmKGQhPT1udWxsJiZkIT09IiIpe3RyeXtjPXR5cGVvZiBpLnBhcnNlSlNPTj09ImZ1bmN0aW9uIj9pLnBhcnNlSlNPTihkLnJlcGxhY2UoLycvZywKJyInKSk6ZXZhbCgiKCIrZCsiKSIpfWNhdGNoKGUpe3JldHVybn1kPTA7Zm9yKGY9YS5hb1N0YXRlTG9hZC5sZW5ndGg7ZDxmO2QrKylpZighYS5hb1N0YXRlTG9hZFtkXS5mbihhLGMpKXJldHVybjthLm9Mb2FkZWRTdGF0ZT1pLmV4dGVuZCh0cnVlLHt9LGMpO2EuX2lEaXNwbGF5U3RhcnQ9Yy5pU3RhcnQ7YS5pSW5pdERpc3BsYXlTdGFydD1jLmlTdGFydDthLl9pRGlzcGxheUVuZD1jLmlFbmQ7YS5faURpc3BsYXlMZW5ndGg9Yy5pTGVuZ3RoO2Eub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2g9ZGVjb2RlVVJJQ29tcG9uZW50KGMuc0ZpbHRlcik7YS5hYVNvcnRpbmc9Yy5hYVNvcnRpbmcuc2xpY2UoKTthLnNhdmVkX2FhU29ydGluZz1jLmFhU29ydGluZy5zbGljZSgpO2lmKHR5cGVvZiBjLnNGaWx0ZXJFc2MhPSJ1bmRlZmluZWQiKWEub1ByZXZpb3VzU2VhcmNoLmJSZWdleD0hYy5zRmlsdGVyRXNjO2lmKHR5cGVvZiBjLmFhU2VhcmNoQ29scyE9InVuZGVmaW5lZCIpZm9yKGQ9MDtkPApjLmFhU2VhcmNoQ29scy5sZW5ndGg7ZCsrKWEuYW9QcmVTZWFyY2hDb2xzW2RdPXtzU2VhcmNoOmRlY29kZVVSSUNvbXBvbmVudChjLmFhU2VhcmNoQ29sc1tkXVswXSksYlJlZ2V4OiFjLmFhU2VhcmNoQ29sc1tkXVsxXX07aWYodHlwZW9mIGMuYWJWaXNDb2xzIT0idW5kZWZpbmVkIil7Yi5zYXZlZF9hb0NvbHVtbnM9W107Zm9yKGQ9MDtkPGMuYWJWaXNDb2xzLmxlbmd0aDtkKyspe2Iuc2F2ZWRfYW9Db2x1bW5zW2RdPXt9O2Iuc2F2ZWRfYW9Db2x1bW5zW2RdLmJWaXNpYmxlPWMuYWJWaXNDb2xzW2RdfX19fX1mdW5jdGlvbiBXYShhLGIsYyxkLGYpe3ZhciBlPW5ldyBEYXRlO2Uuc2V0VGltZShlLmdldFRpbWUoKStjKjFFMyk7Yz16YS5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgiLyIpO2E9YSsiXyIrYy5wb3AoKS5yZXBsYWNlKC9bXC86XS9nLCIiKS50b0xvd2VyQ2FzZSgpO3ZhciBoO2lmKGYhPT1udWxsKXtoPXR5cGVvZiBpLnBhcnNlSlNPTj09ImZ1bmN0aW9uIj9pLnBhcnNlSlNPTihiKToKZXZhbCgiKCIrYisiKSIpO2I9ZihhLGgsZS50b0dNVFN0cmluZygpLGMuam9pbigiLyIpKyIvIil9ZWxzZSBiPWErIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKSsiOyBleHBpcmVzPSIrZS50b0dNVFN0cmluZygpKyI7IHBhdGg9IitjLmpvaW4oIi8iKSsiLyI7Zj0iIjtlPTk5OTk5OTk5OTk5OTk7aWYoKHdhKGEpIT09bnVsbD9wLmNvb2tpZS5sZW5ndGg6Yi5sZW5ndGgrcC5jb29raWUubGVuZ3RoKSsxMD40MDk2KXthPXAuY29va2llLnNwbGl0KCI7Iik7Zm9yKHZhciBqPTAsaz1hLmxlbmd0aDtqPGs7aisrKWlmKGFbal0uaW5kZXhPZihkKSE9LTEpe3ZhciBtPWFbal0uc3BsaXQoIj0iKTt0cnl7aD1ldmFsKCIoIitkZWNvZGVVUklDb21wb25lbnQobVsxXSkrIikiKX1jYXRjaCh1KXtjb250aW51ZX1pZih0eXBlb2YgaC5pQ3JlYXRlIT0idW5kZWZpbmVkIiYmaC5pQ3JlYXRlPGUpe2Y9bVswXTtlPWguaUNyZWF0ZX19aWYoZiE9PSIiKXAuY29va2llPWYrIj07IGV4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVQ7IHBhdGg9IisKYy5qb2luKCIvIikrIi8ifXAuY29va2llPWJ9ZnVuY3Rpb24gd2EoYSl7dmFyIGI9emEubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoIi8iKTthPWErIl8iK2JbYi5sZW5ndGgtMV0ucmVwbGFjZSgvW1wvOl0vZywiIikudG9Mb3dlckNhc2UoKSsiPSI7Yj1wLmNvb2tpZS5zcGxpdCgiOyIpO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXtmb3IodmFyIGQ9YltjXTtkLmNoYXJBdCgwKT09IiAiOylkPWQuc3Vic3RyaW5nKDEsZC5sZW5ndGgpO2lmKGQuaW5kZXhPZihhKT09PTApcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChkLnN1YnN0cmluZyhhLmxlbmd0aCxkLmxlbmd0aCkpfXJldHVybiBudWxsfWZ1bmN0aW9uIFkoYSxiKXtiPWkoYikuY2hpbGRyZW4oInRyIik7dmFyIGMsZCxmLGUsaCxqLGssbSx1PWZ1bmN0aW9uKEwsVCxCKXtmb3IoO3R5cGVvZiBMW1RdW0JdIT0idW5kZWZpbmVkIjspQisrO3JldHVybiBCfTthLnNwbGljZSgwLGEubGVuZ3RoKTtkPTA7Zm9yKGo9Yi5sZW5ndGg7ZDwKajtkKyspYS5wdXNoKFtdKTtkPTA7Zm9yKGo9Yi5sZW5ndGg7ZDxqO2QrKyl7Zj0wO2ZvcihrPWJbZF0uY2hpbGROb2Rlcy5sZW5ndGg7ZjxrO2YrKyl7Yz1iW2RdLmNoaWxkTm9kZXNbZl07aWYoYy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT0iVEQifHxjLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PSJUSCIpe3ZhciByPWMuZ2V0QXR0cmlidXRlKCJjb2xzcGFuIikqMSxIPWMuZ2V0QXR0cmlidXRlKCJyb3dzcGFuIikqMTtyPSFyfHxyPT09MHx8cj09PTE/MTpyO0g9IUh8fEg9PT0wfHxIPT09MT8xOkg7bT11KGEsZCwwKTtmb3IoaD0wO2g8cjtoKyspZm9yKGU9MDtlPEg7ZSsrKXthW2QrZV1bbStoXT17Y2VsbDpjLHVuaXF1ZTpyPT0xP3RydWU6ZmFsc2V9O2FbZCtlXS5uVHI9YltkXX19fX19ZnVuY3Rpb24gUyhhLGIsYyl7dmFyIGQ9W107aWYodHlwZW9mIGM9PSJ1bmRlZmluZWQiKXtjPWEuYW9IZWFkZXI7aWYodHlwZW9mIGIhPSJ1bmRlZmluZWQiKXtjPVtdO1koYyxiKX19Yj0wOwpmb3IodmFyIGY9Yy5sZW5ndGg7YjxmO2IrKylmb3IodmFyIGU9MCxoPWNbYl0ubGVuZ3RoO2U8aDtlKyspaWYoY1tiXVtlXS51bmlxdWUmJih0eXBlb2YgZFtlXT09InVuZGVmaW5lZCJ8fCFhLmJTb3J0Q2VsbHNUb3ApKWRbZV09Y1tiXVtlXS5jZWxsO3JldHVybiBkfWZ1bmN0aW9uIFlhKCl7dmFyIGE9cC5jcmVhdGVFbGVtZW50KCJwIiksYj1hLnN0eWxlO2Iud2lkdGg9IjEwMCUiO2IuaGVpZ2h0PSIyMDBweCI7Yi5wYWRkaW5nPSIwcHgiO3ZhciBjPXAuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yj1jLnN0eWxlO2IucG9zaXRpb249ImFic29sdXRlIjtiLnRvcD0iMHB4IjtiLmxlZnQ9IjBweCI7Yi52aXNpYmlsaXR5PSJoaWRkZW4iO2Iud2lkdGg9IjIwMHB4IjtiLmhlaWdodD0iMTUwcHgiO2IucGFkZGluZz0iMHB4IjtiLm92ZXJmbG93PSJoaWRkZW4iO2MuYXBwZW5kQ2hpbGQoYSk7cC5ib2R5LmFwcGVuZENoaWxkKGMpO2I9YS5vZmZzZXRXaWR0aDtjLnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiOwphPWEub2Zmc2V0V2lkdGg7aWYoYj09YSlhPWMuY2xpZW50V2lkdGg7cC5ib2R5LnJlbW92ZUNoaWxkKGMpO3JldHVybiBiLWF9ZnVuY3Rpb24gUChhLGIsYyl7Zm9yKHZhciBkPTAsZj1iLmxlbmd0aDtkPGY7ZCsrKWZvcih2YXIgZT0wLGg9YltkXS5jaGlsZE5vZGVzLmxlbmd0aDtlPGg7ZSsrKWlmKGJbZF0uY2hpbGROb2Rlc1tlXS5ub2RlVHlwZT09MSl0eXBlb2YgYyE9InVuZGVmaW5lZCI/YShiW2RdLmNoaWxkTm9kZXNbZV0sY1tkXS5jaGlsZE5vZGVzW2VdKTphKGJbZF0uY2hpbGROb2Rlc1tlXSl9ZnVuY3Rpb24gbyhhLGIsYyxkKXtpZih0eXBlb2YgZD09InVuZGVmaW5lZCIpZD1jO2lmKHR5cGVvZiBiW2NdIT0idW5kZWZpbmVkIilhW2RdPWJbY119ZnVuY3Rpb24gZmEoYSxiLGMpe2Zvcih2YXIgZD1bXSxmPTAsZT1hLmFvQ29sdW1ucy5sZW5ndGg7ZjxlO2YrKylkLnB1c2goRyhhLGIsZixjKSk7cmV0dXJuIGR9ZnVuY3Rpb24gRyhhLGIsYyxkKXt2YXIgZj1hLmFvQ29sdW1uc1tjXTsKaWYoKGM9Zi5mbkdldERhdGEoYS5hb0RhdGFbYl0uX2FEYXRhKSk9PT11bmRlZmluZWQpe2lmKGEuaURyYXdFcnJvciE9YS5pRHJhdyYmZi5zRGVmYXVsdENvbnRlbnQ9PT1udWxsKXtKKGEsMCwiUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICciK2YubURhdGFQcm9wKyInIGZyb20gdGhlIGRhdGEgc291cmNlIGZvciByb3cgIitiKTthLmlEcmF3RXJyb3I9YS5pRHJhd31yZXR1cm4gZi5zRGVmYXVsdENvbnRlbnR9aWYoYz09PW51bGwmJmYuc0RlZmF1bHRDb250ZW50IT09bnVsbCljPWYuc0RlZmF1bHRDb250ZW50O2Vsc2UgaWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpcmV0dXJuIGMoKTtpZihkPT0iZGlzcGxheSImJmM9PT1udWxsKXJldHVybiIiO3JldHVybiBjfWZ1bmN0aW9uIE8oYSxiLGMsZCl7YS5hb0NvbHVtbnNbY10uZm5TZXREYXRhKGEuYW9EYXRhW2JdLl9hRGF0YSxkKX1mdW5jdGlvbiBhYShhKXtpZihhPT09bnVsbClyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07CmVsc2UgaWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBhKGMpfTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIiYmYS5pbmRleE9mKCIuIikhPS0xKXt2YXIgYj1hLnNwbGl0KCIuIik7cmV0dXJuIGIubGVuZ3RoPT0yP2Z1bmN0aW9uKGMpe3JldHVybiBjW2JbMF1dW2JbMV1dfTpiLmxlbmd0aD09Mz9mdW5jdGlvbihjKXtyZXR1cm4gY1tiWzBdXVtiWzFdXVtiWzJdXX06ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZj1iLmxlbmd0aDtkPGY7ZCsrKWM9Y1tiW2RdXTtyZXR1cm4gY319ZWxzZSByZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGNbYV19fWZ1bmN0aW9uIEJhKGEpe2lmKGE9PT1udWxsKXJldHVybiBmdW5jdGlvbigpe307ZWxzZSBpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYShjLGQpfTtlbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIiYmYS5pbmRleE9mKCIuIikhPS0xKXt2YXIgYj1hLnNwbGl0KCIuIik7CnJldHVybiBiLmxlbmd0aD09Mj9mdW5jdGlvbihjLGQpe2NbYlswXV1bYlsxXV09ZH06Yi5sZW5ndGg9PTM/ZnVuY3Rpb24oYyxkKXtjW2JbMF1dW2JbMV1dW2JbMl1dPWR9OmZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBmPTAsZT1iLmxlbmd0aC0xO2Y8ZTtmKyspYz1jW2JbZl1dO2NbYltiLmxlbmd0aC0xXV09ZH19ZWxzZSByZXR1cm4gZnVuY3Rpb24oYyxkKXtjW2FdPWR9fXRoaXMub0FwaT17fTt0aGlzLmZuRHJhdz1mdW5jdGlvbihhKXt2YXIgYj1BKHRoaXNbbi5pQXBpSW5kZXhdKTtpZih0eXBlb2YgYSE9InVuZGVmaW5lZCImJmE9PT1mYWxzZSl7RShiKTtDKGIpfWVsc2UgZGEoYil9O3RoaXMuZm5GaWx0ZXI9ZnVuY3Rpb24oYSxiLGMsZCxmKXt2YXIgZT1BKHRoaXNbbi5pQXBpSW5kZXhdKTtpZihlLm9GZWF0dXJlcy5iRmlsdGVyKXtpZih0eXBlb2YgYz09InVuZGVmaW5lZCIpYz1mYWxzZTtpZih0eXBlb2YgZD09InVuZGVmaW5lZCIpZD10cnVlO2lmKHR5cGVvZiBmPT0idW5kZWZpbmVkIilmPQp0cnVlO2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkInx8Yj09PW51bGwpe04oZSx7c1NlYXJjaDphLGJSZWdleDpjLGJTbWFydDpkfSwxKTtpZihmJiZ0eXBlb2YgZS5hYW5GZWF0dXJlcy5mIT0idW5kZWZpbmVkIil7Yj1lLmFhbkZlYXR1cmVzLmY7Yz0wO2ZvcihkPWIubGVuZ3RoO2M8ZDtjKyspaSgiaW5wdXQiLGJbY10pLnZhbChhKX19ZWxzZXtlLmFvUHJlU2VhcmNoQ29sc1tiXS5zU2VhcmNoPWE7ZS5hb1ByZVNlYXJjaENvbHNbYl0uYlJlZ2V4PWM7ZS5hb1ByZVNlYXJjaENvbHNbYl0uYlNtYXJ0PWQ7TihlLGUub1ByZXZpb3VzU2VhcmNoLDEpfX19O3RoaXMuZm5TZXR0aW5ncz1mdW5jdGlvbigpe3JldHVybiBBKHRoaXNbbi5pQXBpSW5kZXhdKX07dGhpcy5mblZlcnNpb25DaGVjaz1uLmZuVmVyc2lvbkNoZWNrO3RoaXMuZm5Tb3J0PWZ1bmN0aW9uKGEpe3ZhciBiPUEodGhpc1tuLmlBcGlJbmRleF0pO2IuYWFTb3J0aW5nPWE7UihiKX07dGhpcy5mblNvcnRMaXN0ZW5lcj1mdW5jdGlvbihhLApiLGMpe2phKEEodGhpc1tuLmlBcGlJbmRleF0pLGEsYixjKX07dGhpcy5mbkFkZERhdGE9ZnVuY3Rpb24oYSxiKXtpZihhLmxlbmd0aD09PTApcmV0dXJuW107dmFyIGM9W10sZCxmPUEodGhpc1tuLmlBcGlJbmRleF0pO2lmKHR5cGVvZiBhWzBdPT0ib2JqZWN0Iilmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7ZD12KGYsYVtlXSk7aWYoZD09LTEpcmV0dXJuIGM7Yy5wdXNoKGQpfWVsc2V7ZD12KGYsYSk7aWYoZD09LTEpcmV0dXJuIGM7Yy5wdXNoKGQpfWYuYWlEaXNwbGF5PWYuYWlEaXNwbGF5TWFzdGVyLnNsaWNlKCk7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQifHxiKWRhKGYpO3JldHVybiBjfTt0aGlzLmZuRGVsZXRlUm93PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1BKHRoaXNbbi5pQXBpSW5kZXhdKTthPXR5cGVvZiBhPT0ib2JqZWN0Ij9XKGQsYSk6YTt2YXIgZj1kLmFvRGF0YS5zcGxpY2UoYSwxKSxlPWkuaW5BcnJheShhLGQuYWlEaXNwbGF5KTtkLmFzRGF0YVNlYXJjaC5zcGxpY2UoZSwKMSk7dWEoZC5haURpc3BsYXlNYXN0ZXIsYSk7dWEoZC5haURpc3BsYXksYSk7dHlwZW9mIGI9PSJmdW5jdGlvbiImJmIuY2FsbCh0aGlzLGQsZik7aWYoZC5faURpc3BsYXlTdGFydD49ZC5haURpc3BsYXkubGVuZ3RoKXtkLl9pRGlzcGxheVN0YXJ0LT1kLl9pRGlzcGxheUxlbmd0aDtpZihkLl9pRGlzcGxheVN0YXJ0PDApZC5faURpc3BsYXlTdGFydD0wfWlmKHR5cGVvZiBjPT0idW5kZWZpbmVkInx8Yyl7RShkKTtDKGQpfXJldHVybiBmfTt0aGlzLmZuQ2xlYXJUYWJsZT1mdW5jdGlvbihhKXt2YXIgYj1BKHRoaXNbbi5pQXBpSW5kZXhdKTtsYShiKTtpZih0eXBlb2YgYT09InVuZGVmaW5lZCJ8fGEpQyhiKX07dGhpcy5mbk9wZW49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUEodGhpc1tuLmlBcGlJbmRleF0pO3RoaXMuZm5DbG9zZShhKTt2YXIgZj1wLmNyZWF0ZUVsZW1lbnQoInRyIiksZT1wLmNyZWF0ZUVsZW1lbnQoInRkIik7Zi5hcHBlbmRDaGlsZChlKTtlLmNsYXNzTmFtZT1jOwplLmNvbFNwYW49WihkKTtpZih0eXBlb2YgYi5qcXVlcnkhPSJ1bmRlZmluZWQifHx0eXBlb2YgYj09Im9iamVjdCIpZS5hcHBlbmRDaGlsZChiKTtlbHNlIGUuaW5uZXJIVE1MPWI7Yj1pKCJ0ciIsZC5uVEJvZHkpO2kuaW5BcnJheShhLGIpIT0tMSYmaShmKS5pbnNlcnRBZnRlcihhKTtkLmFvT3BlblJvd3MucHVzaCh7blRyOmYsblBhcmVudDphfSk7cmV0dXJuIGZ9O3RoaXMuZm5DbG9zZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9QSh0aGlzW24uaUFwaUluZGV4XSksYz0wO2M8Yi5hb09wZW5Sb3dzLmxlbmd0aDtjKyspaWYoYi5hb09wZW5Sb3dzW2NdLm5QYXJlbnQ9PWEpeyhhPWIuYW9PcGVuUm93c1tjXS5uVHIucGFyZW50Tm9kZSkmJmEucmVtb3ZlQ2hpbGQoYi5hb09wZW5Sb3dzW2NdLm5Ucik7Yi5hb09wZW5Sb3dzLnNwbGljZShjLDEpO3JldHVybiAwfXJldHVybiAxfTt0aGlzLmZuR2V0RGF0YT1mdW5jdGlvbihhLGIpe3ZhciBjPUEodGhpc1tuLmlBcGlJbmRleF0pO2lmKHR5cGVvZiBhIT0KInVuZGVmaW5lZCIpe2E9dHlwZW9mIGE9PSJvYmplY3QiP1coYyxhKTphO2lmKHR5cGVvZiBiIT0idW5kZWZpbmVkIilyZXR1cm4gRyhjLGEsYiwiIik7cmV0dXJuIHR5cGVvZiBjLmFvRGF0YVthXSE9InVuZGVmaW5lZCI/Yy5hb0RhdGFbYV0uX2FEYXRhOm51bGx9cmV0dXJuIGNhKGMpfTt0aGlzLmZuR2V0Tm9kZXM9ZnVuY3Rpb24oYSl7dmFyIGI9QSh0aGlzW24uaUFwaUluZGV4XSk7aWYodHlwZW9mIGEhPSJ1bmRlZmluZWQiKXJldHVybiB0eXBlb2YgYi5hb0RhdGFbYV0hPSJ1bmRlZmluZWQiP2IuYW9EYXRhW2FdLm5UcjpudWxsO3JldHVybiBiYShiKX07dGhpcy5mbkdldFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPUEodGhpc1tuLmlBcGlJbmRleF0pLGM9YS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGM9PSJUUiIpcmV0dXJuIFcoYixhKTtlbHNlIGlmKGM9PSJURCJ8fGM9PSJUSCIpe2M9VyhiLGEucGFyZW50Tm9kZSk7Zm9yKHZhciBkPVEoYixjKSxmPTA7ZjxiLmFvQ29sdW1ucy5sZW5ndGg7ZisrKWlmKGRbZl09PQphKXJldHVybltjLHRhKGIsZiksZl19cmV0dXJuIG51bGx9O3RoaXMuZm5VcGRhdGU9ZnVuY3Rpb24oYSxiLGMsZCxmKXt2YXIgZT1BKHRoaXNbbi5pQXBpSW5kZXhdKTtiPXR5cGVvZiBiPT0ib2JqZWN0Ij9XKGUsYik6YjtpZihpLmlzQXJyYXkoYSkmJnR5cGVvZiBhPT0ib2JqZWN0Iil7ZS5hb0RhdGFbYl0uX2FEYXRhPWEuc2xpY2UoKTtmb3IoYz0wO2M8ZS5hb0NvbHVtbnMubGVuZ3RoO2MrKyl0aGlzLmZuVXBkYXRlKEcoZSxiLGMpLGIsYyxmYWxzZSxmYWxzZSl9ZWxzZSBpZihhIT09bnVsbCYmdHlwZW9mIGE9PSJvYmplY3QiKXtlLmFvRGF0YVtiXS5fYURhdGE9aS5leHRlbmQodHJ1ZSx7fSxhKTtmb3IoYz0wO2M8ZS5hb0NvbHVtbnMubGVuZ3RoO2MrKyl0aGlzLmZuVXBkYXRlKEcoZSxiLGMpLGIsYyxmYWxzZSxmYWxzZSl9ZWxzZXthPWE7TyhlLGIsYyxhKTtpZihlLmFvQ29sdW1uc1tjXS5mblJlbmRlciE9PW51bGwpe2E9ZS5hb0NvbHVtbnNbY10uZm5SZW5kZXIoe2lEYXRhUm93OmIsCmlEYXRhQ29sdW1uOmMsYURhdGE6ZS5hb0RhdGFbYl0uX2FEYXRhLG9TZXR0aW5nczplfSk7ZS5hb0NvbHVtbnNbY10uYlVzZVJlbmRlcmVkJiZPKGUsYixjLGEpfWlmKGUuYW9EYXRhW2JdLm5UciE9PW51bGwpUShlLGIpW2NdLmlubmVySFRNTD1hfWM9aS5pbkFycmF5KGIsZS5haURpc3BsYXkpO2UuYXNEYXRhU2VhcmNoW2NdPXJhKGUsZmEoZSxiLCJmaWx0ZXIiKSk7aWYodHlwZW9mIGY9PSJ1bmRlZmluZWQifHxmKWVhKGUpO2lmKHR5cGVvZiBkPT0idW5kZWZpbmVkInx8ZClkYShlKTtyZXR1cm4gMH07dGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9QSh0aGlzW24uaUFwaUluZGV4XSksZixlO2U9ZC5hb0NvbHVtbnMubGVuZ3RoO3ZhciBoLGo7aWYoZC5hb0NvbHVtbnNbYV0uYlZpc2libGUhPWIpe2lmKGIpe2ZvcihmPWo9MDtmPGE7ZisrKWQuYW9Db2x1bW5zW2ZdLmJWaXNpYmxlJiZqKys7aj1qPj1aKGQpO2lmKCFqKWZvcihmPWE7ZjxlO2YrKylpZihkLmFvQ29sdW1uc1tmXS5iVmlzaWJsZSl7aD0KZjticmVha31mPTA7Zm9yKGU9ZC5hb0RhdGEubGVuZ3RoO2Y8ZTtmKyspaWYoZC5hb0RhdGFbZl0ublRyIT09bnVsbClqP2QuYW9EYXRhW2ZdLm5Uci5hcHBlbmRDaGlsZChkLmFvRGF0YVtmXS5fYW5IaWRkZW5bYV0pOmQuYW9EYXRhW2ZdLm5Uci5pbnNlcnRCZWZvcmUoZC5hb0RhdGFbZl0uX2FuSGlkZGVuW2FdLFEoZCxmKVtoXSl9ZWxzZXtmPTA7Zm9yKGU9ZC5hb0RhdGEubGVuZ3RoO2Y8ZTtmKyspaWYoZC5hb0RhdGFbZl0ublRyIT09bnVsbCl7aD1RKGQsZilbYV07ZC5hb0RhdGFbZl0uX2FuSGlkZGVuW2FdPWg7aC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpfX1kLmFvQ29sdW1uc1thXS5iVmlzaWJsZT1iO00oZCxkLmFvSGVhZGVyKTtkLm5URm9vdCYmTShkLGQuYW9Gb290ZXIpO2Y9MDtmb3IoZT1kLmFvT3BlblJvd3MubGVuZ3RoO2Y8ZTtmKyspZC5hb09wZW5Sb3dzW2ZdLm5Uci5jb2xTcGFuPVooZCk7aWYodHlwZW9mIGM9PSJ1bmRlZmluZWQifHxjKXtlYShkKTtDKGQpfXZhKGQpfX07CnRoaXMuZm5QYWdlQ2hhbmdlPWZ1bmN0aW9uKGEsYil7dmFyIGM9QSh0aGlzW24uaUFwaUluZGV4XSk7bWEoYyxhKTtFKGMpO2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkInx8YilDKGMpfTt0aGlzLmZuRGVzdHJveT1mdW5jdGlvbigpe3ZhciBhPUEodGhpc1tuLmlBcGlJbmRleF0pLGI9YS5uVGFibGVXcmFwcGVyLnBhcmVudE5vZGUsYz1hLm5UQm9keSxkLGY7YS5iRGVzdHJveWluZz10cnVlO2Q9MDtmb3IoZj1hLmFvRGVzdHJveUNhbGxiYWNrLmxlbmd0aDtkPGY7ZCsrKWEuYW9EZXN0cm95Q2FsbGJhY2tbZF0uZm4oKTtkPTA7Zm9yKGY9YS5hb0NvbHVtbnMubGVuZ3RoO2Q8ZjtkKyspYS5hb0NvbHVtbnNbZF0uYlZpc2libGU9PT1mYWxzZSYmdGhpcy5mblNldENvbHVtblZpcyhkLHRydWUpO2koYS5uVGFibGVXcmFwcGVyKS5maW5kKCIqIikuYW5kU2VsZigpLnVuYmluZCgiLkRUIik7aSgidGJvZHk+dHI+dGQuIithLm9DbGFzc2VzLnNSb3dFbXB0eSxhLm5UYWJsZSkucGFyZW50KCkucmVtb3ZlKCk7CmlmKGEublRhYmxlIT1hLm5USGVhZC5wYXJlbnROb2RlKXtpKGEublRhYmxlKS5jaGlsZHJlbigidGhlYWQiKS5yZW1vdmUoKTthLm5UYWJsZS5hcHBlbmRDaGlsZChhLm5USGVhZCl9aWYoYS5uVEZvb3QmJmEublRhYmxlIT1hLm5URm9vdC5wYXJlbnROb2RlKXtpKGEublRhYmxlKS5jaGlsZHJlbigidGZvb3QiKS5yZW1vdmUoKTthLm5UYWJsZS5hcHBlbmRDaGlsZChhLm5URm9vdCl9YS5uVGFibGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhLm5UYWJsZSk7aShhLm5UYWJsZVdyYXBwZXIpLnJlbW92ZSgpO2EuYWFTb3J0aW5nPVtdO2EuYWFTb3J0aW5nRml4ZWQ9W107VihhKTtpKGJhKGEpKS5yZW1vdmVDbGFzcyhhLmFzU3RyaXBlQ2xhc3Nlcy5qb2luKCIgIikpO2lmKGEuYkpVSSl7aSgidGgiLGEublRIZWFkKS5yZW1vdmVDbGFzcyhbbi5vU3RkQ2xhc3Nlcy5zU29ydGFibGUsbi5vSlVJQ2xhc3Nlcy5zU29ydGFibGVBc2Msbi5vSlVJQ2xhc3Nlcy5zU29ydGFibGVEZXNjLG4ub0pVSUNsYXNzZXMuc1NvcnRhYmxlTm9uZV0uam9pbigiICIpKTsKaSgidGggc3Bhbi4iK24ub0pVSUNsYXNzZXMuc1NvcnRJY29uLGEublRIZWFkKS5yZW1vdmUoKTtpKCJ0aCIsYS5uVEhlYWQpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1pKCJkaXYuIituLm9KVUlDbGFzc2VzLnNTb3J0SlVJV3JhcHBlcix0aGlzKSxoPWUuY29udGVudHMoKTtpKHRoaXMpLmFwcGVuZChoKTtlLnJlbW92ZSgpfSl9ZWxzZSBpKCJ0aCIsYS5uVEhlYWQpLnJlbW92ZUNsYXNzKFtuLm9TdGRDbGFzc2VzLnNTb3J0YWJsZSxuLm9TdGRDbGFzc2VzLnNTb3J0YWJsZUFzYyxuLm9TdGRDbGFzc2VzLnNTb3J0YWJsZURlc2Msbi5vU3RkQ2xhc3Nlcy5zU29ydGFibGVOb25lXS5qb2luKCIgIikpO2EublRhYmxlUmVpbnNlcnRCZWZvcmU/Yi5pbnNlcnRCZWZvcmUoYS5uVGFibGUsYS5uVGFibGVSZWluc2VydEJlZm9yZSk6Yi5hcHBlbmRDaGlsZChhLm5UYWJsZSk7ZD0wO2ZvcihmPWEuYW9EYXRhLmxlbmd0aDtkPGY7ZCsrKWEuYW9EYXRhW2RdLm5UciE9PW51bGwmJmMuYXBwZW5kQ2hpbGQoYS5hb0RhdGFbZF0ublRyKTsKaWYoYS5vRmVhdHVyZXMuYkF1dG9XaWR0aD09PXRydWUpYS5uVGFibGUuc3R5bGUud2lkdGg9cShhLnNEZXN0cm95V2lkdGgpO2koYykuY2hpbGRyZW4oInRyOmV2ZW4iKS5hZGRDbGFzcyhhLmFzRGVzdHJveVN0cmlwZXNbMF0pO2koYykuY2hpbGRyZW4oInRyOm9kZCIpLmFkZENsYXNzKGEuYXNEZXN0cm95U3RyaXBlc1sxXSk7ZD0wO2ZvcihmPUQubGVuZ3RoO2Q8ZjtkKyspRFtkXT09YSYmRC5zcGxpY2UoZCwxKTthPW51bGx9O3RoaXMuZm5BZGp1c3RDb2x1bW5TaXppbmc9ZnVuY3Rpb24oYSl7dmFyIGI9QSh0aGlzW24uaUFwaUluZGV4XSk7ZWEoYik7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQifHxhKXRoaXMuZm5EcmF3KGZhbHNlKTtlbHNlIGlmKGIub1Njcm9sbC5zWCE9PSIifHxiLm9TY3JvbGwuc1khPT0iIil0aGlzLm9BcGkuX2ZuU2Nyb2xsRHJhdyhiKX07Zm9yKHZhciB4YSBpbiBuLm9BcGkpaWYoeGEpdGhpc1t4YV09cyh4YSk7dGhpcy5vQXBpLl9mbkV4dGVybkFwaUZ1bmM9CnM7dGhpcy5vQXBpLl9mbkluaXRpYWxpc2U9dDt0aGlzLm9BcGkuX2ZuSW5pdENvbXBsZXRlPXc7dGhpcy5vQXBpLl9mbkxhbmd1YWdlUHJvY2Vzcz15O3RoaXMub0FwaS5fZm5BZGRDb2x1bW49Rjt0aGlzLm9BcGkuX2ZuQ29sdW1uT3B0aW9ucz14O3RoaXMub0FwaS5fZm5BZGREYXRhPXY7dGhpcy5vQXBpLl9mbkNyZWF0ZVRyPXo7dGhpcy5vQXBpLl9mbkdhdGhlckRhdGE9JDt0aGlzLm9BcGkuX2ZuQnVpbGRIZWFkPVg7dGhpcy5vQXBpLl9mbkRyYXdIZWFkPU07dGhpcy5vQXBpLl9mbkRyYXc9Qzt0aGlzLm9BcGkuX2ZuUmVEcmF3PWRhO3RoaXMub0FwaS5fZm5BamF4VXBkYXRlPUNhO3RoaXMub0FwaS5fZm5BamF4UGFyYW1ldGVycz1EYTt0aGlzLm9BcGkuX2ZuQWpheFVwZGF0ZURyYXc9RWE7dGhpcy5vQXBpLl9mblNlcnZlclBhcmFtcz1oYTt0aGlzLm9BcGkuX2ZuQWRkT3B0aW9uc0h0bWw9QWE7dGhpcy5vQXBpLl9mbkZlYXR1cmVIdG1sVGFibGU9SmE7dGhpcy5vQXBpLl9mblNjcm9sbERyYXc9Ck1hO3RoaXMub0FwaS5fZm5BZGp1c3RDb2x1bW5TaXppbmc9ZWE7dGhpcy5vQXBpLl9mbkZlYXR1cmVIdG1sRmlsdGVyPUhhO3RoaXMub0FwaS5fZm5GaWx0ZXJDb21wbGV0ZT1OO3RoaXMub0FwaS5fZm5GaWx0ZXJDdXN0b209UWE7dGhpcy5vQXBpLl9mbkZpbHRlckNvbHVtbj1QYTt0aGlzLm9BcGkuX2ZuRmlsdGVyPU9hO3RoaXMub0FwaS5fZm5CdWlsZFNlYXJjaEFycmF5PW9hO3RoaXMub0FwaS5fZm5CdWlsZFNlYXJjaFJvdz1yYTt0aGlzLm9BcGkuX2ZuRmlsdGVyQ3JlYXRlU2VhcmNoPXBhO3RoaXMub0FwaS5fZm5EYXRhVG9TZWFyY2g9cWE7dGhpcy5vQXBpLl9mblNvcnQ9Ujt0aGlzLm9BcGkuX2ZuU29ydEF0dGFjaExpc3RlbmVyPWphO3RoaXMub0FwaS5fZm5Tb3J0aW5nQ2xhc3Nlcz1WO3RoaXMub0FwaS5fZm5GZWF0dXJlSHRtbFBhZ2luYXRlPUxhO3RoaXMub0FwaS5fZm5QYWdlQ2hhbmdlPW1hO3RoaXMub0FwaS5fZm5GZWF0dXJlSHRtbEluZm89S2E7dGhpcy5vQXBpLl9mblVwZGF0ZUluZm89ClJhO3RoaXMub0FwaS5fZm5GZWF0dXJlSHRtbExlbmd0aD1HYTt0aGlzLm9BcGkuX2ZuRmVhdHVyZUh0bWxQcm9jZXNzaW5nPUlhO3RoaXMub0FwaS5fZm5Qcm9jZXNzaW5nRGlzcGxheT1LO3RoaXMub0FwaS5fZm5WaXNpYmxlVG9Db2x1bW5JbmRleD1OYTt0aGlzLm9BcGkuX2ZuQ29sdW1uSW5kZXhUb1Zpc2libGU9dGE7dGhpcy5vQXBpLl9mbk5vZGVUb0RhdGFJbmRleD1XO3RoaXMub0FwaS5fZm5WaXNibGVDb2x1bW5zPVo7dGhpcy5vQXBpLl9mbkNhbGN1bGF0ZUVuZD1FO3RoaXMub0FwaS5fZm5Db252ZXJ0VG9XaWR0aD1TYTt0aGlzLm9BcGkuX2ZuQ2FsY3VsYXRlQ29sdW1uV2lkdGhzPWdhO3RoaXMub0FwaS5fZm5TY3JvbGxpbmdXaWR0aEFkanVzdD1VYTt0aGlzLm9BcGkuX2ZuR2V0V2lkZXN0Tm9kZT1UYTt0aGlzLm9BcGkuX2ZuR2V0TWF4TGVuU3RyaW5nPVZhO3RoaXMub0FwaS5fZm5TdHJpbmdUb0Nzcz1xO3RoaXMub0FwaS5fZm5BcnJheUNtcD1aYTt0aGlzLm9BcGkuX2ZuRGV0ZWN0VHlwZT0KaWE7dGhpcy5vQXBpLl9mblNldHRpbmdzRnJvbU5vZGU9QTt0aGlzLm9BcGkuX2ZuR2V0RGF0YU1hc3Rlcj1jYTt0aGlzLm9BcGkuX2ZuR2V0VHJOb2Rlcz1iYTt0aGlzLm9BcGkuX2ZuR2V0VGROb2Rlcz1RO3RoaXMub0FwaS5fZm5Fc2NhcGVSZWdleD1zYTt0aGlzLm9BcGkuX2ZuRGVsZXRlSW5kZXg9dWE7dGhpcy5vQXBpLl9mblJlT3JkZXJJbmRleD1GYTt0aGlzLm9BcGkuX2ZuQ29sdW1uT3JkZXJpbmc9a2E7dGhpcy5vQXBpLl9mbkxvZz1KO3RoaXMub0FwaS5fZm5DbGVhclRhYmxlPWxhO3RoaXMub0FwaS5fZm5TYXZlU3RhdGU9dmE7dGhpcy5vQXBpLl9mbkxvYWRTdGF0ZT1YYTt0aGlzLm9BcGkuX2ZuQ3JlYXRlQ29va2llPVdhO3RoaXMub0FwaS5fZm5SZWFkQ29va2llPXdhO3RoaXMub0FwaS5fZm5EZXRlY3RIZWFkZXI9WTt0aGlzLm9BcGkuX2ZuR2V0VW5pcXVlVGhzPVM7dGhpcy5vQXBpLl9mblNjcm9sbEJhcldpZHRoPVlhO3RoaXMub0FwaS5fZm5BcHBseVRvQ2hpbGRyZW49ClA7dGhpcy5vQXBpLl9mbk1hcD1vO3RoaXMub0FwaS5fZm5HZXRSb3dEYXRhPWZhO3RoaXMub0FwaS5fZm5HZXRDZWxsRGF0YT1HO3RoaXMub0FwaS5fZm5TZXRDZWxsRGF0YT1PO3RoaXMub0FwaS5fZm5HZXRPYmplY3REYXRhRm49YWE7dGhpcy5vQXBpLl9mblNldE9iamVjdERhdGFGbj1CYTt2YXIgeWE9dGhpcztyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9MCxiLGMsZCxmO2E9MDtmb3IoYj1ELmxlbmd0aDthPGI7YSsrKXtpZihEW2FdLm5UYWJsZT09dGhpcylpZih0eXBlb2YgZz09InVuZGVmaW5lZCJ8fHR5cGVvZiBnLmJSZXRyaWV2ZSE9InVuZGVmaW5lZCImJmcuYlJldHJpZXZlPT09dHJ1ZSlyZXR1cm4gRFthXS5vSW5zdGFuY2U7ZWxzZSBpZih0eXBlb2YgZy5iRGVzdHJveSE9InVuZGVmaW5lZCImJmcuYkRlc3Ryb3k9PT10cnVlKXtEW2FdLm9JbnN0YW5jZS5mbkRlc3Ryb3koKTticmVha31lbHNle0ooRFthXSwwLCJDYW5ub3QgcmVpbml0aWFsaXNlIERhdGFUYWJsZS5cblxuVG8gcmV0cmlldmUgdGhlIERhdGFUYWJsZXMgb2JqZWN0IGZvciB0aGlzIHRhYmxlLCBwbGVhc2UgcGFzcyBlaXRoZXIgbm8gYXJndW1lbnRzIHRvIHRoZSBkYXRhVGFibGUoKSBmdW5jdGlvbiwgb3Igc2V0IGJSZXRyaWV2ZSB0byB0cnVlLiBBbHRlcm5hdGl2ZWx5LCB0byBkZXN0b3J5IHRoZSBvbGQgdGFibGUgYW5kIGNyZWF0ZSBhIG5ldyBvbmUsIHNldCBiRGVzdHJveSB0byB0cnVlIChub3RlIHRoYXQgYSBsb3Qgb2YgY2hhbmdlcyB0byB0aGUgY29uZmlndXJhdGlvbiBjYW4gYmUgbWFkZSB0aHJvdWdoIHRoZSBBUEkgd2hpY2ggaXMgdXN1YWxseSBtdWNoIGZhc3RlcikuIik7CnJldHVybn1pZihEW2FdLnNUYWJsZUlkIT09IiImJkRbYV0uc1RhYmxlSWQ9PXRoaXMuZ2V0QXR0cmlidXRlKCJpZCIpKXtELnNwbGljZShhLDEpO2JyZWFrfX12YXIgZT1uZXcgbDtELnB1c2goZSk7dmFyIGg9ZmFsc2Usaj1mYWxzZTthPXRoaXMuZ2V0QXR0cmlidXRlKCJpZCIpO2lmKGEhPT1udWxsKXtlLnNUYWJsZUlkPWE7ZS5zSW5zdGFuY2U9YX1lbHNlIGUuc0luc3RhbmNlPW4uX29FeHRlcm5Db25maWcuaU5leHRVbmlxdWUrKztpZih0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPSJ0YWJsZSIpSihlLDAsIkF0dGVtcHRlZCB0byBpbml0aWFsaXNlIERhdGFUYWJsZXMgb24gYSBub2RlIHdoaWNoIGlzIG5vdCBhIHRhYmxlOiAiK3RoaXMubm9kZU5hbWUpO2Vsc2V7ZS5uVGFibGU9dGhpcztlLm9JbnN0YW5jZT15YS5sZW5ndGg9PTE/eWE6aSh0aGlzKS5kYXRhVGFibGUoKTtlLm9BcGk9eWEub0FwaTtlLnNEZXN0cm95V2lkdGg9aSh0aGlzKS53aWR0aCgpO2lmKHR5cGVvZiBnIT0KInVuZGVmaW5lZCImJmchPT1udWxsKXtlLm9Jbml0PWc7byhlLm9GZWF0dXJlcyxnLCJiUGFnaW5hdGUiKTtvKGUub0ZlYXR1cmVzLGcsImJMZW5ndGhDaGFuZ2UiKTtvKGUub0ZlYXR1cmVzLGcsImJGaWx0ZXIiKTtvKGUub0ZlYXR1cmVzLGcsImJTb3J0Iik7byhlLm9GZWF0dXJlcyxnLCJiSW5mbyIpO28oZS5vRmVhdHVyZXMsZywiYlByb2Nlc3NpbmciKTtvKGUub0ZlYXR1cmVzLGcsImJBdXRvV2lkdGgiKTtvKGUub0ZlYXR1cmVzLGcsImJTb3J0Q2xhc3NlcyIpO28oZS5vRmVhdHVyZXMsZywiYlNlcnZlclNpZGUiKTtvKGUub0ZlYXR1cmVzLGcsImJEZWZlclJlbmRlciIpO28oZS5vU2Nyb2xsLGcsInNTY3JvbGxYIiwic1giKTtvKGUub1Njcm9sbCxnLCJzU2Nyb2xsWElubmVyIiwic1hJbm5lciIpO28oZS5vU2Nyb2xsLGcsInNTY3JvbGxZIiwic1kiKTtvKGUub1Njcm9sbCxnLCJiU2Nyb2xsQ29sbGFwc2UiLCJiQ29sbGFwc2UiKTtvKGUub1Njcm9sbCxnLCJiU2Nyb2xsSW5maW5pdGUiLAoiYkluZmluaXRlIik7byhlLm9TY3JvbGwsZywiaVNjcm9sbExvYWRHYXAiLCJpTG9hZEdhcCIpO28oZS5vU2Nyb2xsLGcsImJTY3JvbGxBdXRvQ3NzIiwiYkF1dG9Dc3MiKTtvKGUsZywiYXNTdHJpcENsYXNzZXMiLCJhc1N0cmlwZUNsYXNzZXMiKTtvKGUsZywiYXNTdHJpcGVDbGFzc2VzIik7byhlLGcsImZuUHJlRHJhd0NhbGxiYWNrIik7byhlLGcsImZuUm93Q2FsbGJhY2siKTtvKGUsZywiZm5IZWFkZXJDYWxsYmFjayIpO28oZSxnLCJmbkZvb3RlckNhbGxiYWNrIik7byhlLGcsImZuQ29va2llQ2FsbGJhY2siKTtvKGUsZywiZm5Jbml0Q29tcGxldGUiKTtvKGUsZywiZm5TZXJ2ZXJEYXRhIik7byhlLGcsImZuRm9ybWF0TnVtYmVyIik7byhlLGcsImFhU29ydGluZyIpO28oZSxnLCJhYVNvcnRpbmdGaXhlZCIpO28oZSxnLCJhTGVuZ3RoTWVudSIpO28oZSxnLCJzUGFnaW5hdGlvblR5cGUiKTtvKGUsZywic0FqYXhTb3VyY2UiKTtvKGUsZywic0FqYXhEYXRhUHJvcCIpO28oZSwKZywiaUNvb2tpZUR1cmF0aW9uIik7byhlLGcsInNDb29raWVQcmVmaXgiKTtvKGUsZywic0RvbSIpO28oZSxnLCJiU29ydENlbGxzVG9wIik7byhlLGcsIm9TZWFyY2giLCJvUHJldmlvdXNTZWFyY2giKTtvKGUsZywiYW9TZWFyY2hDb2xzIiwiYW9QcmVTZWFyY2hDb2xzIik7byhlLGcsImlEaXNwbGF5TGVuZ3RoIiwiX2lEaXNwbGF5TGVuZ3RoIik7byhlLGcsImJKUXVlcnlVSSIsImJKVUkiKTtvKGUub0xhbmd1YWdlLGcsImZuSW5mb0NhbGxiYWNrIik7dHlwZW9mIGcuZm5EcmF3Q2FsbGJhY2s9PSJmdW5jdGlvbiImJmUuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46Zy5mbkRyYXdDYWxsYmFjayxzTmFtZToidXNlciJ9KTt0eXBlb2YgZy5mblNlcnZlclBhcmFtcz09ImZ1bmN0aW9uIiYmZS5hb1NlcnZlclBhcmFtcy5wdXNoKHtmbjpnLmZuU2VydmVyUGFyYW1zLHNOYW1lOiJ1c2VyIn0pO3R5cGVvZiBnLmZuU3RhdGVTYXZlQ2FsbGJhY2s9PSJmdW5jdGlvbiImJmUuYW9TdGF0ZVNhdmUucHVzaCh7Zm46Zy5mblN0YXRlU2F2ZUNhbGxiYWNrLApzTmFtZToidXNlciJ9KTt0eXBlb2YgZy5mblN0YXRlTG9hZENhbGxiYWNrPT0iZnVuY3Rpb24iJiZlLmFvU3RhdGVMb2FkLnB1c2goe2ZuOmcuZm5TdGF0ZUxvYWRDYWxsYmFjayxzTmFtZToidXNlciJ9KTtpZihlLm9GZWF0dXJlcy5iU2VydmVyU2lkZSYmZS5vRmVhdHVyZXMuYlNvcnQmJmUub0ZlYXR1cmVzLmJTb3J0Q2xhc3NlcyllLmFvRHJhd0NhbGxiYWNrLnB1c2goe2ZuOlYsc05hbWU6InNlcnZlcl9zaWRlX3NvcnRfY2xhc3NlcyJ9KTtlbHNlIGUub0ZlYXR1cmVzLmJEZWZlclJlbmRlciYmZS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpWLHNOYW1lOiJkZWZlcl9zb3J0X2NsYXNzZXMifSk7aWYodHlwZW9mIGcuYkpRdWVyeVVJIT0idW5kZWZpbmVkIiYmZy5iSlF1ZXJ5VUkpe2Uub0NsYXNzZXM9bi5vSlVJQ2xhc3NlcztpZih0eXBlb2YgZy5zRG9tPT0idW5kZWZpbmVkIillLnNEb209JzwiSCJsZnI+dDwiRiJpcD4nfWlmKGUub1Njcm9sbC5zWCE9PSIifHxlLm9TY3JvbGwuc1khPT0KIiIpZS5vU2Nyb2xsLmlCYXJXaWR0aD1ZYSgpO2lmKHR5cGVvZiBnLmlEaXNwbGF5U3RhcnQhPSJ1bmRlZmluZWQiJiZ0eXBlb2YgZS5pSW5pdERpc3BsYXlTdGFydD09InVuZGVmaW5lZCIpe2UuaUluaXREaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0O2UuX2lEaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0fWlmKHR5cGVvZiBnLmJTdGF0ZVNhdmUhPSJ1bmRlZmluZWQiKXtlLm9GZWF0dXJlcy5iU3RhdGVTYXZlPWcuYlN0YXRlU2F2ZTtYYShlLGcpO2UuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46dmEsc05hbWU6InN0YXRlX3NhdmUifSl9aWYodHlwZW9mIGcuaURlZmVyTG9hZGluZyE9InVuZGVmaW5lZCIpe2UuYkRlZmVyTG9hZGluZz10cnVlO2UuX2lSZWNvcmRzVG90YWw9Zy5pRGVmZXJMb2FkaW5nO2UuX2lSZWNvcmRzRGlzcGxheT1nLmlEZWZlckxvYWRpbmd9aWYodHlwZW9mIGcuYWFEYXRhIT0idW5kZWZpbmVkIilqPXRydWU7aWYodHlwZW9mIGchPSJ1bmRlZmluZWQiJiYKdHlwZW9mIGcuYW9EYXRhIT0idW5kZWZpbmVkIilnLmFvQ29sdW1ucz1nLmFvRGF0YTtpZih0eXBlb2YgZy5vTGFuZ3VhZ2UhPSJ1bmRlZmluZWQiKWlmKHR5cGVvZiBnLm9MYW5ndWFnZS5zVXJsIT0idW5kZWZpbmVkIiYmZy5vTGFuZ3VhZ2Uuc1VybCE9PSIiKXtlLm9MYW5ndWFnZS5zVXJsPWcub0xhbmd1YWdlLnNVcmw7aS5nZXRKU09OKGUub0xhbmd1YWdlLnNVcmwsbnVsbCxmdW5jdGlvbih1KXt5KGUsdSx0cnVlKX0pO2g9dHJ1ZX1lbHNlIHkoZSxnLm9MYW5ndWFnZSxmYWxzZSl9ZWxzZSBnPXt9O2lmKHR5cGVvZiBnLmFzU3RyaXBDbGFzc2VzPT0idW5kZWZpbmVkIiYmdHlwZW9mIGcuYXNTdHJpcGVDbGFzc2VzPT0idW5kZWZpbmVkIil7ZS5hc1N0cmlwZUNsYXNzZXMucHVzaChlLm9DbGFzc2VzLnNTdHJpcGVPZGQpO2UuYXNTdHJpcGVDbGFzc2VzLnB1c2goZS5vQ2xhc3Nlcy5zU3RyaXBlRXZlbil9Yz1mYWxzZTtkPWkodGhpcykuY2hpbGRyZW4oInRib2R5IikuY2hpbGRyZW4oInRyIik7CmE9MDtmb3IoYj1lLmFzU3RyaXBlQ2xhc3Nlcy5sZW5ndGg7YTxiO2ErKylpZihkLmZpbHRlcigiOmx0KDIpIikuaGFzQ2xhc3MoZS5hc1N0cmlwZUNsYXNzZXNbYV0pKXtjPXRydWU7YnJlYWt9aWYoYyl7ZS5hc0Rlc3Ryb3lTdHJpcGVzPVsiIiwiIl07aWYoaShkWzBdKS5oYXNDbGFzcyhlLm9DbGFzc2VzLnNTdHJpcGVPZGQpKWUuYXNEZXN0cm95U3RyaXBlc1swXSs9ZS5vQ2xhc3Nlcy5zU3RyaXBlT2RkKyIgIjtpZihpKGRbMF0pLmhhc0NsYXNzKGUub0NsYXNzZXMuc1N0cmlwZUV2ZW4pKWUuYXNEZXN0cm95U3RyaXBlc1swXSs9ZS5vQ2xhc3Nlcy5zU3RyaXBlRXZlbjtpZihpKGRbMV0pLmhhc0NsYXNzKGUub0NsYXNzZXMuc1N0cmlwZU9kZCkpZS5hc0Rlc3Ryb3lTdHJpcGVzWzFdKz1lLm9DbGFzc2VzLnNTdHJpcGVPZGQrIiAiO2lmKGkoZFsxXSkuaGFzQ2xhc3MoZS5vQ2xhc3Nlcy5zU3RyaXBlRXZlbikpZS5hc0Rlc3Ryb3lTdHJpcGVzWzFdKz1lLm9DbGFzc2VzLnNTdHJpcGVFdmVuOwpkLnJlbW92ZUNsYXNzKGUuYXNTdHJpcGVDbGFzc2VzLmpvaW4oIiAiKSl9Yz1bXTt2YXIgazthPXRoaXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRoZWFkIik7aWYoYS5sZW5ndGghPT0wKXtZKGUuYW9IZWFkZXIsYVswXSk7Yz1TKGUpfWlmKHR5cGVvZiBnLmFvQ29sdW1ucz09InVuZGVmaW5lZCIpe2s9W107YT0wO2ZvcihiPWMubGVuZ3RoO2E8YjthKyspay5wdXNoKG51bGwpfWVsc2Ugaz1nLmFvQ29sdW1uczthPTA7Zm9yKGI9ay5sZW5ndGg7YTxiO2ErKyl7aWYodHlwZW9mIGcuc2F2ZWRfYW9Db2x1bW5zIT0idW5kZWZpbmVkIiYmZy5zYXZlZF9hb0NvbHVtbnMubGVuZ3RoPT1iKXtpZihrW2FdPT09bnVsbClrW2FdPXt9O2tbYV0uYlZpc2libGU9Zy5zYXZlZF9hb0NvbHVtbnNbYV0uYlZpc2libGV9RihlLGM/Y1thXTpudWxsKX1pZih0eXBlb2YgZy5hb0NvbHVtbkRlZnMhPSJ1bmRlZmluZWQiKWZvcihhPWcuYW9Db2x1bW5EZWZzLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbT0KZy5hb0NvbHVtbkRlZnNbYV0uYVRhcmdldHM7aS5pc0FycmF5KG0pfHxKKGUsMSwiYVRhcmdldHMgbXVzdCBiZSBhbiBhcnJheSBvZiB0YXJnZXRzLCBub3QgYSAiK3R5cGVvZiBtKTtjPTA7Zm9yKGQ9bS5sZW5ndGg7YzxkO2MrKylpZih0eXBlb2YgbVtjXT09Im51bWJlciImJm1bY10+PTApe2Zvcig7ZS5hb0NvbHVtbnMubGVuZ3RoPD1tW2NdOylGKGUpO3goZSxtW2NdLGcuYW9Db2x1bW5EZWZzW2FdKX1lbHNlIGlmKHR5cGVvZiBtW2NdPT0ibnVtYmVyIiYmbVtjXTwwKXgoZSxlLmFvQ29sdW1ucy5sZW5ndGgrbVtjXSxnLmFvQ29sdW1uRGVmc1thXSk7ZWxzZSBpZih0eXBlb2YgbVtjXT09InN0cmluZyIpe2I9MDtmb3IoZj1lLmFvQ29sdW1ucy5sZW5ndGg7YjxmO2IrKylpZihtW2NdPT0iX2FsbCJ8fGkoZS5hb0NvbHVtbnNbYl0ublRoKS5oYXNDbGFzcyhtW2NdKSl4KGUsYixnLmFvQ29sdW1uRGVmc1thXSl9fWlmKHR5cGVvZiBrIT0idW5kZWZpbmVkIil7YT0wO2ZvcihiPWsubGVuZ3RoO2E8CmI7YSsrKXgoZSxhLGtbYV0pfWE9MDtmb3IoYj1lLmFhU29ydGluZy5sZW5ndGg7YTxiO2ErKyl7aWYoZS5hYVNvcnRpbmdbYV1bMF0+PWUuYW9Db2x1bW5zLmxlbmd0aCllLmFhU29ydGluZ1thXVswXT0wO2s9ZS5hb0NvbHVtbnNbZS5hYVNvcnRpbmdbYV1bMF1dO2lmKHR5cGVvZiBlLmFhU29ydGluZ1thXVsyXT09InVuZGVmaW5lZCIpZS5hYVNvcnRpbmdbYV1bMl09MDtpZih0eXBlb2YgZy5hYVNvcnRpbmc9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgZS5zYXZlZF9hYVNvcnRpbmc9PSJ1bmRlZmluZWQiKWUuYWFTb3J0aW5nW2FdWzFdPWsuYXNTb3J0aW5nWzBdO2M9MDtmb3IoZD1rLmFzU29ydGluZy5sZW5ndGg7YzxkO2MrKylpZihlLmFhU29ydGluZ1thXVsxXT09ay5hc1NvcnRpbmdbY10pe2UuYWFTb3J0aW5nW2FdWzJdPWM7YnJlYWt9fVYoZSk7YT1pKHRoaXMpLmNoaWxkcmVuKCJ0aGVhZCIpO2lmKGEubGVuZ3RoPT09MCl7YT1bcC5jcmVhdGVFbGVtZW50KCJ0aGVhZCIpXTt0aGlzLmFwcGVuZENoaWxkKGFbMF0pfWUublRIZWFkPQphWzBdO2E9aSh0aGlzKS5jaGlsZHJlbigidGJvZHkiKTtpZihhLmxlbmd0aD09PTApe2E9W3AuY3JlYXRlRWxlbWVudCgidGJvZHkiKV07dGhpcy5hcHBlbmRDaGlsZChhWzBdKX1lLm5UQm9keT1hWzBdO2E9aSh0aGlzKS5jaGlsZHJlbigidGZvb3QiKTtpZihhLmxlbmd0aD4wKXtlLm5URm9vdD1hWzBdO1koZS5hb0Zvb3RlcixlLm5URm9vdCl9aWYoailmb3IoYT0wO2E8Zy5hYURhdGEubGVuZ3RoO2ErKyl2KGUsZy5hYURhdGFbYV0pO2Vsc2UgJChlKTtlLmFpRGlzcGxheT1lLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpO2UuYkluaXRpYWxpc2VkPXRydWU7aD09PWZhbHNlJiZ0KGUpfX0pfX0pKGpRdWVyeSx3aW5kb3csZG9jdW1lbnQpOwo=]]></data>
	</file>
	<file>
	  <filename>/tt/jquery.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2MS42LjMgaHR0cDovL2pxdWVyeS5jb20vIHwgaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZSAqLwooZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjdShhKXtyZXR1cm4gZi5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGNyKGEpe2lmKCFjZ1thXSl7dmFyIGI9Yy5ib2R5LGQ9ZigiPCIrYSsiPiIpLmFwcGVuZFRvKGIpLGU9ZC5jc3MoImRpc3BsYXkiKTtkLnJlbW92ZSgpO2lmKGU9PT0ibm9uZSJ8fGU9PT0iIil7Y2h8fChjaD1jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGNoLmZyYW1lQm9yZGVyPWNoLndpZHRoPWNoLmhlaWdodD0wKSxiLmFwcGVuZENoaWxkKGNoKTtpZighY2l8fCFjaC5jcmVhdGVFbGVtZW50KWNpPShjaC5jb250ZW50V2luZG93fHxjaC5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNpLndyaXRlKChjLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCI/IjwhZG9jdHlwZSBodG1sPiI6IiIpKyI8aHRtbD48Ym9keT4iKSxjaS5jbG9zZSgpO2Q9Y2kuY3JlYXRlRWxlbWVudChhKSxjaS5ib2R5LmFwcGVuZENoaWxkKGQpLGU9Zi5jc3MoZCwiZGlzcGxheSIpLGIucmVtb3ZlQ2hpbGQoY2gpfWNnW2FdPWV9cmV0dXJuIGNnW2FdfWZ1bmN0aW9uIGNxKGEsYil7dmFyIGM9e307Zi5lYWNoKGNtLmNvbmNhdC5hcHBseShbXSxjbS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGNwKCl7Y249Yn1mdW5jdGlvbiBjbygpe3NldFRpbWVvdXQoY3AsMCk7cmV0dXJuIGNuPWYubm93KCl9ZnVuY3Rpb24gY2YoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjZSgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBiJChhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gYlooYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBiWShhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiQS50ZXN0KGEpP2QoYSxlKTpiWShhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxmLmlzQXJyYXkoZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoIWMmJmIhPW51bGwmJnR5cGVvZiBiPT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiliWShhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYlgoYSxjKXt2YXIgZCxlLGc9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZ1tkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmZi5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBiVyhhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YlAsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09InN0cmluZyImJigha3x8Z1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iVyhhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iVyhhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYlYoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPSJzdHJpbmciJiYoYz1iLGI9IioiKTtpZihmLmlzRnVuY3Rpb24oYykpe3ZhciBkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChiTCksZT0wLGc9ZC5sZW5ndGgsaCxpLGo7Zm9yKDtlPGc7ZSsrKWg9ZFtlXSxqPS9eXCsvLnRlc3QoaCksaiYmKGg9aC5zdWJzdHIoMSl8fCIqIiksaT1hW2hdPWFbaF18fFtdLGlbaj8idW5zaGlmdCI6InB1c2giXShjKX19fWZ1bmN0aW9uIGJ5KGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9Yj09PSJ3aWR0aCI/YnQ6YnU7aWYoZD4wKXtjIT09ImJvcmRlciImJmYuZWFjaChlLGZ1bmN0aW9uKCl7Y3x8KGQtPXBhcnNlRmxvYXQoZi5jc3MoYSwicGFkZGluZyIrdGhpcykpfHwwKSxjPT09Im1hcmdpbiI/ZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrdGhpcykpfHwwOmQtPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MH0pO3JldHVybiBkKyJweCJ9ZD1idihhLGIsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHlsZVtiXXx8MDtkPXBhcnNlRmxvYXQoZCl8fDAsYyYmZi5lYWNoKGUsZnVuY3Rpb24oKXtkKz1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCxjIT09InBhZGRpbmciJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwKSxjPT09Im1hcmdpbiImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsYyt0aGlzKSl8fDApfSk7cmV0dXJuIGQrInB4In1mdW5jdGlvbiBibChhLGIpe2Iuc3JjP2YuYWpheCh7dXJsOmIuc3JjLGFzeW5jOiExLGRhdGFUeXBlOiJzY3JpcHQifSk6Zi5nbG9iYWxFdmFsKChiLnRleHR8fGIudGV4dENvbnRlbnR8fGIuaW5uZXJIVE1MfHwiIikucmVwbGFjZShiZCwiLyokMCovIikpLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpfWZ1bmN0aW9uIGJrKGEpe2Yubm9kZU5hbWUoYSwiaW5wdXQiKT9iaihhKToiZ2V0RWxlbWVudHNCeVRhZ05hbWUiaW4gYSYmZi5ncmVwKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksYmopfWZ1bmN0aW9uIGJqKGEpe2lmKGEudHlwZT09PSJjaGVja2JveCJ8fGEudHlwZT09PSJyYWRpbyIpYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWR9ZnVuY3Rpb24gYmkoYSl7cmV0dXJuImdldEVsZW1lbnRzQnlUYWdOYW1lImluIGE/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOiJxdWVyeVNlbGVjdG9yQWxsImluIGE/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYmgoYSxiKXt2YXIgYztpZihiLm5vZGVUeXBlPT09MSl7Yi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT0ib2JqZWN0IiliLm91dGVySFRNTD1hLm91dGVySFRNTDtlbHNlIGlmKGMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iKXtpZihjPT09Im9wdGlvbiIpYi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDtlbHNlIGlmKGM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIiliLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZX1lbHNlIGEuY2hlY2tlZCYmKGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCksYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpO2IucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyl9fWZ1bmN0aW9uIGJnKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYz1mLmV4cGFuZG8sZD1mLmRhdGEoYSksZT1mLmRhdGEoYixkKTtpZihkPWRbY10pe3ZhciBnPWQuZXZlbnRzO2U9ZVtjXT1mLmV4dGVuZCh7fSxkKTtpZihnKXtkZWxldGUgZS5oYW5kbGUsZS5ldmVudHM9e307Zm9yKHZhciBoIGluIGcpZm9yKHZhciBpPTAsaj1nW2hdLmxlbmd0aDtpPGo7aSsrKWYuZXZlbnQuYWRkKGIsaCsoZ1toXVtpXS5uYW1lc3BhY2U/Ii4iOiIiKStnW2hdW2ldLm5hbWVzcGFjZSxnW2hdW2ldLGdbaF1baV0uZGF0YSl9fX19ZnVuY3Rpb24gYmYoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gVihhLGIsYyl7Yj1ifHwwO2lmKGYuaXNGdW5jdGlvbihiKSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1mLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihRLnRlc3QoYikpcmV0dXJuIGYuZmlsdGVyKGIsZCwhYyk7Yj1mLmZpbHRlcihiLGQpfXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBmLmluQXJyYXkoYSxiKT49MD09PWN9KX1mdW5jdGlvbiBVKGEpe3JldHVybiFhfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiBNKGEsYil7cmV0dXJuKGEmJmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFjZSh5LCJgIikucmVwbGFjZSh6LCImIil9ZnVuY3Rpb24gTChhKXt2YXIgYixjLGQsZSxnLGgsaSxqLGssbCxtLG4sbyxwPVtdLHE9W10scj1mLl9kYXRhKHRoaXMsImV2ZW50cyIpO2lmKCEoYS5saXZlRmlyZWQ9PT10aGlzfHwhcnx8IXIubGl2ZXx8YS50YXJnZXQuZGlzYWJsZWR8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5uYW1lc3BhY2UmJihuPW5ldyBSZWdFeHAoIihefFxcLikiK2EubmFtZXNwYWNlLnNwbGl0KCIuIikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGEubGl2ZUZpcmVkPXRoaXM7dmFyIHM9ci5saXZlLnNsaWNlKDApO2ZvcihpPTA7aTxzLmxlbmd0aDtpKyspZz1zW2ldLGcub3JpZ1R5cGUucmVwbGFjZSh3LCIiKT09PWEudHlwZT9xLnB1c2goZy5zZWxlY3Rvcik6cy5zcGxpY2UoaS0tLDEpO2U9ZihhLnRhcmdldCkuY2xvc2VzdChxLGEuY3VycmVudFRhcmdldCk7Zm9yKGo9MCxrPWUubGVuZ3RoO2o8aztqKyspe209ZVtqXTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtnPXNbaV07aWYobS5zZWxlY3Rvcj09PWcuc2VsZWN0b3ImJighbnx8bi50ZXN0KGcubmFtZXNwYWNlKSkmJiFtLmVsZW0uZGlzYWJsZWQpe2g9bS5lbGVtLGQ9bnVsbDtpZihnLnByZVR5cGU9PT0ibW91c2VlbnRlciJ8fGcucHJlVHlwZT09PSJtb3VzZWxlYXZlIilhLnR5cGU9Zy5wcmVUeXBlLGQ9ZihhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3QoZy5zZWxlY3RvcilbMF0sZCYmZi5jb250YWlucyhoLGQpJiYoZD1oKTsoIWR8fGQhPT1oKSYmcC5wdXNoKHtlbGVtOmgsaGFuZGxlT2JqOmcsbGV2ZWw6bS5sZXZlbH0pfX19Zm9yKGo9MCxrPXAubGVuZ3RoO2o8aztqKyspe2U9cFtqXTtpZihjJiZlLmxldmVsPmMpYnJlYWs7YS5jdXJyZW50VGFyZ2V0PWUuZWxlbSxhLmRhdGE9ZS5oYW5kbGVPYmouZGF0YSxhLmhhbmRsZU9iaj1lLmhhbmRsZU9iaixvPWUuaGFuZGxlT2JqLm9yaWdIYW5kbGVyLmFwcGx5KGUuZWxlbSxhcmd1bWVudHMpO2lmKG89PT0hMXx8YS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXtjPWUubGV2ZWwsbz09PSExJiYoYj0hMSk7aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gYn19ZnVuY3Rpb24gSihhLGMsZCl7dmFyIGU9Zi5leHRlbmQoe30sZFswXSk7ZS50eXBlPWEsZS5vcmlnaW5hbEV2ZW50PXt9LGUubGl2ZUZpcmVkPWIsZi5ldmVudC5oYW5kbGUuY2FsbChjLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmRbMF0ucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBEKCl7cmV0dXJuITB9ZnVuY3Rpb24gQygpe3JldHVybiExfWZ1bmN0aW9uIG0oYSxjLGQpe3ZhciBlPWMrImRlZmVyIixnPWMrInF1ZXVlIixoPWMrIm1hcmsiLGk9Zi5kYXRhKGEsZSxiLCEwKTtpJiYoZD09PSJxdWV1ZSJ8fCFmLmRhdGEoYSxnLGIsITApKSYmKGQ9PT0ibWFyayJ8fCFmLmRhdGEoYSxoLGIsITApKSYmc2V0VGltZW91dChmdW5jdGlvbigpeyFmLmRhdGEoYSxnLGIsITApJiYhZi5kYXRhKGEsaCxiLCEwKSYmKGYucmVtb3ZlRGF0YShhLGUsITApLGkucmVzb2x2ZSgpKX0sMCl9ZnVuY3Rpb24gbChhKXtmb3IodmFyIGIgaW4gYSlpZihiIT09InRvSlNPTiIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gayhhLGMsZCl7aWYoZD09PWImJmEubm9kZVR5cGU9PT0xKXt2YXIgZT0iZGF0YS0iK2MucmVwbGFjZShqLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCk7ZD1hLmdldEF0dHJpYnV0ZShlKTtpZih0eXBlb2YgZD09InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09PSJmYWxzZSI/ITE6ZD09PSJudWxsIj9udWxsOmYuaXNOYU4oZCk/aS50ZXN0KGQpP2YucGFyc2VKU09OKGQpOmQ6cGFyc2VGbG9hdChkKX1jYXRjaChnKXt9Zi5kYXRhKGEsYyxkKX1lbHNlIGQ9Yn1yZXR1cm4gZH12YXIgYz1hLmRvY3VtZW50LGQ9YS5uYXZpZ2F0b3IsZT1hLmxvY2F0aW9uLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBLKCl7aWYoIWUuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChLLDEpO3JldHVybn1lLnJlYWR5KCl9fXZhciBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBlLmZuLmluaXQoYSxiLGgpfSxmPWEualF1ZXJ5LGc9YS4kLGgsaT0vXig/OlteIzxdKig8W1x3XFddKz4pW14+XSokfCMoW1x3XC1dKikkKS8saj0vXFMvLGs9L15ccysvLGw9L1xzKyQvLG09L1xkLyxuPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPik/JC8sbz0vXltcXSw6e31cc10qJC8scD0vXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLHE9LyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLHI9Lyg/Ol58OnwsKSg/OlxzKlxbKSsvZyxzPS8od2Via2l0KVsgXC9dKFtcdy5dKykvLHQ9LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLHU9Lyhtc2llKSAoW1x3Ll0rKS8sdj0vKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLHc9Ly0oW2Etel18WzAtOV0pL2lnLHg9L14tbXMtLyx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LHo9ZC51c2VyQWdlbnQsQSxCLEMsRD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxGPUFycmF5LnByb3RvdHlwZS5wdXNoLEc9QXJyYXkucHJvdG90eXBlLnNsaWNlLEg9U3RyaW5nLnByb3RvdHlwZS50cmltLEk9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsSj17fTtlLmZuPWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGluaXQ6ZnVuY3Rpb24oYSxkLGYpe3ZhciBnLGgsaixrO2lmKCFhKXJldHVybiB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhZCYmYy5ib2R5KXt0aGlzLmNvbnRleHQ9Yyx0aGlzWzBdPWMuYm9keSx0aGlzLnNlbGVjdG9yPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09InN0cmluZyIpe2EuY2hhckF0KDApIT09IjwifHxhLmNoYXJBdChhLmxlbmd0aC0xKSE9PSI+Inx8YS5sZW5ndGg8Mz9nPWkuZXhlYyhhKTpnPVtudWxsLGEsbnVsbF07aWYoZyYmKGdbMV18fCFkKSl7aWYoZ1sxXSl7ZD1kIGluc3RhbmNlb2YgZT9kWzBdOmQsaz1kP2Qub3duZXJEb2N1bWVudHx8ZDpjLGo9bi5leGVjKGEpLGo/ZS5pc1BsYWluT2JqZWN0KGQpPyhhPVtjLmNyZWF0ZUVsZW1lbnQoalsxXSldLGUuZm4uYXR0ci5jYWxsKGEsZCwhMCkpOmE9W2suY3JlYXRlRWxlbWVudChqWzFdKV06KGo9ZS5idWlsZEZyYWdtZW50KFtnWzFdXSxba10pLGE9KGouY2FjaGVhYmxlP2UuY2xvbmUoai5mcmFnbWVudCk6ai5mcmFnbWVudCkuY2hpbGROb2Rlcyk7cmV0dXJuIGUubWVyZ2UodGhpcyxhKX1oPWMuZ2V0RWxlbWVudEJ5SWQoZ1syXSk7aWYoaCYmaC5wYXJlbnROb2RlKXtpZihoLmlkIT09Z1syXSlyZXR1cm4gZi5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1ofXRoaXMuY29udGV4dD1jLHRoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31yZXR1cm4hZHx8ZC5qcXVlcnk/KGR8fGYpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihkKS5maW5kKGEpfWlmKGUuaXNGdW5jdGlvbihhKSlyZXR1cm4gZi5yZWFkeShhKTthLnNlbGVjdG9yIT09YiYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KTtyZXR1cm4gZS5tYWtlQXJyYXkoYSx0aGlzKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjYuMyIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9GLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEIuZG9uZShhKTtyZXR1cm4gdGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xpY2UoYSwrYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRy5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixHLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpGLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxlLmZuLmluaXQucHJvdG90eXBlPWUuZm4sZS5leHRlbmQ9ZS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxjLGQsZixnLGgsaT1hcmd1bWVudHNbMF18fHt9LGo9MSxrPWFyZ3VtZW50cy5sZW5ndGgsbD0hMTt0eXBlb2YgaT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT0ib2JqZWN0IiYmIWUuaXNGdW5jdGlvbihpKSYmKGk9e30pLGs9PT1qJiYoaT10aGlzLC0taik7Zm9yKDtqPGs7aisrKWlmKChhPWFyZ3VtZW50c1tqXSkhPW51bGwpZm9yKGMgaW4gYSl7ZD1pW2NdLGY9YVtjXTtpZihpPT09Ziljb250aW51ZTtsJiZmJiYoZS5pc1BsYWluT2JqZWN0KGYpfHwoZz1lLmlzQXJyYXkoZikpKT8oZz8oZz0hMSxoPWQmJmUuaXNBcnJheShkKT9kOltdKTpoPWQmJmUuaXNQbGFpbk9iamVjdChkKT9kOnt9LGlbY109ZS5leHRlbmQobCxoLGYpKTpmIT09YiYmKGlbY109Zil9cmV0dXJuIGl9LGUuZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGIpe2EuJD09PWUmJihhLiQ9ZyksYiYmYS5qUXVlcnk9PT1lJiYoYS5qUXVlcnk9Zik7cmV0dXJuIGV9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/ZS5yZWFkeVdhaXQrKzplLnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24oYSl7aWYoYT09PSEwJiYhLS1lLnJlYWR5V2FpdHx8YSE9PSEwJiYhZS5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7ZS5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1lLnJlYWR5V2FpdD4wKXJldHVybjtCLnJlc29sdmVXaXRoKGMsW2VdKSxlLmZuLnRyaWdnZXImJmUoYykudHJpZ2dlcigicmVhZHkiKS51bmJpbmQoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZighQil7Qj1lLl9EZWZlcnJlZCgpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixDLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixDKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSygpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc05hTjpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbHx8IW0udGVzdChhKXx8aXNOYU4oYSl9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/U3RyaW5nKGEpOkpbRC5jYWxsKGEpXXx8Im9iamVjdCJ9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7aWYoIWF8fGUudHlwZShhKSE9PSJvYmplY3QifHxhLm5vZGVUeXBlfHxlLmlzV2luZG93KGEpKXJldHVybiExO3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhRS5jYWxsKGEsImNvbnN0cnVjdG9yIikmJiFFLmNhbGwoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKSlyZXR1cm4hMX1jYXRjaChjKXtyZXR1cm4hMX12YXIgZDtmb3IoZCBpbiBhKTtyZXR1cm4gZD09PWJ8fEUuY2FsbChhLGQpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBhfSxwYXJzZUpTT046ZnVuY3Rpb24oYil7aWYodHlwZW9mIGIhPSJzdHJpbmcifHwhYilyZXR1cm4gbnVsbDtiPWUudHJpbShiKTtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBhcnNlKGIpO2lmKG8udGVzdChiLnJlcGxhY2UocCwiQCIpLnJlcGxhY2UocSwiXSIpLnJlcGxhY2UociwiIikpKXJldHVybihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO2UuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYyl7dmFyIGQsZjt0cnl7YS5ET01QYXJzZXI/KGY9bmV3IERPTVBhcnNlcixkPWYucGFyc2VGcm9tU3RyaW5nKGMsInRleHQveG1sIikpOihkPW5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIiksZC5hc3luYz0iZmFsc2UiLGQubG9hZFhNTChjKSl9Y2F0Y2goZyl7ZD1ifSghZHx8IWQuZG9jdW1lbnRFbGVtZW50fHxkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJmUuZXJyb3IoIkludmFsaWQgWE1MOiAiK2MpO3JldHVybiBkfSxub29wOmZ1bmN0aW9uKCl7fSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGIpe2ImJmoudGVzdChiKSYmKGEuZXhlY1NjcmlwdHx8ZnVuY3Rpb24oYil7YS5ldmFsLmNhbGwoYSxiKX0pKGIpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh4LCJtcy0iKS5yZXBsYWNlKHcseSl9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9VcHBlckNhc2UoKT09PWIudG9VcHBlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZz0wLGg9YS5sZW5ndGgsaT1oPT09Ynx8ZS5pc0Z1bmN0aW9uKGEpO2lmKGQpe2lmKGkpe2ZvcihmIGluIGEpaWYoYy5hcHBseShhW2ZdLGQpPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5hcHBseShhW2crK10sZCk9PT0hMSlicmVha31lbHNlIGlmKGkpe2ZvcihmIGluIGEpaWYoYy5jYWxsKGFbZl0sZixhW2ZdKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuY2FsbChhW2ddLGcsYVtnKytdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOkg/ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6SC5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjooYSsiIikucmVwbGFjZShrLCIiKS5yZXBsYWNlKGwsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtpZihhIT1udWxsKXt2YXIgZD1lLnR5cGUoYSk7YS5sZW5ndGg9PW51bGx8fGQ9PT0ic3RyaW5nInx8ZD09PSJmdW5jdGlvbiJ8fGQ9PT0icmVnZXhwInx8ZS5pc1dpbmRvdyhhKT9GLmNhbGwoYyxhKTplLm1lcmdlKGMsYSl9cmV0dXJuIGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiKXtpZighYilyZXR1cm4tMTtpZihJKXJldHVybiBJLmNhbGwoYixhKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoYltjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5sZW5ndGgsZT0wO2lmKHR5cGVvZiBjLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBmPWMubGVuZ3RoO2U8ZjtlKyspYVtkKytdPWNbZV07ZWxzZSB3aGlsZShjW2VdIT09YilhW2QrK109Y1tlKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU7Yz0hIWM7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWU9ISFiKGFbZl0sZiksYyE9PWUmJmQucHVzaChhW2ZdKTtyZXR1cm4gZH0sbWFwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnLGg9W10saT0wLGo9YS5sZW5ndGgsaz1hIGluc3RhbmNlb2YgZXx8aiE9PWImJnR5cGVvZiBqPT0ibnVtYmVyIiYmKGo+MCYmYVswXSYmYVtqLTFdfHxqPT09MHx8ZS5pc0FycmF5KGEpKTtpZihrKWZvcig7aTxqO2krKylmPWMoYVtpXSxpLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtlbHNlIGZvcihnIGluIGEpZj1jKGFbZ10sZyxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7cmV0dXJuIGguY29uY2F0LmFwcGx5KFtdLGgpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYz09InN0cmluZyIpe3ZhciBkPWFbY107Yz1hLGE9ZH1pZighZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBiO3ZhciBmPUcuY2FsbChhcmd1bWVudHMsMiksZz1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGMsZi5jb25jYXQoRy5jYWxsKGFyZ3VtZW50cykpKX07Zy5ndWlkPWEuZ3VpZD1hLmd1aWR8fGcuZ3VpZHx8ZS5ndWlkKys7cmV0dXJuIGd9LGFjY2VzczpmdW5jdGlvbihhLGMsZCxmLGcsaCl7dmFyIGk9YS5sZW5ndGg7aWYodHlwZW9mIGM9PSJvYmplY3QiKXtmb3IodmFyIGogaW4gYyllLmFjY2VzcyhhLGosY1tqXSxmLGcsZCk7cmV0dXJuIGF9aWYoZCE9PWIpe2Y9IWgmJmYmJmUuaXNGdW5jdGlvbihkKTtmb3IodmFyIGs9MDtrPGk7aysrKWcoYVtrXSxjLGY/ZC5jYWxsKGFba10sayxnKGFba10sYykpOmQsaCk7cmV0dXJuIGF9cmV0dXJuIGk/ZyhhWzBdLGMpOmJ9LG5vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSx1YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO3ZhciBiPXMuZXhlYyhhKXx8dC5leGVjKGEpfHx1LmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJnYuZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxzdWI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1lLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24oZCxmKXtmJiZmIGluc3RhbmNlb2YgZSYmIShmIGluc3RhbmNlb2YgYSkmJihmPWEoZikpO3JldHVybiBlLmZuLmluaXQuY2FsbCh0aGlzLGQsZixiKX0sYS5mbi5pbml0LnByb3RvdHlwZT1hLmZuO3ZhciBiPWEoYyk7cmV0dXJuIGF9LGJyb3dzZXI6e319KSxlLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtKWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLEE9ZS51YU1hdGNoKHopLEEuYnJvd3NlciYmKGUuYnJvd3NlcltBLmJyb3dzZXJdPSEwLGUuYnJvd3Nlci52ZXJzaW9uPUEudmVyc2lvbiksZS5icm93c2VyLndlYmtpdCYmKGUuYnJvd3Nlci5zYWZhcmk9ITApLGoudGVzdCgiICIpJiYoaz0vXltcc1x4QTBdKy8sbD0vW1xzXHhBMF0rJC8pLGg9ZShjKSxjLmFkZEV2ZW50TGlzdGVuZXI/Qz1mdW5jdGlvbigpe2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQywhMSksZS5yZWFkeSgpfTpjLmF0dGFjaEV2ZW50JiYoQz1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSImJihjLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEMpLGUucmVhZHkoKSl9KTtyZXR1cm4gZX0oKSxnPSJkb25lIGZhaWwgaXNSZXNvbHZlZCBpc1JlamVjdGVkIHByb21pc2UgdGhlbiBhbHdheXMgcGlwZSIuc3BsaXQoIiAiKSxoPVtdLnNsaWNlO2YuZXh0ZW5kKHtfRGVmZXJyZWQ6ZnVuY3Rpb24oKXt2YXIgYT1bXSxiLGMsZCxlPXtkb25lOmZ1bmN0aW9uKCl7aWYoIWQpe3ZhciBjPWFyZ3VtZW50cyxnLGgsaSxqLGs7YiYmKGs9YixiPTApO2ZvcihnPTAsaD1jLmxlbmd0aDtnPGg7ZysrKWk9Y1tnXSxqPWYudHlwZShpKSxqPT09ImFycmF5Ij9lLmRvbmUuYXBwbHkoZSxpKTpqPT09ImZ1bmN0aW9uIiYmYS5wdXNoKGkpO2smJmUucmVzb2x2ZVdpdGgoa1swXSxrWzFdKX1yZXR1cm4gdGhpc30scmVzb2x2ZVdpdGg6ZnVuY3Rpb24oZSxmKXtpZighZCYmIWImJiFjKXtmPWZ8fFtdLGM9MTt0cnl7d2hpbGUoYVswXSlhLnNoaWZ0KCkuYXBwbHkoZSxmKX1maW5hbGx5e2I9W2UsZl0sYz0wfX1yZXR1cm4gdGhpc30scmVzb2x2ZTpmdW5jdGlvbigpe2UucmVzb2x2ZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxpc1Jlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFjfHwhIWJ9LGNhbmNlbDpmdW5jdGlvbigpe2Q9MSxhPVtdO3JldHVybiB0aGlzfX07cmV0dXJuIGV9LERlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPWYuX0RlZmVycmVkKCksYz1mLl9EZWZlcnJlZCgpLGQ7Zi5leHRlbmQoYix7dGhlbjpmdW5jdGlvbihhLGMpe2IuZG9uZShhKS5mYWlsKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gYi5kb25lLmFwcGx5KGIsYXJndW1lbnRzKS5mYWlsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZmFpbDpjLmRvbmUscmVqZWN0V2l0aDpjLnJlc29sdmVXaXRoLHJlamVjdDpjLnJlc29sdmUsaXNSZWplY3RlZDpjLmlzUmVzb2x2ZWQscGlwZTpmdW5jdGlvbihhLGMpe3JldHVybiBmLkRlZmVycmVkKGZ1bmN0aW9uKGQpe2YuZWFjaCh7ZG9uZTpbYSwicmVzb2x2ZSJdLGZhaWw6W2MsInJlamVjdCJdfSxmdW5jdGlvbihhLGMpe3ZhciBlPWNbMF0sZz1jWzFdLGg7Zi5pc0Z1bmN0aW9uKGUpP2JbYV0oZnVuY3Rpb24oKXtoPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGgmJmYuaXNGdW5jdGlvbihoLnByb21pc2UpP2gucHJvbWlzZSgpLnRoZW4oZC5yZXNvbHZlLGQucmVqZWN0KTpkW2crIldpdGgiXSh0aGlzPT09Yj9kOnRoaXMsW2hdKX0pOmJbYV0oZFtnXSl9KX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtpZihhPT1udWxsKXtpZihkKXJldHVybiBkO2Q9YT17fX12YXIgYz1nLmxlbmd0aDt3aGlsZShjLS0pYVtnW2NdXT1iW2dbY11dO3JldHVybiBhfX0pLGIuZG9uZShjLmNhbmNlbCkuZmFpbChiLmNhbmNlbCksZGVsZXRlIGIuY2FuY2VsLGEmJmEuY2FsbChiLGIpO3JldHVybiBifSx3aGVuOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2JbYV09YXJndW1lbnRzLmxlbmd0aD4xP2guY2FsbChhcmd1bWVudHMsMCk6YywtLWV8fGcucmVzb2x2ZVdpdGgoZyxoLmNhbGwoYiwwKSl9fXZhciBiPWFyZ3VtZW50cyxjPTAsZD1iLmxlbmd0aCxlPWQsZz1kPD0xJiZhJiZmLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hOmYuRGVmZXJyZWQoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZmLmlzRnVuY3Rpb24oYltjXS5wcm9taXNlKT9iW2NdLnByb21pc2UoKS50aGVuKGkoYyksZy5yZWplY3QpOi0tZTtlfHxnLnJlc29sdmVXaXRoKGcsYil9ZWxzZSBnIT09YSYmZy5yZXNvbHZlV2l0aChnLGQ/W2FdOltdKTtyZXR1cm4gZy5wcm9taXNlKCl9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWMuZG9jdW1lbnRFbGVtZW50LGQsZSxnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdTthLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGEuaW5uZXJIVE1MPSIgICA8bGluaz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3RvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0IHR5cGU9Y2hlY2tib3g+IixkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxlPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighZHx8IWQubGVuZ3RofHwhZSlyZXR1cm57fTtnPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksaD1nLmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGk9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxrPXtsZWFkaW5nV2hpdGVzcGFjZTphLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDplLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQvLnRlc3QoZS5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWUuc3R5bGUuY3NzRmxvYXQsY2hlY2tPbjppLnZhbHVlPT09Im9uIixvcHRTZWxlY3RlZDpoLnNlbGVjdGVkLGdldFNldEF0dHJpYnV0ZTphLmNsYXNzTmFtZSE9PSJ0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITB9LGkuY2hlY2tlZD0hMCxrLm5vQ2xvbmVDaGVja2VkPWkuY2xvbmVOb2RlKCEwKS5jaGVja2VkLGcuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0haC5kaXNhYmxlZDt0cnl7ZGVsZXRlIGEudGVzdH1jYXRjaCh2KXtrLmRlbGV0ZUV4cGFuZG89ITF9IWEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hdHRhY2hFdmVudCYmYS5maXJlRXZlbnQmJihhLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe2subm9DbG9uZUV2ZW50PSExfSksYS5jbG9uZU5vZGUoITApLmZpcmVFdmVudCgib25jbGljayIpKSxpPWMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxpLnZhbHVlPSJ0IixpLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksay5yYWRpb1ZhbHVlPWkudmFsdWU9PT0idCIsaS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYS5hcHBlbmRDaGlsZChpKSxsPWMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGwuYXBwZW5kQ2hpbGQoYS5maXJzdENoaWxkKSxrLmNoZWNrQ2xvbmU9bC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYS5pbm5lckhUTUw9IiIsYS5zdHlsZS53aWR0aD1hLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiLG09Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLG89Yy5jcmVhdGVFbGVtZW50KG0/ImRpdiI6ImJvZHkiKSxwPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG0mJmYuZXh0ZW5kKHAse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTEwMDBweCIsdG9wOiItMTAwMHB4In0pO2Zvcih0IGluIHApby5zdHlsZVt0XT1wW3RdO28uYXBwZW5kQ2hpbGQoYSksbj1tfHxiLG4uaW5zZXJ0QmVmb3JlKG8sbi5maXJzdENoaWxkKSxrLmFwcGVuZENoZWNrZWQ9aS5jaGVja2VkLGsuYm94TW9kZWw9YS5vZmZzZXRXaWR0aD09PTIsInpvb20iaW4gYS5zdHlsZSYmKGEuc3R5bGUuZGlzcGxheT0iaW5saW5lIixhLnN0eWxlLnpvb209MSxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9YS5vZmZzZXRXaWR0aD09PTIsYS5zdHlsZS5kaXNwbGF5PSIiLGEuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSd3aWR0aDo0cHg7Jz48L2Rpdj4iLGsuc2hyaW5rV3JhcEJsb2Nrcz1hLm9mZnNldFdpZHRoIT09MiksYS5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkIHN0eWxlPSdwYWRkaW5nOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lJz48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixxPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksdT1xWzBdLm9mZnNldEhlaWdodD09PTAscVswXS5zdHlsZS5kaXNwbGF5PSIiLHFbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsay5yZWxpYWJsZUhpZGRlbk9mZnNldHM9dSYmcVswXS5vZmZzZXRIZWlnaHQ9PT0wLGEuaW5uZXJIVE1MPSIiLGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGo9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxqLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLm1hcmdpblJpZ2h0PSIwIixhLmFwcGVuZENoaWxkKGopLGsucmVsaWFibGVNYXJnaW5SaWdodD0ocGFyc2VJbnQoKGMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShqLG51bGwpfHx7bWFyZ2luUmlnaHQ6MH0pLm1hcmdpblJpZ2h0LDEwKXx8MCk9PT0wKSxvLmlubmVySFRNTD0iIixuLnJlbW92ZUNoaWxkKG8pO2lmKGEuYXR0YWNoRXZlbnQpZm9yKHQgaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSlzPSJvbiIrdCx1PXMgaW4gYSx1fHwoYS5zZXRBdHRyaWJ1dGUocywicmV0dXJuOyIpLHU9dHlwZW9mIGFbc109PSJmdW5jdGlvbiIpLGtbdCsiQnViYmxlcyJdPXU7bz1sPWc9aD1tPWo9YT1pPW51bGw7cmV0dXJuIGt9KCksZi5ib3hNb2RlbD1mLnN1cHBvcnQuYm94TW9kZWw7dmFyIGk9L14oPzpcey4qXH18XFsuKlxdKSQvLGo9LyhbYS16XSkoW0EtWl0pL2c7Zi5leHRlbmQoe2NhY2hlOnt9LHV1aWQ6MCxleHBhbmRvOiJqUXVlcnkiKyhmLmZuLmpxdWVyeStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlP2YuY2FjaGVbYVtmLmV4cGFuZG9dXTphW2YuZXhwYW5kb107cmV0dXJuISFhJiYhbChhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWYuYWNjZXB0RGF0YShhKSl7dmFyIGcsaCxpPWYuZXhwYW5kbyxqPXR5cGVvZiBjPT0ic3RyaW5nIixrPWEubm9kZVR5cGUsbD1rP2YuY2FjaGU6YSxtPWs/YVtmLmV4cGFuZG9dOmFbZi5leHBhbmRvXSYmZi5leHBhbmRvO2lmKCghbXx8ZSYmbSYmbFttXSYmIWxbbV1baV0pJiZqJiZkPT09YilyZXR1cm47bXx8KGs/YVtmLmV4cGFuZG9dPW09KytmLnV1aWQ6bT1mLmV4cGFuZG8pLGxbbV18fChsW21dPXt9LGt8fChsW21dLnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWU/bFttXVtpXT1mLmV4dGVuZChsW21dW2ldLGMpOmxbbV09Zi5leHRlbmQobFttXSxjKTtnPWxbbV0sZSYmKGdbaV18fChnW2ldPXt9KSxnPWdbaV0pLGQhPT1iJiYoZ1tmLmNhbWVsQ2FzZShjKV09ZCk7aWYoYz09PSJldmVudHMiJiYhZ1tjXSlyZXR1cm4gZ1tpXSYmZ1tpXS5ldmVudHM7aj8oaD1nW2NdLGg9PW51bGwmJihoPWdbZi5jYW1lbENhc2UoYyldKSk6aD1nO3JldHVybiBofX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIsYyl7aWYoISFmLmFjY2VwdERhdGEoYSkpe3ZhciBkLGU9Zi5leHBhbmRvLGc9YS5ub2RlVHlwZSxoPWc/Zi5jYWNoZTphLGk9Zz9hW2YuZXhwYW5kb106Zi5leHBhbmRvO2lmKCFoW2ldKXJldHVybjtpZihiKXtkPWM/aFtpXVtlXTpoW2ldO2lmKGQpe2RbYl18fChiPWYuY2FtZWxDYXNlKGIpKSxkZWxldGUgZFtiXTtpZighbChkKSlyZXR1cm59fWlmKGMpe2RlbGV0ZSBoW2ldW2VdO2lmKCFsKGhbaV0pKXJldHVybn12YXIgaj1oW2ldW2VdO2Yuc3VwcG9ydC5kZWxldGVFeHBhbmRvfHwhaC5zZXRJbnRlcnZhbD9kZWxldGUgaFtpXTpoW2ldPW51bGwsaj8oaFtpXT17fSxnfHwoaFtpXS50b0pTT049Zi5ub29wKSxoW2ldW2VdPWopOmcmJihmLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYVtmLmV4cGFuZG9dOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyk6YVtmLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWYubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxmLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkPW51bGw7aWYodHlwZW9mIGE9PSJ1bmRlZmluZWQiKXtpZih0aGlzLmxlbmd0aCl7ZD1mLmRhdGEodGhpc1swXSk7aWYodGhpc1swXS5ub2RlVHlwZT09PTEpe3ZhciBlPXRoaXNbMF0uYXR0cmlidXRlcyxnO2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKylnPWVbaF0ubmFtZSxnLmluZGV4T2YoImRhdGEtIik9PT0wJiYoZz1mLmNhbWVsQ2FzZShnLnN1YnN0cmluZyg1KSksayh0aGlzWzBdLGcsZFtnXSkpfX1yZXR1cm4gZH1pZih0eXBlb2YgYT09Im9iamVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLGEpfSk7dmFyIGo9YS5zcGxpdCgiLiIpO2pbMV09alsxXT8iLiIralsxXToiIjtpZihjPT09Yil7ZD10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitqWzFdKyIhIixbalswXV0pLGQ9PT1iJiZ0aGlzLmxlbmd0aCYmKGQ9Zi5kYXRhKHRoaXNbMF0sYSksZD1rKHRoaXNbMF0sYSxkKSk7cmV0dXJuIGQ9PT1iJiZqWzFdP3RoaXMuZGF0YShqWzBdKTpkfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGQ9W2pbMF0sY107Yi50cmlnZ2VySGFuZGxlcigic2V0RGF0YSIralsxXSsiISIsZCksZi5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitqWzFdKyIhIixkKX0pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLGYuZXh0ZW5kKHtfbWFyazpmdW5jdGlvbihhLGMpe2EmJihjPShjfHwiZngiKSsibWFyayIsZi5kYXRhKGEsYywoZi5kYXRhKGEsYyxiLCEwKXx8MCkrMSwhMCkpfSxfdW5tYXJrOmZ1bmN0aW9uKGEsYyxkKXthIT09ITAmJihkPWMsYz1hLGE9ITEpO2lmKGMpe2Q9ZHx8ImZ4Ijt2YXIgZT1kKyJtYXJrIixnPWE/MDooZi5kYXRhKGMsZSxiLCEwKXx8MSktMTtnP2YuZGF0YShjLGUsZywhMCk6KGYucmVtb3ZlRGF0YShjLGUsITApLG0oYyxkLCJtYXJrIikpfX0scXVldWU6ZnVuY3Rpb24oYSxjLGQpe2lmKGEpe2M9KGN8fCJmeCIpKyJxdWV1ZSI7dmFyIGU9Zi5kYXRhKGEsYyxiLCEwKTtkJiYoIWV8fGYuaXNBcnJheShkKT9lPWYuZGF0YShhLGMsZi5tYWtlQXJyYXkoZCksITApOmUucHVzaChkKSk7cmV0dXJuIGV8fFtdfX0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1mLnF1ZXVlKGEsYiksZD1jLnNoaWZ0KCksZTtkPT09ImlucHJvZ3Jlc3MiJiYoZD1jLnNoaWZ0KCkpLGQmJihiPT09ImZ4IiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZC5jYWxsKGEsZnVuY3Rpb24oKXtmLmRlcXVldWUoYSxiKX0pKSxjLmxlbmd0aHx8KGYucmVtb3ZlRGF0YShhLGIrInF1ZXVlIiwhMCksbShhLGIsInF1ZXVlIikpfX0pLGYuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT0ic3RyaW5nIiYmKGM9YSxhPSJmeCIpO2lmKGM9PT1iKXJldHVybiBmLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYucXVldWUodGhpcyxhLGMpO2E9PT0iZngiJiZiWzBdIT09ImlucHJvZ3Jlc3MiJiZmLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9Zi5meD9mLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5kZXF1ZXVlKGMsYil9LGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBtKCl7LS1ofHxkLnJlc29sdmVXaXRoKGUsW2VdKX10eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT1iKSxhPWF8fCJmeCI7dmFyIGQ9Zi5EZWZlcnJlZCgpLGU9dGhpcyxnPWUubGVuZ3RoLGg9MSxpPWErImRlZmVyIixqPWErInF1ZXVlIixrPWErIm1hcmsiLGw7d2hpbGUoZy0tKWlmKGw9Zi5kYXRhKGVbZ10saSxiLCEwKXx8KGYuZGF0YShlW2ddLGosYiwhMCl8fGYuZGF0YShlW2ddLGssYiwhMCkpJiZmLmRhdGEoZVtnXSxpLGYuX0RlZmVycmVkKCksITApKWgrKyxsLmRvbmUobSk7bSgpO3JldHVybiBkLnByb21pc2UoKX19KTt2YXIgbj0vW1xuXHRccl0vZyxvPS9ccysvLHA9L1xyL2cscT0vXig/OmJ1dHRvbnxpbnB1dCkkL2kscj0vXig/OmJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKSQvaSxzPS9eYSg/OnJlYSk/JC9pLHQ9L14oPzphdXRvZm9jdXN8YXV0b3BsYXl8YXN5bmN8Y2hlY2tlZHxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZHxzZWxlY3RlZCkkL2ksdSx2O2YuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxiLCEwLGYuYXR0cil9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlQXR0cih0aGlzLGEpfSl9LHByb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGIsITAsZi5wcm9wKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXthPWYucHJvcEZpeFthXXx8YTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09YixkZWxldGUgdGhpc1thXX1jYXRjaChjKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGcsaCxpO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmciKXtiPWEuc3BsaXQobyk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2U9dGhpc1tjXTtpZihlLm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUmJmIubGVuZ3RoPT09MSllLmNsYXNzTmFtZT1hO2Vsc2V7Zz0iICIrZS5jbGFzc05hbWUrIiAiO2ZvcihoPTAsaT1iLmxlbmd0aDtoPGk7aCsrKX5nLmluZGV4T2YoIiAiK2JbaF0rIiAiKXx8KGcrPWJbaF0rIiAiKTtlLmNsYXNzTmFtZT1mLnRyaW0oZyl9fX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGcsaCxpLGo7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihhJiZ0eXBlb2YgYT09InN0cmluZyJ8fGE9PT1iKXtjPShhfHwiIikuc3BsaXQobyk7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTtpZihnLm5vZGVUeXBlPT09MSYmZy5jbGFzc05hbWUpaWYoYSl7aD0oIiAiK2cuY2xhc3NOYW1lKyIgIikucmVwbGFjZShuLCIgIik7Zm9yKGk9MCxqPWMubGVuZ3RoO2k8ajtpKyspaD1oLnJlcGxhY2UoIiAiK2NbaV0rIiAiLCIgIik7Zy5jbGFzc05hbWU9Zi50cmltKGgpfWVsc2UgZy5jbGFzc05hbWU9IiJ9fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGQ9dHlwZW9mIGI9PSJib29sZWFuIjtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtmKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoYz09PSJzdHJpbmciKXt2YXIgZSxnPTAsaD1mKHRoaXMpLGk9YixqPWEuc3BsaXQobyk7d2hpbGUoZT1qW2crK10paT1kP2k6IWguaGFzQ2xhc3MoZSksaFtpPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZSl9ZWxzZSBpZihjPT09InVuZGVmaW5lZCJ8fGM9PT0iYm9vbGVhbiIpdGhpcy5jbGFzc05hbWUmJmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6Zi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIifSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiPSIgIithKyIgIjtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspaWYodGhpc1tjXS5ub2RlVHlwZT09PTEmJigiICIrdGhpc1tjXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKG4sIiAiKS5pbmRleE9mKGIpPi0xKXJldHVybiEwO3JldHVybiExfSx2YWw6ZnVuY3Rpb24oYSl7dmFyIGMsZCxlPXRoaXNbMF07aWYoIWFyZ3VtZW50cy5sZW5ndGgpe2lmKGUpe2M9Zi52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW2UudHlwZV07aWYoYyYmImdldCJpbiBjJiYoZD1jLmdldChlLCJ2YWx1ZSIpKSE9PWIpcmV0dXJuIGQ7ZD1lLnZhbHVlO3JldHVybiB0eXBlb2YgZD09InN0cmluZyI/ZC5yZXBsYWNlKHAsIiIpOmQ9PW51bGw/IiI6ZH1yZXR1cm4gYn12YXIgZz1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZT1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2c/aD1hLmNhbGwodGhpcyxkLGUudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnNlbGVjdGVkSW5kZXgsZD1bXSxlPWEub3B0aW9ucyxnPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihjPDApcmV0dXJuIG51bGw7Zm9yKHZhciBoPWc/YzowLGk9Zz9jKzE6ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqLnNlbGVjdGVkJiYoZi5zdXBwb3J0Lm9wdERpc2FibGVkPyFqLmRpc2FibGVkOmouZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpPT09bnVsbCkmJighai5wYXJlbnROb2RlLmRpc2FibGVkfHwhZi5ub2RlTmFtZShqLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtiPWYoaikudmFsKCk7aWYoZylyZXR1cm4gYjtkLnB1c2goYil9fWlmKGcmJiFkLmxlbmd0aCYmZS5sZW5ndGgpcmV0dXJuIGYoZVtjXSkudmFsKCk7cmV0dXJuIGR9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWYubWFrZUFycmF5KGIpO2YoYSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Zi5pbkFycmF5KGYodGhpcykudmFsKCksYyk+PTB9KSxjLmxlbmd0aHx8KGEuc2VsZWN0ZWRJbmRleD0tMSk7cmV0dXJuIGN9fX0sYXR0ckZuOnt2YWw6ITAsY3NzOiEwLGh0bWw6ITAsdGV4dDohMCxkYXRhOiEwLHdpZHRoOiEwLGhlaWdodDohMCxvZmZzZXQ6ITB9LGF0dHJGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCJ9LGF0dHI6ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGc9YS5ub2RlVHlwZTtpZighYXx8Zz09PTN8fGc9PT04fHxnPT09MilyZXR1cm4gYjtpZihlJiZjIGluIGYuYXR0ckZuKXJldHVybiBmKGEpW2NdKGQpO2lmKCEoImdldEF0dHJpYnV0ZSJpbiBhKSlyZXR1cm4gZi5wcm9wKGEsYyxkKTt2YXIgaCxpLGo9ZyE9PTF8fCFmLmlzWE1MRG9jKGEpO2omJihjPWYuYXR0ckZpeFtjXXx8YyxpPWYuYXR0ckhvb2tzW2NdLGl8fCh0LnRlc3QoYyk/aT12OnUmJihpPXUpKSk7aWYoZCE9PWIpe2lmKGQ9PT1udWxsKXtmLnJlbW92ZUF0dHIoYSxjKTtyZXR1cm4gYn1pZihpJiYic2V0ImluIGkmJmomJihoPWkuc2V0KGEsZCxjKSkhPT1iKXJldHVybiBoO2Euc2V0QXR0cmlidXRlKGMsIiIrZCk7cmV0dXJuIGR9aWYoaSYmImdldCJpbiBpJiZqJiYoaD1pLmdldChhLGMpKSE9PW51bGwpcmV0dXJuIGg7aD1hLmdldEF0dHJpYnV0ZShjKTtyZXR1cm4gaD09PW51bGw/YjpofSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGM7YS5ub2RlVHlwZT09PTEmJihiPWYuYXR0ckZpeFtiXXx8YixmLmF0dHIoYSxiLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZShiKSx0LnRlc3QoYikmJihjPWYucHJvcEZpeFtiXXx8YilpbiBhJiYoYVtjXT0hMSkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKHEudGVzdChhLm5vZGVOYW1lKSYmYS5wYXJlbnROb2RlKWYuZXJyb3IoInR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCIpO2Vsc2UgaWYoIWYuc3VwcG9ydC5yYWRpb1ZhbHVlJiZiPT09InJhZGlvIiYmZi5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVlO2Euc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKTtyZXR1cm4gYn19fSx2YWx1ZTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYodSYmZi5ub2RlTmFtZShhLCJidXR0b24iKSlyZXR1cm4gdS5nZXQoYSxiKTtyZXR1cm4gYiBpbiBhP2EudmFsdWU6bnVsbH0sc2V0OmZ1bmN0aW9uKGEsYixjKXtpZih1JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB1LnNldChhLGIsYyk7YS52YWx1ZT1ifX19LHByb3BGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCIscmVhZG9ubHk6InJlYWRPbmx5IiwiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGNvbnRlbnRlZGl0YWJsZToiY29udGVudEVkaXRhYmxlIn0scHJvcDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9YS5ub2RlVHlwZTtpZighYXx8ZT09PTN8fGU9PT04fHxlPT09MilyZXR1cm4gYjt2YXIgZyxoLGk9ZSE9PTF8fCFmLmlzWE1MRG9jKGEpO2kmJihjPWYucHJvcEZpeFtjXXx8YyxoPWYucHJvcEhvb2tzW2NdKTtyZXR1cm4gZCE9PWI/aCYmInNldCJpbiBoJiYoZz1oLnNldChhLGQsYykpIT09Yj9nOmFbY109ZDpoJiYiZ2V0ImluIGgmJihnPWguZ2V0KGEsYykpIT09bnVsbD9nOmFbY119LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnIudGVzdChhLm5vZGVOYW1lKXx8cy50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiSW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgsdj17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQ7cmV0dXJuIGYucHJvcChhLGMpPT09ITB8fChkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7Yj09PSExP2YucmVtb3ZlQXR0cihhLGMpOihkPWYucHJvcEZpeFtjXXx8YyxkIGluIGEmJihhW2RdPSEwKSxhLnNldEF0dHJpYnV0ZShjLGMudG9Mb3dlckNhc2UoKSkpO3JldHVybiBjfX0sZi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZXx8KHU9Zi52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGMpe3ZhciBkO2Q9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiZkLm5vZGVWYWx1ZSE9PSIiP2Qubm9kZVZhbHVlOmJ9LHNldDpmdW5jdGlvbihhLGIsZCl7dmFyIGU9YS5nZXRBdHRyaWJ1dGVOb2RlKGQpO2V8fChlPWMuY3JlYXRlQXR0cmlidXRlKGQpLGEuc2V0QXR0cmlidXRlTm9kZShlKSk7cmV0dXJuIGUubm9kZVZhbHVlPWIrIiJ9fSxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5hdHRySG9va3NbYl09Zi5leHRlbmQoZi5hdHRySG9va3NbYl0se3NldDpmdW5jdGlvbihhLGMpe2lmKGM9PT0iIil7YS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpO3JldHVybiBjfX19KX0pKSxmLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fGYuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7Zi5hdHRySG9va3NbY109Zi5leHRlbmQoZi5hdHRySG9va3NbY10se2dldDpmdW5jdGlvbihhKXt2YXIgZD1hLmdldEF0dHJpYnV0ZShjLDIpO3JldHVybiBkPT09bnVsbD9iOmR9fSl9KSxmLnN1cHBvcnQuc3R5bGV8fChmLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8Yn0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD0iIitifX0pLGYuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KGYucHJvcEhvb2tzLnNlbGVjdGVkPWYuZXh0ZW5kKGYucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIG51bGx9fSkpLGYuc3VwcG9ydC5jaGVja09ufHxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109Zi5leHRlbmQoZi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYoZi5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9Zi5pbkFycmF5KGYoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgdz0vXC4oLiopJC8seD0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2kseT0vXC4vZyx6PS8gL2csQT0vW15cd1xzLnxgXS9nLEI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShBLCJcXCQmIil9O2YuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2lmKGQ9PT0hMSlkPUM7ZWxzZSBpZighZClyZXR1cm47dmFyIGcsaDtkLmhhbmRsZXImJihnPWQsZD1nLmhhbmRsZXIpLGQuZ3VpZHx8KGQuZ3VpZD1mLmd1aWQrKyk7dmFyIGk9Zi5fZGF0YShhKTtpZighaSlyZXR1cm47dmFyIGo9aS5ldmVudHMsaz1pLmhhbmRsZTtqfHwoaS5ldmVudHM9aj17fSksa3x8KGkuaGFuZGxlPWs9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5oYW5kbGUuYXBwbHkoay5lbGVtLGFyZ3VtZW50cyk6Yn0pLGsuZWxlbT1hLGM9Yy5zcGxpdCgiICIpO3ZhciBsLG09MCxuO3doaWxlKGw9Y1ttKytdKXtoPWc/Zi5leHRlbmQoe30sZyk6e2hhbmRsZXI6ZCxkYXRhOmV9LGwuaW5kZXhPZigiLiIpPi0xPyhuPWwuc3BsaXQoIi4iKSxsPW4uc2hpZnQoKSxoLm5hbWVzcGFjZT1uLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIikpOihuPVtdLGgubmFtZXNwYWNlPSIiKSxoLnR5cGU9bCxoLmd1aWR8fChoLmd1aWQ9ZC5ndWlkKTt2YXIgbz1qW2xdLHA9Zi5ldmVudC5zcGVjaWFsW2xdfHx7fTtpZighbyl7bz1qW2xdPVtdO2lmKCFwLnNldHVwfHxwLnNldHVwLmNhbGwoYSxlLG4sayk9PT0hMSlhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKGwsaywhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK2wsayl9cC5hZGQmJihwLmFkZC5jYWxsKGEsaCksaC5oYW5kbGVyLmd1aWR8fChoLmhhbmRsZXIuZ3VpZD1kLmd1aWQpKSxvLnB1c2goaCksZi5ldmVudC5nbG9iYWxbbF09ITB9YT1udWxsfX0sZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihhLGMsZCxlKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2Q9PT0hMSYmKGQ9Qyk7dmFyIGcsaCxpLGosaz0wLGwsbSxuLG8scCxxLHIscz1mLmhhc0RhdGEoYSkmJmYuX2RhdGEoYSksdD1zJiZzLmV2ZW50cztpZighc3x8IXQpcmV0dXJuO2MmJmMudHlwZSYmKGQ9Yy5oYW5kbGVyLGM9Yy50eXBlKTtpZighY3x8dHlwZW9mIGM9PSJzdHJpbmciJiZjLmNoYXJBdCgwKT09PSIuIil7Yz1jfHwiIjtmb3IoaCBpbiB0KWYuZXZlbnQucmVtb3ZlKGEsaCtjKTtyZXR1cm59Yz1jLnNwbGl0KCIgIik7d2hpbGUoaD1jW2srK10pe3I9aCxxPW51bGwsbD1oLmluZGV4T2YoIi4iKTwwLG09W10sbHx8KG09aC5zcGxpdCgiLiIpLGg9bS5zaGlmdCgpLG49bmV3IFJlZ0V4cCgiKF58XFwuKSIrZi5tYXAobS5zbGljZSgwKS5zb3J0KCksQikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLHA9dFtoXTtpZighcCljb250aW51ZTtpZighZCl7Zm9yKGo9MDtqPHAubGVuZ3RoO2orKyl7cT1wW2pdO2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZi5ldmVudC5yZW1vdmUoYSxyLHEuaGFuZGxlcixqKSxwLnNwbGljZShqLS0sMSl9Y29udGludWV9bz1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2ZvcihqPWV8fDA7ajxwLmxlbmd0aDtqKyspe3E9cFtqXTtpZihkLmd1aWQ9PT1xLmd1aWQpe2lmKGx8fG4udGVzdChxLm5hbWVzcGFjZSkpZT09bnVsbCYmcC5zcGxpY2Uoai0tLDEpLG8ucmVtb3ZlJiZvLnJlbW92ZS5jYWxsKGEscSk7aWYoZSE9bnVsbClicmVha319aWYocC5sZW5ndGg9PT0wfHxlIT1udWxsJiZwLmxlbmd0aD09PTEpKCFvLnRlYXJkb3dufHxvLnRlYXJkb3duLmNhbGwoYSxtKT09PSExKSYmZi5yZW1vdmVFdmVudChhLGgscy5oYW5kbGUpLGc9bnVsbAosZGVsZXRlIHRbaF19aWYoZi5pc0VtcHR5T2JqZWN0KHQpKXt2YXIgdT1zLmhhbmRsZTt1JiYodS5lbGVtPW51bGwpLGRlbGV0ZSBzLmV2ZW50cyxkZWxldGUgcy5oYW5kbGUsZi5pc0VtcHR5T2JqZWN0KHMpJiZmLnJlbW92ZURhdGEoYSxiLCEwKX19fSxjdXN0b21FdmVudDp7Z2V0RGF0YTohMCxzZXREYXRhOiEwLGNoYW5nZURhdGE6ITB9LHRyaWdnZXI6ZnVuY3Rpb24oYyxkLGUsZyl7dmFyIGg9Yy50eXBlfHxjLGk9W10sajtoLmluZGV4T2YoIiEiKT49MCYmKGg9aC5zbGljZSgwLC0xKSxqPSEwKSxoLmluZGV4T2YoIi4iKT49MCYmKGk9aC5zcGxpdCgiLiIpLGg9aS5zaGlmdCgpLGkuc29ydCgpKTtpZighIWUmJiFmLmV2ZW50LmN1c3RvbUV2ZW50W2hdfHwhIWYuZXZlbnQuZ2xvYmFsW2hdKXtjPXR5cGVvZiBjPT0ib2JqZWN0Ij9jW2YuZXhwYW5kb10/YzpuZXcgZi5FdmVudChoLGMpOm5ldyBmLkV2ZW50KGgpLGMudHlwZT1oLGMuZXhjbHVzaXZlPWosYy5uYW1lc3BhY2U9aS5qb2luKCIuIiksYy5uYW1lc3BhY2VfcmU9bmV3IFJlZ0V4cCgiKF58XFwuKSIraS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTtpZihnfHwhZSljLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKTtpZighZSl7Zi5lYWNoKGYuY2FjaGUsZnVuY3Rpb24oKXt2YXIgYT1mLmV4cGFuZG8sYj10aGlzW2FdO2ImJmIuZXZlbnRzJiZiLmV2ZW50c1toXSYmZi5ldmVudC50cmlnZ2VyKGMsZCxiLmhhbmRsZS5lbGVtKX0pO3JldHVybn1pZihlLm5vZGVUeXBlPT09M3x8ZS5ub2RlVHlwZT09PTgpcmV0dXJuO2MucmVzdWx0PWIsYy50YXJnZXQ9ZSxkPWQhPW51bGw/Zi5tYWtlQXJyYXkoZCk6W10sZC51bnNoaWZ0KGMpO3ZhciBrPWUsbD1oLmluZGV4T2YoIjoiKTwwPyJvbiIraDoiIjtkb3t2YXIgbT1mLl9kYXRhKGssImhhbmRsZSIpO2MuY3VycmVudFRhcmdldD1rLG0mJm0uYXBwbHkoayxkKSxsJiZmLmFjY2VwdERhdGEoaykmJmtbbF0mJmtbbF0uYXBwbHkoayxkKT09PSExJiYoYy5yZXN1bHQ9ITEsYy5wcmV2ZW50RGVmYXVsdCgpKSxrPWsucGFyZW50Tm9kZXx8ay5vd25lckRvY3VtZW50fHxrPT09Yy50YXJnZXQub3duZXJEb2N1bWVudCYmYX13aGlsZShrJiYhYy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKTtpZighYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIG4sbz1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2lmKCghby5fZGVmYXVsdHx8by5fZGVmYXVsdC5jYWxsKGUub3duZXJEb2N1bWVudCxjKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikpJiZmLmFjY2VwdERhdGEoZSkpe3RyeXtsJiZlW2hdJiYobj1lW2xdLG4mJihlW2xdPW51bGwpLGYuZXZlbnQudHJpZ2dlcmVkPWgsZVtoXSgpKX1jYXRjaChwKXt9biYmKGVbbF09biksZi5ldmVudC50cmlnZ2VyZWQ9Yn19cmV0dXJuIGMucmVzdWx0fX0saGFuZGxlOmZ1bmN0aW9uKGMpe2M9Zi5ldmVudC5maXgoY3x8YS5ldmVudCk7dmFyIGQ9KChmLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10pLnNsaWNlKDApLGU9IWMuZXhjbHVzaXZlJiYhYy5uYW1lc3BhY2UsZz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7Z1swXT1jLGMuY3VycmVudFRhcmdldD10aGlzO2Zvcih2YXIgaD0wLGk9ZC5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZFtoXTtpZihlfHxjLm5hbWVzcGFjZV9yZS50ZXN0KGoubmFtZXNwYWNlKSl7Yy5oYW5kbGVyPWouaGFuZGxlcixjLmRhdGE9ai5kYXRhLGMuaGFuZGxlT2JqPWo7dmFyIGs9ai5oYW5kbGVyLmFwcGx5KHRoaXMsZyk7ayE9PWImJihjLnJlc3VsdD1rLGs9PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSk7aWYoYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gYy5yZXN1bHR9LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbGF5ZXJYIGxheWVyWSBtZXRhS2V5IG5ld1ZhbHVlIG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtmLmV4cGFuZG9dKXJldHVybiBhO3ZhciBkPWE7YT1mLkV2ZW50KGQpO2Zvcih2YXIgZT10aGlzLnByb3BzLmxlbmd0aCxnO2U7KWc9dGhpcy5wcm9wc1stLWVdLGFbZ109ZFtnXTthLnRhcmdldHx8KGEudGFyZ2V0PWEuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudCYmKGEucmVsYXRlZFRhcmdldD1hLmZyb21FbGVtZW50PT09YS50YXJnZXQ/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudCk7aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXt2YXIgaD1hLnRhcmdldC5vd25lckRvY3VtZW50fHxjLGk9aC5kb2N1bWVudEVsZW1lbnQsaj1oLmJvZHk7YS5wYWdlWD1hLmNsaWVudFgrKGkmJmkuc2Nyb2xsTGVmdHx8aiYmai5zY3JvbGxMZWZ0fHwwKS0oaSYmaS5jbGllbnRMZWZ0fHxqJiZqLmNsaWVudExlZnR8fDApLGEucGFnZVk9YS5jbGllbnRZKyhpJiZpLnNjcm9sbFRvcHx8aiYmai5zY3JvbGxUb3B8fDApLShpJiZpLmNsaWVudFRvcHx8aiYmai5jbGllbnRUb3B8fDApfWEud2hpY2g9PW51bGwmJihhLmNoYXJDb2RlIT1udWxsfHxhLmtleUNvZGUhPW51bGwpJiYoYS53aGljaD1hLmNoYXJDb2RlIT1udWxsP2EuY2hhckNvZGU6YS5rZXlDb2RlKSwhYS5tZXRhS2V5JiZhLmN0cmxLZXkmJihhLm1ldGFLZXk9YS5jdHJsS2V5KSwhYS53aGljaCYmYS5idXR0b24hPT1iJiYoYS53aGljaD1hLmJ1dHRvbiYxPzE6YS5idXR0b24mMj8zOmEuYnV0dG9uJjQ/MjowKTtyZXR1cm4gYX0sZ3VpZDoxZTgscHJveHk6Zi5wcm94eSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Zi5iaW5kUmVhZHksdGVhcmRvd246Zi5ub29wfSxsaXZlOnthZGQ6ZnVuY3Rpb24oYSl7Zi5ldmVudC5hZGQodGhpcyxNKGEub3JpZ1R5cGUsYS5zZWxlY3RvciksZi5leHRlbmQoe30sYSx7aGFuZGxlcjpMLGd1aWQ6YS5oYW5kbGVyLmd1aWR9KSl9LHJlbW92ZTpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLE0oYS5vcmlnVHlwZSxhLnNlbGVjdG9yKSxhKX19LGJlZm9yZXVubG9hZDp7c2V0dXA6ZnVuY3Rpb24oYSxiLGMpe2YuaXNXaW5kb3codGhpcykmJih0aGlzLm9uYmVmb3JldW5sb2FkPWMpfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIpe3RoaXMub25iZWZvcmV1bmxvYWQ9PT1iJiYodGhpcy5vbmJlZm9yZXVubG9hZD1udWxsKX19fX0sZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP0Q6Qyk6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1mLm5vdygpLHRoaXNbZi5leHBhbmRvXT0hMH0sZi5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9RDt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1EO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDshYXx8KGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1ELHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRlZDpDLGlzUHJvcGFnYXRpb25TdG9wcGVkOkMsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6Q307dmFyIEU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0LGM9ITEsZD1hLnR5cGU7YS50eXBlPWEuZGF0YSxiIT09dGhpcyYmKGImJihjPWYuY29udGFpbnModGhpcyxiKSksY3x8KGYuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9ZCkpfSxGPWZ1bmN0aW9uKGEpe2EudHlwZT1hLmRhdGEsZi5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5jdGlvbihhLGIpe2YuZXZlbnQuc3BlY2lhbFthXT17c2V0dXA6ZnVuY3Rpb24oYyl7Zi5ldmVudC5hZGQodGhpcyxiLGMmJmMuc2VsZWN0b3I/RjpFLGEpfSx0ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLGIsYSYmYS5zZWxlY3Rvcj9GOkUpfX19KSxmLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKGEsYil7aWYoIWYubm9kZU5hbWUodGhpcywiZm9ybSIpKWYuZXZlbnQuYWRkKHRoaXMsImNsaWNrLnNwZWNpYWxTdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9Zi5ub2RlTmFtZShiLCJpbnB1dCIpP2IudHlwZToiIjsoYz09PSJzdWJtaXQifHxjPT09ImltYWdlIikmJmYoYikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCYmSigic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KSxmLmV2ZW50LmFkZCh0aGlzLCJrZXlwcmVzcy5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPWYubm9kZU5hbWUoYiwiaW5wdXQiKT9iLnR5cGU6IiI7KGM9PT0idGV4dCJ8fGM9PT0icGFzc3dvcmQiKSYmZihiKS5jbG9zZXN0KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0xMyYmSigic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KTtlbHNlIHJldHVybiExfSx0ZWFyZG93bjpmdW5jdGlvbihhKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIpfX0pO2lmKCFmLnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIEcsSD1mdW5jdGlvbihhKXt2YXIgYj1mLm5vZGVOYW1lKGEsImlucHV0Iik/YS50eXBlOiIiLGM9YS52YWx1ZTtiPT09InJhZGlvInx8Yj09PSJjaGVja2JveCI/Yz1hLmNoZWNrZWQ6Yj09PSJzZWxlY3QtbXVsdGlwbGUiP2M9YS5zZWxlY3RlZEluZGV4Pi0xP2YubWFwKGEub3B0aW9ucyxmdW5jdGlvbihhKXtyZXR1cm4gYS5zZWxlY3RlZH0pLmpvaW4oIi0iKToiIjpmLm5vZGVOYW1lKGEsInNlbGVjdCIpJiYoYz1hLnNlbGVjdGVkSW5kZXgpO3JldHVybiBjfSxJPWZ1bmN0aW9uKGMpe3ZhciBkPWMudGFyZ2V0LGUsZztpZighIXgudGVzdChkLm5vZGVOYW1lKSYmIWQucmVhZE9ubHkpe2U9Zi5fZGF0YShkLCJfY2hhbmdlX2RhdGEiKSxnPUgoZCksKGMudHlwZSE9PSJmb2N1c291dCJ8fGQudHlwZSE9PSJyYWRpbyIpJiZmLl9kYXRhKGQsIl9jaGFuZ2VfZGF0YSIsZyk7aWYoZT09PWJ8fGc9PT1lKXJldHVybjtpZihlIT1udWxsfHxnKWMudHlwZT0iY2hhbmdlIixjLmxpdmVGaXJlZD1iLGYuZXZlbnQudHJpZ2dlcihjLGFyZ3VtZW50c1sxXSxkKX19O2YuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e2ZpbHRlcnM6e2ZvY3Vzb3V0OkksYmVmb3JlZGVhY3RpdmF0ZTpJLGNsaWNrOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9Zi5ub2RlTmFtZShiLCJpbnB1dCIpP2IudHlwZToiIjsoYz09PSJyYWRpbyJ8fGM9PT0iY2hlY2tib3gifHxmLm5vZGVOYW1lKGIsInNlbGVjdCIpKSYmSS5jYWxsKHRoaXMsYSl9LGtleWRvd246ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1mLm5vZGVOYW1lKGIsImlucHV0Iik/Yi50eXBlOiIiOyhhLmtleUNvZGU9PT0xMyYmIWYubm9kZU5hbWUoYiwidGV4dGFyZWEiKXx8YS5rZXlDb2RlPT09MzImJihjPT09ImNoZWNrYm94Inx8Yz09PSJyYWRpbyIpfHxjPT09InNlbGVjdC1tdWx0aXBsZSIpJiZJLmNhbGwodGhpcyxhKX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7Zi5fZGF0YShiLCJfY2hhbmdlX2RhdGEiLEgoYikpfX0sc2V0dXA6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnR5cGU9PT0iZmlsZSIpcmV0dXJuITE7Zm9yKHZhciBjIGluIEcpZi5ldmVudC5hZGQodGhpcyxjKyIuc3BlY2lhbENoYW5nZSIsR1tjXSk7cmV0dXJuIHgudGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVhcmRvd246ZnVuY3Rpb24oYSl7Zi5ldmVudC5yZW1vdmUodGhpcywiLnNwZWNpYWxDaGFuZ2UiKTtyZXR1cm4geC50ZXN0KHRoaXMubm9kZU5hbWUpfX0sRz1mLmV2ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnMsRy5mb2N1cz1HLmJlZm9yZWFjdGl2YXRlfWYuc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8Zi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGUoYSl7dmFyIGM9Zi5ldmVudC5maXgoYSk7Yy50eXBlPWIsYy5vcmlnaW5hbEV2ZW50PXt9LGYuZXZlbnQudHJpZ2dlcihjLG51bGwsYy50YXJnZXQpLGMuaXNEZWZhdWx0UHJldmVudGVkKCkmJmEucHJldmVudERlZmF1bHQoKX12YXIgZD0wO2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5lYWNoKFsiYmluZCIsIm9uZSJdLGZ1bmN0aW9uKGEsYyl7Zi5mbltjXT1mdW5jdGlvbihhLGQsZSl7dmFyIGc7aWYodHlwZW9mIGE9PSJvYmplY3QiKXtmb3IodmFyIGggaW4gYSl0aGlzW2NdKGgsZCxhW2hdLGUpO3JldHVybiB0aGlzfWlmKGFyZ3VtZW50cy5sZW5ndGg9PT0yfHxkPT09ITEpZT1kLGQ9YjtjPT09Im9uZSI/KGc9ZnVuY3Rpb24oYSl7Zih0aGlzKS51bmJpbmQoYSxnKTtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGcuZ3VpZD1lLmd1aWR8fGYuZ3VpZCsrKTpnPWU7aWYoYT09PSJ1bmxvYWQiJiZjIT09Im9uZSIpdGhpcy5vbmUoYSxkLGUpO2Vsc2UgZm9yKHZhciBpPTAsaj10aGlzLmxlbmd0aDtpPGo7aSsrKWYuZXZlbnQuYWRkKHRoaXNbaV0sYSxnLGQpO3JldHVybiB0aGlzfX0pLGYuZm4uZXh0ZW5kKHt1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09Im9iamVjdCImJiFhLnByZXZlbnREZWZhdWx0KWZvcih2YXIgYyBpbiBhKXRoaXMudW5iaW5kKGMsYVtjXSk7ZWxzZSBmb3IodmFyIGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspZi5ldmVudC5yZW1vdmUodGhpc1tkXSxhLGIpO3JldHVybiB0aGlzfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5saXZlKGIsYyxkLGEpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy51bmJpbmQoImxpdmUiKTp0aGlzLmRpZShiLG51bGwsYyxhKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVkO2YuZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQsZSsxKSxjLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGJbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfHwhMX07ZS5ndWlkPWM7d2hpbGUoZDxiLmxlbmd0aCliW2QrK10uZ3VpZD1jO3JldHVybiB0aGlzLmNsaWNrKGUpfSxob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KTt2YXIgSz17Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0Iixtb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In07Zi5lYWNoKFsibGl2ZSIsImRpZSJdLGZ1bmN0aW9uKGEsYyl7Zi5mbltjXT1mdW5jdGlvbihhLGQsZSxnKXt2YXIgaCxpPTAsaixrLGwsbT1nfHx0aGlzLnNlbGVjdG9yLG49Zz90aGlzOmYodGhpcy5jb250ZXh0KTtpZih0eXBlb2YgYT09Im9iamVjdCImJiFhLnByZXZlbnREZWZhdWx0KXtmb3IodmFyIG8gaW4gYSluW2NdKG8sZCxhW29dLG0pO3JldHVybiB0aGlzfWlmKGM9PT0iZGllIiYmIWEmJmcmJmcuY2hhckF0KDApPT09Ii4iKXtuLnVuYmluZChnKTtyZXR1cm4gdGhpc31pZihkPT09ITF8fGYuaXNGdW5jdGlvbihkKSllPWR8fEMsZD1iO2E9KGF8fCIiKS5zcGxpdCgiICIpO3doaWxlKChoPWFbaSsrXSkhPW51bGwpe2o9dy5leGVjKGgpLGs9IiIsaiYmKGs9alswXSxoPWgucmVwbGFjZSh3LCIiKSk7aWYoaD09PSJob3ZlciIpe2EucHVzaCgibW91c2VlbnRlciIraywibW91c2VsZWF2ZSIrayk7Y29udGludWV9bD1oLEtbaF0/KGEucHVzaChLW2hdK2spLGg9aCtrKTpoPShLW2hdfHxoKStrO2lmKGM9PT0ibGl2ZSIpZm9yKHZhciBwPTAscT1uLmxlbmd0aDtwPHE7cCsrKWYuZXZlbnQuYWRkKG5bcF0sImxpdmUuIitNKGgsbSkse2RhdGE6ZCxzZWxlY3RvcjptLGhhbmRsZXI6ZSxvcmlnVHlwZTpoLG9yaWdIYW5kbGVyOmUscHJlVHlwZTpsfSk7ZWxzZSBuLnVuYmluZCgibGl2ZS4iK00oaCxtKSxlKX1yZXR1cm4gdGhpc319KSxmLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEsYyl7Yz09bnVsbCYmKGM9YSxhPW51bGwpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5iaW5kKGIsYSxjKTp0aGlzLnRyaWdnZXIoYil9LGYuYXR0ckZuJiYoZi5hdHRyRm5bYl09ITApfSksZnVuY3Rpb24oKXtmdW5jdGlvbiB1KGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MCxoPWQubGVuZ3RoO2c8aDtnKyspe3ZhciBpPWRbZ107aWYoaSl7dmFyIGo9ITE7aT1pW2FdO3doaWxlKGkpe2lmKGkuc2l6Y2FjaGU9PT1jKXtqPWRbaS5zaXpzZXRdO2JyZWFrfWlmKGkubm9kZVR5cGU9PT0xKXtmfHwoaS5zaXpjYWNoZT1jLGkuc2l6c2V0PWcpO2lmKHR5cGVvZiBiIT0ic3RyaW5nIil7aWYoaT09PWIpe2o9ITA7YnJlYWt9fWVsc2UgaWYoay5maWx0ZXIoYixbaV0pLmxlbmd0aD4wKXtqPWk7YnJlYWt9fWk9aVthXX1kW2ddPWp9fX1mdW5jdGlvbiB0KGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MCxoPWQubGVuZ3RoO2c8aDtnKyspe3ZhciBpPWRbZ107aWYoaSl7dmFyIGo9ITE7aT1pW2FdO3doaWxlKGkpe2lmKGkuc2l6Y2FjaGU9PT1jKXtqPWRbaS5zaXpzZXRdO2JyZWFrfWkubm9kZVR5cGU9PT0xJiYhZiYmKGkuc2l6Y2FjaGU9YyxpLnNpenNldD1nKTtpZihpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iKXtqPWk7YnJlYWt9aT1pW2FdfWRbZ109an19fXZhciBhPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykrXCl8XFsoPzpcW1teXFtcXV0qXF18WyciXVteJyJdKlsnIl18W15cW1xdJyJdKykrXF18XFwufFteID4rfiwoXFtcXF0rKSt8Wz4rfl0pKFxzKixccyopPygoPzoufFxyfFxuKSopL2csZD0wLGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxnPSExLGg9ITAsaT0vXFwvZyxqPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2g9ITE7cmV0dXJuIDB9KTt2YXIgaz1mdW5jdGlvbihiLGQsZixnKXtmPWZ8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBmO3ZhciBpLGosbixvLHEscixzLHQsdT0hMCx3PWsuaXNYTUwoZCkseD1bXSx5PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh5KTtpZihpKXt5PWlbM10seC5wdXNoKGlbMV0pO2lmKGlbMl0pe289aVszXTticmVha319fXdoaWxlKGkpO2lmKHgubGVuZ3RoPjEmJm0uZXhlYyhiKSlpZih4Lmxlbmd0aD09PTImJmwucmVsYXRpdmVbeFswXV0paj12KHhbMF0reFsxXSxkKTtlbHNle2o9bC5yZWxhdGl2ZVt4WzBdXT9bZF06ayh4LnNoaWZ0KCksZCk7d2hpbGUoeC5sZW5ndGgpYj14LnNoaWZ0KCksbC5yZWxhdGl2ZVtiXSYmKGIrPXguc2hpZnQoKSksaj12KGIsail9ZWxzZXshZyYmeC5sZW5ndGg+MSYmZC5ub2RlVHlwZT09PTkmJiF3JiZsLm1hdGNoLklELnRlc3QoeFswXSkmJiFsLm1hdGNoLklELnRlc3QoeFt4Lmxlbmd0aC0xXSkmJihxPWsuZmluZCh4LnNoaWZ0KCksZCx3KSxkPXEuZXhwcj9rLmZpbHRlcihxLmV4cHIscS5zZXQpWzBdOnEuc2V0WzBdKTtpZihkKXtxPWc/e2V4cHI6eC5wb3AoKSxzZXQ6cChnKX06ay5maW5kKHgucG9wKCkseC5sZW5ndGg9PT0xJiYoeFswXT09PSJ+Inx8eFswXT09PSIrIikmJmQucGFyZW50Tm9kZT9kLnBhcmVudE5vZGU6ZCx3KSxqPXEuZXhwcj9rLmZpbHRlcihxLmV4cHIscS5zZXQpOnEuc2V0LHgubGVuZ3RoPjA/bj1wKGopOnU9ITE7d2hpbGUoeC5sZW5ndGgpcj14LnBvcCgpLHM9cixsLnJlbGF0aXZlW3JdP3M9eC5wb3AoKTpyPSIiLHM9PW51bGwmJihzPWQpLGwucmVsYXRpdmVbcl0obixzLHcpfWVsc2Ugbj14PVtdfW58fChuPWopLG58fGsuZXJyb3Iocnx8Yik7aWYoZS5jYWxsKG4pPT09IltvYmplY3QgQXJyYXldIilpZighdSlmLnB1c2guYXBwbHkoZixuKTtlbHNlIGlmKGQmJmQubm9kZVR5cGU9PT0xKWZvcih0PTA7blt0XSE9bnVsbDt0Kyspblt0XSYmKG5bdF09PT0hMHx8blt0XS5ub2RlVHlwZT09PTEmJmsuY29udGFpbnMoZCxuW3RdKSkmJmYucHVzaChqW3RdKTtlbHNlIGZvcih0PTA7blt0XSE9bnVsbDt0Kyspblt0XSYmblt0XS5ub2RlVHlwZT09PTEmJmYucHVzaChqW3RdKTtlbHNlIHAobixmKTtvJiYoayhvLGgsZixnKSxrLnVuaXF1ZVNvcnQoZikpO3JldHVybiBmfTtrLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7aWYocil7Zz1oLGEuc29ydChyKTtpZihnKWZvcih2YXIgYj0xO2I8YS5sZW5ndGg7YisrKWFbYl09PT1hW2ItMV0mJmEuc3BsaWNlKGItLSwxKX1yZXR1cm4gYX0say5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSxudWxsLG51bGwsYil9LGsubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYixudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0say5maW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZighYSlyZXR1cm5bXTtmb3IodmFyIGU9MCxmPWwub3JkZXIubGVuZ3RoO2U8ZjtlKyspe3ZhciBnLGg9bC5vcmRlcltlXTtpZihnPWwubGVmdE1hdGNoW2hdLmV4ZWMoYSkpe3ZhciBqPWdbMV07Zy5zcGxpY2UoMSwxKTtpZihqLnN1YnN0cihqLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGksIiIpLGQ9bC5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShsLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0say5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoPWEsaT1bXSxqPWMsbT1jJiZjWzBdJiZrLmlzWE1MKGNbMF0pO3doaWxlKGEmJmMubGVuZ3RoKXtmb3IodmFyIG4gaW4gbC5maWx0ZXIpaWYoKGY9bC5sZWZ0TWF0Y2hbbl0uZXhlYyhhKSkhPW51bGwmJmZbMl0pe3ZhciBvLHAscT1sLmZpbHRlcltuXSxyPWZbMV07Zz0hMSxmLnNwbGljZSgxLDEpO2lmKHIuc3Vic3RyKHIubGVuZ3RoLTEpPT09IlxcIiljb250aW51ZTtqPT09aSYmKGk9W10pO2lmKGwucHJlRmlsdGVyW25dKXtmPWwucHJlRmlsdGVyW25dKGYsaixkLGksZSxtKTtpZighZilnPW89ITA7ZWxzZSBpZihmPT09ITApY29udGludWV9aWYoZilmb3IodmFyIHM9MDsocD1qW3NdKSE9bnVsbDtzKyspaWYocCl7bz1xKHAsZixzLGopO3ZhciB0PWVeISFvO2QmJm8hPW51bGw/dD9nPSEwOmpbc109ITE6dCYmKGkucHVzaChwKSxnPSEwKX1pZihvIT09Yil7ZHx8KGo9aSksYT1hLnJlcGxhY2UobC5tYXRjaFtuXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1oKWlmKGc9PW51bGwpay5lcnJvcihhKTtlbHNlIGJyZWFrO2g9YX1yZXR1cm4gan0say5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2F9O3ZhciBsPWsuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVxzKig/OihcUz89KVxzKig/OihbJyJdKSguKj8pXDN8KCM/KD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKil8KXwpXHMqXF0vLFRBRzovXigoPzpbXHdcdTAwYzAtXHVGRkZGXCpcLV18XFwuKSspLyxDSElMRDovOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlwoXHMqKGV2ZW58b2RkfCg/OlsrXC1dP1xkK3woPzpbK1wtXT9cZCopP25ccyooPzpbK1wtXVxzKlxkKyk/KSlccypcKSk/LyxQT1M6LzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgoXGQqKVwpKT8oPz1bXlwtXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspKD86XCgoWyciXT8pKCg/OlwoW15cKV0rXCl8W15cKFwpXSopKylcMlwpKT8vfSxsZWZ0TWF0Y2g6e30sYXR0ck1hcDp7ImNsYXNzIjoiY2xhc3NOYW1lIiwiZm9yIjoiaHRtbEZvciJ9LGF0dHJIYW5kbGU6e2hyZWY6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ0eXBlIil9fSxyZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGI9PSJzdHJpbmciLGQ9YyYmIWoudGVzdChiKSxlPWMmJiFkO2QmJihiPWIudG9Mb3dlckNhc2UoKSk7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aCxoO2Y8ZztmKyspaWYoaD1hW2ZdKXt3aGlsZSgoaD1oLnByZXZpb3VzU2libGluZykmJmgubm9kZVR5cGUhPT0xKTthW2ZdPWV8fGgmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/aHx8ITE6aD09PWJ9ZSYmay5maWx0ZXIoYixhLCEwKX0sIj4iOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10eXBlb2YgYj09InN0cmluZyIsZT0wLGY9YS5sZW5ndGg7aWYoZCYmIWoudGVzdChiKSl7Yj1iLnRvTG93ZXJDYXNlKCk7Zm9yKDtlPGY7ZSsrKXtjPWFbZV07aWYoYyl7dmFyIGc9Yy5wYXJlbnROb2RlO2FbZV09Zy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9nOiExfX19ZWxzZXtmb3IoO2U8ZjtlKyspYz1hW2VdLGMmJihhW2VdPWQ/Yy5wYXJlbnROb2RlOmMucGFyZW50Tm9kZT09PWIpO2QmJmsuZmlsdGVyKGIsYSwhMCl9fSwiIjpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZj1kKyssZz11O3R5cGVvZiBiPT0ic3RyaW5nIiYmIWoudGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGU9YixnPXQpLGcoInBhcmVudE5vZGUiLGIsZixhLGUsYyl9LCJ+IjpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZj1kKyssZz11O3R5cGVvZiBiPT0ic3RyaW5nIiYmIWoudGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGU9YixnPXQpLGcoInByZXZpb3VzU2libGluZyIsYixmLGEsZSxjKX19LGZpbmQ6e0lEOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFjKXt2YXIgZD1iLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBkJiZkLnBhcmVudE5vZGU/W2RdOltdfX0sTkFNRTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlOYW1lIT0idW5kZWZpbmVkIil7dmFyIGM9W10sZD1iLmdldEVsZW1lbnRzQnlOYW1lKGFbMV0pO2Zvcih2YXIgZT0wLGY9ZC5sZW5ndGg7ZTxmO2UrKylkW2VdLmdldEF0dHJpYnV0ZSgibmFtZSIpPT09YVsxXSYmYy5wdXNoKGRbZV0pO3JldHVybiBjLmxlbmd0aD09PTA/bnVsbDpjfX0sVEFHOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiKXJldHVybiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihhLGIsYyxkLGUsZil7YT0iICIrYVsxXS5yZXBsYWNlKGksIiIpKyIgIjtpZihmKXJldHVybiBhO2Zvcih2YXIgZz0wLGg7KGg9YltnXSkhPW51bGw7ZysrKWgmJihlXihoLmNsYXNzTmFtZSYmKCIgIitoLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoL1tcdFxuXHJdL2csIiAiKS5pbmRleE9mKGEpPj0wKT9jfHxkLnB1c2goaCk6YyYmKGJbZ109ITEpKTtyZXR1cm4hMX0sSUQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV0ucmVwbGFjZShpLCIiKX0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMV0ucmVwbGFjZShpLCIiKS50b0xvd2VyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihhKXtpZihhWzFdPT09Im50aCIpe2FbMl18fGsuZXJyb3IoYVswXSksYVsyXT1hWzJdLnJlcGxhY2UoL15cK3xccyovZywiIik7dmFyIGI9LygtPykoXGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKGFbMl09PT0iZXZlbiImJiIybiJ8fGFbMl09PT0ib2RkIiYmIjJuKzEifHwhL1xELy50ZXN0KGFbMl0pJiYiMG4rIithWzJdfHxhWzJdKTthWzJdPWJbMV0rKGJbMl18fDEpLTAsYVszXT1iWzNdLTB9ZWxzZSBhWzJdJiZrLmVycm9yKGFbMF0pO2FbMF09ZCsrO3JldHVybiBhfSxBVFRSOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hWzFdPWFbMV0ucmVwbGFjZShpLCIiKTshZiYmbC5hdHRyTWFwW2ddJiYoYVsxXT1sLmF0dHJNYXBbZ10pLGFbNF09KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGksIiIpLGFbMl09PT0ifj0iJiYoYVs0XT0iICIrYVs0XSsiICIpO3JldHVybiBhfSxQU0VVRE86ZnVuY3Rpb24oYixjLGQsZSxmKXtpZihiWzFdPT09Im5vdCIpaWYoKGEuZXhlYyhiWzNdKXx8IiIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KGJbM10pKWJbM109ayhiWzNdLG51bGwsbnVsbCxjKTtlbHNle3ZhciBnPWsuZmlsdGVyKGJbM10sYyxkLCEwXmYpO2R8fGUucHVzaC5hcHBseShlLGcpO3JldHVybiExfWVsc2UgaWYobC5tYXRjaC5QT1MudGVzdChiWzBdKXx8bC5tYXRjaC5DSElMRC50ZXN0KGJbMF0pKXJldHVybiEwO3JldHVybiBifSxQT1M6ZnVuY3Rpb24oYSl7YS51bnNoaWZ0KCEwKTtyZXR1cm4gYX19LGZpbHRlcnM6e2VuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMSYmYS50eXBlIT09ImhpZGRlbiJ9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2hlY2tlZD09PSEwfSxzZWxlY3RlZDpmdW5jdGlvbihhKXthLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBhLnNlbGVjdGVkPT09ITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hIWEuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZmlyc3RDaGlsZH0saGFzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hIWsoY1szXSxhKS5sZW5ndGh9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4vaFxkL2kudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpLGM9YS50eXBlO3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYidGV4dCI9PT1jJiYoYj09PWN8fGI9PT1udWxsKX0scmFkaW86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJyYWRpbyI9PT1hLnR5cGV9LGNoZWNrYm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiY2hlY2tib3giPT09YS50eXBlfSxmaWxlOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiZmlsZSI9PT1hLnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicGFzc3dvcmQiPT09YS50eXBlfSxzdWJtaXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInN1Ym1pdCI9PT1hLnR5cGV9LGltYWdlOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYiaW1hZ2UiPT09YS50eXBlfSxyZXNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYicmVzZXQiPT09YS50eXBlfSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiPT09ImlucHV0IiYmImJ1dHRvbiI9PT1hLnR5cGV8fGI9PT0iYnV0dG9uIn0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KGEubm9kZU5hbWUpfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PWEub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50fX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PTB9LGxhc3Q6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGI9PT1kLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTB9LG9kZDpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0xfSxsdDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI8Y1szXS0wfSxndDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI+Y1szXS0wfSxudGg6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifSxlcTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9fSxmaWx0ZXI6e1BTRVVETzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iWzFdLGY9bC5maWx0ZXJzW2VdO2lmKGYpcmV0dXJuIGYoYSxjLGIsZCk7aWYoZT09PSJjb250YWlucyIpcmV0dXJuKGEudGV4dENvbnRlbnR8fGEuaW5uZXJUZXh0fHxrLmdldFRleHQoW2FdKXx8IiIpLmluZGV4T2YoYlszXSk+PTA7aWYoZT09PSJub3QiKXt2YXIgZz1iWzNdO2Zvcih2YXIgaD0wLGk9Zy5sZW5ndGg7aDxpO2grKylpZihnW2hdPT09YSlyZXR1cm4hMTtyZXR1cm4hMH1rLmVycm9yKGUpfSxDSElMRDpmdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1hO3N3aXRjaChjKXtjYXNlIm9ubHkiOmNhc2UiZmlyc3QiOndoaWxlKGQ9ZC5wcmV2aW91c1NpYmxpbmcpaWYoZC5ub2RlVHlwZT09PTEpcmV0dXJuITE7aWYoYz09PSJmaXJzdCIpcmV0dXJuITA7ZD1hO2Nhc2UibGFzdCI6d2hpbGUoZD1kLm5leHRTaWJsaW5nKWlmKGQubm9kZVR5cGU9PT0xKXJldHVybiExO3JldHVybiEwO2Nhc2UibnRoIjp2YXIgZT1iWzJdLGY9YlszXTtpZihlPT09MSYmZj09PTApcmV0dXJuITA7dmFyIGc9YlswXSxoPWEucGFyZW50Tm9kZTtpZihoJiYoaC5zaXpjYWNoZSE9PWd8fCFhLm5vZGVJbmRleCkpe3ZhciBpPTA7Zm9yKGQ9aC5maXJzdENoaWxkO2Q7ZD1kLm5leHRTaWJsaW5nKWQubm9kZVR5cGU9PT0xJiYoZC5ub2RlSW5kZXg9KytpKTtoLnNpemNhY2hlPWd9dmFyIGo9YS5ub2RlSW5kZXgtZjtyZXR1cm4gZT09PTA/aj09PTA6aiVlPT09MCYmai9lPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifSxDTEFTUzpmdW5jdGlvbihhLGIpe3JldHVybigiICIrKGEuY2xhc3NOYW1lfHxhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkrIiAiKS5pbmRleE9mKGIpPi0xfSxBVFRSOmZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPWwuYXR0ckhhbmRsZVtjXT9sLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOmY9PT0iPSI/ZT09PWc6Zj09PSIqPSI/ZS5pbmRleE9mKGcpPj0wOmY9PT0ifj0iPygiICIrZSsiICIpLmluZGV4T2YoZyk+PTA6Zz9mPT09IiE9Ij9lIT09ZzpmPT09Il49Ij9lLmluZGV4T2YoZyk9PT0wOmY9PT0iJD0iP2Uuc3Vic3RyKGUubGVuZ3RoLWcubGVuZ3RoKT09PWc6Zj09PSJ8PSI/ZT09PWd8fGUuc3Vic3RyKDAsZy5sZW5ndGgrMSk9PT1nKyItIjohMTplJiZkIT09ITF9LFBPUzpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iWzJdLGY9bC5zZXRGaWx0ZXJzW2VdO2lmKGYpcmV0dXJuIGYoYSxjLGIsZCl9fX0sbT1sLm1hdGNoLlBPUyxuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIlxcIisoYi0wKzEpfTtmb3IodmFyIG8gaW4gbC5tYXRjaClsLm1hdGNoW29dPW5ldyBSZWdFeHAobC5tYXRjaFtvXS5zb3VyY2UrLyg/IVteXFtdKlxdKSg/IVteXChdKlwpKS8uc291cmNlKSxsLmxlZnRNYXRjaFtvXT1uZXcgUmVnRXhwKC8oXig/Oi58XHJ8XG4pKj8pLy5zb3VyY2UrbC5tYXRjaFtvXS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9nLG4pKTt2YXIgcD1mdW5jdGlvbihhLGIpe2E9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKTtpZihiKXtiLnB1c2guYXBwbHkoYixhKTtyZXR1cm4gYn1yZXR1cm4gYX07dHJ5e0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGMuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsMClbMF0ubm9kZVR5cGV9Y2F0Y2gocSl7cD1mdW5jdGlvbihhLGIpe3ZhciBjPTAsZD1ifHxbXTtpZihlLmNhbGwoYSk9PT0iW29iamVjdCBBcnJheV0iKUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGQsYSk7ZWxzZSBpZih0eXBlb2YgYS5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1hLmxlbmd0aDtjPGY7YysrKWQucHVzaChhW2NdKTtlbHNlIGZvcig7YVtjXTtjKyspZC5wdXNoKGFbY10pO3JldHVybiBkfX12YXIgcixzO2MuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP3I9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7Zz0hMDtyZXR1cm4gMH1pZighYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbnx8IWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24pcmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/LTE6MTtyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSY0Py0xOjF9OihyPWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2c9ITA7cmV0dXJuIDB9aWYoYS5zb3VyY2VJbmRleCYmYi5zb3VyY2VJbmRleClyZXR1cm4gYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O3ZhciBjLGQsZT1bXSxmPVtdLGg9YS5wYXJlbnROb2RlLGk9Yi5wYXJlbnROb2RlLGo9aDtpZihoPT09aSlyZXR1cm4gcyhhLGIpO2lmKCFoKXJldHVybi0xO2lmKCFpKXJldHVybiAxO3doaWxlKGopZS51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2o9aTt3aGlsZShqKWYudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtjPWUubGVuZ3RoLGQ9Zi5sZW5ndGg7Zm9yKHZhciBrPTA7azxjJiZrPGQ7aysrKWlmKGVba10hPT1mW2tdKXJldHVybiBzKGVba10sZltrXSk7cmV0dXJuIGs9PT1jP3MoYSxmW2tdLC0xKTpzKGVba10sYiwxKX0scz1mdW5jdGlvbihhLGIsYyl7aWYoYT09PWIpcmV0dXJuIGM7dmFyIGQ9YS5uZXh0U2libGluZzt3aGlsZShkKXtpZihkPT09YilyZXR1cm4tMTtkPWQubmV4dFNpYmxpbmd9cmV0dXJuIDF9KSxrLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYztmb3IodmFyIGQ9MDthW2RdO2QrKyljPWFbZF0sYy5ub2RlVHlwZT09PTN8fGMubm9kZVR5cGU9PT00P2IrPWMubm9kZVZhbHVlOmMubm9kZVR5cGUhPT04JiYoYis9ay5nZXRUZXh0KGMuY2hpbGROb2RlcykpO3JldHVybiBifSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKSxlPWMuZG9jdW1lbnRFbGVtZW50O2EuaW5uZXJIVE1MPSI8YSBuYW1lPSciK2QrIicvPiIsZS5pbnNlcnRCZWZvcmUoYSxlLmZpcnN0Q2hpbGQpLGMuZ2V0RWxlbWVudEJ5SWQoZCkmJihsLmZpbmQuSUQ9ZnVuY3Rpb24oYSxjLGQpe2lmKHR5cGVvZiBjLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWQpe3ZhciBlPWMuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGU/ZS5pZD09PWFbMV18fHR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09YVsxXT9bZV06YjpbXX19LGwuZmlsdGVyLklEPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9InVuZGVmaW5lZCImJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmMmJmMubm9kZVZhbHVlPT09Yn0pLGUucmVtb3ZlQ2hpbGQoYSksZT1hPW51bGx9KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuYXBwZW5kQ2hpbGQoYy5jcmVhdGVDb21tZW50KCIiKSksYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aD4wJiYobC5maW5kLlRBRz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSk7aWYoYVsxXT09PSIqIil7dmFyIGQ9W107Zm9yKHZhciBlPTA7Y1tlXTtlKyspY1tlXS5ub2RlVHlwZT09PTEmJmQucHVzaChjW2VdKTtjPWR9cmV0dXJuIGN9KSxhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsYS5maXJzdENoaWxkJiZ0eXBlb2YgYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSE9InVuZGVmaW5lZCImJmEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSE9PSIjIiYmKGwuYXR0ckhhbmRsZS5ocmVmPWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIsMil9KSxhPW51bGx9KCksYy5xdWVyeVNlbGVjdG9yQWxsJiZmdW5jdGlvbigpe3ZhciBhPWssYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9Il9fc2l6emxlX18iO2IuaW5uZXJIVE1MPSI8cCBjbGFzcz0nVEVTVCc+PC9wPiI7aWYoIWIucXVlcnlTZWxlY3RvckFsbHx8Yi5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aCE9PTApe2s9ZnVuY3Rpb24oYixlLGYsZyl7ZT1lfHxjO2lmKCFnJiYhay5pc1hNTChlKSl7dmFyIGg9L14oXHcrJCl8XlwuKFtcd1wtXSskKXxeIyhbXHdcLV0rJCkvLmV4ZWMoYik7aWYoaCYmKGUubm9kZVR5cGU9PT0xfHxlLm5vZGVUeXBlPT09OSkpe2lmKGhbMV0pcmV0dXJuIHAoZS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKSxmKTtpZihoWzJdJiZsLmZpbmQuQ0xBU1MmJmUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gcChlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaFsyXSksZil9aWYoZS5ub2RlVHlwZT09PTkpe2lmKGI9PT0iYm9keSImJmUuYm9keSlyZXR1cm4gcChbZS5ib2R5XSxmKTtpZihoJiZoWzNdKXt2YXIgaT1lLmdldEVsZW1lbnRCeUlkKGhbM10pO2lmKCFpfHwhaS5wYXJlbnROb2RlKXJldHVybiBwKFtdLGYpO2lmKGkuaWQ9PT1oWzNdKXJldHVybiBwKFtpXSxmKX10cnl7cmV0dXJuIHAoZS5xdWVyeVNlbGVjdG9yQWxsKGIpLGYpfWNhdGNoKGope319ZWxzZSBpZihlLm5vZGVUeXBlPT09MSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09Im9iamVjdCIpe3ZhciBtPWUsbj1lLmdldEF0dHJpYnV0ZSgiaWQiKSxvPW58fGQscT1lLnBhcmVudE5vZGUscj0vXlxzKlsrfl0vLnRlc3QoYik7bj9vPW8ucmVwbGFjZSgvJy9nLCJcXCQmIik6ZS5zZXRBdHRyaWJ1dGUoImlkIixvKSxyJiZxJiYoZT1lLnBhcmVudE5vZGUpO3RyeXtpZighcnx8cSlyZXR1cm4gcChlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZD0nIitvKyInXSAiK2IpLGYpfWNhdGNoKHMpe31maW5hbGx5e258fG0ucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGEoYixlLGYsZyl9O2Zvcih2YXIgZSBpbiBhKWtbZV09YVtlXTtiPW51bGx9fSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5kb2N1bWVudEVsZW1lbnQsYj1hLm1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxhLm1zTWF0Y2hlc1NlbGVjdG9yO2lmKGIpe3ZhciBkPSFiLmNhbGwoYy5jcmVhdGVFbGVtZW50KCJkaXYiKSwiZGl2IiksZT0hMTt0cnl7Yi5jYWxsKGMuZG9jdW1lbnRFbGVtZW50LCJbdGVzdCE9JyddOnNpenpsZSIpfWNhdGNoKGYpe2U9ITB9ay5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxjKXtjPWMucmVwbGFjZSgvXD1ccyooW14nIlxdXSopXHMqXF0vZywiPSckMSddIik7aWYoIWsuaXNYTUwoYSkpdHJ5e2lmKGV8fCFsLm1hdGNoLlBTRVVETy50ZXN0KGMpJiYhLyE9Ly50ZXN0KGMpKXt2YXIgZj1iLmNhbGwoYSxjKTtpZihmfHwhZHx8YS5kb2N1bWVudCYmYS5kb2N1bWVudC5ub2RlVHlwZSE9PTExKXJldHVybiBmfX1jYXRjaChnKXt9cmV0dXJuIGsoYyxudWxsLG51bGwsW2FdKS5sZW5ndGg+MH19fSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKCEhYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGghPT0wKXthLmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKGEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpcmV0dXJuO2wub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1MiKSxsLmZpbmQuQ0xBU1M9ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPSJ1bmRlZmluZWQiJiYhYylyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGFbMV0pfSxhPW51bGx9fSgpLGMuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zP2suY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSE9PWImJihhLmNvbnRhaW5zP2EuY29udGFpbnMoYik6ITApfTpjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9rLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNil9OmsuY29udGFpbnM9ZnVuY3Rpb24oKXtyZXR1cm4hMX0say5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj0oYT9hLm93bmVyRG9jdW1lbnR8fGE6MCkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiP2Iubm9kZU5hbWUhPT0iSFRNTCI6ITF9O3ZhciB2PWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPSIiLGY9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShjPWwubWF0Y2guUFNFVURPLmV4ZWMoYSkpZSs9Y1swXSxhPWEucmVwbGFjZShsLm1hdGNoLlBTRVVETywiIik7YT1sLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBnPTAsaD1mLmxlbmd0aDtnPGg7ZysrKWsoYSxmW2ddLGQpO3JldHVybiBrLmZpbHRlcihlLGQpfTtmLmZpbmQ9ayxmLmV4cHI9ay5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9ay51bmlxdWVTb3J0LGYudGV4dD1rLmdldFRleHQsZi5pc1hNTERvYz1rLmlzWE1MLGYuY29udGFpbnM9ay5jb250YWluc30oKTt2YXIgTj0vVW50aWwkLyxPPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLFA9LywvLFE9L14uW146I1xbXC4sXSokLyxSPUFycmF5LnByb3RvdHlwZS5zbGljZSxTPWYuZXhwci5tYXRjaC5QT1MsVD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVih0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFYodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP2YuZmlsdGVyKGEsdGhpcykubGVuZ3RoPjA6dGhpcy5maWx0ZXIoYSkubGVuZ3RoPjApfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZCxlLGc9dGhpc1swXTtpZihmLmlzQXJyYXkoYSkpe3ZhciBoLGksaj17fSxrPTE7aWYoZyYmYS5sZW5ndGgpe2ZvcihkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWk9YVtkXSxqW2ldfHwoaltpXT1TLnRlc3QoaSk/ZihpLGJ8fHRoaXMuY29udGV4dCk6aSk7d2hpbGUoZyYmZy5vd25lckRvY3VtZW50JiZnIT09Yil7Zm9yKGkgaW4gailoPWpbaV0sKGguanF1ZXJ5P2guaW5kZXgoZyk+LTE6ZihnKS5pcyhoKSkmJmMucHVzaCh7c2VsZWN0b3I6aSxlbGVtOmcsbGV2ZWw6a30pO2c9Zy5wYXJlbnROb2RlLGsrK319cmV0dXJuIGN9dmFyIGw9Uy50ZXN0KGEpfHx0eXBlb2YgYSE9InN0cmluZyI/ZihhLGJ8fHRoaXMuY29udGV4dCk6MDtmb3IoZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKyl7Zz10aGlzW2RdO3doaWxlKGcpe2lmKGw/bC5pbmRleChnKT4tMTpmLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGcsYSkpe2MucHVzaChnKTticmVha31nPWcucGFyZW50Tm9kZTtpZighZ3x8IWcub3duZXJEb2N1bWVudHx8Zz09PWJ8fGcubm9kZVR5cGU9PT0xMSlicmVha319Yz1jLmxlbmd0aD4xP2YudW5pcXVlKGMpOmM7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMsImNsb3Nlc3QiLGEpfSxpbmRleDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMucHJldkFsbCgpLmxlbmd0aDotMTtpZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGYuaW5BcnJheSh0aGlzWzBdLGYoYSkpO3JldHVybiBmLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09InN0cmluZyI/ZihhLGIpOmYubWFrZUFycmF5KGEmJmEubm9kZVR5cGU/W2FdOmEpLGQ9Zi5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhVKGNbMF0pfHxVKGRbMF0pP2Q6Zi51bmlxdWUoZCkpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9fSksZi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBmLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpmLm1ha2VBcnJheShhLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtmLmZuW2FdPWZ1bmN0aW9uKGMsZCl7dmFyIGU9Zi5tYXAodGhpcyxiLGMpLGc9Ui5jYWxsKGFyZ3VtZW50cyk7Ti50ZXN0KGEpfHwoZD1jKSxkJiZ0eXBlb2YgZD09InN0cmluZyImJihlPWYuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5ndGg+MSYmIVRbYV0/Zi51bmlxdWUoZSk6ZSwodGhpcy5sZW5ndGg+MXx8UC50ZXN0KGQpKSYmTy50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUsYSxnLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3RoPT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxnPWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KTt2YXIgVz0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLFg9L15ccysvLFk9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxaPS88KFtcdzpdKykvLCQ9Lzx0Ym9keS9pLF89Lzx8JiM/XHcrOy8sYmE9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxiYj0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxiYz0vXC8oamF2YXxlY21hKXNjcmlwdC9pLGJkPS9eXHMqPCEoPzpcW0NEQVRBXFt8XC1cLSkvLGJlPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2JlLm9wdGdyb3VwPWJlLm9wdGlvbixiZS50Ym9keT1iZS50Zm9vdD1iZS5jb2xncm91cD1iZS5jYXB0aW9uPWJlLnRoZWFkLGJlLnRoPWJlLnRkLGYuc3VwcG9ydC5odG1sU2VyaWFsaXplfHwoYmUuX2RlZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il0pLGYuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Yy50ZXh0KGEuY2FsbCh0aGlzLGIsYy50ZXh0KCkpKX0pO2lmKHR5cGVvZiBhIT0ib2JqZWN0IiYmYSE9PWIpcmV0dXJuIHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8YykuY3JlYXRlVGV4dE5vZGUoYSkpO3JldHVybiBmLnRleHQodGhpcyl9LHdyYXBBbGw6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPWYoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTEpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlzKS53cmFwQWxsKGEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtmLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8Zih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmluc2VydEJlZm9yZShhLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT1mKGFyZ3VtZW50c1swXSk7YS5wdXNoLmFwcGx5KGEsdGhpcy50b0FycmF5KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhhLCJiZWZvcmUiLGFyZ3VtZW50cyl9fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsZihhcmd1bWVudHNbMF0pLnRvQXJyYXkoKSk7cmV0dXJuIGF9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkOyhkPXRoaXNbY10pIT1udWxsO2MrKylpZighYXx8Zi5maWx0ZXIoYSxbZF0pLmxlbmd0aCkhYiYmZC5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YShkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGYuY2xlYW5EYXRhKFtkXSkpLGQucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI7KGI9dGhpc1thXSkhPW51bGw7YSsrKXtiLm5vZGVUeXBlPT09MSYmZi5jbGVhbkRhdGEoYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTt3aGlsZShiLmZpcnN0Q2hpbGQpYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe2E9YT09bnVsbD8hMTphLGI9Yj09bnVsbD9hOmI7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGYuY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7aWYoYT09PWIpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ubm9kZVR5cGU9PT0xP3RoaXNbMF0uaW5uZXJIVE1MLnJlcGxhY2UoVywiIik6bnVsbDtpZih0eXBlb2YgYT09InN0cmluZyImJiFiYS50ZXN0KGEpJiYoZi5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlfHwhWC50ZXN0KGEpKSYmIWJlWyhaLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPWEucmVwbGFjZShZLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChlKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1lbHNlIGYuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLmh0bWwoYS5jYWxsKHRoaXMsYixjLmh0bWwoKSkpfSk6dGhpcy5lbXB0eSgpLmFwcGVuZChhKTtyZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pO3R5cGVvZiBhIT0ic3RyaW5nIiYmKGE9ZihhKS5kZXRhY2goKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7Zih0aGlzKS5yZW1vdmUoKSxiP2YoYikuYmVmb3JlKGEpOmYoYykuYXBwZW5kKGEpfSl9cmV0dXJuIHRoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKGYoZi5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXN9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaSxqPWFbMF0saz1bXTtpZighZi5zdXBwb3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2Ygaj09InN0cmluZyImJmJiLnRlc3QoaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZG9tTWFuaXAoYSxjLGQsITApfSk7aWYoZi5pc0Z1bmN0aW9uKGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9Zih0aGlzKTthWzBdPWouY2FsbCh0aGlzLGUsYz9nLmh0bWwoKTpiKSxnLmRvbU1hbmlwKGEsYyxkKX0pO2lmKHRoaXNbMF0pe2k9aiYmai5wYXJlbnROb2RlLGYuc3VwcG9ydC5wYXJlbnROb2RlJiZpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD9lPXtmcmFnbWVudDppfTplPWYuYnVpbGRGcmFnbWVudChhLHRoaXMsayksaD1lLmZyYWdtZW50LGguY2hpbGROb2Rlcy5sZW5ndGg9PT0xP2c9aD1oLmZpcnN0Q2hpbGQ6Zz1oLmZpcnN0Q2hpbGQ7aWYoZyl7Yz1jJiZmLm5vZGVOYW1lKGcsInRyIik7Zm9yKHZhciBsPTAsbT10aGlzLmxlbmd0aCxuPW0tMTtsPG07bCsrKWQuY2FsbChjP2JmKHRoaXNbbF0sZyk6dGhpc1tsXSxlLmNhY2hlYWJsZXx8bT4xJiZsPG4/Zi5jbG9uZShoLCEwLCEwKTpoKX1rLmxlbmd0aCYmZi5lYWNoKGssYmwpfXJldHVybiB0aGlzfX0pLGYuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZyxoLGk7YiYmYlswXSYmKGk9YlswXS5vd25lckRvY3VtZW50fHxiWzBdKSxpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnR8fChpPWMpLGEubGVuZ3RoPT09MSYmdHlwZW9mIGFbMF09PSJzdHJpbmciJiZhWzBdLmxlbmd0aDw1MTImJmk9PT1jJiZhWzBdLmNoYXJBdCgwKT09PSI8IiYmIWJhLnRlc3QoYVswXSkmJihmLnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJiLnRlc3QoYVswXSkpJiYoZz0hMCxoPWYuZnJhZ21lbnRzW2FbMF1dLGgmJmghPT0xJiYoZT1oKSksZXx8KGU9aS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZi5jbGVhbihhLGksZSxkKSksZyYmKGYuZnJhZ21lbnRzW2FbMF1dPWg/ZToxKTsKcmV0dXJue2ZyYWdtZW50OmUsY2FjaGVhYmxlOmd9fSxmLmZyYWdtZW50cz17fSxmLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyl7dmFyIGQ9W10sZT1mKGMpLGc9dGhpcy5sZW5ndGg9PT0xJiZ0aGlzWzBdLnBhcmVudE5vZGU7aWYoZyYmZy5ub2RlVHlwZT09PTExJiZnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xKXtlW2JdKHRoaXNbMF0pO3JldHVybiB0aGlzfWZvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9KGg+MD90aGlzLmNsb25lKCEwKTp0aGlzKS5nZXQoKTtmKGVbaF0pW2JdKGopLGQ9ZC5jb25jYXQoail9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQsYSxlLnNlbGVjdG9yKX19KSxmLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuY2xvbmVOb2RlKCEwKSxlLGcsaDtpZigoIWYuc3VwcG9ydC5ub0Nsb25lRXZlbnR8fCFmLnN1cHBvcnQubm9DbG9uZUNoZWNrZWQpJiYoYS5ub2RlVHlwZT09PTF8fGEubm9kZVR5cGU9PT0xMSkmJiFmLmlzWE1MRG9jKGEpKXtiaChhLGQpLGU9YmkoYSksZz1iaShkKTtmb3IoaD0wO2VbaF07KytoKWdbaF0mJmJoKGVbaF0sZ1toXSl9aWYoYil7YmcoYSxkKTtpZihjKXtlPWJpKGEpLGc9YmkoZCk7Zm9yKGg9MDtlW2hdOysraCliZyhlW2hdLGdbaF0pfX1lPWc9bnVsbDtyZXR1cm4gZH0sY2xlYW46ZnVuY3Rpb24oYSxiLGQsZSl7dmFyIGc7Yj1ifHxjLHR5cGVvZiBiLmNyZWF0ZUVsZW1lbnQ9PSJ1bmRlZmluZWQiJiYoYj1iLm93bmVyRG9jdW1lbnR8fGJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8Yyk7dmFyIGg9W10saTtmb3IodmFyIGo9MCxrOyhrPWFbal0pIT1udWxsO2orKyl7dHlwZW9mIGs9PSJudW1iZXIiJiYoays9IiIpO2lmKCFrKWNvbnRpbnVlO2lmKHR5cGVvZiBrPT0ic3RyaW5nIilpZighXy50ZXN0KGspKWs9Yi5jcmVhdGVUZXh0Tm9kZShrKTtlbHNle2s9ay5yZXBsYWNlKFksIjwkMT48LyQyPiIpO3ZhciBsPShaLmV4ZWMoayl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1iZVtsXXx8YmUuX2RlZmF1bHQsbj1tWzBdLG89Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmlubmVySFRNTD1tWzFdK2srbVsyXTt3aGlsZShuLS0pbz1vLmxhc3RDaGlsZDtpZighZi5zdXBwb3J0LnRib2R5KXt2YXIgcD0kLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmWC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKFguZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJrKGtbaV0pO2Vsc2UgYmsoayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiYy50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5leHBhbmRvLGc9Zi5ldmVudC5zcGVjaWFsLGg9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBpPTAsajsoaj1hW2ldKSE9bnVsbDtpKyspe2lmKGoubm9kZU5hbWUmJmYubm9EYXRhW2oubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1qW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdJiZkW2NdW2VdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGsgaW4gYi5ldmVudHMpZ1trXT9mLmV2ZW50LnJlbW92ZShqLGspOmYucmVtb3ZlRXZlbnQoaixrLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9aD9kZWxldGUgaltmLmV4cGFuZG9dOmoucmVtb3ZlQXR0cmlidXRlJiZqLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJtPS9hbHBoYVwoW14pXSpcKS9pLGJuPS9vcGFjaXR5PShbXildKikvLGJvPS8oW0EtWl18Xm1zKS9nLGJwPS9eLT9cZCsoPzpweCk/JC9pLGJxPS9eLT9cZC8sYnI9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnM9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ0PVsiTGVmdCIsIlJpZ2h0Il0sYnU9WyJUb3AiLCJCb3R0b20iXSxidixidyxieDtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YnYoYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1ici5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYnYpcmV0dXJuIGJ2KGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBieShhLGIsZCk7Zi5zd2FwKGEsYnMsZnVuY3Rpb24oKXtlPWJ5KGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJwLnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBibi50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc05hTihiKT8iIjoiYWxwaGEob3BhY2l0eT0iK2IqMTAwKyIpIixnPWQmJmQuZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy56b29tPTE7aWYoYj49MSYmZi50cmltKGcucmVwbGFjZShibSwiIikpPT09IiIpe2MucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKTtpZihkJiYhZC5maWx0ZXIpcmV0dXJufWMuZmlsdGVyPWJtLnRlc3QoZyk/Zy5yZXBsYWNlKGJtLGUpOmcrIiAiK2V9fSksZihmdW5jdGlvbigpe2Yuc3VwcG9ydC5yZWxpYWJsZU1hcmdpblJpZ2h0fHwoZi5jc3NIb29rcy5tYXJnaW5SaWdodD17Z2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM7Zi5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LGZ1bmN0aW9uKCl7Yj9jPWJ2KGEsIm1hcmdpbi1yaWdodCIsIm1hcmdpblJpZ2h0Iik6Yz1hLnN0eWxlLm1hcmdpblJpZ2h0fSk7cmV0dXJuIGN9fSl9KSxjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihidz1mdW5jdGlvbihhLGMpe3ZhciBkLGUsZztjPWMucmVwbGFjZShibywiLSQxIikudG9Mb3dlckNhc2UoKTtpZighKGU9YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSlyZXR1cm4gYjtpZihnPWUuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKWQ9Zy5nZXRQcm9wZXJ0eVZhbHVlKGMpLGQ9PT0iIiYmIWYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSYmKGQ9Zi5zdHlsZShhLGMpKTtyZXR1cm4gZH0pLGMuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKGJ4PWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1hLmN1cnJlbnRTdHlsZSYmYS5jdXJyZW50U3R5bGVbYl0sZT1hLnJ1bnRpbWVTdHlsZSYmYS5ydW50aW1lU3R5bGVbYl0sZj1hLnN0eWxlOyFicC50ZXN0KGQpJiZicS50ZXN0KGQpJiYoYz1mLmxlZnQsZSYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZi5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmR8fDAsZD1mLnBpeGVsTGVmdCsicHgiLGYubGVmdD1jLGUmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWUpKTtyZXR1cm4gZD09PSIiPyJhdXRvIjpkfSksYnY9Ynd8fGJ4LGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYno9LyUyMC9nLGJBPS9cW1xdJC8sYkI9L1xyP1xuL2csYkM9LyMuKiQvLGJEPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYkU9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJGPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYkc9L14oPzpHRVR8SEVBRCkkLyxiSD0vXlwvXC8vLGJJPS9cPy8sYko9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYks9L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYkw9L1xzKy8sYk09LyhbPyZdKV89W14mXSovLGJOPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiTz1mLmZuLmxvYWQsYlA9e30sYlE9e30sYlIsYlMsYlQ9WyIqLyJdK1siKiJdO3RyeXtiUj1lLmhyZWZ9Y2F0Y2goYlUpe2JSPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJSLmhyZWY9IiIsYlI9YlIuaHJlZn1iUz1iTi5leGVjKGJSLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiTylyZXR1cm4gYk8uYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYkosIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJLLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJFLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJCLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiQiwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmJpbmQoYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2JYKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksYlgoYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlIsaXNMb2NhbDpiRi50ZXN0KGJTWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6YlR9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6YlYoYlApLGFqYXhUcmFuc3BvcnQ6YlYoYlEpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2JaKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWIkKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5yZXNvbHZlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5fRGVmZXJyZWQoKSxqPWQuc3RhdHVzQ29kZXx8e30sayxsPXt9LG09e30sbixvLHAscSxyLHM9MCx0LHUsdj17cmVhZHlTdGF0ZTowLHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXtpZighcyl7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO2E9bVtjXT1tW2NdfHxhLGxbYV09Yn1yZXR1cm4gdGhpc30sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHM9PT0yP246bnVsbH0sZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGM7aWYocz09PTIpe2lmKCFvKXtvPXt9O3doaWxlKGM9YkQuZXhlYyhuKSlvW2NbMV0udG9Mb3dlckNhc2UoKV09Y1syXX1jPW9bYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gYz09PWI/bnVsbDpjfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3N8fChkLm1pbWVUeXBlPWEpO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXthPWF8fCJhYm9ydCIscCYmcC5hYm9ydChhKSx3KDAsYSk7cmV0dXJuIHRoaXN9fTtoLnByb21pc2Uodiksdi5zdWNjZXNzPXYuZG9uZSx2LmVycm9yPXYuZmFpbCx2LmNvbXBsZXRlPWkuZG9uZSx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJDLCIiKS5yZXBsYWNlKGJILGJTWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYkwpLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJOLmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iU1sxXSYmclsyXT09YlNbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiU1szXXx8KGJTWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGJXKGJQLGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJHLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJJLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYk0sIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYkkudGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiVCsiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1iVyhiUSxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7czwyP3coLTEseik6Zi5lcnJvcih6KX19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpYlkoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYnosIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgYl89Zi5ub3coKSxjYT0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitiXysrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjYS50ZXN0KGIudXJsKXx8ZSYmY2EudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2EsbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNhLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2I9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNkKWNkW2FdKDAsMSl9OiExLGNjPTAsY2Q7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNlKCl8fGNmKCl9OmNlLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKXtpZighYy5jcm9zc0RvbWFpbnx8Zi5zdXBwb3J0LmNvcnMpe3ZhciBkO3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZyl7dmFyIGg9Yy54aHIoKSxpLGo7Yy51c2VybmFtZT9oLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMsYy51c2VybmFtZSxjLnBhc3N3b3JkKTpoLm9wZW4oYy50eXBlLGMudXJsLGMuYXN5bmMpO2lmKGMueGhyRmllbGRzKWZvcihqIGluIGMueGhyRmllbGRzKWhbal09Yy54aHJGaWVsZHNbal07Yy5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYy5taW1lVHlwZSksIWMuY3Jvc3NEb21haW4mJiFlWyJYLVJlcXVlc3RlZC1XaXRoIl0mJihlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2ZvcihqIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGosZVtqXSl9Y2F0Y2goayl7fWguc2VuZChjLmhhc0NvbnRlbnQmJmMuZGF0YXx8bnVsbCksZD1mdW5jdGlvbihhLGUpe3ZhciBqLGssbCxtLG47dHJ5e2lmKGQmJihlfHxoLnJlYWR5U3RhdGU9PT00KSl7ZD1iLGkmJihoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mLm5vb3AsY2ImJmRlbGV0ZSBjZFtpXSk7aWYoZSloLnJlYWR5U3RhdGUhPT00JiZoLmFib3J0KCk7ZWxzZXtqPWguc3RhdHVzLGw9aC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSxtPXt9LG49aC5yZXNwb25zZVhNTCxuJiZuLmRvY3VtZW50RWxlbWVudCYmKG0ueG1sPW4pLG0udGV4dD1oLnJlc3BvbnNlVGV4dDt0cnl7az1oLnN0YXR1c1RleHR9Y2F0Y2gobyl7az0iIn0haiYmYy5pc0xvY2FsJiYhYy5jcm9zc0RvbWFpbj9qPW0udGV4dD8yMDA6NDA0Omo9PT0xMjIzJiYoaj0yMDQpfX19Y2F0Y2gocCl7ZXx8ZygtMSxwKX1tJiZnKGosayxtLGwpfSwhYy5hc3luY3x8aC5yZWFkeVN0YXRlPT09ND9kKCk6KGk9KytjYyxjYiYmKGNkfHwoY2Q9e30sZihhKS51bmxvYWQoY2IpKSxjZFtpXT1kKSxoLm9ucmVhZHlzdGF0ZWNoYW5nZT1kKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY2c9e30sY2gsY2ksY2o9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNrPS9eKFsrXC1dPSk/KFtcZCsuXC1dKykoW2EteiVdKikkL2ksY2wsY209W1siaGVpZ2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxbIm9wYWNpdHkiXV0sY247Zi5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjcSgic2hvdyIsMyksYSxiLGMpO2Zvcih2YXIgZz0wLGg9dGhpcy5sZW5ndGg7ZzxoO2crKylkPXRoaXNbZ10sZC5zdHlsZSYmKGU9ZC5zdHlsZS5kaXNwbGF5LCFmLl9kYXRhKGQsIm9sZGRpc3BsYXkiKSYmZT09PSJub25lIiYmKGU9ZC5zdHlsZS5kaXNwbGF5PSIiKSxlPT09IiImJmYuY3NzKGQsImRpc3BsYXkiKT09PSJub25lIiYmZi5fZGF0YShkLCJvbGRkaXNwbGF5IixjcihkLm5vZGVOYW1lKSkpO2ZvcihnPTA7ZzxoO2crKyl7ZD10aGlzW2ddO2lmKGQuc3R5bGUpe2U9ZC5zdHlsZS5kaXNwbGF5O2lmKGU9PT0iInx8ZT09PSJub25lIilkLnN0eWxlLmRpc3BsYXk9Zi5fZGF0YShkLCJvbGRkaXNwbGF5Iil8fCIifX1yZXR1cm4gdGhpc30saGlkZTpmdW5jdGlvbihhLGIsYyl7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShjcSgiaGlkZSIsMyksYSxiLGMpO2Zvcih2YXIgZD0wLGU9dGhpcy5sZW5ndGg7ZDxlO2QrKylpZih0aGlzW2RdLnN0eWxlKXt2YXIgZz1mLmNzcyh0aGlzW2RdLCJkaXNwbGF5Iik7ZyE9PSJub25lIiYmIWYuX2RhdGEodGhpc1tkXSwib2xkZGlzcGxheSIpJiZmLl9kYXRhKHRoaXNbZF0sIm9sZGRpc3BsYXkiLGcpfWZvcihkPTA7ZDxlO2QrKyl0aGlzW2RdLnN0eWxlJiYodGhpc1tkXS5zdHlsZS5kaXNwbGF5PSJub25lIik7cmV0dXJuIHRoaXN9LF90b2dnbGU6Zi5mbi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10eXBlb2YgYT09ImJvb2xlYW4iO2YuaXNGdW5jdGlvbihhKSYmZi5pc0Z1bmN0aW9uKGIpP3RoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kP2E6Zih0aGlzKS5pcygiOmhpZGRlbiIpO2YodGhpcylbYj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKGNxKCJ0b2dnbGUiLDMpLGEsYixjKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuc3BlZWQoYixjLGQpO2lmKGYuaXNFbXB0eU9iamVjdChhKSlyZXR1cm4gdGhpcy5lYWNoKGUuY29tcGxldGUsWyExXSk7YT1mLmV4dGVuZCh7fSxhKTtyZXR1cm4gdGhpc1tlLnF1ZXVlPT09ITE/ImVhY2giOiJxdWV1ZSJdKGZ1bmN0aW9uKCl7ZS5xdWV1ZT09PSExJiZmLl9tYXJrKHRoaXMpO3ZhciBiPWYuZXh0ZW5kKHt9LGUpLGM9dGhpcy5ub2RlVHlwZT09PTEsZD1jJiZmKHRoaXMpLmlzKCI6aGlkZGVuIiksZyxoLGksaixrLGwsbSxuLG87Yi5hbmltYXRlZFByb3BlcnRpZXM9e307Zm9yKGkgaW4gYSl7Zz1mLmNhbWVsQ2FzZShpKSxpIT09ZyYmKGFbZ109YVtpXSxkZWxldGUgYVtpXSksaD1hW2ddLGYuaXNBcnJheShoKT8oYi5hbmltYXRlZFByb3BlcnRpZXNbZ109aFsxXSxoPWFbZ109aFswXSk6Yi5hbmltYXRlZFByb3BlcnRpZXNbZ109Yi5zcGVjaWFsRWFzaW5nJiZiLnNwZWNpYWxFYXNpbmdbZ118fGIuZWFzaW5nfHwic3dpbmciO2lmKGg9PT0iaGlkZSImJmR8fGg9PT0ic2hvdyImJiFkKXJldHVybiBiLmNvbXBsZXRlLmNhbGwodGhpcyk7YyYmKGc9PT0iaGVpZ2h0Inx8Zz09PSJ3aWR0aCIpJiYoYi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV0sZi5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmYuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSImJihmLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dD8oaj1jcih0aGlzLm5vZGVOYW1lKSxqPT09ImlubGluZSI/dGhpcy5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOih0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsdGhpcy5zdHlsZS56b29tPTEpKTp0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKX1iLm92ZXJmbG93IT1udWxsJiYodGhpcy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik7Zm9yKGkgaW4gYSlrPW5ldyBmLmZ4KHRoaXMsYixpKSxoPWFbaV0sY2oudGVzdChoKT9rW2g9PT0idG9nZ2xlIj9kPyJzaG93IjoiaGlkZSI6aF0oKToobD1jay5leGVjKGgpLG09ay5jdXIoKSxsPyhuPXBhcnNlRmxvYXQobFsyXSksbz1sWzNdfHwoZi5jc3NOdW1iZXJbaV0/IiI6InB4IiksbyE9PSJweCImJihmLnN0eWxlKHRoaXMsaSwobnx8MSkrbyksbT0obnx8MSkvay5jdXIoKSptLGYuc3R5bGUodGhpcyxpLG0rbykpLGxbMV0mJihuPShsWzFdPT09Ii09Ij8tMToxKSpuK20pLGsuY3VzdG9tKG0sbixvKSk6ay5jdXN0b20obSxoLCIiKSk7cmV0dXJuITB9KX0sc3RvcDpmdW5jdGlvbihhLGIpe2EmJnRoaXMucXVldWUoW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBhPWYudGltZXJzLGM9YS5sZW5ndGg7Ynx8Zi5fdW5tYXJrKCEwLHRoaXMpO3doaWxlKGMtLSlhW2NdLmVsZW09PT10aGlzJiYoYiYmYVtjXSghMCksYS5zcGxpY2UoYywxKSl9KSxifHx0aGlzLmRlcXVldWUoKTtyZXR1cm4gdGhpc319KSxmLmVhY2goe3NsaWRlRG93bjpjcSgic2hvdyIsMSksc2xpZGVVcDpjcSgiaGlkZSIsMSksc2xpZGVUb2dnbGU6Y3EoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksZi5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/Zi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxmLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIWYuaXNGdW5jdGlvbihiKSYmYn07ZC5kdXJhdGlvbj1mLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gZi5meC5zcGVlZHM/Zi5meC5zcGVlZHNbZC5kdXJhdGlvbl06Zi5meC5zcGVlZHMuX2RlZmF1bHQsZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKGEpe2YuaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSE9PSExP2YuZGVxdWV1ZSh0aGlzKTphIT09ITEmJmYuX3VubWFyayh0aGlzKX07cmV0dXJuIGR9LGVhc2luZzp7bGluZWFyOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjK2QqYX0sc3dpbmc6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuKC1NYXRoLmNvcyhhKk1hdGguUEkpLzIrLjUpKmQrY319LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsYyl7dGhpcy5vcHRpb25zPWIsdGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsYi5vcmlnPWIub3JpZ3x8e319fSksZi5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZi5meC5zdGVwW3RoaXMucHJvcF18fGYuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYSxiPWYuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApO3JldHVybiBpc05hTihhPXBhcnNlRmxvYXQoYikpPyFifHxiPT09ImF1dG8iPzA6YjphfSxjdXN0b206ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuIGQuc3RlcChhKX12YXIgZD10aGlzLGU9Zi5meDt0aGlzLnN0YXJ0VGltZT1jbnx8Y28oKSx0aGlzLnN0YXJ0PWEsdGhpcy5lbmQ9Yix0aGlzLnVuaXQ9Y3x8dGhpcy51bml0fHwoZi5jc3NOdW1iZXJbdGhpcy5wcm9wXT8iIjoicHgiKSx0aGlzLm5vdz10aGlzLnN0YXJ0LHRoaXMucG9zPXRoaXMuc3RhdGU9MCxnLmVsZW09dGhpcy5lbGVtLGcoKSYmZi50aW1lcnMucHVzaChnKSYmIWNsJiYoY2w9c2V0SW50ZXJ2YWwoZS50aWNrLGUuaW50ZXJ2YWwpKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuc2hvdz0hMCx0aGlzLmN1c3RvbSh0aGlzLnByb3A9PT0id2lkdGgifHx0aGlzLnByb3A9PT0iaGVpZ2h0Ij8xOjAsdGhpcy5jdXIoKSksZih0aGlzLmVsZW0pLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09Zi5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKSx0aGlzLm9wdGlvbnMuaGlkZT0hMCx0aGlzLmN1c3RvbSh0aGlzLmN1cigpLDApfSxzdGVwOmZ1bmN0aW9uKGEpe3ZhciBiPWNufHxjbygpLGM9ITAsZD10aGlzLmVsZW0sZT10aGlzLm9wdGlvbnMsZyxoO2lmKGF8fGI+PWUuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kLHRoaXMucG9zPXRoaXMuc3RhdGU9MSx0aGlzLnVwZGF0ZSgpLGUuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF09ITA7Zm9yKGcgaW4gZS5hbmltYXRlZFByb3BlcnRpZXMpZS5hbmltYXRlZFByb3BlcnRpZXNbZ10hPT0hMCYmKGM9ITEpO2lmKGMpe2Uub3ZlcmZsb3chPW51bGwmJiFmLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyYmZi5lYWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2Quc3R5bGVbIm92ZXJmbG93IitiXT1lLm92ZXJmbG93W2FdfSksZS5oaWRlJiZmKGQpLmhpZGUoKTtpZihlLmhpZGV8fGUuc2hvdylmb3IodmFyIGkgaW4gZS5hbmltYXRlZFByb3BlcnRpZXMpZi5zdHlsZShkLGksZS5vcmlnW2ldKTtlLmNvbXBsZXRlLmNhbGwoZCl9cmV0dXJuITF9ZS5kdXJhdGlvbj09SW5maW5pdHk/dGhpcy5ub3c9YjooaD1iLXRoaXMuc3RhcnRUaW1lLHRoaXMuc3RhdGU9aC9lLmR1cmF0aW9uLHRoaXMucG9zPWYuZWFzaW5nW2UuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF1dKHRoaXMuc3RhdGUsaCwwLDEsZS5kdXJhdGlvbiksdGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpLHRoaXMudXBkYXRlKCk7cmV0dXJuITB9fSxmLmV4dGVuZChmLmZ4LHt0aWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWYudGltZXJzLGI9MDtiPGEubGVuZ3RoOysrYilhW2JdKCl8fGEuc3BsaWNlKGItLSwxKTthLmxlbmd0aHx8Zi5meC5zdG9wKCl9LGludGVydmFsOjEzLHN0b3A6ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGNsKSxjbD1udWxsfSxzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihhKXtmLnN0eWxlKGEuZWxlbSwib3BhY2l0eSIsYS5ub3cpfSxfZGVmYXVsdDpmdW5jdGlvbihhKXthLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsP2EuZWxlbS5zdHlsZVthLnByb3BdPShhLnByb3A9PT0id2lkdGgifHxhLnByb3A9PT0iaGVpZ2h0Ij9NYXRoLm1heCgwLGEubm93KTphLm5vdykrYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxmLmV4cHImJmYuZXhwci5maWx0ZXJzJiYoZi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZ3JlcChmLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0pO3ZhciBjcz0vXnQoPzphYmxlfGR8aCkkL2ksY3Q9L14oPzpib2R5fGh0bWwpJC9pOyJnZXRCb3VuZGluZ0NsaWVudFJlY3QiaW4gYy5kb2N1bWVudEVsZW1lbnQ/Zi5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXSxjO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBmLm9mZnNldC5ib2R5T2Zmc2V0KGIpO3RyeXtjPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZCl7fXZhciBlPWIub3duZXJEb2N1bWVudCxnPWUuZG9jdW1lbnRFbGVtZW50O2lmKCFjfHwhZi5jb250YWlucyhnLGIpKXJldHVybiBjP3t0b3A6Yy50b3AsbGVmdDpjLmxlZnR9Ont0b3A6MCxsZWZ0OjB9O3ZhciBoPWUuYm9keSxpPWN1KGUpLGo9Zy5jbGllbnRUb3B8fGguY2xpZW50VG9wfHwwLGs9Zy5jbGllbnRMZWZ0fHxoLmNsaWVudExlZnR8fDAsbD1pLnBhZ2VZT2Zmc2V0fHxmLnN1cHBvcnQuYm94TW9kZWwmJmcuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcCxtPWkucGFnZVhPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxMZWZ0fHxoLnNjcm9sbExlZnQsbj1jLnRvcCtsLWosbz1jLmxlZnQrbS1rO3JldHVybnt0b3A6bixsZWZ0Om99fTpmLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBmLm9mZnNldC5ib2R5T2Zmc2V0KGIpO2Yub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgYyxkPWIub2Zmc2V0UGFyZW50LGU9YixnPWIub3duZXJEb2N1bWVudCxoPWcuZG9jdW1lbnRFbGVtZW50LGk9Zy5ib2R5LGo9Zy5kZWZhdWx0VmlldyxrPWo/ai5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGUsbD1iLm9mZnNldFRvcCxtPWIub2Zmc2V0TGVmdDt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiZiIT09aSYmYiE9PWgpe2lmKGYub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYoIWYub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzfHwhY3MudGVzdChiLm5vZGVOYW1lKSkmJihsKz1wYXJzZUZsb2F0KGMuYm9yZGVyVG9wV2lkdGgpfHwwLG0rPXBhcnNlRmxvYXQoYy5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxlPWQsZD1iLm9mZnNldFBhcmVudCksZi5vZmZzZXQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCImJihsKz1NYXRoLm1heChoLnNjcm9sbFRvcCxpLnNjcm9sbFRvcCksbSs9TWF0aC5tYXgoaC5zY3JvbGxMZWZ0LGkuc2Nyb2xsTGVmdCkpO3JldHVybnt0b3A6bCxsZWZ0Om19fSxmLm9mZnNldD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBhPWMuYm9keSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZCxlLGcsaCxpPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGo9IjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4Oyc+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OycgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiI7Zi5leHRlbmQoYi5zdHlsZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KSxiLmlubmVySFRNTD1qLGEuaW5zZXJ0QmVmb3JlKGIsYS5maXJzdENoaWxkKSxkPWIuZmlyc3RDaGlsZCxlPWQuZmlyc3RDaGlsZCxoPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLHRoaXMuZG9lc05vdEFkZEJvcmRlcj1lLm9mZnNldFRvcCE9PTUsdGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscz1oLm9mZnNldFRvcD09PTUsZS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGUuc3R5bGUudG9wPSIyMHB4Iix0aGlzLnN1cHBvcnRzRml4ZWRQb3NpdGlvbj1lLm9mZnNldFRvcD09PTIwfHxlLm9mZnNldFRvcD09PTE1LGUuc3R5bGUucG9zaXRpb249ZS5zdHlsZS50b3A9IiIsZC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixkLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9ZS5vZmZzZXRUb3A9PT0tNSx0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PWEub2Zmc2V0VG9wIT09aSxhLnJlbW92ZUNoaWxkKGIpLGYub2Zmc2V0LmluaXRpYWxpemU9Zi5ub29wfSxib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yub2Zmc2V0LmluaXRpYWxpemUoKSxmLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3QudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3QudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y3UoZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y3UodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhJiZhLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYSxkLCJwYWRkaW5nIikpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiJiZiLnN0eWxlP3BhcnNlRmxvYXQoZi5jc3MoYixkLGE/Im1hcmdpbiI6ImJvcmRlciIpKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTmFOKGopP2k6an1yZXR1cm4gdGhpcy5jc3MoZCx0eXBlb2YgYT09InN0cmluZyI/YTphKyJweCIpfX0pLGEualF1ZXJ5PWEuJD1mfSkod2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/tt/Table.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogIEZpbGU6ICAgICAgICAgZGVtb190YWJsZS5jc3MKICogIENWUzogICAgICAgICAgJElkJAogKiAgRGVzY3JpcHRpb246ICBDU1MgZGVzY3JpcHRpb25zIGZvciBEYXRhVGFibGVzIGRlbW8gcGFnZXMKICogIEF1dGhvcjogICAgICAgQWxsYW4gSmFyZGluZQogKiAgQ3JlYXRlZDogICAgICBUdWUgTWF5IDEyIDA2OjQ3OjIyIEJTVCAyMDA5CiAqICBNb2RpZmllZDogICAgICREYXRlJCBieSAkQXV0aG9yJAogKiAgTGFuZ3VhZ2U6ICAgICBDU1MKICogIFByb2plY3Q6ICAgICAgRGF0YVRhYmxlcwogKgogKiAgQ29weXJpZ2h0IDIwMDkgQWxsYW4gSmFyZGluZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIERFU0NSSVBUSU9OCiAqCiAqIFRoZSBzdHlsZXMgZ2l2ZW4gaGVyZSBhcmUgc3VpdGFibGUgZm9yIHRoZSBkZW1vcyB0aGF0IGFyZSB1c2VkIHdpdGggdGhlIHN0YW5kYXJkIERhdGFUYWJsZXMKICogZGlzdHJpYnV0aW9uIChzZWUgd3d3LmRhdGF0YWJsZXMubmV0KS4gWW91IHdpbGwgbW9zdCBsaWtlbHkgd2lzaCB0byBtb2RpZnkgdGhlc2Ugc3R5bGVzIHRvCiAqIG1lZXQgdGhlIGxheW91dCByZXF1aXJlbWVudHMgb2YgeW91ciBzaXRlLgogKgogKiBDb21tb24gaXNzdWVzOgogKiAgICdmdWxsX251bWJlcnMnIHBhZ2luYXRpb24gLSBJIHVzZSBhbiBleHRyYSBzZWxlY3RvciBvbiB0aGUgYm9keSB0YWcgdG8gZW5zdXJlIHRoYXQgdGhlcmUgaXMKICogICAgIG5vIGNvbmZsaWN0IGJldHdlZW4gdGhlIHR3byBwYWdpbmF0aW9uIHR5cGVzLiBJZiB5b3Ugd2FudCB0byB1c2UgZnVsbF9udW1iZXJzIHBhZ2luYXRpb24KICogICAgIGVuc3VyZSB0aGF0IHlvdSBlaXRoZXIgaGF2ZSAiZXhhbXBsZV9hbHRfcGFnaW5hdGlvbiIgYXMgYSBib2R5IGNsYXNzIG5hbWUsIG9yIGJldHRlciB5ZXQsCiAqICAgICBtb2RpZnkgdGhhdCBzZWxlY3Rvci4KICogICBOb3RlIHRoYXQgdGhlIHBhdGggdXNlZCBmb3IgSW1hZ2VzIGlzIHJlbGF0aXZlLiBBbGwgaW1hZ2VzIGFyZSBieSBkZWZhdWx0IGxvY2F0ZWQgaW4KICogICAgIGltYWdlcy8gLSByZWxhdGl2ZSB0byB0aGlzIENTUyBmaWxlLgogKi8KCi8qICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqIERhdGFUYWJsZXMgZmVhdHVyZXMKICovCgouZGF0YVRhYmxlc193cmFwcGVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1pbi1oZWlnaHQ6IDMwMnB4OwoJY2xlYXI6IGJvdGg7CglfaGVpZ2h0OiAzMDJweDsKCXpvb206IDE7IC8qIEZlZWxpbmcgc29ycnkgZm9yIElFICovCn0KCi5kYXRhVGFibGVzX3Byb2Nlc3NpbmcgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiA1MCU7CglsZWZ0OiA1MCU7Cgl3aWR0aDogMjUwcHg7CgloZWlnaHQ6IDMwcHg7CgltYXJnaW4tbGVmdDogLTEyNXB4OwoJbWFyZ2luLXRvcDogLTE1cHg7CglwYWRkaW5nOiAxNHB4IDAgMnB4IDA7Cglib3JkZXI6IDFweCBzb2xpZCAjZGRkOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJY29sb3I6ICM5OTk7Cglmb250LXNpemU6IDE0cHg7CgliYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKLmRhdGFUYWJsZXNfbGVuZ3RoIHsKCXdpZHRoOiA0MCU7CglmbG9hdDogbGVmdDsKfQoKLmRhdGFUYWJsZXNfZmlsdGVyIHsKCXdpZHRoOiA1MCU7CglmbG9hdDogcmlnaHQ7Cgl0ZXh0LWFsaWduOiByaWdodDsKfQoKLmRhdGFUYWJsZXNfaW5mbyB7Cgl3aWR0aDogNjAlOwoJZmxvYXQ6IGxlZnQ7Cn0KCi5kYXRhVGFibGVzX3BhZ2luYXRlIHsKCXdpZHRoOiA0NHB4OwoJKiB3aWR0aDogNTBweDsKCWZsb2F0OiByaWdodDsKCXRleHQtYWxpZ246IHJpZ2h0Owp9CgovKiBQYWdpbmF0aW9uIG5lc3RlZCAqLwoucGFnaW5hdGVfZGlzYWJsZWRfcHJldmlvdXMsIC5wYWdpbmF0ZV9lbmFibGVkX3ByZXZpb3VzLCAucGFnaW5hdGVfZGlzYWJsZWRfbmV4dCwgLnBhZ2luYXRlX2VuYWJsZWRfbmV4dCB7CgloZWlnaHQ6IDE5cHg7Cgl3aWR0aDogMTlweDsKCW1hcmdpbi1sZWZ0OiAzcHg7CglmbG9hdDogbGVmdDsKfQoKLnBhZ2luYXRlX2Rpc2FibGVkX3ByZXZpb3VzIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgnaW1hZ2VzL2JhY2tfZGlzYWJsZWQuanBnJyk7Cn0KCi5wYWdpbmF0ZV9lbmFibGVkX3ByZXZpb3VzIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgnaW1hZ2VzL2JhY2tfZW5hYmxlZC5qcGcnKTsKfQoKLnBhZ2luYXRlX2Rpc2FibGVkX25leHQgewoJYmFja2dyb3VuZC1pbWFnZTogdXJsKCdpbWFnZXMvZm9yd2FyZF9kaXNhYmxlZC5qcGcnKTsKfQoKLnBhZ2luYXRlX2VuYWJsZWRfbmV4dCB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2ltYWdlcy9mb3J3YXJkX2VuYWJsZWQuanBnJyk7Cn0KCgoKLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICoKICogRGF0YVRhYmxlcyBkaXNwbGF5CiAqLwp0YWJsZS5kaXNwbGF5IHsKCW1hcmdpbjogMCBhdXRvOwoJY2xlYXI6IGJvdGg7Cgl3aWR0aDogMTAwJTsKCQoJLyogTm90ZSBGaXJlZm94IDMuNSBhbmQgYmVmb3JlIGhhdmUgYSBidWcgd2l0aCBib3JkZXItY29sbGFwc2UKCSAqICggaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93JTVGYnVnLmNnaT9pZD0xNTU5NTUgKSAKCSAqIGJvcmRlci1zcGFjaW5nOiAwOyBpcyBvbmUgcG9zc2libGUgb3B0aW9uLiBDb25kaXRpb25hbC1jc3MuY29tIGlzCgkgKiB1c2VmdWwgZm9yIHRoaXMga2luZCBvZiB0aGluZwoJICoKCSAqIEZ1cnRoZXIgbm90ZSBJRSA2LzcgaGFzIHByb2JsZW1zIHdoZW4gY2FsY3VsYXRpbmcgd2lkdGhzIHdpdGggYm9yZGVyIHdpZHRoLgoJICogSXQgc3VidHJhY3RzIG9uZSBweCByZWxhdGl2ZSB0byB0aGUgb3RoZXIgYnJvd3NlcnMgZnJvbSB0aGUgZmlyc3QgY29sdW1uLCBhbmQKCSAqIGFkZHMgb25lIHRvIHRoZSBlbmQuLi4KCSAqCgkgKiBJZiB5b3Ugd2FudCB0aGF0IGVmZmVjdCBJJ2Qgc3VnZ2VzdCBzZXR0aW5nIGEgYm9yZGVyLXRvcC9sZWZ0IG9uIHRoL3RkJ3MgYW5kIAoJICogdGhlbiBmaWxsaW5nIGluIHRoZSBnYXBzIHdpdGggb3RoZXIgYm9yZGVycy4KCSAqLwp9Cgp0YWJsZS5kaXNwbGF5IHRoZWFkIHRoIHsKCXBhZGRpbmc6IDNweCAxOHB4IDNweCAxMHB4OwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOwoJZm9udC13ZWlnaHQ6IGJvbGQ7CgljdXJzb3I6IHBvaW50ZXI7CgkqIGN1cnNvcjogaGFuZDsKfQoKdGFibGUuZGlzcGxheSB0Zm9vdCB0aCB7CglwYWRkaW5nOiAzcHggMThweCAzcHggMTBweDsKCWJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmhlYWRpbmcyIHRkIHsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwp9Cgp0YWJsZS5kaXNwbGF5IHRkIHsKCXBhZGRpbmc6IDNweCAxMHB4Owp9Cgp0YWJsZS5kaXNwbGF5IHRkLmNlbnRlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCgoKLyogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICoKICogRGF0YVRhYmxlcyBzb3J0aW5nCiAqLwoKLnNvcnRpbmdfYXNjIHsKCWJhY2tncm91bmQ6IHVybCgnaW1hZ2VzL3NvcnRfYXNjLnBuZycpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7Cn0KCi5zb3J0aW5nX2Rlc2MgewoJYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvc29ydF9kZXNjLnBuZycpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7Cn0KCi5zb3J0aW5nIHsKCWJhY2tncm91bmQ6IHVybCgnaW1hZ2VzL3NvcnRfYm90aC5wbmcnKSBuby1yZXBlYXQgY2VudGVyIHJpZ2h0Owp9Cgouc29ydGluZ19hc2NfZGlzYWJsZWQgewoJYmFja2dyb3VuZDogdXJsKCdpbWFnZXMvc29ydF9hc2NfZGlzYWJsZWQucG5nJykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKLnNvcnRpbmdfZGVzY19kaXNhYmxlZCB7CgliYWNrZ3JvdW5kOiB1cmwoJ2ltYWdlcy9zb3J0X2Rlc2NfZGlzYWJsZWQucG5nJykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKCgoKCi8qICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqIERhdGFUYWJsZXMgcm93IGNsYXNzZXMKICovCnRhYmxlLmRpc3BsYXkgdHIub2RkLmdyYWRlQSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRmZmRkOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmV2ZW4uZ3JhZGVBIHsKCWJhY2tncm91bmQtY29sb3I6ICNlZWZmZWU7Cn0KCnRhYmxlLmRpc3BsYXkgdHIub2RkLmdyYWRlQyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGZmOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmV2ZW4uZ3JhZGVDIHsKCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7Cn0KCnRhYmxlLmRpc3BsYXkgdHIub2RkLmdyYWRlWCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZkZGRkOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmV2ZW4uZ3JhZGVYIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmVlZWU7Cn0KCnRhYmxlLmRpc3BsYXkgdHIub2RkLmdyYWRlVSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmV2ZW4uZ3JhZGVVIHsKCWJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KCgp0ci5vZGQgewoJYmFja2dyb3VuZC1jb2xvcjogI0UyRTRGRjsKfQoKdHIuZXZlbiB7CgliYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKCgoKCi8qICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqIE1pc2MKICovCi5kYXRhVGFibGVzX3Njcm9sbCB7CgljbGVhcjogYm90aDsKfQoKLmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB7CgkqbWFyZ2luLXRvcDogLTFweDsKfQoKLnRvcCwgLmJvdHRvbSB7CglwYWRkaW5nOiAxNXB4OwoJYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTsKCWJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Cn0KCi50b3AgLmRhdGFUYWJsZXNfaW5mbyB7CglmbG9hdDogbm9uZTsKfQoKLmNsZWFyIHsKCWNsZWFyOiBib3RoOwp9CgouZGF0YVRhYmxlc19lbXB0eSB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnRmb290IGlucHV0IHsKCW1hcmdpbjogMC41ZW0gMDsKCXdpZHRoOiAxMDAlOwoJY29sb3I6ICM0NDQ7Cn0KCnRmb290IGlucHV0LnNlYXJjaF9pbml0IHsKCWNvbG9yOiAjOTk5Owp9Cgp0ZC5ncm91cCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFjZmQwOwoJYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNBMTlCOUU7Cglib3JkZXItdG9wOiAycHggc29saWQgI0ExOUI5RTsKfQoKdGQuZGV0YWlscyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFjZmQwOwoJYm9yZGVyOiAycHggc29saWQgI0ExOUI5RTsKfQoKCi5leGFtcGxlX2FsdF9wYWdpbmF0aW9uIGRpdi5kYXRhVGFibGVzX2luZm8gewoJd2lkdGg6IDQwJTsKfQoKLnBhZ2luZ19mdWxsX251bWJlcnMgewoJd2lkdGg6IDQwMHB4OwoJaGVpZ2h0OiAyMnB4OwoJbGluZS1oZWlnaHQ6IDIycHg7Cn0KCi5wYWdpbmdfZnVsbF9udW1iZXJzIHNwYW4ucGFnaW5hdGVfYnV0dG9uLAogCS5wYWdpbmdfZnVsbF9udW1iZXJzIHNwYW4ucGFnaW5hdGVfYWN0aXZlIHsKCWJvcmRlcjogMXB4IHNvbGlkICNhYWE7Cgktd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwoJcGFkZGluZzogMnB4IDVweDsKCW1hcmdpbjogMCAzcHg7CgljdXJzb3I6IHBvaW50ZXI7CgkqY3Vyc29yOiBoYW5kOwp9CgoucGFnaW5nX2Z1bGxfbnVtYmVycyBzcGFuLnBhZ2luYXRlX2J1dHRvbiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwp9CgoucGFnaW5nX2Z1bGxfbnVtYmVycyBzcGFuLnBhZ2luYXRlX2J1dHRvbjpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOwp9CgoucGFnaW5nX2Z1bGxfbnVtYmVycyBzcGFuLnBhZ2luYXRlX2FjdGl2ZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOTlCM0ZGOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmV2ZW4ucm93X3NlbGVjdGVkIHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNCMEJFRDk7Cn0KCnRhYmxlLmRpc3BsYXkgdHIub2RkLnJvd19zZWxlY3RlZCB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOUZBRkQxOwp9CgoKLyoKICogU29ydGluZyBjbGFzc2VzIGZvciBjb2x1bW5zCiAqLwovKiBGb3IgdGhlIHN0YW5kYXJkIG9kZC9ldmVuICovCnRyLm9kZCB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI0QzRDZGRjsKfQoKdHIub2RkIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjREFEQ0ZGOwp9Cgp0ci5vZGQgdGQuc29ydGluZ18zIHsKCWJhY2tncm91bmQtY29sb3I6ICNFMEUyRkY7Cn0KCnRyLmV2ZW4gdGQuc29ydGluZ18xIHsKCWJhY2tncm91bmQtY29sb3I6ICNFQUVCRkY7Cn0KCnRyLmV2ZW4gdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNGMkYzRkY7Cn0KCnRyLmV2ZW4gdGQuc29ydGluZ18zIHsKCWJhY2tncm91bmQtY29sb3I6ICNGOUY5RkY7Cn0KCgovKiBGb3IgdGhlIENvbmRpdGlvbmFsLUNTUyBncmFkaW5nIHJvd3MgKi8KLyoKIAlDb2xvdXIgY2FsY3VsYXRpb25zIChiYXNlZCBvZmYgdGhlIG1haW4gcm93IGNvbG91cnMpCiAgTGV2ZWwgMToKCQlkZCA+IGM0CgkJZWUgPiBkNQoJTGV2ZWwgMjoKCSAgZGQgPiBkMQoJICBlZSA+IGUyCiAqLwp0ci5vZGQuZ3JhZGVBIHRkLnNvcnRpbmdfMSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzRmZmM0Owp9Cgp0ci5vZGQuZ3JhZGVBIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFmZmQxOwp9Cgp0ci5vZGQuZ3JhZGVBIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFmZmQxOwp9Cgp0ci5ldmVuLmdyYWRlQSB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI2Q1ZmZkNTsKfQoKdHIuZXZlbi5ncmFkZUEgdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNlMmZmZTI7Cn0KCnRyLmV2ZW4uZ3JhZGVBIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJmZmUyOwp9Cgp0ci5vZGQuZ3JhZGVDIHRkLnNvcnRpbmdfMSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzRjNGZmOwp9Cgp0ci5vZGQuZ3JhZGVDIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFkMWZmOwp9Cgp0ci5vZGQuZ3JhZGVDIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFkMWZmOwp9Cgp0ci5ldmVuLmdyYWRlQyB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI2Q1ZDVmZjsKfQoKdHIuZXZlbi5ncmFkZUMgdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNlMmUyZmY7Cn0KCnRyLmV2ZW4uZ3JhZGVDIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmZmOwp9Cgp0ci5vZGQuZ3JhZGVYIHRkLnNvcnRpbmdfMSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjNGM0Owp9Cgp0ci5vZGQuZ3JhZGVYIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZkMWQxOwp9Cgp0ci5vZGQuZ3JhZGVYIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZkMWQxOwp9Cgp0ci5ldmVuLmdyYWRlWCB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZDVkNTsKfQoKdHIuZXZlbi5ncmFkZVggdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmUyZTI7Cn0KCnRyLmV2ZW4uZ3JhZGVYIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZlMmUyOwp9Cgp0ci5vZGQuZ3JhZGVVIHRkLnNvcnRpbmdfMSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzRjNGM0Owp9Cgp0ci5vZGQuZ3JhZGVVIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFkMWQxOwp9Cgp0ci5vZGQuZ3JhZGVVIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDFkMWQxOwp9Cgp0ci5ldmVuLmdyYWRlVSB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI2Q1ZDVkNTsKfQoKdHIuZXZlbi5ncmFkZVUgdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7Cn0KCnRyLmV2ZW4uZ3JhZGVVIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyOwp9CgoKLyoKICogUm93IGhpZ2hsaWdodGluZyBleGFtcGxlCiAqLwouZXhfaGlnaGxpZ2h0ICNleGFtcGxlIHRib2R5IHRyLmV2ZW46aG92ZXIsICNleGFtcGxlIHRib2R5IHRyLmV2ZW4gdGQuaGlnaGxpZ2h0ZWQgewoJYmFja2dyb3VuZC1jb2xvcjogI0VDRkZCMzsKfQoKLmV4X2hpZ2hsaWdodCAjZXhhbXBsZSB0Ym9keSB0ci5vZGQ6aG92ZXIsICNleGFtcGxlIHRib2R5IHRyLm9kZCB0ZC5oaWdobGlnaHRlZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTZGRjk5Owp9CgouZXhfaGlnaGxpZ2h0X3JvdyAjZXhhbXBsZSB0ci5ldmVuOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNFQ0ZGQjM7Cn0KCi5leF9oaWdobGlnaHRfcm93ICNleGFtcGxlIHRyLmV2ZW46aG92ZXIgdGQuc29ydGluZ18xIHsKCWJhY2tncm91bmQtY29sb3I6ICNEREZGNzU7Cn0KCi5leF9oaWdobGlnaHRfcm93ICNleGFtcGxlIHRyLmV2ZW46aG92ZXIgdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICNFN0ZGOUU7Cn0KCi5leF9oaWdobGlnaHRfcm93ICNleGFtcGxlIHRyLmV2ZW46aG92ZXIgdGQuc29ydGluZ18zIHsKCWJhY2tncm91bmQtY29sb3I6ICNFMkZGODk7Cn0KCi5leF9oaWdobGlnaHRfcm93ICNleGFtcGxlIHRyLm9kZDpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTZGRjk5Owp9CgouZXhfaGlnaGxpZ2h0X3JvdyAjZXhhbXBsZSB0ci5vZGQ6aG92ZXIgdGQuc29ydGluZ18xIHsKCWJhY2tncm91bmQtY29sb3I6ICNENkZGNUM7Cn0KCi5leF9oaWdobGlnaHRfcm93ICNleGFtcGxlIHRyLm9kZDpob3ZlciB0ZC5zb3J0aW5nXzIgewoJYmFja2dyb3VuZC1jb2xvcjogI0UwRkY4NDsKfQoKLmV4X2hpZ2hsaWdodF9yb3cgI2V4YW1wbGUgdHIub2RkOmhvdmVyIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjREJGRjcwOwp9CgoKLyoKICogS2V5VGFibGUKICovCnRhYmxlLktleVRhYmxlIHRkIHsKCWJvcmRlcjogM3B4IHNvbGlkIHRyYW5zcGFyZW50Owp9Cgp0YWJsZS5LZXlUYWJsZSB0ZC5mb2N1cyB7Cglib3JkZXI6IDNweCBzb2xpZCAjMzM2NkZGOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmdyYWRlQSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZmVlOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmdyYWRlQyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGZmOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmdyYWRlWCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZkZGRkOwp9Cgp0YWJsZS5kaXNwbGF5IHRyLmdyYWRlVSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwp9CgpkaXYuYm94IHsKCWhlaWdodDogMTAwcHg7CglwYWRkaW5nOiAxMHB4OwoJb3ZlcmZsb3c6IGF1dG87Cglib3JkZXI6IDFweCBzb2xpZCAjODA4MEZGOwoJYmFja2dyb3VuZC1jb2xvcjogI0U1RTVGRjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/tt/TableTools.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogRmlsZTogICAgICAgIFRhYmxlVG9vbHMuY3NzCiAqIERlc2NyaXB0aW9uOiBTdHlsZXMgZm9yIFRhYmxlVG9vbHMgMgogKiBBdXRob3I6ICAgICAgQWxsYW4gSmFyZGluZSAod3d3LnNwcnltZWRpYS5jby51aykKICogTGFuZ3VhZ2U6ICAgIEphdmFzY3JpcHQKICogTGljZW5zZTogICAgIExHUEwgLyAzIHBvaW50IEJTRAogKiBQcm9qZWN0OiAgICAgRGF0YVRhYmxlcwogKiAKICogQ29weXJpZ2h0IDIwMTAgQWxsYW4gSmFyZGluZSwgYWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqCiAqCiAqIENTUyBuYW1lIHNwYWNlOgogKiAgIERUVFQgICAgICAgICAgICAgICAgICBEYXRhVGFibGVzIFRhYmxlVG9vbHMKICoKICogQ29sb3VyIGRpY3Rpb25hcnk6CiAqICAgQnV0dG9uIGJvcmRlciAgICAgICAgICNkMGQwZDAKICogICBCdXR0b24gYm9yZGVyIGhvdmVyICAgIzk5OTk5OQogKiAgIEhvdmVyIGJhY2tncm91bmQgICAgICAjZjBmMGYwCiAqICAgQWN0aW9uIGJsdWUgICAgICAgICAgICM0YjY2ZDkKICoKICogU3R5bGUgc2hlZXQgcHJvdmlkZXM6CiAqICAgQ09OVEFJTkVSICAgICAgICAgICAgIFRhYmxlVG9vbHMgY29udGFpbmVyIGVsZW1lbnQgYW5kIHN0eWxlcyBhcHBseWluZyB0byBhbGwgY29tcG9uZW50cwogKiAgIEJVVFRPTl9TVFlMRVMgICAgICAgICBBY3Rpb24gc3BlY2lmaWMgYnV0dG9uIHN0eWxlcwogKiAgIFNFTEVDVElORyAgICAgICAgICAgICBSb3cgc2VsZWN0aW9uIHN0eWxlcwogKiAgIENPTExFQ1RJT05TICAgICAgICAgICBEcm9wIGRvd24gbGlzdCAoY29sbGVjdGlvbikgc3R5bGVzCiAqICAgUFJJTlRJTkcgICAgICAgICAgICAgIFByaW50IGRpc3BsYXkgc3R5bGVzCiAqICAgTUlTQyAgICAgICAgICAgICAgICAgIE1pbm9yIG1pc2Mgc3R5bGVzCiAqLwoKCi8qCiAqIENPTlRBSU5FUgogKiBUYWJsZVRvb2xzIGNvbnRhaW5lciBlbGVtZW50IGFuZCBzdHlsZXMgYXBwbHlpbmcgdG8gYWxsIGNvbXBvbmVudHMKICovCmRpdi5EVFRUX2NvbnRhaW5lciB7CglmbG9hdDogcmlnaHQ7CgltYXJnaW4tYm90dG9tOiAxZW07Cn0KCmJ1dHRvbi5EVFRUX2J1dHRvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglmbG9hdDogbGVmdDsKCWhlaWdodDogMzBweDsKCW1hcmdpbi1yaWdodDogM3B4OwoJcGFkZGluZzogM3B4IDVweDsKCWJvcmRlcjogMXB4IHNvbGlkICNkMGQwZDA7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJY3Vyc29yOiBwb2ludGVyOwoJKmN1cnNvcjogaGFuZDsKfQoKYnV0dG9uLkRUVFRfYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsgCglib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKCXBhZGRpbmc6IDA7Cn0KCgovKgogKiBCVVRUT05fU1RZTEVTCiAqIEFjdGlvbiBzcGVjaWZpYyBidXR0b24gc3R5bGVzCiAqLwoKYnV0dG9uLkRUVFRfYnV0dG9uX2NzdiB7CglwYWRkaW5nLXJpZ2h0OiAzMHB4OwoJYmFja2dyb3VuZDogdXJsKGltYWdlcy9jc3YucG5nKSBuby1yZXBlYXQgY2VudGVyIHJpZ2h0Owp9CgpidXR0b24uRFRUVF9idXR0b25fY3N2X2hvdmVyIHsKCXBhZGRpbmctcmlnaHQ6IDMwcHg7Cglib3JkZXI6IDFweCBzb2xpZCAjOTk5OwoJYmFja2dyb3VuZDogI2YwZjBmMCB1cmwoaW1hZ2VzL2Nzdl9ob3Zlci5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7Cn0KCgpidXR0b24uRFRUVF9idXR0b25feGxzIHsKCXBhZGRpbmctcmlnaHQ6IDMwcHg7CgliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3hscy5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7Cn0KCmJ1dHRvbi5EVFRUX2J1dHRvbl94bHNfaG92ZXIgewoJcGFkZGluZy1yaWdodDogMzBweDsKCWJvcmRlcjogMXB4IHNvbGlkICM5OTk7CgliYWNrZ3JvdW5kOiAjZjBmMGYwIHVybChpbWFnZXMveGxzX2hvdmVyLnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKCmJ1dHRvbi5EVFRUX2J1dHRvbl9jb3B5IHsKCXBhZGRpbmctcmlnaHQ6IDMwcHg7CgliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2NvcHkucG5nKSBuby1yZXBlYXQgY2VudGVyIHJpZ2h0Owp9CgpidXR0b24uRFRUVF9idXR0b25fY29weV9ob3ZlciB7CglwYWRkaW5nLXJpZ2h0OiAzMHB4OwoJYm9yZGVyOiAxcHggc29saWQgIzk5OTsKCWJhY2tncm91bmQ6ICNmMGYwZjAgdXJsKGltYWdlcy9jb3B5X2hvdmVyLnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKCmJ1dHRvbi5EVFRUX2J1dHRvbl9wZGYgewoJcGFkZGluZy1yaWdodDogMzBweDsKCWJhY2tncm91bmQ6IHVybChpbWFnZXMvcGRmLnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKYnV0dG9uLkRUVFRfYnV0dG9uX3BkZl9ob3ZlciB7CglwYWRkaW5nLXJpZ2h0OiAzMHB4OwoJYm9yZGVyOiAxcHggc29saWQgIzk5OTsKCWJhY2tncm91bmQ6ICNmMGYwZjAgdXJsKGltYWdlcy9wZGZfaG92ZXIucG5nKSBuby1yZXBlYXQgY2VudGVyIHJpZ2h0Owp9CgoKYnV0dG9uLkRUVFRfYnV0dG9uX3ByaW50IHsKCXBhZGRpbmctcmlnaHQ6IDMwcHg7CgliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3ByaW50LnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKYnV0dG9uLkRUVFRfYnV0dG9uX3ByaW50X2hvdmVyIHsKCXBhZGRpbmctcmlnaHQ6IDMwcHg7Cglib3JkZXI6IDFweCBzb2xpZCAjOTk5OwoJYmFja2dyb3VuZDogI2YwZjBmMCB1cmwoaW1hZ2VzL3ByaW50X2hvdmVyLnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKCmJ1dHRvbi5EVFRUX2J1dHRvbl90ZXh0IHsKfQoKYnV0dG9uLkRUVFRfYnV0dG9uX3RleHRfaG92ZXIgewoJYm9yZGVyOiAxcHggc29saWQgIzk5OTsKCWJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7Cn0KCgpidXR0b24uRFRUVF9idXR0b25fY29sbGVjdGlvbiB7CglwYWRkaW5nLXJpZ2h0OiAxN3B4OwoJYmFja2dyb3VuZDogdXJsKGltYWdlcy9jb2xsZWN0aW9uLnBuZykgbm8tcmVwZWF0IGNlbnRlciByaWdodDsKfQoKYnV0dG9uLkRUVFRfYnV0dG9uX2NvbGxlY3Rpb25faG92ZXIgewoJcGFkZGluZy1yaWdodDogMTdweDsKCWJvcmRlcjogMXB4IHNvbGlkICM5OTk7CgliYWNrZ3JvdW5kOiAjZjBmMGYwIHVybChpbWFnZXMvY29sbGVjdGlvbl9ob3Zlci5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgcmlnaHQ7Cn0KCgovKgogKiBTRUxFQ1RJTkcKICogUm93IHNlbGVjdGlvbiBzdHlsZXMKICovCnRhYmxlLkRUVFRfc2VsZWN0YWJsZSB0Ym9keSB0ciB7CgljdXJzb3I6IHBvaW50ZXI7CgkqY3Vyc29yOiBoYW5kOwp9Cgp0ci5EVFRUX3NlbGVjdGVkLm9kZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOUZBRkQxOwp9Cgp0ci5EVFRUX3NlbGVjdGVkLm9kZCB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogIzlGQUZEMTsKfQoKdHIuRFRUVF9zZWxlY3RlZC5vZGQgdGQuc29ydGluZ18yIHsKCWJhY2tncm91bmQtY29sb3I6ICM5RkFGRDE7Cn0KCnRyLkRUVFRfc2VsZWN0ZWQub2RkIHRkLnNvcnRpbmdfMyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOUZBRkQxOwp9CgoKdHIuRFRUVF9zZWxlY3RlZC5ldmVuIHsKCWJhY2tncm91bmQtY29sb3I6ICNCMEJFRDk7Cn0KCnRyLkRUVFRfc2VsZWN0ZWQuZXZlbiB0ZC5zb3J0aW5nXzEgewoJYmFja2dyb3VuZC1jb2xvcjogI0IwQkVEOTsKfQoKdHIuRFRUVF9zZWxlY3RlZC5ldmVuIHRkLnNvcnRpbmdfMiB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjQjBCRUQ5Owp9Cgp0ci5EVFRUX3NlbGVjdGVkLmV2ZW4gdGQuc29ydGluZ18zIHsKCWJhY2tncm91bmQtY29sb3I6ICNCMEJFRDk7Cn0KCgovKgogKiBDT0xMRUNUSU9OUwogKiBEcm9wIGRvd24gbGlzdCAoY29sbGVjdGlvbikgc3R5bGVzCiAqLwoKZGl2LkRUVFRfY29sbGVjdGlvbiB7Cgl3aWR0aDogMTUwcHg7CglwYWRkaW5nOiAzcHg7Cglib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMzsKCW92ZXJmbG93OiBoaWRkZW47Cgl6LWluZGV4OiAyMDAyOwp9CgpkaXYuRFRUVF9jb2xsZWN0aW9uX2JhY2tncm91bmQgewoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGltYWdlcy9iYWNrZ3JvdW5kLnBuZykgcmVwZWF0IHRvcCBsZWZ0OwoJei1pbmRleDogMjAwMTsKfQoKZGl2LkRUVFRfY29sbGVjdGlvbiBidXR0b24uRFRUVF9idXR0b24gewoJZmxvYXQ6IG5vbmU7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi1ib3R0b206IDJweDsKCWJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgoKLyoKICogUFJJTlRJTkcKICogUHJpbnQgZGlzcGxheSBzdHlsZXMKICovCgouRFRUVF9wcmludF9pbmZvIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogNTAlOwoJbGVmdDogNTAlOwoJd2lkdGg6IDQwMHB4OwoJaGVpZ2h0OiAxNTBweDsKCW1hcmdpbi1sZWZ0OiAtMjAwcHg7CgltYXJnaW4tdG9wOiAtNzVweDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJhY2tncm91bmQtY29sb3I6ICMzZjNmM2Y7Cgljb2xvcjogd2hpdGU7CglwYWRkaW5nOiAxMHB4IDMwcHg7CgkKCW9wYWNpdHk6IDAuOTsKCQoJYm9yZGVyLXJhZGl1czogNXB4OwoJLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Cgktd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKCQoJYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjUpOwoJLW1vei1ib3gtc2hhZG93OiA1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuNSk7Cgktd2Via2l0LWJveC1zaGFkb3c6IDVweCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoKLkRUVFRfcHJpbnRfaW5mbyBoNiB7Cglmb250LXdlaWdodDogbm9ybWFsOwoJZm9udC1zaXplOiAyOHB4OwoJbGluZS1oZWlnaHQ6IDI4cHg7CgltYXJnaW46IDFlbTsKfQoKLkRUVFRfcHJpbnRfaW5mbyBwIHsKCWZvbnQtc2l6ZTogMTRweDsKCWxpbmUtaGVpZ2h0OiAyMHB4Owp9CgoKLyoKICogTUlTQwogKiBNaW5vciBtaXNjIHN0eWxlcwogKi8KCi5EVFRUX2Rpc2FibGVkIHsKCWNvbG9yOiAjOTk5Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/tt/TableTools.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU2ltcGxlIFNldCBDbGlwYm9hcmQgU3lzdGVtCi8vIEF1dGhvcjogSm9zZXBoIEh1Y2thYnkKdmFyIFplcm9DbGlwYm9hcmQ9e3ZlcnNpb246IjEuMC40LVRhYmxlVG9vbHMyIixjbGllbnRzOnt9LG1vdmllUGF0aDoiIixuZXh0SWQ6MSwkOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2lmKCFhLmFkZENsYXNzKXthLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifTthLnNob3c9ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9IiJ9O2EuYWRkQ2xhc3M9ZnVuY3Rpb24oYil7dGhpcy5yZW1vdmVDbGFzcyhiKTt0aGlzLmNsYXNzTmFtZSs9IiAiK2J9O2EucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oYil7dGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCJcXHMqIitiKyJcXHMqIiksIiAiKS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8sIiIpfTthLmhhc0NsYXNzPWZ1bmN0aW9uKGIpe3JldHVybiEhdGhpcy5jbGFzc05hbWUubWF0Y2gobmV3IFJlZ0V4cCgiXFxzKiIrCmIrIlxccyoiKSl9fXJldHVybiBhfSxzZXRNb3ZpZVBhdGg6ZnVuY3Rpb24oYSl7dGhpcy5tb3ZpZVBhdGg9YX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSxiLGMpeyhhPXRoaXMuY2xpZW50c1thXSkmJmEucmVjZWl2ZUV2ZW50KGIsYyl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGEsYil7dGhpcy5jbGllbnRzW2FdPWJ9LGdldERPTU9iamVjdFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXtsZWZ0OjAsdG9wOjAsd2lkdGg6YS53aWR0aD9hLndpZHRoOmEub2Zmc2V0V2lkdGgsaGVpZ2h0OmEuaGVpZ2h0P2EuaGVpZ2h0OmEub2Zmc2V0SGVpZ2h0fTtpZihhLnN0eWxlLndpZHRoIT0iIiliLndpZHRoPWEuc3R5bGUud2lkdGgucmVwbGFjZSgicHgiLCIiKTtpZihhLnN0eWxlLmhlaWdodCE9IiIpYi5oZWlnaHQ9YS5zdHlsZS5oZWlnaHQucmVwbGFjZSgicHgiLCIiKTtmb3IoO2E7KXtiLmxlZnQrPWEub2Zmc2V0TGVmdDtiLnRvcCs9YS5vZmZzZXRUb3A7YT1hLm9mZnNldFBhcmVudH1yZXR1cm4gYn0sCkNsaWVudDpmdW5jdGlvbihhKXt0aGlzLmhhbmRsZXJzPXt9O3RoaXMuaWQ9WmVyb0NsaXBib2FyZC5uZXh0SWQrKzt0aGlzLm1vdmllSWQ9Ilplcm9DbGlwYm9hcmRNb3ZpZV8iK3RoaXMuaWQ7WmVyb0NsaXBib2FyZC5yZWdpc3Rlcih0aGlzLmlkLHRoaXMpO2EmJnRoaXMuZ2x1ZShhKX19OwpaZXJvQ2xpcGJvYXJkLkNsaWVudC5wcm90b3R5cGU9e2lkOjAscmVhZHk6ZmFsc2UsbW92aWU6bnVsbCxjbGlwVGV4dDoiIixmaWxlTmFtZToiIixhY3Rpb246ImNvcHkiLGhhbmRDdXJzb3JFbmFibGVkOnRydWUsY3NzRWZmZWN0czp0cnVlLGhhbmRsZXJzOm51bGwsc2l6ZWQ6ZmFsc2UsZ2x1ZTpmdW5jdGlvbihhLGIpe3RoaXMuZG9tRWxlbWVudD1aZXJvQ2xpcGJvYXJkLiQoYSk7YT05OTtpZih0aGlzLmRvbUVsZW1lbnQuc3R5bGUuekluZGV4KWE9cGFyc2VJbnQodGhpcy5kb21FbGVtZW50LnN0eWxlLnpJbmRleCkrMTt2YXIgYz1aZXJvQ2xpcGJvYXJkLmdldERPTU9iamVjdFBvc2l0aW9uKHRoaXMuZG9tRWxlbWVudCk7dGhpcy5kaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dmFyIGQ9dGhpcy5kaXYuc3R5bGU7ZC5wb3NpdGlvbj0iYWJzb2x1dGUiO2QubGVmdD10aGlzLmRvbUVsZW1lbnQub2Zmc2V0TGVmdCsicHgiO2QudG9wPXRoaXMuZG9tRWxlbWVudC5vZmZzZXRUb3ArCiJweCI7ZC53aWR0aD1jLndpZHRoKyJweCI7ZC5oZWlnaHQ9Yy5oZWlnaHQrInB4IjtkLnpJbmRleD1hO2lmKHR5cGVvZiBiIT0idW5kZWZpbmVkIiYmYiE9IiIpdGhpcy5kaXYudGl0bGU9YjtpZihjLndpZHRoIT0wJiZjLmhlaWdodCE9MCl0aGlzLnNpemVkPXRydWU7dGhpcy5kb21FbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5kaXYpO3RoaXMuZGl2LmlubmVySFRNTD10aGlzLmdldEhUTUwoYy53aWR0aCxjLmhlaWdodCl9LHBvc2l0aW9uRWxlbWVudDpmdW5jdGlvbigpe3ZhciBhPVplcm9DbGlwYm9hcmQuZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KSxiPXRoaXMuZGl2LnN0eWxlO2IucG9zaXRpb249ImFic29sdXRlIjtiLmxlZnQ9dGhpcy5kb21FbGVtZW50Lm9mZnNldExlZnQrInB4IjtiLnRvcD10aGlzLmRvbUVsZW1lbnQub2Zmc2V0VG9wKyJweCI7Yi53aWR0aD1hLndpZHRoKyJweCI7Yi5oZWlnaHQ9YS5oZWlnaHQrInB4IjtpZihhLndpZHRoIT0KMCYmYS5oZWlnaHQhPTApdGhpcy5zaXplZD10cnVlO2I9dGhpcy5kaXYuY2hpbGROb2Rlc1swXTtiLndpZHRoPWEud2lkdGg7Yi5oZWlnaHQ9YS5oZWlnaHR9LGdldEhUTUw6ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIixkPSJpZD0iK3RoaXMuaWQrIiZ3aWR0aD0iK2ErIiZoZWlnaHQ9IitiO2lmKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL01TSUUvKSl7dmFyIGY9bG9jYXRpb24uaHJlZi5tYXRjaCgvXmh0dHBzL2kpPyJodHRwczovLyI6Imh0dHA6Ly8iO2MrPSc8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9IicrZisnZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoL3N3Zmxhc2guY2FiI3ZlcnNpb249MTAsMCwwLDAiIHdpZHRoPSInK2ErJyIgaGVpZ2h0PSInK2IrJyIgaWQ9IicrdGhpcy5tb3ZpZUlkKyciIGFsaWduPSJtaWRkbGUiPjxwYXJhbSBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0iZmFsc2UiIC8+PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJysKWmVyb0NsaXBib2FyZC5tb3ZpZVBhdGgrJyIgLz48cGFyYW0gbmFtZT0ibG9vcCIgdmFsdWU9ImZhbHNlIiAvPjxwYXJhbSBuYW1lPSJtZW51IiB2YWx1ZT0iZmFsc2UiIC8+PHBhcmFtIG5hbWU9InF1YWxpdHkiIHZhbHVlPSJiZXN0IiAvPjxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iI2ZmZmZmZiIgLz48cGFyYW0gbmFtZT0iZmxhc2h2YXJzIiB2YWx1ZT0iJytkKyciLz48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSJ0cmFuc3BhcmVudCIvPjwvb2JqZWN0Pid9ZWxzZSBjKz0nPGVtYmVkIGlkPSInK3RoaXMubW92aWVJZCsnIiBzcmM9IicrWmVyb0NsaXBib2FyZC5tb3ZpZVBhdGgrJyIgbG9vcD0iZmFsc2UiIG1lbnU9ImZhbHNlIiBxdWFsaXR5PSJiZXN0IiBiZ2NvbG9yPSIjZmZmZmZmIiB3aWR0aD0iJythKyciIGhlaWdodD0iJytiKyciIG5hbWU9IicrdGhpcy5tb3ZpZUlkKyciIGFsaWduPSJtaWRkbGUiIGFsbG93U2NyaXB0QWNjZXNzPSJhbHdheXMiIGFsbG93RnVsbFNjcmVlbj0iZmFsc2UiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIgZmxhc2h2YXJzPSInKwpkKyciIHdtb2RlPSJ0cmFuc3BhcmVudCIgLz4nO3JldHVybiBjfSxoaWRlOmZ1bmN0aW9uKCl7aWYodGhpcy5kaXYpdGhpcy5kaXYuc3R5bGUubGVmdD0iLTIwMDBweCJ9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLnJlcG9zaXRpb24oKX0sZGVzdHJveTpmdW5jdGlvbigpe2lmKHRoaXMuZG9tRWxlbWVudCYmdGhpcy5kaXYpe3RoaXMuaGlkZSgpO3RoaXMuZGl2LmlubmVySFRNTD0iIjt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO3RyeXthLnJlbW92ZUNoaWxkKHRoaXMuZGl2KX1jYXRjaChiKXt9dGhpcy5kaXY9dGhpcy5kb21FbGVtZW50PW51bGx9fSxyZXBvc2l0aW9uOmZ1bmN0aW9uKGEpe2lmKGEpKHRoaXMuZG9tRWxlbWVudD1aZXJvQ2xpcGJvYXJkLiQoYSkpfHx0aGlzLmhpZGUoKTtpZih0aGlzLmRvbUVsZW1lbnQmJnRoaXMuZGl2KXthPVplcm9DbGlwYm9hcmQuZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KTt2YXIgYj0KdGhpcy5kaXYuc3R5bGU7Yi5sZWZ0PSIiK2EubGVmdCsicHgiO2IudG9wPSIiK2EudG9wKyJweCJ9fSxjbGVhclRleHQ6ZnVuY3Rpb24oKXt0aGlzLmNsaXBUZXh0PSIiO3RoaXMucmVhZHkmJnRoaXMubW92aWUuY2xlYXJUZXh0KCl9LGFwcGVuZFRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5jbGlwVGV4dCs9YTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLmFwcGVuZFRleHQoYSl9LHNldFRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5jbGlwVGV4dD1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0VGV4dChhKX0sc2V0Q2hhclNldDpmdW5jdGlvbihhKXt0aGlzLmNoYXJTZXQ9YTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldENoYXJTZXQoYSl9LHNldEJvbUluYzpmdW5jdGlvbihhKXt0aGlzLmluY0JvbT1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0Qm9tSW5jKGEpfSxzZXRGaWxlTmFtZTpmdW5jdGlvbihhKXt0aGlzLmZpbGVOYW1lPWE7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5zZXRGaWxlTmFtZShhKX0sCnNldEFjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmFjdGlvbj1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0QWN0aW9uKGEpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eb24vLCIiKTt0aGlzLmhhbmRsZXJzW2FdfHwodGhpcy5oYW5kbGVyc1thXT1bXSk7dGhpcy5oYW5kbGVyc1thXS5wdXNoKGIpfSxzZXRIYW5kQ3Vyc29yOmZ1bmN0aW9uKGEpe3RoaXMuaGFuZEN1cnNvckVuYWJsZWQ9YTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldEhhbmRDdXJzb3IoYSl9LHNldENTU0VmZmVjdHM6ZnVuY3Rpb24oYSl7dGhpcy5jc3NFZmZlY3RzPSEhYX0scmVjZWl2ZUV2ZW50OmZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eb24vLCIiKTtzd2l0Y2goYSl7Y2FzZSAibG9hZCI6dGhpcy5tb3ZpZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm1vdmllSWQpOwppZighdGhpcy5tb3ZpZSl7dmFyIGM9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZWNlaXZlRXZlbnQoImxvYWQiLG51bGwpfSwxKTtyZXR1cm59aWYoIXRoaXMucmVhZHkmJm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3gvKSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cy8pKXtjPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2MucmVjZWl2ZUV2ZW50KCJsb2FkIixudWxsKX0sMTAwKTt0aGlzLnJlYWR5PXRydWU7cmV0dXJufXRoaXMucmVhZHk9dHJ1ZTt0aGlzLm1vdmllLmNsZWFyVGV4dCgpO3RoaXMubW92aWUuYXBwZW5kVGV4dCh0aGlzLmNsaXBUZXh0KTt0aGlzLm1vdmllLnNldEZpbGVOYW1lKHRoaXMuZmlsZU5hbWUpO3RoaXMubW92aWUuc2V0QWN0aW9uKHRoaXMuYWN0aW9uKTt0aGlzLm1vdmllLnNldENoYXJTZXQodGhpcy5jaGFyU2V0KTt0aGlzLm1vdmllLnNldEJvbUluYyh0aGlzLmluY0JvbSk7dGhpcy5tb3ZpZS5zZXRIYW5kQ3Vyc29yKHRoaXMuaGFuZEN1cnNvckVuYWJsZWQpOwpicmVhaztjYXNlICJtb3VzZW92ZXIiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLnJlY292ZXJBY3RpdmUmJnRoaXMuZG9tRWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIik7YnJlYWs7Y2FzZSAibW91c2VvdXQiOmlmKHRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzKXt0aGlzLnJlY292ZXJBY3RpdmU9ZmFsc2U7aWYodGhpcy5kb21FbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSl7dGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt0aGlzLnJlY292ZXJBY3RpdmU9dHJ1ZX19YnJlYWs7Y2FzZSAibW91c2Vkb3duIjp0aGlzLmRvbUVsZW1lbnQmJnRoaXMuY3NzRWZmZWN0cyYmdGhpcy5kb21FbGVtZW50LmFkZENsYXNzKCJhY3RpdmUiKTticmVhaztjYXNlICJtb3VzZXVwIjppZih0aGlzLmRvbUVsZW1lbnQmJnRoaXMuY3NzRWZmZWN0cyl7dGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt0aGlzLnJlY292ZXJBY3RpdmU9CmZhbHNlfWJyZWFrfWlmKHRoaXMuaGFuZGxlcnNbYV0pZm9yKHZhciBkPTAsZj10aGlzLmhhbmRsZXJzW2FdLmxlbmd0aDtkPGY7ZCsrKXt2YXIgZT10aGlzLmhhbmRsZXJzW2FdW2RdO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKWUodGhpcyxiKTtlbHNlIGlmKHR5cGVvZiBlPT0ib2JqZWN0IiYmZS5sZW5ndGg9PTIpZVswXVtlWzFdXSh0aGlzLGIpO2Vsc2UgdHlwZW9mIGU9PSJzdHJpbmciJiZ3aW5kb3dbZV0odGhpcyxiKX19fTsKCgovKgogKiBGaWxlOiAgICAgICAgVGFibGVUb29scy5taW4uanMKICogVmVyc2lvbjogICAgIDIuMC4xCiAqIEF1dGhvcjogICAgICBBbGxhbiBKYXJkaW5lICh3d3cuc3ByeW1lZGlhLmNvLnVrKQogKiAKICogQ29weXJpZ2h0IDIwMDktMjAxMSBBbGxhbiBKYXJkaW5lLCBhbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIHVuZGVyIGVpdGhlciB0aGUgR1BMIHYyIGxpY2Vuc2Ugb3IgYQogKiBCU0QgKDMgcG9pbnQpIHN0eWxlIGxpY2Vuc2UsIGFzIHN1cHBsaWVkIHdpdGggdGhpcyBzb2Z0d2FyZS4KICogCiAqIFRoaXMgc291cmNlIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSAKICogb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgbGljZW5zZSBmaWxlcyBmb3IgZGV0YWlscy4KICovCnZhciBUYWJsZVRvb2xzOwooZnVuY3Rpb24oZSxuLGope1RhYmxlVG9vbHM9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5DTEFTU3x8dGhpcy5DTEFTUyE9IlRhYmxlVG9vbHMiKWFsZXJ0KCJXYXJuaW5nOiBUYWJsZVRvb2xzIG11c3QgYmUgaW5pdGlhbGlzZWQgd2l0aCB0aGUga2V5d29yZCAnbmV3JyIpO3RoaXMucz17dGhhdDp0aGlzLGR0Om51bGwscHJpbnQ6e3NhdmVTdGFydDotMSxzYXZlTGVuZ3RoOi0xLHNhdmVTY3JvbGw6LTEsZnVuY0VuZDpmdW5jdGlvbigpe319LGJ1dHRvbkNvdW50ZXI6MCxzZWxlY3Q6e3R5cGU6IiIsc2VsZWN0ZWQ6W10scHJlUm93U2VsZWN0Om51bGwscG9zdFNlbGVjdGVkOm51bGwscG9zdERlc2VsZWN0ZWQ6bnVsbCxhbGw6ZmFsc2Usc2VsZWN0ZWRDbGFzczoiIn0sY3VzdG9tOnt9LHN3ZlBhdGg6IiIsYnV0dG9uU2V0OltdLG1hc3RlcjpmYWxzZX07dGhpcy5kb209e2NvbnRhaW5lcjpudWxsLHRhYmxlOm51bGwscHJpbnQ6e2hpZGRlbjpbXSxtZXNzYWdlOm51bGx9LGNvbGxlY3Rpb246e2NvbGxlY3Rpb246bnVsbCwKYmFja2dyb3VuZDpudWxsfX07dGhpcy5mblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc307aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQiKWI9e307dGhpcy5zLmR0PWEuZm5TZXR0aW5ncygpO3RoaXMuX2ZuQ29uc3RydWN0KGIpO3JldHVybiB0aGlzfTtUYWJsZVRvb2xzLnByb3RvdHlwZT17Zm5HZXRTZWxlY3RlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mbkdldE1hc3RlclNldHRpbmdzKCkuc2VsZWN0LnNlbGVjdGVkfSxmbklzU2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXMuZm5HZXRTZWxlY3RlZCgpLGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoYT09YltjXSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9LGZuU2VsZWN0QWxsOmZ1bmN0aW9uKCl7dGhpcy5fZm5HZXRNYXN0ZXJTZXR0aW5ncygpLnRoYXQuX2ZuUm93U2VsZWN0QWxsKCl9LGZuU2VsZWN0Tm9uZTpmdW5jdGlvbigpe3RoaXMuX2ZuR2V0TWFzdGVyU2V0dGluZ3MoKS50aGF0Ll9mblJvd0Rlc2VsZWN0QWxsKCl9LApmbkdldFRpdGxlOmZ1bmN0aW9uKGEpe3ZhciBiPSIiO2lmKHR5cGVvZiBhLnNUaXRsZSE9InVuZGVmaW5lZCImJmEuc1RpdGxlIT09IiIpYj1hLnNUaXRsZTtlbHNle2E9ai5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKTtpZihhLmxlbmd0aD4wKWI9YVswXS5pbm5lckhUTUx9cmV0dXJuIlx1MDBhMSIudG9TdHJpbmcoKS5sZW5ndGg8ND9iLnJlcGxhY2UoL1teYS16QS1aMC05X1x1MDBBMS1cdUZGRkZcLixcLV8gIVwoXCldL2csIiIpOmIucmVwbGFjZSgvW15hLXpBLVowLTlfXC4sXC1fICFcKFwpXS9nLCIiKX0sZm5DYWxjQ29sUmF0aW9zOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucy5kdC5hb0NvbHVtbnM7YT10aGlzLl9mbkNvbHVtblRhcmdldHMoYS5tQ29sdW1ucyk7dmFyIGM9W10sZD0wLGY9MCxoLGc7aD0wO2ZvcihnPWEubGVuZ3RoO2g8ZztoKyspaWYoYVtoXSl7ZD1iW2hdLm5UaC5vZmZzZXRXaWR0aDtmKz1kO2MucHVzaChkKX1oPTA7Zm9yKGc9Yy5sZW5ndGg7aDwKZztoKyspY1toXS89ZjtyZXR1cm4gYy5qb2luKCJcdCIpfSxmbkdldFRhYmxlRGF0YTpmdW5jdGlvbihhKXtpZih0aGlzLnMuZHQpcmV0dXJuIHRoaXMuX2ZuR2V0RGF0YVRhYmxlc0RhdGEoYSl9LGZuU2V0VGV4dDpmdW5jdGlvbihhLGIpe3RoaXMuX2ZuRmxhc2hTZXRUZXh0KGEsYil9LGZuUmVzaXplQnV0dG9uczpmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBaZXJvQ2xpcGJvYXJkLmNsaWVudHMpaWYoYSl7dmFyIGI9WmVyb0NsaXBib2FyZC5jbGllbnRzW2FdO3R5cGVvZiBiLmRvbUVsZW1lbnQhPSJ1bmRlZmluZWQiJiZiLmRvbUVsZW1lbnQucGFyZW50Tm9kZT09dGhpcy5kb20uY29udGFpbmVyJiZiLnBvc2l0aW9uRWxlbWVudCgpfX0sZm5SZXNpemVSZXF1aXJlZDpmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBaZXJvQ2xpcGJvYXJkLmNsaWVudHMpaWYoYSl7dmFyIGI9WmVyb0NsaXBib2FyZC5jbGllbnRzW2FdO2lmKHR5cGVvZiBiLmRvbUVsZW1lbnQhPSJ1bmRlZmluZWQiJiZiLmRvbUVsZW1lbnQucGFyZW50Tm9kZT09CnRoaXMuZG9tLmNvbnRhaW5lciYmYi5zaXplZD09PWZhbHNlKXJldHVybiB0cnVlfXJldHVybiBmYWxzZX0sX2ZuQ29uc3RydWN0OmZ1bmN0aW9uKGEpe3RoaXMuX2ZuQ3VzdG9taXNlU2V0dGluZ3MoYSk7dGhpcy5kb20uY29udGFpbmVyPWouY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5kb20uY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7dGhpcy5kb20uY29udGFpbmVyLmNsYXNzTmFtZT0hdGhpcy5zLmR0LmJKVUk/IkRUVFRfY29udGFpbmVyIjoiRFRUVF9jb250YWluZXIgdWktYnV0dG9uc2V0IHVpLWJ1dHRvbnNldC1tdWx0aSI7dGhpcy5zLnNlbGVjdC50eXBlIT0ibm9uZSImJnRoaXMuX2ZuUm93U2VsZWN0Q29uZmlnKCk7dGhpcy5fZm5CdXR0b25EZWZpbmF0aW9ucyh0aGlzLnMuYnV0dG9uU2V0LHRoaXMuZG9tLmNvbnRhaW5lcil9LF9mbkN1c3RvbWlzZVNldHRpbmdzOmZ1bmN0aW9uKGEpe2lmKHR5cGVvZiB0aGlzLnMuZHQuX1RhYmxlVG9vbHNJbml0PT0KInVuZGVmaW5lZCIpe3RoaXMucy5tYXN0ZXI9dHJ1ZTt0aGlzLnMuZHQuX1RhYmxlVG9vbHNJbml0PXRydWV9dGhpcy5kb20udGFibGU9dGhpcy5zLmR0Lm5UYWJsZTt0aGlzLnMuY3VzdG9tPWUuZXh0ZW5kKHt9LFRhYmxlVG9vbHMuREVGQVVMVFMsYSk7dGhpcy5zLnN3ZlBhdGg9dGhpcy5zLmN1c3RvbS5zU3dmUGF0aDtpZih0eXBlb2YgWmVyb0NsaXBib2FyZCE9InVuZGVmaW5lZCIpWmVyb0NsaXBib2FyZC5tb3ZpZVBhdGg9dGhpcy5zLnN3ZlBhdGg7dGhpcy5zLnNlbGVjdC50eXBlPXRoaXMucy5jdXN0b20uc1Jvd1NlbGVjdDt0aGlzLnMuc2VsZWN0LnByZVJvd1NlbGVjdD10aGlzLnMuY3VzdG9tLmZuUHJlUm93U2VsZWN0O3RoaXMucy5zZWxlY3QucG9zdFNlbGVjdGVkPXRoaXMucy5jdXN0b20uZm5Sb3dTZWxlY3RlZDt0aGlzLnMuc2VsZWN0LnBvc3REZXNlbGVjdGVkPXRoaXMucy5jdXN0b20uZm5Sb3dEZXNlbGVjdGVkO3RoaXMucy5zZWxlY3Quc2VsZWN0ZWRDbGFzcz10aGlzLnMuY3VzdG9tLnNTZWxlY3RlZENsYXNzOwp0aGlzLnMuYnV0dG9uU2V0PXRoaXMucy5jdXN0b20uYUJ1dHRvbnN9LF9mbkJ1dHRvbkRlZmluYXRpb25zOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MCxmPWEubGVuZ3RoO2Q8ZjtkKyspe2lmKHR5cGVvZiBhW2RdPT0ic3RyaW5nIil7aWYodHlwZW9mIFRhYmxlVG9vbHMuQlVUVE9OU1thW2RdXT09InVuZGVmaW5lZCIpe2FsZXJ0KCJUYWJsZVRvb2xzOiBXYXJuaW5nIC0gdW5rbm93biBidXR0b24gdHlwZTogIithW2RdKTtjb250aW51ZX1jPWUuZXh0ZW5kKHt9LFRhYmxlVG9vbHMuQlVUVE9OU1thW2RdXSx0cnVlKX1lbHNle2lmKHR5cGVvZiBUYWJsZVRvb2xzLkJVVFRPTlNbYVtkXS5zRXh0ZW5kc109PSJ1bmRlZmluZWQiKXthbGVydCgiVGFibGVUb29sczogV2FybmluZyAtIHVua25vd24gYnV0dG9uIHR5cGU6ICIrYVtkXS5zRXh0ZW5kcyk7Y29udGludWV9Yz1lLmV4dGVuZCh7fSxUYWJsZVRvb2xzLkJVVFRPTlNbYVtkXS5zRXh0ZW5kc10sdHJ1ZSk7Yz1lLmV4dGVuZChjLAphW2RdLHRydWUpfWlmKHRoaXMucy5kdC5iSlVJKXtjLnNCdXR0b25DbGFzcys9IiB1aS1idXR0b24gdWktc3RhdGUtZGVmYXVsdCI7Yy5zQnV0dG9uQ2xhc3NIb3Zlcis9IiB1aS1idXR0b24gdWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1ob3ZlciJ9Yi5hcHBlbmRDaGlsZCh0aGlzLl9mbkNyZWF0ZUJ1dHRvbihjKSl9fSxfZm5DcmVhdGVCdXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fZm5CdXR0b25CYXNlKGEpO2lmKGEuc0FjdGlvbj09InByaW50Iil0aGlzLl9mblByaW50Q29uZmlnKGIsYSk7ZWxzZSBpZihhLnNBY3Rpb24ubWF0Y2goL2ZsYXNoLykpdGhpcy5fZm5GbGFzaENvbmZpZyhiLGEpO2Vsc2UgaWYoYS5zQWN0aW9uPT0idGV4dCIpdGhpcy5fZm5UZXh0Q29uZmlnKGIsYSk7ZWxzZSBpZihhLnNBY3Rpb249PSJjb2xsZWN0aW9uIil7dGhpcy5fZm5UZXh0Q29uZmlnKGIsYSk7dGhpcy5fZm5Db2xsZWN0aW9uQ29uZmlnKGIsYSl9cmV0dXJuIGJ9LF9mbkJ1dHRvbkJhc2U6ZnVuY3Rpb24oYSl7dmFyIGI9CmouY3JlYXRlRWxlbWVudCgiYnV0dG9uIiksYz1qLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxkPXRoaXMuX2ZuR2V0TWFzdGVyU2V0dGluZ3MoKTtiLmNsYXNzTmFtZT0iRFRUVF9idXR0b24gIithLnNCdXR0b25DbGFzcztiLnNldEF0dHJpYnV0ZSgiaWQiLCJUb29sVGFibGVzXyIrdGhpcy5zLmR0LnNJbnN0YW5jZSsiXyIrZC5idXR0b25Db3VudGVyKTtiLmFwcGVuZENoaWxkKGMpO2MuaW5uZXJIVE1MPWEuc0J1dHRvblRleHQ7ZC5idXR0b25Db3VudGVyKys7cmV0dXJuIGJ9LF9mbkdldE1hc3RlclNldHRpbmdzOmZ1bmN0aW9uKCl7aWYodGhpcy5zLm1hc3RlcilyZXR1cm4gdGhpcy5zO2Vsc2UgZm9yKHZhciBhPVRhYmxlVG9vbHMuX2FJbnN0YW5jZXMsYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylpZih0aGlzLmRvbS50YWJsZT09YVtiXS5zLmR0Lm5UYWJsZSlyZXR1cm4gYVtiXS5zfSxfZm5Db2xsZWN0aW9uQ29uZmlnOmZ1bmN0aW9uKGEsYil7YT1qLmNyZWF0ZUVsZW1lbnQoImRpdiIpOwphLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2EuY2xhc3NOYW1lPSF0aGlzLnMuZHQuYkpVST8iRFRUVF9jb2xsZWN0aW9uIjoiRFRUVF9jb2xsZWN0aW9uIHVpLWJ1dHRvbnNldCB1aS1idXR0b25zZXQtbXVsdGkiO2IuX2NvbGxlY3Rpb249YTt0aGlzLl9mbkJ1dHRvbkRlZmluYXRpb25zKGIuYUJ1dHRvbnMsYSl9LF9mbkNvbGxlY3Rpb25TaG93OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWUoYSkub2Zmc2V0KCksZj1iLl9jb2xsZWN0aW9uO2I9ZC5sZWZ0O2Q9ZC50b3ArZShhKS5vdXRlckhlaWdodCgpO3ZhciBoPWUobikuaGVpZ2h0KCksZz1lKGopLmhlaWdodCgpLGs9ZShuKS53aWR0aCgpLG09ZShqKS53aWR0aCgpO2Yuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtmLnN0eWxlLmxlZnQ9YisicHgiO2Yuc3R5bGUudG9wPWQrInB4IjtmLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtlKGYpLmNzcygib3BhY2l0eSIsMCk7dmFyIGw9ai5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlLnBvc2l0aW9uPQoiYWJzb2x1dGUiO2wuc3R5bGUubGVmdD0iMHB4IjtsLnN0eWxlLnRvcD0iMHB4IjtsLnN0eWxlLmhlaWdodD0oaD5nP2g6ZykrInB4IjtsLnN0eWxlLndpZHRoPShrPm0/azptKSsicHgiO2wuY2xhc3NOYW1lPSJEVFRUX2NvbGxlY3Rpb25fYmFja2dyb3VuZCI7ZShsKS5jc3MoIm9wYWNpdHkiLDApO2ouYm9keS5hcHBlbmRDaGlsZChsKTtqLmJvZHkuYXBwZW5kQ2hpbGQoZik7aD1lKGYpLm91dGVyV2lkdGgoKTtrPWUoZikub3V0ZXJIZWlnaHQoKTtpZihiK2g+bSlmLnN0eWxlLmxlZnQ9bS1oKyJweCI7aWYoZCtrPmcpZi5zdHlsZS50b3A9ZC1rLWUoYSkub3V0ZXJIZWlnaHQoKSsicHgiO3RoaXMuZG9tLmNvbGxlY3Rpb24uY29sbGVjdGlvbj1mO3RoaXMuZG9tLmNvbGxlY3Rpb24uYmFja2dyb3VuZD1sO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGYpLmFuaW1hdGUoe29wYWNpdHk6MX0sNTAwKTtlKGwpLmFuaW1hdGUoe29wYWNpdHk6MC4yNX0sNTAwKX0sMTApO2UobCkuY2xpY2soZnVuY3Rpb24oKXtjLl9mbkNvbGxlY3Rpb25IaWRlLmNhbGwoYywKbnVsbCxudWxsKX0pfSxfZm5Db2xsZWN0aW9uSGlkZTpmdW5jdGlvbihhLGIpe2lmKCEoYiE9PW51bGwmJmIuc0V4dGVuZHM9PSJjb2xsZWN0aW9uIikpaWYodGhpcy5kb20uY29sbGVjdGlvbi5jb2xsZWN0aW9uIT09bnVsbCl7ZSh0aGlzLmRvbS5jb2xsZWN0aW9uLmNvbGxlY3Rpb24pLmFuaW1hdGUoe29wYWNpdHk6MH0sNTAwLGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIn0pO2UodGhpcy5kb20uY29sbGVjdGlvbi5iYWNrZ3JvdW5kKS5hbmltYXRlKHtvcGFjaXR5OjB9LDUwMCxmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX0pO3RoaXMuZG9tLmNvbGxlY3Rpb24uY29sbGVjdGlvbj1udWxsO3RoaXMuZG9tLmNvbGxlY3Rpb24uYmFja2dyb3VuZD1udWxsfX0sX2ZuUm93U2VsZWN0Q29uZmlnOmZ1bmN0aW9uKCl7aWYodGhpcy5zLm1hc3Rlcil7dmFyIGE9dGhpcyxiLGMsZD10aGlzLnMuZHQuYW9PcGVuUm93cztlKGEucy5kdC5uVGFibGUpLmFkZENsYXNzKCJEVFRUX3NlbGVjdGFibGUiKTsKZSgidHIiLGEucy5kdC5uVEJvZHkpLmxpdmUoImNsaWNrIixmdW5jdGlvbihmKXtpZih0aGlzLnBhcmVudE5vZGU9PWEucy5kdC5uVEJvZHkpe2I9MDtmb3IoYz1kLmxlbmd0aDtiPGM7YisrKWlmKHRoaXM9PWRbYl0ublRyKXJldHVybjthLnMuc2VsZWN0LnByZVJvd1NlbGVjdCE9PW51bGwmJiFhLnMuc2VsZWN0LnByZVJvd1NlbGVjdC5jYWxsKGEsZil8fChhLnMuc2VsZWN0LnR5cGU9PSJzaW5nbGUiP2EuX2ZuUm93U2VsZWN0U2luZ2xlLmNhbGwoYSx0aGlzKTphLl9mblJvd1NlbGVjdE11bHRpLmNhbGwoYSx0aGlzKSl9fSk7YS5zLmR0LmFvRHJhd0NhbGxiYWNrLnB1c2goe2ZuOmZ1bmN0aW9uKCl7YS5zLnNlbGVjdC5hbGwmJmEucy5kdC5vRmVhdHVyZXMuYlNlcnZlclNpZGUmJmEuZm5TZWxlY3RBbGwoKX0sc05hbWU6IlRhYmxlVG9vbHNfc2VsZWN0In0pfX0sX2ZuUm93U2VsZWN0U2luZ2xlOmZ1bmN0aW9uKGEpe2lmKHRoaXMucy5tYXN0ZXIpaWYoIWUoInRkIixhKS5oYXNDbGFzcyh0aGlzLnMuZHQub0NsYXNzZXMuc1Jvd0VtcHR5KSl7aWYoZShhKS5oYXNDbGFzcyh0aGlzLnMuc2VsZWN0LnNlbGVjdGVkQ2xhc3MpKXRoaXMuX2ZuUm93RGVzZWxlY3QoYSk7CmVsc2V7dGhpcy5zLnNlbGVjdC5zZWxlY3RlZC5sZW5ndGghPT0wJiZ0aGlzLl9mblJvd0Rlc2VsZWN0QWxsKCk7dGhpcy5zLnNlbGVjdC5zZWxlY3RlZC5wdXNoKGEpO2UoYSkuYWRkQ2xhc3ModGhpcy5zLnNlbGVjdC5zZWxlY3RlZENsYXNzKTt0aGlzLnMuc2VsZWN0LnBvc3RTZWxlY3RlZCE9PW51bGwmJnRoaXMucy5zZWxlY3QucG9zdFNlbGVjdGVkLmNhbGwodGhpcyxhKX1UYWJsZVRvb2xzLl9mbkV2ZW50RGlzcGF0Y2godGhpcywic2VsZWN0IixhKX19LF9mblJvd1NlbGVjdE11bHRpOmZ1bmN0aW9uKGEpe2lmKHRoaXMucy5tYXN0ZXIpaWYoIWUoInRkIixhKS5oYXNDbGFzcyh0aGlzLnMuZHQub0NsYXNzZXMuc1Jvd0VtcHR5KSl7aWYoZShhKS5oYXNDbGFzcyh0aGlzLnMuc2VsZWN0LnNlbGVjdGVkQ2xhc3MpKXRoaXMuX2ZuUm93RGVzZWxlY3QoYSk7ZWxzZXt0aGlzLnMuc2VsZWN0LnNlbGVjdGVkLnB1c2goYSk7ZShhKS5hZGRDbGFzcyh0aGlzLnMuc2VsZWN0LnNlbGVjdGVkQ2xhc3MpOwp0aGlzLnMuc2VsZWN0LnBvc3RTZWxlY3RlZCE9PW51bGwmJnRoaXMucy5zZWxlY3QucG9zdFNlbGVjdGVkLmNhbGwodGhpcyxhKX1UYWJsZVRvb2xzLl9mbkV2ZW50RGlzcGF0Y2godGhpcywic2VsZWN0IixhKX19LF9mblJvd1NlbGVjdEFsbDpmdW5jdGlvbigpe2lmKHRoaXMucy5tYXN0ZXIpe2Zvcih2YXIgYSxiPTAsYz10aGlzLnMuZHQuYWlEaXNwbGF5TWFzdGVyLmxlbmd0aDtiPGM7YisrKXthPXRoaXMucy5kdC5hb0RhdGFbdGhpcy5zLmR0LmFpRGlzcGxheU1hc3RlcltiXV0ublRyO2lmKCFlKGEpLmhhc0NsYXNzKHRoaXMucy5zZWxlY3Quc2VsZWN0ZWRDbGFzcykpe3RoaXMucy5zZWxlY3Quc2VsZWN0ZWQucHVzaChhKTtlKGEpLmFkZENsYXNzKHRoaXMucy5zZWxlY3Quc2VsZWN0ZWRDbGFzcyl9fXRoaXMucy5zZWxlY3QuYWxsPXRydWU7VGFibGVUb29scy5fZm5FdmVudERpc3BhdGNoKHRoaXMsInNlbGVjdCIsbnVsbCl9fSxfZm5Sb3dEZXNlbGVjdEFsbDpmdW5jdGlvbigpe2lmKHRoaXMucy5tYXN0ZXIpe2Zvcih2YXIgYT0KdGhpcy5zLnNlbGVjdC5zZWxlY3RlZC5sZW5ndGgtMTthPj0wO2EtLSl0aGlzLl9mblJvd0Rlc2VsZWN0KGEpO3RoaXMucy5zZWxlY3QuYWxsPWZhbHNlO1RhYmxlVG9vbHMuX2ZuRXZlbnREaXNwYXRjaCh0aGlzLCJzZWxlY3QiLG51bGwpfX0sX2ZuUm93RGVzZWxlY3Q6ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEubm9kZU5hbWUhPSJ1bmRlZmluZWQiKWE9ZS5pbkFycmF5KGEsdGhpcy5zLnNlbGVjdC5zZWxlY3RlZCk7dmFyIGI9dGhpcy5zLnNlbGVjdC5zZWxlY3RlZFthXTtlKGIpLnJlbW92ZUNsYXNzKHRoaXMucy5zZWxlY3Quc2VsZWN0ZWRDbGFzcyk7dGhpcy5zLnNlbGVjdC5zZWxlY3RlZC5zcGxpY2UoYSwxKTt0aGlzLnMuc2VsZWN0LnBvc3REZXNlbGVjdGVkIT09bnVsbCYmdGhpcy5zLnNlbGVjdC5wb3N0RGVzZWxlY3RlZC5jYWxsKHRoaXMsYik7dGhpcy5zLnNlbGVjdC5hbGw9ZmFsc2V9LF9mblRleHRDb25maWc6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2IuZm5Jbml0IT09Cm51bGwmJmIuZm5Jbml0LmNhbGwodGhpcyxhLGIpO2lmKGIuc1Rvb2xUaXAhPT0iIilhLnRpdGxlPWIuc1Rvb2xUaXA7ZShhKS5ob3ZlcihmdW5jdGlvbigpe2UoYSkucmVtb3ZlQ2xhc3MoYi5zQnV0dG9uQ2xhc3MpLmFkZENsYXNzKGIuc0J1dHRvbkNsYXNzSG92ZXIpO2IuZm5Nb3VzZW92ZXIhPT1udWxsJiZiLmZuTW91c2VvdmVyLmNhbGwodGhpcyxhLGIsbnVsbCl9LGZ1bmN0aW9uKCl7ZShhKS5yZW1vdmVDbGFzcyhiLnNCdXR0b25DbGFzc0hvdmVyKS5hZGRDbGFzcyhiLnNCdXR0b25DbGFzcyk7Yi5mbk1vdXNlb3V0IT09bnVsbCYmYi5mbk1vdXNlb3V0LmNhbGwodGhpcyxhLGIsbnVsbCl9KTtiLmZuU2VsZWN0IT09bnVsbCYmVGFibGVUb29scy5fZm5FdmVudExpc3Rlbih0aGlzLCJzZWxlY3QiLGZ1bmN0aW9uKGQpe2IuZm5TZWxlY3QuY2FsbChjLGEsYixkKX0pO2UoYSkuY2xpY2soZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2IuZm5DbGljayE9PW51bGwmJmIuZm5DbGljay5jYWxsKGMsCmEsYixudWxsKTtiLmZuQ29tcGxldGUhPT1udWxsJiZiLmZuQ29tcGxldGUuY2FsbChjLGEsYixudWxsLG51bGwpO2MuX2ZuQ29sbGVjdGlvbkhpZGUoYSxiKX0pfSxfZm5GbGFzaENvbmZpZzpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1uZXcgWmVyb0NsaXBib2FyZC5DbGllbnQ7Yi5mbkluaXQhPT1udWxsJiZiLmZuSW5pdC5jYWxsKHRoaXMsYSxiKTtkLnNldEhhbmRDdXJzb3IodHJ1ZSk7aWYoYi5zQWN0aW9uPT0iZmxhc2hfc2F2ZSIpe2Quc2V0QWN0aW9uKCJzYXZlIik7ZC5zZXRDaGFyU2V0KGIuc0NoYXJTZXQ9PSJ1dGYxNmxlIj8iVVRGMTZMRSI6IlVURjgiKTtkLnNldEJvbUluYyhiLmJCb21JbmMpO2Quc2V0RmlsZU5hbWUoYi5zRmlsZU5hbWUucmVwbGFjZSgiKiIsdGhpcy5mbkdldFRpdGxlKGIpKSl9ZWxzZSBpZihiLnNBY3Rpb249PSJmbGFzaF9wZGYiKXtkLnNldEFjdGlvbigicGRmIik7ZC5zZXRGaWxlTmFtZShiLnNGaWxlTmFtZS5yZXBsYWNlKCIqIix0aGlzLmZuR2V0VGl0bGUoYikpKX1lbHNlIGQuc2V0QWN0aW9uKCJjb3B5Iik7CmQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VPdmVyIixmdW5jdGlvbigpe2UoYSkucmVtb3ZlQ2xhc3MoYi5zQnV0dG9uQ2xhc3MpLmFkZENsYXNzKGIuc0J1dHRvbkNsYXNzSG92ZXIpO2IuZm5Nb3VzZW92ZXIhPT1udWxsJiZiLmZuTW91c2VvdmVyLmNhbGwoYyxhLGIsZCl9KTtkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlT3V0IixmdW5jdGlvbigpe2UoYSkucmVtb3ZlQ2xhc3MoYi5zQnV0dG9uQ2xhc3NIb3ZlcikuYWRkQ2xhc3MoYi5zQnV0dG9uQ2xhc3MpO2IuZm5Nb3VzZW91dCE9PW51bGwmJmIuZm5Nb3VzZW91dC5jYWxsKGMsYSxiLGQpfSk7ZC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZURvd24iLGZ1bmN0aW9uKCl7Yi5mbkNsaWNrIT09bnVsbCYmYi5mbkNsaWNrLmNhbGwoYyxhLGIsZCl9KTtkLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBsZXRlIixmdW5jdGlvbihmLGgpe2IuZm5Db21wbGV0ZSE9PW51bGwmJmIuZm5Db21wbGV0ZS5jYWxsKGMsYSxiLGQsaCk7Yy5fZm5Db2xsZWN0aW9uSGlkZShhLApiKX0pO3RoaXMuX2ZuRmxhc2hHbHVlKGQsYSxiLnNUb29sVGlwKX0sX2ZuRmxhc2hHbHVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGY9Yi5nZXRBdHRyaWJ1dGUoImlkIik7aWYoai5nZXRFbGVtZW50QnlJZChmKSl7YS5nbHVlKGIsYyk7aWYoYS5kb21FbGVtZW50LnBhcmVudE5vZGUhPWEuZGl2LnBhcmVudE5vZGUmJnR5cGVvZiBkLl9fYlpDV2FybmluZz09InVuZGVmaW5lZCIpe2Qucy5kdC5vQXBpLl9mbkxvZyh0aGlzLnMuZHQsMCwiSXQgbG9va3MgbGlrZSB5b3UgYXJlIHVzaW5nIHRoZSB2ZXJzaW9uIG9mIFplcm9DbGlwYm9hcmQgd2hpY2ggY2FtZSB3aXRoIFRhYmxlVG9vbHMgMS4gUGxlYXNlIHVwZGF0ZSB0byB1c2UgdGhlIHZlcnNpb24gdGhhdCBjYW1lIHdpdGggVGFibGVUb29scyAyLiIpO2QuX19iWkNXYXJuaW5nPXRydWV9fWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe2QuX2ZuRmxhc2hHbHVlKGEsYixjKX0sMTAwKX0sX2ZuRmxhc2hTZXRUZXh0OmZ1bmN0aW9uKGEsCmIpe2I9dGhpcy5fZm5DaHVua0RhdGEoYiw4MTkyKTthLmNsZWFyVGV4dCgpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylhLmFwcGVuZFRleHQoYltjXSl9LF9mbkNvbHVtblRhcmdldHM6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz10aGlzLnMuZHQ7aWYodHlwZW9mIGE9PSJvYmplY3QiKXtpPTA7Zm9yKGlMZW49Yy5hb0NvbHVtbnMubGVuZ3RoO2k8aUxlbjtpKyspYi5wdXNoKGZhbHNlKTtpPTA7Zm9yKGlMZW49YS5sZW5ndGg7aTxpTGVuO2krKyliW2FbaV1dPXRydWV9ZWxzZSBpZihhPT0idmlzaWJsZSIpe2k9MDtmb3IoaUxlbj1jLmFvQ29sdW1ucy5sZW5ndGg7aTxpTGVuO2krKyliLnB1c2goYy5hb0NvbHVtbnNbaV0uYlZpc2libGU/dHJ1ZTpmYWxzZSl9ZWxzZSBpZihhPT0iaGlkZGVuIil7aT0wO2ZvcihpTGVuPWMuYW9Db2x1bW5zLmxlbmd0aDtpPGlMZW47aSsrKWIucHVzaChjLmFvQ29sdW1uc1tpXS5iVmlzaWJsZT9mYWxzZTp0cnVlKX1lbHNle2k9MDtmb3IoaUxlbj0KYy5hb0NvbHVtbnMubGVuZ3RoO2k8aUxlbjtpKyspYi5wdXNoKHRydWUpfXJldHVybiBifSxfZm5OZXdsaW5lOmZ1bmN0aW9uKGEpe3JldHVybiBhLnNOZXdMaW5lPT0iYXV0byI/bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cy8pPyJcclxuIjoiXG4iOmEuc05ld0xpbmV9LF9mbkdldERhdGFUYWJsZXNEYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxmLGg9IiIsZz0iIixrPXRoaXMucy5kdCxtPW5ldyBSZWdFeHAoYS5zRmllbGRCb3VuZGFyeSwiZyIpLGw9dGhpcy5fZm5Db2x1bW5UYXJnZXRzKGEubUNvbHVtbnMpLG89dGhpcy5fZm5OZXdsaW5lKGEpO2lmKGEuYkhlYWRlcil7Yj0wO2ZvcihjPWsuYW9Db2x1bW5zLmxlbmd0aDtiPGM7YisrKWlmKGxbYl0pe2c9ay5hb0NvbHVtbnNbYl0uc1RpdGxlLnJlcGxhY2UoL1xuL2csIiAiKS5yZXBsYWNlKC88Lio/Pi9nLCIiKTtnPXRoaXMuX2ZuSHRtbERlY29kZShnKTtoKz10aGlzLl9mbkJvdW5kRGF0YShnLGEuc0ZpZWxkQm91bmRhcnksCm0pK2Euc0ZpZWxkU2VwZXJhdG9yfWg9aC5zbGljZSgwLGEuc0ZpZWxkU2VwZXJhdG9yLmxlbmd0aCotMSk7aCs9b31kPTA7Zm9yKGY9ay5haURpc3BsYXkubGVuZ3RoO2Q8ZjtkKyspaWYoISh0eXBlb2YgYS5iU2VsZWN0ZWRPbmx5JiZhLmJTZWxlY3RlZE9ubHkmJiFlKGsuYW9EYXRhW2suYWlEaXNwbGF5W2RdXS5uVHIpLmhhc0NsYXNzKHRoaXMucy5zZWxlY3Quc2VsZWN0ZWRDbGFzcykpKXtiPTA7Zm9yKGM9ay5hb0NvbHVtbnMubGVuZ3RoO2I8YztiKyspaWYobFtiXSl7Zz1rLmFvRGF0YVtrLmFpRGlzcGxheVtkXV0uX2FEYXRhW2JdO2lmKHR5cGVvZiBnPT0ic3RyaW5nIil7Zz1nLnJlcGxhY2UoL1xuL2csIiAiKTtnPWcucmVwbGFjZSgvPGltZy4qP1xzK2FsdFxzKj1ccyooPzoiKFteIl0rKSJ8JyhbXiddKyknfChbXlxzPl0rKSkuKj8+L2dpLCIkMSQyJDMiKTtnPWcucmVwbGFjZSgvPC4qPz4vZywiIil9ZWxzZSBnPWcrIiI7Zz1nLnJlcGxhY2UoL15ccysvLCIiKS5yZXBsYWNlKC9ccyskLywKIiIpO2c9dGhpcy5fZm5IdG1sRGVjb2RlKGcpO2grPXRoaXMuX2ZuQm91bmREYXRhKGcsYS5zRmllbGRCb3VuZGFyeSxtKSthLnNGaWVsZFNlcGVyYXRvcn1oPWguc2xpY2UoMCxhLnNGaWVsZFNlcGVyYXRvci5sZW5ndGgqLTEpO2grPW99aC5zbGljZSgwLC0xKTtpZihhLmJGb290ZXIpe2I9MDtmb3IoYz1rLmFvQ29sdW1ucy5sZW5ndGg7YjxjO2IrKylpZihsW2JdJiZrLmFvQ29sdW1uc1tiXS5uVGYhPT1udWxsKXtnPWsuYW9Db2x1bW5zW2JdLm5UZi5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiICIpLnJlcGxhY2UoLzwuKj8+L2csIiIpO2c9dGhpcy5fZm5IdG1sRGVjb2RlKGcpO2grPXRoaXMuX2ZuQm91bmREYXRhKGcsYS5zRmllbGRCb3VuZGFyeSxtKSthLnNGaWVsZFNlcGVyYXRvcn1oPWguc2xpY2UoMCxhLnNGaWVsZFNlcGVyYXRvci5sZW5ndGgqLTEpfXJldHVybiBfc0xhc3REYXRhPWh9LF9mbkJvdW5kRGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0iIj9hOmIrCmEucmVwbGFjZShjLCJcXCIrYikrYn0sX2ZuQ2h1bmtEYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9YS5sZW5ndGgsZj0wO2Y8ZDtmKz1iKWYrYjxkP2MucHVzaChhLnN1YnN0cmluZyhmLGYrYikpOmMucHVzaChhLnN1YnN0cmluZyhmLGQpKTtyZXR1cm4gY30sX2ZuSHRtbERlY29kZTpmdW5jdGlvbihhKXtpZihhLmluZGV4T2YoIiYiKT09LTEpcmV0dXJuIGE7YT10aGlzLl9mbkNodW5rRGF0YShhLDIwNDgpO3ZhciBiPWouY3JlYXRlRWxlbWVudCgiZGl2IiksYyxkLGYsaD0iIjtjPTA7Zm9yKGQ9YS5sZW5ndGg7YzxkO2MrKyl7Zj1hW2NdLmxhc3RJbmRleE9mKCImIik7aWYoZiE9LTEmJmFbY10ubGVuZ3RoPj04JiZmPmFbY10ubGVuZ3RoLTgpe2FbY10uc3Vic3RyKGYpO2FbY109YVtjXS5zdWJzdHIoMCxmKX1iLmlubmVySFRNTD1hW2NdO2grPWIuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWV9cmV0dXJuIGh9LF9mblByaW50Q29uZmlnOmZ1bmN0aW9uKGEsYil7dmFyIGM9CnRoaXM7Yi5mbkluaXQhPT1udWxsJiZiLmZuSW5pdC5jYWxsKHRoaXMsYSxiKTtlKGEpLmhvdmVyKGZ1bmN0aW9uKCl7ZShhKS5yZW1vdmVDbGFzcyhiLnNCdXR0b25DbGFzcykuYWRkQ2xhc3MoYi5zQnV0dG9uQ2xhc3NIb3Zlcil9LGZ1bmN0aW9uKCl7ZShhKS5yZW1vdmVDbGFzcyhiLnNCdXR0b25DbGFzc0hvdmVyKS5hZGRDbGFzcyhiLnNCdXR0b25DbGFzcyl9KTtiLmZuU2VsZWN0IT09bnVsbCYmVGFibGVUb29scy5fZm5FdmVudExpc3Rlbih0aGlzLCJzZWxlY3QiLGZ1bmN0aW9uKGQpe2IuZm5TZWxlY3QuY2FsbChjLGEsYixkKX0pO2UoYSkuY2xpY2soZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpO2MuX2ZuUHJpbnRTdGFydC5jYWxsKGMsZCxiKTtiLmZuQ2xpY2shPT1udWxsJiZiLmZuQ2xpY2suY2FsbChjLGEsYixudWxsKTtiLmZuQ29tcGxldGUhPT1udWxsJiZiLmZuQ29tcGxldGUuY2FsbChjLGEsYixudWxsLG51bGwpO2MuX2ZuQ29sbGVjdGlvbkhpZGUoYSxiKX0pfSwKX2ZuUHJpbnRTdGFydDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7YT10aGlzLnMuZHQ7dGhpcy5fZm5QcmludEhpZGVOb2RlcyhhLm5UYWJsZSk7dGhpcy5zLnByaW50LnNhdmVTdGFydD1hLl9pRGlzcGxheVN0YXJ0O3RoaXMucy5wcmludC5zYXZlTGVuZ3RoPWEuX2lEaXNwbGF5TGVuZ3RoO2lmKGIuYlNob3dBbGwpe2EuX2lEaXNwbGF5U3RhcnQ9MDthLl9pRGlzcGxheUxlbmd0aD0tMTthLm9BcGkuX2ZuQ2FsY3VsYXRlRW5kKGEpO2Eub0FwaS5fZm5EcmF3KGEpfWlmKGEub1Njcm9sbC5zWCE9PSIifHxhLm9TY3JvbGwuc1khPT0iIil0aGlzLl9mblByaW50U2Nyb2xsU3RhcnQoYSk7YT1hLmFhbkZlYXR1cmVzO2Zvcih2YXIgZCBpbiBhKWlmKGQhPSJpIiYmZCE9InQiJiZkLmxlbmd0aD09MSlmb3IodmFyIGY9MCxoPWFbZF0ubGVuZ3RoO2Y8aDtmKyspe3RoaXMuZG9tLnByaW50LmhpZGRlbi5wdXNoKHtub2RlOmFbZF1bZl0sZGlzcGxheToiYmxvY2sifSk7YVtkXVtmXS5zdHlsZS5kaXNwbGF5PQoibm9uZSJ9ZShqLmJvZHkpLmFkZENsYXNzKCJEVFRUX1ByaW50Iik7aWYoYi5zSW5mbyE9PSIiKXt2YXIgZz1qLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2cuY2xhc3NOYW1lPSJEVFRUX3ByaW50X2luZm8iO2cuaW5uZXJIVE1MPWIuc0luZm87ai5ib2R5LmFwcGVuZENoaWxkKGcpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKGcpLmZhZGVPdXQoIm5vcm1hbCIsZnVuY3Rpb24oKXtqLmJvZHkucmVtb3ZlQ2hpbGQoZyl9KX0sMkUzKX1pZihiLnNNZXNzYWdlIT09IiIpe3RoaXMuZG9tLnByaW50Lm1lc3NhZ2U9ai5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRvbS5wcmludC5tZXNzYWdlLmNsYXNzTmFtZT0iRFRUVF9QcmludE1lc3NhZ2UiO3RoaXMuZG9tLnByaW50Lm1lc3NhZ2UuaW5uZXJIVE1MPWIuc01lc3NhZ2U7ai5ib2R5Lmluc2VydEJlZm9yZSh0aGlzLmRvbS5wcmludC5tZXNzYWdlLGouYm9keS5jaGlsZE5vZGVzWzBdKX10aGlzLnMucHJpbnQuc2F2ZVNjcm9sbD1lKG4pLnNjcm9sbFRvcCgpOwpuLnNjcm9sbFRvKDAsMCk7dGhpcy5zLnByaW50LmZ1bmNFbmQ9ZnVuY3Rpb24oayl7Yy5fZm5QcmludEVuZC5jYWxsKGMsayl9O2UoaikuYmluZCgia2V5ZG93biIsbnVsbCx0aGlzLnMucHJpbnQuZnVuY0VuZCl9LF9mblByaW50RW5kOmZ1bmN0aW9uKGEpe2lmKGEua2V5Q29kZT09Mjcpe2EucHJldmVudERlZmF1bHQoKTthPXRoaXMucy5kdDt2YXIgYj10aGlzLnMucHJpbnQsYz10aGlzLmRvbS5wcmludDt0aGlzLl9mblByaW50U2hvd05vZGVzKCk7aWYoYS5vU2Nyb2xsLnNYIT09IiJ8fGEub1Njcm9sbC5zWSE9PSIiKXRoaXMuX2ZuUHJpbnRTY3JvbGxFbmQoKTtuLnNjcm9sbFRvKDAsYi5zYXZlU2Nyb2xsKTtpZihjLm1lc3NhZ2UhPT1udWxsKXtqLmJvZHkucmVtb3ZlQ2hpbGQoYy5tZXNzYWdlKTtjLm1lc3NhZ2U9bnVsbH1lKGouYm9keSkucmVtb3ZlQ2xhc3MoIkRUVFRfUHJpbnQiKTthLl9pRGlzcGxheVN0YXJ0PWIuc2F2ZVN0YXJ0O2EuX2lEaXNwbGF5TGVuZ3RoPWIuc2F2ZUxlbmd0aDsKYS5vQXBpLl9mbkNhbGN1bGF0ZUVuZChhKTthLm9BcGkuX2ZuRHJhdyhhKTtlKGopLnVuYmluZCgia2V5ZG93biIsdGhpcy5zLnByaW50LmZ1bmNFbmQpO3RoaXMucy5wcmludC5mdW5jRW5kPW51bGx9fSxfZm5QcmludFNjcm9sbFN0YXJ0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zLmR0O2EublNjcm9sbEhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0YWJsZSIpO3ZhciBiPWEublRhYmxlLnBhcmVudE5vZGUsYz1hLm5UYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKTtjLmxlbmd0aD4wJiZhLm5UYWJsZS5yZW1vdmVDaGlsZChjWzBdKTtpZihhLm5URm9vdCE9PW51bGwpe2M9YS5uVGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRmb290Iik7Yy5sZW5ndGg+MCYmYS5uVGFibGUucmVtb3ZlQ2hpbGQoY1swXSl9Yz1hLm5USGVhZC5jbG9uZU5vZGUodHJ1ZSk7YS5uVGFibGUuaW5zZXJ0QmVmb3JlKGMsYS5uVGFibGUuY2hpbGROb2Rlc1swXSk7CmlmKGEublRGb290IT09bnVsbCl7Yz1hLm5URm9vdC5jbG9uZU5vZGUodHJ1ZSk7YS5uVGFibGUuaW5zZXJ0QmVmb3JlKGMsYS5uVGFibGUuY2hpbGROb2Rlc1sxXSl9aWYoYS5vU2Nyb2xsLnNYIT09IiIpe2EublRhYmxlLnN0eWxlLndpZHRoPWUoYS5uVGFibGUpLm91dGVyV2lkdGgoKSsicHgiO2Iuc3R5bGUud2lkdGg9ZShhLm5UYWJsZSkub3V0ZXJXaWR0aCgpKyJweCI7Yi5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSJ9aWYoYS5vU2Nyb2xsLnNZIT09IiIpe2Iuc3R5bGUuaGVpZ2h0PWUoYS5uVGFibGUpLm91dGVySGVpZ2h0KCkrInB4IjtiLnN0eWxlLm92ZXJmbG93PSJ2aXNpYmxlIn19LF9mblByaW50U2Nyb2xsRW5kOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zLmR0LGI9YS5uVGFibGUucGFyZW50Tm9kZTtpZihhLm9TY3JvbGwuc1ghPT0iIil7Yi5zdHlsZS53aWR0aD1hLm9BcGkuX2ZuU3RyaW5nVG9Dc3MoYS5vU2Nyb2xsLnNYKTtiLnN0eWxlLm92ZXJmbG93PSJhdXRvIn1pZihhLm9TY3JvbGwuc1khPT0KIiIpe2Iuc3R5bGUuaGVpZ2h0PWEub0FwaS5fZm5TdHJpbmdUb0NzcyhhLm9TY3JvbGwuc1kpO2Iuc3R5bGUub3ZlcmZsb3c9ImF1dG8ifX0sX2ZuUHJpbnRTaG93Tm9kZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5kb20ucHJpbnQuaGlkZGVuLGI9MCxjPWEubGVuZ3RoO2I8YztiKyspYVtiXS5ub2RlLnN0eWxlLmRpc3BsYXk9YVtiXS5kaXNwbGF5O2Euc3BsaWNlKDAsYS5sZW5ndGgpfSxfZm5QcmludEhpZGVOb2RlczpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcy5kb20ucHJpbnQuaGlkZGVuLGM9YS5wYXJlbnROb2RlLGQ9Yy5jaGlsZE5vZGVzLGY9MCxoPWQubGVuZ3RoO2Y8aDtmKyspaWYoZFtmXSE9YSYmZFtmXS5ub2RlVHlwZT09MSl7dmFyIGc9ZShkW2ZdKS5jc3MoImRpc3BsYXkiKTtpZihnIT0ibm9uZSIpe2IucHVzaCh7bm9kZTpkW2ZdLGRpc3BsYXk6Z30pO2RbZl0uc3R5bGUuZGlzcGxheT0ibm9uZSJ9fWMubm9kZU5hbWUhPSJCT0RZIiYmdGhpcy5fZm5QcmludEhpZGVOb2RlcyhjKX19OwpUYWJsZVRvb2xzLl9hSW5zdGFuY2VzPVtdO1RhYmxlVG9vbHMuX2FMaXN0ZW5lcnM9W107VGFibGVUb29scy5mbkdldE1hc3RlcnM9ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYj0wLGM9VGFibGVUb29scy5fYUluc3RhbmNlcy5sZW5ndGg7YjxjO2IrKylUYWJsZVRvb2xzLl9hSW5zdGFuY2VzW2JdLnMubWFzdGVyJiZhLnB1c2goVGFibGVUb29scy5fYUluc3RhbmNlc1tiXS5zKTtyZXR1cm4gYX07VGFibGVUb29scy5mbkdldEluc3RhbmNlPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT0ib2JqZWN0IilhPWouZ2V0RWxlbWVudEJ5SWQoYSk7Zm9yKHZhciBiPTAsYz1UYWJsZVRvb2xzLl9hSW5zdGFuY2VzLmxlbmd0aDtiPGM7YisrKWlmKFRhYmxlVG9vbHMuX2FJbnN0YW5jZXNbYl0ucy5tYXN0ZXImJlRhYmxlVG9vbHMuX2FJbnN0YW5jZXNbYl0uZG9tLnRhYmxlPT1hKXJldHVybiBUYWJsZVRvb2xzLl9hSW5zdGFuY2VzW2JdO3JldHVybiBudWxsfTtUYWJsZVRvb2xzLl9mbkV2ZW50TGlzdGVuPQpmdW5jdGlvbihhLGIsYyl7VGFibGVUb29scy5fYUxpc3RlbmVycy5wdXNoKHt0aGF0OmEsdHlwZTpiLGZuOmN9KX07VGFibGVUb29scy5fZm5FdmVudERpc3BhdGNoPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9VGFibGVUb29scy5fYUxpc3RlbmVycyxmPTAsaD1kLmxlbmd0aDtmPGg7ZisrKWEuZG9tLnRhYmxlPT1kW2ZdLnRoYXQuZG9tLnRhYmxlJiZkW2ZdLnR5cGU9PWImJmRbZl0uZm4oYyl9O1RhYmxlVG9vbHMuQlVUVE9OUz17Y3N2OntzQWN0aW9uOiJmbGFzaF9zYXZlIixzQ2hhclNldDoidXRmOCIsYkJvbUluYzpmYWxzZSxzRmlsZU5hbWU6IiouY3N2IixzRmllbGRCb3VuZGFyeToiJyIsc0ZpZWxkU2VwZXJhdG9yOiIsIixzTmV3TGluZToiYXV0byIsc1RpdGxlOiIiLHNUb29sVGlwOiIiLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fY3N2IixzQnV0dG9uQ2xhc3NIb3ZlcjoiRFRUVF9idXR0b25fY3N2X2hvdmVyIixzQnV0dG9uVGV4dDoiQ1NWIixtQ29sdW1uczoiYWxsIiwKYkhlYWRlcjp0cnVlLGJGb290ZXI6dHJ1ZSxiU2VsZWN0ZWRPbmx5OmZhbHNlLGZuTW91c2VvdmVyOm51bGwsZm5Nb3VzZW91dDpudWxsLGZuQ2xpY2s6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZm5TZXRUZXh0KGMsdGhpcy5mbkdldFRhYmxlRGF0YShiKSl9LGZuU2VsZWN0Om51bGwsZm5Db21wbGV0ZTpudWxsLGZuSW5pdDpudWxsfSx4bHM6e3NBY3Rpb246ImZsYXNoX3NhdmUiLHNDaGFyU2V0OiJ1dGYxNmxlIixiQm9tSW5jOnRydWUsc0ZpbGVOYW1lOiIqLmNzdiIsc0ZpZWxkQm91bmRhcnk6IiIsc0ZpZWxkU2VwZXJhdG9yOiJcdCIsc05ld0xpbmU6ImF1dG8iLHNUaXRsZToiIixzVG9vbFRpcDoiIixzQnV0dG9uQ2xhc3M6IkRUVFRfYnV0dG9uX3hscyIsc0J1dHRvbkNsYXNzSG92ZXI6IkRUVFRfYnV0dG9uX3hsc19ob3ZlciIsc0J1dHRvblRleHQ6IkV4Y2VsIixtQ29sdW1uczoiYWxsIixiSGVhZGVyOnRydWUsYkZvb3Rlcjp0cnVlLGJTZWxlY3RlZE9ubHk6ZmFsc2UsZm5Nb3VzZW92ZXI6bnVsbCwKZm5Nb3VzZW91dDpudWxsLGZuQ2xpY2s6ZnVuY3Rpb24oYSxiLGMpe3RoaXMuZm5TZXRUZXh0KGMsdGhpcy5mbkdldFRhYmxlRGF0YShiKSl9LGZuU2VsZWN0Om51bGwsZm5Db21wbGV0ZTpudWxsLGZuSW5pdDpudWxsfSxjb3B5OntzQWN0aW9uOiJmbGFzaF9jb3B5IixzRmllbGRCb3VuZGFyeToiIixzRmllbGRTZXBlcmF0b3I6Ilx0IixzTmV3TGluZToiYXV0byIsc1Rvb2xUaXA6IiIsc0J1dHRvbkNsYXNzOiJEVFRUX2J1dHRvbl9jb3B5IixzQnV0dG9uQ2xhc3NIb3ZlcjoiRFRUVF9idXR0b25fY29weV9ob3ZlciIsc0J1dHRvblRleHQ6IkNvcHkiLG1Db2x1bW5zOiJhbGwiLGJIZWFkZXI6dHJ1ZSxiRm9vdGVyOnRydWUsYlNlbGVjdGVkT25seTpmYWxzZSxmbk1vdXNlb3ZlcjpudWxsLGZuTW91c2VvdXQ6bnVsbCxmbkNsaWNrOmZ1bmN0aW9uKGEsYixjKXt0aGlzLmZuU2V0VGV4dChjLHRoaXMuZm5HZXRUYWJsZURhdGEoYikpfSxmblNlbGVjdDpudWxsLGZuQ29tcGxldGU6ZnVuY3Rpb24oYSwKYixjLGQpe2E9ZC5zcGxpdCgiXG4iKS5sZW5ndGg7YT10aGlzLnMuZHQublRGb290PT09bnVsbD9hLTE6YS0yO2FsZXJ0KCJDb3BpZWQgIithKyIgcm93IisoYT09MT8iIjoicyIpKyIgdG8gdGhlIGNsaXBib2FyZCIpfSxmbkluaXQ6bnVsbH0scGRmOntzQWN0aW9uOiJmbGFzaF9wZGYiLHNGaWVsZEJvdW5kYXJ5OiIiLHNGaWVsZFNlcGVyYXRvcjoiXHQiLHNOZXdMaW5lOiJcbiIsc0ZpbGVOYW1lOiIqLnBkZiIsc1Rvb2xUaXA6IiIsc1RpdGxlOiIiLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fcGRmIixzQnV0dG9uQ2xhc3NIb3ZlcjoiRFRUVF9idXR0b25fcGRmX2hvdmVyIixzQnV0dG9uVGV4dDoiUERGIixtQ29sdW1uczoiYWxsIixiSGVhZGVyOnRydWUsYkZvb3RlcjpmYWxzZSxiU2VsZWN0ZWRPbmx5OmZhbHNlLGZuTW91c2VvdmVyOm51bGwsZm5Nb3VzZW91dDpudWxsLHNQZGZPcmllbnRhdGlvbjoicG9ydHJhaXQiLHNQZGZTaXplOiJBNCIsc1BkZk1lc3NhZ2U6IiIsZm5DbGljazpmdW5jdGlvbihhLApiLGMpe3RoaXMuZm5TZXRUZXh0KGMsInRpdGxlOiIrdGhpcy5mbkdldFRpdGxlKGIpKyJcbm1lc3NhZ2U6IitiLnNQZGZNZXNzYWdlKyJcbmNvbFdpZHRoOiIrdGhpcy5mbkNhbGNDb2xSYXRpb3MoYikrIlxub3JpZW50YXRpb246IitiLnNQZGZPcmllbnRhdGlvbisiXG5zaXplOiIrYi5zUGRmU2l6ZSsiXG4tLS9UYWJsZVRvb2xzT3B0cy0tXG4iK3RoaXMuZm5HZXRUYWJsZURhdGEoYikpfSxmblNlbGVjdDpudWxsLGZuQ29tcGxldGU6bnVsbCxmbkluaXQ6bnVsbH0scHJpbnQ6e3NBY3Rpb246InByaW50IixzSW5mbzoiPGg2PlByaW50IHZpZXc8L2g2PjxwPlBsZWFzZSB1c2UgeW91ciBicm93c2VyJ3MgcHJpbnQgZnVuY3Rpb24gdG8gcHJpbnQgdGhpcyB0YWJsZS4gUHJlc3MgZXNjYXBlIHdoZW4gZmluaXNoZWQuIixzTWVzc2FnZToiIixiU2hvd0FsbDp0cnVlLHNUb29sVGlwOiJWaWV3IHByaW50IHZpZXciLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fcHJpbnQiLHNCdXR0b25DbGFzc0hvdmVyOiJEVFRUX2J1dHRvbl9wcmludF9ob3ZlciIsCnNCdXR0b25UZXh0OiJQcmludCIsZm5Nb3VzZW92ZXI6bnVsbCxmbk1vdXNlb3V0Om51bGwsZm5DbGljazpudWxsLGZuU2VsZWN0Om51bGwsZm5Db21wbGV0ZTpudWxsLGZuSW5pdDpudWxsfSx0ZXh0OntzQWN0aW9uOiJ0ZXh0IixzVG9vbFRpcDoiIixzQnV0dG9uQ2xhc3M6IkRUVFRfYnV0dG9uX3RleHQiLHNCdXR0b25DbGFzc0hvdmVyOiJEVFRUX2J1dHRvbl90ZXh0X2hvdmVyIixzQnV0dG9uVGV4dDoiVGV4dCBidXR0b24iLG1Db2x1bW5zOiJhbGwiLGJIZWFkZXI6dHJ1ZSxiRm9vdGVyOnRydWUsYlNlbGVjdGVkT25seTpmYWxzZSxmbk1vdXNlb3ZlcjpudWxsLGZuTW91c2VvdXQ6bnVsbCxmbkNsaWNrOm51bGwsZm5TZWxlY3Q6bnVsbCxmbkNvbXBsZXRlOm51bGwsZm5Jbml0Om51bGx9LHNlbGVjdDp7c0FjdGlvbjoidGV4dCIsc1Rvb2xUaXA6IiIsc0J1dHRvbkNsYXNzOiJEVFRUX2J1dHRvbl90ZXh0IixzQnV0dG9uQ2xhc3NIb3ZlcjoiRFRUVF9idXR0b25fdGV4dF9ob3ZlciIsCnNCdXR0b25UZXh0OiJTZWxlY3QgYnV0dG9uIixtQ29sdW1uczoiYWxsIixiSGVhZGVyOnRydWUsYkZvb3Rlcjp0cnVlLGZuTW91c2VvdmVyOm51bGwsZm5Nb3VzZW91dDpudWxsLGZuQ2xpY2s6bnVsbCxmblNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLmZuR2V0U2VsZWN0ZWQoKS5sZW5ndGghPT0wP2UoYSkucmVtb3ZlQ2xhc3MoIkRUVFRfZGlzYWJsZWQiKTplKGEpLmFkZENsYXNzKCJEVFRUX2Rpc2FibGVkIil9LGZuQ29tcGxldGU6bnVsbCxmbkluaXQ6ZnVuY3Rpb24oYSl7ZShhKS5hZGRDbGFzcygiRFRUVF9kaXNhYmxlZCIpfX0sc2VsZWN0X3NpbmdsZTp7c0FjdGlvbjoidGV4dCIsc1Rvb2xUaXA6IiIsc0J1dHRvbkNsYXNzOiJEVFRUX2J1dHRvbl90ZXh0IixzQnV0dG9uQ2xhc3NIb3ZlcjoiRFRUVF9idXR0b25fdGV4dF9ob3ZlciIsc0J1dHRvblRleHQ6IlNlbGVjdCBidXR0b24iLG1Db2x1bW5zOiJhbGwiLGJIZWFkZXI6dHJ1ZSxiRm9vdGVyOnRydWUsZm5Nb3VzZW92ZXI6bnVsbCwKZm5Nb3VzZW91dDpudWxsLGZuQ2xpY2s6bnVsbCxmblNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLmZuR2V0U2VsZWN0ZWQoKS5sZW5ndGg9PTE/ZShhKS5yZW1vdmVDbGFzcygiRFRUVF9kaXNhYmxlZCIpOmUoYSkuYWRkQ2xhc3MoIkRUVFRfZGlzYWJsZWQiKX0sZm5Db21wbGV0ZTpudWxsLGZuSW5pdDpmdW5jdGlvbihhKXtlKGEpLmFkZENsYXNzKCJEVFRUX2Rpc2FibGVkIil9fSxzZWxlY3RfYWxsOntzQWN0aW9uOiJ0ZXh0IixzVG9vbFRpcDoiIixzQnV0dG9uQ2xhc3M6IkRUVFRfYnV0dG9uX3RleHQiLHNCdXR0b25DbGFzc0hvdmVyOiJEVFRUX2J1dHRvbl90ZXh0X2hvdmVyIixzQnV0dG9uVGV4dDoiU2VsZWN0IGFsbCIsbUNvbHVtbnM6ImFsbCIsYkhlYWRlcjp0cnVlLGJGb290ZXI6dHJ1ZSxmbk1vdXNlb3ZlcjpudWxsLGZuTW91c2VvdXQ6bnVsbCxmbkNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5mblNlbGVjdEFsbCgpfSxmblNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLmZuR2V0U2VsZWN0ZWQoKS5sZW5ndGg9PQp0aGlzLnMuZHQuZm5SZWNvcmRzRGlzcGxheSgpP2UoYSkuYWRkQ2xhc3MoIkRUVFRfZGlzYWJsZWQiKTplKGEpLnJlbW92ZUNsYXNzKCJEVFRUX2Rpc2FibGVkIil9LGZuQ29tcGxldGU6bnVsbCxmbkluaXQ6bnVsbH0sc2VsZWN0X25vbmU6e3NBY3Rpb246InRleHQiLHNUb29sVGlwOiIiLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fdGV4dCIsc0J1dHRvbkNsYXNzSG92ZXI6IkRUVFRfYnV0dG9uX3RleHRfaG92ZXIiLHNCdXR0b25UZXh0OiJEZXNlbGVjdCBhbGwiLG1Db2x1bW5zOiJhbGwiLGJIZWFkZXI6dHJ1ZSxiRm9vdGVyOnRydWUsZm5Nb3VzZW92ZXI6bnVsbCxmbk1vdXNlb3V0Om51bGwsZm5DbGljazpmdW5jdGlvbigpe3RoaXMuZm5TZWxlY3ROb25lKCl9LGZuU2VsZWN0OmZ1bmN0aW9uKGEpe3RoaXMuZm5HZXRTZWxlY3RlZCgpLmxlbmd0aCE9PTA/ZShhKS5yZW1vdmVDbGFzcygiRFRUVF9kaXNhYmxlZCIpOmUoYSkuYWRkQ2xhc3MoIkRUVFRfZGlzYWJsZWQiKX0sZm5Db21wbGV0ZTpudWxsLApmbkluaXQ6ZnVuY3Rpb24oYSl7ZShhKS5hZGRDbGFzcygiRFRUVF9kaXNhYmxlZCIpfX0sYWpheDp7c0FjdGlvbjoidGV4dCIsc0ZpZWxkQm91bmRhcnk6IiIsc0ZpZWxkU2VwZXJhdG9yOiJcdCIsc05ld0xpbmU6IlxuIixzQWpheFVybDoiL3hoci5waHAiLHNUb29sVGlwOiIiLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fdGV4dCIsc0J1dHRvbkNsYXNzSG92ZXI6IkRUVFRfYnV0dG9uX3RleHRfaG92ZXIiLHNCdXR0b25UZXh0OiJBamF4IGJ1dHRvbiIsbUNvbHVtbnM6ImFsbCIsYkhlYWRlcjp0cnVlLGJGb290ZXI6dHJ1ZSxiU2VsZWN0ZWRPbmx5OmZhbHNlLGZuTW91c2VvdmVyOm51bGwsZm5Nb3VzZW91dDpudWxsLGZuQ2xpY2s6ZnVuY3Rpb24oYSxiKXthPXRoaXMuZm5HZXRUYWJsZURhdGEoYik7ZS5hamF4KHt1cmw6Yi5zQWpheFVybCxkYXRhOlt7bmFtZToidGFibGVEYXRhIix2YWx1ZTphfV0sc3VjY2VzczpiLmZuQWpheENvbXBsZXRlLGRhdGFUeXBlOiJqc29uIix0eXBlOiJQT1NUIiwKY2FjaGU6ZmFsc2UsZXJyb3I6ZnVuY3Rpb24oKXthbGVydCgiRXJyb3IgZGV0ZWN0ZWQgd2hlbiBzZW5kaW5nIHRhYmxlIGRhdGEgdG8gc2VydmVyIil9fSl9LGZuU2VsZWN0Om51bGwsZm5Db21wbGV0ZTpudWxsLGZuSW5pdDpudWxsLGZuQWpheENvbXBsZXRlOmZ1bmN0aW9uKCl7YWxlcnQoIkFqYXggY29tcGxldGUiKX19LGNvbGxlY3Rpb246e3NBY3Rpb246ImNvbGxlY3Rpb24iLHNUb29sVGlwOiIiLHNCdXR0b25DbGFzczoiRFRUVF9idXR0b25fY29sbGVjdGlvbiIsc0J1dHRvbkNsYXNzSG92ZXI6IkRUVFRfYnV0dG9uX2NvbGxlY3Rpb25faG92ZXIiLHNCdXR0b25UZXh0OiJDb2xsZWN0aW9uIixmbk1vdXNlb3ZlcjpudWxsLGZuTW91c2VvdXQ6bnVsbCxmbkNsaWNrOmZ1bmN0aW9uKGEsYil7dGhpcy5fZm5Db2xsZWN0aW9uU2hvdyhhLGIpfSxmblNlbGVjdDpudWxsLGZuQ29tcGxldGU6bnVsbCxmbkluaXQ6bnVsbH19O1RhYmxlVG9vbHMuREVGQVVMVFM9e3NTd2ZQYXRoOiJtZWRpYS9zd2YvY29weV9jdnNfeGxzX3BkZi5zd2YiLApzUm93U2VsZWN0OiJub25lIixzU2VsZWN0ZWRDbGFzczoiRFRUVF9zZWxlY3RlZCIsZm5QcmVSb3dTZWxlY3Q6bnVsbCxmblJvd1NlbGVjdGVkOm51bGwsZm5Sb3dEZXNlbGVjdGVkOm51bGwsYUJ1dHRvbnM6WyJjb3B5IiwiY3N2IiwieGxzIiwicGRmIiwicHJpbnQiXX07VGFibGVUb29scy5wcm90b3R5cGUuQ0xBU1M9IlRhYmxlVG9vbHMiO1RhYmxlVG9vbHMuVkVSU0lPTj0iMi4wLjEiO1RhYmxlVG9vbHMucHJvdG90eXBlLlZFUlNJT049VGFibGVUb29scy5WRVJTSU9OO3R5cGVvZiBlLmZuLmRhdGFUYWJsZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGUuZm4uZGF0YVRhYmxlRXh0LmZuVmVyc2lvbkNoZWNrPT0iZnVuY3Rpb24iJiZlLmZuLmRhdGFUYWJsZUV4dC5mblZlcnNpb25DaGVjaygiMS43LjAiKT9lLmZuLmRhdGFUYWJsZUV4dC5hb0ZlYXR1cmVzLnB1c2goe2ZuSW5pdDpmdW5jdGlvbihhKXthPW5ldyBUYWJsZVRvb2xzKGEub0luc3RhbmNlLHR5cGVvZiBhLm9Jbml0Lm9UYWJsZVRvb2xzIT0KInVuZGVmaW5lZCI/YS5vSW5pdC5vVGFibGVUb29sczp7fSk7VGFibGVUb29scy5fYUluc3RhbmNlcy5wdXNoKGEpO3JldHVybiBhLmRvbS5jb250YWluZXJ9LGNGZWF0dXJlOiJUIixzRmVhdHVyZToiVGFibGVUb29scyJ9KTphbGVydCgiV2FybmluZzogVGFibGVUb29scyAyIHJlcXVpcmVzIERhdGFUYWJsZXMgMS43IG9yIGdyZWF0ZXIgLSB3d3cuZGF0YXRhYmxlcy5uZXQvZG93bmxvYWQiKX0pKGpRdWVyeSx3aW5kb3csZG9jdW1lbnQpOwo=]]></data>
	</file>
	<file>
	  <filename>/tt/ZeroClipboard.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gU2ltcGxlIFNldCBDbGlwYm9hcmQgU3lzdGVtCi8vIEF1dGhvcjogSm9zZXBoIEh1Y2thYnkKCnZhciBaZXJvQ2xpcGJvYXJkID0gewoJCgl2ZXJzaW9uOiAiMS4wLjQtVGFibGVUb29sczIiLAoJY2xpZW50czoge30sIC8vIHJlZ2lzdGVyZWQgdXBsb2FkIGNsaWVudHMgb24gcGFnZSwgaW5kZXhlZCBieSBpZAoJbW92aWVQYXRoOiAnJywgLy8gVVJMIHRvIG1vdmllCgluZXh0SWQ6IDEsIC8vIElEIG9mIG5leHQgbW92aWUKCQoJJDogZnVuY3Rpb24odGhpbmd5KSB7CgkJLy8gc2ltcGxlIERPTSBsb29rdXAgdXRpbGl0eSBmdW5jdGlvbgoJCWlmICh0eXBlb2YodGhpbmd5KSA9PSAnc3RyaW5nJykgdGhpbmd5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpbmd5KTsKCQlpZiAoIXRoaW5neS5hZGRDbGFzcykgewoJCQkvLyBleHRlbmQgZWxlbWVudCB3aXRoIGEgZmV3IHVzZWZ1bCBtZXRob2RzCgkJCXRoaW5neS5oaWRlID0gZnVuY3Rpb24oKSB7IHRoaXMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfTsKCQkJdGhpbmd5LnNob3cgPSBmdW5jdGlvbigpIHsgdGhpcy5zdHlsZS5kaXNwbGF5ID0gJyc7IH07CgkJCXRoaW5neS5hZGRDbGFzcyA9IGZ1bmN0aW9uKG5hbWUpIHsgdGhpcy5yZW1vdmVDbGFzcyhuYW1lKTsgdGhpcy5jbGFzc05hbWUgKz0gJyAnICsgbmFtZTsgfTsKCQkJdGhpbmd5LnJlbW92ZUNsYXNzID0gZnVuY3Rpb24obmFtZSkgewoJCQkJdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKCBuZXcgUmVnRXhwKCJcXHMqIiArIG5hbWUgKyAiXFxzKiIpLCAiICIpLnJlcGxhY2UoL15ccysvLCAnJykucmVwbGFjZSgvXHMrJC8sICcnKTsKCQkJfTsKCQkJdGhpbmd5Lmhhc0NsYXNzID0gZnVuY3Rpb24obmFtZSkgewoJCQkJcmV0dXJuICEhdGhpcy5jbGFzc05hbWUubWF0Y2goIG5ldyBSZWdFeHAoIlxccyoiICsgbmFtZSArICJcXHMqIikgKTsKCQkJfQoJCX0KCQlyZXR1cm4gdGhpbmd5OwoJfSwKCQoJc2V0TW92aWVQYXRoOiBmdW5jdGlvbihwYXRoKSB7CgkJLy8gc2V0IHBhdGggdG8gWmVyb0NsaXBib2FyZC5zd2YKCQl0aGlzLm1vdmllUGF0aCA9IHBhdGg7Cgl9LAoJCglkaXNwYXRjaDogZnVuY3Rpb24oaWQsIGV2ZW50TmFtZSwgYXJncykgewoJCS8vIHJlY2VpdmUgZXZlbnQgZnJvbSBmbGFzaCBtb3ZpZSwgc2VuZCB0byBjbGllbnQJCQoJCXZhciBjbGllbnQgPSB0aGlzLmNsaWVudHNbaWRdOwoJCWlmIChjbGllbnQpIHsKCQkJY2xpZW50LnJlY2VpdmVFdmVudChldmVudE5hbWUsIGFyZ3MpOwoJCX0KCX0sCgkKCXJlZ2lzdGVyOiBmdW5jdGlvbihpZCwgY2xpZW50KSB7CgkJLy8gcmVnaXN0ZXIgbmV3IGNsaWVudCB0byByZWNlaXZlIGV2ZW50cwoJCXRoaXMuY2xpZW50c1tpZF0gPSBjbGllbnQ7Cgl9LAoJCglnZXRET01PYmplY3RQb3NpdGlvbjogZnVuY3Rpb24ob2JqKSB7CgkJLy8gZ2V0IGFic29sdXRlIGNvb3JkaW5hdGVzIGZvciBkb20gZWxlbWVudAoJCXZhciBpbmZvID0gewoJCQlsZWZ0OiAwLCAKCQkJdG9wOiAwLCAKCQkJd2lkdGg6IG9iai53aWR0aCA/IG9iai53aWR0aCA6IG9iai5vZmZzZXRXaWR0aCwgCgkJCWhlaWdodDogb2JqLmhlaWdodCA/IG9iai5oZWlnaHQgOiBvYmoub2Zmc2V0SGVpZ2h0CgkJfTsKCQkKCQlpZiAoIG9iai5zdHlsZS53aWR0aCAhPSAiIiApCgkJCWluZm8ud2lkdGggPSBvYmouc3R5bGUud2lkdGgucmVwbGFjZSgicHgiLCIiKTsKCQkKCQlpZiAoIG9iai5zdHlsZS5oZWlnaHQgIT0gIiIgKQoJCQlpbmZvLmhlaWdodCA9IG9iai5zdHlsZS5oZWlnaHQucmVwbGFjZSgicHgiLCIiKTsKCgkJd2hpbGUgKG9iaikgewoJCQlpbmZvLmxlZnQgKz0gb2JqLm9mZnNldExlZnQ7CgkJCWluZm8udG9wICs9IG9iai5vZmZzZXRUb3A7CgkJCW9iaiA9IG9iai5vZmZzZXRQYXJlbnQ7CgkJfQoKCQlyZXR1cm4gaW5mbzsKCX0sCgkKCUNsaWVudDogZnVuY3Rpb24oZWxlbSkgewoJCS8vIGNvbnN0cnVjdG9yIGZvciBuZXcgc2ltcGxlIHVwbG9hZCBjbGllbnQKCQl0aGlzLmhhbmRsZXJzID0ge307CgkJCgkJLy8gdW5pcXVlIElECgkJdGhpcy5pZCA9IFplcm9DbGlwYm9hcmQubmV4dElkKys7CgkJdGhpcy5tb3ZpZUlkID0gJ1plcm9DbGlwYm9hcmRNb3ZpZV8nICsgdGhpcy5pZDsKCQkKCQkvLyByZWdpc3RlciBjbGllbnQgd2l0aCBzaW5nbGV0b24gdG8gcmVjZWl2ZSBmbGFzaCBldmVudHMKCQlaZXJvQ2xpcGJvYXJkLnJlZ2lzdGVyKHRoaXMuaWQsIHRoaXMpOwoJCQoJCS8vIGNyZWF0ZSBtb3ZpZQoJCWlmIChlbGVtKSB0aGlzLmdsdWUoZWxlbSk7Cgl9Cn07CgpaZXJvQ2xpcGJvYXJkLkNsaWVudC5wcm90b3R5cGUgPSB7CgkKCWlkOiAwLCAvLyB1bmlxdWUgSUQgZm9yIHVzCglyZWFkeTogZmFsc2UsIC8vIHdoZXRoZXIgbW92aWUgaXMgcmVhZHkgdG8gcmVjZWl2ZSBldmVudHMgb3Igbm90Cgltb3ZpZTogbnVsbCwgLy8gcmVmZXJlbmNlIHRvIG1vdmllIG9iamVjdAoJY2xpcFRleHQ6ICcnLCAvLyB0ZXh0IHRvIGNvcHkgdG8gY2xpcGJvYXJkCglmaWxlTmFtZTogJycsIC8vIGRlZmF1bHQgZmlsZSBzYXZlIG5hbWUKCWFjdGlvbjogJ2NvcHknLCAvLyBhY3Rpb24gdG8gcGVyZm9ybQoJaGFuZEN1cnNvckVuYWJsZWQ6IHRydWUsIC8vIHdoZXRoZXIgdG8gc2hvdyBoYW5kIGN1cnNvciwgb3IgZGVmYXVsdCBwb2ludGVyIGN1cnNvcgoJY3NzRWZmZWN0czogdHJ1ZSwgLy8gZW5hYmxlIENTUyBtb3VzZSBlZmZlY3RzIG9uIGRvbSBjb250YWluZXIKCWhhbmRsZXJzOiBudWxsLCAvLyB1c2VyIGV2ZW50IGhhbmRsZXJzCglzaXplZDogZmFsc2UsCgkKCWdsdWU6IGZ1bmN0aW9uKGVsZW0sIHRpdGxlKSB7CgkJLy8gZ2x1ZSB0byBET00gZWxlbWVudAoJCS8vIGVsZW0gY2FuIGJlIElEIG9yIGFjdHVhbCBET00gZWxlbWVudCBvYmplY3QKCQl0aGlzLmRvbUVsZW1lbnQgPSBaZXJvQ2xpcGJvYXJkLiQoZWxlbSk7CgkJCgkJLy8gZmxvYXQganVzdCBhYm92ZSBvYmplY3QsIG9yIHpJbmRleCA5OSBpZiBkb20gZWxlbWVudCBpc24ndCBzZXQKCQl2YXIgekluZGV4ID0gOTk7CgkJaWYgKHRoaXMuZG9tRWxlbWVudC5zdHlsZS56SW5kZXgpIHsKCQkJekluZGV4ID0gcGFyc2VJbnQodGhpcy5kb21FbGVtZW50LnN0eWxlLnpJbmRleCkgKyAxOwoJCX0KCQkKCQkvLyBmaW5kIFgvWSBwb3NpdGlvbiBvZiBkb21FbGVtZW50CgkJdmFyIGJveCA9IFplcm9DbGlwYm9hcmQuZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KTsKCQkKCQkvLyBjcmVhdGUgZmxvYXRpbmcgRElWIGFib3ZlIGVsZW1lbnQKCQl0aGlzLmRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwoJCXZhciBzdHlsZSA9IHRoaXMuZGl2LnN0eWxlOwoJCXN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKCQlzdHlsZS5sZWZ0ID0gKHRoaXMuZG9tRWxlbWVudC5vZmZzZXRMZWZ0KSsncHgnOwoJCS8vc3R5bGUubGVmdCA9ICh0aGlzLmRvbUVsZW1lbnQub2Zmc2V0TGVmdCsyKSsncHgnOwoJCXN0eWxlLnRvcCA9IHRoaXMuZG9tRWxlbWVudC5vZmZzZXRUb3ArJ3B4JzsKCQlzdHlsZS53aWR0aCA9IChib3gud2lkdGgpICsgJ3B4JzsKCQkvL3N0eWxlLndpZHRoID0gKGJveC53aWR0aC00KSArICdweCc7CgkJc3R5bGUuaGVpZ2h0ID0gYm94LmhlaWdodCArICdweCc7CgkJc3R5bGUuekluZGV4ID0gekluZGV4OwoJCWlmICggdHlwZW9mIHRpdGxlICE9ICJ1bmRlZmluZWQiICYmIHRpdGxlICE9ICIiICkgewoJCQl0aGlzLmRpdi50aXRsZSA9IHRpdGxlOwoJCX0KCQlpZiAoIGJveC53aWR0aCAhPSAwICYmIGJveC5oZWlnaHQgIT0gMCApIHsKCQkJdGhpcy5zaXplZCA9IHRydWU7CgkJfQoJCQoJCS8vIHN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZjAwJzsgLy8gZGVidWcKCQl0aGlzLmRvbUVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzLmRpdik7CgkJCgkJdGhpcy5kaXYuaW5uZXJIVE1MID0gdGhpcy5nZXRIVE1MKCBib3gud2lkdGgsIGJveC5oZWlnaHQgKTsKCX0sCgkKCXBvc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7CgkJdmFyIGJveCA9IFplcm9DbGlwYm9hcmQuZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KTsKCQl2YXIgc3R5bGUgPSB0aGlzLmRpdi5zdHlsZTsKCQkKCQlzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CgkJc3R5bGUubGVmdCA9ICh0aGlzLmRvbUVsZW1lbnQub2Zmc2V0TGVmdCkrJ3B4JzsKCQlzdHlsZS50b3AgPSB0aGlzLmRvbUVsZW1lbnQub2Zmc2V0VG9wKydweCc7CgkJc3R5bGUud2lkdGggPSBib3gud2lkdGggKyAncHgnOwoJCXN0eWxlLmhlaWdodCA9IGJveC5oZWlnaHQgKyAncHgnOwoJCQoJCWlmICggYm94LndpZHRoICE9IDAgJiYgYm94LmhlaWdodCAhPSAwICkgewoJCQl0aGlzLnNpemVkID0gdHJ1ZTsKCQl9CgkJCgkJdmFyIGZsYXNoID0gdGhpcy5kaXYuY2hpbGROb2Rlc1swXTsKCQlmbGFzaC53aWR0aCA9IGJveC53aWR0aDsKCQlmbGFzaC5oZWlnaHQgPSBib3guaGVpZ2h0OwoJfSwKCQoJZ2V0SFRNTDogZnVuY3Rpb24od2lkdGgsIGhlaWdodCkgewoJCS8vIHJldHVybiBIVE1MIGZvciBtb3ZpZQoJCXZhciBodG1sID0gJyc7CgkJdmFyIGZsYXNodmFycyA9ICdpZD0nICsgdGhpcy5pZCArIAoJCQknJndpZHRoPScgKyB3aWR0aCArIAoJCQknJmhlaWdodD0nICsgaGVpZ2h0OwoJCQkKCQlpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRS8pKSB7CgkJCS8vIElFIGdldHMgYW4gT0JKRUNUIHRhZwoJCQl2YXIgcHJvdG9jb2wgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKC9eaHR0cHMvaSkgPyAnaHR0cHM6Ly8nIDogJ2h0dHA6Ly8nOwoJCQlodG1sICs9ICc8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgY29kZWJhc2U9IicrcHJvdG9jb2wrJ2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiN2ZXJzaW9uPTEwLDAsMCwwIiB3aWR0aD0iJyt3aWR0aCsnIiBoZWlnaHQ9IicraGVpZ2h0KyciIGlkPSInK3RoaXMubW92aWVJZCsnIiBhbGlnbj0ibWlkZGxlIj48cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+PHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9ImZhbHNlIiAvPjxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9IicrWmVyb0NsaXBib2FyZC5tb3ZpZVBhdGgrJyIgLz48cGFyYW0gbmFtZT0ibG9vcCIgdmFsdWU9ImZhbHNlIiAvPjxwYXJhbSBuYW1lPSJtZW51IiB2YWx1ZT0iZmFsc2UiIC8+PHBhcmFtIG5hbWU9InF1YWxpdHkiIHZhbHVlPSJiZXN0IiAvPjxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iI2ZmZmZmZiIgLz48cGFyYW0gbmFtZT0iZmxhc2h2YXJzIiB2YWx1ZT0iJytmbGFzaHZhcnMrJyIvPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50Ii8+PC9vYmplY3Q+JzsKCQl9CgkJZWxzZSB7CgkJCS8vIGFsbCBvdGhlciBicm93c2VycyBnZXQgYW4gRU1CRUQgdGFnCgkJCWh0bWwgKz0gJzxlbWJlZCBpZD0iJyt0aGlzLm1vdmllSWQrJyIgc3JjPSInK1plcm9DbGlwYm9hcmQubW92aWVQYXRoKyciIGxvb3A9ImZhbHNlIiBtZW51PSJmYWxzZSIgcXVhbGl0eT0iYmVzdCIgYmdjb2xvcj0iI2ZmZmZmZiIgd2lkdGg9Iicrd2lkdGgrJyIgaGVpZ2h0PSInK2hlaWdodCsnIiBuYW1lPSInK3RoaXMubW92aWVJZCsnIiBhbGlnbj0ibWlkZGxlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiBhbGxvd0Z1bGxTY3JlZW49ImZhbHNlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIGZsYXNodmFycz0iJytmbGFzaHZhcnMrJyIgd21vZGU9InRyYW5zcGFyZW50IiAvPic7CgkJfQoJCXJldHVybiBodG1sOwoJfSwKCQoJaGlkZTogZnVuY3Rpb24oKSB7CgkJLy8gdGVtcG9yYXJpbHkgaGlkZSBmbG9hdGVyIG9mZnNjcmVlbgoJCWlmICh0aGlzLmRpdikgewoJCQl0aGlzLmRpdi5zdHlsZS5sZWZ0ID0gJy0yMDAwcHgnOwoJCX0KCX0sCgkKCXNob3c6IGZ1bmN0aW9uKCkgewoJCS8vIHNob3cgb3Vyc2VsdmVzIGFmdGVyIGEgY2FsbCB0byBoaWRlKCkKCQl0aGlzLnJlcG9zaXRpb24oKTsKCX0sCgkKCWRlc3Ryb3k6IGZ1bmN0aW9uKCkgewoJCS8vIGRlc3Ryb3kgY29udHJvbCBhbmQgZmxvYXRlcgoJCWlmICh0aGlzLmRvbUVsZW1lbnQgJiYgdGhpcy5kaXYpIHsKCQkJdGhpcy5oaWRlKCk7CgkJCXRoaXMuZGl2LmlubmVySFRNTCA9ICcnOwoJCQkKCQkJdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdOwoJCQl0cnkgeyBib2R5LnJlbW92ZUNoaWxkKCB0aGlzLmRpdiApOyB9IGNhdGNoKGUpIHs7fQoJCQkKCQkJdGhpcy5kb21FbGVtZW50ID0gbnVsbDsKCQkJdGhpcy5kaXYgPSBudWxsOwoJCX0KCX0sCgkKCXJlcG9zaXRpb246IGZ1bmN0aW9uKGVsZW0pIHsKCQkvLyByZXBvc2l0aW9uIG91ciBmbG9hdGluZyBkaXYsIG9wdGlvbmFsbHkgdG8gbmV3IGNvbnRhaW5lcgoJCS8vIHdhcm5pbmc6IGNvbnRhaW5lciBDQU5OT1QgY2hhbmdlIHNpemUsIG9ubHkgcG9zaXRpb24KCQlpZiAoZWxlbSkgewoJCQl0aGlzLmRvbUVsZW1lbnQgPSBaZXJvQ2xpcGJvYXJkLiQoZWxlbSk7CgkJCWlmICghdGhpcy5kb21FbGVtZW50KSB0aGlzLmhpZGUoKTsKCQl9CgkJCgkJaWYgKHRoaXMuZG9tRWxlbWVudCAmJiB0aGlzLmRpdikgewoJCQl2YXIgYm94ID0gWmVyb0NsaXBib2FyZC5nZXRET01PYmplY3RQb3NpdGlvbih0aGlzLmRvbUVsZW1lbnQpOwoJCQl2YXIgc3R5bGUgPSB0aGlzLmRpdi5zdHlsZTsKCQkJc3R5bGUubGVmdCA9ICcnICsgYm94LmxlZnQgKyAncHgnOwoJCQlzdHlsZS50b3AgPSAnJyArIGJveC50b3AgKyAncHgnOwoJCX0KCX0sCgkKCWNsZWFyVGV4dDogZnVuY3Rpb24oKSB7CgkJLy8gY2xlYXIgdGhlIHRleHQgdG8gYmUgY29weSAvIHNhdmVkCgkJdGhpcy5jbGlwVGV4dCA9ICcnOwoJCWlmICh0aGlzLnJlYWR5KSB0aGlzLm1vdmllLmNsZWFyVGV4dCgpOwoJfSwKCQoJYXBwZW5kVGV4dDogZnVuY3Rpb24obmV3VGV4dCkgewoJCS8vIGFwcGVuZCB0ZXh0IHRvIHRoYXQgd2hpY2ggaXMgdG8gYmUgY29waWVkIC8gc2F2ZWQKCQl0aGlzLmNsaXBUZXh0ICs9IG5ld1RleHQ7CgkJaWYgKHRoaXMucmVhZHkpIHsgdGhpcy5tb3ZpZS5hcHBlbmRUZXh0KG5ld1RleHQpIDt9Cgl9LAoJCglzZXRUZXh0OiBmdW5jdGlvbihuZXdUZXh0KSB7CgkJLy8gc2V0IHRleHQgdG8gYmUgY29waWVkIHRvIGJlIGNvcGllZCAvIHNhdmVkCgkJdGhpcy5jbGlwVGV4dCA9IG5ld1RleHQ7CgkJaWYgKHRoaXMucmVhZHkpIHsgdGhpcy5tb3ZpZS5zZXRUZXh0KG5ld1RleHQpIDt9Cgl9LAoJCglzZXRDaGFyU2V0OiBmdW5jdGlvbihjaGFyU2V0KSB7CgkJLy8gc2V0IHRoZSBjaGFyYWN0ZXIgc2V0IChVVEYxNkxFIG9yIFVURjgpCgkJdGhpcy5jaGFyU2V0ID0gY2hhclNldDsKCQlpZiAodGhpcy5yZWFkeSkgeyB0aGlzLm1vdmllLnNldENoYXJTZXQoY2hhclNldCkgO30KCX0sCgkKCXNldEJvbUluYzogZnVuY3Rpb24oYm9tSW5jKSB7CgkJLy8gc2V0IGlmIHRoZSBCT00gc2hvdWxkIGJlIGluY2x1ZGVkIG9yIG5vdAoJCXRoaXMuaW5jQm9tID0gYm9tSW5jOwoJCWlmICh0aGlzLnJlYWR5KSB7IHRoaXMubW92aWUuc2V0Qm9tSW5jKGJvbUluYykgO30KCX0sCgkKCXNldEZpbGVOYW1lOiBmdW5jdGlvbihuZXdUZXh0KSB7CgkJLy8gc2V0IHRoZSBmaWxlIG5hbWUKCQl0aGlzLmZpbGVOYW1lID0gbmV3VGV4dDsKCQlpZiAodGhpcy5yZWFkeSkgdGhpcy5tb3ZpZS5zZXRGaWxlTmFtZShuZXdUZXh0KTsKCX0sCgkKCXNldEFjdGlvbjogZnVuY3Rpb24obmV3VGV4dCkgewoJCS8vIHNldCBhY3Rpb24gKHNhdmUgb3IgY29weSkKCQl0aGlzLmFjdGlvbiA9IG5ld1RleHQ7CgkJaWYgKHRoaXMucmVhZHkpIHRoaXMubW92aWUuc2V0QWN0aW9uKG5ld1RleHQpOwoJfSwKCQoJYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnROYW1lLCBmdW5jKSB7CgkJLy8gYWRkIHVzZXIgZXZlbnQgbGlzdGVuZXIgZm9yIGV2ZW50CgkJLy8gZXZlbnQgdHlwZXM6IGxvYWQsIHF1ZXVlU3RhcnQsIGZpbGVTdGFydCwgZmlsZUNvbXBsZXRlLCBxdWV1ZUNvbXBsZXRlLCBwcm9ncmVzcywgZXJyb3IsIGNhbmNlbAoJCWV2ZW50TmFtZSA9IGV2ZW50TmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXm9uLywgJycpOwoJCWlmICghdGhpcy5oYW5kbGVyc1tldmVudE5hbWVdKSB0aGlzLmhhbmRsZXJzW2V2ZW50TmFtZV0gPSBbXTsKCQl0aGlzLmhhbmRsZXJzW2V2ZW50TmFtZV0ucHVzaChmdW5jKTsKCX0sCgkKCXNldEhhbmRDdXJzb3I6IGZ1bmN0aW9uKGVuYWJsZWQpIHsKCQkvLyBlbmFibGUgaGFuZCBjdXJzb3IgKHRydWUpLCBvciBkZWZhdWx0IGFycm93IGN1cnNvciAoZmFsc2UpCgkJdGhpcy5oYW5kQ3Vyc29yRW5hYmxlZCA9IGVuYWJsZWQ7CgkJaWYgKHRoaXMucmVhZHkpIHRoaXMubW92aWUuc2V0SGFuZEN1cnNvcihlbmFibGVkKTsKCX0sCgkKCXNldENTU0VmZmVjdHM6IGZ1bmN0aW9uKGVuYWJsZWQpIHsKCQkvLyBlbmFibGUgb3IgZGlzYWJsZSBDU1MgZWZmZWN0cyBvbiBET00gY29udGFpbmVyCgkJdGhpcy5jc3NFZmZlY3RzID0gISFlbmFibGVkOwoJfSwKCQoJcmVjZWl2ZUV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUsIGFyZ3MpIHsKCQkvLyByZWNlaXZlIGV2ZW50IGZyb20gZmxhc2gKCQlldmVudE5hbWUgPSBldmVudE5hbWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15vbi8sICcnKTsKCQkKCQkvLyBzcGVjaWFsIGJlaGF2aW9yIGZvciBjZXJ0YWluIGV2ZW50cwoJCXN3aXRjaCAoZXZlbnROYW1lKSB7CgkJCWNhc2UgJ2xvYWQnOgoJCQkJLy8gbW92aWUgY2xhaW1zIGl0IGlzIHJlYWR5LCBidXQgaW4gSUUgdGhpcyBpc24ndCBhbHdheXMgdGhlIGNhc2UuLi4KCQkJCS8vIGJ1ZyBmaXg6IENhbm5vdCBleHRlbmQgRU1CRUQgRE9NIGVsZW1lbnRzIGluIEZpcmVmb3gsIG11c3QgdXNlIHRyYWRpdGlvbmFsIGZ1bmN0aW9uCgkJCQl0aGlzLm1vdmllID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5tb3ZpZUlkKTsKCQkJCWlmICghdGhpcy5tb3ZpZSkgewoJCQkJCXZhciBzZWxmID0gdGhpczsKCQkJCQlzZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsgc2VsZi5yZWNlaXZlRXZlbnQoJ2xvYWQnLCBudWxsKTsgfSwgMSApOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJCQoJCQkJLy8gZmlyZWZveCBvbiBwYyBuZWVkcyBhICJraWNrIiBpbiBvcmRlciB0byBzZXQgdGhlc2UgaW4gY2VydGFpbiBjYXNlcwoJCQkJaWYgKCF0aGlzLnJlYWR5ICYmIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3gvKSAmJiBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLykpIHsKCQkJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCQkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7IHNlbGYucmVjZWl2ZUV2ZW50KCdsb2FkJywgbnVsbCk7IH0sIDEwMCApOwoJCQkJCXRoaXMucmVhZHkgPSB0cnVlOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJCQoJCQkJdGhpcy5yZWFkeSA9IHRydWU7CgkJCQl0aGlzLm1vdmllLmNsZWFyVGV4dCgpOwoJCQkJdGhpcy5tb3ZpZS5hcHBlbmRUZXh0KCB0aGlzLmNsaXBUZXh0ICk7CgkJCQl0aGlzLm1vdmllLnNldEZpbGVOYW1lKCB0aGlzLmZpbGVOYW1lICk7CgkJCQl0aGlzLm1vdmllLnNldEFjdGlvbiggdGhpcy5hY3Rpb24gKTsKCQkJCXRoaXMubW92aWUuc2V0Q2hhclNldCggdGhpcy5jaGFyU2V0ICk7CgkJCQl0aGlzLm1vdmllLnNldEJvbUluYyggdGhpcy5pbmNCb20gKTsKCQkJCXRoaXMubW92aWUuc2V0SGFuZEN1cnNvciggdGhpcy5oYW5kQ3Vyc29yRW5hYmxlZCApOwoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdtb3VzZW92ZXInOgoJCQkJaWYgKHRoaXMuZG9tRWxlbWVudCAmJiB0aGlzLmNzc0VmZmVjdHMpIHsKCQkJCQkvL3RoaXMuZG9tRWxlbWVudC5hZGRDbGFzcygnaG92ZXInKTsKCQkJCQlpZiAodGhpcy5yZWNvdmVyQWN0aXZlKSB0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdtb3VzZW91dCc6CgkJCQlpZiAodGhpcy5kb21FbGVtZW50ICYmIHRoaXMuY3NzRWZmZWN0cykgewoJCQkJCXRoaXMucmVjb3ZlckFjdGl2ZSA9IGZhbHNlOwoJCQkJCWlmICh0aGlzLmRvbUVsZW1lbnQuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7CgkJCQkJCXRoaXMuZG9tRWxlbWVudC5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CgkJCQkJCXRoaXMucmVjb3ZlckFjdGl2ZSA9IHRydWU7CgkJCQkJfQoJCQkJCS8vdGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCdob3ZlcicpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdtb3VzZWRvd24nOgoJCQkJaWYgKHRoaXMuZG9tRWxlbWVudCAmJiB0aGlzLmNzc0VmZmVjdHMpIHsKCQkJCQl0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdtb3VzZXVwJzoKCQkJCWlmICh0aGlzLmRvbUVsZW1lbnQgJiYgdGhpcy5jc3NFZmZlY3RzKSB7CgkJCQkJdGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKCQkJCQl0aGlzLnJlY292ZXJBY3RpdmUgPSBmYWxzZTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0gLy8gc3dpdGNoIGV2ZW50TmFtZQoJCQoJCWlmICh0aGlzLmhhbmRsZXJzW2V2ZW50TmFtZV0pIHsKCQkJZm9yICh2YXIgaWR4ID0gMCwgbGVuID0gdGhpcy5oYW5kbGVyc1tldmVudE5hbWVdLmxlbmd0aDsgaWR4IDwgbGVuOyBpZHgrKykgewoJCQkJdmFyIGZ1bmMgPSB0aGlzLmhhbmRsZXJzW2V2ZW50TmFtZV1baWR4XTsKCQkJCgkJCQlpZiAodHlwZW9mKGZ1bmMpID09ICdmdW5jdGlvbicpIHsKCQkJCQkvLyBhY3R1YWwgZnVuY3Rpb24gcmVmZXJlbmNlCgkJCQkJZnVuYyh0aGlzLCBhcmdzKTsKCQkJCX0KCQkJCWVsc2UgaWYgKCh0eXBlb2YoZnVuYykgPT0gJ29iamVjdCcpICYmIChmdW5jLmxlbmd0aCA9PSAyKSkgewoJCQkJCS8vIFBIUCBzdHlsZSBvYmplY3QgKyBtZXRob2QsIGkuZS4gW215T2JqZWN0LCAnbXlNZXRob2QnXQoJCQkJCWZ1bmNbMF1bIGZ1bmNbMV0gXSh0aGlzLCBhcmdzKTsKCQkJCX0KCQkJCWVsc2UgaWYgKHR5cGVvZihmdW5jKSA9PSAnc3RyaW5nJykgewoJCQkJCS8vIG5hbWUgb2YgZnVuY3Rpb24KCQkJCQl3aW5kb3dbZnVuY10odGhpcywgYXJncyk7CgkJCQl9CgkJCX0gLy8gZm9yZWFjaCBldmVudCBoYW5kbGVyIGRlZmluZWQKCQl9IC8vIHVzZXIgZGVmaW5lZCBoYW5kbGVyIGZvciBldmVudAoJfQoJCn07Cg==]]></data>
	</file>
</module>
