PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgRm91bmRhdGlvbiBDb21tdW5pdHkgQXdhcmRzIEFubm91bmNlbWVudCI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2UgRm91bmRhdGlvbiwgY29tbXVuaXR5LCBhd2FyZHMsIHdpbm5lcnMsIDIwMDYsIHByZXNzLCByZWxlYXNlIjsKCSRwYWdlQXV0aG9yCQk9ICJOYXRoYW4gR2VydmFpcyI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxoMiBBTElHTj0iQ0VOVEVSIj48c3Ryb25nPkVjbGlwc2UgQ29tbXVuaXR5IEF3YXJkcyBXaW5uZXJzIEFubm91bmNlZDwvc3Ryb25nPjwvaDI+CgkJPHVsPgoJCQk8bGk+SW5hdWd1cmFsIEF3YXJkcyBIb25vciBJbmRpdmlkdWFscyBhbmQgUHJvZHVjdHMgdGhhdCBIYXZlIENvbnRyaWJ1dGVkIHRvIHRoZSBHcm93dGggYW5kIFJlYWNoIG9mIHRoZSBFY2xpcHNlIENvbW11bml0eTwvbGk+CgkJPC91bD4KCQk8cD48c3Ryb25nPkVDTElQU0VDT04gMjAwNiwgU0FOVEEgQ0xBUkEsIENhbGlmLiwgTWFyY2ggMjEsIDIwMDY8L3N0cm9uZz6XVGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0b2RheSBhbm5vdW5jZWQgdGhlIHdpbm5lcnMgb2YgaXRzIGluYXVndXJhbCBFY2xpcHNlIENvbW11bml0eSBBd2FyZHMuIFdpbm5lcnMgd2VyZSBzZWxlY3RlZCBieSB0aGUgRWNsaXBzZSBjb21tdW5pdHkgYW5kIHdlcmUgaG9ub3JlZCBhdCBhbiBhd2FyZHMgY2VyZW1vbnkgbGFzdCBuaWdodCBvbiB0aGUgb3BlbmluZyBkYXkgb2YgRWNsaXBzZUNvbiAyMDA2LiBUaGUgYXdhcmRzIGhvbm9yIGluZGl2aWR1YWxzIGFuZCBwcm9kdWN0cyB0aGF0IGhhdmUgaGVscGVkIGZ1cnRoZXIgdGhlIHJlYWNoIG9mIHRoZSBFY2xpcHNlIGNvbW11bml0eSBhbmQgZXh0ZW5kZWQgdGhlIGVjb3N5c3RlbS4KCQk8YnIgLz48YnIgLz4KCQlUaGUgSW5kaXZpZHVhbCBBd2FyZHMgcmVjb2duaXplIHRoZSBwZW9wbGUgd2hvIGhhdmUgdm9sdW50ZWVyZWQgdGhlaXIgdGltZSBhbmQgcmVzb3VyY2VzIGluIG1ha2luZyBFY2xpcHNlIGEgdmlicmFudCBhbmQgaW5ub3ZhdGl2ZSBjb21tdW5pdHkuIFdpbm5lcnMgd2VyZSBzZWxlY3RlZCBieSB0aGVpciBwZWVycyBpbiBhbiBvbmxpbmUgdm90ZS48L3A+CgkJPHVsPgoJCQk8bGk+PHN0cm9uZz5Ub3AgQ29udHJpYnV0b3I8L3N0cm9uZz46IExpbmRhIFdhdHNvbi4gRmluYWxpc3RzIGluIHRoaXMgY2F0ZWdvcnkgYXJlIEd1bm5hciBXYWdlbmtuZWNodCBhbmQgTWlrIEtlcnN0ZW4uPC9saT4KCQkJPGxpPjxzdHJvbmc+VG9wIENvbW1pdHRlcjwvc3Ryb25nPjogQWxhaW4gTWFnbG9pcmUuIEZpbmFsaXN0cyBpbiB0aGlzIGNhdGVnb3J5IGFyZSBFZCBNZXJrcyBhbmQgSmVmZiBNY0FmZmVyLjwvbGk+CgkJCTxsaT48c3Ryb25nPlRvcCBBbWJhc3NhZG9yPC9zdHJvbmc+OiBFZCBCdXJuZXR0ZS4gRmluYWxpc3RzIGluIHRoaXMgY2F0ZWdvcnkgYXJlIEVyaWNoIEdhbW1hIGFuZCBQYXQgTWNDYXJ0aHkuPC9saT4KCQk8L3VsPgoJCTxwPlRoZSBUZWNobm9sb2d5IEF3YXJkcyByZWNvZ25pemUgdGhlIG9wZW4gc291cmNlIHByb2plY3RzIGFuZCBwcm9kdWN0cyB0aGF0IGFyZSBiZWluZyBkZXZlbG9wZWQgYXJvdW5kIHRoZSBFY2xpcHNlIFJpY2ggQ2xpZW50IFBsYXRmb3JtIChSQ1ApIGFuZCBkZXZlbG9wZXIgdG9vbHMuIFRlY2hub2xvZ3kgQXdhcmQgd2lubmVycyB3ZXJlIHNlbGVjdGVkIGJ5IGEgcGFuZWwgb2YganVkZ2VzIGNob3NlbiBmcm9tIHRoZSBFY2xpcHNlIGNvbW11bml0eS48L3A+CgkJPHVsPgoJCQk8bGk+PHN0cm9uZz5CZXN0IG9wZW4gc291cmNlIFJDUCBhcHBsaWNhdGlvbjwvc3Ryb25nPjogR3VtdHJlZSAoPGEgaHJlZj0iaHR0cDovL2d1bXRyZWUuc291cmNlZm9yZ2UubmV0Ij5odHRwOi8vZ3VtdHJlZS5zb3VyY2Vmb3JnZS5uZXQ8L2E+KS4gVGhlIGZpbmFsaXN0IGlzIHVEaWcgKDxhIGhyZWY9Imh0dHA6Ly91ZGlnLnJlZnJhY3Rpb25zLm5ldCI+aHR0cDovL3VkaWcucmVmcmFjdGlvbnMubmV0PC9hPikuPC9saT4KCQkJPGxpPjxzdHJvbmc+QmVzdCBjb21tZXJjaWFsIFJDUCBhcHBsaWNhdGlvbjwvc3Ryb25nPjogTG9tYmFyZGkgVGVhbXdvcmtzICg8YSBocmVmPSJodHRwOi8vd3d3LmxvbWJhcmRpc29mdHdhcmUuY29tIj53d3cubG9tYmFyZGlzb2Z0d2FyZS5jb208L2E+KS4gVGhlIGZpbmFsaXN0IGlzIEZ1dHVyZSBNYW5hZ2VtZW50IExvZ2ljIE1pbmRHdWlkZSAoPGEgaHJlZj0iaHR0cDovL3d3dy5sb2dpY21pbmRndWlkZS5jb20iPnd3dy5sb2dpY21pbmRndWlkZS5jb208L2E+KS48L2xpPgoJCQk8bGk+PHN0cm9uZz5CZXN0IG9wZW4gc291cmNlIEVjbGlwc2UtYmFzZWQgZGV2ZWxvcGVyIHRvb2w8L3N0cm9uZz46IFJhZFJhaWxzICg8YSBocmVmPSJodHRwOi8vd3d3LnJhZHJhaWxzLm9yZyI+d3d3LnJhZHJhaWxzLm9yZzwvYT4pLjwvbGk+CgkJCTxsaT48c3Ryb25nPkJlc3QgY29tbWVyY2lhbCBFY2xpcHNlLWJhc2VkIGRldmVsb3BlciB0b29sPC9zdHJvbmc+OiBCRUEgV29ya3Nob3AgU3R1ZGlvIDMuMCAoPGEgaHJlZj0iaHR0cDovL3d3dy5iZWEuY29tIj53d3cuYmVhLmNvbTwvYT4pLiBGaW5hbGlzdHMgaW4gdGhpcyBjYXRlZ29yeSBhcmUgRXhhZGVsIFN0dWRpbyBQcm8gKDxhIGhyZWY9Imh0dHA6Ly93d3cuZXhhZGVsLmNvbSI+d3d3LmV4YWRlbC5jb208L2E+KSBhbmQgUU5YIE1vbWVudGljcyAoPGEgaHJlZj0iaHR0cDovL3d3dy5xbnguY29tIj53d3cucW54LmNvbTwvYT4pLjwvbGk+IAoJCQk8bGk+PHN0cm9uZz5CZXN0IGRlcGxveW1lbnQgb2YgRWNsaXBzZSB0ZWNobm9sb2d5IGluIGFuIGVudGVycHJpc2U8L3N0cm9uZz46IENvbXBhc3MgR3JvdXAgKFB0eSkgTHRkICYgSmlnc2F3IEludGVyYWN0aXZlIENDICg8YSBocmVmPSJodHRwOi8vd3d3LmppLmNvLnphIj53d3cuamkuY28uemE8L2E+KS48L2xpPgoJCTwvdWw+CgkJPHA+k1dlknJlIGV4dHJlbWVseSBwbGVhc2VkIHRvIHJlY29nbml6ZSB0aGVzZSBpbmRpdmlkdWFscyBhbmQgcHJvZHVjdHMgZm9yIHRoZWlyIG91dHN0YW5kaW5nIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIEVjbGlwc2UgY29tbXVuaXR5LJQgc2FpZCBNaWtlIE1pbGlua292aWNoLCBleGVjdXRpdmUgZGlyZWN0b3IsIEVjbGlwc2UgRm91bmRhdGlvbi4gk0FzIEVjbGlwc2UgZXhwYW5kcyBpdHMgcHJvamVjdHMgaW50byBuZXcgdGVjaG5vbG9neSBhcmVhcywgdGhlIG1vc3QgaW1wb3J0YW50IGVsZW1lbnQgb2Ygb3VyIHN1Y2Nlc3MgcmVtYWlucyB0aGUgc3RyZW5ndGggb2YgdGhlIGNvbW11bml0eS4gVGhlc2UgYXdhcmRzIGFyZSBhIHNtYWxsIHRva2VuIG9mIGFwcHJlY2lhdGlvbiBmb3IgdGhlIGNvbW11bml0eSBieSB0aGUgY29tbXVuaXR5LpQgPC9wPgoJCTxwPjxzdHJvbmc+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPjxiciAvPgoJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBzb2Z0d2FyZS4gRWNsaXBzZSBwcm92aWRlcyBleHRlbnNpYmxlIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgc3BhbiB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQgcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZiBFY2xpcHNlIGFuZCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFyZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+d3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CgkJPGJyIC8+CgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8YnIgLz4KCQlBbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy4KCQk8YnIgLz48YnIgLz48c3Ryb25nPlByZXNzIENvbnRhY3Q8L3N0cm9uZz48YnI+CQoJCVJhY2hlbCBJbWJyaWdsaW88YnI+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnM8YnI+CgkJNzgxLTY4NC0wNzcwPGJyPgoJCWVjbGlwc2VAc2Nod2FydHotcHIuY29tIDxicj4KCQk8YnI+CgoJCTwvcD4KCQkJCQkJCQoJPC9kaXY+CgoJPGRpdiBpZD0icmlnaHRjb2x1bW4iPgoJPGRpdiBjbGFzcz0ic2lkZWl0ZW0iPgoJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSIvb3JnL2ZvdW5kYXRpb24vZWNsaXBzZWF3YXJkcy93aW5uZXJzLnBocCI+RWNsaXBzZSAyMDA2IENvbW11bml0eSBBd2FyZHMgSG9tZSBwYWdlPC9hPjwvbGk+CgkJPC91bD4JCgk8L2Rpdj4KCTwvZGl2PgoJCQo8L2Rpdj4KCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==