V2UgYXJlIHNlZWtpbmcgYW4gZXhwZXJpZW5jZWQgRmluYW5jZSBNYW5hZ2VyIHRvIGpvaW4gYW4g T2ZzdGVkIE91dHN0YW5kaW5nIHNjaG9vbCBpbiBMb25kb24uIFRoaXMgaXMgYSBmYW50YXN0aWMg b3Bwb3J0dW5pdHkgdG8gdGFrZSBvbiBhIGtleSByb2xlIGluIGVuc3VyaW5nIGVmZmVjdGl2ZSBm aW5hbmNpYWwgY29udHJvbCwgYWRtaW5pc3RyYXRpdmUgZWZmaWNpZW5jeSwgYW5kIHN1cHBvcnQg Zm9yIHRoZSBzY2hvb2wmcnNxdW87cyBvcGVyYXRpb25zLjxicj48YnI+IDxzdHJvbmc+S2V5IFJl c3BvbnNpYmlsaXRpZXM6PC9zdHJvbmc+PGJyPiA8dWw+IDxsaT5NYW5hZ2UgdGhlIGFkbWluaXN0 cmF0aXZlIGZ1bmN0aW9ucyBhbmQgbWFpbnRhaW4gc3lzdGVtcyB0byBlbnN1cmUgZWZmZWN0aXZl IGZpbmFuY2lhbCBjb250cm9sIHdpdGhpbiB0aGUgc2Nob29sLjwvbGk+IDxsaT5PdmVyc2VlIGZp bmFuY2lhbCBzeXN0ZW1zLCBhY2NvdW50cywgYWRtaW5pc3RyYXRpdmUsIGFuZCBzZWNyZXRhcmlh bCBmdW5jdGlvbnMuPC9saT4gPGxpPk1haW50YWluIGFuZCB1cGRhdGUgZGF0YWJhc2VzIGZvciBw dXBpbHMgYW5kIHN0YWZmLCBhc3Npc3RpbmcgaW4gdGhlIG1hbmFnZW1lbnQgb2Ygc2Nob29sIHBy ZW1pc2VzLjwvbGk+IDxsaT5NYWludGFpbiB0aGUgZmluYW5jaWFsIGFuZCBhY2NvdW50YW5jeSBz eXN0ZW1zIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxpYW5jZS48L2xpPiA8bGk+UHJlcGFy ZSB0ZXJtbHkgZXhwZW5kaXR1cmUgYWNjb3VudHMgZm9yIHByZXNlbnRhdGlvbiB0byBzZW5pb3Ig bGVhZGVyc2hpcC48L2xpPiA8bGk+UHJvZHVjZSBhbmQgc3VibWl0IGZpbmFuY2lhbCByZXBvcnRz IGFuZCByZXR1cm5zIGFzIHJlcXVpcmVkIGJ5IHRoZSBMb2NhbCBFZHVjYXRpb24gQXV0aG9yaXR5 LjwvbGk+IDxsaT5NYW5hZ2UgYWNjb3VudGluZyBwcm9jZWR1cmVzLCBpbmNsdWRpbmcgYXVkaXRz LCBpbnZlc3RtZW50IHJldHVybnMsIGNoZXF1ZSBzaWduYXRvcnkgZHV0aWVzLCBhbmQgcGV0dHkg Y2FzaCBjb250cm9sLjwvbGk+IDxsaT5MaWFpc2Ugd2l0aCB0aGUgcGF5cm9sbCBwcm92aWRlciB0 byBlbnN1cmUgYWNjdXJhdGUgc3RhZmYgc2FsYXJ5IHBheW1lbnRzIGFuZCBwcm9jZXNzIGNsYWlt cyBmb3IgdHJhdmVsIGFuZCBvdmVydGltZS48L2xpPiA8bGk+U3VwcG9ydCB0aGUgcHJlcGFyYXRp b24gb2YgdGhlIGFubnVhbCBidWRnZXQmbmJzcDs8L2xpPiA8bGk+QXR0ZW5kIGdvdmVybmluZyBi b2R5IG1lZXRpbmdzIGFzIG5lZWRlZCB0byBwcm92aWRlIGZpbmFuY2lhbCB1cGRhdGVzLjwvbGk+ IDwvdWw+IDxzdHJvbmc+R2VuZXJhbCBSZXF1aXJlbWVudHM6PC9zdHJvbmc+PGJyPiA8dWw+IDxs aT5QYXJ0aWNpcGF0ZSBpbiB0aGUgc2Nob29sJnJzcXVvO3MgcGVyZm9ybWFuY2UgbWFuYWdlbWVu dCBzeXN0ZW0uPC9saT4gPGxpPkF0dGVuZCBnb3Zlcm5pbmcgYm9keSBtZWV0aW5ncyBhcyByZXF1 aXJlZC48L2xpPiA8bGk+TWFpbnRhaW4gYSBzdHJvbmcgY29tbWl0bWVudCB0byBlcXVhbGl0aWVz IGluIHNlcnZpY2UgZGVsaXZlcnkgYW5kIGVtcGxveW1lbnQgcHJhY3RpY2UuPC9saT4gPGxpPlBy b21vdGUgYW5kIHNhZmVndWFyZCB0aGUgd2VsZmFyZSBvZiBjaGlsZHJlbiBhbmQgdnVsbmVyYWJs ZSBpbmRpdmlkdWFscyB1bmRlciB5b3VyIHJlc3BvbnNpYmlsaXR5LjwvbGk+IDxsaT5FbmhhbmNl ZCBDUkIgKG5vdyBEQlMpIGNsZWFyYW5jZSByZXF1aXJlZC48L2xpPiA8L3VsPiA8YnI+IFRoaXMg cG9zaXRpb24gaXMgMyBkYXlzIHBlciB3ZWVrLjxicj48YnI+IEFwcGx5IG5vdyBpZiB5b3UmcnNx dW87cmUgbG9va2luZyBmb3IgYW4gZXhjaXRpbmcgbmV3IG9wcG9ydHVuaXR5IHRvIGNvbnRyaWJ1 dGUgdG8gdGhlIHN1Y2Nlc3Mgb2YgYW4gb3V0c3RhbmRpbmcgc2Nob29sIQ