VHVzY2FueSBpbXBsZW1lbnRhdGlvbiBPcGVuSnBhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUGVyc2lzdGVuY2UgdGVjaG5vbG9neSBpcyBhIHZlcnkgcGFydCBvZiBlbnRlcnByaXNlIGxldmVsIGFwcGxpY2F0aW9uIHN5c3RlbS4gVHVzY2FueSBoYXMgcHJvdmlkZWQgClNETyBpbXBsZW1lbnRhdGlvbiBhbmQgYSBub24gc3RhbmRhcmQgYnV0IHVzZWZ1bCBEQVMgaW5mcmFzdHJ1Y3R1cmUuCkJ1dCBUdXNjYW55IGFsc28gY29uc2lkZXJlZCBtdWNoIGV4aXN0ZWQgc29mdHdhcmUgcmVzb3VyY2UgaGFzIHVzZWQgcG9wdWxhciB0ZWNobm9sb2dpZXMgYXMgCmhpYmVybmF0ZSBhbmQganBhLgpIaWJlcm5hdGUgaGFzIGxpY2Vuc2UgcHJvYmxlbSBzbyBhbiBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBpdCBjYW4gbm90IGJlIGhvc3RlZCBieSBBcGFjaGUuClRoaXMgaW1wbGVtZW50YXRpb24gaXMgZGV2ZWxvcGVkIG9uIHRoZSBiYXNlcyBvZiBUdXNjYW55oa9zIHJvYnVzdCBleHRlbnNpYmxlIGFyY2hpdGVjdHVyZSBhbmQgb2YgCmNvdXJzZSB0aGUganBhIGltcGxlbWVudGF0aW9uIHByb2plY3Q6IEFwYWNoZSBPcGVuSlBBLgoKVGhpcyBtb2R1bGUgaXMgdW5kZXIgdGhlIHByb2Nlc3Mgb2YgbW9yZSBpbXByb3ZlbWVudDoKCkZvciB0aGUgdGltZSBiZWluZywgdXNlciBvZiB0aGlzIG1vZHVsZSBjb3VsZCBjb25maWd1cmUgYSBjb21wb25lbnQgYXMgZGlkIGJ5IHRoZSAqLmNvbXBvc2l0ZSBmaWxlIAppbiB0aGlzIG1vZHVsZS4gVGhlIGNvbXBvbmVudCBpcyBpbmZhY3QgYSBwcm94eSBvZiBhIEpQQSB0b3AgYXBpOgoJamF2YXgucGVyc2l0ZW5jZS5FbnRpdHlNYW5hZ2VyClVzZXIgb2YgdGhpcyBtb2R1bGUgY291bGQgdXNlIGFsbCB0aGUgbWV0aG9kIHByb3ZpZGVkIGJ5IHRoaXMgaW50ZXJmYWNlLgoKQW4gZGlmZmVyZW5jZSBpczogT3BlbkpQQSBjb3VsZCB3b3JrIHdpdGggMlBDIG9ubHkgaWYgdGhlcmUgaXMgSk5ESSBjb250ZXh0IGFuZCAKVHJhbnNhY3Rpb25NYW5hZ2VyIHJlZ2lzdGVyZWQgaW4gdGhlIEpOREkuIFRoaXMgbW9kdWxlIG1vZGlmaWVkIG11Y2ggdG8gd29yayB3aXRoIApwb2xpY3ktdHJhbnNhY3Rpb24gbW9kdWxlLgoKRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGUgVHJhbnNhY3Rpb24gYm91bmRhcnkgaXMgbG9jYXRlZCBhcm91bmQgb25lIGludm9jYXRpb24gb2YgdGhlIEVudGl0eU1hbmFnZXIuIEJ1dCBpbiB0aGUgZnV0dXJlLCB0aGVzZSBib3VuZGFyeSB3aWxsIG1vdmUgdXAgdG8gYW4gY29tcG9uZW50IHdobyByZWZlcmVuY2VzIHRoZSBFbnRpdHlNYW5hZ2VyLCB0aGF0IHdpbGwgYmUgdGhlIHJpZ2h0ZW91cyB3YXkgZm9yIFNDQSBkZXZlbG9wZXJzIQoKVGhlIGRhdGEgYmFzZSB3b3JraW5nIGluIHRoaXMgbW9kdWxlIGlzIG5vdyBEZXJieSwgaXQgaXMgZm9yIHRoZSBlYXNlIG9mIHRlc3QgcnVubmluZy4gTXlTUUwgCmNvdWxkIGFsc28gd29yayB3aXRoIHRoaXMgbW9kdWxlLCBidXQgaXQgbmVlZCBkYXRhYmFzZSBkZXBsb3ltZW50IGluIGJlZm9yZS4gTm90IGFsbCB0eXBlcyBvZiBkYXRhYmFzZSBjb3VsZCB3b3JrIHdpdGggdGhpcyBtb2R1bGUsIHN1Y2ggYXMgSFNxbCwgaXQgZGlkIG5vdCBwcm92aWRlZCBhIFhBIERhdGFTb3VyY2UgaW1wbGVtZW50YXRpb24gdXAgdG8gbm93LgoKVGhlcmUgYXJlIG11Y2ggcG93ZXJmdWwgZmVhdHVyZXMgcHJvdmlkZWQgYnkgb3BlbmpwYSwgc3VjaCBhcyB0YWJsZSBhdXRvIGdlbmVyYXRpb24sIGl0IGlzIG5vdyBhbHNvIHdvcmtpbmcgaW4gdGhpcyBtb2R1bGUuCgpVc2VyIGNvdWxkIGdldCBzdGFydCBmcm9tIGxvb2tpbmcgYXQgd2hhdCBpcyBkb25lIGJ5Ogo/P29yZy5hcGFjaGUudHVzY2FueS5zY2EuaW1wbGVtZW50YXRpb24ub3BlbmpwYS5JbXBsSnBhVGVzdENhc2UgCj8/YW5kCj8/b3BlbmpwYS5jb21wb3NpdGUKV2hlbiBydW5uaW5nIHRoZSB0ZXN0Y2FzZSwgYSBSdW50aW1lRXhjZXB0aW9uIHN0YWNrIHRyYWNlKGZyb20gaW5zaWRlIG9wZW5qcGEgYXBpKSB3aWxsIGdldCBwcmludGVkIG9uIHlvdXIgc2NyZWVuLCBpdCBpcyBqdXN0IG9rLCBiZWNhdXNlIG9mIGEgdHJ5aW5nIG9mIGR1cGxpY2F0aW9uIHByaW1hcnkga2V5IGluc2VydGlvbiwgYW5kIGl0IGNhdXNlcyB0cmFuc2FjdGlvbiByb2xsaW5nIGJhY2suCg==