PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJWb3JzY2hs5GdlIGb8ciBLb25mZXJlbnpiZWl0cuRnZSBr9m5uZW4gamV0enQgZWluZ2VyZWljaHQgd2VyZGVuIjsKJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlIHN1bW1pdCBldXJvcGUsIGNhbGwgZm9yIHBhcGVycywgMjAwOCI7CiRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoKIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCiMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwojICROYXYtPmFkZEN1c3RvbU5hdigiR29vZ2xlIiwgImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iLCAiX2JsYW5rIik7CgojIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwojCgojIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQokaHRtbCA9IDw8PEVPSFRNTAoJCTxzdHlsZT4KCQkucGFkZGVkbGlzdCBsaSB7CXBhZGRpbmctYm90dG9tOjdweDsJfQoJPC9zdHlsZT4KPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDI+UHJlc3MgUmVsZWFzZTwvaDI+CgoJCTxjZW50ZXI+CgkJPGgxPkVjbGlwc2UgU3VtbWl0IEV1cm9wZTwvaDE+CgkJPGgxPiRwYWdlVGl0bGU8L2gxPgoJCTwvY2VudGVyPgoKCQk8cD48c3Ryb25nPkx1ZHdpZ3NidXJnLCBEZXV0c2NobGFuZCwgMjYuIE1haSAyMDA4Ljwvc3Ryb25nPiAtIAoJCURpZSBFY2xpcHNlIEZvdW5kYXRpb24gdmVyYW5zdGFsdGV0IHZvbSAxOS4gliAyMC4gTm92ZW1iZXIgMjAwOCBpaHJlbiBkcml0dGVuIEV1cm9wYS1KYWhyZXNnaXBmZWwsIGRlbiCERWNsaXBzZSBTdW1taXSTLCBpbiBMdWR3aWdidXJnLiBEaWUgS29uZmVyZW56IHN0ZWxsdCBkZW4gYmVkZXV0ZW5kc3RlbiBFdmVudCBm/HIgZGllIGV1cm9w5GlzY2hlIEVjbGlwc2UgQ29tbXVuaXR5IGRhci4gSGllciBlcmhhbHRlbiBkaWUgVGVpbG5laG1lciBkaWUgYWt0dWVsbHN0ZW4gSW5mb3JtYXRpb25lbiD8YmVyIGRpZSBFY2xpcHNlIFRlY2hub2xvZ2llLCBkaWUgRWNsaXBzZSBGb3VuZGF0aW9uIHVuZCBkZXJlbiBNaXRnbGllZGVyLCBr9m5uZW4gc2ljaCBhdXN0YXVzY2hlbiBzb3dpZSBLb250YWt0ZSBm/HIgS29vcGVyYXRpb25lbiBrbvxwZmVuLjwvcD4KCQkKCQk8cD5X5GhyZW5kIGFtIFZvcnRhZyBkZXMgRWNsaXBzZSBFdXJvcGEtR2lwZmVscyBlaW5lIFN5bXBvc2llbi1SZWloZSBhbmdlYm90ZW4gd2lyZCwgc3RlaGVuIGFuIGRlbiBiZWlkZW4gS29uZmVyZW56dGFnZW4sIGRlbSAxOS4gdW5kIDIwLiBOb3ZlbWJlciwgSVQtVGVjaG5vbG9naWUgdW5kIEJ1c2luZXNzLW9yaWVudGllcnRlIFZvcnRy5GdlIHVuZCBLZXlub3RlcyBzb3dpZSBEZW1vcyB1bmQgZGFzIE5ldHp3ZXJrZW4gZGVyIFRlaWxuZWhtZXIgaW0gTWl0dGVscHVua3QuIERpZSBWZXJhbnN0YWx0dW5nIGJpZXRldCB6YWhscmVpY2hlIEFucmVndW5nZW4gliBzb3dvaGwgZvxyIGRpZWplbmlnZW4sIGRpZSBhbiBkZXIgRWNsaXBzZSBQbGF0dGZvcm0gc2VsYnN0IG1pdGFyYmVpdGVuIGFscyBhdWNoIGb8ciBkaWVqZW5pZ2VuLCBkaWUga29tbWVyemllbGxlIG9kZXIgbmljaHQta29tbWVyemllbGxlIEVyd2VpdGVydW5nZW4gYXVmIEJhc2lzIGRlciBQbGF0dGZvcm0gcmVhbGlzaWVyZW4gb2RlciBTZXJ2aWNlcyB1bmQgU2NodWx1bmdlbiBpbSBFY2xpcHNlINZrb3N5c3RlbSBhbmJpZXRlbi4gRvxyIHNpZSBhbGxlIHN0ZWxsdCBkZXIgRWNsaXBzZSBFdXJvcGEtR2lwZmVsIGVpbmUgZ3V0ZSBHZWxlZ2VuaGVpdCBkYXIsIGlociBGYWNod2lzc2VuIHp1IGVyd2VpdGVybiB1bmQgbmV1ZSBJZGVlbiBm/HIgSVQtTPZzdW5nZW4gaW0gRWNsaXBzZSDWa29zeXN0ZW0genUgZXJoYWx0ZW4uIDwvcD4gCgoJCTxwPlZvcnNjaGzkZ2UgZvxyIEtvbmZlcmVuemJlaXRy5GdlIGv2bm5lbiBiaXMgenVtIDEuIFNlcHRlbWJlciBlaW5nZXJlaWNodCB3ZXJkZW4uIERpZXNlIHNvbGx0ZW4gYXVmIGVpbmUgZGVyIGZvbGdlbmRlbiB2aWVyIEthdGVnb3JpZW4genVnZXNjaG5pdHRlbiBzZWluOiBBbndlbmRlcmJlcmljaHRlICgxKSwgVGVjaG5pay1EZW1vbnN0cmF0aW9uZW4gKDIpLCBHYW55bWVkZSBVcGRhdGVzICgzKSBvZGVyIE5ld3MgJiBOb3Rld29ydGh5ICg0LikgRGllIFJpY2h0bGluaWVuIGb8ciBkaWUgZWluenVyZWljaGVuZGVuIFZvcnRy5GdlIHNpbmQg/GJlciBmb2xnZW5kZSBXZWJzaXRlIGFicnVmYmFyOiA8YSBocmVmPSJodHRwOi8vZWNsaXBzZXN1bW1pdC5vcmcvc3VtbWl0ZXVyb3BlMjAwOC9zdWJtaXNzaW9ucyI+aHR0cDovL2VjbGlwc2VzdW1taXQub3JnL3N1bW1pdGV1cm9wZTIwMDgvc3VibWlzc2lvbnM8L2E+LjwvcD4KIAoJCTxwPkluZm9ybWF0aW9uZW4genUgZGVuIFNwb25zb3JpbmctUGFrZXRlbiBm/HIgZGVuIEVjbGlwc2UgRXVyb3BhLUdpcGZlbCBr9m5uZW4gYWIgc29mb3J0IGFiZ2VydWZlbiB1bmQgZ2VidWNodCB3ZXJkZW4gdW50ZXI6IDxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlc3VtbWl0Lm9yZy9zdW1taXRldXJvcGUyMDA4L3Nwb25zb3JzaGlwIj5odHRwOi8vZWNsaXBzZXN1bW1pdC5vcmcvc3VtbWl0ZXVyb3BlMjAwOC9zcG9uc29yc2hpcDwvYT4uIERpZSBXZWJzaXRlIGb8ciBkaWUgUmVnaXN0cmllcnVuZyBkZXIgS29uZmVyZW56dGVpbG5haG1lIHN0ZWh0IGFiIFNvbW1lciBiZXJlaXQuIDwvcD4KCQkJCQoJCTxwPjxiPtxiZXIgZGllIEVjbGlwc2UgRm91bmRhdGlvbjwvYj48YnI+CgkJRWNsaXBzZSBpc3QgZWluZSBPcGVuIFNvdXJjZSBDb21tdW5pdHkuIEluIGlocmVuIFByb2pla3RlbiBnZWh0IGVzIHNjaHdlcnB1bmt0beTfaWcgdW0gZGFzIEVudHdpY2tlbG4gZWluZXIgb2ZmZW5lbiB1bmQgZXJ3ZWl0ZXJiYXJlbiBUb29scy0gdW5kIFJ1bnRpbWUtUGxhdHRmb3JtLiBEaWVzZSBQbGF0dGZvcm0gZXJsYXVidCBlcywgc293b2hsIFRvb2xzIGFscyBhdWNoIFVudGVybmVobWVuc2Fud2VuZHVuZ2VuIHp1IGVudHdpY2tlbG4sIHp1IHZlcnRlaWxlbiB1bmQg/GJlciBkZW4gTGlmZS1DeWNsZSBoaW53ZWcgenUgYmV0cmV1ZW4uIERpZSBFY2xpcHNlIFRlY2hub2xvZ2llIHdpcmQgdm9uIGVpbmVtIGdyb99lbiDWa29zeXN0ZW0gdW50ZXJzdPx0enQuIEhpZXIgYnJpbmdlbiBzaWNoIG5lYmVuIGRlbiBncm/fZW4gU29mdHdhcmUtSGVyc3RlbGxlcm4gYXVjaCBpbm5vdmF0aXZlIGtsZWluZXJlIEZpcm1lbiwgVW5pdmVyc2l05HRlbiwgU2VydmljZS1BbmJpZXRlciB1bmQgVW50ZXJuZWhtZW4gYXVzIGRlbiB2ZXJ0aWthbGVuIE3kcmt0ZW4gZWluLjwvcD4KCQkKCQk8cD5EaWUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzdCBlaW5lIHZvbiBNaXRnbGllZGVybiBnZXRyYWdlbmUsIGdlbWVpbm78dHppZ2UgT3JnYW5pc2F0aW9uIG5hY2ggVVMtUmVjaHQgdW5kIHN0ZWxsdCBkaWUgSW5mcmFzdHJ1a3R1ciB1bmQgRGllbnN0bGVpc3R1bmdlbiBm/HIgRWNsaXBzZSBPcGVuIFNvdXJjZSBQcm9qZWt0ZSBiZXJlaXQuIEF1c2b8aHJsaWNoZSBJbmZvcm1hdGlvbmVuIHp1IEVjbGlwc2UgdW5kIGRlciBFY2xpcHNlIEZvdW5kYXRpb24gc2luZCB1bnRlciA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPiBlcmjkbHRsaWNoLjwvcD4KCgkJPHA+PGNlbnRlcj4jIyM8L2NlbnRlcj48cD4KCQkKCQk8cD5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L3A+CgkJCQkKCQk8cD48Yj5QcmVzc2Vrb250YWt0OjwvYj48YnIvPgoJCUlhbiBTa2VycmV0dDxici8+CgkJRGlyZWN0b3Igb2YgTWFya2V0aW5nPGJyLz4KCQlFY2xpcHNlIEZvdW5kYXRpb248YnIvPgoJCTxhIGhyZWY9Im1haWx0bzppYW4uc2tlcnJldHRAZWNsaXBzZS5vcmciPmlhbi5za2VycmV0dEBlY2xpcHNlLm9yZzwvYT48YnI+CgkJKzEgLTYxMy0yMjQtOTQ2MSAoZXh0LiAyMjcpPGJyPgoJCTxicj4KCgk8L2Rpdj4KCjwvZGl2PgoKCgkJCgpFT0hUTUw7CgoJJGh0bWwgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRodG1sLCAiSFRNTC1FTlRJVElFUyIpOwoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK