U29tZXRpbWVzIHlvdSBydW4gYWNyb3NzIGEgdG9vbCB0aGF0IHlvdSBrbm93IHdpbGwgY2hhbmdlIHlvdXIgcHJvZmVzc2lvbmFsLCBwZXJzb25hbCwgYW5kIHBlZGFnb2dpY2FsIGxpZmUuICBBbnRob2xvZ2l6ZSwgYSBuZXcgcGx1Zy1pbiBmb3IgV29yZFByZXNzLCBpcyBvbmUgb2YgdGhlc2UgdG9vbHMuICA8YnIgLz48YnIgLz5JIGhhdmUgYmVlbiBleHBlcmltZW50aW5nIHdpdGggaXQgYWxsIG1vcm5pbmcgYW5kIGFsdGhvdWdoIGl0IGlzIGluIGFscGhhIEkgZmluZCBpdCB0byBiZSBpbiBnZW5lcmFsIHdvcmtpbmcgb3JkZXIuICAgIEFudGhvbG9naXplIGlzIGEgcmVzdWx0IG9mIHRoZSA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7LyoxMjgxNjQwOTE5Nzc0Ki8iPk9uZSBXZWVrIE9uZSBUb29sPC9hPiBpbml0aWF0aXZlIHNwb25zb3JlZCBieSBDZW50ZXIgZm9yIEhpc3RvcnkgYW5kIE5ldyBNZWRpYSAoQ0hOTSkgYXQgR2VvcmdlIE1hc29uIFVuaXZlcnNpdHkuICBUaGUgaWRlYSB3YXMgJnF1b3Q7bW9yZSBoYWNrIGFuZCBsZXNzIHlhY2smcXVvdDsuICBJbiBvdGhlciB3b3JkcyBDSE5NIHByb3Bvc2VkJm5ic3A7IHdhbnRlZCAmcXVvdDsuLi4gYSB1bmlxdWUga2luZCBvZiBpbnN0aXR1dGU6IE9uZSBXZWVrLCBPbmUgVG9vbCB3aWxsICB0ZWFjaCBwYXJ0aWNpcGFudHMgaG93IHRvIGJ1aWxkIGEgZGlnaXRhbCB0b29sIGZvciBodW1hbml0aWVzICBzY2hvbGFyc2hpcCBieSBhY3R1YWxseSBidWlsZGluZyBhIHRvb2wsIGZyb20gaW5jZXB0aW9uIHRvIGxhdW5jaCwgaW4gYSAgd2VlayZtZGFzaDthIGRpZ2l0YWwgaHVtYW5pdGllcyBiYXJuIHJhaXNpbmcuJnF1b3Q7PGJyIC8