MIL OSI Translation. Since 1 September, the Armed Forces School of Medicine (ESA) and the Paramedic Armed Forces School (EPPA) have formed a single new administrative entity located in Bron. : Lyon-Bron Military Health Schools (EMSLB), created by decision of the Minister of Armed Forces.
Indian Ocean: Cooperation with the Kenyan Navy for Courbet
MIL OSI Translation. After leaving Toulon on July 30 and patrolling the Red Sea and the northern Indian Ocean, the La Fayette frigate (FLF) Courbet made her first operational Mombasa, Kenya, August 18-23, which allowed him to cooperate with the Kenyan navy.d61a6f2ea6b45fce3a1fad16ed54436fa4ecb51dde8b0cba6a55859cbb72b0c5.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEFmdGVyIGxlYXZpbmcgVG91bG9uIG9uIEp1bHkgMzAgYW5kIHBhdHJvbGxpbmcgdGhlIFJlZCBTZWEgYW5kIHRoZSBub3J0aGVybiBJbmRpYW4gT2NlYW4sIHRoZSBMYSBGYXlldHRlIGZyaWdhdGUgKEZMRikgQ291cmJldCBtYWRlIGhlciBmaXJzdCBvcGVyYXRpb25hbCBNb21iYXNhLCBLZW55YSwgQXVndXN0IDE4LTIzLCB3aGljaCBhbGxvd2VkIGhpbSB0byBjb29wZXJhdGUgd2l0aCB0aGUgS2VueWFuIG5hdnkuPHA+RURJVE9SJiMzOTtTIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgZm9yZ2l2ZSB1cyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kIFwvIG9yIHNlbnRlbmNlIHN0cnVjdHVyZSBub3QgYmUgcGVyZmVjdC48XC9wPiIsImlubmVyQ29udGVudCI6WyJNSUwgT1NJIFRyYW5zbGF0aW9uLiBBZnRlciBsZWF2aW5nIFRvdWxvbiBvbiBKdWx5IDMwIGFuZCBwYXRyb2xsaW5nIHRoZSBSZWQgU2VhIGFuZCB0aGUgbm9ydGhlcm4gSW5kaWFuIE9jZWFuLCB0aGUgTGEgRmF5ZXR0ZSBmcmlnYXRlIChGTEYpIENvdXJiZXQgbWFkZSBoZXIgZmlyc3Qgb3BlcmF0aW9uYWwgTW9tYmFzYSwgS2VueWEsIEF1Z3VzdCAxOC0yMywgd2hpY2ggYWxsb3dlZCBoaW0gdG8gY29vcGVyYXRlIHdpdGggdGhlIEtlbnlhbiBuYXZ5LjxwPkVESVRPUiYjMzk7UyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGZvcmdpdmUgdXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZCBcLyBvciBzZW50ZW5jZSBzdHJ1Y3R1cmUgbm90IGJlIHBlcmZlY3QuPFwvcD4iXSwiY29udGV4dF90eXBlIjoib3RoZXIifQ==
Alindian: first operational release and cooperation with the Kenyan Navy for "Courbet"
MIL OSI Translation. Government of the Republic of France statements from French to English – After having left Toulon on 30 July and patrolled the Red sea and in the north of the Indian ocean, frégate type La Fayette (FLF) Courbet has made a first release operating in Mombasa, Kenya, from 18 to 23 August, which allowed him to cooperate with the navy of kenya.d38f0610ae00a5606b661a47f9f055aa1da992cfd4fef76ed7a500ba9c48f164.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBBZnRlciBoYXZpbmcgbGVmdCBUb3Vsb24gb24gMzAgSnVseSBhbmQgcGF0cm9sbGVkIHRoZSBSZWQgc2VhIGFuZCBpbiB0aGUgbm9ydGggb2YgdGhlIEluZGlhbiBvY2VhbiwgZnJcdTAwZTlnYXRlIHR5cGUgTGEgRmF5ZXR0ZSAoRkxGKSBDb3VyYmV0IGhhcyBtYWRlIGEgZmlyc3QgcmVsZWFzZSBvcGVyYXRpbmcgaW4gTW9tYmFzYSwgS2VueWEsIGZyb20gMTggdG8gMjMgQXVndXN0LCB3aGljaCBhbGxvd2VkIGhpbSB0byBjb29wZXJhdGUgd2l0aCB0aGUgbmF2eSBvZiBrZW55YS48cD5FRElUT1ImIzM5O1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBmb3JnaXZlIHVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmQgXC8gb3Igc2VudGVuY2Ugc3RydWN0dXJlIG5vdCBiZSBwZXJmZWN0LjxcL3A+IiwiaW5uZXJDb250ZW50IjpbIk1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBBZnRlciBoYXZpbmcgbGVmdCBUb3Vsb24gb24gMzAgSnVseSBhbmQgcGF0cm9sbGVkIHRoZSBSZWQgc2VhIGFuZCBpbiB0aGUgbm9ydGggb2YgdGhlIEluZGlhbiBvY2VhbiwgZnJcdTAwZTlnYXRlIHR5cGUgTGEgRmF5ZXR0ZSAoRkxGKSBDb3VyYmV0IGhhcyBtYWRlIGEgZmlyc3QgcmVsZWFzZSBvcGVyYXRpbmcgaW4gTW9tYmFzYSwgS2VueWEsIGZyb20gMTggdG8gMjMgQXVndXN0LCB3aGljaCBhbGxvd2VkIGhpbSB0byBjb29wZXJhdGUgd2l0aCB0aGUgbmF2eSBvZiBrZW55YS48cD5FRElUT1ImIzM5O1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBmb3JnaXZlIHVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmQgXC8gb3Igc2VudGVuY2Ugc3RydWN0dXJlIG5vdCBiZSBwZXJmZWN0LjxcL3A+Il0sImNvbnRleHRfdHlwZSI6Im90aGVyIn0=
BARKHANE : Restoration of the tomb of the Askias
MIL OSI Translation. Government of the Republic of France statements from French to English – Tuesday 18 September 2018, the tomb of Askia in Gao has been inaugurated by the authorities of the city accompanied by a delegation of the Force Barkhane, after several months of renovation. This project marks the will of the Force to join the malian population to value its historical heritage.47bf9b4e724351cfd86e00cc032848fabd62a4a64ea0bb12b167cfcb1868c5b9.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBUdWVzZGF5IDE4IFNlcHRlbWJlciAyMDE4LCB0aGUgdG9tYiBvZiBBc2tpYSBpbiBHYW8gaGFzIGJlZW4gaW5hdWd1cmF0ZWQgYnkgdGhlIGF1dGhvcml0aWVzIG9mIHRoZSBjaXR5IGFjY29tcGFuaWVkIGJ5IGEgZGVsZWdhdGlvbiBvZiB0aGUgRm9yY2UgQmFya2hhbmUsIGFmdGVyIHNldmVyYWwgbW9udGhzIG9mIHJlbm92YXRpb24uIFRoaXMgcHJvamVjdCBtYXJrcyB0aGUgd2lsbCBvZiB0aGUgRm9yY2UgdG8gam9pbiB0aGUgbWFsaWFuIHBvcHVsYXRpb24gdG8gdmFsdWUgaXRzIGhpc3RvcmljYWwgaGVyaXRhZ2UuPHA+RURJVE9SJ1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBmb3JnaXZlIHVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmRcL29yIHNlbnRlbmNlIHN0cnVjdHVyZSBpcyBub3QgYmUgcGVyZmVjdC48XC9wPiIsImlubmVyQ29udGVudCI6WyJNSUwgT1NJIFRyYW5zbGF0aW9uLiBHb3Zlcm5tZW50IG9mIHRoZSBSZXB1YmxpYyBvZiBGcmFuY2Ugc3RhdGVtZW50cyBmcm9tIEZyZW5jaCB0byBFbmdsaXNoIC0gVHVlc2RheSAxOCBTZXB0ZW1iZXIgMjAxOCwgdGhlIHRvbWIgb2YgQXNraWEgaW4gR2FvIGhhcyBiZWVuIGluYXVndXJhdGVkIGJ5IHRoZSBhdXRob3JpdGllcyBvZiB0aGUgY2l0eSBhY2NvbXBhbmllZCBieSBhIGRlbGVnYXRpb24gb2YgdGhlIEZvcmNlIEJhcmtoYW5lLCBhZnRlciBzZXZlcmFsIG1vbnRocyBvZiByZW5vdmF0aW9uLiBUaGlzIHByb2plY3QgbWFya3MgdGhlIHdpbGwgb2YgdGhlIEZvcmNlIHRvIGpvaW4gdGhlIG1hbGlhbiBwb3B1bGF0aW9uIHRvIHZhbHVlIGl0cyBoaXN0b3JpY2FsIGhlcml0YWdlLjxwPkVESVRPUidTIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgZm9yZ2l2ZSB1cyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kXC9vciBzZW50ZW5jZSBzdHJ1Y3R1cmUgaXMgbm90IGJlIHBlcmZlY3QuPFwvcD4iXSwiY29udGV4dF90eXBlIjoib3RoZXIifQ==
Point position from 21 to 27 September
MIL OSI Translation. Government of the Republic of France statements from French to English – Point position from 21 to 27 Septembera66953bc4568aa724f715b34284c105e92e88dac408c1c26b18c72a472c6d4bb.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBQb2ludCBwb3NpdGlvbiBmcm9tIDIxIHRvIDI3IFNlcHRlbWJlcjxwPkVESVRPUidTIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgZm9yZ2l2ZSB1cyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kXC9vciBzZW50ZW5jZSBzdHJ1Y3R1cmUgaXMgbm90IGJlIHBlcmZlY3QuPFwvcD4iLCJpbm5lckNvbnRlbnQiOlsiTUlMIE9TSSBUcmFuc2xhdGlvbi4gR292ZXJubWVudCBvZiB0aGUgUmVwdWJsaWMgb2YgRnJhbmNlIHN0YXRlbWVudHMgZnJvbSBGcmVuY2ggdG8gRW5nbGlzaCAtIFBvaW50IHBvc2l0aW9uIGZyb20gMjEgdG8gMjcgU2VwdGVtYmVyPHA+RURJVE9SJ1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBmb3JnaXZlIHVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmRcL29yIHNlbnRlbmNlIHN0cnVjdHVyZSBpcyBub3QgYmUgcGVyZmVjdC48XC9wPiJdLCJjb250ZXh0X3R5cGUiOiJvdGhlciJ9
EUTM RCA : the Transfer of a bridge from Bangui to Zinga by the FACA, with the support and expertise of the French military engineering of the mission EUTM-RCA.
MIL OSI Translation. Government of the Republic of France statements from French to English – Sunday, 2 September 2018, the convoy of the central african Armed Forces (FACA) in the engineer battalion of Bangui is ready to join Zinga, 170 kilometers to the south. After having taken out three weeks ago, the bridge Sapeke, in Bangui, the sappers were preparing to ascend above the Libo in the southern part of the country.115a4376e708a28ad38a342ca486d94fac4044af94b79f65a739770a477f0719.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBTdW5kYXksIDIgU2VwdGVtYmVyIDIwMTgsIHRoZSBjb252b3kgb2YgdGhlIGNlbnRyYWwgYWZyaWNhbiBBcm1lZCBGb3JjZXMgKEZBQ0EpIGluIHRoZSBlbmdpbmVlciBiYXR0YWxpb24gb2YgQmFuZ3VpIGlzIHJlYWR5IHRvIGpvaW4gWmluZ2EsIDE3MCBraWxvbWV0ZXJzIHRvIHRoZSBzb3V0aC4gQWZ0ZXIgaGF2aW5nIHRha2VuIG91dCB0aHJlZSB3ZWVrcyBhZ28sIHRoZSBicmlkZ2UgU2FwZWtlLCBpbiBCYW5ndWksIHRoZSBzYXBwZXJzIHdlcmUgcHJlcGFyaW5nIHRvIGFzY2VuZCBhYm92ZSB0aGUgTGlibyBpbiB0aGUgc291dGhlcm4gcGFydCBvZiB0aGUgY291bnRyeS48cD5FRElUT1InUyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGZvcmdpdmUgdXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZFwvb3Igc2VudGVuY2Ugc3RydWN0dXJlIGlzIG5vdCBiZSBwZXJmZWN0LjxcL3A+IiwiaW5uZXJDb250ZW50IjpbIk1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBTdW5kYXksIDIgU2VwdGVtYmVyIDIwMTgsIHRoZSBjb252b3kgb2YgdGhlIGNlbnRyYWwgYWZyaWNhbiBBcm1lZCBGb3JjZXMgKEZBQ0EpIGluIHRoZSBlbmdpbmVlciBiYXR0YWxpb24gb2YgQmFuZ3VpIGlzIHJlYWR5IHRvIGpvaW4gWmluZ2EsIDE3MCBraWxvbWV0ZXJzIHRvIHRoZSBzb3V0aC4gQWZ0ZXIgaGF2aW5nIHRha2VuIG91dCB0aHJlZSB3ZWVrcyBhZ28sIHRoZSBicmlkZ2UgU2FwZWtlLCBpbiBCYW5ndWksIHRoZSBzYXBwZXJzIHdlcmUgcHJlcGFyaW5nIHRvIGFzY2VuZCBhYm92ZSB0aGUgTGlibyBpbiB0aGUgc291dGhlcm4gcGFydCBvZiB0aGUgY291bnRyeS48cD5FRElUT1InUyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGZvcmdpdmUgdXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZFwvb3Igc2VudGVuY2Ugc3RydWN0dXJlIGlzIG5vdCBiZSBwZXJmZWN0LjxcL3A+Il0sImNvbnRleHRfdHlwZSI6Im90aGVyIn0=
The meeting of the Special Commission of the Verkhovna Rada of Ukraine on privatization
MIL OSI Translation. Region: Poland – 268849d1c9fab133d1231770ebe8f2eaa759b3872dc7fca2d14d3b5dc66d5683.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIFJlZ2lvbjogUG9sYW5kIC0gPHA+RWRpdG9yJ3MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBhY2NlcHQgb3VyIGFwb2xvZ2llcyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kXC9vciBzZW50ZW5jZSBzdHJ1Y3R1cmUgd2lsbCBub3QgYmUgcGVyZmVjdC48XC9wPiIsImlubmVyQ29udGVudCI6WyJNSUwgT1NJIFRyYW5zbGF0aW9uLiBSZWdpb246IFBvbGFuZCAtIDxwPkVkaXRvcidzIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgYWNjZXB0IG91ciBhcG9sb2dpZXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZFwvb3Igc2VudGVuY2Ugc3RydWN0dXJlIHdpbGwgbm90IGJlIHBlcmZlY3QuPFwvcD4iXSwiY29udGV4dF90eXBlIjoib3RoZXIifQ==
CTF-150 : double Blow for le Floréal in the Indian ocean
MIL OSI Translation. Government of the Republic of France statements from French to English – on September 23 and 24, the frigate monitoring Floreal grabbed it, blow on blow, nearly 7.5 tonnes of cannabis off the coast of the Sultanate of Oman.3a8f297ffa8c89082c68105c06c709cef8ba67a513deadfead9fab67ee27ab5e.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBvbiBTZXB0ZW1iZXIgMjMgYW5kIDI0LCB0aGUgZnJpZ2F0ZSBtb25pdG9yaW5nIEZsb3JlYWwgZ3JhYmJlZCBpdCwgYmxvdyBvbiBibG93LCBuZWFybHkgNy41IHRvbm5lcyBvZiBjYW5uYWJpcyBvZmYgdGhlIGNvYXN0IG9mIHRoZSBTdWx0YW5hdGUgb2YgT21hbi48cD5FRElUT1InUyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGZvcmdpdmUgdXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZFwvb3Igc2VudGVuY2Ugc3RydWN0dXJlIGlzIG5vdCBiZSBwZXJmZWN0LjxcL3A+IiwiaW5uZXJDb250ZW50IjpbIk1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBvbiBTZXB0ZW1iZXIgMjMgYW5kIDI0LCB0aGUgZnJpZ2F0ZSBtb25pdG9yaW5nIEZsb3JlYWwgZ3JhYmJlZCBpdCwgYmxvdyBvbiBibG93LCBuZWFybHkgNy41IHRvbm5lcyBvZiBjYW5uYWJpcyBvZmYgdGhlIGNvYXN0IG9mIHRoZSBTdWx0YW5hdGUgb2YgT21hbi48cD5FRElUT1InUyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGZvcmdpdmUgdXMgc2hvdWxkIHRoZSBncmFtbWFyIGFuZFwvb3Igc2VudGVuY2Ugc3RydWN0dXJlIGlzIG5vdCBiZSBwZXJmZWN0LjxcL3A+Il0sImNvbnRleHRfdHlwZSI6Im90aGVyIn0=
Speech of the President of the Republic to the conference of Ambassadors
MIL OSI Translation. Government of the Republic of France statements from English to French – Posted on August 27, 20184d96f55ab9abed300a2223ba9f6e55a4e2d10579e873ee6094a43aa7d3e337be.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRW5nbGlzaCB0byBGcmVuY2ggLSBQb3N0ZWQgb24gQXVndXN0IDI3LCAyMDE4PHA+RGVhciBQcmVzaWRlbnRzLDxcL3A+XG48cD5QcmltZSBNaW5pc3Rlciw8XC9wPlxuPHA+TGFkaWVzIGFuZCBnZW50bGVtZW4sPFwvcD5cbjxwPkxhZGllcyBhbmQgZ2VudGxlbWVuLDxcL3A+XG48cD5MYWRpZXMgYW5kIEdlbnRsZW1lbiwgQW1iYXNzYWRvcnMsPFwvcD5cbjxwPkxhZGllcyBhbmQgZ2VudGxlbWVuLDxcL3A+XG48cD5JIGFtIHZlcnkgaGFwcHkgdG8gbWVldCB5b3UgdG9kYXkgdG8gb3BlbiB0aGlzIEFtYmFzc2Fkb3JzIGFuZCBBbWJhc3NhZG9ycyBDb25mZXJlbmNlLiBIYXBweSBiZWNhdXNlIGl0IGlzIGFsd2F5cyB0aGUgdW5pcXVlIG9wcG9ydHVuaXR5IHRvIHNoYXJlIHNvbWUgY29udmljdGlvbnMgYW5kIGEgcmVhZGluZyBvZiB0aGUgd29ybGQgYXMgaXQgZ29lcywgaW4gd2hpY2ggZXZlcnkgZGF5IEZyYW5jZSBhY3RzLCBpcyBleHBlY3RlZCwgY2FycmllcyBoaXMgdm9pY2UuPFwvcD5cbjxwPkluIGEgZmV3IGRheXMsIHlvdSB3aWxsIGpvaW4geW91ciB0ZWFtcyBpbiB0aGUgZmllbGQgYW5kIHlvdSB3aWxsIGNhcnJ5IHdpdGggZXhpZ2VuY3ksIGRldGVybWluYXRpb24sIGEgZ3JlYXQgcmVzcG9uc2liaWxpdHkuPFwvcD5cbjxwPllvdXIgZmlyc3QgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSB0byByZXByZXNlbnQgb3VyIGNvdW50cnksIG91ciBoaXN0b3J5LCBvdXIgcmVwdWJsaWNhbiBpZGVhbHMsIG91ciBtZXRyb3BvbGlzIGFuZCBvdmVyc2VhcyBnZW9ncmFwaGllcywgb3VyIGludGVyZXN0cy4gQW5kIGJ5IHJlcHJlc2VudGluZyBGcmFuY2UgeW91IHJlcHJlc2VudCBoaXN0b3J5LCBzdHJlbmd0aCwgdGhlIHJvbGUgb2Ygb3VyIHBlb3BsZSBpbiB0aGUgY29uY2VydCBvZiBuYXRpb25zIGFuZCBoYXZlIHRvIGxlYWQgYSBkaXBsb21hY3kgdGhhdCBJIHdhbnQgcmVsaWFibGUgYW5kIGlubm92YXRpdmUuPFwvcD5cbjxwPllvdXIgc2Vjb25kIHJlc3BvbnNpYmlsaXR5LCB3aXRoIHlvdXIgdGVhbSwgd2l0aCB0aGUgc3VwcG9ydCBvZiBhbGwgdGhlIHJlbGF5cyB5b3UgaGF2ZSBvbiBzaXRlLCB3aWxsIGJlIHRvIGltcGxlbWVudCBhbiBhbWJpdGlvdXMgcG9saWN5IGZvciBvdXIgY291bnRyeS4gVGhpcyBhbWJpdGlvbiwgcmVzdCBhc3N1cmVkIHRoYXQgaXQgd2lsbCByZXN1bHQgaW4gYSBwYWNlIG9mIHJlZm9ybSBpbiBGcmFuY2UgdGhhdCB3aWxsIG5vdCBjaGFuZ2UgcGFjZSwgcXVpdGUgdGhlIGNvbnRyYXJ5LiBUaGUgUHJpbWUgTWluaXN0ZXIgd2lsbCBnaXZlIHlvdSBkaXJlY3Rpb25zLiBTZXZlcmFsIG1pbmlzdGVycyB3aWxsIGFsc28gaGF2ZSB0byBzcGVhayBvbiB0aGlzIHBvaW50LiBVbmRlciB0aGUgbGVhZGVyc2hpcCBvZiB5b3VyIE1pbmlzdGVyIEplYW4tWXZlcyBMZSBEUklBTiwgd2hvbSBJIHdvdWxkIGxpa2UgdG8gdGhhbmsgZm9yIGhpcyBjb25zdGFudCBpbnZvbHZlbWVudCwgeW91IHdpbGwgaGVscCB1cyB0byBzdXBwb3J0IHRoZXNlIHJlZm9ybXMgaW50ZXJuYXRpb25hbGx5LjxcL3A+XG48cD5JbmRlZWQsIHlvdSBhcmUgaW4gbXkgb3BpbmlvbiBzdGFrZWhvbGRlcnMgaW4gdGhlIHN0cmF0ZWd5IHRoYXQgSSBhc2tlZCB0aGUgZ292ZXJubWVudCB0byBpbXBsZW1lbnQgZm9yIHRoZSBjb3VudHJ5LiBGaXJzdCwgYnkgZnVsbHkgaW52b2x2aW5nIG91ciBGcmVuY2ggY29tbXVuaXRpZXMgYWJyb2FkLiBUaGV5IGFyZSBhIHdlYWx0aCwgYSBzdHJlbmd0aC4gT3VyIHJlZm9ybXMgbXVzdCBiZSBleHBsYWluZWQgdG8gdGhlbSBhbmQgdGhleSBtdXN0IGFsc28gYmUgYnJvdWdodCBieSB0aGVtLiBGcmVuY2ggcGVvcGxlIGFuZCBGcmVuY2ggcGVvcGxlIGZyb20gYWJyb2FkIGFyZSBhbiBhc3NldCBmb3Igb3VyIGNvdW50cnkuIFRoZXkgbXVzdCBwYXJ0aWNpcGF0ZSBmdWxseSBpbiB0aGlzIG5ldyBpbmZsdWVuY2Ugb2YgRnJhbmNlLjxcL3A+XG48cD5UaGF0IGlzIHdoeSBJIHdhbnRlZCBhbiBpbi1kZXB0aCByZWZsZWN0aW9uIG9uIEZyZW5jaCBlZHVjYXRpb24gYWJyb2FkLCB3aGljaCwgb24gdGhlIGJhc2lzIG9mIHRoZSByZXBvcnQgSSBhc2tlZCB0aGUgZ292ZXJubWVudCwgd2lsbCBsZWFkIHRvIHRoZSBhbm5vdW5jZW1lbnQgb2YgYSByZWZvcm0gdGhpcyBhdXR1bW4gLiBUaGlzIGlzIGFsc28gd2h5IEkgd2FudCB0byBnbyB0aHJvdWdoIHRoZSBzaW1wbGlmaWNhdGlvbnMgZXhwZWN0ZWQgYnkgb3VyIGZlbGxvdyBjaXRpemVucywgaW4gdGVybXMgb2YgYWRtaW5pc3RyYXRpdmUgcHJvY2VkdXJlcyBhbmQgb25saW5lIHZvdGluZy48XC9wPlxuPHA+VGhlbiB5b3UgY29udHJpYnV0ZSB0byB0aGUgY29tcGV0aXRpdmVuZXNzIG9mIEZyYW5jZS4gWW91IG5lZWQgdG8gZXhwbGFpbiB0byBnb3Zlcm5tZW50cywgZWNvbm9taWMgYWN0b3JzIGluIHRoZSBjb3VudHJpZXMgd2hlcmUgeW91IGFyZSwgdGhlIGNvbnNpc3RlbmN5IGFuZCBicmVhZHRoIG9mIG91ciB0cmFuc2Zvcm1hdGlvbiBhZ2VuZGEuIE91ciBhdHRyYWN0aXZlbmVzcyBpcyBpbXByb3ZpbmcsIGJ1dCB3ZSBuZWVkIHRvIGJlIG11Y2ggbW9yZSBpbnZvbHZlZCBpbiBvdXIgZXhwb3J0cy4gWW91ciBtb2JpbGl6YXRpb24gZm9yIGVjb25vbWljIGRpcGxvbWFjeSBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGlzIHN0cmF0ZWd5LiBJbiBwYXJ0aWN1bGFyLCB3ZSBuZWVkIHRvIGZvY3VzIG91ciBjb2xsZWN0aXZlIGFjdGlvbiBvbiBhbiBleHBvcnQgc3RyYXRlZ3kgZm9yIG1lZGl1bS1zaXplZCBjb21wYW5pZXMgc3VjaCBhcyBzbWFsbCBhbmQgbWVkaXVtLXNpemVkIGNvbXBhbmllcywgd2hpY2ggYWxvbmUgd2lsbCByZWR1Y2Ugb3VyIHRyYWRlIGRlZmljaXQuPFwvcD5cbjxwPkJ1dCBJIGV4cGVjdCBtb3JlIGZyb20geW91LiBGcm9tIE91YWdhZG91Z291IHRvIFhpJiMzOTthbiwgZnJvbSBTeWRuZXkgdG8gTmV3IFlvcmsgb3IgdGhlIFNvcmJvbm5lLCBJIGhhdmUgZHVyaW5nIHRoZSB5ZWFyIHRoYXQgZW5kcywgdGhyb3VnaCBzZXZlcmFsIHNwZWVjaGVzLCByZW5ldyBvdXIgZ2VvZ3JhcGhpY2FsIG9yIHN0cmF0ZWdpYyBhcHByb2FjaGVzLiBUaGVzZSBtdXN0IG5vdyBiZSBicm9rZW4gZG93biBwcmVjaXNlbHkuIFRoaXMgaW52b2x2ZXMgY2hvb3NpbmcgY2xlYXIgYW5kIHRoZXJlZm9yZSBsaW1pdGVkIG9iamVjdGl2ZXMgYW5kIHRha2luZyBuZXcgc3RlcHMgdG8gbW9uaXRvciB0aGVtLiBXZSBzdGlsbCB0ZW5kIHRvIHRoaW5rIHRoYXQgZXZlcnl0aGluZyBpcyBhIHByaW9yaXR5IGFuZCBub3QgZW5vdWdoIHRvIGhhdmUgYSBjdWx0dXJlIG9mIHJlc3VsdHMuIEV2ZW4gaW4gZGlwbG9tYWN5LCBzdWNjZXNzIGlzIG1lYXN1cmVkIC0gYWxiZWl0IG5vdCBpbiBhIGRheSBhbmQgcHJvYmFibHkgbmV2ZXIgaW4gYSBkYXkgLSB3aXRoIHRoZSBhYmlsaXR5IG5ldmVydGhlbGVzcyB0byBpbmZsdWVuY2UgYXR0aXR1ZGVzLCBidWlsZCBmcmllbmRzaGlwcyBhbmQgYWxsaWFuY2VzLCB3aW4gbWFya2V0cy4gSW4gYSB3b3JkLCB0byBhZHZhbmNlIHRoZSBpbnRlcmVzdHMgb2YgRnJhbmNlIGFuZCB0aGUgRnJlbmNoIGFuZCB0byBzaGFyZSBhIGxpdHRsZSBvZiBvdXIgdmlzaW9uIGFuZCBjb25jZXB0aW9uIG9mIHRoZSB3b3JsZC48XC9wPlxuPHA+SXQgaXMgdGhlIGV4cGVjdGF0aW9uIG9mIG91ciBmZWxsb3cgY2l0aXplbnMsIHdobyBsZWdpdGltYXRlbHkgd2FudCB0byBzZWUgdGhlIHJlcGVyY3Vzc2lvbnMgb2YgdGhlIHBvbGljeSB0aGF0IHdlIGxlYWQuIFRoaXMgc3VwcG9zZXMgZmluYWxseSBhIGNhcGFjaXR5IG9mIGFudGljaXBhdGlvbiByZWluZm9yY2VkLiBXZSBmb2xsb3cgdGhlIHNpdHVhdGlvbnMgb2YgbWFueSBjb3VudHJpZXMgb3IgcmVnaW9ucywgZnJvbSBWZW5lenVlbGEgdG8gQnVybWEgdGhyb3VnaCBVa3JhaW5lIG9yIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIENvbmdvLiBCdXQgd2UgbXVzdCBhbnRpY2lwYXRlIHRoZW0gbW9yZSwgc29tZXRpbWVzIG1ha2UgYmV0cywgcHJvcG9zZSBpbml0aWF0aXZlcy4gSSBhcHBlYWwgdG8geW91ciBzcGlyaXQgb2YgZm9yZXNpZ2h0LCBhbmFseXNpcywgYWN0aW9uLiBOZXZlciBoZXNpdGF0ZSB0byBwcm9wb3NlIGZyZWVseSwgaXQgaXMgdGhlIGJlc3Qgd2F5IG5vdCB0byB1bmRlcmdvLjxcL3A+XG48cD5Zb3UgaGF2ZSB1bmRlcnN0b29kLCBJIGV4cGVjdCBhIGxvdCBmcm9tIHlvdS4gV2UgbW92ZSBmb3J3YXJkIGluIGEgY29udGV4dCB0aGF0IG11c3QgYmUgdW5kZXJzdG9vZCBjYWxtbHkgYW5kIGx1Y2lkbHkuIFF1aWV0IGJlY2F1c2UgaXQgaXMgbm90IGEgcXVlc3Rpb24gb2YgY2hhbmdpbmcgc3RyYXRlZ3kgYXMgc29vbiBhcyBhbiBleHRlcm5hbCBldmVudCBhcHBlYXJzLiBMdWNpZGl0eSwgYmVjYXVzZSBpdCBkb2VzIG5vdCBtZWFuIHVuZGVyZXN0aW1hdGluZyB0aGUgY3Jpc2VzIG9mIHRoZSB3b3JsZC4gSW4gdGhlIHBhc3QgeWVhciwgd2hhdCBoYXMgaGFwcGVuZWQ/PFwvcD5cbjxwPkZyYW5jZSBoYXMgcmVhZmZpcm1lZCBpdHMgRXVyb3BlYW4gd2lsbCwgaXRzIHZpc2lvbiwgaXRzIHByb2plY3QuIEZyYW5jZSBoYXMgcHJvcG9zZWQgYSBFdXJvcGUgdGhhdCBwcm90ZWN0cywgbW9yZSBzb3ZlcmVpZ24sIHVuaXRlZCBhbmQgZGVtb2NyYXRpYyBidXQsIGF0IHRoZSBzYW1lIHRpbWUsIGV4dHJlbWVzIGhhdmUgcHJvZ3Jlc3NlZCBhbmQgbmF0aW9uYWxpc21zIGhhdmUgYXdha2VuZWQuIElzIHRoaXMgYSByZWFzb24gdG8gZ2l2ZSB1cD8gQ2VydGFpbmx5IG5vdC4gSXMgdGhpcyBhIHJlYXNvbiB0byBzYXkgdGhhdCB3ZSBhcmUgd3Jvbmc/IENvbXBsZXRlbHkgdGhlIG9wcG9zaXRlLiBXZSBhcmUgcGF5aW5nIGhlcmUgc2V2ZXJhbCBkZWNhZGVzIG9mIGEgRXVyb3BlIHdoaWNoLCB3ZSBtdXN0IGZhY2UgaXQsIGhhcyBzb21ldGltZXMgd2Vha2VuZWQsIHdlYWtlbmVkLCB3aGljaCBwZXJoYXBzIGhhcyBub3QgYWx3YXlzIHN1ZmZpY2llbnRseSBwcm9wb3NlZC4gV2UgbXVzdCBhY3R1YWxseSByZWRvdWJsZSBvdXIgZWZmb3J0cy4gSSB3aWxsIGNvbWUgYmFjayB0byBpdC48XC9wPlxuPHA+RnJhbmNlIGhhcyBhbHNvIGNoYW1waW9uZWQgc3Ryb25nIG11bHRpbGF0ZXJhbGlzbS4gSG93ZXZlciwgdGhlIG11bHRpbGF0ZXJhbCBzeXN0ZW0gaW5oZXJpdGVkIGZyb20gdGhlIHBhc3QgY2VudHVyeSBpcyBjaGFsbGVuZ2VkIGJ5IG1ham9yIHBsYXllcnMgYW5kIGF1dGhvcml0YXJpYW4gcG93ZXJzIHRoYXQgc29tZXRpbWVzIGZhc2NpbmF0ZSBtb3JlIGFuZCBtb3JlLiBTaG91bGQgd2Ugc3VycmVuZGVyPyBJcyBpdCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgRnJhbmNlIGlmIHRoaXMgb3IgdGhhdCBjb3VudHJ5IGNob29zZXMgc3VjaCBzZW5zaXRpdml0eSwgaWYgYW5vdGhlciBzb3ZlcmVpZ24gcG93ZXIgZGVjaWRlcyBkaWZmZXJlbnRseSB0aGFuIHdlIHRoaW5rPyBGcmFuY2UmIzM5O3MgcmVzcG9uc2liaWxpdHkgaXMgdG8gbWFrZSBpdHMgdm9pY2UgaGVhcmQsIHRvIGRlZmVuZCBpdC4gTm90IHRvIHN1YnN0aXR1dGUgZm9yIHRoZSB3b3JkcyBvZiBvdGhlcnMuIFdlIHdpbGwgbmVlZCB0byB0YWtlIG5ldyBpbml0aWF0aXZlcywgYnVpbGQgbmV3IGFsbGlhbmNlcywgYnJpbmcgdGhlIGRlYmF0ZXMgdG8gdGhlIHJpZ2h0IGxldmVsIGlmIHdlIHdhbnQgdG8gdW5kZXJzdGFuZCBhbGwgY29udGVtcG9yYXJ5IGNoYWxsZW5nZXMgYW5kIHRoZSByaWdodCBsZXZlbCBpcyB0aGF0IG9mIGEgY2l2aWxpemF0aW9uIGRlYmF0ZSBmb3Igb3VyIHZhbHVlcyBcdTIwMGJcdTIwMGJhbmQgdGhlIGRlZmVuc2Ugb2Ygb3VyIGludGVyZXN0cyAuPFwvcD5cbjxwPkxhc3QgeWVhciwgSSBoYWQgYmVmb3JlIHlvdSB0aGUgZm91ciBvYmplY3RpdmVzIG9mIG91ciBkaXBsb21hdGljIGFjdGlvbiwgaW4gdGhlIG5hbWUgb2YgdGhlIHBvbGljeSB0aGF0IEkgbGVhZCBmb3IgdGhlIG5hdGlvbjogdGhlIHNhZmV0eSBvZiBvdXIgY29tcGF0cmlvdHMsIHRoZSBwcm9tb3Rpb24gb2YgY29tbW9uIGdvb2RzLCBpbmZsdWVuY2UgYW5kIGF0dHJhY3RpdmVuZXNzIG9mIG91ciBjb3VudHJ5IGFuZCwgZmluYWxseSwgYSBuZXcgRXVyb3BlYW4gYW1iaXRpb24uPFwvcD5cbjxwPlRoZXNlIGdvYWxzIGFyZSBzdGlsbCB2YWxpZCBidXQgdGhlIGNpcmN1bXN0YW5jZXMgdGVzdCB0aGUgcm9idXN0bmVzcyBvZiBvdXIgcHJpbmNpcGxlcyBhbmQgdGhlIGNvbnN0YW5jeSBvZiBvdXIgYWN0aW9uLiBUb2RheSwgSSB3YW50IHRvIHJlbWluZCB5b3Ugb2Ygd2hhdCB3ZSBoYXZlIGRvbmUgaW4gdGhpcyBjb250ZXh0LCBhbmQgdGhlIE1pbmlzdGVyIHdpbGwgY29tZSBiYWNrIHRvIGl0IGF0IGxlbmd0aCwgYnV0IGFsc28gdG8gdGVsbCB5b3UgaG93IEkgZW52aXNhZ2Ugb3VyIHJlc3BvbnNlIHRvIHRoaXMgZG91YmxlIGNyaXNpcyBvZiBtdWx0aWxhdGVyYWxpc20gYW5kIG9mIEV1cm9wZS4gQmVjYXVzZSB5ZXMsIG1vcmUgdGhhbiBhIHllYXIgYWdvLCB0b2RheSBpcyBhIG1vbWVudCBvZiB0cnV0aC48XC9wPlxuPHA+T24gdGhlIHNhZmV0eSBvZiB0aGUgRnJlbmNoIGZpcnN0LjxcL3A+XG48cD5UaGlzIGlzIG9idmlvdXNseSBvdXIgcHJpb3JpdHkgYW5kLCBpbiBwYXJ0aWN1bGFyLCB0aGUgZmlnaHQgYWdhaW5zdCB0ZXJyb3Jpc20gaW4gdGhlIGZpcnN0IHBsYWNlLiBUbyBmaWdodCBJc2xhbWlzdCB0ZXJyb3Jpc20sIHdlIGhhdmUgYSBuZXcgbGF3IGZvciBGcmFuY2UuIFdlIGhhdmUgYWNoaWV2ZWQgdGhlIGluaXRpYXRpdmUgYW5ub3VuY2VkIGhlcmUgZXZlbiBhIHllYXIgYWdvIGF0IGEgY29uZmVyZW5jZSBhZ2FpbnN0IHRoZSBmaW5hbmNpbmcgb2YgdGVycm9yaXNtIGhlbGQgYXQgdGhlIE9FQ0QgbGFzdCBzcHJpbmcgYW5kIEF1c3RyYWxpYSBoYXMgYWdyZWVkIHRvIGNoYWlyIGEgc2Vjb25kIGNvbmZlcmVuY2Ugb24gdGhpcyB0b3BpYywgYW5kIEkgYXNrIHlvdSB0byBjb250cmlidXRlIHRvIGEgdmVyeSBjYXJlZnVsIGZvbGxvdy11cCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBhcmlzIEFnZW5kYSB3aXRoIGFsbCBvdXIgcGFydG5lcnMuIFdlIGhhdmUgYWxyZWFkeSBvYnRhaW5lZCBmaXJzdCByZXN1bHRzLiBUaGUgbW9uaXRvcmluZyBvZiB0cmFuc2FjdGlvbnMgd2hpY2ggdW50aWwgdGhlbiB3YXMgb3BhcXVlIGFuZCB3aGljaCBkaXJlY3RseSB0b3VjaGVkIG91ciBjb3VudHJ5LiBXZSBtdXN0IGNvbnRpbnVlIHRoaXMgd29yayB0aXJlbGVzc2x5LjxcL3A+XG48cD5CdXQgdG8gdGFsayBhYm91dCB0aGUgZmlnaHQgYWdhaW5zdCB0ZXJyb3Jpc20gaXMsIG9mIGNvdXJzZSwgdG8gcmV2ZXJ0IHRvIG91ciBwb2xpY3kgaW4gdGhlIFNhaGVsIGFuZCB0aGUgTWlkZGxlIEVhc3QsIHdoZXJlIHRoZSB0ZXJyb3Jpc3QgZ3JvdXBzIHRocmVhdGVuIHRoZSBzdGFiaWxpdHkgb2YgdGhlc2UgcmVnaW9ucywgYnV0IHdoaWNoIGhhdmUgYWxzbyBzdHJ1Y2sgdXMgZGlyZWN0bHkgZnJvbSB3aGVyZSB0aGUgdGVycm9yaXN0cyB3ZXJlIG9yZ2FuaXplZC4gYXR0YWNrcyB0aGF0IGFmZmVjdGVkIG91ciBjb3VudHJ5LjxcL3A+XG48cD5JbiB0aGUgU2FoZWwsIHdlIG1haW50YWluZWQgb3VyIG1pbGl0YXJ5IGNvbW1pdG1lbnQgdGhyb3VnaCBPcGVyYXRpb24gQmFya2hhbmUuIEkgd2FudCBoZXJlIHRvIHNhbHV0ZSBhbGwgb3VyIHNvbGRpZXJzIHdobywgc2luY2UgMjAxMywgYXJlIGNvdXJhZ2VvdXNseSBjb21taXR0ZWQgdG8gdGhpcyBkaWZmaWN1bHQgdGhlYXRlciBvZiBvcGVyYXRpb25zLiBJdCBpcyB0aGlzIHByZXNlbmNlIGFuZCB0aGF0IG9mIE1JTlVTTUEgdGhhdCBoYXZlIGF2b2lkZWQgdGhlIHdvcnN0IGluIHRoZSByZWdpb24gYW5kIGhhdmUgYWxsb3dlZCBpbiBwYXJ0aWN1bGFyIHRoYXQgdGhlIGVsZWN0aW9ucyBhcmUgaGVsZCB0aGlzIG1vbnRoIGluIE1hbGkuIFdlIGhhdmUgaW4gdGhpcyByZWdpb24gYWNoaWV2ZWQgc2lnbmlmaWNhbnQgdmljdG9yaWVzIGluIHJlY2VudCBtb250aHMgYWdhaW5zdCB0aGUgdGVycm9yaXN0IHByZXNlbmNlLCBidXQgdGhpcyBhY3Rpb24gbXVzdCBjb250aW51ZSB3aXRoIHRoZSBzYW1lIGludGVuc2l0eSBidXQgY29tcGxldGluZyB0aGUgcHJlc2VuY2UgQmFya2hhbmUgZm9yY2Ugb2Ygc2V2ZXJhbCBheGVzIHN0YXJ0ZWQgaW4gSnVseSAyMDE3LjxcL3A+XG48cD5GaXJzdCwgd2Ugc3VwcG9ydGVkIGFuZCBhY2NlbGVyYXRlZCB0aGUgY3JlYXRpb24gb2Ygam9pbnQgRzUgU2FoZWwgZm9yY2VzLiBJIGFtIGNvbnZpbmNlZCB0aGF0IG91ciBtaWxpdGFyeSBhY3Rpb24gd2lsbCBpbmRlZWQgYmUgZXZlbiBtb3JlIGVmZmVjdGl2ZSBpZiBpdCBpcyBiZXR0ZXIgYXJ0aWN1bGF0ZWQgd2l0aCB0aGUgaW52b2x2ZW1lbnQgb2YgdGhlIGZpdmUgU2FoZWxpYW4gY291bnRyaWVzIGNvbmNlcm5lZC4gV2UgcmFpc2VkIGZpbmFuY2luZywgZW5jb3VyYWdlZCB0aGUgZmlyc3Qgb3BlcmF0aW9ucyBvZiB0aGUgZm9yY2VzLiBPbiBzZXZlcmFsIG9jY2FzaW9ucyBJIGhhdmUgdHJhdmVsZWQgdG8gc2VlIHRoZSBwcm9ncmVzcyBhbmQgd2l0aCBhbGwgdGhlIGhlYWRzIG9mIHN0YXRlIGFuZCBnb3Zlcm5tZW50IGludm9sdmVkIHdlIGhhdmUgaW1wcm92ZWQgb3VyIG9yZ2FuaXphdGlvbi48XC9wPlxuPHA+VGhpcyBvcmdhbml6YXRpb24gaXMgdGhlIG9ubHkgb25lIHRoYXQsIGluIHRoZSBsb25nIHJ1biwgd2lsbCBhbGxvdyBzdGFiaWxpdHkgYmVjYXVzZSBpdCBmdWxseSBpbnZvbHZlcyB0aGUgZml2ZSBjb3VudHJpZXMgb2YgdGhlIFNhaGVsIGNvbmNlcm5lZCB3aXRoIHRoZWlyIG93biBzZWN1cml0eS4gV2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBpcyBpbXBsZW1lbnRlZCBhbmQgaW4gdGhlIGNvbWluZyB3ZWVrcyBhbmQgbW9udGhzIHdlIHdpbGwgaGF2ZSB0byBjb25kdWN0IG5ldyBqb2ludCBvcGVyYXRpb25zIHdpdGggdGhlc2UgRzUgZm9yY2VzLiBXZSBtdXN0IGFsc28gc3RyZW5ndGhlbiBjb29wZXJhdGlvbiB3aXRoIEFsZ2VyaWEsIGV4cG9zZWQgdG8gdGhlIHNhbWUgcmlzayBvZiB0ZXJyb3Jpc20sIGFzIHdlbGwgYXMgd2l0aCBOaWdlcmlhIGFuZCBDYW1lcm9vbiwgYWdhaW5zdCBCb2tvIEhhcmFtLjxcL3A+XG48cD5TZWNvbmQsIHdlIGVuY291cmFnZWQgdGhlIHJpc2Ugb2YgdGhlIEFmcmljYW4gVW5pb24uIFRoaXMgaXMgd2hhdCBJIHBsZWFkZWQgbGFzdCBKdWx5IGF0IHRoZSBOb3Vha2Nob3R0IFN1bW1pdCBiZWZvcmUgdGhlIEFmcmljYW4gVW5pb24gYW5kIHRoaXMgaXMgd2hhdCBJIHdpbGwgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gZGlzY3VzcyBzaG9ydGx5IHdpdGggUHJlc2lkZW50IFRSVU1QIGFuZCBQcmVzaWRlbnQgS0FHQU1FLCBjdXJyZW50IFByZXNpZGVudCBpbiBvZmZpY2Ugb2YgdGhlIEFmcmljYW4gVW5pb24uIFdlIG11c3Qgd29yayB0byBjcmVhdGUgY3JlZGlibGUgQWZyaWNhbiBwZWFjZSBvcGVyYXRpb25zLCBzZWN1cmUgc3RhYmxlIGFuZCBwcmVkaWN0YWJsZSBmdW5kaW5nIGZvciB0aGVtLCBlc3BlY2lhbGx5IGJldHdlZW4gdGhlIFVuaXRlZCBOYXRpb25zLCB0aGUgQWZyaWNhbiBVbmlvbiBhbmQgc3VicmVnaW9uYWwgb3JnYW5pemF0aW9ucy48XC9wPlxuPHA+VGhpcmRseSwgd2UgaGF2ZSBjb21wbGVtZW50ZWQgb3VyIG1pbGl0YXJ5IGFjdGlvbiBieSBzdHJlbmd0aGVuaW5nIGFuZCBzaW1wbGlmeWluZyBvdXIgZGV2ZWxvcG1lbnQgd29yaywgYnkgY3JlYXRpbmcgd2l0aCBHZXJtYW55IGFuZCBzZXZlcmFsIG90aGVyIGludGVybmF0aW9uYWwgZG9ub3JzIHRoZSBBbGxpYW5jZSBmb3IgdGhlIFNhaGVsLiBUaGVzZSBhcmUgdGhlIGNvbXBsZW1lbnRhcnkgJnF1b3Q7M0QmcXVvdDsgdGhhdCBJIGV2b2tlZCBsYXN0IHllYXI6IERpcGxvbWFjeSwgRGV2ZWxvcG1lbnQgYW5kIERlZmVuc2UsIGFuZCB3ZSBiZWdhbiB0byBkZXBsb3kgdGhlIGZpcnN0IG9wZXJhdGlvbnMgaW4gZWR1Y2F0aW9uLCBpbiBhZ3JpY3VsdHVyZSwgbW9yZSBicm9hZGx5IGVjb25vbWljLCBpbiBzZXZlcmFsIGNvdW50cmllcyBvZiB0aGUgd29ybGQuIGEgcmVnaW9uIHdoZXJlLCBlYWNoIHRpbWUsIHRoZSB0ZXJyYWluIHRha2VuIG92ZXIgYnkgdGhlIGVuZW15IG11c3QgYmUgYWNjb21wYW5pZWQgYnkgbmV3IHByb2plY3RzIHRoYXQgbWFrZSBpdCBwb3NzaWJsZSB0byBwcm92aWRlIGVjb25vbWljLCBlZHVjYXRpb25hbCBhbmQgbGlmZSBwZXJzcGVjdGl2ZXMgZm9yIHBlb3BsZSB3aG8sIGF0IGEgZ2l2ZW4gbW9tZW50LCBoYXZlIGJlZW4gc2VkdWNlZC48XC9wPlxuPHA+SSB3YW50IGhlcmUgdG8gc2FsdXRlIHRoZSBhY3Rpb24gYW5kIHRoZSByZXN1bHRzIG9idGFpbmVkIGluIE1hdXJpdGFuaWEsIE5pZ2VyIGFuZCBDaGFkLiBJbiB0aGUgbmV4dCBmZXcgbW9udGhzLCB3ZSBuZWVkIHRvIHByb3ZpZGUgYWxsIG91ciBzdXBwb3J0IGZvciB0aGUgc3RhYmlsaXR5IGFuZCByZWNvdmVyeSBvZiBjZXJ0YWluIHJlZ2lvbnMgaW4gTWFsaSBhbmQgQnVya2luYSBGYXNvLjxcL3A+XG48cD5Gb3VydGgsIHRoZSBTYWhlbCBpc3N1ZSB3aWxsIG5vdCBiZSBmdWxseSByZXNvbHZlZCB1bnRpbCBzdGFiaWxpdHkgaW4gTGlieWEgaXMgYXNzdXJlZC4gVGhlIGFub21pZSB0aGF0IGhhcyByZWlnbmVkIGluIExpYnlhIHNpbmNlIDIwMTEgaGFzIGxlZCB0byB0aGUgc3RydWN0dXJpbmcgb2Ygb3JnYW5pemVkIHRyYWZmaWNraW5nIHJvdXRlcyBmb3IgZHJ1Z3MsIGh1bWFuIGJlaW5ncyBhbmQgd2VhcG9ucy4gVGhlIGVudGlyZSBTYWhlbC1TYWhhcmFuIHN0cmlwIGhhcyBhbHdheXMgYmVlbiBhIHJlZ2lvbiBvZiBjb21tZXJjZSBhbmQgdHJhZmZpY2tpbmcsIGJ1dCB0aGVzZSByb2FkcyBhcmUgbm93IHRob3NlIG9mIG1pc2VyeSBhbmQgdGVycm9yaXNtLiBVbnRpbCB3ZSBzdGFiaWxpemUgTGlieWEsIGl0IHdpbGwgYmUgaW1wb3NzaWJsZSB0byBzdGFiaWxpemUgdGhlIFNhaGVsIHN1c3RhaW5hYmx5LiBUaGVzZSBhcmUgdGhlIHJvYWRzIHRoYXQga2VlcCB0ZXJyb3Jpc3RzIGFsaXZlIHRvZGF5IGFuZCBmdW5kIHRoZW0uPFwvcD5cbjxwPldlIGhhdmUgdGFrZW4gc2V2ZXJhbCBpbml0aWF0aXZlcyB0byByZXNwb25kIHRvIHRoaXMgc2l0dWF0aW9uLiBGaXJzdCBieSBmaWdodGluZyBhZ2FpbnN0IHRoZXNlIHRyYWZmaWNraW5nIGFuZCBzbXVnZ2xpbmcgbmV0d29ya3MgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBBZnJpY2FuIFVuaW9uIGFuZCB0aGUgSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIE1pZ3JhdGlvbi48XC9wPlxuPHA+VGhlbiwgYnkgYnJpbmdpbmcgdG9nZXRoZXIgTWVzc3JzIFNBUlJBSiBhbmQgSEFGVEFSIGluIEZyYW5jZSBpbiBKdWx5IDIwMTcgYW5kLCBmb3IgdGhlIGZpcnN0IHRpbWUsIHRoZSBmb3VyIG1haW4gTGlieWFuIGxlYWRlcnMgbGFzdCBNYXksIHN1cnJvdW5kZWQgYnkgdGhlIGludGVybmF0aW9uYWwgY29tbXVuaXR5LCB0byBlbmdhZ2UgaW4gYSBjb21tb24gcG9saXRpY2FsIHByb2Nlc3MuPFwvcD5cbjxwPkkgYmVsaWV2ZSB2ZXJ5IGRlZXBseSBpbiB0aGUgcmVzdG9yYXRpb24gb2YgTGlieWFuIHNvdmVyZWlnbnR5IGFuZCB0aGUgdW5pdHkgb2YgdGhlIGNvdW50cnkuIEl0IGlzIGFuIGVzc2VudGlhbCBjb21wb25lbnQgb2YgdGhlIHN0YWJpbGl6YXRpb24gb2YgdGhlIHJlZ2lvbiBhbmQgdGhlcmVmb3JlIG9mIHRoZSBmaWdodCBhZ2FpbnN0IHRlcnJvcmlzdHMgYW5kIHRyYWZmaWNrZXJzLiBUaGUgY29taW5nIG1vbnRocyB3aWxsIGJlIGRlY2lzaXZlIGluIHRoaXMgcmVzcGVjdCwgdGhleSB3aWxsIHJlcXVpcmUgb3VyIG1vYmlsaXphdGlvbiB0byBzdXBwb3J0IHRoZSByZW1hcmthYmxlIHdvcmsgb2YgdGhlIHNwZWNpYWwgcmVwcmVzZW50YXRpdmUgb2YgdGhlIFNlY3JldGFyeSBHZW5lcmFsIG9mIHRoZSBVbml0ZWQgTmF0aW9ucywgR2hhc3NhbiBTQUxBTUUsIHRvIGF2b2lkIGFsbCB0aGUgdGVtcHRhdGlvbnMgb2YgZGl2aXNpb25zLCBzaW5jZSB0aGlzIGNvdW50cnkgaGFzIGJlY29tZSBhdCB0aGUgYm90dG9tIHRoZSB0aGVhdGVyIG9mIGFsbCB0aGUgaW5mbHVlbmNlcywgb2YgYWxsIGV4dGVybmFsIGludGVyZXN0cy4gT3VyIHJvbGUgZm9yIG91ciBzZWN1cml0eSBhbmQgdGhhdCBvZiB0aGUgcmVnaW9uLCBpcyB0byBzdWNjZWVkIGluIG1ha2luZyBwcm9ncmVzcyB0aGUgUGFyaXMgYWdyZWVtZW50IG9mIHRoZSBmb3VyIHN0YWtlaG9sZGVycywgZGVjaWRlZCBsYXN0IE1heS48XC9wPlxuPHA+VGhlIG90aGVyIHRoZWF0ZXIgb2Ygb3BlcmF0aW9uIGluIG91ciBmaWdodCBhZ2FpbnN0IHRlcnJvcmlzbSBpcywgb2YgY291cnNlLCBTeXJpYS4gSW4gU3lyaWEsIHRoZSBzaXR1YXRpb24gcmVtYWlucyBleHRyZW1lbHkgc2VyaW91cyBhbmQgd29ycnlpbmcuIEZyYW5jZSBoYXMgYmVlbiB2ZXJ5IGFjdGl2ZSBkaXBsb21hdGljYWxseSwgZnJvbSBOZXcgWW9yayB0byBHZW5ldmEsIGluY2x1ZGluZyBhbGwgdGhlIGNhcGl0YWxzIGNvbmNlcm5lZC4gV2UgaGF2ZSBzaWduaWZpY2FudGx5IGluY3JlYXNlZCBvdXIgaHVtYW5pdGFyaWFuIGFpZC4gQSBjZWFzZS1maXJlIGlzIGluZGlzcGVuc2FibGUgdG9kYXksIGJ1dCB0aGUgZHVyYWJsZSBzb2x1dGlvbiB0byB0aGlzIGNvbmZsaWN0IHdpbGwgYmUgcG9saXRpY2FsLCB3ZSBrbm93IGl0IGlzIHBvbGl0aWNhbC48XC9wPlxuPHA+RnJhbmNlIHdhcyB0aGUgZmlyc3QgdG8gcHJvcG9zZSB0aGUgcmFwcHJvY2hlbWVudCBvZiB0aGUgcG9zaXRpb25zIG9mIHRoZSBXZXN0ZXJuIGFuZCBBcmFiIHN0YXRlcyBvbiB0aGUgb25lIGhhbmQsIGFuZCB0aGUgdGhyZWUgc28tY2FsbGVkIEFzdGFuYSBndWFyYW50b3JzIG9uIHRoZSBvdGhlci4gV2UgaGF2ZSBqb2luZWQgR2VybWFueSBhbmQgRWd5cHQgaW4gdGhlICZxdW90O1NtYWxsIEdyb3VwJnF1b3Q7IHdoaWNoIHdpbGwgaG9sZCBhIG5ldyBtaW5pc3RlcmlhbCBtZWV0aW5nIGluIFNlcHRlbWJlciB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzLCB0aGUgVW5pdGVkIEtpbmdkb20sIFNhdWRpIEFyYWJpYSBhbmQgSm9yZGFuLiBXZSBoYXZlIHN0cmVuZ3RoZW5lZCBvdXIgZGlhbG9ndWUgd2l0aCBUdXJrZXkgb24gU3lyaWEgdG8gYW4gdW5wcmVjZWRlbnRlZCBsZXZlbCwgZGVzcGl0ZSBvdXIgc3Vic3RhbnRpdmUgZGlmZmVyZW5jZXMgaW4gdGhlIE5vcnRoZWFzdCByZWdpb24uIFRoZSBjb29yZGluYXRpbmcgbWVjaGFuaXNtIGNyZWF0ZWQgaW4gU2FpbnQgUGV0ZXJzYnVyZyB3aXRoIFJ1c3NpYSBoYXMgaGFkIGl0cyBmaXJzdCBpbXBhY3QsIGVzcGVjaWFsbHkgaW4gaHVtYW5pdGFyaWFuIHRlcm1zLCBieSBnaXZpbmcgaW4gdG8gb3VyIHByaW5jaXBsZXMgYW5kIGFjdGluZyB0aHJvdWdoIG5vbi1nb3Zlcm5tZW50YWwgb3JnYW5pemF0aW9ucyB3b3JraW5nIGluIHRoZSBmaWVsZCB0byBjb25kdWN0IGh1bWFuaXRhcmlhbiBvcGVyYXRpb25zLiBmb3IgdGhlIGNpdmlsaWFuIHBvcHVsYXRpb24uPFwvcD5cbjxwPkluIHRoaXMgcmVzcGVjdCwgSSB3aXNoIHRvIGNvbW1lbmQgdGhlIHJlbWFya2FibGUgYW5kIGNvdXJhZ2VvdXMgd29yayBvZiBhbGwgdGhlIE5HT3Mgb24gdGhlIGdyb3VuZC48XC9wPlxuPHA+TWFueSB0aGluZ3MgaGF2ZSBldm9sdmVkLCB3ZSBoYXZlLCBJIGJlbGlldmUsIHN1Y2NlZWRlZCBpbiByZWJ1aWxkaW5nIGFuIGVzc2VudGlhbCBFdXJvcGVhbiBwYXRoIGluIHRoZSBTeXJpYW4gY3Jpc2lzLCBidXQgd2UgYXJlIG5vdCBtaXN0YWtlbiwgd2UgYXJlIG9uIHRoaXMgc3ViamVjdCBhbHNvIGluIHRoZSBob3VyIG9mIHRydXRoLiBXZSBhcmUgcHJvYmFibHkgYWRkcmVzc2luZyB0aGUgbGFzdCBtb250aHMgb2YgdGhlIGNvbmZsaWN0IHdpdGggYSBjcml0aWNhbCBodW1hbml0YXJpYW4gY2hhbGxlbmdlIGluIHRoZSBJZGxlYiByZWdpb24uIEFuZCB3ZSBhcmUgYXQgYSBjcm9zc3JvYWRzIHRvIHN1Y2NlZWQgaW4gcHJlY2lzZWx5IGxlYWRpbmcgdGhpcyBpbmNsdXNpdmUgcG9saXRpY2FsIHNvbHV0aW9uIHRoYXQgd2UgYmVsaWV2ZSBpbiwgd2hpY2ggYWxvbmUgd2lsbCBhbGxvdyBFYXN0ZXJuIGNodXJjaGVzLCBidXQgYWxzbyBLdXJkcywgWWVzaWRpcywgYWxsIGV0aG5pYyBhbmQgcmVsaWdpb3VzIG1pbm9yaXRpZXMgdG8gdG8gaGF2ZSBhIHBsYWNlIGluIHRoZSBTeXJpYSBvZiB0b21vcnJvdy48XC9wPlxuPHA+T3VyIGxpbmVzIG9uIHRoZSBTeXJpYW4gY29uZmxpY3QgYXJlIGNsZWFyOiB0aGUgZmlnaHQgYWdhaW5zdCBEYWVzaCBhbmQgdGhlIHRlcnJvcmlzdCBncm91cHMgdGhhdCB0aHJlYXRlbiB0aGUgc2VjdXJpdHkgb2YgRXVyb3BlLCB0aGUgc3VwcG9ydCBmb3IgdGhlIGNpdmlsaWFuIHBvcHVsYXRpb24gYW5kIHRoZSBwcm9tb3Rpb24gb2YgYW4gaW5jbHVzaXZlIGRpcGxvbWF0aWMgcm9hZCBtYXAsIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgVW5pdGVkIE5hdGlvbnMuPFwvcD5cbjxwPkkgZW50cnVzdGVkIHRvIG15IFBlcnNvbmFsIEVudm95IG9uIFN5cmlhLCBBbWJhc3NhZG9yIEZyYW5cdTAwZTdvaXMgU0VORU1BVUQsIHRoZSBtaXNzaW9uIHRvIGFkdmFuY2UgdGhlc2Ugb2JqZWN0aXZlcyBpbiByZWxhdGlvbiB0byBhbGwgdGhlIG1pbmlzdHJpZXMgY29uY2VybmVkLiBCdXQgdGhlIHNpdHVhdGlvbiBpcyBhbGFybWluZyB0b2RheSwgYmVjYXVzZSB0aGUgcmVnaW1lIHRocmVhdGVucyB0byBjcmVhdGUgYSBuZXcgaHVtYW5pdGFyaWFuIHRyYWdlZHkgaW4gdGhlIHJlZ2lvbiBvZiBJZGxlYiBhbmQgc2hvd3Mgbm8gZGVzaXJlIHNvIGZhciB0byBuZWdvdGlhdGUgYW55IHBvbGl0aWNhbCB0cmFuc2l0aW9uLiBUaGlzIG1lYW5zIGZ1cnRoZXIgcHJlc3N1cmUgb24gdGhlIHJlZ2ltZSBhbmQgaXRzIGFsbGllcywgYW5kIEkgYW0gZXhwZWN0aW5nIGEgbG90IGZyb20gUnVzc2lhIGFuZCBUdXJrZXksIGdpdmVuIHRoZWlyIHJvbGUgYW5kIHRoZSBjb21taXRtZW50cyB0aGV5IGhhdmUgbWFkZS48XC9wPlxuPHA+V2Ugc2VlIHRob3NlIHdobyB3b3VsZCBsaWtlLCBvbmNlIHRoZSB3YXIgYWdhaW5zdCBEYWVzaCBpcyBvdmVyLCB0byBmYWNpbGl0YXRlIHdoYXQgc29tZSBjYWxsIGEgcmV0dXJuIHRvIG5vcm1hbGN5LiBCYXNoYXIgRWwtQVNTQUQgd291bGQgcmVtYWluIGluIHBvd2VyLCB0aGUgcmVmdWdlZXMgZnJvbSBKb3JkYW4sIExlYmFub24sIFR1cmtleSwgd291bGQgcmV0dXJuIGhvbWUsIGFuZCBFdXJvcGUgYW5kIGEgZmV3IG90aGVycyB3b3VsZCByZWJ1aWxkLjxcL3A+XG48cD5JZiBJIGNvbnNpZGVyIGZyb20gdGhlIGZpcnN0IGRheSB0aGF0IG91ciBmaXJzdCBlbmVteSBpcyBEYWVzaCBhbmQgdGhhdCBJIGhhdmUgbmV2ZXIgbWFkZSB0aGUgZGlzbWlzc2FsIG9mIEJhc2hhciBFbC1BU1NBRCBhIHByZWNvbmRpdGlvbiBmb3Igb3VyIGRpcGxvbWF0aWMgb3IgaHVtYW5pdGFyaWFuIGFjdGlvbiwgSSB0aGluayB0aGF0IHN1Y2ggYSBzY2VuYXJpbyB3b3VsZCBuZXZlcnRoZWxlc3MgYmUgYSBtaXN0YWtlIGZhdGFsLiBXaG8gcHJvdm9rZWQgdGhlc2UgbWlsbGlvbnMgb2YgcmVmdWdlZXM/IFdobyBtYXNzYWNyZWQgaGlzIG93biBwZW9wbGU/IEl0IGlzIG5vdCB1cCB0byBGcmFuY2UgdG8gZGVzaWduYXRlIHRoZSBmdXR1cmUgbGVhZGVycyBvZiBTeXJpYSwgYW55IG1vcmUgdGhhbiB0byBhbm90aGVyIGNvdW50cnkuIEJ1dCBpdCBpcyBvdXIgZHV0eSBhbmQgb3VyIGludGVyZXN0IHRvIGVuc3VyZSB0aGF0IHRoZSBTeXJpYW4gcGVvcGxlIHdpbGwgYmUgaW4gYSBwb3NpdGlvbiB0byBkbyBzby48XC9wPlxuPHA+VGhpcyBpcyB3aHkgdGhlIGNvbmRpdGlvbiBvZiB0aGUgdW5pdHksIHRoZSBzdGFiaWxpdHkgb2YgU3lyaWEgYW5kIHRoZXJlZm9yZSB0aGUgc3VzdGFpbmFibGUgZXJhZGljYXRpb24gb2YgSXNsYW1pc3QgdGVycm9yaXNtLCBpcyBpbmRlZWQgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGlzIGluY2x1c2l2ZSBwb2xpdGljYWwgc29sdXRpb24gdGhhdCByZXF1aXJlcyBjb25zdGl0dXRpb25hbCByZWZvcm0gYW5kIHRoZSBlc3RhYmxpc2htZW50IG9mIGFuIGVsZWN0b3JhbCBwcm9jZXNzIHRoYXQgd2lsbCBhbGxvdyBhbGwgU3lyaWFucywgaW5jbHVkaW5nIHRob3NlIHdobyBoYXZlIGZsZWQgdGhlIEJhc3NhciBFbC1BU1NBRCByZWdpbWUsIHRvIGNob29zZSB0aGVpciBvd24gbGVhZGVyLiBUaGlzIGFjdGlvbiBhbmQgdGhlc2UgcHJpbmNpcGxlcyBhcmUsIGluIG15IG9waW5pb24sIGRlY2lzaXZlIGZvciBvdXIgc2VjdXJpdHksIGV2ZW4gdG9kYXkgYW5kIHRvbW9ycm93LCBiZWNhdXNlIHdoYXQgaGFzIG1hZGUgaXQgcG9zc2libGUgZm9yIG1vcmUgdGhhbiAxNSB5ZWFycyB0byBtYWtlIHRoZSB0ZXJyb3Jpc3QgZ3JvdXBzIHByb3NwZXIsIGJlIGl0IEFsIFFhaWRhLCBEYWVzaCBvciBBbC1Ob3NyYT88XC9wPlxuPHA+RWNvbm9taWMgaGFyZHNoaXAsIGF1dGhvcml0YXJpYW4gcmVnaW1lcyBjYW5ub3QgcHJvdGVjdCBtb3JlIHBlb3BsZSwgdGhlIHdpZGVzcHJlYWQgY29ycnVwdGlvbiwgYnV0IGFsc28gdGhlIG5vbi1yZXNwZWN0IG9mIHRoZSBzb3ZlcmVpZ250eSBvZiB0aGVzZSBjb3VudHJpZXMgYnkgZm9yZWlnbiBwb3dlcnMsIGl0IGlzIHRoaXMgdGhhdCBoYXMgZmVkIHRoZSBkaXNjb3Vyc2UgZXZlbiBvZiB0aGUgaXNsYW1pc3RzLCB3aGljaCBsZWQgdG8gdGhlIGV4cGxvaXRhdGlvbiBvZiBhbGwgdGhlIGZydXN0cmF0aW9ucyBhbmQgZGlzY291cnNlIGFudGlvY2NpZGVudGFsLiBEbyBub3QgcmVwcm9kdWNlLCB0aGVyZWZvcmUsIG5vdCB0aGVzZSBlcnJvcnMuIFJlc3BlY3QgdGhlIHNvdmVyZWlnbnR5IG9mIFN5cmlhLCBidXQgaGF2ZSByZXNwZWN0IGZvciBpdCByZWFsbHksIGluIGFsbG93aW5nIHBlb3BsZSB0byBleHByZXNzIHRoZW1zZWx2ZXMgYW5kIGVtYm9keSBpdC4gSXQgaXMgdGhlIHNlbnNlIG9mIGNvbWJhdCBhbmQgZGlwbG9tYXRpYyBwb2xpY3kgdGhhdCB3ZSBuZWVkIHRvIHB1cnN1ZSB3aXRoIHRoZSByZXByZXNlbnRhdGl2ZSBvZiB0aGUgc2VjcmV0YXJ5LWdlbmVyYWwgb2YgdGhlIFVuaXRlZCBOYXRpb25zIFN0YWZmYW4gZGUgTUlTVFVSQSwgdG8gY29udmVyZ2UgdGhlIFN5cmlhbnMsIHRoZSBTbWFsbCBHcm91cCwgQXN0YW5hLCB0aGUgU3RhdGVzIG9mIHRoZSByZWdpb24gYXJvdW5kIGEgc2luZ2xlIHJvYWRtYXAgdGhhdCBpcyBpbmNsdXNpdmUsIGluIHdoaWNoIG9ubHkgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgZW5hYmxlIGEgc3VzdGFpbmFibGUgcGVhY2UuPFwvcD5cbjxwPk9mIGNvdXJzZSwgdGhlIHN0YWJpbGl0eSBvZiB0aGUgcmVnaW9uIHdpbGwgYWxzbyBkZXBlbmQgb24gb3VyIGFiaWxpdHkgdG8gaGFuZGxlIG1hdHRlcnMgb2YgaXJhbiwgSSBjb21lIHRvIHRoZSBtb21lbnQgdG8gdHJhZGUgYWdhaW4gd2l0aCBwcmVzaWRlbnQgUk9IQU5JIG9mIHRoZSBjcmlzaXMgaW4gdGhlIEd1bGYsIHRoZSBjb25mbGljdCBpbiBZZW1lbiBhbmQgdGhlIGlzcmFlbGktcGFsZXN0aW5pYW4gaXNzdWUsIHdoaWNoIHJlbWFpbnMgYWJzb2x1dGVseSBjZW50cmFsIGFuZCBhIG1hdHRlciBvZiBjb25jZXJuLjxcL3A+XG48cD5PbiB0aGVzZSBlc3NlbnRpYWwgcG9pbnRzLCBoZXJlIEkgZG9uJ3Qgd2FudCB0byBiZSB0b28gbG9uZyBhbmQgSSB3aWxsIGhhdmUgdG8gZXhwcmVzcyBteXNlbGYgaW4gdGhlIG5leHQgZmV3IHdlZWtzIGJ5IHRha2luZyB3aXRoIHlvdSBzb21lIGNvbmNyZXRlIGluaXRpYXRpdmVzLjxcL3A+XG48cD5BbHdheXMgd2l0aCB0aGUgc2FtZSByZWQgdGhyZWFkIDogb3VyIHNlY3VyaXR5IGFzIG91ciB2aXNpb24gb2YgdGhlIHdvcmxkIG5lZWRlZCB0aGUgc3RhYmlsaXR5IG9mIHRoZSBOZWFyIGFuZCBNaWRkbGUgRWFzdCA8XC9wPlxuPHA+Q29uc2lkZXIsIGluIHRoZSBjb250ZW1wb3JhcnkgZW52aXJvbm1lbnQgb3VyIGFjdGlvbiBmb3IgdGhlIHNlY3VyaXR5IG9mIHRoZSBGcmVuY2gsIGl0IGlzIGFsc28gY29udGludWUgb3VyIGNvbW1pdG1lbnQgdG8gdGhlIGZpZ2h0IGFnYWluc3QgY2hlbWljYWwgd2VhcG9ucywgYW5kIG51Y2xlYXIgcHJvbGlmZXJhdGlvbi48XC9wPlxuPHA+V2UgaGF2ZSBjcmVhdGVkIGFuIGludGVybmF0aW9uYWwgcGFydG5lcnNoaXAgYWdhaW5zdCBpbXB1bml0eSBpbiBjYXNlcyBvZiBjaGVtaWNhbCB3ZWFwb25zLCB3ZSBoYXZlIGxlZCB0aGUgc29saWRhcml0eSBvZiB0aGUgZXVyb3BlYW4gVW5pb24gd2l0aCB0aGUgVW5pdGVkIEtpbmdkb20gZm9sbG93aW5nIHRoZSBhdHRhY2sgb24gU2FsaXNidXJ5LiBXZSBoYXZlIGluIEp1bmUgbGVkIHRvIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBtZWNoYW5pc20gZm9yIHRoZSBhbGxvY2F0aW9uIG9mIHN1Y2ggYXR0YWNrcyB3aXRoaW4gdGhlIG9yZ2FuaXphdGlvbiBmb3IgdGhlIHByb2hpYml0aW9uIG9mIGNoZW1pY2FsIHdlYXBvbnMsIHRoZSBoZWFkcXVhcnRlcnMgb2Ygd2hpY2ggSSBoYWQgdmlzaXRlZCBhIGZldyBtb250aHMgZWFybGllci4gVGhlc2UgYWN0aW9ucyB3ZXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGtub3cgaG93IGNyaXRpY2FsIHRoZSByb2xlLCB0aGUgc3VwZXJ2aXNpb24gb2YgdGhpcyBvcmdhbml6YXRpb24gaXMgY29udGVzdGVkIGJ5IHNvbWUgYW5kIGhhZCBiZWVuIHdlYWtlbmVkIGJ5IHRoZSByZWNlbnQgcmVmb3Jtcy48XC9wPlxuPHA+VGhlIHdvcmQgb2YgRnJhbmNlIHdhcyBhbHNvIGhlbGQgYW5kIG91ciBsaW5lcyBoYXZlIGJlZW4gbWV0LiBXaGVuIHRoZSBzeXJpYW4gcmVnaW1lIGhhcyBib21iZWQgaXRzIHBlb3BsZSB3aXRoIGNoZW1pY2FsIHdlYXBvbnMsIHdlIGhhdmUgaGl0IHNldmVyYWwgb2YgaXRzIGZhY2lsaXRpZXMgaW4gdGhlIG5pZ2h0IGJldHdlZW4gMTMgYW5kIDE0IEFwcmlsIHdpdGggb3VyIGFsbGllcyB0aGUgYnJpdGlzaCBhbmQgdGhlIGFtZXJpY2FucywgYW5kIHdlIHdpbGwgY29udGludWUgdG8gZG8gc28gaW4gdGhlIGNhc2Ugb2YgdXNlIG9mIGEgcHJvdmVuIG9mIHRoZXNlIHdlYXBvbnMuPFwvcD5cbjxwPldlIGhhdmUgZm91Z2h0IGFnYWluc3QgdGhlIHByb2xpZmVyYXRpb24gb2YgbnVjbGVhciB3ZWFwb25zLCBhY2NvbXBhbmllZCBieSBhIHBvbGljeSBvZiB2aWdpbGFuY2UgdGhlIG9wZW5pbmcgYmV0d2VlbiBOb3J0aCBLb3JlYSBhbmQgdGhlIFVuaXRlZCBTdGF0ZXMsIGFuZCBhcyB3ZSBzdHJpdmUsIGFnYWluc3QgdGhlIGRlY2lzaW9uIGJ5IHRoZSB1bml0ZWQgc3RhdGVzLCBmb3IgdGhlIG1haW50ZW5hbmNlIG9mIHRoZSBudWNsZWFyIGRlYWwgd2l0aCBJcmFuLjxcL3A+XG48cD5JdCB3YXMgRnJhbmNlLCBhdCBvdXIgbWVldGluZyBoZXJlIGEgeWVhciBhZ28sIHdoaWNoIHByb3Bvc2VkIHRoZSBwYXRoIG9mIGFuIGVubGFyZ2VkIG5lZ290aWF0aW9uIHdpdGggSXJhbiBvbiB0aGUgZm91ciBwaWxsYXJzIHRoYXQgeW91IGtub3cgYW5kIHRoYXQgSSB0aGVuIGV4cG9zZWQgdG8geW91LjxcL3A+XG48cD5UaGlzIGFwcHJvYWNoIGlzIHByb2dyZXNzaW5nIHRvZGF5LCBpdCBpcyBhIGNvbXBhc3MgdGhhdCBuZXcgcGFydG5lcnMgYXJlIGZvbGxvd2luZywgYW5kIHdlIHdpbGwgZG8gZXZlcnl0aGluZyB0byBoZWxwIHByZXZlbnQgYSBzZXJpb3VzIGNyaXNpcyBpbiB0aGUgY29taW5nIG1vbnRocy4gQSBtYWpvciBkaXBsb21hdGljIGVmZm9ydCB3aWxsIGJlIG5lZWRlZCB0byBlc3RhYmxpc2ggYSBuZXcgc3RhYmlsaXR5IGZyYW1ld29yay4gT3VyIGNsb3NlbHkgY29vcmRpbmF0ZWQgYWN0aW9uLCBpbiBwYXJ0aWN1bGFyIHdpdGggdGhlIFVuaXRlZCBLaW5nZG9tLCBHZXJtYW55IGFuZCB0aGUgRXVyb3BlYW4gVW5pb24sIGlzIHRvZGF5IHRvIHByZXNlcnZlIGFuZCBjb25zb2xpZGF0ZSB0aGUgbnVjbGVhciBhZ3JlZW1lbnQgb2YgMjAxNSB0aHJvdWdoIHRoZSBvcGVuaW5nIG9mIG5ldyBuZWdvdGlhdGlvbnMsIG1vcmUgc3RpbGwgZGVtYW5kaW5nLjxcL3A+XG48cD5GcmFuY2Ugd2lsbCB0YWtlIGl0cyByZXNwb25zaWJpbGl0eSBvbiB0aGUgSXJhbmlhbiBzdWJqZWN0LCB3aXRob3V0IGNvbXBsYWNlbmN5IG9yIG5haXZldHksIGJ5IG1haW50YWluaW5nIGEgY2xvc2UgZGlhbG9ndWUgd2l0aCBvdXIgcGFydG5lcnMsIGluY2x1ZGluZyB0aGUgR3VsZiBTdGF0ZXMuPFwvcD5cbjxwPlRhbGtpbmcgYWJvdXQgb3VyIHNlY3VyaXR5IGlzIGFsc28gYWJvdXQgRXVyb3BlJiMzOTtzIHNlY3VyaXR5IHdpdGggcmVnYXJkIHRvIGV4dGVybmFsIHJpc2tzLjxcL3A+XG48cD5JbiB0aGlzIHJlc3BlY3QsIGR1cmluZyB0aGUgcGFzdCB5ZWFyLCB3ZSBoYXZlIHByb2dyZXNzZWQgYXQgYW4gdW5wcmVjZWRlbnRlZCBwYWNlIGR1cmluZyB0aGUgbGFzdCBzaXh0eSB5ZWFycy4gVGhlIHN0cmVuZ3RoZW5pbmcgb2Ygb3VyIGNvbW1vbiBkZWZlbnNlIHBvbGljeSBzaW5jZSBzdW1tZXIgMjAxNywgdGhlIGNyZWF0aW9uIG9mIGEgZGVmZW5zZSBmdW5kIHRvIGZpbmFuY2UgY29uY3JldGUgaW5pdGlhdGl2ZXMsIHRoZSBjb25jbHVzaW9uIG9mIHR3byBzdHJhdGVnaWMgYWdyZWVtZW50cyBmb3IgdGFua3MgYW5kIGZpZ2h0ZXIgamV0cyBiZXR3ZWVuIEdlcm1hbnkgYW5kIEZyYW5jZSAsIHRoZSBjb25jbHVzaW9uIHdpdGggZWlnaHQgb3RoZXIgbWVtYmVyIHN0YXRlcyBvZiB0aGUgRXVyb3BlYW4gaW50ZXJ2ZW50aW9uIGluaXRpYXRpdmUgdGhhdCBJIGhhZCBwcm9wb3NlZCBpbiBTZXB0ZW1iZXIgMjAxNyB0byBwcm9tb3RlIGEgc3Bpcml0IG9mIGRlZmVuc2UgYmV0d2VlbiBFdXJvcGVhbnMsIGFyZSBub3cgd2VsbC1rbm93biBhbmQgdW5wdWJsaXNoZWQgYWR2YW5jZXMuIEV1cm9wZSBoYWQgbmV2ZXIgYWR2YW5jZWQgc28gZmFzdCBpbiBkZWZlbnNlIG1hdHRlcnMuPFwvcD5cbjxwPkV1cm9wZSBoYXMgcmVhbGl6ZWQgdGhhdCBpdCBtdXN0IHByb3RlY3QgaXRzZWxmIGFuZCBGcmFuY2UgaGFzIGluIHRoaXMgY29udGV4dCBhc3N1bWVkIGFsbCBpdHMgcmVzcG9uc2liaWxpdGllcywgdGhyb3VnaCB0aGUgbGF3IG9mIG1pbGl0YXJ5IHByb2dyYW1taW5nIHByb211bGdhdGVkIG9uIEp1bHkgMTR0aCwgd2hpY2ggcmVzdG9yZXMgYW4gdXBkYXRlZCBzdHJhdGVnaWMgdmlzaW9uIGZhY2luZyB0aGVzZSBuZXcgdGhyZWF0cyB0byBvdXIgY291bnRyeS4gYW5kIGNvbnNpc3RlbnQgd2F5cyB0byByZXNwb25kIHRvIHRoZW0uPFwvcD5cbjxwPkZyYW5jZSBhbmQgRXVyb3BlIGhhdmUgdGFrZW4gbm90ZSBvZiB0aGUgbmV3IGNvbnRlbXBvcmFyeSB0aHJlYXRzIGFuZCB0aGUgZmFjdCB0aGF0IHdlIG5lZWRlZCBzdHJhdGVnaWMgYXV0b25vbXkgYW5kIGRlZmVuc2UgdG8gcmVzcG9uZCB0byB0aGVtLjxcL3A+XG48cD5JbiB0aGUgY29taW5nIG1vbnRocywgSSB3aWxsIGJlIGNhcnJ5aW5nIG91dCBhIHByb2plY3QgdG8gc3RyZW5ndGhlbiBFdXJvcGVhbiBzb2xpZGFyaXR5IGluIHRoZSBmaWVsZCBvZiBzZWN1cml0eS4gV2UgbXVzdCBpbmRlZWQgZ2l2ZSBtb3JlIHN1YnN0YW5jZSB0byBBcnRpY2xlIDQyLTcgb2YgdGhlIFRyZWF0eSBvbiBFdXJvcGVhbiBVbmlvbiwgZmlyc3QgaW52b2tlZCBieSBGcmFuY2UgaW4gMjAxNSwgYWZ0ZXIgdGhlIGF0dGFja3MuIEZyYW5jZSBpcyByZWFkeSB0byBlbnRlciBpbnRvIGEgY29uY3JldGUgZGlzY3Vzc2lvbiBiZXR3ZWVuIEV1cm9wZWFuIFN0YXRlcyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBtdXR1YWwgbGlua3Mgb2Ygc29saWRhcml0eSBhbmQgbXV0dWFsIGRlZmVuc2UgaW1wbGllZCBieSBvdXIgY29tbWl0bWVudHMgdW5kZXIgdGhlIFRyZWF0eS4gRXVyb3BlIGNhbiBubyBsb25nZXIgcmVzdG9yZSBpdHMgc2VjdXJpdHkgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgYWxvbmUuIEl0IGlzIHVwIHRvIHVzIHRvZGF5IHRvIHRha2Ugb3VyIHJlc3BvbnNpYmlsaXRpZXMgYW5kIGd1YXJhbnRlZSBzZWN1cml0eSBhbmQgdGhlcmVmb3JlIEV1cm9wZWFuIHNvdmVyZWlnbnR5LjxcL3A+XG48cD5XZSBtdXN0IHRha2UgYWxsIHRoZSBjb25zZXF1ZW5jZXMgb2YgdGhlIGVuZCBvZiB0aGUgY29sZCB3YXIuIFRvZGF5LCBhbGxpYW5jZXMgc3RpbGwgaGF2ZSBhbGwgdGhlaXIgcmVsZXZhbmNlLCBidXQgdGhlIGJhbGFuY2VzLCBzb21ldGltZXMsIHRoZSBhdXRvbWF0aXNtcyBvbiB3aGljaCB0aGV5IHdlcmUgYnVpbHQgYXJlIHRvIGJlIHJldmlzaXRlZC4gQW5kIHRoYXQgYWxzbyBpbXBsaWVzIGZvciBFdXJvcGUgdG8gZHJhdyBhbGwgdGhlIGNvbnNlcXVlbmNlcy4gVGhpcyByZWluZm9yY2VkIHNvbGlkYXJpdHkgd2lsbCBpbnZvbHZlIHJldmlzaXRpbmcgdGhlIEV1cm9wZWFuIGRlZmVuc2UgYW5kIHNlY3VyaXR5IGFyY2hpdGVjdHVyZS4gT24gdGhlIG9uZSBoYW5kLCBieSBpbml0aWF0aW5nIGEgcmVuZXdlZCBkaWFsb2d1ZSBvbiBjeWJlciBzZWN1cml0eSwgY2hlbWljYWwgd2VhcG9ucywgY29udmVudGlvbmFsIHdlYXBvbnMsIHRlcnJpdG9yaWFsIGNvbmZsaWN0cywgc3BhY2Ugc2VjdXJpdHkgb3IgdGhlIHByb3RlY3Rpb24gb2YgcG9sYXIgYXJlYXMsIGVzcGVjaWFsbHkgd2l0aCBSdXNzaWEuPFwvcD5cbjxwPkkgaG9wZSB0aGF0IHdlIGxhdW5jaCBhIGNvbXByZWhlbnNpdmUgcmVmbGVjdGlvbiBvbiB0aGVzZSB0b3BpY3Mgd2l0aCBhbGwgb2Ygb3VyIEV1cm9wZWFuIHBhcnRuZXJzIGluIHRoZSBicm9hZCBzZW5zZSwgYW5kIHRoZXJlZm9yZSB3aXRoIFJ1c3NpYS4gU3Vic3RhbnRpYWwgcHJvZ3Jlc3MgdG93YXJkcyByZXNvbHZpbmcgdGhlIFVrcmFpbmlhbiBjcmlzaXMsIGFzIHdlbGwgYXMgcmVzcGVjdCBmb3IgdGhlIE9TQ0UgZnJhbWV3b3JrIC0gSSBhbSB0aGlua2luZyBpbiBwYXJ0aWN1bGFyIG9mIHRoZSBzaXR1YXRpb24gb2Ygb2JzZXJ2ZXJzIGluIERvbmJhc3MgLSB3aWxsIG9mIGNvdXJzZSBiZSBwcmVyZXF1aXNpdGVzIGZvciByZWFsIHByb2dyZXNzIHdpdGggTW9zY293LiBCdXQgdGhhdCBzaG91bGQgbm90IHN0b3AgdXMgZnJvbSB3b3JraW5nIHJpZ2h0IG5vdyBiZXR3ZWVuIEV1cm9wZWFucy4gSSYjMzk7bSBjb3VudGluZyBvbiB5b3UgZm9yIHRoYXQuPFwvcD5cbjxwPk9uIHRoZSBvdGhlciBoYW5kLCB3ZSB3aWxsIHJldmlzaXQgdGhpcyBFdXJvcGVhbiBhcmNoaXRlY3R1cmUgYnkgcmVhZmZpcm1pbmcgdGhlIHJlbGV2YW5jZSBvZiB0aGUgQ291bmNpbCBvZiBFdXJvcGUsIHdoaWNoIEZyYW5jZSB3aWxsIGNoYWlyIGluIDIwMTkgdGhlIENvbW1pdHRlZSBvZiBNaW5pc3RlcnMsIGFuZCBvdXIgZGVtb2NyYXRpYyB2YWx1ZXMuIE9uIHRoaXMgc3ViamVjdCB3ZSBkbyBub3QgaGF2ZSB0byBnaXZlIGluIHRvIGFueSBmYXNjaW5hdGlvbiB3aGF0c29ldmVyLCBhbmQgd2hpY2ggd2Ugc2VlIGFwcGVhcmluZyBldmVyeXdoZXJlIGluIHRoZSBFdXJvcGVhbiBVbmlvbjsgdGhlc2UgZmFzY2luYXRpb25zIGZvciB0aGUgaWxsaWJlcmFsIGRlbW9jcmFjaWVzIG9yIGZvciBhIGZvcm0gb2YgZWZmaWNpZW5jeSB0aGF0IHdvdWxkIHBhc3MgYnkgdGhlIHJlbnVuY2lhdGlvbiBvZiBhbGwgb3VyIHByaW5jaXBsZXMuIE5vLiBPdXIgc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGUgcmVhZmZpcm1hdGlvbiBvZiBvdXIgdmFsdWVzLCBodW1hbiByaWdodHMgd2hpY2ggYXJlIGF0IHRoZSB2ZXJ5IGZvdW5kYXRpb24sIG5vdCBvbmx5IG9mIHRoZSBDb3VuY2lsIG9mIEV1cm9wZSwgYnV0IG9mIHRoZSBFdXJvcGVhbiBVbmlvbiwgYW5kIHRoZSBkZWZlbnNlIG9mIGFsbCB0aG9zZSB3aG8gd2VhciB0aGVtIGV2ZXJ5IGRheS4gZGF5LCBJIHRoaW5rIG9mIG5vbi1nb3Zlcm5tZW50YWwgb3JnYW5pemF0aW9ucywgaW50ZWxsZWN0dWFscywgYXJ0aXN0cywgYWN0aXZpc3RzLCBqb3VybmFsaXN0cy4gQW5kIG9uIHRoaXMgc3ViamVjdCB0b28sIHdlIHdpbGwgaGF2ZSB0byB0YWtlLCBpbiBwYXJ0aWN1bGFyLCBvbiB0aGUgc2lkZWxpbmVzIG9mIHRoZSBHZW5lcmFsIEFzc2VtYmx5IG9mIHRoZSBVbml0ZWQgTmF0aW9ucyBzZXZlcmFsIGluaXRpYXRpdmVzLjxcL3A+XG48cD5UaGUgc2Vjb25kIGdvYWwgSSBhc3NpZ25lZCBhIHllYXIgYWdvIHRvIG91ciBkaXBsb21hY3kgaXMgdGhlIHByb21vdGlvbiBvZiB0aGUgY29tbW9ucywgdGhlIHByb3RlY3Rpb24gb2YgdGhlIHBsYW5ldCwgY3VsdHVyZSwgdGhlIGVkdWNhdGlvbiBvZiBvdXIgY2hpbGRyZW4sIHRoZSBoZWFsdGggb2YgcG9wdWxhdGlvbnMsIHRyYWRlIG9yIHRoZSBkaWdpdGFsIHNwYWNlIGFyZSB0aGUgZWxlbWVudHMgb2YgV29ybGQgSGVyaXRhZ2UgdGhhdCB3ZSBtdXN0IGRlZmVuZC4gQnV0IGZvciB0aGF0LCBpdCBpcyBuZWNlc3NhcnkgZmlyc3Qgb2YgYWxsIGNvbGxlY3RpdmUgcnVsZXMsIGFjY2VwdGVkIGJ5IGFsbCwgZXNzZW50aWFsIHRvIGFsbG93IHRoZSBnb29kIGNvb3BlcmF0aW9uLCBhbmQgdGh1cyB0aGUgcHJvZ3Jlc3NlcyBpbiB0aGUgZGVmZW5zZSBvZiB0aGVzZSBjb21tb24gZ29vZHMuIFRoZSBmaXJzdCB0aHJlYXQgdG8gb3VyIGNvbW1vbiBnb29kcyBpcyB0aGUgY3Jpc2lzIG9mIG11bHRpbGF0ZXJhbGlzbSBpdHNlbGYuPFwvcD5cbjxwPk11bHRpbGF0ZXJhbGlzbSBpcyBpbiBmYWN0IGdvaW5nIHRocm91Z2ggYSBtYWpvciBjcmlzaXMgdGhhdCBpcyBjb21pbmcgaW50byBhbGwgb2Ygb3VyIGRpcGxvbWF0aWMgYWN0aW9ucywgZmlyc3QgYW5kIGZvcmVtb3N0LCBiZWNhdXNlIG9mIEFtZXJpY2FuIHBvbGljeS4gVGhlIGRvdWJ0IGFib3V0IE5BVE8sIHRoZSB1bmlsYXRlcmFsIGFuZCBhZ2dyZXNzaXZlIHRyYWRlIHBvbGljeSBsZWFkaW5nIHRvIGEgcXVhc2ktY29tbWVyY2lhbCB3YXIgd2l0aCBDaGluYSwgRXVyb3BlIGFuZCBhIGZldyBvdGhlcnMsIHRoZSB3aXRoZHJhd2FsIG9mIHRoZSBQYXJpcyBhZ3JlZW1lbnQsIHRoZSBleGl0IG9mIHRoZSBJcmFuaWFuIG51Y2xlYXIgYWdyZWVtZW50IGFyZSBzbyBtYW55IGJyYW5kcy4gVGhlIHBhcnRuZXIgd2l0aCB3aG9tIEV1cm9wZSBoYWQgYnVpbHQgdGhlIHBvc3Qtd2FyIG11bHRpbGF0ZXJhbCBvcmRlciBzZWVtcyB0byBiZSB0dXJuaW5nIGl0cyBiYWNrIG9uIHRoaXMgc2hhcmVkIGhpc3RvcnkuIEZyYW5jZSwgZWFjaCB0aW1lLCB3YXMgdGhlIGZpcnN0IGFuZCBjbGVhcmVzdCBpbiBpdHMgb3Bwb3NpdGlvbiB0byB0aGVzZSBkZWNpc2lvbnMsIGJ1dCB3aGlsZSBzZWVraW5nLCBlYWNoIHRpbWUsIHRvIGNvbnZpbmNlIGJlZm9yZSB0aGVzZSBkZWNpc2lvbnMgYXJlIG1hZGUsIGFuZCB0byBtYWludGFpbiB0aGUgaW5kaXNwZW5zYWJsZSBxdWFsaXR5IGRpYWxvZ3VlIGJldHdlZW4gb3VyIHR3byBjb3VudHJpZXMuIEFuZCBJIGZ1bGx5IGNsYWltIHRoYXQuPFwvcD5cbjxwPkNoaW5hLCB3aGlsZSBhY3RpdmVseSBwYXJ0aWNpcGF0aW5nIGluIHRoZSBjbGFzc2ljIG11bHRpbGF0ZXJhbCBnYW1lLCBwcm9tb3RlcyBpdHMgb3duIHZpc2lvbiBvZiB0aGUgd29ybGQsIGl0cyBvd24gdmlzaW9uIG9mIHJlaW52ZW50ZWQsIG1vcmUgaGVnZW1vbmljIG11bHRpbGF0ZXJhbGlzbS4gT3RoZXIgcG93ZXJzIGRvIG5vdCByZWFsbHkgcGxheSB0aGUgZ2FtZSBvZiBtdWx0aWxhdGVyYWwgY28tb3BlcmF0aW9uLCBhbmQgdGhlIGNvbGxhcHNlIG9mIHRoaXMgc3VwcG9zZWQgV2VzdGVybiBvcmRlciB3b3VsZCBub3QgY2F1c2UgdGhlbSBzbyBtdWNoIGRpZmZpY3VsdHkuPFwvcD5cbjxwPkluIHRoaXMgY29udGV4dCwgRnJhbmNlIGlzIHNvbWV0aW1lcyBjcml0aWNpemVkIGZvciBjb250aW51aW5nIHRoZSBkaWFsb2d1ZSwgdGhlIGVmZm9ydHMgd2l0aCB0aGUgVW5pdGVkIFN0YXRlcywgd2hpbGUgaXQgaXMgb2J2aW91cywgZXZlbiBpbiB0aGUgY3VycmVudCBjaXJjdW1zdGFuY2VzLCB0aGF0IHRoZSBkaWFsb2d1ZSB3aXRoIFdhc2hpbmd0b24gcmVtYWlucyBlc3NlbnRpYWwuIEFuZCBJIG11c3QgdGVsbCB5b3UgdGhhdCB0aGUgc2l0dWF0aW9uIGlzIGluIG15IGV5ZXMgdmVyeSBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGRlc2NyaWJlZCBtb3N0IG9mIHRoZSB0aW1lLiBGaXJzdGx5IGJlY2F1c2UgdGhlIG1vdmVtZW50IG9mIGlzb2xhdGlvbmlzbSBvciB1bmlsYXRlcmFsaXNtLCBJIHNob3VsZCBzYXksIHRoYXQgdGhlIFVuaXRlZCBTdGF0ZXMgbGl2ZXMgaXMgbm90IHRvdGFsbHkgbmV3LCBpdCBoYXMgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkaXN0YW50IHBhc3QsIGlmIHdlIHJlZmVyIHRvIEpBQ0tTT04sIGJ1dCBpdCBoYWQgYWxyZWFkeSBiZWd1biB3aXRoIHRoZSBwcmV2aW91cyBhZG1pbmlzdHJhdGlvbiBpbiBjZXJ0YWluIHRoZWF0ZXJzIG9mIG9wZXJhdGlvbnMgYW5kIGluIGNlcnRhaW4gcmVnaW9ucy48XC9wPlxuPHA+VGhpcyBBbWVyaWNhbiBwb3NpdGlvbiwgb2YgY291cnNlLCB3ZWFrZW5zIGNvbnRlbXBvcmFyeSBtdWx0aWxhdGVyYWxpc20gYmVjYXVzZSBpdCBoaW5kZXJzIGVmZmljaWVuY3kgYW5kIGNhbiBsZWFkIHRvIHRoZSBlbWVyZ2VuY2Ugb2YgYWx0ZXJuYXRpdmUgbW9kZWxzIHRoYXQgYXJlIG1vcmUgaGVnZW1vbmljIGFuZCBkaXNyZXNwZWN0ZnVsIG9mIG91ciB2YWx1ZXMuIEJ1dCB0byBtZSwgaXQgbXVzdCBiZSBzZWVuIG1vcmUgYXMgYSBzeW1wdG9tIHRoYW4gYSBjYXVzZSwgdGhlIHN5bXB0b20gb2YgdGhlIGNyaXNpcyBvZiBjb250ZW1wb3JhcnkgY2FwaXRhbGlzdCBnbG9iYWxpemF0aW9uIGFuZCB0aGUgYWNjb21wYW55aW5nIGxpYmVyYWwgV2VzdHBoYWxpYW4gbW9kZWwuPFwvcD5cbjxwPlRoaXMgZ2xvYmFsaXphdGlvbiBhbmQgdGhpcyBtdWx0aWxhdGVyYWxpc20gaGF2ZSBoYWQgcG9zaXRpdmUgZWZmZWN0cyB0aGF0IG11c3Qgbm90IGJlIHVuZGVyZXN0aW1hdGVkOiB0aGV5IGhhdmUgbGlmdGVkIGh1bmRyZWRzIG9mIG1pbGxpb25zIG9mIHBlb3BsZSBvdXQgb2YgcG92ZXJ0eSBvbiB0aGUgcGxhbmV0LCB0aGV5IGVuZGVkIGFuIGlkZW9sb2dpY2FsIGNvbmZsaWN0IHRoYXQgZGl2aWRlZCB0aGUgd29ybGQsIHRoZXkgaGF2ZSBhbGxvd2VkIGEgcGhhc2Ugb2YgdW5wcmVjZWRlbnRlZCBwcm9zcGVyaXR5IGFuZCBmcmVlZG9tLCB0aGUgcGVhY2VmdWwgZXhwYW5zaW9uIG9mIGludGVybmF0aW9uYWwgdHJhZGUsIHdoaWNoIGlzIGEgcmVhbGl0eSBvZiB0aGUgbGFzdCBkZWNhZGVzLiBIb3dldmVyLCB0aGlzIGVjb25vbWljLCBzb2NpYWwgYW5kIHBvbGl0aWNhbCBvcmRlciBpcyBpbiBjcmlzaXMuIEZpcnN0LCBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBhYmxlIHRvIHJlZ3VsYXRlIHRoZSBleGNlc3NlcyBvZiBpdHMgb3duOiB0cmFkZSBpbWJhbGFuY2VzIHRoYXQgaGF2ZSBkZWVwbHkgYWZmZWN0ZWQgc29tZSByZWdpb25zLCBsb3NlcnMgb2YgZ2xvYmFsaXphdGlvbiwgbG9uZy1mb3Jnb3R0ZW4gZW52aXJvbm1lbnRhbCBkaXNhc3RlcnMsIGNvbnNpZGVyYWJsZSBpbmVxdWFsaXRpZXMgd2l0aGluIG91ciBzb2NpZXRpZXMgYW5kIGJldHdlZW4gb3VyIGNvbXBhbmllcy48XC9wPlxuPHA+QW5kIGZyb20gQnJleGl0IHRvIHRoZSBjb250ZW1wb3JhcnkgQW1lcmljYW4gcG9zaXRpb24sIGl0IGlzIHRoaXMgZGlzY29tZm9ydCB3aXRoIGNvbnRlbXBvcmFyeSBnbG9iYWxpemF0aW9uIHRoYXQgaXMgZXhwcmVzc2VkLiBTaW1wbHksIHRoZSBhbnN3ZXIgdG8gbXkgZXllcyBkb2VzIG5vdCBnbyBieSB1bmlsYXRlcmFsaXNtLCBidXQgYnkgYSByZWludmVudGlvbiwgYSBuZXcgY29uY2VwdGlvbiBvZiBjb250ZW1wb3JhcnkgZ2xvYmFsaXphdGlvbi4gVGhlbiwgdGhpcyBjYXBpdGFsaXN0IGdsb2JhbGl6YXRpb24gaGFzIGdlbmVyYXRlZCBhbiBhY2NlbGVyYXRpb24gb2YgZmluYW5jaWFsIGZsb3dzLCBhIGh5cGVyLWNvbmNlbnRyYXRpb24gb2YgdGVjaG5pcXVlcywgdGFsZW50cywgYnV0IGFsc28gcHJvZml0cyB0aGF0IGhhdmUgbWFkZSBlbWVyZ2UgYWN0b3JzIHdobyBqb3N0bGUgYW5kIHdlYWtlbiBvdXIgY29sbGVjdGl2ZSBydWxlcywgYW5kIGJpZyB3aW5uZXJzIGFzIGJpZyBsb3NlcnMuPFwvcD5cbjxwPkZpbmFsbHksIGJlY2F1c2UgZXZlcnl3aGVyZSBpbiB0aGUgd29ybGQsIHRoZSBkZWVwIGlkZW50aXRpZXMgb2YgcGVvcGxlcyBoYXZlIHJlc3VyZmFjZWQsIHdpdGggdGhlaXIgaGlzdG9yaWNhbCBpbWFnaW5hcmllcy4gSXQgaXMgYSBmYWN0LiBUaG9zZSB3aG8gYmVsaWV2ZWQgaW4gdGhlIGFkdmVudCBvZiBhIGdsb2JhbGl6ZWQgcGVvcGxlLCBwcm90ZWN0ZWQgZnJvbSB0aGUgYml0ZXMgb2YgaGlzdG9yeSwgd2VyZSBkZWVwbHkgbWlzdGFrZW4uIEV2ZXJ5d2hlcmUgaW4gdGhlIHdvcmxkLCB0aGUgZGVlcCBwc3ljaGUgaGFzIHJldHVybmVkIHRvIGVhY2ggb2Ygb3VyIHBlb3BsZXMsIGFuZCBpdCBpcyB0cnVlLCBmcm9tIEluZGlhIHRvIEh1bmdhcnksIHZpYSBHcmVlY2UsIHRvIHRoZSBVbml0ZWQgU3RhdGVzLiBMb29rIGF0IGl0IG1vcmUgY2xvc2VseSwgaXQgaXMgc29tZXRpbWVzIGRpdmVydGVkLCBzb21ldGltZXMgZXhhY2VyYmF0ZWQsIGJ1dCBpdCBpcyBhIGZhY3QgdGhhdCBzYXlzIHNvbWV0aGluZyBhYm91dCB0aGUgcmV0dXJuIG9mIHBlb3BsZXMuIEl0JiMzOTtzIGEgZ29vZCB0aGluZyBubyBkb3VidCwgaW4gYW55IGNhc2UsIEkgYmVsaWV2ZSBpdC48XC9wPlxuPHA+VGhpcyBpcyB0aGUgc2lnbiB0aGF0IHRoaXMgdW5kaWZmZXJlbnRpYXRlZCBnbG9iYWxpemF0aW9uIGRpZCBub3QgYWxsb3cgdXMgdG8gcmVzcG9uZCB0byBldmVyeXRoaW5nLCB0aGF0IGl0IGV2ZW4gZmFpbGVkIHRvIGFuc3dlciBhIGZldyBwb2ludHMsIGFuZCB0aGF0IHdlIG11c3QgdGhlcmVmb3JlIHJldGhpbmsgdGhlIHJ1bGVzIGFuZCBwcmFjdGljZXMgZ2l2ZW4gcHJlY2lzZWx5IHRoZXNlIGZhaWx1cmVzLCBvZiB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMuIFNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBub3Qgc28gbXVjaCB3aGV0aGVyIEkgYW0gZ29pbmcgdG8gdGFrZSBEb25hbGQgVFJVTVAgYnkgdGhlIGFybSBhdCB0aGUgbmV4dCBzdW1taXQsIGJ1dCBob3cgd2Ugd2lsbCBjb2xsZWN0aXZlbHkgZ3Jhc3AgdGhpcyBtb21lbnQgb2YgZ3JlYXQgdHJhbnNmb3JtYXRpb25zIHRoYXQgd2UgYXJlIGV4cGVyaWVuY2luZywgYW5kIHdoaWNoIG91ciBzb2NpZXRpZXMgYXJlIGFsbCBmYWNpbmcuPFwvcD5cbjxwPlRoZSBncmVhdCBkZW1vZ3JhcGhpYyB0cmFuc2Zvcm1hdGlvbiwgd2hpY2ggaXMgc2hha2luZyBBZnJpY2EgdG9kYXkgbGlrZSBFdXJvcGUsIGFuZCBhbGwgY29udGluZW50cywgaXQgbXVzdCBiZSBzYWlkLiBUaGUgZ3JlYXQgZWNvbG9naWNhbCBhbmQgZW52aXJvbm1lbnRhbCB0cmFuc2Zvcm1hdGlvbiwgbW9yZSBnbGFyaW5nIHRoYW4gZXZlci4gVGhlIGdyZWF0IHRyYW5zZm9ybWF0aW9uIG9mIGluZXF1YWxpdGllcyBhbmQgdGhlIGdyZWF0IHRlY2hub2xvZ2ljYWwgdHJhbnNmb3JtYXRpb24uIFRoZSByb2xlIG9mIEZyYW5jZSBpcyB0byBwcm9wb3NlIGEgaHVtYW5pc3Qgd2F5IHRvIG1lZXQgdGhlc2UgY2hhbGxlbmdlcywgYW5kIHdpdGggRXVyb3BlIHByZWNpc2VseSwgdG8gcHJvcG9zZSBhIG5ldyBjb2xsZWN0aXZlIG9yZ2FuaXphdGlvbi48XC9wPlxuPHA+VGhpcyBpbXBsaWVzIGZpcnN0IGFuZCBmb3JlbW9zdCwgYW5kIHRoaXMgaXMgdGhlIHByZXJlcXVpc2l0ZSwgaWYgSSBtYXkgc2F5IHNvLCB0byBjaGFuZ2Ugc29tZXdoYXQgb3VyIGRpcGxvbWF0aWMgYXBwcm9hY2guIFdlIGNhbiBubyBsb25nZXIgYmUgY29udGVudCB0byBmb2xsb3cgdGhlIHBvbGl0aWNhbCBldm9sdXRpb25zIG9yIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlIHRyYWRpdGlvbmFsIGFjdG9ycyB3aXRob3V0IHRyeWluZyB0byBiZXR0ZXIgZGVjaXBoZXIgdGhlIGRlZXAgaWRlbnRpdGllcywgdGhlIGZvcmNlcyB0aGF0IGFyZSBhdCB3b3JrIGFuZCBkZXRlcm1pbmUgdGhlIGNvdXJzZSBvZiBldmVudHMgaW4gbWFueSBjb3VudHJpZXMuIFdlIGhhdmUgc2VlbiwgdG8gc29tZSBleHRlbnQsIHdoYXQgd2UgZGlkIG5vdCB3YW50IHRvIHNlZSwgb2YgcG9saXRpY2FsIGV2ZW50cywgdGhlc2UgbGFzdCBzZW1lc3RlcnMsIHdpdGhvdXQgcXVlc3Rpb25pbmcgb3Vyc2VsdmVzLCB3aXRob3V0IGxvb2tpbmcgZW5vdWdoIGF0IHRoZSBkZWVwIGlkZW50aXRpZXMsIHRoZSBjb2xsZWN0aXZlIGltYWdpbmF0aW9ucyBvZiB0aGUgcGVvcGxlcyB0aGF0IEkgZXZva2VkLiBqdXN0IG5vdy4gSSB0aGluayB3ZSBuZWVkIHRvIGRvIGl0IG1vcmUgYW5kIHJlaW52ZW50IG91ciBvd24gbWV0aG9kcy48XC9wPlxuPHA+QW5kIHNvbWV0aW1lcywgd2hhdCB3ZSBkbyBub3Qgd2FudCB0byBzZWUgaGFwcGVucywgYmVjYXVzZSB0aGVyZSBpcyBhIGRlZXAgbG9naWMsIHBlY3VsaWFyIHRvIHRoZSBwZW9wbGUuIEl0IGlzIHByb2JhYmx5IG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIG1vcmUgdGhlIGludGltYWN5LCB0byBiZXR0ZXIgYW50aWNpcGF0ZSB0aGlzIGNvdXJzZSBvZiB0aGluZ3MuIEJ1dCB3ZSBtdXN0IGFsc28gZ3Jhc3Agd2hhdCBpcyBwcm9ncmVzc2l2ZSBhbmQgaHVtYW5pc3RpYyBpbiB0aGVzZSB2aXNpb25zIG9mIHRoZSB3b3JsZCwgYW5kIHRoZXJlZm9yZSB0aGUgd2F5cyBhbmQgbWVhbnMgb2YgbmV3IGluaXRpYXRpdmVzLCBhbmQgc2VlayBpbiBlYWNoIG9mIHRoZXNlIGNvdW50cmllcyBvdXIgYWxsaWVzLCB0aGUgd2F5cyBvZiBwYXNzYWdlLCB0aGUgbWVhbnMgdG8gYnVpbGQgbmV3IGNvb3BlcmF0aW9ucyBhbmQgYWxsaWFuY2VzLjxcL3A+XG48cD5XZSBtdXN0IGFncmVlIHRvIGRvIHNvIHdpdGggYWxsaWFuY2VzIG9mIGNpcmN1bXN0YW5jZSwgcmF0aGVyIHRhY3RpY2FsIGFsbGlhbmNlcywgY29uY3JldGUgYWNjb3JkaW5nIHRvIHRoZSBzdWJqZWN0cywgYW5kIG9uIHRoZSBiYXNpcyBvZiBjbGVhciBwcmluY2lwbGVzIGFuZCBvYmplY3RpdmVzLCBhbHdheXMgd2l0aCByZXNwZWN0IGZvciBuYXRpb25hbCBwb3B1bGFyIHNvdmVyZWlnbnR5LiBJIGFscmVhZHkgbWVudGlvbmVkIGl0LiBUaGlzIGxpbWl0cyBtaWxpdGFyeSBpbnRlcnZlbnRpb25pc20gb3IsIG1vcmUgcHJlY2lzZWx5LCBpdCByZXF1aXJlcyBhbHdheXMgdG8gcHV0IG91ciBhY3Rpb24gaW4gYSBkeW5hbWljIGFuZCBhIHBvbGl0aWNhbCBwcm9qZWN0IGJyb3VnaHQgY2xvc2VyIHRvIHRoZSBwZW9wbGUuIEJ1dCBpdCBhbHNvIG1lYW5zIHRoYXQgd2UgbXVzdCwgZXZlcnkgdGltZSwgd29yayB0byBlbnN1cmUgdGhhdCBhbGwgbm9uLXN0YXRlIGFjdG9ycyBjb250cmlidXRlIHRvIHRoaXMgbmV3IHJlZ3VsYXRpb24gb2YgdGhlIHdvcmxkLCBhYmlkZSBieSB0aGUgcnVsZXMsIGFuZCBjYW4gbm90IGJlIHNvbWVob3cgc3Rvd2F3YXlzIG9yIGhpZGRlbiByZWZlcmVlcy48XC9wPlxuPHA+VGhlIGFuc3dlciBkb2VzIG5vdCBnbyBieSB1bmlsYXRlcmFsaXNtLCBidXQgYnkgYSByZW9yZ2FuaXphdGlvbiBvZiBvdXIgYWN0aW9uIGFyb3VuZCBzb21lIHN0cmF0ZWdpYyBjb21tb24gZ29vZHMsIGFuZCBieSB0aGUgY29uc3RydWN0aW9uIG9mIG5ldyBhbGxpYW5jZXMuIEZpcnN0LCBpdCBpcyBpbiB0aGUgZmlnaHQgYWdhaW5zdCBjbGltYXRlIGNoYW5nZSwgZmlyc3QsIHRoZSBQYXJpcyBjbGltYXRlIGFncmVlbWVudCBtdXN0IGNvbnRpbnVlIHRvIGJlIGRlZmVuZGVkLiBXZSBzZWUgZXZlcnkgZGF5LCB3aXRoIHRoZSBpbnRlbnNpZmljYXRpb24gb2YgY2xpbWF0ZSBleHRyZW1lcyBhbmQgbmF0dXJhbCBkaXNhc3RlcnMsIHRoZSBjb25maXJtYXRpb24gb2YgdGhlIHVyZ2VuY3kgb2YgdGhpcyBmaWdodC4gQW5kIHdlIGNvbnRpbnVlIHRvIGxlYWQgaXQsIGFuZCB3ZSB3aWxsIGNvbnRpbnVlIHdpdGggY29uY3JldGUgYWN0aW9ucy48XC9wPlxuPHA+VGhlIE9uZSBQbGFuZXQgU3VtbWl0LCB3aGljaCBGcmFuY2UgdG9vayB0aGUgaW5pdGlhdGl2ZSB3aXRoIHRoZSBVTiBhbmQgdGhlIFdvcmxkIEJhbmssIG9uIERlY2VtYmVyIDEyIGluIFBhcmlzLCBtYWRlIGl0IHBvc3NpYmxlIHRvIGFkb3B0IG5ldywgc3Vic3RhbnRpYWwgZmluYW5jaWFsIGNvbW1pdG1lbnRzLiBBIG5ldyBpbnRlcm5hdGlvbmFsIGZvbGxvdy11cCBzdW1taXQgd2lsbCBiZSBoZWxkIG9uIFNlcHRlbWJlciAyNiBpbiBOZXcgWW9yay4gV2UgbXVzdCBjb250aW51ZSB0byBtb2JpbGl6ZSBhbGwgYWN0b3JzIGludm9sdmVkIGluIHRoaXMgZmlnaHQ6IGNvbXBhbmllcywgbm9uLWdvdmVybm1lbnRhbCBvcmdhbml6YXRpb25zLCBsb2NhbCBhdXRob3JpdGllcywgbWFqb3IgaW50ZXJuYXRpb25hbCBmb3VuZGF0aW9ucy48XC9wPlxuPHA+VGhpcyBmaWdodCBmb3IgdGhlIHBsYW5ldCB3aWxsIHJlbWFpbiBhdCB0aGUgaGVhcnQgb2Ygb3VyIGZvcmVpZ24gcG9saWN5LCBhcyBzaG93biBieSB0aGUgcGxhY2UgdGFrZW4gYnkgdGhpcyB0aGVtZSBpbiBteSB2aXNpdHMgdG8gdGhlIEhvbHkgU2VlLCBDaGluYSBhbmQgSW5kaWEsIGVzcGVjaWFsbHkgd2l0aCB0aGUgZmlyc3Qgc3VtbWl0LiBvZiB0aGUgSW50ZXJuYXRpb25hbCBTb2xhciBBbGxpYW5jZSB0aGF0IHdlIG9yZ2FuaXplZCB3aXRoIEluZGlhLiBJdCBtdXN0IGFsc28gYmUgcmVmbGVjdGVkIGluIHRoZSBuZWdvdGlhdGlvbiBhbmQgYWRvcHRpb24gb2YgYSBuZXcgZ2xvYmFsIGVudmlyb25tZW50IHBhY3QsIHdoaWNoIEkgYmVsaWV2ZSBpcyBhIHByaW9yaXR5IG9iamVjdGl2ZSwgYW5kIHdoaWNoIHdpbGwgaW52b2x2ZSB0aGUgbW9iaWxpemF0aW9uIG9mIGFsbCBvdXIgZGlwbG9tYWN5LCBidXQgYWxzbyB0aHJvdWdoIGFjdGl2ZSBwcmVwYXJhdGlvbiBtYWpvciBtaWxlc3RvbmVzIG9mIG5lZ290aWF0aW9ucyBvbiBiaW9kaXZlcnNpdHkgaW4gMjAxOSBhbmQgMjAyMC4gQW5kIGEgbW9iaWxpemF0aW9uIG9uIHRoZSBzdWJqZWN0IG9mIHRoZSBvY2VhbnMgYXMgcG9sZXMgd2hpY2ggd2lsbCBpbXBseSwgYWdhaW4sIHRoZSBtb2JpbGl6YXRpb24gb2YgbWFueSBwb3NpdGlvbnMuPFwvcD5cbjxwPlRoaXMgZW52aXJvbm1lbnRhbCBkaXBsb21hY3kgaXMgbWFqb3IgdG8gcmVzcG9uZCB0byB0aGlzIGdyZWF0IHVwaGVhdmFsIGluIHRoZSB3b3JsZC4gSXQgaXMgbWFqb3IgYmVjYXVzZSBpdCBjaGFyYWN0ZXJpemVzIHRoZSBGcmVuY2ggYW5kIEV1cm9wZWFuIGNvbW1pdG1lbnQgaW4gdGhpcyBhcmVhLCBiZWNhdXNlIGl0IGFsbG93cyB0byBmb3JnZSBuZXcgYWxsaWFuY2VzLCBlc3BlY2lhbGx5IHdpdGggQ2hpbmEgYW5kIHNldmVyYWwgb3RoZXIgcG93ZXJzLCBhbmQgdGh1cyBidWlsZCwgYWdhaW4sIG5ldyBmb3JtIG9mIGNvb3BlcmF0aW9uIGFuZCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byByZXNwb25kIHZlcnkgZGVlcGx5IHRvIG91ciBpbnRlcmVzdHMgaW4gdGhlIHNob3J0LCBtZWRpdW0gYW5kIGxvbmcgdGVybS48XC9wPlxuPHA+VGhlIHNlY29uZCB1bml2ZXJzYWwgZ29vZCB0aGF0IHdlIGhhdmUgcGxhY2VkIGF0IHRoZSBoZWFydCBvZiBvdXIgcG9saWN5IG9mIGludGVybmF0aW9uYWwgY29vcGVyYXRpb24gaXMgZWR1Y2F0aW9uLCBjdWx0dXJlLCBrbm93bGVkZ2UuIEZyYW5jZSwgaW4gZmFjdCwgc2hvd2VkIGl0cyBjb21taXRtZW50IGJ5IG9yZ2FuaXppbmcgd2l0aCBTZW5lZ2FsIHRoZSByZWNvbnN0aXR1dGlvbiBjb25mZXJlbmNlIG9mIHRoZSBHbG9iYWwgUGFydG5lcnNoaXAgZm9yIEVkdWNhdGlvbiBpbiBEYWthciwgYSBmZXcgbW9udGhzIGFnbywgd2hpY2ggcmFpc2VkIG1vcmUgdGhhbiB0d28gYmlsbGlvbiBldXJvcyBmb3IgdGhlIGVkdWNhdGlvbiBpbiB0aGUgd29ybGQsIGVzcGVjaWFsbHkgdGhlIGVkdWNhdGlvbiBvZiB5b3VuZyBnaXJscywgYW5kIGZvciB3aGljaCwgRnJhbmNlIGhhcyBtdWx0aXBsaWVkIGl0cyBjb250cmlidXRpb24gYnkgMTAuPFwvcD5cbjxwPkluIG15IHZpZXcsIHRoaXMgaXMgbm90IG9ubHkgb3VyIHVuaXZlcnNhbGlzdCBhbmQgaHVtYW5pc3Qgcm9sZSwgYnV0IGFsc28gdGhlIG1vc3QgZXNzZW50aWFsIGNvbnRyaWJ1dGlvbiB3ZSBjYW4gbWFrZSB0byB0aGUgZGVtb2dyYXBoaWMgY3Jpc2lzIEkgbWVudGlvbmVkIGVhcmxpZXIuIFdoZXJldmVyIGRlbW9ncmFwaGljcyBibGF6ZSByZWNrbGVzc2x5LCBpdCBpcyBiZWNhdXNlIGVkdWNhdGlvbiBoYXMgZGVjbGluZWQsIGFuZCBpbiBwYXJ0aWN1bGFyLCB0aGUgZWR1Y2F0aW9uIG9mIHlvdW5nIGdpcmxzLiBBbmQgdGhpcyBpcyBhIHNwZWVjaCB0aGF0IEZyYW5jZSBtdXN0IGtub3cgaG93IHRvIHdlYXIuIEhvdyBtdWNoIEkgd2FzIGF0dGFja2VkIGEgbGl0dGxlIG92ZXIgYSB5ZWFyIGFnbywgSSBjYXJyaWVkIHRoaXMgc3BlZWNoIHRvIEhhbWJ1cmcsIGJ1dCBBZnJpY2FuIGxlYWRlcnMgaGF2ZSB0YWtlbiBpdCBiYWNrLCBjYXJyaWVkIGl0LCBhbmQgYXBwbHkgaXQgd2l0aCBjb3VyYWdlLjxcL3A+XG48cD5CdXQgd2hlcmV2ZXIgZGVtb2dyYXBoeSBoYXMgZmxhcmVkIHVwIHdpdGggc2V2ZW4gb3IgZWlnaHQgY2hpbGRyZW4gcGVyIHdvbWFuLCB0aGlzIGlzIHdoZXJlIGZvcmNlZCBtYXJyaWFnZXMgaGF2ZSByZXN1bWVkLCB3aGVyZSB0aGUgZWR1Y2F0aW9uIG9mIGdpcmxzIGhhcyByZWNlZGVkLiBBbmQgbGV0IG1lIHNlZSB0aGUgY291bnRyaWVzIHdoZXJlIGFsbCB0aGUgeW91bmcgd29tZW4gaGF2ZSBjaG9zZW4gdG8gaGF2ZSBlaWdodCBvciBuaW5lIGNoaWxkcmVuLCBsZXQgbWUgaW50cm9kdWNlIHRoZW0sIGJlZm9yZSBzYXlpbmcgdGhhdCBpdCB3b3VsZCBiZSBhIGZvcm0gb2YgbmVvLWltcGVyaWFsaXNtIHRvIGhvbGQgdGhlc2Ugc3BlZWNoZXMgaW4gUGFyaXMsIG5vLCB3ZSBtdXN0IGFib3ZlIGFsbCBoZWxwIHRob3NlIHdobyBob2xkIHRoZW0gaW4gZWFjaCBvZiB0aGVpciBjYXBpdGFsLjxcL3A+XG48cD5UaGUgc3RydWdnbGUgZm9yIGVkdWNhdGlvbiBpcyB0aGUgYmVzdCBhbnN3ZXIgdG8gYWxsIG9ic2N1cmFudGlzbSBhbmQgdG90YWxpdGFyaWFuaXNtLiBFZHVjYXRpb24sIGN1bHR1cmUsIGludGVsbGlnZW5jZSBhcmUgYXQgdGhlIGhlYXJ0IG9mIHRoaXMgZmlnaHQgdGhhdCB3ZSBtdXN0IGZpZ2h0IGV2ZXJ5d2hlcmUuIEl0IGlzIHRoZSBvbmx5IHN1c3RhaW5hYmxlIGFuc3dlciB0byB0aGUgZ2xvYmFsIGRlbW9ncmFwaGljIGNoYWxsZW5nZS4gQW5kIHRoaXMgaXMgaG93IHdlIHdpbGwgZmlnaHQgZGVlcGx5IGFnYWluc3QgaW5lcXVhbGl0aWVzLCBlc3BlY2lhbGx5IGJldHdlZW4gd29tZW4gYW5kIG1lbi4gQW5kIHRoYXQmIzM5O3Mgd2h5IEkgaGF2ZSBtYWRlIGVkdWNhdGlvbiwgaW4gb3VyIGNvdW50cnkgYXMgd2VsbCBhcyBpbnRlcm5hdGlvbmFsbHksIGEgdG9wIHByaW9yaXR5LjxcL3A+XG48cD5BbmQgSSBkZWVwbHkgYmVsaWV2ZSB0aGF0IG9uIHRoaXMgc3ViamVjdCwgRnJhbmNlIGhhcyBhIG5ldyByb2xlIHRvIHBsYXksIGZpcnN0LCBiZWNhdXNlIGl0IGlzIGl0cyBoaXN0b3J5LCBpdHMgdHJhZGl0aW9uLCBmb3IgYSB5ZWFyLCB3ZSBoYXZlIGJ1aWx0IGFuIGFtYml0aW91cyBlZHVjYXRpb24gc3RyYXRlZ3ksIGZyb20ga2luZGVyZ2FydGVuIHRvIHVuaXZlcnNpdHksIHdoaWNoIEkgYmVsaWV2ZSBnaXZlcyBhIHNwZWNpYWwgY3JlZGliaWxpdHkgdG8gb3VyIGNvdW50cnkgaW4gdGhpcyByZWdhcmQuIEJ1dCBsZXQgdXMgYWxzbyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgd2hhdCB3ZSBhcmUsIGFuZCB0aGUgYXNzZXRzIHdlIGhhdmUsIHdlIGhhdmUgaW4gUGFyaXMgdGhlIGhlYWRxdWFydGVycyBvZiB0aHJlZSBrZXkgaW50ZXJuYXRpb25hbCBvcmdhbml6YXRpb25zIGluIHRoZXNlIGZpZWxkczogVU5FU0NPLCB3aG9zZSBuZXcgRGlyZWN0b3IgR2VuZXJhbCBoYXMgYmVndW4gdG8gY2Fycnkgb3V0IHJlc29sdXRlIGFjdGlvbiB0aGF0IFdlIHN0cm9uZ2x5IHN1cHBvcnQgdGhlIE9FQ0QsIHdoaWNoIGhhcyBnYWluZWQgdW5kaXNwdXRlZCBjcmVkaWJpbGl0eSBpbiBhc3Nlc3NpbmcgZWR1Y2F0aW9uYWwgcGVyZm9ybWFuY2UsIHRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBvZiBMYSBGcmFuY29waG9uaWUsIHdoaWNoIGlzIGFsc28gYSBzdHJvbmcgYW1iaXRpb24gYW5kIGEgcHJpb3JpdHkuPFwvcD5cbjxwPkFuZCBpbiByZWNlbnQgeWVhcnMgd2UgaGF2ZSBsYXVuY2hlZCBzZXZlcmFsIHByb2plY3RzLCB0aGUgQUxJUEggaW5pdGlhdGl2ZSAtIHRvIHByb3RlY3QgZW5kYW5nZXJlZCBjdWx0dXJhbCBoZXJpdGFnZSBhbmQgbWFueSBvdGhlcnMgLSB0aGF0IGZ1cnRoZXIgc3RyZW5ndGhlbnMgdGhpcyBzdHJlbmd0aC4gQWRkIHRvIHRoYXQgb3VyIGluY3JlYXNlZCByb2xlIHdpdGhpbiB0aGUgR2xvYmFsIFBhcnRuZXJzaGlwIGZvciBFZHVjYXRpb24gdGhhdCBJIHdpc2ggZXZlbiBtb3JlIGFjdGl2ZSBhbmQgcHJlc2VudCBpbiBQYXJpcywgd2UgaGF2ZSBldmVyeXRoaW5nIHRvIG1ha2UgRnJhbmNlIGEgZ2xvYmFsIGVjb3N5c3RlbSBvZiBrbm93bGVkZ2UsIGludGVsbGlnZW5jZSBhbmQgY3VsdHVyZSwgdGhhdCB5b3UgbXVzdCBzaGluZSB0aHJvdWdob3V0IHRoZSB3b3JsZCwgdGhyb3VnaCBhY2FkZW1pYywgc2NpZW50aWZpYyBhbmQgcmVzZWFyY2ggY29vcGVyYXRpb24uPFwvcD5cbjxwPkkgYmVsaWV2ZSB0aGF0IGl0IGlzIGJvdGggYW4gZXNzZW50aWFsIGNvbW1vbiBnb29kIHRoYXQgd2UgbXVzdCBkZWZlbmQsIGJ1dCBJIGJlbGlldmUgaXQgaXMgYWxzbyBhIHRyZW1lbmRvdXMgbGV2ZXIgb2YgaW5mbHVlbmNlIGZvciBvdXIgY291bnRyeS48XC9wPlxuPHA+VGhpcmQgY29tbW9uIGdvb2QgaXMgaGVhbHRoLiBPbiB0aGlzIHN1YmplY3QsIEZyYW5jZSB3aWxsIHJlc3VtZSBpdHMgY29tbWl0bWVudHMgYnkgbWVldGluZyBvbiAxMCBPY3RvYmVyIDIwMTksIGluIEx5b24sIHRoZSByZXBsZW5pc2htZW50IGNvbmZlcmVuY2Ugb2YgdGhlIEdsb2JhbCBGdW5kIGFnYWluc3QgQUlEUywgbWFsYXJpYSBhbmQgdHViZXJjdWxvc2lzLiBCdXQgaW4gdGhlIG1lYW50aW1lLCBJIGhvcGUgdGhhdCB3ZSB3aWxsIHJlc3VtZSB3aXRoIGZvcmNlIHRoZSBpbXBvcnRhbnQgZmlnaHQgYWdhaW5zdCBmYWtlIGRydWdzLCB3aGljaCBGcmFuY2UgaGFkIGluaXRpYXRlZCwgYW5kIHRoYXQgd2UgaW50ZW5zaWZ5IG91ciBpbnZvbHZlbWVudCBpbiB0aGUgZmlnaHQgYWdhaW5zdCBtYWpvciBwYW5kZW1pY3MsIEkgdGhpbmsgaW4gcGFydGljdWxhciB0aGUgZmlnaHQgYWdhaW5zdCBFYm9sYSBpbiBDZW50cmFsIEFmcmljYS48XC9wPlxuPHA+VGhlIGZvdXJ0aCBmdW5kYW1lbnRhbCBjb21tb24gZ29vZCBpcyB0aGUgZGlnaXRhbCBzcGFjZS4gV2UgbXVzdCBzaW11bHRhbmVvdXNseSBzdXBwb3J0IGl0cyBncm93dGgsIGludmVzdCBpbiB0aGUgcHJvbW90aW9uIG9mIG91ciBzdHJhdGVnaWMgYW5kIGVjb25vbWljIGludGVyZXN0cywgYW5kIGZyYW1lIGl0IHNvIHRoYXQgaXQgY2FuIGJlIGFjY2Vzc2libGUgdG8gYWxsIGFuZCBwcm90ZWN0IG91ciBmdW5kYW1lbnRhbCByaWdodHMuIFRoaXMgZ3JlYXQgdXBoZWF2YWwgaXMgZXhhY3RseSB0aGUgbWVhbmluZyBvZiB0aGUgVGVjaCBGb3IgR29vZCBTdW1taXQsIGhlbGQgaW4gUGFyaXMgbGFzdCBzcHJpbmcsIGFuZCB3aGljaCB3ZSB3aWxsIHJlbmV3IGV2ZXJ5IHllYXIsIHRvIGVuY291cmFnZSByZWZsZWN0aW9uIG9uIHRoZSBlc3NlbnRpYWwgcmVndWxhdGlvbnMgaW4gdGhlc2UgbmV3IHNlY3RvcnMsIHdpdGggYWxsIHRoZSBpbnRlcm5hdGlvbmFsIHBsYXllcnMgYW5kIHRvIHRha2UgY29uY3JldGUgbWVhc3VyZXMgYW5kIGNvbW1pdG1lbnRzIGFzIHdlbGwuIFdoZXRoZXIgaXQgaXMgdGF4YXRpb24sIHByaXZhY3ksIHNvY2lhbCByaWdodHMsIGV0aGljcywgd2UgbXVzdCBmb3JnZSByZXNwZWN0ZnVsIHJlc3BvbnNlcyB0byB0aGUgc292ZXJlaWdudHkgb2YgY291bnRyaWVzLCBuZXZlciBhY2NlcHRpbmcgdGhhdCBzdWNoIG9yIHN1Y2ggZWNvbm9taWMgYWN0b3IsIHN1Y2ggb3Igc3VjaCBzcGFjZSBvZiBodW1hbiBhY3Rpdml0eSwgY2FuIGVzY2FwZSBvdXIgc292ZXJlaWdudHkgYW5kIG91ciB2aWdpbGFuY2UuPFwvcD5cbjxwPlRoaXMgaXMgdGhlIHNlbnNlIG9mIHRoZSBjb21taXRtZW50IHdlIGhhdmUgbWFkZSwgcGFydGljdWxhcmx5IHdpdGggdGhlIFVuaXRlZCBLaW5nZG9tLCBhdCBFdXJvcGVhbiBsZXZlbCBhbmQgYXQgdGhlIGludGVybmF0aW9uYWwgbGV2ZWwsIHRvIGNvbWJhdCB0aGUgc3ByZWFkIG9mIHRlcnJvcmlzdCBtZXNzYWdlcyBvciB0ZXJyb3Jpc3QtcmVsYXRlZCBjb250ZW50LiBJdCBpcyB0aGUgcmVndWxhdG9yeSB3b3JrIHRoYXQgd2Ugd2lsbCBjb250aW51ZSB0byBwdXJzdWUgYXQgRXVyb3BlYW4gYW5kIGludGVybmF0aW9uYWwgbGV2ZWwsIHByZWNpc2VseSB0byBpbmNyZWFzZSBnb29kIHByYWN0aWNlcyBpbiB0aGUgZmllbGQuIE9uIE5vdmVtYmVyIDEyLCBpbiBQYXJpcywgdGhlIEludGVybmV0IEdvdmVybmFuY2UgRm9ydW0gYW5kIHRoZSBDaXZpY1RlY2ggRm9ydW0gd2lsbCBiZSBoZWxkIGF0IHRoZSBzYW1lIHRpbWUsIHdoaWNoIHdpbGwgYWxsb3cgcHJvZ3Jlc3Mgb24gdGhlc2UgdG9waWNzLiBJIHdhbnQgdG8gbWFrZSBGcmFuY2UgYSBtYWpvciBjZW50ZXIgb2YgYXR0cmFjdGl2ZW5lc3MsIGJ1dCBhbHNvIG9mIHJlZmxlY3Rpb24gYW5kIGNvbnN0cnVjdGlvbiBvZiB0aGVzZSBuZXcgcnVsZXMsIHRvIHRhbGsgYWJvdXQgY29tbW9uIGdvb2RzIGFuZCB0aGlzIG5ldyBncmFtbWFyIG9mIGdsb2JhbGl6YXRpb24uPFwvcD5cbjxwPkl0JiMzOTtzIGFsc28gYWJvdXQgb3VyIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uIGluIHRyYWRlLiBJbnRlcm5hdGlvbmFsIHRyYWRlIGlzIGRlZmluaXRlbHkgbm90IGZhaXIsIHRoZSBjb2xsZWN0aXZlIG9yZ2FuaXphdGlvbiB3ZSBoYXZlIHRvZGF5IGlzIG5vdCB0aGUgbW9zdCBlZmZlY3RpdmUsIGJ1dCByZXNwb25kaW5nIHdpdGggYWJzb2x1dGUgdW5pbGF0ZXJhbGlzbSBhbmQgdHJhZGUgd2FyIGlzIHRoZSBsZWFzdCBnb29kIGFuc3dlci4gVGhlIGFuc3dlciBtdXN0IGdvIHRocm91Z2ggYW4gaW4tZGVwdGggcmVmb3VuZGF0aW9uIG9mIG91ciBpbnRlcm5hdGlvbmFsIHdvcmxkIG9yZGVyLiBUaGF0IGlzIHdoeSBJIGludml0ZWQgdGhlIE9FQ0QgbGFzdCBNYXkgdG8gbGF1bmNoIGEgam9pbnQgd29ya2luZyBncm91cCBiZXR3ZWVuIHRoZSBVbml0ZWQgU3RhdGVzLCB0aGUgRXVyb3BlYW4gVW5pb24sIENoaW5hIGFuZCBKYXBhbi48XC9wPlxuPHA+V2UgbmVlZCB0byBjbGFyaWZ5IGV4aXN0aW5nIHJ1bGVzLCBpbXByb3ZlIGRpc3B1dGUgc2V0dGxlbWVudCwgYWRvcHQgbW9yZSBlZmZlY3RpdmUgaW50ZXJuYXRpb25hbCByZWd1bGF0aW9uLCBhbmQgaW5jb3Jwb3JhdGUgb3VyIG93biBzb2NpYWwgYW5kIGVudmlyb25tZW50YWwgcmVxdWlyZW1lbnRzIGludG8gb3VyIHRyYWRlIHBvbGljeS4gV2UgY2FuIG5vdCBoYXZlIGEgY29tbWVyY2lhbCBwb2xpY3kgdGhhdCwgaW4gYSB3YXksIHdvdWxkIGJlIHRob3VnaHQgb2YgYXBhcnQgZnJvbSBldmVyeXRoaW5nLjxcL3A+XG48cD5JIGludml0ZSB0aGUgcmVwcmVzZW50YXRpdmVzIG9mIHRoZXNlIHBvd2VycyBvbiB0aGUgc2lkZWxpbmVzIG9mIE5vdmVtYmVyIDExIGluIFBhcmlzIHRvIGhvbGQgYSBmaXJzdCBjb25mZXJlbmNlIG9uIHRoaXMgc3ViamVjdC4gSSB0aGluayB0aGF0IGluIGEgZmV3IG1vbnRocyB3ZSB3aWxsIGJlIGFibGUgdG8gYnVpbGQgYSBtb3JlIGVmZmVjdGl2ZSBhbmQgbW9yZSBlcXVpdGFibGUgc3lzdGVtLCBhbmQgdGhhdCB3ZSBjYW4gbm90IGdpdmUgd2F5LCBhZ2FpbiwgdG8gdGhlIGhlZ2Vtb255IG9mIHRoZSBvbmUgYW5kIHRoZSBkaXZpc2lvbiBvZiBhbGwuPFwvcD5cbjxwPkkgYWxzbyBiZWxpZXZlIHRoYXQgaW4gc29jaWFsIG1hdHRlcnMsIG91ciB3b3JsZCBvcmRlciBjYW4gYmUgcmVndWxhdGVkIG11Y2ggYmV0dGVyLiBBbmQgSSB0aGluayB0aGF0IHRoZSAxMDAgeWVhcnMgb2YgdGhlIElMTyBpbiAyMDE5IHNob3VsZCBhbGxvdyB1cyB0byBnbyBmdXJ0aGVyIGFuZCB0byBzZXQgYSBuZXcgYW1iaXRpb24uIFdoZXJldmVyIGdsb2JhbGl6YXRpb24gaXMgY3JpdGljaXplZCwgd2hhdCBpcyBjcml0aWNpemVkIGlzIHRoZXNlIHNvY2lhbCBhYmVycmF0aW9ucywgY3JpdGljaXplZCBieSB0aGUgbWlkZGxlIGFuZCBtaWRkbGUgY2xhc3NlcywgaW4gdGhlIFVuaXRlZCBLaW5nZG9tLCBpbiB0aGUgVW5pdGVkIFN0YXRlcywgYXMgaW4gb3VyIGNvdW50cnksIGl0IGlzIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyIGZvdW5kIHRoZXJlLCB0aGF0IHRoaXMgb3JkZXIgaGFzIGJ1aWx0IGluZXF1YWxpdGllcyB0aGF0IEkgbWVudGlvbmVkIGVhcmxpZXIsIHdoaWNoIGFyZSBubyBsb25nZXIgc3VzdGFpbmFibGUuPFwvcD5cbjxwPldlIG11c3QgdGhlcmVmb3JlIHRoaW5rIG9mIHRoZW0sIG5vdCBhZ2FpbnN0IGVhY2ggb3RoZXIsIGJ1dCBidWlsZCwgYXMgd2UgaGF2ZSBiZWVuIGFibGUgdG8gZG8gaW4gb3RoZXIgYXJlYXMsIHRoZSB3YXlzIGFuZCBtZWFucyBvZiBpbnRlcm5hdGlvbmFsIGNvb3BlcmF0aW9uLCB3aGljaCBjYW4gaGVscCB1cyB0byBkZWZpbmUgY29tbW9uIHN0YW5kYXJkcywgYW5kIHRoZXJlZm9yZSB0aGluaywgaGVyZSB0b28sIHRoZSBjb252ZXJnZW5jZSBvZiB0aG9zZSB3aG8gd2FudCBpdCwgdGhlIGNvb3BlcmF0aW9uIG9mIGFsbC4gVGhpcyBpcyB3aHkgSSB3YW50IHRvIG1ha2UgdGhlIGlzc3VlIG9mIGluZXF1YWxpdHkgdGhlIG1ham9yIHRvcGljIG9mIHRoZSBGcmVuY2ggY29tbWl0bWVudCBkdXJpbmcgdGhlIGNvbWluZyB5ZWFyLCBlc3BlY2lhbGx5IGF0IHRoZSBHNywgd2hpY2ggd2Ugd2lsbCBjaGFpciBpbiAyMDE5LjxcL3A+XG48cD5JdCBpcywgaW4gdG90YWwsIHRoaXMgcmVmb3VuZGF0aW9uIG9mIHRoZSB3b3JsZCBvcmRlciB3aGljaCBpcyBvdXIgY291cnNlLiBGcmFuY2UgYW5kIEV1cm9wZSBoYXZlIGEgaGlzdG9yaWMgcm9sZSB0byBwbGF5LiBJIGRvIG5vdCBiZWxpZXZlIHRoYXQgdGhlIGZ1dHVyZSBvZiB0aGUgd29ybGQgd2lsbCBiZSBidWlsdCBvbiBoZWdlbW9uaWVzLCBub3Igb24gdGhlb2NyYWNpZXMsIG5vciBvbiBuZXcgdG90YWxpdGFyaWFuaXNtcy4gQnV0IHRoYXQgc3VwcG9zZXMgYW4gaW1tZWRpYXRlIGp1bXAgb2Ygb3VyIGRlbW9jcmFjeS4gV2Ugd2lsbCBub3Qgd2luIHRoaXMgYmF0dGxlIHNpbXBseSBieSBzYXlpbmcgdGhhdCBkZW1vY3JhY2llcyBhcmUgYnkgZGVmaW5pdGlvbiByaWdodCwgd2hlbiB3ZSBldmVyeXdoZXJlIHNlZSB0aGUgZXh0cmVtZXMgZ29pbmcgdXAsIGFuZCB0aGlzIGludGVybmF0aW9uYWwgb3JkZXIgZmFsbGluZyBhcGFydC4gV2hlbiBJIHNwZWFrIG9mIGEgc3Ryb25nIG11bHRpbGF0ZXJhbGlzbSwgaXQgbWVhbnMgbG9va2luZyBhdCB3aGF0LCBmb3Igb3VyIGZlbGxvdyBjaXRpemVucywgYXJlIGtleSBjaGFsbGVuZ2VzLCBhbmQga25vd2luZyBob3cgdG8gcHJvdmlkZSBhbiBpbnRlcm5hdGlvbmFsIHJlc3BvbnNlLjxcL3A+XG48cD5JdCBpcyBpbmRlZWQgb24gdGhlIGZsYXdzIG9mIGdsb2JhbCBnb3Zlcm5hbmNlIGFuZCB0aGUgd2Vha2VuaW5nIG9mIGRlbW9jcmFjaWVzIHRoYXQgdGhlIGhhcmQtd29uIHBlYWNlIG9mIDE5MTggYnJva2UgZG93biBpbiB0aGUgMTkzMHMuIFRoYXQmIzM5O3Mgd2h5IEkgdG9vayB0aGUgaW5pdGlhdGl2ZSB0byBpbnZpdGUgdG8gUGFyaXMgZm9yIHRoZSBjZXJlbW9uaWVzIG9mIDExIE5vdmVtYmVyLCBzZXZlcmFsIGhlYWRzIG9mIHN0YXRlIGFuZCBnb3Zlcm5tZW50IHdpbGwgaW5hdWd1cmF0ZSB0aGUgZmlyc3QgUGFyaXMgUGVhY2UgRm9ydW0uIFRoaXMgRm9ydW0gYWltcyB0byBzdHJlbmd0aGVuIG91ciBjb2xsZWN0aXZlIGFjdGlvbiBieSBhc3NvY2lhdGluZyBTdGF0ZXMgYW5kIGludGVybmF0aW9uYWwgb3JnYW5pemF0aW9ucywgZmlyc3QgYW5kIGZvcmVtb3N0IHRoZSBVTiwgd2l0aCBjaXZpbCBzb2NpZXR5OiBOR09zLCBjb21wYW5pZXMsIHRyYWRlIHVuaW9ucywgZXhwZXJ0cywgaW50ZWxsZWN0dWFscywgcmVsaWdpb3VzIGdyb3Vwcy4gSW50ZXJuYXRpb25hbCBnb3Zlcm5hbmNlIG11c3QgYmUgY29uY3JldGVseSBleHByZXNzZWQsIGFuZCBldmVyeSBjaXRpemVuIGNhbiB0YWtlIHBhcnQuPFwvcD5cbjxwPlRoaXMgcmVmb3VuZGF0aW9uIHN1cHBvc2VzIHByZWNpc2VseSB0aGlzIHRpbWUgb2YgcmVmbGVjdGlvbiwgYW5kIHRoaXMgam9pbnQganVtcCwgaXQgaXMgdGhhdCwgSSBob3BlLCB0aGF0IHdlIHdpbGwgYmUgYWJsZSB0byBtYWtlIGxpdmUgdGhlIDExIE5vdmVtYmVyIG5leHQgaW4gUGFyaXMuIFRoaXMgcmVmb3VuZGF0aW9uIGFsc28gc3VwcG9zZXMgdGhhdCB3ZSByZWRlc2lnbiBvdXIgb3JnYW5pemF0aW9ucywgb3VyIGluc3RydW1lbnRzIG9mIGNvbnN1bHRhdGlvbiBhbmQgb3VyIGNvYWxpdGlvbnMuPFwvcD5cbjxwPkluIDIwMTksIEZyYW5jZSB3aWxsIHByZXNpZGUgb3ZlciB0aGUgRzcuIEkgaG9wZSB3ZSBjYW4gcmVuZXcgdGhlIGZvcm1hdHMgYW5kIGFtYml0aW9ucy4gV2UgbXVzdCwgYnkgcmVtYWluaW5nIGEgY29oZXJlbnQgZ3JvdXAgZHJpdmVuIGJ5IGNvbW1vbiBsZXZlbHMgb2YgZGV2ZWxvcG1lbnQgYW5kIGRlbW9jcmF0aWMgZGVtYW5kcywgZW5nYWdlIGluIGEgc3Ryb25nZXIsIGV2ZXItZ3Jvd2luZyBkaWFsb2d1ZSB3aXRoIENoaW5hIG9uIGNsaW1hdGUgYW5kIHRyYWRlLCB3aXRoIEluZGlhIG9uIGRpZ2l0YWwsIHdpdGggQWZyaWNhIG9uIHlvdXRoLiBJbiBhbnkgY2FzZSwgd2UgbXVzdCBub3QgcmVwcm9kdWNlIHRoaXMgdGhlYXRlciBvZiBzaGFkb3dzIGFuZCBkaXZpc2lvbnMgd2hpY2gsIEkgYmVsaWV2ZSwgaGFzIHdlYWtlbmVkIHVzIG1vcmUgdGhhbiBpdCBoYXMgbW92ZWQgdXMgZm9yd2FyZC4gQnkgdGhlIGVuZCBvZiB0aGUgeWVhciwgSSB3aWxsIHByb3Bvc2UgdG8gdGhlIG90aGVyIG1lbWJlciBjb3VudHJpZXMgYSByZWZvcm0sIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgVW5pdGVkIFN0YXRlcywgd2hpY2ggd2lsbCB0YWtlIG92ZXIgdGhlIHByZXNpZGVuY3kgb2YgdGhlIEc3IGluIDIwMjAuPFwvcD5cbjxwPkluIHRoZSB3aG9sZSB3b3JsZCwgaW4gQXNpYSwgaW4gTGF0aW4gQW1lcmljYSwgaW4gQWZyaWNhLCBpdCBpcyB0aHVzIG5ldyBiYWxhbmNlcywgbmV3IHJlbGF0aW9uc2hpcHMgdGhhdCB3ZSBtdXN0IHJldGhpbmsgb24gdGhlIGJhc2lzIG9mIHRoZSBpbi1kZXB0aCB3b3JrIHRoYXQgSSBhc2tlZCB5b3UuIFRodXMsIGluIE1hcmNoIGFuZCBNYXkgb2YgdGhpcyB5ZWFyLCBJIHByb3Bvc2VkIHRvIE5ldyBEZWxoaSBhbmQgdGhlbiB0byBTeWRuZXkgdG8gd29yayBvbiBhIG5ldyBzdHJhdGVnaWMgSW5kby1QYWNpZmljIGF4aXMsIHdoaWNoIHNob3VsZCBub3QgYmUgZGlyZWN0ZWQgYWdhaW5zdCBhbnlvbmUgYW5kIGNhbiBiZSBhbiBlc3NlbnRpYWwgY29udHJpYnV0aW9uIHRvIGludGVybmF0aW9uYWwgc3RhYmlsaXR5LiBXZSBhcmUgYW4gSW5kby1QYWNpZmljIFBvd2VyIHdpdGggb3ZlciBlaWdodCB0aG91c2FuZCBtZW4gaW4gdGhlIHJlZ2lvbiBhbmQgbW9yZSB0aGFuIGEgbWlsbGlvbiBvZiBvdXIgZmVsbG93IGNpdGl6ZW5zLiBXZSBtdXN0IGRyYXcgYWxsIHRoZSBjb25zZXF1ZW5jZXMgYW5kIEkgaG9wZSB0aGF0IHlvdSBjYW4gZGVjbGluZSB0aGlzIGF4aXMgb2YgdGhlIEluZGlhbiBPY2VhbiB0byB0aGUgUGFjaWZpYyBPY2VhbiwgdGhyb3VnaCBTb3V0aGVhc3QgQXNpYSwgcmVzb2x1dGVseSwgYW1iaXRpb3VzbHkgYW5kIGFjY3VyYXRlbHkuPFwvcD5cbjxwPldlIG11c3QgaW5kZWVkIGJ1aWxkIGEgbmV3IHJlbGF0aW9uc2hpcCB0byBBc2lhLiBJdCB3aWxsIGJlIGJ1aWx0IGFyb3VuZCBvdXIgZXNzZW50aWFsIGFuZCBmcnVpdGZ1bCBkaWFsb2d1ZSB3aXRoIENoaW5hLiBJIHNhaWQgdGhhdCBJIHdpbGwgZ28gdGhlcmUgZXZlcnkgeWVhciBhbmQgSSBsYWlkIHRoZSBncm91bmR3b3JrIGZvciB0aGlzIGRpYWxvZ3VlIGEgZmV3IG1vbnRocyBhZ28gaW4gWCYjMzk7aWFuLiBDaGluYSBoYXMgcG9zZWQgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBnZW9wb2xpdGljYWwgY29uY2VwdHMgb2YgcmVjZW50IGRlY2FkZXMgd2l0aCBpdHMgbmV3IHNpbGsgcm91dGVzLiBXZSBjYW4gbm90IHByZXRlbmQgdGhhdCBpdCBkaWQgbm90IGV4aXN0LiBXZSBtdXN0IG5vdCBnaXZlIGluIHRvIGFueSBndWlsdHkgb3Igc2hvcnQtdGVybSBmYXNjaW5hdGlvbjogaXQgaXMgYSB2aXNpb24gb2YgZ2xvYmFsaXphdGlvbiB3aGljaCBoYXMgdGhlIHN0YWJpbGl6aW5nIHZpcnR1ZXMgb2YgY2VydGFpbiByZWdpb25zIGJ1dCB3aGljaCBpcyBoZWdlbW9uaWMuIEFuZCBJIGhvcGUgdGhhdCBGcmFuY2UgY2FuIGJyaW5nIGEgdm9pY2Ugb2YgYmFsYW5jZSBhbmQgcHJlc2VydmF0aW9uIG9mIGJvdGggb3VyIGludGVyZXN0cyBhbmQgb3VyIHdvcmxkdmlldyBpbiB0aGlzIGNvbnN0cnVjdGl2ZSwgZGVtYW5kaW5nIGFuZCBjb25maWRlbnQgZGlhbG9ndWUgd2l0aCBDaGluYS48XC9wPlxuPHA+T3VyIHJlbGF0aW9uc2hpcCB3aXRoIEphcGFuIGlzIGFsc28gZXNzZW50aWFsLCB3aGljaCB3aWxsIHByZXNpZGUgdGhlIEcyMCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBHNywgYW5kIHdhcyBvdXIgbGFzdCBndWVzdCBvbiBKdWx5IDE0IHdpdGggU2luZ2Fwb3JlIGFuZCB3aG9zZSBjdXJyZW50IGN1bHR1cmFsIHNlYXNvbiBpbiBGcmFuY2Ugc2hvd3MgdGhlIGRlcHRoIG9mIG91ciB0aWVzLiBSZWxhdGlvbnMgd2l0aCBJbmRpYSwgdGhlIGxhcmdlc3QgZGVtb2NyYWN5IGluIHRoZSB3b3JsZCwgYW5kIHdpdGggQXVzdHJhbGlhLCBhcyBwYXJ0IG9mIHRoZSBJbmRvLVBhY2lmaWMgc3RyYXRlZ3kgYXJlIGVzc2VudGlhbC4gQnV0IGl0IGlzIG1vcmUgcGFydGljdWxhcmx5IHdpdGggQWZyaWNhIHRoYXQgd2UgbXVzdCByZWZvdW5kIHRoZXNlIGNvbnRlbXBvcmFyeSBjb2FsaXRpb25zIHRoYXQgSSBtZW50aW9uZWQgYXQgdGhlIG1vbWVudCBhbmQgb3VyIGFiaWxpdHkgcHJlY2lzZWx5IHRvIGluZmx1ZW5jZSB0aGUgY291cnNlIG9mIHRoZSB3b3JsZC48XC9wPlxuPHA+VGhlIGxlc3NvbiBmcm9tIEV0aGlvcGlhLCBMaWJlcmlhIGFuZCBTaWVycmEgTGVvbmUgaXMgdGhhdCB0aGVyZSBpcyBubyBpbmV2aXRhYmlsaXR5IGluIEFmcmljYW4gaW5zdGFiaWxpdHksIHdoZXRoZXIgaXQgaXMgaW50ZXJuYWwgY29uZmxpY3Qgb3IgbmVpZ2hib3JseSBjb25mbGljdC4gQWZyaWNhIGlzIG5vdCBvbmx5IG91ciBpbnRlcmxvY3V0b3IgdG8gdGFsayBhYm91dCBjcmlzZXMgdGhhdCBhZmZlY3QgaXQsIGl0IGlzIGZpcnN0IG9mIGFsbCBvdXIgYWxseSB0byBpbnZlbnQgdGhlIGdyZWF0IGJhbGFuY2VzIG9mIHRoZSB3b3JsZCBvZiB0b21vcnJvdy4gVGhhdCBpcyB3aHkgSSBhc2sgeW91IGFsbCB0byBiZSB0aGUgYWN0b3JzIG9mIHRoaXMgZGlhbG9ndWU6IHRoZSByZWxhdGlvbiB3aXRoIEFmcmljYSwgYW5kIGl0IGlzIGFuIGVzc2VudGlhbCBtZXNzYWdlIHRoYXQgSSB3YW50IHRvIG1ha2UgeW91IHBhc3MgaGVyZSwgaXMgbm90IHRoYXQgdGhlIGJ1c2luZXNzIG9mIG91ciBBbWJhc3NhZG9ycyBpbiBBZnJpY2EuIFdoZW4gSSBzcGVhayBvZiBBZnJpY2EsIEkgc3BlYWsgb2YgdGhlIHdob2xlIEFmcmljYW4gY29udGluZW50IGluIGl0cyBkaXZlcnNpdHkgYW5kIGl0cyB3ZWFsdGgsIGFzIEkgZXhwbGFpbmVkIGluIG15IHNwZWVjaCBpbiBPdWFnYWRvdWdvdSwgYnkgaW52aXRpbmcgYWxsIHRoZSB0YWxlbnRzIG9mIG91ciB0d28gY29udGluZW50cywgYW5kIGVzcGVjaWFsbHkgeW91bmcgcGVvcGxlIEV1cm9wZWFuIGFuZCBBZnJpY2FuIGNvdW50cmllcywgdG8gZGlzY3VzcyB0aGVpciBjb21tb24gZnV0dXJlLjxcL3A+XG48cD5UaGUgaW1wb3J0YW5jZSBvZiBBZnJpY2EgZm9yIEZyYW5jZSBpcyBub3Qgb25seSB0aGF0IG9mIHRoZSBuZWFyZXN0IG5laWdoYm9yIGJ1dCBhbHNvIHBhcnQgb2Ygb3VyIGlkZW50aXR5LCB0aHJvdWdoIG91ciBzaGFyZWQgaGlzdG9yeSwgdGhyb3VnaCB0aGUgZGlhc3BvcmFzIHRoYXQgSSBoYXZlIHBsYW5uZWQgdG8gbWVldCB0aGlzIGF1dHVtbiBhbmQgaXQgaXMgZm9yIHVzIHRoZSBuZWVkIHRvIGJldHRlciBpbnZvbHZlIGluIHRoZSByZW5ld2FsIG9mIG91ciByZWxhdGlvbnNoaXAgd2l0aCB0aGUgY29udGluZW50IHRoZXNlIGxhc3QuIEkgYWxzbyBjb3VudCBvbiB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBQcmVzaWRlbnRpYWwgQ291bmNpbCBmb3IgQWZyaWNhLCB3aG9tIEkgc2FsdXRlIGZvciB0aGVpciBjb21taXRtZW50IHRvIG1lLjxcL3A+XG48cD5XZSB3aWxsIG5ldmVyIHdpbiB0aGUgYmF0dGxlIHRoYXQgSSBldm9rZWQgb24gdGhlIGNvbW1vbnMsIHdlIHdpbGwgbmV2ZXIgc3VjY2VlZCBpbiBidWlsZGluZyB0aGVzZSBuZXcgY29vcGVyYXRpb25zIGFuZCBhbGxpYW5jZXMgZm9yIHRoZSBpbnRlcm5hdGlvbmFsIG9yZGVyIHRoYXQgaXMgb3VycyB3aXRob3V0IEFmcmljYS4gV2Ugd2lsbCBuZXZlciB3aW4gdGhlIGJhdHRsZSBmb3IgYmlvZGl2ZXJzaXR5IG9yIGNsaW1hdGUgY2hhbmdlIHdpdGhvdXQgdGhlIGFjdGl2ZSBwYXJ0aWNpcGF0aW9uIG9mIEFmcmljYW4gY291bnRyaWVzLiBJIHdpbGwgYmUgdHJhdmVsaW5nIG5leHQgc3ByaW5nIHRvIE5haXJvYmksIGF0IFVORVAgSGVhZHF1YXJ0ZXJzLCB0byBjb250aW51ZSB0aGUgbW9tZW50dW0gb2YgdGhlIE9uZSBQbGFuZXQgQWZyaWNhIFN1bW1pdCBpbiB0aGUgZmllbGQuPFwvcD5cbjxwPkFmcmljYSBpcyBhbHNvIHRoZSBjb250aW5lbnQgd2hlcmUgdGhlIGZ1dHVyZSBvZiBMYSBGcmFuY29waG9uaWUgYW5kLCB0byBhIGxhcmdlIGV4dGVudCwgdGhhdCBvZiBvdXIgbGFuZ3VhZ2UgYW5kIG91ciBjdWx0dXJhbCBpbmZsdWVuY2UgYXJlIGF0IHN0YWtlLiBUaGF0IGlzIHdoeSBJIGdhdmUgRnJhbmNlJiMzOTtzIHN1cHBvcnQgdG8gdGhlIGNhbmRpZGFjeSBlbmRvcnNlZCBieSB0aGUgQWZyaWNhbiBVbmlvbiBmb3IgdGhlIHBvc3Qgb2YgU2VjcmV0YXJ5IEdlbmVyYWwgb2YgdGhlIEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIG9mIExhIEZyYW5jb3Bob25pZSwgaW4gdmlldyBvZiB0aGUgWWVyZXZhbiBTdW1taXQgb24gMTIgT2N0b2JlciBuZXh0LjxcL3A+XG48cD5XZSBsYXVuY2hlZCBpbiBMYWdvcyBsYXN0IEp1bHksIHRoZSBzZWFzb24gb2YgQWZyaWNhbiBjdWx0dXJlcywgd2hpY2ggd2lsbCBiZSBvcmdhbml6ZWQgaW4gRnJhbmNlIGluIDIwMjAgYW5kIHdpbGwgYWxsb3csIGZvciB0aGUgZmlyc3QgdGltZSwgQWZyaWNhIHRvIHRlbGwgaXRzZWxmLCBpbiBGcmFuY2UsIGluIGFsbCBwbGFjZXMgb2YgY3VsdHVyZS4gTiYjMzk7R29uXHUwMGU5IEZBTEwgd2lsbCBiZSB0aGUgZ2VuZXJhbCBjb21taXNzaW9uZXIgb2YgdGhpcyBjdWx0dXJhbCBzZWFzb24uIEkgd2lsbCBhbHNvIHJlY2VpdmUgdGhpcyBhdXR1bW4gdGhlIHJlcG9ydCBvZiBCXHUwMGU5blx1MDBlOWRpY3RlIFNBVk9ZIGFuZCBGZWx3aW5lIFNBUlIgb24gdGhlIHRlbXBvcmFyeSBvciBkZWZpbml0aXZlIHJlc3RpdHV0aW9uIHRvIEFmcmljYSBvZiBpdHMgY3VsdHVyYWwgaGVyaXRhZ2UuIFdoYXQgd2UgYnVpbGQgYnkgZG9pbmcsIHRvdWNoIGJ5IHRvdWNoIGFuZCBJIGNhbiBub3QgZGV0YWlsIGFsbCB0aGUgYXhlcyBvZiB0aGlzIHBvbGljeSwgaXQgaXMgaW4gYSB3YXkgdGhlIGNvbnZlcnNpb24gb2YgYSBtdXR1YWwgbG9vay4gVGhlIG9uZSB0aGF0IHdpbGwgYWxsb3cgRnJhbmNlIHRvIGxvb2sgZGlmZmVyZW50bHkgYXQgQWZyaWNhIGJ1dCBhbHNvIHRvIEFmcmljYSB0byBzYXkgZGlmZmVyZW50bHksIHRvIHRlbGwgaXRzIG93biBwYXN0LCBpdHMgb3duIHByZXNlbnQgZGlmZmVyZW50bHkgdG8gdGhlIGZhY2Ugb2YgdGhlIHdvcmxkIGFuZCB0byBidWlsZCBhIG5ldyBpbWFnaW5hdGlvbiBiZXR3ZWVuIEZyYW5jZSBhbmQgRnJhbmNlLiBBZnJpY2FuIGNvbnRpbmVudC48XC9wPlxuPHA+SSBiZWxpZXZlIGl0IGlzIGFuIGVzc2VudGlhbCBwYXJ0IG9mIG91ciBkaXBsb21hY3kgYmVjYXVzZSBpdCBpcyBvbmUgb2YgdGhlIGtleXMgdG8gcmVzcG9uZGluZyB0byB0aGUgaW5zdGFiaWxpdHkgdGhhdCBleGlzdHMgaW4gbWFueSBwYXJ0cyBvZiBBZnJpY2EgYW5kIGl0IGlzIG9uZSBvZiB0aGUga2V5cyB0byByZWJhbGFuY2luZyBvdXIgcmVsYXRpb25zaGlwLiBvbiBhbGwgdGhlIHBsYW5zLiBBZnJpY2EgaXMgb2YgY291cnNlIGFsc28gb3VyIE1lZGl0ZXJyYW5lYW4gbmVpZ2hib3IuIFdlIGFyZSBhdHRlbnRpdmUgdG8gdGhlIHByaXZpbGVnZWQgcmVsYXRpb25zIHRoYXQgd2UgaGF2ZSB3aXRoIE1vcm9jY28sIEFsZ2VyaWEsIFR1bmlzaWEgd2hlcmUgSSBoYXZlIGFscmVhZHkgdmlzaXRlZC4gSSB3aWxsIGFsc28gaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gdmlzaXQgQ2Fpcm8gaW4gdGhlIGNvbWluZyBtb250aHMgYXMgRWd5cHQgdGFrZXMgb3ZlciB0aGUgcHJlc2lkZW5jeSBvZiB0aGUgQWZyaWNhbiBVbmlvbi4gQW5kIEkgYW5ub3VuY2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIgaW4gVHVuaXMgdGhlIG9yZ2FuaXphdGlvbiBvZiBhIFN1bW1pdCBvZiB0aGUgdHdvIHNob3Jlcywgd2hpY2ggd291bGQgYmUgYnVpbHQgb24gdGhlIGJhc2lzIG9mIHRoZSBjdXJyZW50IGRpYWxvZ3VlIDUgNSBidXQgaW4gYW4gZXZlbiBtb3JlIGluY2x1c2l2ZSB3YXksIHdpdGggYSBzdHJvbmcgY29udHJpYnV0aW9uIGZyb20gY2l2aWwgc29jaWV0eSAuIFRlbiB5ZWFycyBhZnRlciB0aGUgVW5pb24gZm9yIHRoZSBNZWRpdGVycmFuZWFuLCB3ZSBtdXN0IGZpbmQgdGhlIHRocmVhZCBvZiBhIGRpZmZlcmVudCBNZWRpdGVycmFuZWFuIHBvbGljeSBieSBkcmF3aW5nIGFsbCB0aGUgbGVzc29ucyBmcm9tIHdoYXQgd2UgaGF2ZSBzdWNjZWVkZWQgYW5kIHdoYXQgd2Ugc29tZXRpbWVzIGRpZCBub3QgbWFuYWdlIHRvIGRvIGJ5IGludm9sdmluZyBhbGwgdGhlIGNvbXBhbmllcyBidXQgcmVmb2N1c2luZyBhIG1vcmUgaW5jbHVzaXZlIE1lZGl0ZXJyYW5lYW4gcG9saWN5IHdoaWNoIGlzIGFsc28gdW5kb3VidGVkbHkgb25lIG9mIHRoZSBjb25kaXRpb25zIGZvciB0aGUgcmVjb25zb2xpZGF0aW9uIG9mIHRoZSBNYWdocmViLiBUbyB0YWxrIGFib3V0IHlvdXRoLCBtb2JpbGl0eSwgZW5lcmd5LCBhY2FkZW1pYyBleGNoYW5nZXMsIHRoaXMgcG9saWN5IGlzIGVzc2VudGlhbCBhbmQgd2Ugd2lsbCwgaW4gdGhlIGNvbWluZyBtb250aHMsIHByZXBhcmUgZm9yIHRoaXMgU3VtbWl0IHRvIGJlIGhlbGQgaW4gTWFyc2VpbGxlIGluIGVhcmx5IHN1bW1lciAyMDE5LjxcL3A+XG48cD5PdXIgdGhpcmQgZ29hbCwgbGFkaWVzIGFuZCBnZW50bGVtZW4sIGlzIHRvIHN0cmVuZ3RoZW4gdGhlIGluZmx1ZW5jZSBvZiBGcmFuY2UgaW4gdGhpcyBjb250ZXh0LiBJIG1lbnRpb25lZCBpdCBhdCB0aGUgYmVnaW5uaW5nIG9mIG15IHNwZWVjaCBieSB0YWxraW5nIGFib3V0IHRoZSBpbXBvcnRhbmNlIG9mIGVjb25vbWljIGRpcGxvbWFjeS4gT3VyIGNvdW50cnkgaGFzIGNlcnRhaW5seSBhdHRyYWN0ZWQgdGhpcyB5ZWFyIG1vcmUgaW52ZXN0bWVudCwgdG91cmlzbSwgdGFsZW50IGJ1dCB3ZSBzdGlsbCBoYXZlIG1hbnkgY2hhbGxlbmdlcy4gRnJhbmNlIGFsc28gd2lucyBpbiB0aGUgZmllbGQgb2Ygc3BvcnQgd2l0aCB0aGUgYXR0cmlidXRpb24gb2YgdGhlIE9seW1waWMgR2FtZXMgb2YgMjAyNCBvciB0aGUgdmljdG9yeSBvZiB0aGUgQmx1ZXMgd2hvIG1hZGUgdmlicmF0ZSBhbGwgdGhlIEZyZW5jaCBwZW9wbGUgYnkgYnJpbmdpbmcgYmFjayB0aGUgV29ybGQgQ3VwLiBBbmQgdGhpcyB2aWN0b3J5LCB0aGUgd2F5IGluIHdoaWNoIG91ciBwbGF5ZXJzIGFuZCBvdXIgZmVsbG93IGNpdGl6ZW5zIGhhdmUgY2VsZWJyYXRlZCBpdCwgb25seSBpbmNyZWFzZXMgZXhwZWN0YXRpb25zIGZvciBGcmFuY2UuPFwvcD5cbjxwPlRoaXMgaW5jcmVhc2VkIGF0dHJhY3RpdmVuZXNzIGluIGFsbCBhcmVhcywgeW91ciBlZmZvcnRzIGhhdmUgYWN0aXZlbHkgY29udHJpYnV0ZWQuIFRoZXkgd2VyZSBzdXBwb3J0ZWQgYnkgdGhlIHVucHJlY2VkZW50ZWQgZXZlbnRzIHRoYXQgd2Ugb3JnYW5pemVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIgaW4gVmVyc2FpbGxlcywgaW4gUGFyaXMsIG9yIGVsc2V3aGVyZSBvbiB0aGUgaW52ZXN0bWVudCB3aXRoIHRoZSBDaG9vc2UgRnJhbmNlIHN1bW1pdCwgb24gbmV3IHRlY2hub2xvZ2llcyB3aXRoIFZpdmF0ZWNoIG9yIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIHdpdGggdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgRnJlbmNoIHN0cmF0ZWd5IGJlZm9yZSBtYW55IGludGVybmF0aW9uYWwgc3BlY2lhbGlzdHMgYXQgdGhlIGVuZCBvZiB0aGUgd2ludGVyLiBJIGFtIHdhaXRpbmcgZm9yIHlvdXIgbW9iaWxpemF0aW9uIHJlZ2FyZGluZyB0aGUgZm9sbG93LXVwIG9mIHRoZXNlIG1lZXRpbmdzIHdoaWNoIHdlIHdpbGwgcmVwbGljYXRlIGVhY2ggeWVhciwgYW5kIHdoaWNoIHJlcXVpcmUgYSBudW1iZXIgb2YgY29uY3JldGUgYWN0aW9ucy48XC9wPlxuPHA+SW1wb3J0YW50IGFubm91bmNlbWVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gbWFkZSBvbiB0aGVzZSBvY2Nhc2lvbnMgYnkgc2V2ZXJhbCBsYXJnZSBmb3JlaWduIGdyb3Vwcywgc2hvd2luZyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgdGhlbSB3b3JrIGF0IGhvbWUsIGJ5IGRlZXBlbmluZyB3aXRoIHRoZW0gYSBkZW1hbmRpbmcgZGlhbG9ndWUgb24gdGhlIG1vc3QgY29tcGxleCBhc3BlY3RzOiBzZWN1cml0eSwgdGF4YXRpb24sIHRoZSBkaWdpdGFsIGVjb25vbXkuIEFuZCBpdCBpcyBpbiB0aGlzIHNhbWUgc3Bpcml0IHRoYXQgSSB3aXNoZWQgRnJhbmNlIHRvIGhvc3QgdGhlIE9seW1waWFkZXMgZGVzIG1cdTAwZTl0aWVycyBpbiAyMDIzIGFuZCBJIHdvdWxkIGxpa2UgYWxsIG91ciBlbWJhc3NpZXMgdG8gbW9iaWxpemUgdG8gc3VwcG9ydCBvdXIgY2FuZGlkYWN5LCBhcyBpdCBhbHNvIGNvbnRyaWJ1dGVzIHRvIHRoaXMgdml0YWwgZWNvbm9taWMgaW5mbHVlbmNlLjxcL3A+XG48cD5BdCB0aGUgc2FtZSB0aW1lLCB3ZSBtdXN0LCBtb3JlIHRoYW4gZXZlciBiZWZvcmUsIG1ha2Ugb3VyIGN1bHR1cmUgYW5kIG91ciBsYW5ndWFnZSBzaGluZS4gSSBoYXZlIGFscmVhZHkgbWVudGlvbmVkIGl0IHNldmVyYWwgdGltZXMuIFdlIGNhbWUgb3V0IG9mIGEgZGVmZW5zaXZlIHZpZXcgb2YgbGFuZ3VhZ2UgdG8gZmluYWxseSBwcm9tb3RlIGFuIG9mZmVuc2l2ZSBhbmQgdW5pbmhpYml0ZWQgcG9saWN5IG9mIHRoZSBwcm9tb3Rpb24gb2YgRnJlbmNoIGFuZCBtdWx0aWxpbmd1YWxpc20sIHdoaWNoIGdpdmVzIGZ1bGwgaW1wb3J0YW5jZSB0byByZWdpb25hbCBsYW5ndWFnZXMsIHdoaWNoIGZ1bGx5IHJlY29nbml6ZXMgdGhlIHBsYWNlIG9mIEFmcmljYW4gd3JpdGVycyBhbmQgdGhlIHdvcmxkIG92ZXIuIGluIGZyYW5jb3Bob25lIGxpdGVyYXJ5IGNyZWF0aW9uLjxcL3A+XG48cD5JIHdvdWxkIGxpa2UgdG8gdGhhbmsgbXkgcGVyc29uYWwgcmVwcmVzZW50YXRpdmUgZm9yIHRoZSBGcmFuY29waG9uaWUsIExlaWxhIFNMSU1BTkksIGZvciBoZXIgd29yayBpbiB0aGlzIGFyZWEuIFdlIGhhdmUga25vd24gZm9yIHllYXJzLCB0aGFua3MgdG8gb3VyIGNvb3BlcmF0aW9uIGFjdGlvbnMgaW4gdGhlIGZpZWxkLCB0aGF0IGEgcGFyYWRpZ20gc2hpZnQgd2FzIGVzc2VudGlhbC4gVGhpcyBpcyBhbHNvIHdoeSBJIGRlY2lkZWQgdG8gc3RhYmlsaXplLCBmb3IgdGhlIHNlY29uZCBjb25zZWN1dGl2ZSB5ZWFyLCB0aGUgYnVkZ2V0IG9mIG91ciBjdWx0dXJhbCBjb29wZXJhdGlvbiBpbiAyMDE5LjxcL3A+XG48cD5BbHJlYWR5LCB3ZSBoYXZlIGluY3JlYXNlZCBieSA1MCUgdGhlIG51bWJlciBvZiBob3VycyBvZiBGcmVuY2ggb2ZmZXJlZCB0byByZWZ1Z2VlcywgaW5jcmVhc2VkIGJ5IDIwJSB0aGUgbnVtYmVyIG9mIGJpbGluZ3VhbCBzY2hvb2xzIGFicm9hZCBsYWJlbGVkIEZyYW5jZSBFZHVjYXRpb24sIGJyb3VnaHQgdG9nZXRoZXIgYWxsIHRoZSBvcGVyYXRvcnMgY29uY2VybmVkIGluIGEgY29uc29ydGl1bSBjaGFyZ2VkIHRyYWluaW5nIGluIEZyZW5jaC1zcGVha2luZyBBZnJpY2EuIEkgYWxzbyB3ZWxjb21lIHRoZSBjcmVhdGlvbiBvZiBhIEZyYW5jb3Bob25lIENoYWlyIGF0IHRoZSBDb2xsXHUwMGU4Z2UgZGUgRnJhbmNlLiBUaGVzZSBhZHZhbmNlcyBhcmUgY29uc2lkZXJhYmxlLiBUaGV5IGFyZSBhbHNvIGZhdm9yZWQgYnkgdGhlIGR5bmFtaXNtIG9mIHRoZSBqb3VybmFsaXN0cyBvZiBGcmFuY2UgTWVkaWEgV29ybGQgYW5kIEkgaW50ZW5kIHRvIGNvbnRpbnVlIHdpdGggeW91IGFuZCBhc2sgeW91IHRvIHJlZG91YmxlIGVmZm9ydHMgaW4gdGhpcyBkaXJlY3Rpb24sIGluIGNvbm5lY3Rpb24gd2l0aCB0aGUgSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gb2YgdGhlIEZyYW5jb3Bob25pZSBhcyBpbiBjb25uZWN0aW9uIHdpdGggYWxsIG9wZXJhdG9ycywgaW5jbHVkaW5nIFRWNSBNb25kZSBhbmQgdGhlIEFnZW5jZSB1bml2ZXJzaXRhaXJlIGRlIGxhIEZyYW5jb3Bob25pZS48XC9wPlxuPHA+QWxsIHRoZXNlIGFjdGlvbnMgb2YgaW5mbHVlbmNlIHdpbGwgYmUgcG9zc2libGUgYW5kIGVmZmVjdGl2ZSBpbiBhZGRpdGlvbiB0byB0aGUgZWNvbm9taWMgZGlwbG9tYWN5IEkgbWVudGlvbmVkLCBvbmx5IGlmIHdlIHJlc3RvcmUgdG8gb3VyIHBvbGljeSBvZiBkZXZlbG9wbWVudCBhaWQgYSBuZXcgYW1iaXRpb24gYW5kIGJ5IG1ha2luZyBhIHJlYWwgcG9saWN5IG9mIGludmVzdG1lbnQgaW4gc29saWRhcml0eS4gRnJhbmNlLCBpbiBmYWN0LCBpbnNjcmliZXMgaXRzIHBvbGljeSBvZiBwYXJ0bmVyc2hpcCBhbmQgaW50ZXJuYXRpb25hbCBzb2xpZGFyaXR5IGluIHB1cnN1aXQgb2YgdGhlIFVuaXRlZCBOYXRpb25zIFN1c3RhaW5hYmxlIERldmVsb3BtZW50IEdvYWxzLiBUbyBtZWV0IHRoZXNlIG9iamVjdGl2ZXMsIEkgZGVjaWRlZCB0aGF0IG91ciBuZXcgcG9saWN5IHdvdWxkIGJlbmVmaXQgZnJvbSBpbmNyZWFzZWQgcmVzb3VyY2VzLCBhZnRlciBhIGxvbmcgcGVyaW9kIG9mIGRlY2xpbmUsIHRvIHJlYWNoIDAuNTUlIG9mIGdyb3NzIG5hdGlvbmFsIGluY29tZSBpbiAyMDIyLiBBbHJlYWR5LCB0byBndWFyYW50ZWUgdGhpcyByaXNlLCB0aGUgYnVkZ2V0IDIwMTkgd2lsbCBoYXZlIGEgYmlsbGlvbiBldXJvcyBpbiBhZGRpdGlvbmFsIGNvbW1pdG1lbnQgYXV0aG9yaXphdGlvbnMuPFwvcD5cbjxwPkJ1dCwgSSB0b2xkIHlvdSBhIHllYXIgYWdvLCBmaW5hbmNpYWwgbWVhbnMgYWxvbmUgYXJlIG5vdCBlbm91Z2guIFRoaXMgaXMgYSBuZXcgbWV0aG9kIHRoYXQgaXMgbmVlZGVkLCBib3RoIGluIEZyYW5jZSBhbmQgYW1vbmcgb3VyIHBhcnRuZXJzLiBBbHJlYWR5LCBhIG5ldyBnb3Zlcm5hbmNlIGhhcyBiZWVuIHB1dCBpbiBwbGFjZSB3aXRoIHRoZSBjcmVhdGlvbiBvZiBhIG5hdGlvbmFsIGRldmVsb3BtZW50IGNvdW5jaWwuIFRoZSBQcmltZSBNaW5pc3RlciByZWNlaXZlZCB0aGUgcmVwb3J0IGxhc3QgRnJpZGF5IHRoYXQgaGUgaGFkIGFza2VkIE1QIEhlcnZcdTAwZTkgQkVSVklMTEUgYW5kIEkgdGhhbmsgaGltIGZvciB0aGUgd29yayBoZSBoYXMgZG9uZSBhbmQgdGhlIHdpZGUgY29uc3VsdGF0aW9uLiBBcyBoZSBwcm9wb3NlcywgYSBuZXcgcGFydG5lcnNoaXAgZGltZW5zaW9uIHdpbGwgYmUgcHV0IGluIHBsYWNlIHRvIGJldHRlciBpbnZvbHZlIGNpdmlsIHNvY2lldHksIHlvdXRoLCBidXNpbmVzc2VzIGFuZCBkaWFzcG9yYXMuPFwvcD5cbjxwPlRoaXMgaW52b2x2ZXMgYWN0aW5nIGFzIGNsb3NlIHRvIHRoZSBmaWVsZCBhcyBwb3NzaWJsZS4gSW4gdGhpcyByZXNwZWN0LCBJIHN1cHBvcnQgdGhlIHByb3Bvc2FsIHRvIGVuaGFuY2UgdGhlIG1lYW5zIGF2YWlsYWJsZSBkaXJlY3RseSB0byBvdXIgRW1iYXNzaWVzIHRvIGVuY291cmFnZSBsb2NhbCBpbml0aWF0aXZlcy4gT24gZ2VuZGVyIGVxdWFsaXR5LCBvbiBzdXBwb3J0IGZvciBpbm5vdmF0aW9uLCB5b3UgbXVzdCBiZSB0aGUgZmlyc3QgYWN0b3JzIGFuZCB0aGUgZmlyc3QgcmVsYXlzIG9mIHRoZSBwb2xpdGljYWwgd2lsbCBJIGhhdmUgZXhwcmVzc2VkLiBJIGFsc28gc3VwcG9ydCB0aGUgaWRlYSBvZiBcdTIwMGJcdTIwMGJhIG5ldyBvcmllbnRhdGlvbiBhbmQgcHJvZ3JhbW1pbmcgbGF3IHRvIGVuZG9yc2Ugb3VyIGFpZCB0cmFqZWN0b3J5IGFuZCB0byByZW5ldyB0aGUgZnJhbWV3b3JrIG9mIG91ciBpbnRlcm5hdGlvbmFsIGNvb3BlcmF0aW9uIHBvbGljeS48XC9wPlxuPHA+QW4gYW1iaXRpb3VzIGV2YWx1YXRpb24gcG9saWN5IHdpbGwgYmUgaW1wbGVtZW50ZWQgdG8gbW9uaXRvciB0aGUgcmVzdWx0cyBvZiB0aGlzIGFpZCBpbiBmdWxsIHRyYW5zcGFyZW5jeSBhbmQgZGVlcCByZW9yZ2FuaXNhdGlvbnMgd2lsbCBiZSBjb25kdWN0ZWQgYXJvdW5kIHRoZSBBRkQuIEkgYWxzbyBhc2sgeW91IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIGEgaGlnaCBsZXZlbCBvZiBjb2hlcmVuY2UgYW5kIGNvbXBsZW1lbnRhcml0eSBiZXR3ZWVuIG91ciBuYXRpb25hbCBwcmlvcml0aWVzIGFuZCB0aGUgRXVyb3BlYW4gcHJvZ3JhbXMgb2YgY29vcGVyYXRpb24gYW5kIGRldmVsb3BtZW50LiBJdCBpcywgSSBiZWxpZXZlLCBhIGd1YXJhbnRlZSBvZiBjb2hlcmVuY2UgYW5kIGVmZmljaWVuY3kgZm9yIGFsbCBvZiB1cy48XC9wPlxuPHA+SSB3aWxsIGVuZCBteSByZW1hcmtzIHdpdGggdGhlIGZvdXJ0aCBheGlzIGRldmVsb3BlZCBsYXN0IHllYXIsIHByb2JhYmx5IGV2ZW4gbW9yZSByZWxldmFudCB0b2RheSwgd2hpY2ggaXMgb3VyIEV1cm9wZWFuIHByaW9yaXR5LiBJbiB0aGUgZW5kLCB0aHJvdWdob3V0IG15IHNwZWVjaCwgSSBzdHJlc3NlZCB0aGUgaW1wb3J0YW5jZSBvZiBFdXJvcGUsIHdoZXRoZXIgaXQgYmUgb3VyIHNlY3VyaXR5LCBvdXIgYWJpbGl0eSB0byByZWZvdW5kIHRoZSBpbnRlcm5hdGlvbmFsIG9yZGVyIG9yIHRvIHByb21vdGUgb3VyIG93biBpbnRlcmVzdC4gVG8gZG8gaXQgYWxvbmUgaXMgbW9zdCBvZiB0aGUgdGltZSwgaWYgbm90IGRvb21lZCwgbXVjaCBsZXNzIGVmZmVjdGl2ZS4gVG8gZG8gc28gd2l0aCBhIHN0cm9uZywgY29uc2lzdGVudCBFdXJvcGVhbiB2b2ljZSBpcywgSSBiZWxpZXZlLCBhIGd1YXJhbnRlZSBvZiBvdXIgc3VjY2Vzcy4gU2luY2UgbGFzdCB5ZWFyIGFuZCBvdXIgbGFzdCBleGNoYW5nZSwgd2UgaGF2ZSBwcm9wb3NlZCwgd2UgaGF2ZSBhZHZhbmNlZCwgd2UgaGF2ZSBhbHJlYWR5IGJ1aWx0IGFsbGlhbmNlcy4gRHVyaW5nIHRoZSBzcGVlY2ggYXQgdGhlIFNvcmJvbm5lIGxhc3QgU2VwdGVtYmVyLCBJIHByb3Bvc2VkIGEgY29tcHJlaGVuc2l2ZSwgYW1iaXRpb3VzIHZpc2lvbiBvZiBhIG1vcmUgc292ZXJlaWduLCB1bml0ZWQsIG1vcmUgZGVtb2NyYXRpYyBFdXJvcGUuIE9uIHRoaXMgcGF0aCwgd2UgaGF2ZSBhbHJlYWR5IGFjaGlldmVkIHNvbWUgZmlyc3QgcmVzdWx0cyBpbiB0ZXJtcyBvZiBkZWZlbnNlIC0gSSBtZW50aW9uZWQgdGhlbSBlYXJsaWVyIC0gaW4gdGVybXMgb2Ygc2Vjb25kbWVudCB3b3JrLCBpbiB0ZXJtcyBvZiBzb2NpYWwgYW5kIGZpc2NhbCBjb252ZXJnZW5jZSwgYW5kIHRyYWRlIHBvbGljeS4gV2Ugd2lsbCBoYXZlIGluIHRoZSBjb21pbmcgbW9udGhzIHRvIGNvbnRpbnVlIHdvcmsgb24gbWlncmF0aW9uIG9yIGRpZ2l0YWwuPFwvcD5cbjxwPk9uIHRoaXMgYmFzaXMgYW5kIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHBvbGl0aWNhbCBjb250ZXh0IHRoYXQgb3VyIGZpcnN0IEdlcm1hbiBwYXJ0bmVyIGhhZCB0byBrbm93LCBjYXJyaWVkIG91dCBhIHdvcmsgZm9yIHNldmVyYWwgbW9udGhzIHdoaWNoIGFsbG93ZWQgTWVzZWJlcmcgbGFzdCBKdW5lIHRvIHNlYWwgYSBoaXN0b3JpYyBzdGFnZSBiZXR3ZWVuIEZyYW5jZSBhbmQgR2VybWFueSBhbmQgdG8gYnVpbGQgYSBzdHJhdGVnaWMgZG9jdW1lbnQgd2hpY2gsIG9uIGFsbCB0aGVzZSBwb2ludHMsIGluY2x1ZGluZyB0aGF0IG9mIGEgZXVybyBhcmVhIGJ1ZGdldCwgc2V0cyB1cyBhIGNvbW1vbiBhZ2VuZGEgYnkgMjAyMSB3aGljaCB3aWxsLCBJIGJlbGlldmUsIGFsbG93IGZvciBhIGNvaGVyZW50IGRldmVsb3BtZW50IG9mIHRoaXMgdmlzaW9uIG9mIGEgRXVyb3BlIHNvdmVyZWlnbiwgdW5pdGVkIGFuZCB1bml0ZWQgdGhhdCBtdXN0IGJlIG91cnMuPFwvcD5cbjxwPkN1bHR1cmUgYW5kIGVkdWNhdGlvbjsgY2xpbWF0ZSBhbmQgZW5lcmd5OyBoZWFsdGggYW5kIG51dHJpdGlvbjsgZGlnaXRhbCBhbmQgaW5ub3ZhdGlvbjogaW4gZWFjaCBvZiB0aGVzZSBhcmVhcywgd2UgaGF2ZSBtb3ZlZCBmb3J3YXJkIGFuZCBwcm9wb3NlZCBhIGpvaW50IGluaXRpYXRpdmUuIFdlIGhhdmUgYWxzbyBhZG9wdGVkIGFuIGFtYml0aW91cyBtZXRob2QsIHRoYXQgb2YgdGFsa2luZyB0byBldmVyeW9uZSwgYWdhaW4gaW4gRXVyb3BlLiBJIHZpc2l0ZWQgaW4gb25lIHllYXIgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvdW50cmllcyBvZiB0aGUgRXVyb3BlYW4gVW5pb24uIEkgaGF2ZSwgb2YgY291cnNlLCBleGNoYW5nZWQgd2l0aCBhbGwsIGJpbGF0ZXJhbGx5LCBoZWFkcyBvZiBzdGF0ZSBhbmQgZ292ZXJubWVudC4gSSB3YW50ZWQgdG8gbWFyayB0aGUgZmlyc3Qgc3VtbWVyIHdpdGggYSB0b3VyIG9mIENlbnRyYWwgYW5kIEVhc3Rlcm4gRXVyb3BlIGFuZCBJIHdpbGwgYmUgaW4gRGVubWFyayB0b21vcnJvdywgd2hlcmUgbm8gc3RhdGUgdmlzaXQgaGFzIGJlZW4gaGVsZCBmb3IgdGhpcnR5LXNpeCB5ZWFycyBhbmQgdGhlbiBpbiBGaW5sYW5kLjxcL3A+XG48cD5XZSBoYXZlIHNvbWV0aW1lcyBmb3Jnb3R0ZW4gY2VydGFpbiBjb3VudHJpZXMgaW4gRXVyb3BlIG9uIHRoZSBwcmV0ZXh0IHRoYXQgd2Ugc2VlIHRoZW0gYXQgZXZlcnkgRXVyb3BlYW4gQ291bmNpbC4gQnV0IHRoZXJlIGlzIGFsc28gYSBuZWVkIHRvIGNvbnZpbmNlIGFuZCB1bmRlcnN0YW5kIHRoZSBwcm9mb3VuZCBkeW5hbWljcyBvZiBtYW55IEV1cm9wZWFuIHBlb3BsZXMgdG8gYnVpbGQgYSBzdHJvbmcgYmlsYXRlcmFsIHJlbGF0aW9uc2hpcCB0aGF0IHNlcnZlcyBvdXIgRXVyb3BlYW4gcG9saWN5LiBFdXJvcGUgaXMgbm90IGRvbmUgaW4gQnJ1c3NlbHMsIGluIFBhcmlzLCBvciBpbiBCZXJsaW46IGl0IGlzIGJ1aWx0IGluIHRoZSB0aXJlbGVzcyBkaWZmdXNpb24gb2Ygb3VyIGlkZWFzLCBvdXIgcHJvamVjdHMsIGluIGEgbm9uLWhlZ2Vtb25pYyB3YXkuPFwvcD5cbjxwPkkgdGVsbCB5b3UgdG9kYXkgd2l0aCBncmF2aXR5IGFuZCBodW1pbGl0eTogdGhpcyBFdXJvcGVhbiBmaWdodCBpcyBqdXN0IGJlZ2lubmluZy4gSXQgd2lsbCBiZSBsb25nLCBpdCB3aWxsIGJlIGRpZmZpY3VsdC4gSXQgd2lsbCBiZSBhdCB0aGUgY2VudGVyIG9mIHRoZSBhY3Rpb24gb2YgRnJhbmNlIHRocm91Z2hvdXQgbXkgbWFuZGF0ZSBhbmQgZXNwZWNpYWxseSBpbiB0aGUgeWVhciB0aGF0IG9wZW5zLCBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgRXVyb3BlYW4gY3Jpc2lzLjxcL3A+XG48cD5BY3Jvc3MgRXVyb3BlLCBkb3VidHMgYXJlIHRoZXJlLiBCcmV4aXQgaXMgYSBzeW1wdG9tLiBUaGUgcmlzZSBvZiBleHRyZW1lcyBpcyBhbG1vc3QgYSBnZW5lcmFsIHJ1bGUgYW5kIEZyYW5jZSBpcyBhbiBleGNlcHRpb24uIFRoZSBkaXZpc2lvbnMgYmV0d2VlbiB0aGUgbm9ydGggYW5kIHRoZSBzb3V0aCBlY29ub21pY2FsbHksIGJldHdlZW4gZWFzdCBhbmQgd2VzdCBvbiBtaWdyYXRvcnkgaXNzdWVzIHN0aWxsIGZyYWN0dXJlIGFsbCB0b28gb2Z0ZW4gb3VyIEV1cm9wZWFuIFVuaW9uIGFuZCB3ZSBhcmUgbm93IGxpdmluZyBhIHBvbGl0aWNhbCBjcmlzaXMgb24gbWlncmF0aW9uIHRoYXQgd2UgZmFjZSAuPFwvcD5cbjxwPlNvIHdoYXQgaXMgdGhlIGFuc3dlciB0byB0aGlzPyBEbyBub3QgZ2l2ZSB1cCBvbiB0aGUgYW1iaXRpb24gZXhwcmVzc2VkIGEgeWVhciBhZ28uIE5vdGhpbmcuIE9uIHRoZSBjb250cmFyeSwgdG8gYnJpbmcgbW9yZSBjbGFyaXR5IGFuZCBzb21lIGFuZ2xlcyB0aGF0IEkgd2FudCBoZXJlLCB0byBjb25jbHVkZSBteSBwb2ludCwgdG8gc2hhcmUgd2l0aCB5b3UuIEZpcnN0LCB3aGF0IEV1cm9wZSBhcmUgd2UgdGFsa2luZyBhYm91dD8gV2hlbiB3ZSBzcGVhayB0byBBZnJpY2EsIHdoZW4gd2Ugc3BlYWsgb2Ygb3Vyc2VsdmVzLCB3aGVuIHdlIHNwZWFrIG9mIGFsbCB0aGVzZSBncmVhdCBjaGFsbGVuZ2VzLCB0aGUgcGVyaW1ldGVyLCB0aGUgb3V0bGluZSBvZiB0aGlzIEV1cm9wZSBtdXN0IG5vdCBiZSB0aGUgc3ViamVjdCBvZiBhIGZvcm0gb2YgaW50ZWxsZWN0dWFsIGNvbWZvcnQgZWl0aGVyLiBUaGUgRXVyb3BlYW4gVW5pb24gaXMgbm90IHdyaXR0ZW4gYXQgYWxsIHRpbWVzIGFuZCB0aGUgY2hhbmdlcyBpbiBpdHMgcGVyaW1ldGVyIGFyZSBuZWl0aGVyIGEgdHJhZ2VkeSBub3IgbmVjZXNzYXJpbHkgYSBtb3ZlbWVudCB0aGF0IHdlIHNob3VsZCB1bmRlcmdvLiBUaGVyZSBpcyBvZiBjb3Vyc2UgQnJleGl0IGJ1dCBJIGRyYXcgY29sbGVjdGl2ZSBhdHRlbnRpb246IGlzIG5vdCB0aGVyZSBzb21ldGhpbmcgYWJzdXJkIGluIGEgRXVyb3BlYW4gVW5pb24gdGhhdCB0b2RheSB3aWxsIGRldm90ZSBhIGNvbG9zc2FsIGVuZXJneSB0byBkaXNjdXNzIEJyZXhpdD8gYW5kLCBhdCB0aGUgc2FtZSB0aW1lLCB3b3VsZCBsaWtlIHRvIGRpc2N1c3MgdGhlIHN0YXJ0IG9mIGFuIGFjY2Vzc2lvbiBuZWdvdGlhdGlvbiB3aXRoIEFsYmFuaWEgb3IgYW55IG90aGVyIGNvdW50cnkgaW4gdGhlIFdlc3Rlcm4gQmFsa2Fucz8gQWxsIG9mIHRoZXNlIGNvdW50cmllcyBoYXZlIHNvbWV0aGluZyB0byBkbyB3aXRoIG91ciBoaXN0b3J5IGFuZCBvdXIgc3RyYXRlZ3kgYnV0IGFyZSB3ZSBoZXJlLCBpbiB0aGlzIGluc2lkZXIgYW5kIGx1Y2lkIGNpcmNsZSwgY2FuIHdlIGJlIHNhdGlzZmllZCB3aXRoIHRoaXMgY291cnNlIG9mIGV2ZW50cz8gRG8gd2UgdGhpbmsgdGhpcyBpcyB0aGUgYmVzdCB3YXkgdG8gbWVldCBvdXIgY2hhbGxlbmdlcz8gRG8gd2UgdGhpbmsgdGhpbmdzIGFyZSBnb2luZyB0aGUgd2F5IHRoZXkgYXJlLCB3aGVuIGl0IGNvbWVzIHRvIHRoZSBwZXJpbWV0ZXIgb2YgRXVyb3BlLCB3aGF0IEV1cm9wZSBkbyB3ZSB3YW50PyBBYnNvbHV0ZWx5IG5vdC48XC9wPlxuPHA+U28gZm9yIEJyZXhpdCwgSSBob3BlIHRoYXQgdGhlIGFncmVlbWVudCB3aWxsIGJlIHJlYWNoZWQgYnkgdGhlIGVuZCBvZiB0aGUgeWVhciBieSBzZXR0aW5nIHRoZSBmcmFtZXdvcmsgZm9yIG91ciBmdXR1cmUgcmVsYXRpb25zLiBCdXQgSSByZXBlYXQsIEJyZXhpdCBpcyBhIHNvdmVyZWlnbiBjaG9pY2UgdGhhdCBtdXN0IGJlIHJlc3BlY3RlZCwgYnV0IGl0IGlzIGEgY2hvaWNlIHRoYXQgY2FuIG5vdCBiZSBtYWRlIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIEV1cm9wZWFuIFVuaW9uLiBJdCBpcyB0aGUgY2hvaWNlIG9mIHRoZSBCcml0aXNoIHBlb3BsZSBmb3IgaXRzZWxmLCBidXQgbm90IGZvciBvdGhlcnMsIGFuZCBGcmFuY2Ugd2lzaGVzIHRvIG1haW50YWluIGEgc3Ryb25nLCBwcml2aWxlZ2VkIHJlbGF0aW9uc2hpcCB3aXRoIExvbmRvbiwgYnV0IG5vdCBhdCB0aGUgY29zdCBvZiB0aGUgZGlzc29sdXRpb24gb2YgdGhlIEV1cm9wZWFuIFVuaW9uLiBBbmQgdGhhdCBpbnRlZ3JpdHkgaXMgZGVmZW5kZWQgYnkgdGhlIGNhcGl0YWwgb2Ygd2hpY2ggaXQgaXMgdGhlIGNhdXNlLCBpbiBpdHMgb3duIGNvdW50cnksIGlzIG9uZSB0aGluZywgYnV0IHdlIGhhdmUgdG8gZGVmZW5kIHRoZSBpbnRlZ3JpdHkgb2Ygb3VyIHZhbHVlcywgb3VyIGJhc2UgYW5kIHRoZSBFdXJvcGVhbiBVbmlvbi4gQW5kIHNvIHdlIHdpbGwgaGF2ZSBvbiB0aGlzIHBvaW50IGEgZGVtYW5kaW5nIGRpYWxvZ3VlLCBpbmRpc3BlbnNhYmxlLCBidXQgaXQgd2lsbCBiZSBuZWNlc3NhcnksIHdoYXRldmVyIGJlIHRvIHRoaW5rIHRoZSByZWxhdGlvbiBvZiB0aGUgRXVyb3BlYW4gVW5pb24gYWZ0ZXIgdGhlIEJyZXhpdCB3aXRoIExvbmRvbiwgaXQgaXMgaW5kaXNwZW5zYWJsZS4gQW5kIHRoZSB0aGlua2luZyBpcyBwcmVjaXNlbHkgdG8gZGVmaW5lIGF0IGxlYXN0IGEgc3RyYXRlZ2ljIHBhcnRuZXJzaGlwIHRvIGJ1aWxkLjxcL3A+XG48cD5UaGlzIGlzIHRoZSBzYW1lIHJlcXVpcmVtZW50IHRoYXQgSSB3YW50IGF0IG91ciBib3JkZXJzLCBJIGhhdmUgYWxyZWFkeSBtZW50aW9uZWQgdGhlIGNhc2Ugb2YgUnVzc2lhIGVhcmxpZXIsIHRoZSBmcmFtZXdvcmsgb2YgYSBFdXJvcGVhbiBzZWN1cml0eSBhbmQgZGVmZW5zZSBhcmNoaXRlY3R1cmUsIGJ1dCB3ZSBjYW4gbm90IHN1c3RhaW5hYmx5IGJ1aWxkIHRoZSBFdXJvcGUgd2l0aG91dCB0aGlua2luZyBhYm91dCBvdXIgcmVsYXRpb25zaGlwIHdpdGggUnVzc2lhIGFuZCBUdXJrZXkuIFRvIHRoaW5rIGl0IHdpdGhvdXQgY29tcGxhY2VuY3kgYW5kIHdpdGhvdXQgbmFpdmV0eS4gRG8gd2UgdGhpbmsgaGVyZSBhZ2FpbiwgaW4gYSBsdWNpZCBhbmQgc2luY2VyZSB3YXksIHRoYXQgd2UgY2FuIGNvbnRpbnVlIHRvIG5lZ290aWF0ZSBtZW1iZXJzaGlwIG9mIHRoZSBFdXJvcGVhbiBVbmlvbiBvZiBUdXJrZXksIHdoZW4gdGhlIGRhaWx5IHJlYWZmaXJtZWQgcHJvamVjdCBvZiB0aGUgVHVya2lzaCBQcmVzaWRlbnQgd2l0aCB3aG9tIEkgaGFkIGEgVW5wdWJsaXNoZWQgaW50ZW5zaXR5IG9mIGNvbnRhY3RzIGZvciBhIGxpdHRsZSBvdmVyIGEgeWVhciwgaXMgYSBwYW4tSXNsYW1pYyBwcm9qZWN0IHJlZ3VsYXJseSBwcmVzZW50ZWQgYXMgYW50aS1FdXJvcGVhbiwgd2hvc2UgcmVndWxhciBtZWFzdXJlcyBhcmUgcmF0aGVyIGFnYWluc3Qgb3VyIHByaW5jaXBsZXM/IEFic29sdXRlbHkgbm90LiBBbmQgaGVyZSB0b28gd2UgbXVzdCBnbyBvdXQgb2YgaHlwb2NyaXN5IHRvIGJ1aWxkIGEgc29sdXRpb24gc2VlbXMgdG8gbWUgbW9yZSBlZmZlY3RpdmUsIG1vcmUgY29uc2lzdGVudCBmb3IgdXMuIFNvIHdlIG5lZWQgdG8gYnVpbGQgYSBzdHJhdGVnaWMgcGFydG5lcnNoaXAgdGhhdCBpcyBub3QgRVUgbWVtYmVyc2hpcCwgYnV0IGEgc3RyYXRlZ2ljIHBhcnRuZXJzaGlwIHdpdGggUnVzc2lhIGFuZCBUdXJrZXksIGJlY2F1c2UgdGhleSBhcmUgdHdvIGltcG9ydGFudCBwb3dlcnMgZm9yIG91ciBjb2xsZWN0aXZlIHNlY3VyaXR5LCBiZWNhdXNlIFdlIG11c3QgbGluayB0aGVtIHRvIEV1cm9wZSBiZWNhdXNlIHRoZSBoaXN0b3J5IG9mIHRoZXNlIHBlb3BsZXMgaGFzIGJlZW4gd2l0aCBFdXJvcGUgYW5kIHRvZ2V0aGVyIHdlIG11c3QgYnVpbGQgb3VyIGZ1dHVyZS4gQW5kIHNvLCBvbiBhbGwgdGhlc2UgbGV2ZWxzLCB3ZSBuZWVkIGEgcmVsYXRpb25zaGlwIHRoYXQgd2UgaGF2ZSB0byByZWludmVudCwgb24gYSBkZW1hbmRpbmcgcGxhbmUsIGJ1dCB3aXRob3V0IHlpZWxkaW5nIHRvIHRoZSBzb3J0IG9mIGJ1cmVhdWNyYXRpYyBncm9waW5ncyB3aXRoIHdoaWNoIHdlIGhhdmUgYmVjb21lIGFjY3VzdG9tZWQgb24gdGhlc2Ugc3ViamVjdHMuPFwvcD5cbjxwPldlIGNhbWUgb3V0IG9mIHRoZSBjb2xkIHdhciBhbmQgUHJlc2lkZW50IEVSRE9HQU4mIzM5O3MgVHVya2V5IGlzIG5vdCBQcmVzaWRlbnQgS0VNQUwmIzM5O3MgVHVya2V5LiBUaGVzZSB0d28gcmVhbGl0aWVzIGFyZSB0aGVyZSBhbmQgd2UgbXVzdCBkcmF3IGFsbCB0aGUgY29uc2VxdWVuY2VzLjxcL3A+XG48cD5UaGVuIHdlIG11c3QgYXNzdW1lLCBhY2NlcHQsIGNhcnJ5IHRoZSBmYWN0IHRoYXQgRXVyb3BlIHdpbGwgYmUgYSBFdXJvcGUgb2Ygc2V2ZXJhbCBjaXJjbGVzLCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdGhlIGNhc2UgYW5kIHRoZXJlZm9yZSB3ZSBtdXN0IGFjY2VwdCB0aGF0IHRoZXJlIGlzIGEgRXVyb3BlIHdpZGUsIHBlcmhhcHMgd2lkZXIgdGhhbiB0aGUgRXVyb3BlYW4gVW5pb24sIHRoZSBDb3VuY2lsIG9mIEV1cm9wZSBiZWluZywgbW9yZW92ZXIsIHRoaXMgYnJvYWRlc3QgYmFzaXMsIGJhc2VkIG9uIG91ciBwcmluY2lwbGVzLCB3aGljaCBhcmUgc29tZXRpbWVzIGNhbGxlZCBpbnRvIHF1ZXN0aW9uIHdpdGhpbiB0aGUgVW5pb24gaXRzZWxmLiBCdXQgdGhlcmUgaXMgdGhlcmVmb3JlIHJvb20gZm9yIGEgYnJvYWQgRXVyb3BlLCBhIHBsYWNlIGZvciBhIGNvbW1vbiBtYXJrZXQgYW5kIGF0IHRoZSBoZWFydCBvZiBpdCB0aGUgcGxhY2UgZm9yIHN0cmVuZ3RoZW5lZCBjb29wZXJhdGlvbiBhbmQgc3Ryb25nZXIgaW50ZWdyYXRpb24uIEFuZCB0aGF0IG1lYW5zIGhhdmluZyBhIGxpdHRsZSBhdWRhY2l0eSBhbmQgYWdyZWVpbmcgdG8gcmV2aXNpdCB0YWJvb3Mgb24gYm90aCBzaWRlcywgdHJhbnNmZXIgdGFib29zIG9uIG9uZSBzaWRlIG9mIHRoZSBSaGluZSwgdHJlYXR5IGNoYW5nZSB0YWJvb3Mgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIFJoaW5lIC4gQW5kIG9uIHRoaXMgcG9pbnQsIEZyYW5jZSYjMzk7cyB2aXNpb24gdG9kYXksIHdoaWNoIHdlIHdpbGwgYmVhciBpbiB0aGUgY29udGV4dCBvZiB0aGUgY29taW5nIGRlYWRsaW5lcywgcHJlc3VwcG9zZXMgYSByZXZpc2lvbiBvZiB0aGUgdHJlYXRpZXMsIGJlIGl0IHRoZSByZWZvcm0gb2YgdGhlIEV1cm9wZWFuIFVuaW9uIG9yIG9mIHRoZSBldXJvIHpvbmUuIEkgd2lzaCBpdCBhbmQgSSBob3BlIHRoYXQgd2UgY2FuIGJ1aWxkIGl0IG9uIHRoZSBiYXNpcyBvZiB0aGUgb25nb2luZyBkZW1vY3JhdGljIGNvbnN1bHRhdGlvbnMsIG9uIHRoZSBiYXNpcyBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgZm9ydGhjb21pbmcgRXVyb3BlYW4gZWxlY3Rpb25zIGFuZCBpbnRlcmdvdmVybm1lbnRhbCB3b3JrIHRoYXQgd2lsbCBiZSByZXF1aXJlZCBpbiB0aGUgY29taW5nIHNlbWVzdGVycy4gQmVjYXVzZSB3ZSBuZWVkIHRvIHJldGhpbmsgb3VyIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uLCB3ZSBuZWVkIGEgbW9yZSBlZmZpY2llbnQgYW5kIHNtYWxsZXIgQ29tbWlzc2lvbiBhbmQgd2UgbmVlZCB0byByZXRoaW5rIHRoZSBzdHJhdGVnaWMgYXhlcyBvZiB0aGlzIEV1cm9wZS48XC9wPlxuPHA+RmluYWxseSwgd2Ugd2lsbCBiZSBhbmQgd2UgYXJlIHRvZGF5IGNvbGxlY3RpdmVseSB0ZXN0ZWQgYmVjYXVzZSB0aGlzIEV1cm9wZSwgSSBoYXZlIHNhaWQgbWFueSB0aW1lcyBhbmQgSSBoYXZlIGp1c3QgdGFsa2VkIGFib3V0IGl0cyBwZXJpbWV0ZXIsIGl0cyBleHRlbnQsIGhhcyB0byBmYWNlIGFsbCB0aGUgY29udGVtcG9yYXJ5IGNoYWxsZW5nZXMgb2Ygd2hpY2ggSSBhbSBzcGVhayBzaW5jZSBqdXN0IG5vdy4gQW5kIHdlIGhhdmUgb25seSBvbmUgY3JlZGlibGUgRXVyb3BlYW4gYW5zd2VyOiB0aGF0IG9mIG91ciBzdHJhdGVnaWMgYXV0b25vbXkuIFRoZSBxdWVzdGlvbiBpcyBub3Qgd2hldGhlciB3ZSBjYW4gY29udmluY2UgdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSwgaXQgaXMgYSBncmVhdCBwZW9wbGUgYW5kIGEgZ3JlYXQgY291bnRyeSwgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSBsb29rcyB0byB1cyBhcyBhIHBvd2VyIHdpdGggc3RyYXRlZ2ljIGF1dG9ub215LCB0aGlzIGlzIHRoZSByZWFsIHF1ZXN0aW9uIHRoYXQgaXMgcG9zZWQgZm9yIEV1cm9wZSB0b2RheS4gQW5kIGl0IGlzIGNsZWFyIHRoYXQgdG9kYXkgaXQgaXMgbm90IHRoZSBjYXNlLCB3ZSBtdXN0IGxvb2sgYXQgb3Vyc2VsdmVzIHdpdGggbHVjaWRpdHksIGV2ZW4gaWYgaXQgaXMgY3J1ZWwsIEkgZG8gbm90IGJlbGlldmUgdmVyeSBzaW5jZXJlbHkgdG9kYXkgdGhhdCBDaGluYSBvciB0aGUgVW5pdGVkIFN0YXRlcyBVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EgdGhpbmsgdGhhdCBFdXJvcGUgaXMgYSBwb3dlciB3aXRoIGEgc3RyYXRlZ2ljIGF1dG9ub215IGNvbXBhcmFibGUgdG8gdGhlaXJzLiBJIGRvIG5vdCBiZWxpZXZlIHRoYXQuPFwvcD5cbjxwPkFuZCBJIGJlbGlldmUgdGhhdCBpZiB3ZSBjYW4gbm90IGJ1aWxkIHRoYXQsIHdlIGFyZSBwcmVwYXJpbmcgYSBtb3Jvc2UgYWZ0ZXJtYXRoLiBBbmQgc28gaG93IHRvIGJ1aWxkIHRoaXMgdHJ1ZSBFdXJvcGVhbiBzb3ZlcmVpZ250eT8gV2VsbCwgYnkgcmVzcG9uZGluZyB0byB0aGUgY2hhbGxlbmdlcyBJIG1lbnRpb25lZCBlYXJsaWVyLCBieSBtYWtpbmcgRXVyb3BlIHRoZSBtb2RlbCBmb3IgdGhpcyBodW1hbmlzdCByZWZvdW5kYXRpb24gb2YgZ2xvYmFsaXphdGlvbi4gVGhpcyBpcyBvdXIgY2hhbGxlbmdlIGFuZCB0aGF0IGlzIGV4YWN0bHkgdGhlIGRlYmF0ZSB0aGF0IGlzIGJlaW5nIHB1dCB0b2RheSB0byB0aGUgRXVyb3BlYW4gcGVvcGxlIGluIHRoZSBjb250ZXh0IG9mIHRoZSBlbGVjdGlvbnMgdGhhdCBhcmUgY29taW5nLjxcL3A+XG48cD5UaGVyZSBpcyBjbGVhciBjaG9pY2Ugb24gdGhlIG9uZSBoYW5kLCBFdXJvcGUgaXMgbm90IGVmZmljaWVudCwgaXQgbm8gbG9uZ2VyIHJlc3BvbmRzIHRvIHRoZXNlIGNoYWxsZW5nZXMgb2YgZ2xvYmFsaXphdGlvbiwgaXQgaXMgbm90IHRvdGFsbHkgZmFsc2UuIEl0IGRvZXMgbm90IGhhdmUgc3RyYXRlZ2ljIGF1dG9ub215LCBzbyB5b3UgaGF2ZSB0byBkaXNhZ2dyZWdhdGUgaXQuPFwvcD5cbjxwPlRoZW4gdGhlIG1vc3Qgc29waGlzdGljYXRlZCB3aWxsIHNheSB0byB5b3U6IHdlIGFyZSB0byBkaXNpbnRlZ3JhdGUgaXQsIGV4Y2VwdCB3aGVuIGl0IGJyaW5ncyB1cyBzb21ldGhpbmcsIGJlY2F1c2UgSXRhbHkgaXMgYWdhaW5zdCBFdXJvcGUgd2hpY2ggaXMgbm90IHNvbGlkYXJpdHkgb24gdGhlIG1pZ3JhdG9yeSBsZXZlbCwgYnV0IGl0IGlzIGZvciBFdXJvcGUgU3RydWN0dXJhbCBGdW5kcyB3aGVuIEkgbGlzdGVuIHRvIGNlcnRhaW4gbWluaXN0ZXJzOyB0aGUgcHJlc2lkZW50IG9mIHRoZSBJdGFsaWFuIGNvdW5jaWwga25vd3MgdGhhdCwgaGUgaXMgb24gYSBtdWNoIG1vcmUgc3RydWN0dXJlZCBsaW5lLiBWaWt0b3IgT1JCQU4mIzM5O3MgSHVuZ2FyeSwgc2hlIGhhcyBuZXZlciBiZWVuIGFnYWluc3QgRXVyb3BlJiMzOTtzIHN0cnVjdHVyYWwgZnVuZHMsIHRoZSBjb21tb24gYWdyaWN1bHR1cmFsIHBvbGljeSwgYnV0IHNoZSBpcyBhZ2FpbnN0IEV1cm9wZSB3aGVuIGl0IGNvbWVzIHRvIGhvbGRpbmcgZ3JlYXQgc3BlZWNoZXMgYWJvdXQgQ2hyaXN0aWFuaXR5LiBBbmQgc28gdGhlcmUgaXMgYSBjbGVhciBwYXRoIG9mIEV1cm9wZWFuIG9wcG9ydHVuaXNtLCBidXQgb2YgdGhlIGNsYWltZWQgbmF0aW9uYWxpc20sIGRpc2ludGVncmF0ZSB0aGlzIGJ1cmVhdWNyYXRpYyBzdHJ1Y3R1cmUsIGl0IGJyaW5ncyB1cyBub3RoaW5nLCB3ZSBwcmV0ZW5kIHRvIGZvcmdldCB3aGF0IGl0IGJyaW5ncyB1cyBhbmQgYXNzdW1lIGEgY2xlYXIgbGluZS48XC9wPlxuPHA+T24gdGhlIG90aGVyIGhhbmQsIHdlIG5lZWQgdG8gYnJpbmcgYSBjbGVhciBsaW5lLCB0aGF0IG9mIGEgZGVzaXJlIGZvciBFdXJvcGVhbiBzb3ZlcmVpZ250eSwgaG93IGFuZCBob3cgY2FuIEV1cm9wZSBhbG9uZSBwcm92aWRlIGFuIGFuc3dlciB0byBtYW55IG9mIG91ciBjaGFsbGVuZ2VzPyBBbmQgSSB0aGluayB0aGF0JiMzOTtzIHRoZSBjYXNlLCBhbmQgSSB0aGluayB0aGF0JiMzOTtzIHBhcnRpY3VsYXJseSB0aGUgY2FzZSB3aXRoIHRoZSBjdXJyZW50IHBvbGl0aWNhbCBjcmlzaXMgaW4gRXVyb3BlLiBJIGFtIHRhbGtpbmcgYWJvdXQgYSBwb2xpdGljYWwgY3Jpc2lzLCBiZWNhdXNlIHRoZSB0b3BpY3Mgd2UgdGFsa2VkIGFib3V0IGFsbCBzdW1tZXIgb24gbWlncmF0aW9uIGFyZSBhYm92ZSBhbGwgYSBwb2xpdGljYWwgY3Jpc2lzLiBFdXJvcGUgaGFkIHRvIGVuZHVyZSBhIHJlYWwgbWlncmF0aW9uIGNyaXNpcyBpbiAyMDE1LCB3aGVuIG1pbGxpb25zIG9mIEFmZ2hhbnMgYW5kIFN5cmlhbnMgY2FtZSBiZWNhdXNlIG9mIHRoZSBjb25mbGljdHMuIEV1cm9wZSBoYWQgdG8gc3VmZmVyLCBhIGxpdHRsZSBtb3JlIHRoYW4gYSB5ZWFyIGFnbyBhIHJlYWwgbWlncmF0aW9uIGNyaXNpcyBmcm9tIExpYnlhIGJ1dCB0aGVzZSBmbG93cyBoYXZlIGJlZW4gZGl2aWRlZCBieSB0ZW4gaW4gcmVjZW50IHdlZWtzLCBpdCBpcyBub3QgYSBtaWdyYXRpb24gY3Jpc2lzLCBpdCBpcyBhIHBvbGl0aWNhbCBjcmlzaXMsIHRoYXQgb2YgdGhlIGNhcGFjaXR5IHByZWNpc2VseSB0byBhbnN3ZXIgdGhpcyBjaGFsbGVuZ2UuPFwvcD5cbjxwPk9uIHRoaXMgc3ViamVjdCwgd2UgaGF2ZSB0byBmYWNlIHRoZSBmYWN0cywgd2h5IGRvIHdlIGhhdmUgdGhpcyBFdXJvcGVhbiBhbmQgZXNwZWNpYWxseSBJdGFsaWFuIHBvbGl0aWNhbCBjcmlzaXM/IEJlY2F1c2UgdGhlcmUgd2FzIG5vIEV1cm9wZWFuIHNvbGlkYXJpdHkuIFdoeSBkaWQgd2UgaGF2ZSBhIHBvbGl0aWNhbCBjcmlzaXMgaW4gR3JlZWNlIGJlZm9yZT8gQmVjYXVzZSB0aGVyZSB3YXMgbm8gRXVyb3BlYW4gc29saWRhcml0eS4gVGhhdCYjMzk7cyB3aHkgSSBoYXZlIGFsd2F5cyBsaW5rZWQgRXVyb3BlYW4gc29saWRhcml0eSB3aXRoIGEgcmVhbCBwb2xpY3kgb2Ygc292ZXJlaWdudHkgYW5kIHRoZXJlZm9yZSB3aGF0IGhhcHBlbnMgaW4gSXRhbHksIHdlIHByb2R1Y2VkIGl0IHBvbGl0aWNhbGx5IGJ5IG91ciBsYWNrIG9mIHNvbGlkYXJpdHkuIERvZXMgdGhhdCBleGN1c2UgdGhlIHhlbm9waG9iaWMgZGlzY291cnNlLCB0aGUgZmFjaWxpdGllcz8gSSBkbyBub3QgYmVsaWV2ZSBpdCBhbmQgSSBiZWxpZXZlIHRoYXQgdGhlc2Ugc2FtZSB4ZW5vcGhvYmVzIGJyaW5nIG5vIHNvbHV0aW9uIHRvIHRoZSBldmlsIHRoZXkgZGVub3VuY2UuIEJlY2F1c2UsIHRoYXQgdGhleSBnbyB0byBzZWVrIHRoZSBzb2xpZGFyaXR5IG9mIHRob3NlIG9mIHdoaWNoIHRoZXkgd2FudCB0byBzZXBhcmF0ZSwgZ3JlYXQgZ29vZCBkb2VzIHRvIHRoZW0sIGl0IGRvZXMgbm90IHdvcmsgb2Z0ZW4sIGFuZCBiZXNpZGVzIGFsbCB0aG9zZSB3aG8gY2FycnkgYSBuYXRpb25hbGlzdCBvciB1bmlsYXRlcmFsIHZvaWNlIGdldCBhbG9uZyB2ZXJ5IHdlbGwgdG8gZGVub3VuY2UgdGhlIEV1cm9wZSwgcmFyZWx5IGFncmVlIHRvIGZpbmQgY29tbW9uIHNvbHV0aW9ucywgaW5jbHVkaW5nIGZvciB0aGVtc2VsdmVzLiBUaGUgYXhlcyB3ZSBhcmUgdGFsa2luZyBhYm91dCBicmluZyBubyBzb2x1dGlvbiwgbm9uZS48XC9wPlxuPHA+QW5kIHNvIG9uIHRoaXMgc3ViamVjdCwgSSBiZWxpZXZlIHRoYXQgRnJhbmNlLCB3aXRoIHRoZSBjb25zdHJ1Y3RpdmUgcGFydG5lcnMgYW5kIHRoZSBFdXJvcGVhbiBDb21taXNzaW9uLCBtdXN0IHB1dCBpbiBwbGFjZSwgY29udHJpYnV0ZSB0byBwdXQgaW4gcGxhY2UgYSBwZXJlbm5pYWwgZGV2aWNlLCByZXNwZWN0ZnVsIG9mIHRoZSBodW1hbml0YXJpYW4gcHJpbmNpcGxlcyBhbmQgdGhlIHNvbGlkYXJ5IGFuZCBlZmZlY3RpdmUgbGF3LiBXaGljaCBtZWFucyB0aGF0IHdlIG11c3Qgbm90IGFuZCBjYW4gbm90IGdldCBvdXQgb2YgdGhlIHJpZ2h0IHRvIGFzeWx1bSBhcyB3ZSBoYXZlIHRob3VnaHQuIEkgbGlzdGVuIGV2ZXJ5IGRheSBzcGVlY2hlcyB0aGF0IHNheSAmcXVvdDtkbyBub3QgdGFrZSBwZW9wbGUsIGRvIG5vdCBhY2NlcHQgdGhlbSwgaXQmIzM5O3Mgd2Vha25lc3MsIGdvb2Qgd2lsbCwmcXVvdDsgRnJhbmNlLCBhbmQgSSB3ZWxjb21lLCBpcyBvbmUgb2YgdGhlIGNvdW50cmllcyB0aGF0IGR1cmluZyB0aGUgcG9saXRpY2FsIGNyaXNpcyBvZiB0aGlzIHN1bW1lciBoYXMgd2VsY29tZWQgdGhlIG1vc3QgcmVmdWdlZXMsIDI1MCwgSSBpbnZpdGUgeW91IHRvIHJlbWVtYmVyIHRoZSBwcm9wb3J0aW9uIG9mIHRoZXNlIGZpZ3VyZXMsIGJlY2F1c2Ugb24gdGhlIGJhc2lzIG9mIHRoZSBmaXZlIE9GUFJBIG1pc3Npb25zIHRoYXQgd2Ugb3JnYW5pemVkLCB3ZSBpZGVudGlmaWVkIHRoZW0gYXMgdW5kZXIgdGhlIHJpZ2h0IHRvIGFzeWx1bS4gQnV0IHdobyBhcmUgdGhlIHBvbGl0aWNpYW5zLCBiYXNpY2FsbHkgcmVzcG9uc2libGUsIGx1Y2lkLCB3aG8gY2FuIGV4cGxhaW4gdG8gdXMgdGhhdCB3ZSBzaG91bGQgZ2l2ZSB1cCB0aGUgcmVzcGVjdCBvZiB0aGUgcmlnaHQgb2YgYXN5bHVtIGluIEZyYW5jZSBhbmQgaW4gRXVyb3BlPyBCdXQgdGhpcyByaWdodCBvZiBhc3lsdW0sIGl0IGlzIGluIG91ciBjb25zdGl0dXRpb24sIHdlIEZyZW5jaCwgaXQgaXMgaW4gYWxsIG91ciBFdXJvcGVhbiB0ZXh0cy4gVGhlIGtleSBzaW1wbHkgaXMgdG8gYWNjZXB0IHRoaXMgZGlmZmVyZW50aWF0aW9uLiBUaGVyZSBhcmUgdGhvc2Ugd2hvIGFyZSBlbnRpdGxlZCB0byBhc3lsdW0gdGhhdCBtdXN0IGJlIGFjY2VwdGVkIHVuY29uZGl0aW9uYWxseSBieSBoYXZpbmcgdGhlIHJpZ2h0IG9yZ2FuaXphdGlvbiwgd2l0aCB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgTWVkaXRlcnJhbmVhbiBhbmQgd2l0aCB0aGUgcmVzdCBvZiBBZnJpY2EgYW5kIHRoZXJlIGlzIHRoZW4gYSBtaWdyYXRpb24gcG9saWN5IHRvIGJ1aWxkIGF0IEV1cm9wZWFuIGxldmVsIHdpdGggQWZyaWNhIHRvIGF2b2lkLCByZWR1Y2UsIGNvbnRyb2wgbWlncmF0aW9uIGZsb3dzIGxpbmtlZCB0byBlY29ub21pYyBtaWdyYXRpb24gYW5kIG9yZ2FuaXplIGEgbXVjaCBtb3JlIGVmZmVjdGl2ZSByZXR1cm4gdG8gdGhlbS48XC9wPlxuPHA+VGhpcyBpcyB0aGUgdmVyeSBtZWFuaW5nIG9mIHRoZSBsYXcgdGhhdCB3aWxsIGJlIHByb211bGdhdGVkIGluIGEgZmV3IGRheXMgYW5kIHRoYXQgd2UgaGF2ZSB0YWtlbiBmb3IgRnJhbmNlLCBpdCBpcyB0aGUgdmVyeSBtZWFuaW5nIG9mIHRoZSBhY3Rpb24gdGhhdCB3ZSBjYXJyeSBpbiBFdXJvcGUsIGFuZCB0aGUgcGFydG5lcnNoaXAgdGhhdCB3ZSB3YW50IHRvIGJ1aWxkLCB3aXRoIHRoZSBhbGwgQWZyaWNhbiBzdGF0ZXMsIGFzIHdlIHN0YXJ0ZWQgdG8gZG8sIGluIEFiaWRqYW4sIGF0IHRoZSBlbmQgb2YgbGFzdCB5ZWFyLCBpbiB0aGUgZGlhbG9ndWUgYmV0d2VlbiB0aGUgRXVyb3BlYW4gVW5pb24gYW5kIHRoZSBBZnJpY2FuIFVuaW9uLCBpbiBQYXJpcywgYSB5ZWFyIGFnbyBmb3IgZGF5LCB3aXRoIHRoZSBBZnJpY2FuIFVuaW9uIGFuZCBtYW55IGNvdW50cmllcyBvZiBvcmlnaW4gYW5kIHRyYW5zaXQsIGFuZCB3aXRoIG1hbnkgb2Ygb3VyIHBhcnRuZXJzLCB0aGlzIGlzIHRoZSByaWdodCBhbnN3ZXIgdG8gdGhlIG1pZ3JhdGlvbiBjcmlzaXMuPFwvcD5cbjxwPkl0IGlzIHRoZXJlZm9yZSBhIGRlbWFuZGluZyBFdXJvcGVhbiBwb2xpY3kgdGhhdCByZXNwZWN0cyBvdXIgdmFsdWVzLCBidXQgd2hpY2gsIGJlY2F1c2Ugd2UgaGF2ZSBmb3VuZCB0aGUgY29tbW9uIHJ1bGVzIG9mIGJvcmRlciBwcm90ZWN0aW9uLCBhbmQgaW50ZXJuYWwgc29saWRhcml0eSwgd2lsbCBmaW5hbGx5IGJlIGVmZmVjdGl2ZS4gRnJhbmNlIGhhcyBhIG1pZ3JhdG9yeSBjaGFsbGVuZ2UsIHdlIGFyZSB0aGUgY291bnRyeSB0aGF0IHJlY2VpdmVkIGFsbW9zdCB0aGUgbW9zdCByZXF1ZXN0cyBsYXN0IHllYXIsIHRoZSBzZWNvbmQgY291bnRyeSBvZiBhc3lsdW0gYXBwbGljYXRpb25zLCBqdXN0IG92ZXIgMTAwLDAwMCwgYnV0IG5vbmUgYXJyaXZlZCBieSBzby1jYWxsZWQgcHJpbWFyeSByb2Fkcy4gSXQgaXMgdGhlIGluYWJpbGl0eSBvZiBFdXJvcGUgdG8gbWFuYWdlIHRoZSBtaWdyYXRvcnkgc3ViamVjdCB0aGF0IHdlIGhhdmUgaGFkIHNvIG1hbnkgYXN5bHVtIGFwcGxpY2F0aW9ucy4gQW5kIHNvIEkgaW52aXRlIGFsbCB0aG9zZSB3aG8gaG9sZCBzcGVlY2hlcyBvbiB0aGlzIHN1YmplY3QgdG8gbG9vayBhdCB0aGUgcmVhbGl0eSBvZiB0aGUgZmFjdHMuIElmIHdlIGhhdmUgYSBtb3JlIGVmZmljaWVudCBvcmdhbml6YXRpb24gYXQgdGhlIEV1cm9wZWFuIGxldmVsLCB0aGVuIHdlIGhhdmUgc29tZSBvZiB0aGUgYW5zd2VyIHRvIG91ciBvd24gY2hhbGxlbmdlcywgYW5kIHNvbWV0aW1lcyB0byBvdXIgb3duIGZlYXJzLjxcL3A+XG48cD5JdCBtdXN0IGJlIGJ1aWx0IGluIGEgc3VzdGFpbmFibGUgYW5kIGRlbWFuZGluZyB3YXkgd2l0aCBhbGwgdGhlIHBhcnRuZXJzIGludm9sdmVkLiBCdXQgbW9yZSBicm9hZGx5LCB5b3UgaGF2ZSB1bmRlcnN0b29kLCBvbiBlYWNoIG9mIHRoZXNlIHRvcGljcywgSSB3aWxsIHBsZWFkIGZvciBFdXJvcGUgdG8gYmUgdGhhdCBwb3dlciB3aGljaCwgYXMgSSBqdXN0IHNhaWQsIGZvciB0aGUgc3ViamVjdCBvZiBtaWdyYXRpb24sIGFuZCB3ZWxsLCB3aWxsIGJ1aWxkIHRoZSBzb2x1dGlvbnMgd2UgYmVsaWV2ZSBpbiBnbG9iYWxpemF0aW9uLiBBbiBlY29ub21pYyBhbmQgY29tbWVyY2lhbCBwb3dlciB0aHJvdWdoIGEgc3Ryb25nZXIgZXVybyBhcmVhLCBhIGRlZmVuc2Ugb2Ygb3VyIHN0cmF0ZWdpYyBhbmQgY29tbWVyY2lhbCBpbnRlcmVzdHMsIGEgZmluYW5jaWFsIGluZGVwZW5kZW5jZSB3aXRoIG1lY2hhbmlzbXMgdGhhdCB3ZSBtdXN0IHByb3Bvc2UsIGFuZCB0aGlzIGlzIHRoZSByZXF1ZXN0IHdlIG1hZGUgdG8gdGhlIENvbW1pc3Npb24sIHRvIGVzdGFibGlzaCB0aGUgZmluYW5jaWFsIGF1dG9ub215IG9mIEV1cm9wZSwgYW5kIGZpbmFsbHkgcHV0IGFuIGVuZCB0byB0aGUgZXh0cmF0ZXJyaXRvcmlhbGl0eSBvZiBjZXJ0YWluIGZpbmFuY2lhbCBhbmQgbW9uZXRhcnkgZGVjaXNpb25zLjxcL3A+XG48cD5BbiBlY29ub21pYyBhbmQgY29tbWVyY2lhbCBwb3dlciB0aGF0IHdpbGwgYnVpbGQgdGF4IGFuZCBzb2NpYWwgY29udmVyZ2VuY2Ugd2l0aGluIGl0LiBJIHdhbnQgYSBFdXJvcGUgdGhhdCBpcyBkaWdpdGFsIHBvd2VyLCBhbmQgYXJ0aWZpY2lhbCBpbnRlbGxpZ2VuY2UsIHRocm91Z2ggdGhlIGluaXRpYXRpdmVzIHdlIHN0YXJ0ZWQgdG8gdGFrZSwgYSBmdW5kIGZvciBicmVha3Rocm91Z2ggaW5ub3ZhdGlvbnMsIGEgcmVhbCBkaWdpdGFsIHNpbmdsZSBtYXJrZXQsIGEgdGF4YXRpb24ganVzdCBkaWdpdGFsIGFjdG9ycy4gQSBFdXJvcGUgb2YgZWNvbG9naWNhbCwgZm9vZCBhbmQgc2FuaXRhcnkgcG93ZXIsIHdoaWNoIGFsbG93cyBldmVyeXdoZXJlIGluIEV1cm9wZSB0byBndWFyYW50ZWUgdGhlIHNhbWUgcmlnaHRzIG9mIGFjY2VzcyB0byBhIGhlYWx0aHkgZm9vZCBhbmQgYSBoZWFsdGhpZXIgZW52aXJvbm1lbnQuPFwvcD5cbjxwPlRoaXMgdmlzaW9uLCB3ZSB3ZWFyIGl0OyB0byBsZWFkIGl0IGFsb25lIGFtb25nIG90aGVyIEV1cm9wZWFuIGFjdG9ycyB3aG8gZG8gbm90IGZvbGxvdyBpdCBpcyBpbXBvc3NpYmxlLCBpdCBpcyBhdCB0aGUgRXVyb3BlYW4gbGV2ZWwgdGhhdCB3ZSBtdXN0IGxlYWQsIGFuZCB0aGF0IHdlIHdpbGwgbGVhZCB0byB0aGUgZW5kIHRoZSBmaWdodCBmb3IgdGhlIGVuZCBvZiBnbHlwaG9zYXRlLCB0aGF0IEZyYW5jZSBoYXMgaW5pdGlhdGVkLCBJIHJlbWluZCB5b3UsIGFuZCB3aXRob3V0IEZyYW5jZSwgaXQgd2FzIGZpZnRlZW4geWVhcnMgb2YgYXV0aG9yaXphdGlvbiB0aGF0IHdlcmUgYWdhaW4gZ3JhbnRlZCB0byBnbHlwaG9zYXRlIHRocm91Z2hvdXQgRXVyb3BlLCBidXQgYWxzbyBmb3IgYSBzaW5nbGUgcHJpY2Ugb2YgY2FyYm9uLCBmb3IgYSByZWFsIGVuZXJneSBzb3ZlcmVpZ250eSwgZm9yIGEgcmVhbCBzdHJhdGVneSBvZiByZW5ld2FibGUuPFwvcD5cbjxwPkkgYmVsaWV2ZSBpbiB0aGlzIHZpc2lvbiBvZiBhIEV1cm9wZSB3aGVyZSBhdCB0aGUgdGltZSBvZiBjaG9pY2Ugd2hpY2ggaXMgb3VycywgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IGZvciBhIHByb2dyZXNzaXZlIGh1bWFuaXNtLCBpbiBFdXJvcGUsIEkgYmVsaWV2ZSB0aGF0IHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYSB3YXkgd2hpY2ggd2lsbCBtYWtlIGl0IHBvc3NpYmxlIGZ1bGx5IHBlcmNlaXZlIHRvIG91ciBmZWxsb3cgY2l0aXplbnMgdGhhdCBFdXJvcGUsIG9uIG1hbnkgaXNzdWVzIHRoYXQgd29ycnkgdGhlbSBpcyBub3QganVzdCBwYXJ0IG9mIHRoZSBhbnN3ZXIsIGJ1dCB0aGUgaGVhcnQgb2Ygb3VyIHN0cmF0ZWdpYyBhdXRvbm9teSwgdGhlIGhlYXJ0IG9mIHRoZSBhbnN3ZXIgd2UgY2FuIGJyaW5nIHRvIG91ciBwZW9wbGVzLCBhbmQgdmlzLVx1MDBlMC12aXMgb3VyIHBhcnRuZXJzLjxcL3A+XG48cD5XZSBtdXN0IHdyaXRlIGFuZCB0ZWxsIHRoZSBoaXN0b3J5IG9mIHRoZSBFdXJvcGUgd2Ugd2FudCwgZGVtb25zdHJhdGUgaXRzIGNvbmNyZXRlIHJlc3VsdHMsIHRvIGNvbnZpbmNlIG91ciBmZWxsb3cgY2l0aXplbnMgdGhhdCB0aGUgcm9hZCB0byBjb29wZXJhdGlvbiBpbiBFdXJvcGUsIGluIHRoZSB3b3JsZCwgaXMgdGhlIG9ubHkgb25lIHRoYXQgY2FuIGxlYWQgdG8gbXV0dWFsIHRydXN0IGluIHRoZSBpbnRlcmVzdCBvZiBGcmFuY2UuPFwvcD5cbjxwPkxhZGllcyBhbmQgR2VudGxlbWVuIEFtYmFzc2Fkb3JzLCBJIGhhdmUgcHJlc2VudGVkIHRvIHlvdSBvdXIgcHJpb3JpdGllcyBmb3IgdGhlIGNvbWluZyB5ZWFyIGFyb3VuZCB0aGVzZSBmb3VyIHBpbGxhcnMgdGhhdCBJIGRlZmluZWQgbGFzdCB5ZWFyLiBZb3Ugd2lsbCBpbXBsZW1lbnQgdGhlbSB1bmRlciB0aGUgbGVhZGVyc2hpcCBvZiB0aGUgTWluaXN0ZXIgb2YgRXVyb3BlIGFuZCBGb3JlaWduIEFmZmFpcnMgSmVhbi1ZdmVzIExFIERSSUFOLCB3aG9tIEkgdGhhbmsgYWdhaW4gZm9yIHRoZSB0aXJlbGVzcyB3b3JrIGhlIGlzIGRvaW5nLCBpbiBQYXJpcyBhbmQgYXJvdW5kIHRoZSB3b3JsZCwgZWZmZWN0aXZlbHkgc3VwcG9ydGVkIGJ5IE5hdGhhbGllIExPSVNFQVUgYW5kIEplYW4tQmFwdGlzdGUgTEVNT1lORSBhbmQgYnkgYWxsIHRoZSBhZ2VudHMgb2YgdGhlIFF1YWkgZCYjMzk7T3JzYXksIGluIHRoZSBzZXJ2aWNlIG9mIG91ciBjb3VudHJ5LiBJIHdpc2ggdG8gZXhwcmVzcyB0byB0aGVtIGFsbCwgZXhwcmVzcyB0byB5b3UgYWxsIG15IGdyYXRpdHVkZSBmb3IgdGhlIGRlZGljYXRpb24sIHRoZSBza2lsbHMsIHRoZSBpbnRlbGxpZ2VuY2UsIHRoZSBjb21taXRtZW50IGFuZCB0aGUgY291cmFnZS48XC9wPlxuPHA+T24gZWFjaCBvZiB0aGUgaXNzdWVzIEkgaGF2ZSBqdXN0IGRlc2NyaWJlZCwgdGhlIGJhdHRsZSBpcyBub3Qgd29uLCBhbmQgRnJhbmNlLCBzb21ldGltZXMsIHNlZW1zIHRvIGhhdmUgYSBzb2xpdGFyeSB2b2ljZSwgaW4gYW55IGNhc2UsIGl0IGlzIHdoYXQgc29tZSBkZW5vdW5jZSBvciB3b3VsZCBsaWtlIHRvIG1vY2suIEkgZG8gbm90IHRoaW5rIHRoaXMgdm9pY2UgaXMgc29saXRhcnksIEkgdGhpbmsgaXQgaXMgZXhwZWN0ZWQsIEkgdGhpbmsgaXQgaXMgZGVzaXJlZCwgYW5kIEkgYmVsaWV2ZSBpdCBpcyB0cnVlIHRvIHdoYXQgb3VyIHN0b3J5IGlzLCBJIHRoaW5rIGl0IG11c3QgYnJlYWsgdG9vIHdpdGggaGFiaXRzIG9yIGF1dG9tYXRpc21zLCBhbmQgdGhhdCBpdCBtdXN0IHNlZWsgZXZlcnl3aGVyZSB0aGlzIGRlbWFuZCB3aGljaCBpcyBpbXBvc2VkIG9uIHVzLjxcL3A+XG48cD5Gb3J0eSB5ZWFycyBhZ28sIGFsbW9zdCB0byB0aGUgZGF5LCBTT0xKRU5JVFNZTkUgd2FzIGdpdmluZyBIYXJ2YXJkIGEgdmVyeSBiaWcgc3BlZWNoIHRoYXQgd2FzIGNhbGxlZCBhZnRlciB0aGUgRGVjbGluZSBvZiBDb3VyYWdlLCBhbmQgaGUgd2FzIGFscmVhZHkgc2F5aW5nIGp1c3QgYWJvdXQgZXZlcnl0aGluZyBJJiMzOTt2ZSBqdXN0IGRlc2NyaWJlZCwgYWJvdXQgdGhlIGZyYWdpbGl0eSBvZiBXZXN0ZXJuIHdvcmxkIHRoYXQgaGUgaGFkIGRpc2NvdmVyZWQgeWV0IGFuZCB3aGljaCB3YXMgcGVyY2VpdmVkIGFzIHRoZSBwbGFjZSBvZiBhbGwgcHJvbWlzZXMuIFdoYXQgd2UgbmVlZCB0byBzdG9wIHRvZGF5IGlzIHByZWNpc2VseSB0aGUgZGVjbGluZSBvZiBjb3VyYWdlLjxcL3A+XG48cD5BbmQgc28gdG8gZmFjZSBpdCwgb3VyIHZvY2F0aW9uIGlzIGV2ZXJ5d2hlcmUsIGFuZCB0aGF0IGlzIHdoYXQgSSBleHBlY3QgZnJvbSB5b3UsIHRvIGJlIGEgbWVkaWF0aW5nIHBvd2VyLCBhIGRpcGxvbWF0aWMsIG1pbGl0YXJ5LCBjdWx0dXJhbCwgZWR1Y2F0aW9uYWwsIG5hdGlvbmFsIGFuZCBFdXJvcGVhbiBwb3dlciwgYW5kIHRvIGJlIGFsd2F5cyBtZWRpYXRvciwgbWVkaWF0b3IsIHRoYXQgbWVhbnMgdGhhdCBGcmFuY2UgbmV2ZXIgZ2l2ZXMgdXAgaGVyIHZvaWNlLCBidXQgdGhhdCBzaGUgYWx3YXlzIHNlZWtzIHRvIGJ1aWxkIGFsbGlhbmNlcyBvbiB0aGlzIGJhc2lzLCBpdCBpcyBub3QgYSBwb3dlciBvZiBjb21wcm9taXNlLCBpdCBpcyBub3QgYSBtZWRpYW4gcG93ZXIgaXQgaXMgYSBwb3dlciBvZiBtZWRpYXRpb24sIHRoZSBvbmUgdGhhdCBzZWVrcyBwcmVjaXNlbHkgdG8gYnVpbGQgdGhpcyBpbnRlcm5hdGlvbmFsIG9yZGVyIHdoaWNoIGFsb25lLCBJIGJlbGlldmUgdmVyeSBkZWVwbHksIHdpbGwgYWxsb3cgdXMgdG8gbWFrZSBhIGxpdHRsZSBtb3JlIGh1bWFuIGFuZCBodW1hbmlzdCwgdGhlIGdsb2JhbGl6YXRpb24gdGhhdCBpcyBvdXJzLjxcL3A+XG48cD5JIGtub3cgSSBjYW4gY291bnQgb24geW91LCBiZWNhdXNlIHlvdXIgZGFpbHkgY29tbWl0bWVudCB0byBvdXIgY291bnRyeSBpcyB0aGUgRE5BIG9mIHlvdXIgYnVzaW5lc3MgYW5kIHlvdXIgcHJpZGUuIEkgdGhhbmsgeW91IGZvciB0aGF0LjxcL3A+XG48cD48YSBocmVmPVwiaHR0cDpcL1wvd3d3LmVseXNlZS5mclwvYXNzZXRzXC9VcGxvYWRzXC8yMDE4LTA4LTI3LTE3LjMxLjguanBnXCI+PGltZyBjbGFzcz1cImMzXCIgc3JjPVwiZWx5c2VlXC9pbWFnZXNcL2ljb19zbWFsbF9wZGYucG5nXCIgYWx0PVwiRmljaGllciBQREYgKDE4MCBLbyk6XCJcLz4gMjAxOCAwOCAyNyAxNy4zMS44PFwvYT48XC9wPlxuPHA+RURJVE9SJ1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBhY2NlcHQgb3VyIGFwb2xvZ2llcyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kXC9vciBzZW50ZW5jZSBzdHJ1Y3R1cmUgaXMgbm90IGJlIHBlcmZlY3QuPFwvcD4iLCJpbm5lckNvbnRlbnQiOlsiTUlMIE9TSSBUcmFuc2xhdGlvbi4gR292ZXJubWVudCBvZiB0aGUgUmVwdWJsaWMgb2YgRnJhbmNlIHN0YXRlbWVudHMgZnJvbSBFbmdsaXNoIHRvIEZyZW5jaCAtIFBvc3RlZCBvbiBBdWd1c3QgMjcsIDIwMTg8cD5EZWFyIFByZXNpZGVudHMsPFwvcD5cbjxwPlByaW1lIE1pbmlzdGVyLDxcL3A+XG48cD5MYWRpZXMgYW5kIGdlbnRsZW1lbiw8XC9wPlxuPHA+TGFkaWVzIGFuZCBnZW50bGVtZW4sPFwvcD5cbjxwPkxhZGllcyBhbmQgR2VudGxlbWVuLCBBbWJhc3NhZG9ycyw8XC9wPlxuPHA+TGFkaWVzIGFuZCBnZW50bGVtZW4sPFwvcD5cbjxwPkkgYW0gdmVyeSBoYXBweSB0byBtZWV0IHlvdSB0b2RheSB0byBvcGVuIHRoaXMgQW1iYXNzYWRvcnMgYW5kIEFtYmFzc2Fkb3JzIENvbmZlcmVuY2UuIEhhcHB5IGJlY2F1c2UgaXQgaXMgYWx3YXlzIHRoZSB1bmlxdWUgb3Bwb3J0dW5pdHkgdG8gc2hhcmUgc29tZSBjb252aWN0aW9ucyBhbmQgYSByZWFkaW5nIG9mIHRoZSB3b3JsZCBhcyBpdCBnb2VzLCBpbiB3aGljaCBldmVyeSBkYXkgRnJhbmNlIGFjdHMsIGlzIGV4cGVjdGVkLCBjYXJyaWVzIGhpcyB2b2ljZS48XC9wPlxuPHA+SW4gYSBmZXcgZGF5cywgeW91IHdpbGwgam9pbiB5b3VyIHRlYW1zIGluIHRoZSBmaWVsZCBhbmQgeW91IHdpbGwgY2Fycnkgd2l0aCBleGlnZW5jeSwgZGV0ZXJtaW5hdGlvbiwgYSBncmVhdCByZXNwb25zaWJpbGl0eS48XC9wPlxuPHA+WW91ciBmaXJzdCByZXNwb25zaWJpbGl0eSB3aWxsIGJlIHRvIHJlcHJlc2VudCBvdXIgY291bnRyeSwgb3VyIGhpc3RvcnksIG91ciByZXB1YmxpY2FuIGlkZWFscywgb3VyIG1ldHJvcG9saXMgYW5kIG92ZXJzZWFzIGdlb2dyYXBoaWVzLCBvdXIgaW50ZXJlc3RzLiBBbmQgYnkgcmVwcmVzZW50aW5nIEZyYW5jZSB5b3UgcmVwcmVzZW50IGhpc3RvcnksIHN0cmVuZ3RoLCB0aGUgcm9sZSBvZiBvdXIgcGVvcGxlIGluIHRoZSBjb25jZXJ0IG9mIG5hdGlvbnMgYW5kIGhhdmUgdG8gbGVhZCBhIGRpcGxvbWFjeSB0aGF0IEkgd2FudCByZWxpYWJsZSBhbmQgaW5ub3ZhdGl2ZS48XC9wPlxuPHA+WW91ciBzZWNvbmQgcmVzcG9uc2liaWxpdHksIHdpdGggeW91ciB0ZWFtLCB3aXRoIHRoZSBzdXBwb3J0IG9mIGFsbCB0aGUgcmVsYXlzIHlvdSBoYXZlIG9uIHNpdGUsIHdpbGwgYmUgdG8gaW1wbGVtZW50IGFuIGFtYml0aW91cyBwb2xpY3kgZm9yIG91ciBjb3VudHJ5LiBUaGlzIGFtYml0aW9uLCByZXN0IGFzc3VyZWQgdGhhdCBpdCB3aWxsIHJlc3VsdCBpbiBhIHBhY2Ugb2YgcmVmb3JtIGluIEZyYW5jZSB0aGF0IHdpbGwgbm90IGNoYW5nZSBwYWNlLCBxdWl0ZSB0aGUgY29udHJhcnkuIFRoZSBQcmltZSBNaW5pc3RlciB3aWxsIGdpdmUgeW91IGRpcmVjdGlvbnMuIFNldmVyYWwgbWluaXN0ZXJzIHdpbGwgYWxzbyBoYXZlIHRvIHNwZWFrIG9uIHRoaXMgcG9pbnQuIFVuZGVyIHRoZSBsZWFkZXJzaGlwIG9mIHlvdXIgTWluaXN0ZXIgSmVhbi1ZdmVzIExlIERSSUFOLCB3aG9tIEkgd291bGQgbGlrZSB0byB0aGFuayBmb3IgaGlzIGNvbnN0YW50IGludm9sdmVtZW50LCB5b3Ugd2lsbCBoZWxwIHVzIHRvIHN1cHBvcnQgdGhlc2UgcmVmb3JtcyBpbnRlcm5hdGlvbmFsbHkuPFwvcD5cbjxwPkluZGVlZCwgeW91IGFyZSBpbiBteSBvcGluaW9uIHN0YWtlaG9sZGVycyBpbiB0aGUgc3RyYXRlZ3kgdGhhdCBJIGFza2VkIHRoZSBnb3Zlcm5tZW50IHRvIGltcGxlbWVudCBmb3IgdGhlIGNvdW50cnkuIEZpcnN0LCBieSBmdWxseSBpbnZvbHZpbmcgb3VyIEZyZW5jaCBjb21tdW5pdGllcyBhYnJvYWQuIFRoZXkgYXJlIGEgd2VhbHRoLCBhIHN0cmVuZ3RoLiBPdXIgcmVmb3JtcyBtdXN0IGJlIGV4cGxhaW5lZCB0byB0aGVtIGFuZCB0aGV5IG11c3QgYWxzbyBiZSBicm91Z2h0IGJ5IHRoZW0uIEZyZW5jaCBwZW9wbGUgYW5kIEZyZW5jaCBwZW9wbGUgZnJvbSBhYnJvYWQgYXJlIGFuIGFzc2V0IGZvciBvdXIgY291bnRyeS4gVGhleSBtdXN0IHBhcnRpY2lwYXRlIGZ1bGx5IGluIHRoaXMgbmV3IGluZmx1ZW5jZSBvZiBGcmFuY2UuPFwvcD5cbjxwPlRoYXQgaXMgd2h5IEkgd2FudGVkIGFuIGluLWRlcHRoIHJlZmxlY3Rpb24gb24gRnJlbmNoIGVkdWNhdGlvbiBhYnJvYWQsIHdoaWNoLCBvbiB0aGUgYmFzaXMgb2YgdGhlIHJlcG9ydCBJIGFza2VkIHRoZSBnb3Zlcm5tZW50LCB3aWxsIGxlYWQgdG8gdGhlIGFubm91bmNlbWVudCBvZiBhIHJlZm9ybSB0aGlzIGF1dHVtbiAuIFRoaXMgaXMgYWxzbyB3aHkgSSB3YW50IHRvIGdvIHRocm91Z2ggdGhlIHNpbXBsaWZpY2F0aW9ucyBleHBlY3RlZCBieSBvdXIgZmVsbG93IGNpdGl6ZW5zLCBpbiB0ZXJtcyBvZiBhZG1pbmlzdHJhdGl2ZSBwcm9jZWR1cmVzIGFuZCBvbmxpbmUgdm90aW5nLjxcL3A+XG48cD5UaGVuIHlvdSBjb250cmlidXRlIHRvIHRoZSBjb21wZXRpdGl2ZW5lc3Mgb2YgRnJhbmNlLiBZb3UgbmVlZCB0byBleHBsYWluIHRvIGdvdmVybm1lbnRzLCBlY29ub21pYyBhY3RvcnMgaW4gdGhlIGNvdW50cmllcyB3aGVyZSB5b3UgYXJlLCB0aGUgY29uc2lzdGVuY3kgYW5kIGJyZWFkdGggb2Ygb3VyIHRyYW5zZm9ybWF0aW9uIGFnZW5kYS4gT3VyIGF0dHJhY3RpdmVuZXNzIGlzIGltcHJvdmluZywgYnV0IHdlIG5lZWQgdG8gYmUgbXVjaCBtb3JlIGludm9sdmVkIGluIG91ciBleHBvcnRzLiBZb3VyIG1vYmlsaXphdGlvbiBmb3IgZWNvbm9taWMgZGlwbG9tYWN5IGlzIGFuIGltcG9ydGFudCBwYXJ0IG9mIHRoaXMgc3RyYXRlZ3kuIEluIHBhcnRpY3VsYXIsIHdlIG5lZWQgdG8gZm9jdXMgb3VyIGNvbGxlY3RpdmUgYWN0aW9uIG9uIGFuIGV4cG9ydCBzdHJhdGVneSBmb3IgbWVkaXVtLXNpemVkIGNvbXBhbmllcyBzdWNoIGFzIHNtYWxsIGFuZCBtZWRpdW0tc2l6ZWQgY29tcGFuaWVzLCB3aGljaCBhbG9uZSB3aWxsIHJlZHVjZSBvdXIgdHJhZGUgZGVmaWNpdC48XC9wPlxuPHA+QnV0IEkgZXhwZWN0IG1vcmUgZnJvbSB5b3UuIEZyb20gT3VhZ2Fkb3Vnb3UgdG8gWGkmIzM5O2FuLCBmcm9tIFN5ZG5leSB0byBOZXcgWW9yayBvciB0aGUgU29yYm9ubmUsIEkgaGF2ZSBkdXJpbmcgdGhlIHllYXIgdGhhdCBlbmRzLCB0aHJvdWdoIHNldmVyYWwgc3BlZWNoZXMsIHJlbmV3IG91ciBnZW9ncmFwaGljYWwgb3Igc3RyYXRlZ2ljIGFwcHJvYWNoZXMuIFRoZXNlIG11c3Qgbm93IGJlIGJyb2tlbiBkb3duIHByZWNpc2VseS4gVGhpcyBpbnZvbHZlcyBjaG9vc2luZyBjbGVhciBhbmQgdGhlcmVmb3JlIGxpbWl0ZWQgb2JqZWN0aXZlcyBhbmQgdGFraW5nIG5ldyBzdGVwcyB0byBtb25pdG9yIHRoZW0uIFdlIHN0aWxsIHRlbmQgdG8gdGhpbmsgdGhhdCBldmVyeXRoaW5nIGlzIGEgcHJpb3JpdHkgYW5kIG5vdCBlbm91Z2ggdG8gaGF2ZSBhIGN1bHR1cmUgb2YgcmVzdWx0cy4gRXZlbiBpbiBkaXBsb21hY3ksIHN1Y2Nlc3MgaXMgbWVhc3VyZWQgLSBhbGJlaXQgbm90IGluIGEgZGF5IGFuZCBwcm9iYWJseSBuZXZlciBpbiBhIGRheSAtIHdpdGggdGhlIGFiaWxpdHkgbmV2ZXJ0aGVsZXNzIHRvIGluZmx1ZW5jZSBhdHRpdHVkZXMsIGJ1aWxkIGZyaWVuZHNoaXBzIGFuZCBhbGxpYW5jZXMsIHdpbiBtYXJrZXRzLiBJbiBhIHdvcmQsIHRvIGFkdmFuY2UgdGhlIGludGVyZXN0cyBvZiBGcmFuY2UgYW5kIHRoZSBGcmVuY2ggYW5kIHRvIHNoYXJlIGEgbGl0dGxlIG9mIG91ciB2aXNpb24gYW5kIGNvbmNlcHRpb24gb2YgdGhlIHdvcmxkLjxcL3A+XG48cD5JdCBpcyB0aGUgZXhwZWN0YXRpb24gb2Ygb3VyIGZlbGxvdyBjaXRpemVucywgd2hvIGxlZ2l0aW1hdGVseSB3YW50IHRvIHNlZSB0aGUgcmVwZXJjdXNzaW9ucyBvZiB0aGUgcG9saWN5IHRoYXQgd2UgbGVhZC4gVGhpcyBzdXBwb3NlcyBmaW5hbGx5IGEgY2FwYWNpdHkgb2YgYW50aWNpcGF0aW9uIHJlaW5mb3JjZWQuIFdlIGZvbGxvdyB0aGUgc2l0dWF0aW9ucyBvZiBtYW55IGNvdW50cmllcyBvciByZWdpb25zLCBmcm9tIFZlbmV6dWVsYSB0byBCdXJtYSB0aHJvdWdoIFVrcmFpbmUgb3IgdGhlIERlbW9jcmF0aWMgUmVwdWJsaWMgb2YgQ29uZ28uIEJ1dCB3ZSBtdXN0IGFudGljaXBhdGUgdGhlbSBtb3JlLCBzb21ldGltZXMgbWFrZSBiZXRzLCBwcm9wb3NlIGluaXRpYXRpdmVzLiBJIGFwcGVhbCB0byB5b3VyIHNwaXJpdCBvZiBmb3Jlc2lnaHQsIGFuYWx5c2lzLCBhY3Rpb24uIE5ldmVyIGhlc2l0YXRlIHRvIHByb3Bvc2UgZnJlZWx5LCBpdCBpcyB0aGUgYmVzdCB3YXkgbm90IHRvIHVuZGVyZ28uPFwvcD5cbjxwPllvdSBoYXZlIHVuZGVyc3Rvb2QsIEkgZXhwZWN0IGEgbG90IGZyb20geW91LiBXZSBtb3ZlIGZvcndhcmQgaW4gYSBjb250ZXh0IHRoYXQgbXVzdCBiZSB1bmRlcnN0b29kIGNhbG1seSBhbmQgbHVjaWRseS4gUXVpZXQgYmVjYXVzZSBpdCBpcyBub3QgYSBxdWVzdGlvbiBvZiBjaGFuZ2luZyBzdHJhdGVneSBhcyBzb29uIGFzIGFuIGV4dGVybmFsIGV2ZW50IGFwcGVhcnMuIEx1Y2lkaXR5LCBiZWNhdXNlIGl0IGRvZXMgbm90IG1lYW4gdW5kZXJlc3RpbWF0aW5nIHRoZSBjcmlzZXMgb2YgdGhlIHdvcmxkLiBJbiB0aGUgcGFzdCB5ZWFyLCB3aGF0IGhhcyBoYXBwZW5lZD88XC9wPlxuPHA+RnJhbmNlIGhhcyByZWFmZmlybWVkIGl0cyBFdXJvcGVhbiB3aWxsLCBpdHMgdmlzaW9uLCBpdHMgcHJvamVjdC4gRnJhbmNlIGhhcyBwcm9wb3NlZCBhIEV1cm9wZSB0aGF0IHByb3RlY3RzLCBtb3JlIHNvdmVyZWlnbiwgdW5pdGVkIGFuZCBkZW1vY3JhdGljIGJ1dCwgYXQgdGhlIHNhbWUgdGltZSwgZXh0cmVtZXMgaGF2ZSBwcm9ncmVzc2VkIGFuZCBuYXRpb25hbGlzbXMgaGF2ZSBhd2FrZW5lZC4gSXMgdGhpcyBhIHJlYXNvbiB0byBnaXZlIHVwPyBDZXJ0YWlubHkgbm90LiBJcyB0aGlzIGEgcmVhc29uIHRvIHNheSB0aGF0IHdlIGFyZSB3cm9uZz8gQ29tcGxldGVseSB0aGUgb3Bwb3NpdGUuIFdlIGFyZSBwYXlpbmcgaGVyZSBzZXZlcmFsIGRlY2FkZXMgb2YgYSBFdXJvcGUgd2hpY2gsIHdlIG11c3QgZmFjZSBpdCwgaGFzIHNvbWV0aW1lcyB3ZWFrZW5lZCwgd2Vha2VuZWQsIHdoaWNoIHBlcmhhcHMgaGFzIG5vdCBhbHdheXMgc3VmZmljaWVudGx5IHByb3Bvc2VkLiBXZSBtdXN0IGFjdHVhbGx5IHJlZG91YmxlIG91ciBlZmZvcnRzLiBJIHdpbGwgY29tZSBiYWNrIHRvIGl0LjxcL3A+XG48cD5GcmFuY2UgaGFzIGFsc28gY2hhbXBpb25lZCBzdHJvbmcgbXVsdGlsYXRlcmFsaXNtLiBIb3dldmVyLCB0aGUgbXVsdGlsYXRlcmFsIHN5c3RlbSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFzdCBjZW50dXJ5IGlzIGNoYWxsZW5nZWQgYnkgbWFqb3IgcGxheWVycyBhbmQgYXV0aG9yaXRhcmlhbiBwb3dlcnMgdGhhdCBzb21ldGltZXMgZmFzY2luYXRlIG1vcmUgYW5kIG1vcmUuIFNob3VsZCB3ZSBzdXJyZW5kZXI/IElzIGl0IHRoZSByZXNwb25zaWJpbGl0eSBvZiBGcmFuY2UgaWYgdGhpcyBvciB0aGF0IGNvdW50cnkgY2hvb3NlcyBzdWNoIHNlbnNpdGl2aXR5LCBpZiBhbm90aGVyIHNvdmVyZWlnbiBwb3dlciBkZWNpZGVzIGRpZmZlcmVudGx5IHRoYW4gd2UgdGhpbms/IEZyYW5jZSYjMzk7cyByZXNwb25zaWJpbGl0eSBpcyB0byBtYWtlIGl0cyB2b2ljZSBoZWFyZCwgdG8gZGVmZW5kIGl0LiBOb3QgdG8gc3Vic3RpdHV0ZSBmb3IgdGhlIHdvcmRzIG9mIG90aGVycy4gV2Ugd2lsbCBuZWVkIHRvIHRha2UgbmV3IGluaXRpYXRpdmVzLCBidWlsZCBuZXcgYWxsaWFuY2VzLCBicmluZyB0aGUgZGViYXRlcyB0byB0aGUgcmlnaHQgbGV2ZWwgaWYgd2Ugd2FudCB0byB1bmRlcnN0YW5kIGFsbCBjb250ZW1wb3JhcnkgY2hhbGxlbmdlcyBhbmQgdGhlIHJpZ2h0IGxldmVsIGlzIHRoYXQgb2YgYSBjaXZpbGl6YXRpb24gZGViYXRlIGZvciBvdXIgdmFsdWVzIFx1MjAwYlx1MjAwYmFuZCB0aGUgZGVmZW5zZSBvZiBvdXIgaW50ZXJlc3RzIC48XC9wPlxuPHA+TGFzdCB5ZWFyLCBJIGhhZCBiZWZvcmUgeW91IHRoZSBmb3VyIG9iamVjdGl2ZXMgb2Ygb3VyIGRpcGxvbWF0aWMgYWN0aW9uLCBpbiB0aGUgbmFtZSBvZiB0aGUgcG9saWN5IHRoYXQgSSBsZWFkIGZvciB0aGUgbmF0aW9uOiB0aGUgc2FmZXR5IG9mIG91ciBjb21wYXRyaW90cywgdGhlIHByb21vdGlvbiBvZiBjb21tb24gZ29vZHMsIGluZmx1ZW5jZSBhbmQgYXR0cmFjdGl2ZW5lc3Mgb2Ygb3VyIGNvdW50cnkgYW5kLCBmaW5hbGx5LCBhIG5ldyBFdXJvcGVhbiBhbWJpdGlvbi48XC9wPlxuPHA+VGhlc2UgZ29hbHMgYXJlIHN0aWxsIHZhbGlkIGJ1dCB0aGUgY2lyY3Vtc3RhbmNlcyB0ZXN0IHRoZSByb2J1c3RuZXNzIG9mIG91ciBwcmluY2lwbGVzIGFuZCB0aGUgY29uc3RhbmN5IG9mIG91ciBhY3Rpb24uIFRvZGF5LCBJIHdhbnQgdG8gcmVtaW5kIHlvdSBvZiB3aGF0IHdlIGhhdmUgZG9uZSBpbiB0aGlzIGNvbnRleHQsIGFuZCB0aGUgTWluaXN0ZXIgd2lsbCBjb21lIGJhY2sgdG8gaXQgYXQgbGVuZ3RoLCBidXQgYWxzbyB0byB0ZWxsIHlvdSBob3cgSSBlbnZpc2FnZSBvdXIgcmVzcG9uc2UgdG8gdGhpcyBkb3VibGUgY3Jpc2lzIG9mIG11bHRpbGF0ZXJhbGlzbSBhbmQgb2YgRXVyb3BlLiBCZWNhdXNlIHllcywgbW9yZSB0aGFuIGEgeWVhciBhZ28sIHRvZGF5IGlzIGEgbW9tZW50IG9mIHRydXRoLjxcL3A+XG48cD5PbiB0aGUgc2FmZXR5IG9mIHRoZSBGcmVuY2ggZmlyc3QuPFwvcD5cbjxwPlRoaXMgaXMgb2J2aW91c2x5IG91ciBwcmlvcml0eSBhbmQsIGluIHBhcnRpY3VsYXIsIHRoZSBmaWdodCBhZ2FpbnN0IHRlcnJvcmlzbSBpbiB0aGUgZmlyc3QgcGxhY2UuIFRvIGZpZ2h0IElzbGFtaXN0IHRlcnJvcmlzbSwgd2UgaGF2ZSBhIG5ldyBsYXcgZm9yIEZyYW5jZS4gV2UgaGF2ZSBhY2hpZXZlZCB0aGUgaW5pdGlhdGl2ZSBhbm5vdW5jZWQgaGVyZSBldmVuIGEgeWVhciBhZ28gYXQgYSBjb25mZXJlbmNlIGFnYWluc3QgdGhlIGZpbmFuY2luZyBvZiB0ZXJyb3Jpc20gaGVsZCBhdCB0aGUgT0VDRCBsYXN0IHNwcmluZyBhbmQgQXVzdHJhbGlhIGhhcyBhZ3JlZWQgdG8gY2hhaXIgYSBzZWNvbmQgY29uZmVyZW5jZSBvbiB0aGlzIHRvcGljLCBhbmQgSSBhc2sgeW91IHRvIGNvbnRyaWJ1dGUgdG8gYSB2ZXJ5IGNhcmVmdWwgZm9sbG93LXVwIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUGFyaXMgQWdlbmRhIHdpdGggYWxsIG91ciBwYXJ0bmVycy4gV2UgaGF2ZSBhbHJlYWR5IG9idGFpbmVkIGZpcnN0IHJlc3VsdHMuIFRoZSBtb25pdG9yaW5nIG9mIHRyYW5zYWN0aW9ucyB3aGljaCB1bnRpbCB0aGVuIHdhcyBvcGFxdWUgYW5kIHdoaWNoIGRpcmVjdGx5IHRvdWNoZWQgb3VyIGNvdW50cnkuIFdlIG11c3QgY29udGludWUgdGhpcyB3b3JrIHRpcmVsZXNzbHkuPFwvcD5cbjxwPkJ1dCB0byB0YWxrIGFib3V0IHRoZSBmaWdodCBhZ2FpbnN0IHRlcnJvcmlzbSBpcywgb2YgY291cnNlLCB0byByZXZlcnQgdG8gb3VyIHBvbGljeSBpbiB0aGUgU2FoZWwgYW5kIHRoZSBNaWRkbGUgRWFzdCwgd2hlcmUgdGhlIHRlcnJvcmlzdCBncm91cHMgdGhyZWF0ZW4gdGhlIHN0YWJpbGl0eSBvZiB0aGVzZSByZWdpb25zLCBidXQgd2hpY2ggaGF2ZSBhbHNvIHN0cnVjayB1cyBkaXJlY3RseSBmcm9tIHdoZXJlIHRoZSB0ZXJyb3Jpc3RzIHdlcmUgb3JnYW5pemVkLiBhdHRhY2tzIHRoYXQgYWZmZWN0ZWQgb3VyIGNvdW50cnkuPFwvcD5cbjxwPkluIHRoZSBTYWhlbCwgd2UgbWFpbnRhaW5lZCBvdXIgbWlsaXRhcnkgY29tbWl0bWVudCB0aHJvdWdoIE9wZXJhdGlvbiBCYXJraGFuZS4gSSB3YW50IGhlcmUgdG8gc2FsdXRlIGFsbCBvdXIgc29sZGllcnMgd2hvLCBzaW5jZSAyMDEzLCBhcmUgY291cmFnZW91c2x5IGNvbW1pdHRlZCB0byB0aGlzIGRpZmZpY3VsdCB0aGVhdGVyIG9mIG9wZXJhdGlvbnMuIEl0IGlzIHRoaXMgcHJlc2VuY2UgYW5kIHRoYXQgb2YgTUlOVVNNQSB0aGF0IGhhdmUgYXZvaWRlZCB0aGUgd29yc3QgaW4gdGhlIHJlZ2lvbiBhbmQgaGF2ZSBhbGxvd2VkIGluIHBhcnRpY3VsYXIgdGhhdCB0aGUgZWxlY3Rpb25zIGFyZSBoZWxkIHRoaXMgbW9udGggaW4gTWFsaS4gV2UgaGF2ZSBpbiB0aGlzIHJlZ2lvbiBhY2hpZXZlZCBzaWduaWZpY2FudCB2aWN0b3JpZXMgaW4gcmVjZW50IG1vbnRocyBhZ2FpbnN0IHRoZSB0ZXJyb3Jpc3QgcHJlc2VuY2UsIGJ1dCB0aGlzIGFjdGlvbiBtdXN0IGNvbnRpbnVlIHdpdGggdGhlIHNhbWUgaW50ZW5zaXR5IGJ1dCBjb21wbGV0aW5nIHRoZSBwcmVzZW5jZSBCYXJraGFuZSBmb3JjZSBvZiBzZXZlcmFsIGF4ZXMgc3RhcnRlZCBpbiBKdWx5IDIwMTcuPFwvcD5cbjxwPkZpcnN0LCB3ZSBzdXBwb3J0ZWQgYW5kIGFjY2VsZXJhdGVkIHRoZSBjcmVhdGlvbiBvZiBqb2ludCBHNSBTYWhlbCBmb3JjZXMuIEkgYW0gY29udmluY2VkIHRoYXQgb3VyIG1pbGl0YXJ5IGFjdGlvbiB3aWxsIGluZGVlZCBiZSBldmVuIG1vcmUgZWZmZWN0aXZlIGlmIGl0IGlzIGJldHRlciBhcnRpY3VsYXRlZCB3aXRoIHRoZSBpbnZvbHZlbWVudCBvZiB0aGUgZml2ZSBTYWhlbGlhbiBjb3VudHJpZXMgY29uY2VybmVkLiBXZSByYWlzZWQgZmluYW5jaW5nLCBlbmNvdXJhZ2VkIHRoZSBmaXJzdCBvcGVyYXRpb25zIG9mIHRoZSBmb3JjZXMuIE9uIHNldmVyYWwgb2NjYXNpb25zIEkgaGF2ZSB0cmF2ZWxlZCB0byBzZWUgdGhlIHByb2dyZXNzIGFuZCB3aXRoIGFsbCB0aGUgaGVhZHMgb2Ygc3RhdGUgYW5kIGdvdmVybm1lbnQgaW52b2x2ZWQgd2UgaGF2ZSBpbXByb3ZlZCBvdXIgb3JnYW5pemF0aW9uLjxcL3A+XG48cD5UaGlzIG9yZ2FuaXphdGlvbiBpcyB0aGUgb25seSBvbmUgdGhhdCwgaW4gdGhlIGxvbmcgcnVuLCB3aWxsIGFsbG93IHN0YWJpbGl0eSBiZWNhdXNlIGl0IGZ1bGx5IGludm9sdmVzIHRoZSBmaXZlIGNvdW50cmllcyBvZiB0aGUgU2FoZWwgY29uY2VybmVkIHdpdGggdGhlaXIgb3duIHNlY3VyaXR5LiBXZSBtdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGltcGxlbWVudGVkIGFuZCBpbiB0aGUgY29taW5nIHdlZWtzIGFuZCBtb250aHMgd2Ugd2lsbCBoYXZlIHRvIGNvbmR1Y3QgbmV3IGpvaW50IG9wZXJhdGlvbnMgd2l0aCB0aGVzZSBHNSBmb3JjZXMuIFdlIG11c3QgYWxzbyBzdHJlbmd0aGVuIGNvb3BlcmF0aW9uIHdpdGggQWxnZXJpYSwgZXhwb3NlZCB0byB0aGUgc2FtZSByaXNrIG9mIHRlcnJvcmlzbSwgYXMgd2VsbCBhcyB3aXRoIE5pZ2VyaWEgYW5kIENhbWVyb29uLCBhZ2FpbnN0IEJva28gSGFyYW0uPFwvcD5cbjxwPlNlY29uZCwgd2UgZW5jb3VyYWdlZCB0aGUgcmlzZSBvZiB0aGUgQWZyaWNhbiBVbmlvbi4gVGhpcyBpcyB3aGF0IEkgcGxlYWRlZCBsYXN0IEp1bHkgYXQgdGhlIE5vdWFrY2hvdHQgU3VtbWl0IGJlZm9yZSB0aGUgQWZyaWNhbiBVbmlvbiBhbmQgdGhpcyBpcyB3aGF0IEkgd2lsbCBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBkaXNjdXNzIHNob3J0bHkgd2l0aCBQcmVzaWRlbnQgVFJVTVAgYW5kIFByZXNpZGVudCBLQUdBTUUsIGN1cnJlbnQgUHJlc2lkZW50IGluIG9mZmljZSBvZiB0aGUgQWZyaWNhbiBVbmlvbi4gV2UgbXVzdCB3b3JrIHRvIGNyZWF0ZSBjcmVkaWJsZSBBZnJpY2FuIHBlYWNlIG9wZXJhdGlvbnMsIHNlY3VyZSBzdGFibGUgYW5kIHByZWRpY3RhYmxlIGZ1bmRpbmcgZm9yIHRoZW0sIGVzcGVjaWFsbHkgYmV0d2VlbiB0aGUgVW5pdGVkIE5hdGlvbnMsIHRoZSBBZnJpY2FuIFVuaW9uIGFuZCBzdWJyZWdpb25hbCBvcmdhbml6YXRpb25zLjxcL3A+XG48cD5UaGlyZGx5LCB3ZSBoYXZlIGNvbXBsZW1lbnRlZCBvdXIgbWlsaXRhcnkgYWN0aW9uIGJ5IHN0cmVuZ3RoZW5pbmcgYW5kIHNpbXBsaWZ5aW5nIG91ciBkZXZlbG9wbWVudCB3b3JrLCBieSBjcmVhdGluZyB3aXRoIEdlcm1hbnkgYW5kIHNldmVyYWwgb3RoZXIgaW50ZXJuYXRpb25hbCBkb25vcnMgdGhlIEFsbGlhbmNlIGZvciB0aGUgU2FoZWwuIFRoZXNlIGFyZSB0aGUgY29tcGxlbWVudGFyeSAmcXVvdDszRCZxdW90OyB0aGF0IEkgZXZva2VkIGxhc3QgeWVhcjogRGlwbG9tYWN5LCBEZXZlbG9wbWVudCBhbmQgRGVmZW5zZSwgYW5kIHdlIGJlZ2FuIHRvIGRlcGxveSB0aGUgZmlyc3Qgb3BlcmF0aW9ucyBpbiBlZHVjYXRpb24sIGluIGFncmljdWx0dXJlLCBtb3JlIGJyb2FkbHkgZWNvbm9taWMsIGluIHNldmVyYWwgY291bnRyaWVzIG9mIHRoZSB3b3JsZC4gYSByZWdpb24gd2hlcmUsIGVhY2ggdGltZSwgdGhlIHRlcnJhaW4gdGFrZW4gb3ZlciBieSB0aGUgZW5lbXkgbXVzdCBiZSBhY2NvbXBhbmllZCBieSBuZXcgcHJvamVjdHMgdGhhdCBtYWtlIGl0IHBvc3NpYmxlIHRvIHByb3ZpZGUgZWNvbm9taWMsIGVkdWNhdGlvbmFsIGFuZCBsaWZlIHBlcnNwZWN0aXZlcyBmb3IgcGVvcGxlIHdobywgYXQgYSBnaXZlbiBtb21lbnQsIGhhdmUgYmVlbiBzZWR1Y2VkLjxcL3A+XG48cD5JIHdhbnQgaGVyZSB0byBzYWx1dGUgdGhlIGFjdGlvbiBhbmQgdGhlIHJlc3VsdHMgb2J0YWluZWQgaW4gTWF1cml0YW5pYSwgTmlnZXIgYW5kIENoYWQuIEluIHRoZSBuZXh0IGZldyBtb250aHMsIHdlIG5lZWQgdG8gcHJvdmlkZSBhbGwgb3VyIHN1cHBvcnQgZm9yIHRoZSBzdGFiaWxpdHkgYW5kIHJlY292ZXJ5IG9mIGNlcnRhaW4gcmVnaW9ucyBpbiBNYWxpIGFuZCBCdXJraW5hIEZhc28uPFwvcD5cbjxwPkZvdXJ0aCwgdGhlIFNhaGVsIGlzc3VlIHdpbGwgbm90IGJlIGZ1bGx5IHJlc29sdmVkIHVudGlsIHN0YWJpbGl0eSBpbiBMaWJ5YSBpcyBhc3N1cmVkLiBUaGUgYW5vbWllIHRoYXQgaGFzIHJlaWduZWQgaW4gTGlieWEgc2luY2UgMjAxMSBoYXMgbGVkIHRvIHRoZSBzdHJ1Y3R1cmluZyBvZiBvcmdhbml6ZWQgdHJhZmZpY2tpbmcgcm91dGVzIGZvciBkcnVncywgaHVtYW4gYmVpbmdzIGFuZCB3ZWFwb25zLiBUaGUgZW50aXJlIFNhaGVsLVNhaGFyYW4gc3RyaXAgaGFzIGFsd2F5cyBiZWVuIGEgcmVnaW9uIG9mIGNvbW1lcmNlIGFuZCB0cmFmZmlja2luZywgYnV0IHRoZXNlIHJvYWRzIGFyZSBub3cgdGhvc2Ugb2YgbWlzZXJ5IGFuZCB0ZXJyb3Jpc20uIFVudGlsIHdlIHN0YWJpbGl6ZSBMaWJ5YSwgaXQgd2lsbCBiZSBpbXBvc3NpYmxlIHRvIHN0YWJpbGl6ZSB0aGUgU2FoZWwgc3VzdGFpbmFibHkuIFRoZXNlIGFyZSB0aGUgcm9hZHMgdGhhdCBrZWVwIHRlcnJvcmlzdHMgYWxpdmUgdG9kYXkgYW5kIGZ1bmQgdGhlbS48XC9wPlxuPHA+V2UgaGF2ZSB0YWtlbiBzZXZlcmFsIGluaXRpYXRpdmVzIHRvIHJlc3BvbmQgdG8gdGhpcyBzaXR1YXRpb24uIEZpcnN0IGJ5IGZpZ2h0aW5nIGFnYWluc3QgdGhlc2UgdHJhZmZpY2tpbmcgYW5kIHNtdWdnbGluZyBuZXR3b3JrcyBpbiBjb25uZWN0aW9uIHdpdGggdGhlIEFmcmljYW4gVW5pb24gYW5kIHRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgTWlncmF0aW9uLjxcL3A+XG48cD5UaGVuLCBieSBicmluZ2luZyB0b2dldGhlciBNZXNzcnMgU0FSUkFKIGFuZCBIQUZUQVIgaW4gRnJhbmNlIGluIEp1bHkgMjAxNyBhbmQsIGZvciB0aGUgZmlyc3QgdGltZSwgdGhlIGZvdXIgbWFpbiBMaWJ5YW4gbGVhZGVycyBsYXN0IE1heSwgc3Vycm91bmRlZCBieSB0aGUgaW50ZXJuYXRpb25hbCBjb21tdW5pdHksIHRvIGVuZ2FnZSBpbiBhIGNvbW1vbiBwb2xpdGljYWwgcHJvY2Vzcy48XC9wPlxuPHA+SSBiZWxpZXZlIHZlcnkgZGVlcGx5IGluIHRoZSByZXN0b3JhdGlvbiBvZiBMaWJ5YW4gc292ZXJlaWdudHkgYW5kIHRoZSB1bml0eSBvZiB0aGUgY291bnRyeS4gSXQgaXMgYW4gZXNzZW50aWFsIGNvbXBvbmVudCBvZiB0aGUgc3RhYmlsaXphdGlvbiBvZiB0aGUgcmVnaW9uIGFuZCB0aGVyZWZvcmUgb2YgdGhlIGZpZ2h0IGFnYWluc3QgdGVycm9yaXN0cyBhbmQgdHJhZmZpY2tlcnMuIFRoZSBjb21pbmcgbW9udGhzIHdpbGwgYmUgZGVjaXNpdmUgaW4gdGhpcyByZXNwZWN0LCB0aGV5IHdpbGwgcmVxdWlyZSBvdXIgbW9iaWxpemF0aW9uIHRvIHN1cHBvcnQgdGhlIHJlbWFya2FibGUgd29yayBvZiB0aGUgc3BlY2lhbCByZXByZXNlbnRhdGl2ZSBvZiB0aGUgU2VjcmV0YXJ5IEdlbmVyYWwgb2YgdGhlIFVuaXRlZCBOYXRpb25zLCBHaGFzc2FuIFNBTEFNRSwgdG8gYXZvaWQgYWxsIHRoZSB0ZW1wdGF0aW9ucyBvZiBkaXZpc2lvbnMsIHNpbmNlIHRoaXMgY291bnRyeSBoYXMgYmVjb21lIGF0IHRoZSBib3R0b20gdGhlIHRoZWF0ZXIgb2YgYWxsIHRoZSBpbmZsdWVuY2VzLCBvZiBhbGwgZXh0ZXJuYWwgaW50ZXJlc3RzLiBPdXIgcm9sZSBmb3Igb3VyIHNlY3VyaXR5IGFuZCB0aGF0IG9mIHRoZSByZWdpb24sIGlzIHRvIHN1Y2NlZWQgaW4gbWFraW5nIHByb2dyZXNzIHRoZSBQYXJpcyBhZ3JlZW1lbnQgb2YgdGhlIGZvdXIgc3Rha2Vob2xkZXJzLCBkZWNpZGVkIGxhc3QgTWF5LjxcL3A+XG48cD5UaGUgb3RoZXIgdGhlYXRlciBvZiBvcGVyYXRpb24gaW4gb3VyIGZpZ2h0IGFnYWluc3QgdGVycm9yaXNtIGlzLCBvZiBjb3Vyc2UsIFN5cmlhLiBJbiBTeXJpYSwgdGhlIHNpdHVhdGlvbiByZW1haW5zIGV4dHJlbWVseSBzZXJpb3VzIGFuZCB3b3JyeWluZy4gRnJhbmNlIGhhcyBiZWVuIHZlcnkgYWN0aXZlIGRpcGxvbWF0aWNhbGx5LCBmcm9tIE5ldyBZb3JrIHRvIEdlbmV2YSwgaW5jbHVkaW5nIGFsbCB0aGUgY2FwaXRhbHMgY29uY2VybmVkLiBXZSBoYXZlIHNpZ25pZmljYW50bHkgaW5jcmVhc2VkIG91ciBodW1hbml0YXJpYW4gYWlkLiBBIGNlYXNlLWZpcmUgaXMgaW5kaXNwZW5zYWJsZSB0b2RheSwgYnV0IHRoZSBkdXJhYmxlIHNvbHV0aW9uIHRvIHRoaXMgY29uZmxpY3Qgd2lsbCBiZSBwb2xpdGljYWwsIHdlIGtub3cgaXQgaXMgcG9saXRpY2FsLjxcL3A+XG48cD5GcmFuY2Ugd2FzIHRoZSBmaXJzdCB0byBwcm9wb3NlIHRoZSByYXBwcm9jaGVtZW50IG9mIHRoZSBwb3NpdGlvbnMgb2YgdGhlIFdlc3Rlcm4gYW5kIEFyYWIgc3RhdGVzIG9uIHRoZSBvbmUgaGFuZCwgYW5kIHRoZSB0aHJlZSBzby1jYWxsZWQgQXN0YW5hIGd1YXJhbnRvcnMgb24gdGhlIG90aGVyLiBXZSBoYXZlIGpvaW5lZCBHZXJtYW55IGFuZCBFZ3lwdCBpbiB0aGUgJnF1b3Q7U21hbGwgR3JvdXAmcXVvdDsgd2hpY2ggd2lsbCBob2xkIGEgbmV3IG1pbmlzdGVyaWFsIG1lZXRpbmcgaW4gU2VwdGVtYmVyIHdpdGggdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZSBVbml0ZWQgS2luZ2RvbSwgU2F1ZGkgQXJhYmlhIGFuZCBKb3JkYW4uIFdlIGhhdmUgc3RyZW5ndGhlbmVkIG91ciBkaWFsb2d1ZSB3aXRoIFR1cmtleSBvbiBTeXJpYSB0byBhbiB1bnByZWNlZGVudGVkIGxldmVsLCBkZXNwaXRlIG91ciBzdWJzdGFudGl2ZSBkaWZmZXJlbmNlcyBpbiB0aGUgTm9ydGhlYXN0IHJlZ2lvbi4gVGhlIGNvb3JkaW5hdGluZyBtZWNoYW5pc20gY3JlYXRlZCBpbiBTYWludCBQZXRlcnNidXJnIHdpdGggUnVzc2lhIGhhcyBoYWQgaXRzIGZpcnN0IGltcGFjdCwgZXNwZWNpYWxseSBpbiBodW1hbml0YXJpYW4gdGVybXMsIGJ5IGdpdmluZyBpbiB0byBvdXIgcHJpbmNpcGxlcyBhbmQgYWN0aW5nIHRocm91Z2ggbm9uLWdvdmVybm1lbnRhbCBvcmdhbml6YXRpb25zIHdvcmtpbmcgaW4gdGhlIGZpZWxkIHRvIGNvbmR1Y3QgaHVtYW5pdGFyaWFuIG9wZXJhdGlvbnMuIGZvciB0aGUgY2l2aWxpYW4gcG9wdWxhdGlvbi48XC9wPlxuPHA+SW4gdGhpcyByZXNwZWN0LCBJIHdpc2ggdG8gY29tbWVuZCB0aGUgcmVtYXJrYWJsZSBhbmQgY291cmFnZW91cyB3b3JrIG9mIGFsbCB0aGUgTkdPcyBvbiB0aGUgZ3JvdW5kLjxcL3A+XG48cD5NYW55IHRoaW5ncyBoYXZlIGV2b2x2ZWQsIHdlIGhhdmUsIEkgYmVsaWV2ZSwgc3VjY2VlZGVkIGluIHJlYnVpbGRpbmcgYW4gZXNzZW50aWFsIEV1cm9wZWFuIHBhdGggaW4gdGhlIFN5cmlhbiBjcmlzaXMsIGJ1dCB3ZSBhcmUgbm90IG1pc3Rha2VuLCB3ZSBhcmUgb24gdGhpcyBzdWJqZWN0IGFsc28gaW4gdGhlIGhvdXIgb2YgdHJ1dGguIFdlIGFyZSBwcm9iYWJseSBhZGRyZXNzaW5nIHRoZSBsYXN0IG1vbnRocyBvZiB0aGUgY29uZmxpY3Qgd2l0aCBhIGNyaXRpY2FsIGh1bWFuaXRhcmlhbiBjaGFsbGVuZ2UgaW4gdGhlIElkbGViIHJlZ2lvbi4gQW5kIHdlIGFyZSBhdCBhIGNyb3Nzcm9hZHMgdG8gc3VjY2VlZCBpbiBwcmVjaXNlbHkgbGVhZGluZyB0aGlzIGluY2x1c2l2ZSBwb2xpdGljYWwgc29sdXRpb24gdGhhdCB3ZSBiZWxpZXZlIGluLCB3aGljaCBhbG9uZSB3aWxsIGFsbG93IEVhc3Rlcm4gY2h1cmNoZXMsIGJ1dCBhbHNvIEt1cmRzLCBZZXNpZGlzLCBhbGwgZXRobmljIGFuZCByZWxpZ2lvdXMgbWlub3JpdGllcyB0byB0byBoYXZlIGEgcGxhY2UgaW4gdGhlIFN5cmlhIG9mIHRvbW9ycm93LjxcL3A+XG48cD5PdXIgbGluZXMgb24gdGhlIFN5cmlhbiBjb25mbGljdCBhcmUgY2xlYXI6IHRoZSBmaWdodCBhZ2FpbnN0IERhZXNoIGFuZCB0aGUgdGVycm9yaXN0IGdyb3VwcyB0aGF0IHRocmVhdGVuIHRoZSBzZWN1cml0eSBvZiBFdXJvcGUsIHRoZSBzdXBwb3J0IGZvciB0aGUgY2l2aWxpYW4gcG9wdWxhdGlvbiBhbmQgdGhlIHByb21vdGlvbiBvZiBhbiBpbmNsdXNpdmUgZGlwbG9tYXRpYyByb2FkIG1hcCwgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBVbml0ZWQgTmF0aW9ucy48XC9wPlxuPHA+SSBlbnRydXN0ZWQgdG8gbXkgUGVyc29uYWwgRW52b3kgb24gU3lyaWEsIEFtYmFzc2Fkb3IgRnJhblx1MDBlN29pcyBTRU5FTUFVRCwgdGhlIG1pc3Npb24gdG8gYWR2YW5jZSB0aGVzZSBvYmplY3RpdmVzIGluIHJlbGF0aW9uIHRvIGFsbCB0aGUgbWluaXN0cmllcyBjb25jZXJuZWQuIEJ1dCB0aGUgc2l0dWF0aW9uIGlzIGFsYXJtaW5nIHRvZGF5LCBiZWNhdXNlIHRoZSByZWdpbWUgdGhyZWF0ZW5zIHRvIGNyZWF0ZSBhIG5ldyBodW1hbml0YXJpYW4gdHJhZ2VkeSBpbiB0aGUgcmVnaW9uIG9mIElkbGViIGFuZCBzaG93cyBubyBkZXNpcmUgc28gZmFyIHRvIG5lZ290aWF0ZSBhbnkgcG9saXRpY2FsIHRyYW5zaXRpb24uIFRoaXMgbWVhbnMgZnVydGhlciBwcmVzc3VyZSBvbiB0aGUgcmVnaW1lIGFuZCBpdHMgYWxsaWVzLCBhbmQgSSBhbSBleHBlY3RpbmcgYSBsb3QgZnJvbSBSdXNzaWEgYW5kIFR1cmtleSwgZ2l2ZW4gdGhlaXIgcm9sZSBhbmQgdGhlIGNvbW1pdG1lbnRzIHRoZXkgaGF2ZSBtYWRlLjxcL3A+XG48cD5XZSBzZWUgdGhvc2Ugd2hvIHdvdWxkIGxpa2UsIG9uY2UgdGhlIHdhciBhZ2FpbnN0IERhZXNoIGlzIG92ZXIsIHRvIGZhY2lsaXRhdGUgd2hhdCBzb21lIGNhbGwgYSByZXR1cm4gdG8gbm9ybWFsY3kuIEJhc2hhciBFbC1BU1NBRCB3b3VsZCByZW1haW4gaW4gcG93ZXIsIHRoZSByZWZ1Z2VlcyBmcm9tIEpvcmRhbiwgTGViYW5vbiwgVHVya2V5LCB3b3VsZCByZXR1cm4gaG9tZSwgYW5kIEV1cm9wZSBhbmQgYSBmZXcgb3RoZXJzIHdvdWxkIHJlYnVpbGQuPFwvcD5cbjxwPklmIEkgY29uc2lkZXIgZnJvbSB0aGUgZmlyc3QgZGF5IHRoYXQgb3VyIGZpcnN0IGVuZW15IGlzIERhZXNoIGFuZCB0aGF0IEkgaGF2ZSBuZXZlciBtYWRlIHRoZSBkaXNtaXNzYWwgb2YgQmFzaGFyIEVsLUFTU0FEIGEgcHJlY29uZGl0aW9uIGZvciBvdXIgZGlwbG9tYXRpYyBvciBodW1hbml0YXJpYW4gYWN0aW9uLCBJIHRoaW5rIHRoYXQgc3VjaCBhIHNjZW5hcmlvIHdvdWxkIG5ldmVydGhlbGVzcyBiZSBhIG1pc3Rha2UgZmF0YWwuIFdobyBwcm92b2tlZCB0aGVzZSBtaWxsaW9ucyBvZiByZWZ1Z2Vlcz8gV2hvIG1hc3NhY3JlZCBoaXMgb3duIHBlb3BsZT8gSXQgaXMgbm90IHVwIHRvIEZyYW5jZSB0byBkZXNpZ25hdGUgdGhlIGZ1dHVyZSBsZWFkZXJzIG9mIFN5cmlhLCBhbnkgbW9yZSB0aGFuIHRvIGFub3RoZXIgY291bnRyeS4gQnV0IGl0IGlzIG91ciBkdXR5IGFuZCBvdXIgaW50ZXJlc3QgdG8gZW5zdXJlIHRoYXQgdGhlIFN5cmlhbiBwZW9wbGUgd2lsbCBiZSBpbiBhIHBvc2l0aW9uIHRvIGRvIHNvLjxcL3A+XG48cD5UaGlzIGlzIHdoeSB0aGUgY29uZGl0aW9uIG9mIHRoZSB1bml0eSwgdGhlIHN0YWJpbGl0eSBvZiBTeXJpYSBhbmQgdGhlcmVmb3JlIHRoZSBzdXN0YWluYWJsZSBlcmFkaWNhdGlvbiBvZiBJc2xhbWlzdCB0ZXJyb3Jpc20sIGlzIGluZGVlZCB0aGUgY29uc3RydWN0aW9uIG9mIHRoaXMgaW5jbHVzaXZlIHBvbGl0aWNhbCBzb2x1dGlvbiB0aGF0IHJlcXVpcmVzIGNvbnN0aXR1dGlvbmFsIHJlZm9ybSBhbmQgdGhlIGVzdGFibGlzaG1lbnQgb2YgYW4gZWxlY3RvcmFsIHByb2Nlc3MgdGhhdCB3aWxsIGFsbG93IGFsbCBTeXJpYW5zLCBpbmNsdWRpbmcgdGhvc2Ugd2hvIGhhdmUgZmxlZCB0aGUgQmFzc2FyIEVsLUFTU0FEIHJlZ2ltZSwgdG8gY2hvb3NlIHRoZWlyIG93biBsZWFkZXIuIFRoaXMgYWN0aW9uIGFuZCB0aGVzZSBwcmluY2lwbGVzIGFyZSwgaW4gbXkgb3BpbmlvbiwgZGVjaXNpdmUgZm9yIG91ciBzZWN1cml0eSwgZXZlbiB0b2RheSBhbmQgdG9tb3Jyb3csIGJlY2F1c2Ugd2hhdCBoYXMgbWFkZSBpdCBwb3NzaWJsZSBmb3IgbW9yZSB0aGFuIDE1IHllYXJzIHRvIG1ha2UgdGhlIHRlcnJvcmlzdCBncm91cHMgcHJvc3BlciwgYmUgaXQgQWwgUWFpZGEsIERhZXNoIG9yIEFsLU5vc3JhPzxcL3A+XG48cD5FY29ub21pYyBoYXJkc2hpcCwgYXV0aG9yaXRhcmlhbiByZWdpbWVzIGNhbm5vdCBwcm90ZWN0IG1vcmUgcGVvcGxlLCB0aGUgd2lkZXNwcmVhZCBjb3JydXB0aW9uLCBidXQgYWxzbyB0aGUgbm9uLXJlc3BlY3Qgb2YgdGhlIHNvdmVyZWlnbnR5IG9mIHRoZXNlIGNvdW50cmllcyBieSBmb3JlaWduIHBvd2VycywgaXQgaXMgdGhpcyB0aGF0IGhhcyBmZWQgdGhlIGRpc2NvdXJzZSBldmVuIG9mIHRoZSBpc2xhbWlzdHMsIHdoaWNoIGxlZCB0byB0aGUgZXhwbG9pdGF0aW9uIG9mIGFsbCB0aGUgZnJ1c3RyYXRpb25zIGFuZCBkaXNjb3Vyc2UgYW50aW9jY2lkZW50YWwuIERvIG5vdCByZXByb2R1Y2UsIHRoZXJlZm9yZSwgbm90IHRoZXNlIGVycm9ycy4gUmVzcGVjdCB0aGUgc292ZXJlaWdudHkgb2YgU3lyaWEsIGJ1dCBoYXZlIHJlc3BlY3QgZm9yIGl0IHJlYWxseSwgaW4gYWxsb3dpbmcgcGVvcGxlIHRvIGV4cHJlc3MgdGhlbXNlbHZlcyBhbmQgZW1ib2R5IGl0LiBJdCBpcyB0aGUgc2Vuc2Ugb2YgY29tYmF0IGFuZCBkaXBsb21hdGljIHBvbGljeSB0aGF0IHdlIG5lZWQgdG8gcHVyc3VlIHdpdGggdGhlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBzZWNyZXRhcnktZ2VuZXJhbCBvZiB0aGUgVW5pdGVkIE5hdGlvbnMgU3RhZmZhbiBkZSBNSVNUVVJBLCB0byBjb252ZXJnZSB0aGUgU3lyaWFucywgdGhlIFNtYWxsIEdyb3VwLCBBc3RhbmEsIHRoZSBTdGF0ZXMgb2YgdGhlIHJlZ2lvbiBhcm91bmQgYSBzaW5nbGUgcm9hZG1hcCB0aGF0IGlzIGluY2x1c2l2ZSwgaW4gd2hpY2ggb25seSB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBlbmFibGUgYSBzdXN0YWluYWJsZSBwZWFjZS48XC9wPlxuPHA+T2YgY291cnNlLCB0aGUgc3RhYmlsaXR5IG9mIHRoZSByZWdpb24gd2lsbCBhbHNvIGRlcGVuZCBvbiBvdXIgYWJpbGl0eSB0byBoYW5kbGUgbWF0dGVycyBvZiBpcmFuLCBJIGNvbWUgdG8gdGhlIG1vbWVudCB0byB0cmFkZSBhZ2FpbiB3aXRoIHByZXNpZGVudCBST0hBTkkgb2YgdGhlIGNyaXNpcyBpbiB0aGUgR3VsZiwgdGhlIGNvbmZsaWN0IGluIFllbWVuIGFuZCB0aGUgaXNyYWVsaS1wYWxlc3RpbmlhbiBpc3N1ZSwgd2hpY2ggcmVtYWlucyBhYnNvbHV0ZWx5IGNlbnRyYWwgYW5kIGEgbWF0dGVyIG9mIGNvbmNlcm4uPFwvcD5cbjxwPk9uIHRoZXNlIGVzc2VudGlhbCBwb2ludHMsIGhlcmUgSSBkb24ndCB3YW50IHRvIGJlIHRvbyBsb25nIGFuZCBJIHdpbGwgaGF2ZSB0byBleHByZXNzIG15c2VsZiBpbiB0aGUgbmV4dCBmZXcgd2Vla3MgYnkgdGFraW5nIHdpdGggeW91IHNvbWUgY29uY3JldGUgaW5pdGlhdGl2ZXMuPFwvcD5cbjxwPkFsd2F5cyB3aXRoIHRoZSBzYW1lIHJlZCB0aHJlYWQgOiBvdXIgc2VjdXJpdHkgYXMgb3VyIHZpc2lvbiBvZiB0aGUgd29ybGQgbmVlZGVkIHRoZSBzdGFiaWxpdHkgb2YgdGhlIE5lYXIgYW5kIE1pZGRsZSBFYXN0IDxcL3A+XG48cD5Db25zaWRlciwgaW4gdGhlIGNvbnRlbXBvcmFyeSBlbnZpcm9ubWVudCBvdXIgYWN0aW9uIGZvciB0aGUgc2VjdXJpdHkgb2YgdGhlIEZyZW5jaCwgaXQgaXMgYWxzbyBjb250aW51ZSBvdXIgY29tbWl0bWVudCB0byB0aGUgZmlnaHQgYWdhaW5zdCBjaGVtaWNhbCB3ZWFwb25zLCBhbmQgbnVjbGVhciBwcm9saWZlcmF0aW9uLjxcL3A+XG48cD5XZSBoYXZlIGNyZWF0ZWQgYW4gaW50ZXJuYXRpb25hbCBwYXJ0bmVyc2hpcCBhZ2FpbnN0IGltcHVuaXR5IGluIGNhc2VzIG9mIGNoZW1pY2FsIHdlYXBvbnMsIHdlIGhhdmUgbGVkIHRoZSBzb2xpZGFyaXR5IG9mIHRoZSBldXJvcGVhbiBVbmlvbiB3aXRoIHRoZSBVbml0ZWQgS2luZ2RvbSBmb2xsb3dpbmcgdGhlIGF0dGFjayBvbiBTYWxpc2J1cnkuIFdlIGhhdmUgaW4gSnVuZSBsZWQgdG8gdGhlIGNyZWF0aW9uIG9mIGEgbmV3IG1lY2hhbmlzbSBmb3IgdGhlIGFsbG9jYXRpb24gb2Ygc3VjaCBhdHRhY2tzIHdpdGhpbiB0aGUgb3JnYW5pemF0aW9uIGZvciB0aGUgcHJvaGliaXRpb24gb2YgY2hlbWljYWwgd2VhcG9ucywgdGhlIGhlYWRxdWFydGVycyBvZiB3aGljaCBJIGhhZCB2aXNpdGVkIGEgZmV3IG1vbnRocyBlYXJsaWVyLiBUaGVzZSBhY3Rpb25zIHdlcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugd2Uga25vdyBob3cgY3JpdGljYWwgdGhlIHJvbGUsIHRoZSBzdXBlcnZpc2lvbiBvZiB0aGlzIG9yZ2FuaXphdGlvbiBpcyBjb250ZXN0ZWQgYnkgc29tZSBhbmQgaGFkIGJlZW4gd2Vha2VuZWQgYnkgdGhlIHJlY2VudCByZWZvcm1zLjxcL3A+XG48cD5UaGUgd29yZCBvZiBGcmFuY2Ugd2FzIGFsc28gaGVsZCBhbmQgb3VyIGxpbmVzIGhhdmUgYmVlbiBtZXQuIFdoZW4gdGhlIHN5cmlhbiByZWdpbWUgaGFzIGJvbWJlZCBpdHMgcGVvcGxlIHdpdGggY2hlbWljYWwgd2VhcG9ucywgd2UgaGF2ZSBoaXQgc2V2ZXJhbCBvZiBpdHMgZmFjaWxpdGllcyBpbiB0aGUgbmlnaHQgYmV0d2VlbiAxMyBhbmQgMTQgQXByaWwgd2l0aCBvdXIgYWxsaWVzIHRoZSBicml0aXNoIGFuZCB0aGUgYW1lcmljYW5zLCBhbmQgd2Ugd2lsbCBjb250aW51ZSB0byBkbyBzbyBpbiB0aGUgY2FzZSBvZiB1c2Ugb2YgYSBwcm92ZW4gb2YgdGhlc2Ugd2VhcG9ucy48XC9wPlxuPHA+V2UgaGF2ZSBmb3VnaHQgYWdhaW5zdCB0aGUgcHJvbGlmZXJhdGlvbiBvZiBudWNsZWFyIHdlYXBvbnMsIGFjY29tcGFuaWVkIGJ5IGEgcG9saWN5IG9mIHZpZ2lsYW5jZSB0aGUgb3BlbmluZyBiZXR3ZWVuIE5vcnRoIEtvcmVhIGFuZCB0aGUgVW5pdGVkIFN0YXRlcywgYW5kIGFzIHdlIHN0cml2ZSwgYWdhaW5zdCB0aGUgZGVjaXNpb24gYnkgdGhlIHVuaXRlZCBzdGF0ZXMsIGZvciB0aGUgbWFpbnRlbmFuY2Ugb2YgdGhlIG51Y2xlYXIgZGVhbCB3aXRoIElyYW4uPFwvcD5cbjxwPkl0IHdhcyBGcmFuY2UsIGF0IG91ciBtZWV0aW5nIGhlcmUgYSB5ZWFyIGFnbywgd2hpY2ggcHJvcG9zZWQgdGhlIHBhdGggb2YgYW4gZW5sYXJnZWQgbmVnb3RpYXRpb24gd2l0aCBJcmFuIG9uIHRoZSBmb3VyIHBpbGxhcnMgdGhhdCB5b3Uga25vdyBhbmQgdGhhdCBJIHRoZW4gZXhwb3NlZCB0byB5b3UuPFwvcD5cbjxwPlRoaXMgYXBwcm9hY2ggaXMgcHJvZ3Jlc3NpbmcgdG9kYXksIGl0IGlzIGEgY29tcGFzcyB0aGF0IG5ldyBwYXJ0bmVycyBhcmUgZm9sbG93aW5nLCBhbmQgd2Ugd2lsbCBkbyBldmVyeXRoaW5nIHRvIGhlbHAgcHJldmVudCBhIHNlcmlvdXMgY3Jpc2lzIGluIHRoZSBjb21pbmcgbW9udGhzLiBBIG1ham9yIGRpcGxvbWF0aWMgZWZmb3J0IHdpbGwgYmUgbmVlZGVkIHRvIGVzdGFibGlzaCBhIG5ldyBzdGFiaWxpdHkgZnJhbWV3b3JrLiBPdXIgY2xvc2VseSBjb29yZGluYXRlZCBhY3Rpb24sIGluIHBhcnRpY3VsYXIgd2l0aCB0aGUgVW5pdGVkIEtpbmdkb20sIEdlcm1hbnkgYW5kIHRoZSBFdXJvcGVhbiBVbmlvbiwgaXMgdG9kYXkgdG8gcHJlc2VydmUgYW5kIGNvbnNvbGlkYXRlIHRoZSBudWNsZWFyIGFncmVlbWVudCBvZiAyMDE1IHRocm91Z2ggdGhlIG9wZW5pbmcgb2YgbmV3IG5lZ290aWF0aW9ucywgbW9yZSBzdGlsbCBkZW1hbmRpbmcuPFwvcD5cbjxwPkZyYW5jZSB3aWxsIHRha2UgaXRzIHJlc3BvbnNpYmlsaXR5IG9uIHRoZSBJcmFuaWFuIHN1YmplY3QsIHdpdGhvdXQgY29tcGxhY2VuY3kgb3IgbmFpdmV0eSwgYnkgbWFpbnRhaW5pbmcgYSBjbG9zZSBkaWFsb2d1ZSB3aXRoIG91ciBwYXJ0bmVycywgaW5jbHVkaW5nIHRoZSBHdWxmIFN0YXRlcy48XC9wPlxuPHA+VGFsa2luZyBhYm91dCBvdXIgc2VjdXJpdHkgaXMgYWxzbyBhYm91dCBFdXJvcGUmIzM5O3Mgc2VjdXJpdHkgd2l0aCByZWdhcmQgdG8gZXh0ZXJuYWwgcmlza3MuPFwvcD5cbjxwPkluIHRoaXMgcmVzcGVjdCwgZHVyaW5nIHRoZSBwYXN0IHllYXIsIHdlIGhhdmUgcHJvZ3Jlc3NlZCBhdCBhbiB1bnByZWNlZGVudGVkIHBhY2UgZHVyaW5nIHRoZSBsYXN0IHNpeHR5IHllYXJzLiBUaGUgc3RyZW5ndGhlbmluZyBvZiBvdXIgY29tbW9uIGRlZmVuc2UgcG9saWN5IHNpbmNlIHN1bW1lciAyMDE3LCB0aGUgY3JlYXRpb24gb2YgYSBkZWZlbnNlIGZ1bmQgdG8gZmluYW5jZSBjb25jcmV0ZSBpbml0aWF0aXZlcywgdGhlIGNvbmNsdXNpb24gb2YgdHdvIHN0cmF0ZWdpYyBhZ3JlZW1lbnRzIGZvciB0YW5rcyBhbmQgZmlnaHRlciBqZXRzIGJldHdlZW4gR2VybWFueSBhbmQgRnJhbmNlICwgdGhlIGNvbmNsdXNpb24gd2l0aCBlaWdodCBvdGhlciBtZW1iZXIgc3RhdGVzIG9mIHRoZSBFdXJvcGVhbiBpbnRlcnZlbnRpb24gaW5pdGlhdGl2ZSB0aGF0IEkgaGFkIHByb3Bvc2VkIGluIFNlcHRlbWJlciAyMDE3IHRvIHByb21vdGUgYSBzcGlyaXQgb2YgZGVmZW5zZSBiZXR3ZWVuIEV1cm9wZWFucywgYXJlIG5vdyB3ZWxsLWtub3duIGFuZCB1bnB1Ymxpc2hlZCBhZHZhbmNlcy4gRXVyb3BlIGhhZCBuZXZlciBhZHZhbmNlZCBzbyBmYXN0IGluIGRlZmVuc2UgbWF0dGVycy48XC9wPlxuPHA+RXVyb3BlIGhhcyByZWFsaXplZCB0aGF0IGl0IG11c3QgcHJvdGVjdCBpdHNlbGYgYW5kIEZyYW5jZSBoYXMgaW4gdGhpcyBjb250ZXh0IGFzc3VtZWQgYWxsIGl0cyByZXNwb25zaWJpbGl0aWVzLCB0aHJvdWdoIHRoZSBsYXcgb2YgbWlsaXRhcnkgcHJvZ3JhbW1pbmcgcHJvbXVsZ2F0ZWQgb24gSnVseSAxNHRoLCB3aGljaCByZXN0b3JlcyBhbiB1cGRhdGVkIHN0cmF0ZWdpYyB2aXNpb24gZmFjaW5nIHRoZXNlIG5ldyB0aHJlYXRzIHRvIG91ciBjb3VudHJ5LiBhbmQgY29uc2lzdGVudCB3YXlzIHRvIHJlc3BvbmQgdG8gdGhlbS48XC9wPlxuPHA+RnJhbmNlIGFuZCBFdXJvcGUgaGF2ZSB0YWtlbiBub3RlIG9mIHRoZSBuZXcgY29udGVtcG9yYXJ5IHRocmVhdHMgYW5kIHRoZSBmYWN0IHRoYXQgd2UgbmVlZGVkIHN0cmF0ZWdpYyBhdXRvbm9teSBhbmQgZGVmZW5zZSB0byByZXNwb25kIHRvIHRoZW0uPFwvcD5cbjxwPkluIHRoZSBjb21pbmcgbW9udGhzLCBJIHdpbGwgYmUgY2Fycnlpbmcgb3V0IGEgcHJvamVjdCB0byBzdHJlbmd0aGVuIEV1cm9wZWFuIHNvbGlkYXJpdHkgaW4gdGhlIGZpZWxkIG9mIHNlY3VyaXR5LiBXZSBtdXN0IGluZGVlZCBnaXZlIG1vcmUgc3Vic3RhbmNlIHRvIEFydGljbGUgNDItNyBvZiB0aGUgVHJlYXR5IG9uIEV1cm9wZWFuIFVuaW9uLCBmaXJzdCBpbnZva2VkIGJ5IEZyYW5jZSBpbiAyMDE1LCBhZnRlciB0aGUgYXR0YWNrcy4gRnJhbmNlIGlzIHJlYWR5IHRvIGVudGVyIGludG8gYSBjb25jcmV0ZSBkaXNjdXNzaW9uIGJldHdlZW4gRXVyb3BlYW4gU3RhdGVzIG9uIHRoZSBuYXR1cmUgb2YgdGhlIG11dHVhbCBsaW5rcyBvZiBzb2xpZGFyaXR5IGFuZCBtdXR1YWwgZGVmZW5zZSBpbXBsaWVkIGJ5IG91ciBjb21taXRtZW50cyB1bmRlciB0aGUgVHJlYXR5LiBFdXJvcGUgY2FuIG5vIGxvbmdlciByZXN0b3JlIGl0cyBzZWN1cml0eSB0byB0aGUgVW5pdGVkIFN0YXRlcyBhbG9uZS4gSXQgaXMgdXAgdG8gdXMgdG9kYXkgdG8gdGFrZSBvdXIgcmVzcG9uc2liaWxpdGllcyBhbmQgZ3VhcmFudGVlIHNlY3VyaXR5IGFuZCB0aGVyZWZvcmUgRXVyb3BlYW4gc292ZXJlaWdudHkuPFwvcD5cbjxwPldlIG11c3QgdGFrZSBhbGwgdGhlIGNvbnNlcXVlbmNlcyBvZiB0aGUgZW5kIG9mIHRoZSBjb2xkIHdhci4gVG9kYXksIGFsbGlhbmNlcyBzdGlsbCBoYXZlIGFsbCB0aGVpciByZWxldmFuY2UsIGJ1dCB0aGUgYmFsYW5jZXMsIHNvbWV0aW1lcywgdGhlIGF1dG9tYXRpc21zIG9uIHdoaWNoIHRoZXkgd2VyZSBidWlsdCBhcmUgdG8gYmUgcmV2aXNpdGVkLiBBbmQgdGhhdCBhbHNvIGltcGxpZXMgZm9yIEV1cm9wZSB0byBkcmF3IGFsbCB0aGUgY29uc2VxdWVuY2VzLiBUaGlzIHJlaW5mb3JjZWQgc29saWRhcml0eSB3aWxsIGludm9sdmUgcmV2aXNpdGluZyB0aGUgRXVyb3BlYW4gZGVmZW5zZSBhbmQgc2VjdXJpdHkgYXJjaGl0ZWN0dXJlLiBPbiB0aGUgb25lIGhhbmQsIGJ5IGluaXRpYXRpbmcgYSByZW5ld2VkIGRpYWxvZ3VlIG9uIGN5YmVyIHNlY3VyaXR5LCBjaGVtaWNhbCB3ZWFwb25zLCBjb252ZW50aW9uYWwgd2VhcG9ucywgdGVycml0b3JpYWwgY29uZmxpY3RzLCBzcGFjZSBzZWN1cml0eSBvciB0aGUgcHJvdGVjdGlvbiBvZiBwb2xhciBhcmVhcywgZXNwZWNpYWxseSB3aXRoIFJ1c3NpYS48XC9wPlxuPHA+SSBob3BlIHRoYXQgd2UgbGF1bmNoIGEgY29tcHJlaGVuc2l2ZSByZWZsZWN0aW9uIG9uIHRoZXNlIHRvcGljcyB3aXRoIGFsbCBvZiBvdXIgRXVyb3BlYW4gcGFydG5lcnMgaW4gdGhlIGJyb2FkIHNlbnNlLCBhbmQgdGhlcmVmb3JlIHdpdGggUnVzc2lhLiBTdWJzdGFudGlhbCBwcm9ncmVzcyB0b3dhcmRzIHJlc29sdmluZyB0aGUgVWtyYWluaWFuIGNyaXNpcywgYXMgd2VsbCBhcyByZXNwZWN0IGZvciB0aGUgT1NDRSBmcmFtZXdvcmsgLSBJIGFtIHRoaW5raW5nIGluIHBhcnRpY3VsYXIgb2YgdGhlIHNpdHVhdGlvbiBvZiBvYnNlcnZlcnMgaW4gRG9uYmFzcyAtIHdpbGwgb2YgY291cnNlIGJlIHByZXJlcXVpc2l0ZXMgZm9yIHJlYWwgcHJvZ3Jlc3Mgd2l0aCBNb3Njb3cuIEJ1dCB0aGF0IHNob3VsZCBub3Qgc3RvcCB1cyBmcm9tIHdvcmtpbmcgcmlnaHQgbm93IGJldHdlZW4gRXVyb3BlYW5zLiBJJiMzOTttIGNvdW50aW5nIG9uIHlvdSBmb3IgdGhhdC48XC9wPlxuPHA+T24gdGhlIG90aGVyIGhhbmQsIHdlIHdpbGwgcmV2aXNpdCB0aGlzIEV1cm9wZWFuIGFyY2hpdGVjdHVyZSBieSByZWFmZmlybWluZyB0aGUgcmVsZXZhbmNlIG9mIHRoZSBDb3VuY2lsIG9mIEV1cm9wZSwgd2hpY2ggRnJhbmNlIHdpbGwgY2hhaXIgaW4gMjAxOSB0aGUgQ29tbWl0dGVlIG9mIE1pbmlzdGVycywgYW5kIG91ciBkZW1vY3JhdGljIHZhbHVlcy4gT24gdGhpcyBzdWJqZWN0IHdlIGRvIG5vdCBoYXZlIHRvIGdpdmUgaW4gdG8gYW55IGZhc2NpbmF0aW9uIHdoYXRzb2V2ZXIsIGFuZCB3aGljaCB3ZSBzZWUgYXBwZWFyaW5nIGV2ZXJ5d2hlcmUgaW4gdGhlIEV1cm9wZWFuIFVuaW9uOyB0aGVzZSBmYXNjaW5hdGlvbnMgZm9yIHRoZSBpbGxpYmVyYWwgZGVtb2NyYWNpZXMgb3IgZm9yIGEgZm9ybSBvZiBlZmZpY2llbmN5IHRoYXQgd291bGQgcGFzcyBieSB0aGUgcmVudW5jaWF0aW9uIG9mIGFsbCBvdXIgcHJpbmNpcGxlcy4gTm8uIE91ciBzZWN1cml0eSBkZXBlbmRzIG9uIHRoZSByZWFmZmlybWF0aW9uIG9mIG91ciB2YWx1ZXMsIGh1bWFuIHJpZ2h0cyB3aGljaCBhcmUgYXQgdGhlIHZlcnkgZm91bmRhdGlvbiwgbm90IG9ubHkgb2YgdGhlIENvdW5jaWwgb2YgRXVyb3BlLCBidXQgb2YgdGhlIEV1cm9wZWFuIFVuaW9uLCBhbmQgdGhlIGRlZmVuc2Ugb2YgYWxsIHRob3NlIHdobyB3ZWFyIHRoZW0gZXZlcnkgZGF5LiBkYXksIEkgdGhpbmsgb2Ygbm9uLWdvdmVybm1lbnRhbCBvcmdhbml6YXRpb25zLCBpbnRlbGxlY3R1YWxzLCBhcnRpc3RzLCBhY3RpdmlzdHMsIGpvdXJuYWxpc3RzLiBBbmQgb24gdGhpcyBzdWJqZWN0IHRvbywgd2Ugd2lsbCBoYXZlIHRvIHRha2UsIGluIHBhcnRpY3VsYXIsIG9uIHRoZSBzaWRlbGluZXMgb2YgdGhlIEdlbmVyYWwgQXNzZW1ibHkgb2YgdGhlIFVuaXRlZCBOYXRpb25zIHNldmVyYWwgaW5pdGlhdGl2ZXMuPFwvcD5cbjxwPlRoZSBzZWNvbmQgZ29hbCBJIGFzc2lnbmVkIGEgeWVhciBhZ28gdG8gb3VyIGRpcGxvbWFjeSBpcyB0aGUgcHJvbW90aW9uIG9mIHRoZSBjb21tb25zLCB0aGUgcHJvdGVjdGlvbiBvZiB0aGUgcGxhbmV0LCBjdWx0dXJlLCB0aGUgZWR1Y2F0aW9uIG9mIG91ciBjaGlsZHJlbiwgdGhlIGhlYWx0aCBvZiBwb3B1bGF0aW9ucywgdHJhZGUgb3IgdGhlIGRpZ2l0YWwgc3BhY2UgYXJlIHRoZSBlbGVtZW50cyBvZiBXb3JsZCBIZXJpdGFnZSB0aGF0IHdlIG11c3QgZGVmZW5kLiBCdXQgZm9yIHRoYXQsIGl0IGlzIG5lY2Vzc2FyeSBmaXJzdCBvZiBhbGwgY29sbGVjdGl2ZSBydWxlcywgYWNjZXB0ZWQgYnkgYWxsLCBlc3NlbnRpYWwgdG8gYWxsb3cgdGhlIGdvb2QgY29vcGVyYXRpb24sIGFuZCB0aHVzIHRoZSBwcm9ncmVzc2VzIGluIHRoZSBkZWZlbnNlIG9mIHRoZXNlIGNvbW1vbiBnb29kcy4gVGhlIGZpcnN0IHRocmVhdCB0byBvdXIgY29tbW9uIGdvb2RzIGlzIHRoZSBjcmlzaXMgb2YgbXVsdGlsYXRlcmFsaXNtIGl0c2VsZi48XC9wPlxuPHA+TXVsdGlsYXRlcmFsaXNtIGlzIGluIGZhY3QgZ29pbmcgdGhyb3VnaCBhIG1ham9yIGNyaXNpcyB0aGF0IGlzIGNvbWluZyBpbnRvIGFsbCBvZiBvdXIgZGlwbG9tYXRpYyBhY3Rpb25zLCBmaXJzdCBhbmQgZm9yZW1vc3QsIGJlY2F1c2Ugb2YgQW1lcmljYW4gcG9saWN5LiBUaGUgZG91YnQgYWJvdXQgTkFUTywgdGhlIHVuaWxhdGVyYWwgYW5kIGFnZ3Jlc3NpdmUgdHJhZGUgcG9saWN5IGxlYWRpbmcgdG8gYSBxdWFzaS1jb21tZXJjaWFsIHdhciB3aXRoIENoaW5hLCBFdXJvcGUgYW5kIGEgZmV3IG90aGVycywgdGhlIHdpdGhkcmF3YWwgb2YgdGhlIFBhcmlzIGFncmVlbWVudCwgdGhlIGV4aXQgb2YgdGhlIElyYW5pYW4gbnVjbGVhciBhZ3JlZW1lbnQgYXJlIHNvIG1hbnkgYnJhbmRzLiBUaGUgcGFydG5lciB3aXRoIHdob20gRXVyb3BlIGhhZCBidWlsdCB0aGUgcG9zdC13YXIgbXVsdGlsYXRlcmFsIG9yZGVyIHNlZW1zIHRvIGJlIHR1cm5pbmcgaXRzIGJhY2sgb24gdGhpcyBzaGFyZWQgaGlzdG9yeS4gRnJhbmNlLCBlYWNoIHRpbWUsIHdhcyB0aGUgZmlyc3QgYW5kIGNsZWFyZXN0IGluIGl0cyBvcHBvc2l0aW9uIHRvIHRoZXNlIGRlY2lzaW9ucywgYnV0IHdoaWxlIHNlZWtpbmcsIGVhY2ggdGltZSwgdG8gY29udmluY2UgYmVmb3JlIHRoZXNlIGRlY2lzaW9ucyBhcmUgbWFkZSwgYW5kIHRvIG1haW50YWluIHRoZSBpbmRpc3BlbnNhYmxlIHF1YWxpdHkgZGlhbG9ndWUgYmV0d2VlbiBvdXIgdHdvIGNvdW50cmllcy4gQW5kIEkgZnVsbHkgY2xhaW0gdGhhdC48XC9wPlxuPHA+Q2hpbmEsIHdoaWxlIGFjdGl2ZWx5IHBhcnRpY2lwYXRpbmcgaW4gdGhlIGNsYXNzaWMgbXVsdGlsYXRlcmFsIGdhbWUsIHByb21vdGVzIGl0cyBvd24gdmlzaW9uIG9mIHRoZSB3b3JsZCwgaXRzIG93biB2aXNpb24gb2YgcmVpbnZlbnRlZCwgbW9yZSBoZWdlbW9uaWMgbXVsdGlsYXRlcmFsaXNtLiBPdGhlciBwb3dlcnMgZG8gbm90IHJlYWxseSBwbGF5IHRoZSBnYW1lIG9mIG11bHRpbGF0ZXJhbCBjby1vcGVyYXRpb24sIGFuZCB0aGUgY29sbGFwc2Ugb2YgdGhpcyBzdXBwb3NlZCBXZXN0ZXJuIG9yZGVyIHdvdWxkIG5vdCBjYXVzZSB0aGVtIHNvIG11Y2ggZGlmZmljdWx0eS48XC9wPlxuPHA+SW4gdGhpcyBjb250ZXh0LCBGcmFuY2UgaXMgc29tZXRpbWVzIGNyaXRpY2l6ZWQgZm9yIGNvbnRpbnVpbmcgdGhlIGRpYWxvZ3VlLCB0aGUgZWZmb3J0cyB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzLCB3aGlsZSBpdCBpcyBvYnZpb3VzLCBldmVuIGluIHRoZSBjdXJyZW50IGNpcmN1bXN0YW5jZXMsIHRoYXQgdGhlIGRpYWxvZ3VlIHdpdGggV2FzaGluZ3RvbiByZW1haW5zIGVzc2VudGlhbC4gQW5kIEkgbXVzdCB0ZWxsIHlvdSB0aGF0IHRoZSBzaXR1YXRpb24gaXMgaW4gbXkgZXllcyB2ZXJ5IGRpZmZlcmVudCBmcm9tIHdoYXQgaXMgZGVzY3JpYmVkIG1vc3Qgb2YgdGhlIHRpbWUuIEZpcnN0bHkgYmVjYXVzZSB0aGUgbW92ZW1lbnQgb2YgaXNvbGF0aW9uaXNtIG9yIHVuaWxhdGVyYWxpc20sIEkgc2hvdWxkIHNheSwgdGhhdCB0aGUgVW5pdGVkIFN0YXRlcyBsaXZlcyBpcyBub3QgdG90YWxseSBuZXcsIGl0IGhhcyBhbHJlYWR5IGV4aXN0ZWQgaW4gdGhlIGRpc3RhbnQgcGFzdCwgaWYgd2UgcmVmZXIgdG8gSkFDS1NPTiwgYnV0IGl0IGhhZCBhbHJlYWR5IGJlZ3VuIHdpdGggdGhlIHByZXZpb3VzIGFkbWluaXN0cmF0aW9uIGluIGNlcnRhaW4gdGhlYXRlcnMgb2Ygb3BlcmF0aW9ucyBhbmQgaW4gY2VydGFpbiByZWdpb25zLjxcL3A+XG48cD5UaGlzIEFtZXJpY2FuIHBvc2l0aW9uLCBvZiBjb3Vyc2UsIHdlYWtlbnMgY29udGVtcG9yYXJ5IG11bHRpbGF0ZXJhbGlzbSBiZWNhdXNlIGl0IGhpbmRlcnMgZWZmaWNpZW5jeSBhbmQgY2FuIGxlYWQgdG8gdGhlIGVtZXJnZW5jZSBvZiBhbHRlcm5hdGl2ZSBtb2RlbHMgdGhhdCBhcmUgbW9yZSBoZWdlbW9uaWMgYW5kIGRpc3Jlc3BlY3RmdWwgb2Ygb3VyIHZhbHVlcy4gQnV0IHRvIG1lLCBpdCBtdXN0IGJlIHNlZW4gbW9yZSBhcyBhIHN5bXB0b20gdGhhbiBhIGNhdXNlLCB0aGUgc3ltcHRvbSBvZiB0aGUgY3Jpc2lzIG9mIGNvbnRlbXBvcmFyeSBjYXBpdGFsaXN0IGdsb2JhbGl6YXRpb24gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbGliZXJhbCBXZXN0cGhhbGlhbiBtb2RlbC48XC9wPlxuPHA+VGhpcyBnbG9iYWxpemF0aW9uIGFuZCB0aGlzIG11bHRpbGF0ZXJhbGlzbSBoYXZlIGhhZCBwb3NpdGl2ZSBlZmZlY3RzIHRoYXQgbXVzdCBub3QgYmUgdW5kZXJlc3RpbWF0ZWQ6IHRoZXkgaGF2ZSBsaWZ0ZWQgaHVuZHJlZHMgb2YgbWlsbGlvbnMgb2YgcGVvcGxlIG91dCBvZiBwb3ZlcnR5IG9uIHRoZSBwbGFuZXQsIHRoZXkgZW5kZWQgYW4gaWRlb2xvZ2ljYWwgY29uZmxpY3QgdGhhdCBkaXZpZGVkIHRoZSB3b3JsZCwgdGhleSBoYXZlIGFsbG93ZWQgYSBwaGFzZSBvZiB1bnByZWNlZGVudGVkIHByb3NwZXJpdHkgYW5kIGZyZWVkb20sIHRoZSBwZWFjZWZ1bCBleHBhbnNpb24gb2YgaW50ZXJuYXRpb25hbCB0cmFkZSwgd2hpY2ggaXMgYSByZWFsaXR5IG9mIHRoZSBsYXN0IGRlY2FkZXMuIEhvd2V2ZXIsIHRoaXMgZWNvbm9taWMsIHNvY2lhbCBhbmQgcG9saXRpY2FsIG9yZGVyIGlzIGluIGNyaXNpcy4gRmlyc3QsIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGFibGUgdG8gcmVndWxhdGUgdGhlIGV4Y2Vzc2VzIG9mIGl0cyBvd246IHRyYWRlIGltYmFsYW5jZXMgdGhhdCBoYXZlIGRlZXBseSBhZmZlY3RlZCBzb21lIHJlZ2lvbnMsIGxvc2VycyBvZiBnbG9iYWxpemF0aW9uLCBsb25nLWZvcmdvdHRlbiBlbnZpcm9ubWVudGFsIGRpc2FzdGVycywgY29uc2lkZXJhYmxlIGluZXF1YWxpdGllcyB3aXRoaW4gb3VyIHNvY2lldGllcyBhbmQgYmV0d2VlbiBvdXIgY29tcGFuaWVzLjxcL3A+XG48cD5BbmQgZnJvbSBCcmV4aXQgdG8gdGhlIGNvbnRlbXBvcmFyeSBBbWVyaWNhbiBwb3NpdGlvbiwgaXQgaXMgdGhpcyBkaXNjb21mb3J0IHdpdGggY29udGVtcG9yYXJ5IGdsb2JhbGl6YXRpb24gdGhhdCBpcyBleHByZXNzZWQuIFNpbXBseSwgdGhlIGFuc3dlciB0byBteSBleWVzIGRvZXMgbm90IGdvIGJ5IHVuaWxhdGVyYWxpc20sIGJ1dCBieSBhIHJlaW52ZW50aW9uLCBhIG5ldyBjb25jZXB0aW9uIG9mIGNvbnRlbXBvcmFyeSBnbG9iYWxpemF0aW9uLiBUaGVuLCB0aGlzIGNhcGl0YWxpc3QgZ2xvYmFsaXphdGlvbiBoYXMgZ2VuZXJhdGVkIGFuIGFjY2VsZXJhdGlvbiBvZiBmaW5hbmNpYWwgZmxvd3MsIGEgaHlwZXItY29uY2VudHJhdGlvbiBvZiB0ZWNobmlxdWVzLCB0YWxlbnRzLCBidXQgYWxzbyBwcm9maXRzIHRoYXQgaGF2ZSBtYWRlIGVtZXJnZSBhY3RvcnMgd2hvIGpvc3RsZSBhbmQgd2Vha2VuIG91ciBjb2xsZWN0aXZlIHJ1bGVzLCBhbmQgYmlnIHdpbm5lcnMgYXMgYmlnIGxvc2Vycy48XC9wPlxuPHA+RmluYWxseSwgYmVjYXVzZSBldmVyeXdoZXJlIGluIHRoZSB3b3JsZCwgdGhlIGRlZXAgaWRlbnRpdGllcyBvZiBwZW9wbGVzIGhhdmUgcmVzdXJmYWNlZCwgd2l0aCB0aGVpciBoaXN0b3JpY2FsIGltYWdpbmFyaWVzLiBJdCBpcyBhIGZhY3QuIFRob3NlIHdobyBiZWxpZXZlZCBpbiB0aGUgYWR2ZW50IG9mIGEgZ2xvYmFsaXplZCBwZW9wbGUsIHByb3RlY3RlZCBmcm9tIHRoZSBiaXRlcyBvZiBoaXN0b3J5LCB3ZXJlIGRlZXBseSBtaXN0YWtlbi4gRXZlcnl3aGVyZSBpbiB0aGUgd29ybGQsIHRoZSBkZWVwIHBzeWNoZSBoYXMgcmV0dXJuZWQgdG8gZWFjaCBvZiBvdXIgcGVvcGxlcywgYW5kIGl0IGlzIHRydWUsIGZyb20gSW5kaWEgdG8gSHVuZ2FyeSwgdmlhIEdyZWVjZSwgdG8gdGhlIFVuaXRlZCBTdGF0ZXMuIExvb2sgYXQgaXQgbW9yZSBjbG9zZWx5LCBpdCBpcyBzb21ldGltZXMgZGl2ZXJ0ZWQsIHNvbWV0aW1lcyBleGFjZXJiYXRlZCwgYnV0IGl0IGlzIGEgZmFjdCB0aGF0IHNheXMgc29tZXRoaW5nIGFib3V0IHRoZSByZXR1cm4gb2YgcGVvcGxlcy4gSXQmIzM5O3MgYSBnb29kIHRoaW5nIG5vIGRvdWJ0LCBpbiBhbnkgY2FzZSwgSSBiZWxpZXZlIGl0LjxcL3A+XG48cD5UaGlzIGlzIHRoZSBzaWduIHRoYXQgdGhpcyB1bmRpZmZlcmVudGlhdGVkIGdsb2JhbGl6YXRpb24gZGlkIG5vdCBhbGxvdyB1cyB0byByZXNwb25kIHRvIGV2ZXJ5dGhpbmcsIHRoYXQgaXQgZXZlbiBmYWlsZWQgdG8gYW5zd2VyIGEgZmV3IHBvaW50cywgYW5kIHRoYXQgd2UgbXVzdCB0aGVyZWZvcmUgcmV0aGluayB0aGUgcnVsZXMgYW5kIHByYWN0aWNlcyBnaXZlbiBwcmVjaXNlbHkgdGhlc2UgZmFpbHVyZXMsIG9mIHRoZXNlIHRyYW5zZm9ybWF0aW9ucy4gU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzIG5vdCBzbyBtdWNoIHdoZXRoZXIgSSBhbSBnb2luZyB0byB0YWtlIERvbmFsZCBUUlVNUCBieSB0aGUgYXJtIGF0IHRoZSBuZXh0IHN1bW1pdCwgYnV0IGhvdyB3ZSB3aWxsIGNvbGxlY3RpdmVseSBncmFzcCB0aGlzIG1vbWVudCBvZiBncmVhdCB0cmFuc2Zvcm1hdGlvbnMgdGhhdCB3ZSBhcmUgZXhwZXJpZW5jaW5nLCBhbmQgd2hpY2ggb3VyIHNvY2lldGllcyBhcmUgYWxsIGZhY2luZy48XC9wPlxuPHA+VGhlIGdyZWF0IGRlbW9ncmFwaGljIHRyYW5zZm9ybWF0aW9uLCB3aGljaCBpcyBzaGFraW5nIEFmcmljYSB0b2RheSBsaWtlIEV1cm9wZSwgYW5kIGFsbCBjb250aW5lbnRzLCBpdCBtdXN0IGJlIHNhaWQuIFRoZSBncmVhdCBlY29sb2dpY2FsIGFuZCBlbnZpcm9ubWVudGFsIHRyYW5zZm9ybWF0aW9uLCBtb3JlIGdsYXJpbmcgdGhhbiBldmVyLiBUaGUgZ3JlYXQgdHJhbnNmb3JtYXRpb24gb2YgaW5lcXVhbGl0aWVzIGFuZCB0aGUgZ3JlYXQgdGVjaG5vbG9naWNhbCB0cmFuc2Zvcm1hdGlvbi4gVGhlIHJvbGUgb2YgRnJhbmNlIGlzIHRvIHByb3Bvc2UgYSBodW1hbmlzdCB3YXkgdG8gbWVldCB0aGVzZSBjaGFsbGVuZ2VzLCBhbmQgd2l0aCBFdXJvcGUgcHJlY2lzZWx5LCB0byBwcm9wb3NlIGEgbmV3IGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uLjxcL3A+XG48cD5UaGlzIGltcGxpZXMgZmlyc3QgYW5kIGZvcmVtb3N0LCBhbmQgdGhpcyBpcyB0aGUgcHJlcmVxdWlzaXRlLCBpZiBJIG1heSBzYXkgc28sIHRvIGNoYW5nZSBzb21ld2hhdCBvdXIgZGlwbG9tYXRpYyBhcHByb2FjaC4gV2UgY2FuIG5vIGxvbmdlciBiZSBjb250ZW50IHRvIGZvbGxvdyB0aGUgcG9saXRpY2FsIGV2b2x1dGlvbnMgb3IgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUgdHJhZGl0aW9uYWwgYWN0b3JzIHdpdGhvdXQgdHJ5aW5nIHRvIGJldHRlciBkZWNpcGhlciB0aGUgZGVlcCBpZGVudGl0aWVzLCB0aGUgZm9yY2VzIHRoYXQgYXJlIGF0IHdvcmsgYW5kIGRldGVybWluZSB0aGUgY291cnNlIG9mIGV2ZW50cyBpbiBtYW55IGNvdW50cmllcy4gV2UgaGF2ZSBzZWVuLCB0byBzb21lIGV4dGVudCwgd2hhdCB3ZSBkaWQgbm90IHdhbnQgdG8gc2VlLCBvZiBwb2xpdGljYWwgZXZlbnRzLCB0aGVzZSBsYXN0IHNlbWVzdGVycywgd2l0aG91dCBxdWVzdGlvbmluZyBvdXJzZWx2ZXMsIHdpdGhvdXQgbG9va2luZyBlbm91Z2ggYXQgdGhlIGRlZXAgaWRlbnRpdGllcywgdGhlIGNvbGxlY3RpdmUgaW1hZ2luYXRpb25zIG9mIHRoZSBwZW9wbGVzIHRoYXQgSSBldm9rZWQuIGp1c3Qgbm93LiBJIHRoaW5rIHdlIG5lZWQgdG8gZG8gaXQgbW9yZSBhbmQgcmVpbnZlbnQgb3VyIG93biBtZXRob2RzLjxcL3A+XG48cD5BbmQgc29tZXRpbWVzLCB3aGF0IHdlIGRvIG5vdCB3YW50IHRvIHNlZSBoYXBwZW5zLCBiZWNhdXNlIHRoZXJlIGlzIGEgZGVlcCBsb2dpYywgcGVjdWxpYXIgdG8gdGhlIHBlb3BsZS4gSXQgaXMgcHJvYmFibHkgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgbW9yZSB0aGUgaW50aW1hY3ksIHRvIGJldHRlciBhbnRpY2lwYXRlIHRoaXMgY291cnNlIG9mIHRoaW5ncy4gQnV0IHdlIG11c3QgYWxzbyBncmFzcCB3aGF0IGlzIHByb2dyZXNzaXZlIGFuZCBodW1hbmlzdGljIGluIHRoZXNlIHZpc2lvbnMgb2YgdGhlIHdvcmxkLCBhbmQgdGhlcmVmb3JlIHRoZSB3YXlzIGFuZCBtZWFucyBvZiBuZXcgaW5pdGlhdGl2ZXMsIGFuZCBzZWVrIGluIGVhY2ggb2YgdGhlc2UgY291bnRyaWVzIG91ciBhbGxpZXMsIHRoZSB3YXlzIG9mIHBhc3NhZ2UsIHRoZSBtZWFucyB0byBidWlsZCBuZXcgY29vcGVyYXRpb25zIGFuZCBhbGxpYW5jZXMuPFwvcD5cbjxwPldlIG11c3QgYWdyZWUgdG8gZG8gc28gd2l0aCBhbGxpYW5jZXMgb2YgY2lyY3Vtc3RhbmNlLCByYXRoZXIgdGFjdGljYWwgYWxsaWFuY2VzLCBjb25jcmV0ZSBhY2NvcmRpbmcgdG8gdGhlIHN1YmplY3RzLCBhbmQgb24gdGhlIGJhc2lzIG9mIGNsZWFyIHByaW5jaXBsZXMgYW5kIG9iamVjdGl2ZXMsIGFsd2F5cyB3aXRoIHJlc3BlY3QgZm9yIG5hdGlvbmFsIHBvcHVsYXIgc292ZXJlaWdudHkuIEkgYWxyZWFkeSBtZW50aW9uZWQgaXQuIFRoaXMgbGltaXRzIG1pbGl0YXJ5IGludGVydmVudGlvbmlzbSBvciwgbW9yZSBwcmVjaXNlbHksIGl0IHJlcXVpcmVzIGFsd2F5cyB0byBwdXQgb3VyIGFjdGlvbiBpbiBhIGR5bmFtaWMgYW5kIGEgcG9saXRpY2FsIHByb2plY3QgYnJvdWdodCBjbG9zZXIgdG8gdGhlIHBlb3BsZS4gQnV0IGl0IGFsc28gbWVhbnMgdGhhdCB3ZSBtdXN0LCBldmVyeSB0aW1lLCB3b3JrIHRvIGVuc3VyZSB0aGF0IGFsbCBub24tc3RhdGUgYWN0b3JzIGNvbnRyaWJ1dGUgdG8gdGhpcyBuZXcgcmVndWxhdGlvbiBvZiB0aGUgd29ybGQsIGFiaWRlIGJ5IHRoZSBydWxlcywgYW5kIGNhbiBub3QgYmUgc29tZWhvdyBzdG93YXdheXMgb3IgaGlkZGVuIHJlZmVyZWVzLjxcL3A+XG48cD5UaGUgYW5zd2VyIGRvZXMgbm90IGdvIGJ5IHVuaWxhdGVyYWxpc20sIGJ1dCBieSBhIHJlb3JnYW5pemF0aW9uIG9mIG91ciBhY3Rpb24gYXJvdW5kIHNvbWUgc3RyYXRlZ2ljIGNvbW1vbiBnb29kcywgYW5kIGJ5IHRoZSBjb25zdHJ1Y3Rpb24gb2YgbmV3IGFsbGlhbmNlcy4gRmlyc3QsIGl0IGlzIGluIHRoZSBmaWdodCBhZ2FpbnN0IGNsaW1hdGUgY2hhbmdlLCBmaXJzdCwgdGhlIFBhcmlzIGNsaW1hdGUgYWdyZWVtZW50IG11c3QgY29udGludWUgdG8gYmUgZGVmZW5kZWQuIFdlIHNlZSBldmVyeSBkYXksIHdpdGggdGhlIGludGVuc2lmaWNhdGlvbiBvZiBjbGltYXRlIGV4dHJlbWVzIGFuZCBuYXR1cmFsIGRpc2FzdGVycywgdGhlIGNvbmZpcm1hdGlvbiBvZiB0aGUgdXJnZW5jeSBvZiB0aGlzIGZpZ2h0LiBBbmQgd2UgY29udGludWUgdG8gbGVhZCBpdCwgYW5kIHdlIHdpbGwgY29udGludWUgd2l0aCBjb25jcmV0ZSBhY3Rpb25zLjxcL3A+XG48cD5UaGUgT25lIFBsYW5ldCBTdW1taXQsIHdoaWNoIEZyYW5jZSB0b29rIHRoZSBpbml0aWF0aXZlIHdpdGggdGhlIFVOIGFuZCB0aGUgV29ybGQgQmFuaywgb24gRGVjZW1iZXIgMTIgaW4gUGFyaXMsIG1hZGUgaXQgcG9zc2libGUgdG8gYWRvcHQgbmV3LCBzdWJzdGFudGlhbCBmaW5hbmNpYWwgY29tbWl0bWVudHMuIEEgbmV3IGludGVybmF0aW9uYWwgZm9sbG93LXVwIHN1bW1pdCB3aWxsIGJlIGhlbGQgb24gU2VwdGVtYmVyIDI2IGluIE5ldyBZb3JrLiBXZSBtdXN0IGNvbnRpbnVlIHRvIG1vYmlsaXplIGFsbCBhY3RvcnMgaW52b2x2ZWQgaW4gdGhpcyBmaWdodDogY29tcGFuaWVzLCBub24tZ292ZXJubWVudGFsIG9yZ2FuaXphdGlvbnMsIGxvY2FsIGF1dGhvcml0aWVzLCBtYWpvciBpbnRlcm5hdGlvbmFsIGZvdW5kYXRpb25zLjxcL3A+XG48cD5UaGlzIGZpZ2h0IGZvciB0aGUgcGxhbmV0IHdpbGwgcmVtYWluIGF0IHRoZSBoZWFydCBvZiBvdXIgZm9yZWlnbiBwb2xpY3ksIGFzIHNob3duIGJ5IHRoZSBwbGFjZSB0YWtlbiBieSB0aGlzIHRoZW1lIGluIG15IHZpc2l0cyB0byB0aGUgSG9seSBTZWUsIENoaW5hIGFuZCBJbmRpYSwgZXNwZWNpYWxseSB3aXRoIHRoZSBmaXJzdCBzdW1taXQuIG9mIHRoZSBJbnRlcm5hdGlvbmFsIFNvbGFyIEFsbGlhbmNlIHRoYXQgd2Ugb3JnYW5pemVkIHdpdGggSW5kaWEuIEl0IG11c3QgYWxzbyBiZSByZWZsZWN0ZWQgaW4gdGhlIG5lZ290aWF0aW9uIGFuZCBhZG9wdGlvbiBvZiBhIG5ldyBnbG9iYWwgZW52aXJvbm1lbnQgcGFjdCwgd2hpY2ggSSBiZWxpZXZlIGlzIGEgcHJpb3JpdHkgb2JqZWN0aXZlLCBhbmQgd2hpY2ggd2lsbCBpbnZvbHZlIHRoZSBtb2JpbGl6YXRpb24gb2YgYWxsIG91ciBkaXBsb21hY3ksIGJ1dCBhbHNvIHRocm91Z2ggYWN0aXZlIHByZXBhcmF0aW9uIG1ham9yIG1pbGVzdG9uZXMgb2YgbmVnb3RpYXRpb25zIG9uIGJpb2RpdmVyc2l0eSBpbiAyMDE5IGFuZCAyMDIwLiBBbmQgYSBtb2JpbGl6YXRpb24gb24gdGhlIHN1YmplY3Qgb2YgdGhlIG9jZWFucyBhcyBwb2xlcyB3aGljaCB3aWxsIGltcGx5LCBhZ2FpbiwgdGhlIG1vYmlsaXphdGlvbiBvZiBtYW55IHBvc2l0aW9ucy48XC9wPlxuPHA+VGhpcyBlbnZpcm9ubWVudGFsIGRpcGxvbWFjeSBpcyBtYWpvciB0byByZXNwb25kIHRvIHRoaXMgZ3JlYXQgdXBoZWF2YWwgaW4gdGhlIHdvcmxkLiBJdCBpcyBtYWpvciBiZWNhdXNlIGl0IGNoYXJhY3Rlcml6ZXMgdGhlIEZyZW5jaCBhbmQgRXVyb3BlYW4gY29tbWl0bWVudCBpbiB0aGlzIGFyZWEsIGJlY2F1c2UgaXQgYWxsb3dzIHRvIGZvcmdlIG5ldyBhbGxpYW5jZXMsIGVzcGVjaWFsbHkgd2l0aCBDaGluYSBhbmQgc2V2ZXJhbCBvdGhlciBwb3dlcnMsIGFuZCB0aHVzIGJ1aWxkLCBhZ2FpbiwgbmV3IGZvcm0gb2YgY29vcGVyYXRpb24gYW5kIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIHJlc3BvbmQgdmVyeSBkZWVwbHkgdG8gb3VyIGludGVyZXN0cyBpbiB0aGUgc2hvcnQsIG1lZGl1bSBhbmQgbG9uZyB0ZXJtLjxcL3A+XG48cD5UaGUgc2Vjb25kIHVuaXZlcnNhbCBnb29kIHRoYXQgd2UgaGF2ZSBwbGFjZWQgYXQgdGhlIGhlYXJ0IG9mIG91ciBwb2xpY3kgb2YgaW50ZXJuYXRpb25hbCBjb29wZXJhdGlvbiBpcyBlZHVjYXRpb24sIGN1bHR1cmUsIGtub3dsZWRnZS4gRnJhbmNlLCBpbiBmYWN0LCBzaG93ZWQgaXRzIGNvbW1pdG1lbnQgYnkgb3JnYW5pemluZyB3aXRoIFNlbmVnYWwgdGhlIHJlY29uc3RpdHV0aW9uIGNvbmZlcmVuY2Ugb2YgdGhlIEdsb2JhbCBQYXJ0bmVyc2hpcCBmb3IgRWR1Y2F0aW9uIGluIERha2FyLCBhIGZldyBtb250aHMgYWdvLCB3aGljaCByYWlzZWQgbW9yZSB0aGFuIHR3byBiaWxsaW9uIGV1cm9zIGZvciB0aGUgZWR1Y2F0aW9uIGluIHRoZSB3b3JsZCwgZXNwZWNpYWxseSB0aGUgZWR1Y2F0aW9uIG9mIHlvdW5nIGdpcmxzLCBhbmQgZm9yIHdoaWNoLCBGcmFuY2UgaGFzIG11bHRpcGxpZWQgaXRzIGNvbnRyaWJ1dGlvbiBieSAxMC48XC9wPlxuPHA+SW4gbXkgdmlldywgdGhpcyBpcyBub3Qgb25seSBvdXIgdW5pdmVyc2FsaXN0IGFuZCBodW1hbmlzdCByb2xlLCBidXQgYWxzbyB0aGUgbW9zdCBlc3NlbnRpYWwgY29udHJpYnV0aW9uIHdlIGNhbiBtYWtlIHRvIHRoZSBkZW1vZ3JhcGhpYyBjcmlzaXMgSSBtZW50aW9uZWQgZWFybGllci4gV2hlcmV2ZXIgZGVtb2dyYXBoaWNzIGJsYXplIHJlY2tsZXNzbHksIGl0IGlzIGJlY2F1c2UgZWR1Y2F0aW9uIGhhcyBkZWNsaW5lZCwgYW5kIGluIHBhcnRpY3VsYXIsIHRoZSBlZHVjYXRpb24gb2YgeW91bmcgZ2lybHMuIEFuZCB0aGlzIGlzIGEgc3BlZWNoIHRoYXQgRnJhbmNlIG11c3Qga25vdyBob3cgdG8gd2Vhci4gSG93IG11Y2ggSSB3YXMgYXR0YWNrZWQgYSBsaXR0bGUgb3ZlciBhIHllYXIgYWdvLCBJIGNhcnJpZWQgdGhpcyBzcGVlY2ggdG8gSGFtYnVyZywgYnV0IEFmcmljYW4gbGVhZGVycyBoYXZlIHRha2VuIGl0IGJhY2ssIGNhcnJpZWQgaXQsIGFuZCBhcHBseSBpdCB3aXRoIGNvdXJhZ2UuPFwvcD5cbjxwPkJ1dCB3aGVyZXZlciBkZW1vZ3JhcGh5IGhhcyBmbGFyZWQgdXAgd2l0aCBzZXZlbiBvciBlaWdodCBjaGlsZHJlbiBwZXIgd29tYW4sIHRoaXMgaXMgd2hlcmUgZm9yY2VkIG1hcnJpYWdlcyBoYXZlIHJlc3VtZWQsIHdoZXJlIHRoZSBlZHVjYXRpb24gb2YgZ2lybHMgaGFzIHJlY2VkZWQuIEFuZCBsZXQgbWUgc2VlIHRoZSBjb3VudHJpZXMgd2hlcmUgYWxsIHRoZSB5b3VuZyB3b21lbiBoYXZlIGNob3NlbiB0byBoYXZlIGVpZ2h0IG9yIG5pbmUgY2hpbGRyZW4sIGxldCBtZSBpbnRyb2R1Y2UgdGhlbSwgYmVmb3JlIHNheWluZyB0aGF0IGl0IHdvdWxkIGJlIGEgZm9ybSBvZiBuZW8taW1wZXJpYWxpc20gdG8gaG9sZCB0aGVzZSBzcGVlY2hlcyBpbiBQYXJpcywgbm8sIHdlIG11c3QgYWJvdmUgYWxsIGhlbHAgdGhvc2Ugd2hvIGhvbGQgdGhlbSBpbiBlYWNoIG9mIHRoZWlyIGNhcGl0YWwuPFwvcD5cbjxwPlRoZSBzdHJ1Z2dsZSBmb3IgZWR1Y2F0aW9uIGlzIHRoZSBiZXN0IGFuc3dlciB0byBhbGwgb2JzY3VyYW50aXNtIGFuZCB0b3RhbGl0YXJpYW5pc20uIEVkdWNhdGlvbiwgY3VsdHVyZSwgaW50ZWxsaWdlbmNlIGFyZSBhdCB0aGUgaGVhcnQgb2YgdGhpcyBmaWdodCB0aGF0IHdlIG11c3QgZmlnaHQgZXZlcnl3aGVyZS4gSXQgaXMgdGhlIG9ubHkgc3VzdGFpbmFibGUgYW5zd2VyIHRvIHRoZSBnbG9iYWwgZGVtb2dyYXBoaWMgY2hhbGxlbmdlLiBBbmQgdGhpcyBpcyBob3cgd2Ugd2lsbCBmaWdodCBkZWVwbHkgYWdhaW5zdCBpbmVxdWFsaXRpZXMsIGVzcGVjaWFsbHkgYmV0d2VlbiB3b21lbiBhbmQgbWVuLiBBbmQgdGhhdCYjMzk7cyB3aHkgSSBoYXZlIG1hZGUgZWR1Y2F0aW9uLCBpbiBvdXIgY291bnRyeSBhcyB3ZWxsIGFzIGludGVybmF0aW9uYWxseSwgYSB0b3AgcHJpb3JpdHkuPFwvcD5cbjxwPkFuZCBJIGRlZXBseSBiZWxpZXZlIHRoYXQgb24gdGhpcyBzdWJqZWN0LCBGcmFuY2UgaGFzIGEgbmV3IHJvbGUgdG8gcGxheSwgZmlyc3QsIGJlY2F1c2UgaXQgaXMgaXRzIGhpc3RvcnksIGl0cyB0cmFkaXRpb24sIGZvciBhIHllYXIsIHdlIGhhdmUgYnVpbHQgYW4gYW1iaXRpb3VzIGVkdWNhdGlvbiBzdHJhdGVneSwgZnJvbSBraW5kZXJnYXJ0ZW4gdG8gdW5pdmVyc2l0eSwgd2hpY2ggSSBiZWxpZXZlIGdpdmVzIGEgc3BlY2lhbCBjcmVkaWJpbGl0eSB0byBvdXIgY291bnRyeSBpbiB0aGlzIHJlZ2FyZC4gQnV0IGxldCB1cyBhbHNvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB3aGF0IHdlIGFyZSwgYW5kIHRoZSBhc3NldHMgd2UgaGF2ZSwgd2UgaGF2ZSBpbiBQYXJpcyB0aGUgaGVhZHF1YXJ0ZXJzIG9mIHRocmVlIGtleSBpbnRlcm5hdGlvbmFsIG9yZ2FuaXphdGlvbnMgaW4gdGhlc2UgZmllbGRzOiBVTkVTQ08sIHdob3NlIG5ldyBEaXJlY3RvciBHZW5lcmFsIGhhcyBiZWd1biB0byBjYXJyeSBvdXQgcmVzb2x1dGUgYWN0aW9uIHRoYXQgV2Ugc3Ryb25nbHkgc3VwcG9ydCB0aGUgT0VDRCwgd2hpY2ggaGFzIGdhaW5lZCB1bmRpc3B1dGVkIGNyZWRpYmlsaXR5IGluIGFzc2Vzc2luZyBlZHVjYXRpb25hbCBwZXJmb3JtYW5jZSwgdGhlIEludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIG9mIExhIEZyYW5jb3Bob25pZSwgd2hpY2ggaXMgYWxzbyBhIHN0cm9uZyBhbWJpdGlvbiBhbmQgYSBwcmlvcml0eS48XC9wPlxuPHA+QW5kIGluIHJlY2VudCB5ZWFycyB3ZSBoYXZlIGxhdW5jaGVkIHNldmVyYWwgcHJvamVjdHMsIHRoZSBBTElQSCBpbml0aWF0aXZlIC0gdG8gcHJvdGVjdCBlbmRhbmdlcmVkIGN1bHR1cmFsIGhlcml0YWdlIGFuZCBtYW55IG90aGVycyAtIHRoYXQgZnVydGhlciBzdHJlbmd0aGVucyB0aGlzIHN0cmVuZ3RoLiBBZGQgdG8gdGhhdCBvdXIgaW5jcmVhc2VkIHJvbGUgd2l0aGluIHRoZSBHbG9iYWwgUGFydG5lcnNoaXAgZm9yIEVkdWNhdGlvbiB0aGF0IEkgd2lzaCBldmVuIG1vcmUgYWN0aXZlIGFuZCBwcmVzZW50IGluIFBhcmlzLCB3ZSBoYXZlIGV2ZXJ5dGhpbmcgdG8gbWFrZSBGcmFuY2UgYSBnbG9iYWwgZWNvc3lzdGVtIG9mIGtub3dsZWRnZSwgaW50ZWxsaWdlbmNlIGFuZCBjdWx0dXJlLCB0aGF0IHlvdSBtdXN0IHNoaW5lIHRocm91Z2hvdXQgdGhlIHdvcmxkLCB0aHJvdWdoIGFjYWRlbWljLCBzY2llbnRpZmljIGFuZCByZXNlYXJjaCBjb29wZXJhdGlvbi48XC9wPlxuPHA+SSBiZWxpZXZlIHRoYXQgaXQgaXMgYm90aCBhbiBlc3NlbnRpYWwgY29tbW9uIGdvb2QgdGhhdCB3ZSBtdXN0IGRlZmVuZCwgYnV0IEkgYmVsaWV2ZSBpdCBpcyBhbHNvIGEgdHJlbWVuZG91cyBsZXZlciBvZiBpbmZsdWVuY2UgZm9yIG91ciBjb3VudHJ5LjxcL3A+XG48cD5UaGlyZCBjb21tb24gZ29vZCBpcyBoZWFsdGguIE9uIHRoaXMgc3ViamVjdCwgRnJhbmNlIHdpbGwgcmVzdW1lIGl0cyBjb21taXRtZW50cyBieSBtZWV0aW5nIG9uIDEwIE9jdG9iZXIgMjAxOSwgaW4gTHlvbiwgdGhlIHJlcGxlbmlzaG1lbnQgY29uZmVyZW5jZSBvZiB0aGUgR2xvYmFsIEZ1bmQgYWdhaW5zdCBBSURTLCBtYWxhcmlhIGFuZCB0dWJlcmN1bG9zaXMuIEJ1dCBpbiB0aGUgbWVhbnRpbWUsIEkgaG9wZSB0aGF0IHdlIHdpbGwgcmVzdW1lIHdpdGggZm9yY2UgdGhlIGltcG9ydGFudCBmaWdodCBhZ2FpbnN0IGZha2UgZHJ1Z3MsIHdoaWNoIEZyYW5jZSBoYWQgaW5pdGlhdGVkLCBhbmQgdGhhdCB3ZSBpbnRlbnNpZnkgb3VyIGludm9sdmVtZW50IGluIHRoZSBmaWdodCBhZ2FpbnN0IG1ham9yIHBhbmRlbWljcywgSSB0aGluayBpbiBwYXJ0aWN1bGFyIHRoZSBmaWdodCBhZ2FpbnN0IEVib2xhIGluIENlbnRyYWwgQWZyaWNhLjxcL3A+XG48cD5UaGUgZm91cnRoIGZ1bmRhbWVudGFsIGNvbW1vbiBnb29kIGlzIHRoZSBkaWdpdGFsIHNwYWNlLiBXZSBtdXN0IHNpbXVsdGFuZW91c2x5IHN1cHBvcnQgaXRzIGdyb3d0aCwgaW52ZXN0IGluIHRoZSBwcm9tb3Rpb24gb2Ygb3VyIHN0cmF0ZWdpYyBhbmQgZWNvbm9taWMgaW50ZXJlc3RzLCBhbmQgZnJhbWUgaXQgc28gdGhhdCBpdCBjYW4gYmUgYWNjZXNzaWJsZSB0byBhbGwgYW5kIHByb3RlY3Qgb3VyIGZ1bmRhbWVudGFsIHJpZ2h0cy4gVGhpcyBncmVhdCB1cGhlYXZhbCBpcyBleGFjdGx5IHRoZSBtZWFuaW5nIG9mIHRoZSBUZWNoIEZvciBHb29kIFN1bW1pdCwgaGVsZCBpbiBQYXJpcyBsYXN0IHNwcmluZywgYW5kIHdoaWNoIHdlIHdpbGwgcmVuZXcgZXZlcnkgeWVhciwgdG8gZW5jb3VyYWdlIHJlZmxlY3Rpb24gb24gdGhlIGVzc2VudGlhbCByZWd1bGF0aW9ucyBpbiB0aGVzZSBuZXcgc2VjdG9ycywgd2l0aCBhbGwgdGhlIGludGVybmF0aW9uYWwgcGxheWVycyBhbmQgdG8gdGFrZSBjb25jcmV0ZSBtZWFzdXJlcyBhbmQgY29tbWl0bWVudHMgYXMgd2VsbC4gV2hldGhlciBpdCBpcyB0YXhhdGlvbiwgcHJpdmFjeSwgc29jaWFsIHJpZ2h0cywgZXRoaWNzLCB3ZSBtdXN0IGZvcmdlIHJlc3BlY3RmdWwgcmVzcG9uc2VzIHRvIHRoZSBzb3ZlcmVpZ250eSBvZiBjb3VudHJpZXMsIG5ldmVyIGFjY2VwdGluZyB0aGF0IHN1Y2ggb3Igc3VjaCBlY29ub21pYyBhY3Rvciwgc3VjaCBvciBzdWNoIHNwYWNlIG9mIGh1bWFuIGFjdGl2aXR5LCBjYW4gZXNjYXBlIG91ciBzb3ZlcmVpZ250eSBhbmQgb3VyIHZpZ2lsYW5jZS48XC9wPlxuPHA+VGhpcyBpcyB0aGUgc2Vuc2Ugb2YgdGhlIGNvbW1pdG1lbnQgd2UgaGF2ZSBtYWRlLCBwYXJ0aWN1bGFybHkgd2l0aCB0aGUgVW5pdGVkIEtpbmdkb20sIGF0IEV1cm9wZWFuIGxldmVsIGFuZCBhdCB0aGUgaW50ZXJuYXRpb25hbCBsZXZlbCwgdG8gY29tYmF0IHRoZSBzcHJlYWQgb2YgdGVycm9yaXN0IG1lc3NhZ2VzIG9yIHRlcnJvcmlzdC1yZWxhdGVkIGNvbnRlbnQuIEl0IGlzIHRoZSByZWd1bGF0b3J5IHdvcmsgdGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIHB1cnN1ZSBhdCBFdXJvcGVhbiBhbmQgaW50ZXJuYXRpb25hbCBsZXZlbCwgcHJlY2lzZWx5IHRvIGluY3JlYXNlIGdvb2QgcHJhY3RpY2VzIGluIHRoZSBmaWVsZC4gT24gTm92ZW1iZXIgMTIsIGluIFBhcmlzLCB0aGUgSW50ZXJuZXQgR292ZXJuYW5jZSBGb3J1bSBhbmQgdGhlIENpdmljVGVjaCBGb3J1bSB3aWxsIGJlIGhlbGQgYXQgdGhlIHNhbWUgdGltZSwgd2hpY2ggd2lsbCBhbGxvdyBwcm9ncmVzcyBvbiB0aGVzZSB0b3BpY3MuIEkgd2FudCB0byBtYWtlIEZyYW5jZSBhIG1ham9yIGNlbnRlciBvZiBhdHRyYWN0aXZlbmVzcywgYnV0IGFsc28gb2YgcmVmbGVjdGlvbiBhbmQgY29uc3RydWN0aW9uIG9mIHRoZXNlIG5ldyBydWxlcywgdG8gdGFsayBhYm91dCBjb21tb24gZ29vZHMgYW5kIHRoaXMgbmV3IGdyYW1tYXIgb2YgZ2xvYmFsaXphdGlvbi48XC9wPlxuPHA+SXQmIzM5O3MgYWxzbyBhYm91dCBvdXIgY29sbGVjdGl2ZSBvcmdhbml6YXRpb24gaW4gdHJhZGUuIEludGVybmF0aW9uYWwgdHJhZGUgaXMgZGVmaW5pdGVseSBub3QgZmFpciwgdGhlIGNvbGxlY3RpdmUgb3JnYW5pemF0aW9uIHdlIGhhdmUgdG9kYXkgaXMgbm90IHRoZSBtb3N0IGVmZmVjdGl2ZSwgYnV0IHJlc3BvbmRpbmcgd2l0aCBhYnNvbHV0ZSB1bmlsYXRlcmFsaXNtIGFuZCB0cmFkZSB3YXIgaXMgdGhlIGxlYXN0IGdvb2QgYW5zd2VyLiBUaGUgYW5zd2VyIG11c3QgZ28gdGhyb3VnaCBhbiBpbi1kZXB0aCByZWZvdW5kYXRpb24gb2Ygb3VyIGludGVybmF0aW9uYWwgd29ybGQgb3JkZXIuIFRoYXQgaXMgd2h5IEkgaW52aXRlZCB0aGUgT0VDRCBsYXN0IE1heSB0byBsYXVuY2ggYSBqb2ludCB3b3JraW5nIGdyb3VwIGJldHdlZW4gdGhlIFVuaXRlZCBTdGF0ZXMsIHRoZSBFdXJvcGVhbiBVbmlvbiwgQ2hpbmEgYW5kIEphcGFuLjxcL3A+XG48cD5XZSBuZWVkIHRvIGNsYXJpZnkgZXhpc3RpbmcgcnVsZXMsIGltcHJvdmUgZGlzcHV0ZSBzZXR0bGVtZW50LCBhZG9wdCBtb3JlIGVmZmVjdGl2ZSBpbnRlcm5hdGlvbmFsIHJlZ3VsYXRpb24sIGFuZCBpbmNvcnBvcmF0ZSBvdXIgb3duIHNvY2lhbCBhbmQgZW52aXJvbm1lbnRhbCByZXF1aXJlbWVudHMgaW50byBvdXIgdHJhZGUgcG9saWN5LiBXZSBjYW4gbm90IGhhdmUgYSBjb21tZXJjaWFsIHBvbGljeSB0aGF0LCBpbiBhIHdheSwgd291bGQgYmUgdGhvdWdodCBvZiBhcGFydCBmcm9tIGV2ZXJ5dGhpbmcuPFwvcD5cbjxwPkkgaW52aXRlIHRoZSByZXByZXNlbnRhdGl2ZXMgb2YgdGhlc2UgcG93ZXJzIG9uIHRoZSBzaWRlbGluZXMgb2YgTm92ZW1iZXIgMTEgaW4gUGFyaXMgdG8gaG9sZCBhIGZpcnN0IGNvbmZlcmVuY2Ugb24gdGhpcyBzdWJqZWN0LiBJIHRoaW5rIHRoYXQgaW4gYSBmZXcgbW9udGhzIHdlIHdpbGwgYmUgYWJsZSB0byBidWlsZCBhIG1vcmUgZWZmZWN0aXZlIGFuZCBtb3JlIGVxdWl0YWJsZSBzeXN0ZW0sIGFuZCB0aGF0IHdlIGNhbiBub3QgZ2l2ZSB3YXksIGFnYWluLCB0byB0aGUgaGVnZW1vbnkgb2YgdGhlIG9uZSBhbmQgdGhlIGRpdmlzaW9uIG9mIGFsbC48XC9wPlxuPHA+SSBhbHNvIGJlbGlldmUgdGhhdCBpbiBzb2NpYWwgbWF0dGVycywgb3VyIHdvcmxkIG9yZGVyIGNhbiBiZSByZWd1bGF0ZWQgbXVjaCBiZXR0ZXIuIEFuZCBJIHRoaW5rIHRoYXQgdGhlIDEwMCB5ZWFycyBvZiB0aGUgSUxPIGluIDIwMTkgc2hvdWxkIGFsbG93IHVzIHRvIGdvIGZ1cnRoZXIgYW5kIHRvIHNldCBhIG5ldyBhbWJpdGlvbi4gV2hlcmV2ZXIgZ2xvYmFsaXphdGlvbiBpcyBjcml0aWNpemVkLCB3aGF0IGlzIGNyaXRpY2l6ZWQgaXMgdGhlc2Ugc29jaWFsIGFiZXJyYXRpb25zLCBjcml0aWNpemVkIGJ5IHRoZSBtaWRkbGUgYW5kIG1pZGRsZSBjbGFzc2VzLCBpbiB0aGUgVW5pdGVkIEtpbmdkb20sIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBhcyBpbiBvdXIgY291bnRyeSwgaXQgaXMgdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSBubyBsb25nZXIgZm91bmQgdGhlcmUsIHRoYXQgdGhpcyBvcmRlciBoYXMgYnVpbHQgaW5lcXVhbGl0aWVzIHRoYXQgSSBtZW50aW9uZWQgZWFybGllciwgd2hpY2ggYXJlIG5vIGxvbmdlciBzdXN0YWluYWJsZS48XC9wPlxuPHA+V2UgbXVzdCB0aGVyZWZvcmUgdGhpbmsgb2YgdGhlbSwgbm90IGFnYWluc3QgZWFjaCBvdGhlciwgYnV0IGJ1aWxkLCBhcyB3ZSBoYXZlIGJlZW4gYWJsZSB0byBkbyBpbiBvdGhlciBhcmVhcywgdGhlIHdheXMgYW5kIG1lYW5zIG9mIGludGVybmF0aW9uYWwgY29vcGVyYXRpb24sIHdoaWNoIGNhbiBoZWxwIHVzIHRvIGRlZmluZSBjb21tb24gc3RhbmRhcmRzLCBhbmQgdGhlcmVmb3JlIHRoaW5rLCBoZXJlIHRvbywgdGhlIGNvbnZlcmdlbmNlIG9mIHRob3NlIHdobyB3YW50IGl0LCB0aGUgY29vcGVyYXRpb24gb2YgYWxsLiBUaGlzIGlzIHdoeSBJIHdhbnQgdG8gbWFrZSB0aGUgaXNzdWUgb2YgaW5lcXVhbGl0eSB0aGUgbWFqb3IgdG9waWMgb2YgdGhlIEZyZW5jaCBjb21taXRtZW50IGR1cmluZyB0aGUgY29taW5nIHllYXIsIGVzcGVjaWFsbHkgYXQgdGhlIEc3LCB3aGljaCB3ZSB3aWxsIGNoYWlyIGluIDIwMTkuPFwvcD5cbjxwPkl0IGlzLCBpbiB0b3RhbCwgdGhpcyByZWZvdW5kYXRpb24gb2YgdGhlIHdvcmxkIG9yZGVyIHdoaWNoIGlzIG91ciBjb3Vyc2UuIEZyYW5jZSBhbmQgRXVyb3BlIGhhdmUgYSBoaXN0b3JpYyByb2xlIHRvIHBsYXkuIEkgZG8gbm90IGJlbGlldmUgdGhhdCB0aGUgZnV0dXJlIG9mIHRoZSB3b3JsZCB3aWxsIGJlIGJ1aWx0IG9uIGhlZ2Vtb25pZXMsIG5vciBvbiB0aGVvY3JhY2llcywgbm9yIG9uIG5ldyB0b3RhbGl0YXJpYW5pc21zLiBCdXQgdGhhdCBzdXBwb3NlcyBhbiBpbW1lZGlhdGUganVtcCBvZiBvdXIgZGVtb2NyYWN5LiBXZSB3aWxsIG5vdCB3aW4gdGhpcyBiYXR0bGUgc2ltcGx5IGJ5IHNheWluZyB0aGF0IGRlbW9jcmFjaWVzIGFyZSBieSBkZWZpbml0aW9uIHJpZ2h0LCB3aGVuIHdlIGV2ZXJ5d2hlcmUgc2VlIHRoZSBleHRyZW1lcyBnb2luZyB1cCwgYW5kIHRoaXMgaW50ZXJuYXRpb25hbCBvcmRlciBmYWxsaW5nIGFwYXJ0LiBXaGVuIEkgc3BlYWsgb2YgYSBzdHJvbmcgbXVsdGlsYXRlcmFsaXNtLCBpdCBtZWFucyBsb29raW5nIGF0IHdoYXQsIGZvciBvdXIgZmVsbG93IGNpdGl6ZW5zLCBhcmUga2V5IGNoYWxsZW5nZXMsIGFuZCBrbm93aW5nIGhvdyB0byBwcm92aWRlIGFuIGludGVybmF0aW9uYWwgcmVzcG9uc2UuPFwvcD5cbjxwPkl0IGlzIGluZGVlZCBvbiB0aGUgZmxhd3Mgb2YgZ2xvYmFsIGdvdmVybmFuY2UgYW5kIHRoZSB3ZWFrZW5pbmcgb2YgZGVtb2NyYWNpZXMgdGhhdCB0aGUgaGFyZC13b24gcGVhY2Ugb2YgMTkxOCBicm9rZSBkb3duIGluIHRoZSAxOTMwcy4gVGhhdCYjMzk7cyB3aHkgSSB0b29rIHRoZSBpbml0aWF0aXZlIHRvIGludml0ZSB0byBQYXJpcyBmb3IgdGhlIGNlcmVtb25pZXMgb2YgMTEgTm92ZW1iZXIsIHNldmVyYWwgaGVhZHMgb2Ygc3RhdGUgYW5kIGdvdmVybm1lbnQgd2lsbCBpbmF1Z3VyYXRlIHRoZSBmaXJzdCBQYXJpcyBQZWFjZSBGb3J1bS4gVGhpcyBGb3J1bSBhaW1zIHRvIHN0cmVuZ3RoZW4gb3VyIGNvbGxlY3RpdmUgYWN0aW9uIGJ5IGFzc29jaWF0aW5nIFN0YXRlcyBhbmQgaW50ZXJuYXRpb25hbCBvcmdhbml6YXRpb25zLCBmaXJzdCBhbmQgZm9yZW1vc3QgdGhlIFVOLCB3aXRoIGNpdmlsIHNvY2lldHk6IE5HT3MsIGNvbXBhbmllcywgdHJhZGUgdW5pb25zLCBleHBlcnRzLCBpbnRlbGxlY3R1YWxzLCByZWxpZ2lvdXMgZ3JvdXBzLiBJbnRlcm5hdGlvbmFsIGdvdmVybmFuY2UgbXVzdCBiZSBjb25jcmV0ZWx5IGV4cHJlc3NlZCwgYW5kIGV2ZXJ5IGNpdGl6ZW4gY2FuIHRha2UgcGFydC48XC9wPlxuPHA+VGhpcyByZWZvdW5kYXRpb24gc3VwcG9zZXMgcHJlY2lzZWx5IHRoaXMgdGltZSBvZiByZWZsZWN0aW9uLCBhbmQgdGhpcyBqb2ludCBqdW1wLCBpdCBpcyB0aGF0LCBJIGhvcGUsIHRoYXQgd2Ugd2lsbCBiZSBhYmxlIHRvIG1ha2UgbGl2ZSB0aGUgMTEgTm92ZW1iZXIgbmV4dCBpbiBQYXJpcy4gVGhpcyByZWZvdW5kYXRpb24gYWxzbyBzdXBwb3NlcyB0aGF0IHdlIHJlZGVzaWduIG91ciBvcmdhbml6YXRpb25zLCBvdXIgaW5zdHJ1bWVudHMgb2YgY29uc3VsdGF0aW9uIGFuZCBvdXIgY29hbGl0aW9ucy48XC9wPlxuPHA+SW4gMjAxOSwgRnJhbmNlIHdpbGwgcHJlc2lkZSBvdmVyIHRoZSBHNy4gSSBob3BlIHdlIGNhbiByZW5ldyB0aGUgZm9ybWF0cyBhbmQgYW1iaXRpb25zLiBXZSBtdXN0LCBieSByZW1haW5pbmcgYSBjb2hlcmVudCBncm91cCBkcml2ZW4gYnkgY29tbW9uIGxldmVscyBvZiBkZXZlbG9wbWVudCBhbmQgZGVtb2NyYXRpYyBkZW1hbmRzLCBlbmdhZ2UgaW4gYSBzdHJvbmdlciwgZXZlci1ncm93aW5nIGRpYWxvZ3VlIHdpdGggQ2hpbmEgb24gY2xpbWF0ZSBhbmQgdHJhZGUsIHdpdGggSW5kaWEgb24gZGlnaXRhbCwgd2l0aCBBZnJpY2Egb24geW91dGguIEluIGFueSBjYXNlLCB3ZSBtdXN0IG5vdCByZXByb2R1Y2UgdGhpcyB0aGVhdGVyIG9mIHNoYWRvd3MgYW5kIGRpdmlzaW9ucyB3aGljaCwgSSBiZWxpZXZlLCBoYXMgd2Vha2VuZWQgdXMgbW9yZSB0aGFuIGl0IGhhcyBtb3ZlZCB1cyBmb3J3YXJkLiBCeSB0aGUgZW5kIG9mIHRoZSB5ZWFyLCBJIHdpbGwgcHJvcG9zZSB0byB0aGUgb3RoZXIgbWVtYmVyIGNvdW50cmllcyBhIHJlZm9ybSwgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzLCB3aGljaCB3aWxsIHRha2Ugb3ZlciB0aGUgcHJlc2lkZW5jeSBvZiB0aGUgRzcgaW4gMjAyMC48XC9wPlxuPHA+SW4gdGhlIHdob2xlIHdvcmxkLCBpbiBBc2lhLCBpbiBMYXRpbiBBbWVyaWNhLCBpbiBBZnJpY2EsIGl0IGlzIHRodXMgbmV3IGJhbGFuY2VzLCBuZXcgcmVsYXRpb25zaGlwcyB0aGF0IHdlIG11c3QgcmV0aGluayBvbiB0aGUgYmFzaXMgb2YgdGhlIGluLWRlcHRoIHdvcmsgdGhhdCBJIGFza2VkIHlvdS4gVGh1cywgaW4gTWFyY2ggYW5kIE1heSBvZiB0aGlzIHllYXIsIEkgcHJvcG9zZWQgdG8gTmV3IERlbGhpIGFuZCB0aGVuIHRvIFN5ZG5leSB0byB3b3JrIG9uIGEgbmV3IHN0cmF0ZWdpYyBJbmRvLVBhY2lmaWMgYXhpcywgd2hpY2ggc2hvdWxkIG5vdCBiZSBkaXJlY3RlZCBhZ2FpbnN0IGFueW9uZSBhbmQgY2FuIGJlIGFuIGVzc2VudGlhbCBjb250cmlidXRpb24gdG8gaW50ZXJuYXRpb25hbCBzdGFiaWxpdHkuIFdlIGFyZSBhbiBJbmRvLVBhY2lmaWMgUG93ZXIgd2l0aCBvdmVyIGVpZ2h0IHRob3VzYW5kIG1lbiBpbiB0aGUgcmVnaW9uIGFuZCBtb3JlIHRoYW4gYSBtaWxsaW9uIG9mIG91ciBmZWxsb3cgY2l0aXplbnMuIFdlIG11c3QgZHJhdyBhbGwgdGhlIGNvbnNlcXVlbmNlcyBhbmQgSSBob3BlIHRoYXQgeW91IGNhbiBkZWNsaW5lIHRoaXMgYXhpcyBvZiB0aGUgSW5kaWFuIE9jZWFuIHRvIHRoZSBQYWNpZmljIE9jZWFuLCB0aHJvdWdoIFNvdXRoZWFzdCBBc2lhLCByZXNvbHV0ZWx5LCBhbWJpdGlvdXNseSBhbmQgYWNjdXJhdGVseS48XC9wPlxuPHA+V2UgbXVzdCBpbmRlZWQgYnVpbGQgYSBuZXcgcmVsYXRpb25zaGlwIHRvIEFzaWEuIEl0IHdpbGwgYmUgYnVpbHQgYXJvdW5kIG91ciBlc3NlbnRpYWwgYW5kIGZydWl0ZnVsIGRpYWxvZ3VlIHdpdGggQ2hpbmEuIEkgc2FpZCB0aGF0IEkgd2lsbCBnbyB0aGVyZSBldmVyeSB5ZWFyIGFuZCBJIGxhaWQgdGhlIGdyb3VuZHdvcmsgZm9yIHRoaXMgZGlhbG9ndWUgYSBmZXcgbW9udGhzIGFnbyBpbiBYJiMzOTtpYW4uIENoaW5hIGhhcyBwb3NlZCBvbmUgb2YgdGhlIG1vc3QgaW1wb3J0YW50IGdlb3BvbGl0aWNhbCBjb25jZXB0cyBvZiByZWNlbnQgZGVjYWRlcyB3aXRoIGl0cyBuZXcgc2lsayByb3V0ZXMuIFdlIGNhbiBub3QgcHJldGVuZCB0aGF0IGl0IGRpZCBub3QgZXhpc3QuIFdlIG11c3Qgbm90IGdpdmUgaW4gdG8gYW55IGd1aWx0eSBvciBzaG9ydC10ZXJtIGZhc2NpbmF0aW9uOiBpdCBpcyBhIHZpc2lvbiBvZiBnbG9iYWxpemF0aW9uIHdoaWNoIGhhcyB0aGUgc3RhYmlsaXppbmcgdmlydHVlcyBvZiBjZXJ0YWluIHJlZ2lvbnMgYnV0IHdoaWNoIGlzIGhlZ2Vtb25pYy4gQW5kIEkgaG9wZSB0aGF0IEZyYW5jZSBjYW4gYnJpbmcgYSB2b2ljZSBvZiBiYWxhbmNlIGFuZCBwcmVzZXJ2YXRpb24gb2YgYm90aCBvdXIgaW50ZXJlc3RzIGFuZCBvdXIgd29ybGR2aWV3IGluIHRoaXMgY29uc3RydWN0aXZlLCBkZW1hbmRpbmcgYW5kIGNvbmZpZGVudCBkaWFsb2d1ZSB3aXRoIENoaW5hLjxcL3A+XG48cD5PdXIgcmVsYXRpb25zaGlwIHdpdGggSmFwYW4gaXMgYWxzbyBlc3NlbnRpYWwsIHdoaWNoIHdpbGwgcHJlc2lkZSB0aGUgRzIwIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIEc3LCBhbmQgd2FzIG91ciBsYXN0IGd1ZXN0IG9uIEp1bHkgMTQgd2l0aCBTaW5nYXBvcmUgYW5kIHdob3NlIGN1cnJlbnQgY3VsdHVyYWwgc2Vhc29uIGluIEZyYW5jZSBzaG93cyB0aGUgZGVwdGggb2Ygb3VyIHRpZXMuIFJlbGF0aW9ucyB3aXRoIEluZGlhLCB0aGUgbGFyZ2VzdCBkZW1vY3JhY3kgaW4gdGhlIHdvcmxkLCBhbmQgd2l0aCBBdXN0cmFsaWEsIGFzIHBhcnQgb2YgdGhlIEluZG8tUGFjaWZpYyBzdHJhdGVneSBhcmUgZXNzZW50aWFsLiBCdXQgaXQgaXMgbW9yZSBwYXJ0aWN1bGFybHkgd2l0aCBBZnJpY2EgdGhhdCB3ZSBtdXN0IHJlZm91bmQgdGhlc2UgY29udGVtcG9yYXJ5IGNvYWxpdGlvbnMgdGhhdCBJIG1lbnRpb25lZCBhdCB0aGUgbW9tZW50IGFuZCBvdXIgYWJpbGl0eSBwcmVjaXNlbHkgdG8gaW5mbHVlbmNlIHRoZSBjb3Vyc2Ugb2YgdGhlIHdvcmxkLjxcL3A+XG48cD5UaGUgbGVzc29uIGZyb20gRXRoaW9waWEsIExpYmVyaWEgYW5kIFNpZXJyYSBMZW9uZSBpcyB0aGF0IHRoZXJlIGlzIG5vIGluZXZpdGFiaWxpdHkgaW4gQWZyaWNhbiBpbnN0YWJpbGl0eSwgd2hldGhlciBpdCBpcyBpbnRlcm5hbCBjb25mbGljdCBvciBuZWlnaGJvcmx5IGNvbmZsaWN0LiBBZnJpY2EgaXMgbm90IG9ubHkgb3VyIGludGVybG9jdXRvciB0byB0YWxrIGFib3V0IGNyaXNlcyB0aGF0IGFmZmVjdCBpdCwgaXQgaXMgZmlyc3Qgb2YgYWxsIG91ciBhbGx5IHRvIGludmVudCB0aGUgZ3JlYXQgYmFsYW5jZXMgb2YgdGhlIHdvcmxkIG9mIHRvbW9ycm93LiBUaGF0IGlzIHdoeSBJIGFzayB5b3UgYWxsIHRvIGJlIHRoZSBhY3RvcnMgb2YgdGhpcyBkaWFsb2d1ZTogdGhlIHJlbGF0aW9uIHdpdGggQWZyaWNhLCBhbmQgaXQgaXMgYW4gZXNzZW50aWFsIG1lc3NhZ2UgdGhhdCBJIHdhbnQgdG8gbWFrZSB5b3UgcGFzcyBoZXJlLCBpcyBub3QgdGhhdCB0aGUgYnVzaW5lc3Mgb2Ygb3VyIEFtYmFzc2Fkb3JzIGluIEFmcmljYS4gV2hlbiBJIHNwZWFrIG9mIEFmcmljYSwgSSBzcGVhayBvZiB0aGUgd2hvbGUgQWZyaWNhbiBjb250aW5lbnQgaW4gaXRzIGRpdmVyc2l0eSBhbmQgaXRzIHdlYWx0aCwgYXMgSSBleHBsYWluZWQgaW4gbXkgc3BlZWNoIGluIE91YWdhZG91Z291LCBieSBpbnZpdGluZyBhbGwgdGhlIHRhbGVudHMgb2Ygb3VyIHR3byBjb250aW5lbnRzLCBhbmQgZXNwZWNpYWxseSB5b3VuZyBwZW9wbGUgRXVyb3BlYW4gYW5kIEFmcmljYW4gY291bnRyaWVzLCB0byBkaXNjdXNzIHRoZWlyIGNvbW1vbiBmdXR1cmUuPFwvcD5cbjxwPlRoZSBpbXBvcnRhbmNlIG9mIEFmcmljYSBmb3IgRnJhbmNlIGlzIG5vdCBvbmx5IHRoYXQgb2YgdGhlIG5lYXJlc3QgbmVpZ2hib3IgYnV0IGFsc28gcGFydCBvZiBvdXIgaWRlbnRpdHksIHRocm91Z2ggb3VyIHNoYXJlZCBoaXN0b3J5LCB0aHJvdWdoIHRoZSBkaWFzcG9yYXMgdGhhdCBJIGhhdmUgcGxhbm5lZCB0byBtZWV0IHRoaXMgYXV0dW1uIGFuZCBpdCBpcyBmb3IgdXMgdGhlIG5lZWQgdG8gYmV0dGVyIGludm9sdmUgaW4gdGhlIHJlbmV3YWwgb2Ygb3VyIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBjb250aW5lbnQgdGhlc2UgbGFzdC4gSSBhbHNvIGNvdW50IG9uIHRoZSBjb250cmlidXRpb24gb2YgdGhlIG1lbWJlcnMgb2YgdGhlIFByZXNpZGVudGlhbCBDb3VuY2lsIGZvciBBZnJpY2EsIHdob20gSSBzYWx1dGUgZm9yIHRoZWlyIGNvbW1pdG1lbnQgdG8gbWUuPFwvcD5cbjxwPldlIHdpbGwgbmV2ZXIgd2luIHRoZSBiYXR0bGUgdGhhdCBJIGV2b2tlZCBvbiB0aGUgY29tbW9ucywgd2Ugd2lsbCBuZXZlciBzdWNjZWVkIGluIGJ1aWxkaW5nIHRoZXNlIG5ldyBjb29wZXJhdGlvbnMgYW5kIGFsbGlhbmNlcyBmb3IgdGhlIGludGVybmF0aW9uYWwgb3JkZXIgdGhhdCBpcyBvdXJzIHdpdGhvdXQgQWZyaWNhLiBXZSB3aWxsIG5ldmVyIHdpbiB0aGUgYmF0dGxlIGZvciBiaW9kaXZlcnNpdHkgb3IgY2xpbWF0ZSBjaGFuZ2Ugd2l0aG91dCB0aGUgYWN0aXZlIHBhcnRpY2lwYXRpb24gb2YgQWZyaWNhbiBjb3VudHJpZXMuIEkgd2lsbCBiZSB0cmF2ZWxpbmcgbmV4dCBzcHJpbmcgdG8gTmFpcm9iaSwgYXQgVU5FUCBIZWFkcXVhcnRlcnMsIHRvIGNvbnRpbnVlIHRoZSBtb21lbnR1bSBvZiB0aGUgT25lIFBsYW5ldCBBZnJpY2EgU3VtbWl0IGluIHRoZSBmaWVsZC48XC9wPlxuPHA+QWZyaWNhIGlzIGFsc28gdGhlIGNvbnRpbmVudCB3aGVyZSB0aGUgZnV0dXJlIG9mIExhIEZyYW5jb3Bob25pZSBhbmQsIHRvIGEgbGFyZ2UgZXh0ZW50LCB0aGF0IG9mIG91ciBsYW5ndWFnZSBhbmQgb3VyIGN1bHR1cmFsIGluZmx1ZW5jZSBhcmUgYXQgc3Rha2UuIFRoYXQgaXMgd2h5IEkgZ2F2ZSBGcmFuY2UmIzM5O3Mgc3VwcG9ydCB0byB0aGUgY2FuZGlkYWN5IGVuZG9yc2VkIGJ5IHRoZSBBZnJpY2FuIFVuaW9uIGZvciB0aGUgcG9zdCBvZiBTZWNyZXRhcnkgR2VuZXJhbCBvZiB0aGUgSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gb2YgTGEgRnJhbmNvcGhvbmllLCBpbiB2aWV3IG9mIHRoZSBZZXJldmFuIFN1bW1pdCBvbiAxMiBPY3RvYmVyIG5leHQuPFwvcD5cbjxwPldlIGxhdW5jaGVkIGluIExhZ29zIGxhc3QgSnVseSwgdGhlIHNlYXNvbiBvZiBBZnJpY2FuIGN1bHR1cmVzLCB3aGljaCB3aWxsIGJlIG9yZ2FuaXplZCBpbiBGcmFuY2UgaW4gMjAyMCBhbmQgd2lsbCBhbGxvdywgZm9yIHRoZSBmaXJzdCB0aW1lLCBBZnJpY2EgdG8gdGVsbCBpdHNlbGYsIGluIEZyYW5jZSwgaW4gYWxsIHBsYWNlcyBvZiBjdWx0dXJlLiBOJiMzOTtHb25cdTAwZTkgRkFMTCB3aWxsIGJlIHRoZSBnZW5lcmFsIGNvbW1pc3Npb25lciBvZiB0aGlzIGN1bHR1cmFsIHNlYXNvbi4gSSB3aWxsIGFsc28gcmVjZWl2ZSB0aGlzIGF1dHVtbiB0aGUgcmVwb3J0IG9mIEJcdTAwZTluXHUwMGU5ZGljdGUgU0FWT1kgYW5kIEZlbHdpbmUgU0FSUiBvbiB0aGUgdGVtcG9yYXJ5IG9yIGRlZmluaXRpdmUgcmVzdGl0dXRpb24gdG8gQWZyaWNhIG9mIGl0cyBjdWx0dXJhbCBoZXJpdGFnZS4gV2hhdCB3ZSBidWlsZCBieSBkb2luZywgdG91Y2ggYnkgdG91Y2ggYW5kIEkgY2FuIG5vdCBkZXRhaWwgYWxsIHRoZSBheGVzIG9mIHRoaXMgcG9saWN5LCBpdCBpcyBpbiBhIHdheSB0aGUgY29udmVyc2lvbiBvZiBhIG11dHVhbCBsb29rLiBUaGUgb25lIHRoYXQgd2lsbCBhbGxvdyBGcmFuY2UgdG8gbG9vayBkaWZmZXJlbnRseSBhdCBBZnJpY2EgYnV0IGFsc28gdG8gQWZyaWNhIHRvIHNheSBkaWZmZXJlbnRseSwgdG8gdGVsbCBpdHMgb3duIHBhc3QsIGl0cyBvd24gcHJlc2VudCBkaWZmZXJlbnRseSB0byB0aGUgZmFjZSBvZiB0aGUgd29ybGQgYW5kIHRvIGJ1aWxkIGEgbmV3IGltYWdpbmF0aW9uIGJldHdlZW4gRnJhbmNlIGFuZCBGcmFuY2UuIEFmcmljYW4gY29udGluZW50LjxcL3A+XG48cD5JIGJlbGlldmUgaXQgaXMgYW4gZXNzZW50aWFsIHBhcnQgb2Ygb3VyIGRpcGxvbWFjeSBiZWNhdXNlIGl0IGlzIG9uZSBvZiB0aGUga2V5cyB0byByZXNwb25kaW5nIHRvIHRoZSBpbnN0YWJpbGl0eSB0aGF0IGV4aXN0cyBpbiBtYW55IHBhcnRzIG9mIEFmcmljYSBhbmQgaXQgaXMgb25lIG9mIHRoZSBrZXlzIHRvIHJlYmFsYW5jaW5nIG91ciByZWxhdGlvbnNoaXAuIG9uIGFsbCB0aGUgcGxhbnMuIEFmcmljYSBpcyBvZiBjb3Vyc2UgYWxzbyBvdXIgTWVkaXRlcnJhbmVhbiBuZWlnaGJvci4gV2UgYXJlIGF0dGVudGl2ZSB0byB0aGUgcHJpdmlsZWdlZCByZWxhdGlvbnMgdGhhdCB3ZSBoYXZlIHdpdGggTW9yb2NjbywgQWxnZXJpYSwgVHVuaXNpYSB3aGVyZSBJIGhhdmUgYWxyZWFkeSB2aXNpdGVkLiBJIHdpbGwgYWxzbyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byB2aXNpdCBDYWlybyBpbiB0aGUgY29taW5nIG1vbnRocyBhcyBFZ3lwdCB0YWtlcyBvdmVyIHRoZSBwcmVzaWRlbmN5IG9mIHRoZSBBZnJpY2FuIFVuaW9uLiBBbmQgSSBhbm5vdW5jZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhciBpbiBUdW5pcyB0aGUgb3JnYW5pemF0aW9uIG9mIGEgU3VtbWl0IG9mIHRoZSB0d28gc2hvcmVzLCB3aGljaCB3b3VsZCBiZSBidWlsdCBvbiB0aGUgYmFzaXMgb2YgdGhlIGN1cnJlbnQgZGlhbG9ndWUgNSA1IGJ1dCBpbiBhbiBldmVuIG1vcmUgaW5jbHVzaXZlIHdheSwgd2l0aCBhIHN0cm9uZyBjb250cmlidXRpb24gZnJvbSBjaXZpbCBzb2NpZXR5IC4gVGVuIHllYXJzIGFmdGVyIHRoZSBVbmlvbiBmb3IgdGhlIE1lZGl0ZXJyYW5lYW4sIHdlIG11c3QgZmluZCB0aGUgdGhyZWFkIG9mIGEgZGlmZmVyZW50IE1lZGl0ZXJyYW5lYW4gcG9saWN5IGJ5IGRyYXdpbmcgYWxsIHRoZSBsZXNzb25zIGZyb20gd2hhdCB3ZSBoYXZlIHN1Y2NlZWRlZCBhbmQgd2hhdCB3ZSBzb21ldGltZXMgZGlkIG5vdCBtYW5hZ2UgdG8gZG8gYnkgaW52b2x2aW5nIGFsbCB0aGUgY29tcGFuaWVzIGJ1dCByZWZvY3VzaW5nIGEgbW9yZSBpbmNsdXNpdmUgTWVkaXRlcnJhbmVhbiBwb2xpY3kgd2hpY2ggaXMgYWxzbyB1bmRvdWJ0ZWRseSBvbmUgb2YgdGhlIGNvbmRpdGlvbnMgZm9yIHRoZSByZWNvbnNvbGlkYXRpb24gb2YgdGhlIE1hZ2hyZWIuIFRvIHRhbGsgYWJvdXQgeW91dGgsIG1vYmlsaXR5LCBlbmVyZ3ksIGFjYWRlbWljIGV4Y2hhbmdlcywgdGhpcyBwb2xpY3kgaXMgZXNzZW50aWFsIGFuZCB3ZSB3aWxsLCBpbiB0aGUgY29taW5nIG1vbnRocywgcHJlcGFyZSBmb3IgdGhpcyBTdW1taXQgdG8gYmUgaGVsZCBpbiBNYXJzZWlsbGUgaW4gZWFybHkgc3VtbWVyIDIwMTkuPFwvcD5cbjxwPk91ciB0aGlyZCBnb2FsLCBsYWRpZXMgYW5kIGdlbnRsZW1lbiwgaXMgdG8gc3RyZW5ndGhlbiB0aGUgaW5mbHVlbmNlIG9mIEZyYW5jZSBpbiB0aGlzIGNvbnRleHQuIEkgbWVudGlvbmVkIGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgbXkgc3BlZWNoIGJ5IHRhbGtpbmcgYWJvdXQgdGhlIGltcG9ydGFuY2Ugb2YgZWNvbm9taWMgZGlwbG9tYWN5LiBPdXIgY291bnRyeSBoYXMgY2VydGFpbmx5IGF0dHJhY3RlZCB0aGlzIHllYXIgbW9yZSBpbnZlc3RtZW50LCB0b3VyaXNtLCB0YWxlbnQgYnV0IHdlIHN0aWxsIGhhdmUgbWFueSBjaGFsbGVuZ2VzLiBGcmFuY2UgYWxzbyB3aW5zIGluIHRoZSBmaWVsZCBvZiBzcG9ydCB3aXRoIHRoZSBhdHRyaWJ1dGlvbiBvZiB0aGUgT2x5bXBpYyBHYW1lcyBvZiAyMDI0IG9yIHRoZSB2aWN0b3J5IG9mIHRoZSBCbHVlcyB3aG8gbWFkZSB2aWJyYXRlIGFsbCB0aGUgRnJlbmNoIHBlb3BsZSBieSBicmluZ2luZyBiYWNrIHRoZSBXb3JsZCBDdXAuIEFuZCB0aGlzIHZpY3RvcnksIHRoZSB3YXkgaW4gd2hpY2ggb3VyIHBsYXllcnMgYW5kIG91ciBmZWxsb3cgY2l0aXplbnMgaGF2ZSBjZWxlYnJhdGVkIGl0LCBvbmx5IGluY3JlYXNlcyBleHBlY3RhdGlvbnMgZm9yIEZyYW5jZS48XC9wPlxuPHA+VGhpcyBpbmNyZWFzZWQgYXR0cmFjdGl2ZW5lc3MgaW4gYWxsIGFyZWFzLCB5b3VyIGVmZm9ydHMgaGF2ZSBhY3RpdmVseSBjb250cmlidXRlZC4gVGhleSB3ZXJlIHN1cHBvcnRlZCBieSB0aGUgdW5wcmVjZWRlbnRlZCBldmVudHMgdGhhdCB3ZSBvcmdhbml6ZWQgc2luY2UgdGhlIGJlZ2lubmluZyBvZiB0aGUgeWVhciBpbiBWZXJzYWlsbGVzLCBpbiBQYXJpcywgb3IgZWxzZXdoZXJlIG9uIHRoZSBpbnZlc3RtZW50IHdpdGggdGhlIENob29zZSBGcmFuY2Ugc3VtbWl0LCBvbiBuZXcgdGVjaG5vbG9naWVzIHdpdGggVml2YXRlY2ggb3Igb24gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2Ugd2l0aCB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBGcmVuY2ggc3RyYXRlZ3kgYmVmb3JlIG1hbnkgaW50ZXJuYXRpb25hbCBzcGVjaWFsaXN0cyBhdCB0aGUgZW5kIG9mIHRoZSB3aW50ZXIuIEkgYW0gd2FpdGluZyBmb3IgeW91ciBtb2JpbGl6YXRpb24gcmVnYXJkaW5nIHRoZSBmb2xsb3ctdXAgb2YgdGhlc2UgbWVldGluZ3Mgd2hpY2ggd2Ugd2lsbCByZXBsaWNhdGUgZWFjaCB5ZWFyLCBhbmQgd2hpY2ggcmVxdWlyZSBhIG51bWJlciBvZiBjb25jcmV0ZSBhY3Rpb25zLjxcL3A+XG48cD5JbXBvcnRhbnQgYW5ub3VuY2VtZW50cyBoYXZlIGFscmVhZHkgYmVlbiBtYWRlIG9uIHRoZXNlIG9jY2FzaW9ucyBieSBzZXZlcmFsIGxhcmdlIGZvcmVpZ24gZ3JvdXBzLCBzaG93aW5nIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gbWFrZSB0aGVtIHdvcmsgYXQgaG9tZSwgYnkgZGVlcGVuaW5nIHdpdGggdGhlbSBhIGRlbWFuZGluZyBkaWFsb2d1ZSBvbiB0aGUgbW9zdCBjb21wbGV4IGFzcGVjdHM6IHNlY3VyaXR5LCB0YXhhdGlvbiwgdGhlIGRpZ2l0YWwgZWNvbm9teS4gQW5kIGl0IGlzIGluIHRoaXMgc2FtZSBzcGlyaXQgdGhhdCBJIHdpc2hlZCBGcmFuY2UgdG8gaG9zdCB0aGUgT2x5bXBpYWRlcyBkZXMgbVx1MDBlOXRpZXJzIGluIDIwMjMgYW5kIEkgd291bGQgbGlrZSBhbGwgb3VyIGVtYmFzc2llcyB0byBtb2JpbGl6ZSB0byBzdXBwb3J0IG91ciBjYW5kaWRhY3ksIGFzIGl0IGFsc28gY29udHJpYnV0ZXMgdG8gdGhpcyB2aXRhbCBlY29ub21pYyBpbmZsdWVuY2UuPFwvcD5cbjxwPkF0IHRoZSBzYW1lIHRpbWUsIHdlIG11c3QsIG1vcmUgdGhhbiBldmVyIGJlZm9yZSwgbWFrZSBvdXIgY3VsdHVyZSBhbmQgb3VyIGxhbmd1YWdlIHNoaW5lLiBJIGhhdmUgYWxyZWFkeSBtZW50aW9uZWQgaXQgc2V2ZXJhbCB0aW1lcy4gV2UgY2FtZSBvdXQgb2YgYSBkZWZlbnNpdmUgdmlldyBvZiBsYW5ndWFnZSB0byBmaW5hbGx5IHByb21vdGUgYW4gb2ZmZW5zaXZlIGFuZCB1bmluaGliaXRlZCBwb2xpY3kgb2YgdGhlIHByb21vdGlvbiBvZiBGcmVuY2ggYW5kIG11bHRpbGluZ3VhbGlzbSwgd2hpY2ggZ2l2ZXMgZnVsbCBpbXBvcnRhbmNlIHRvIHJlZ2lvbmFsIGxhbmd1YWdlcywgd2hpY2ggZnVsbHkgcmVjb2duaXplcyB0aGUgcGxhY2Ugb2YgQWZyaWNhbiB3cml0ZXJzIGFuZCB0aGUgd29ybGQgb3Zlci4gaW4gZnJhbmNvcGhvbmUgbGl0ZXJhcnkgY3JlYXRpb24uPFwvcD5cbjxwPkkgd291bGQgbGlrZSB0byB0aGFuayBteSBwZXJzb25hbCByZXByZXNlbnRhdGl2ZSBmb3IgdGhlIEZyYW5jb3Bob25pZSwgTGVpbGEgU0xJTUFOSSwgZm9yIGhlciB3b3JrIGluIHRoaXMgYXJlYS4gV2UgaGF2ZSBrbm93biBmb3IgeWVhcnMsIHRoYW5rcyB0byBvdXIgY29vcGVyYXRpb24gYWN0aW9ucyBpbiB0aGUgZmllbGQsIHRoYXQgYSBwYXJhZGlnbSBzaGlmdCB3YXMgZXNzZW50aWFsLiBUaGlzIGlzIGFsc28gd2h5IEkgZGVjaWRlZCB0byBzdGFiaWxpemUsIGZvciB0aGUgc2Vjb25kIGNvbnNlY3V0aXZlIHllYXIsIHRoZSBidWRnZXQgb2Ygb3VyIGN1bHR1cmFsIGNvb3BlcmF0aW9uIGluIDIwMTkuPFwvcD5cbjxwPkFscmVhZHksIHdlIGhhdmUgaW5jcmVhc2VkIGJ5IDUwJSB0aGUgbnVtYmVyIG9mIGhvdXJzIG9mIEZyZW5jaCBvZmZlcmVkIHRvIHJlZnVnZWVzLCBpbmNyZWFzZWQgYnkgMjAlIHRoZSBudW1iZXIgb2YgYmlsaW5ndWFsIHNjaG9vbHMgYWJyb2FkIGxhYmVsZWQgRnJhbmNlIEVkdWNhdGlvbiwgYnJvdWdodCB0b2dldGhlciBhbGwgdGhlIG9wZXJhdG9ycyBjb25jZXJuZWQgaW4gYSBjb25zb3J0aXVtIGNoYXJnZWQgdHJhaW5pbmcgaW4gRnJlbmNoLXNwZWFraW5nIEFmcmljYS4gSSBhbHNvIHdlbGNvbWUgdGhlIGNyZWF0aW9uIG9mIGEgRnJhbmNvcGhvbmUgQ2hhaXIgYXQgdGhlIENvbGxcdTAwZThnZSBkZSBGcmFuY2UuIFRoZXNlIGFkdmFuY2VzIGFyZSBjb25zaWRlcmFibGUuIFRoZXkgYXJlIGFsc28gZmF2b3JlZCBieSB0aGUgZHluYW1pc20gb2YgdGhlIGpvdXJuYWxpc3RzIG9mIEZyYW5jZSBNZWRpYSBXb3JsZCBhbmQgSSBpbnRlbmQgdG8gY29udGludWUgd2l0aCB5b3UgYW5kIGFzayB5b3UgdG8gcmVkb3VibGUgZWZmb3J0cyBpbiB0aGlzIGRpcmVjdGlvbiwgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgRnJhbmNvcGhvbmllIGFzIGluIGNvbm5lY3Rpb24gd2l0aCBhbGwgb3BlcmF0b3JzLCBpbmNsdWRpbmcgVFY1IE1vbmRlIGFuZCB0aGUgQWdlbmNlIHVuaXZlcnNpdGFpcmUgZGUgbGEgRnJhbmNvcGhvbmllLjxcL3A+XG48cD5BbGwgdGhlc2UgYWN0aW9ucyBvZiBpbmZsdWVuY2Ugd2lsbCBiZSBwb3NzaWJsZSBhbmQgZWZmZWN0aXZlIGluIGFkZGl0aW9uIHRvIHRoZSBlY29ub21pYyBkaXBsb21hY3kgSSBtZW50aW9uZWQsIG9ubHkgaWYgd2UgcmVzdG9yZSB0byBvdXIgcG9saWN5IG9mIGRldmVsb3BtZW50IGFpZCBhIG5ldyBhbWJpdGlvbiBhbmQgYnkgbWFraW5nIGEgcmVhbCBwb2xpY3kgb2YgaW52ZXN0bWVudCBpbiBzb2xpZGFyaXR5LiBGcmFuY2UsIGluIGZhY3QsIGluc2NyaWJlcyBpdHMgcG9saWN5IG9mIHBhcnRuZXJzaGlwIGFuZCBpbnRlcm5hdGlvbmFsIHNvbGlkYXJpdHkgaW4gcHVyc3VpdCBvZiB0aGUgVW5pdGVkIE5hdGlvbnMgU3VzdGFpbmFibGUgRGV2ZWxvcG1lbnQgR29hbHMuIFRvIG1lZXQgdGhlc2Ugb2JqZWN0aXZlcywgSSBkZWNpZGVkIHRoYXQgb3VyIG5ldyBwb2xpY3kgd291bGQgYmVuZWZpdCBmcm9tIGluY3JlYXNlZCByZXNvdXJjZXMsIGFmdGVyIGEgbG9uZyBwZXJpb2Qgb2YgZGVjbGluZSwgdG8gcmVhY2ggMC41NSUgb2YgZ3Jvc3MgbmF0aW9uYWwgaW5jb21lIGluIDIwMjIuIEFscmVhZHksIHRvIGd1YXJhbnRlZSB0aGlzIHJpc2UsIHRoZSBidWRnZXQgMjAxOSB3aWxsIGhhdmUgYSBiaWxsaW9uIGV1cm9zIGluIGFkZGl0aW9uYWwgY29tbWl0bWVudCBhdXRob3JpemF0aW9ucy48XC9wPlxuPHA+QnV0LCBJIHRvbGQgeW91IGEgeWVhciBhZ28sIGZpbmFuY2lhbCBtZWFucyBhbG9uZSBhcmUgbm90IGVub3VnaC4gVGhpcyBpcyBhIG5ldyBtZXRob2QgdGhhdCBpcyBuZWVkZWQsIGJvdGggaW4gRnJhbmNlIGFuZCBhbW9uZyBvdXIgcGFydG5lcnMuIEFscmVhZHksIGEgbmV3IGdvdmVybmFuY2UgaGFzIGJlZW4gcHV0IGluIHBsYWNlIHdpdGggdGhlIGNyZWF0aW9uIG9mIGEgbmF0aW9uYWwgZGV2ZWxvcG1lbnQgY291bmNpbC4gVGhlIFByaW1lIE1pbmlzdGVyIHJlY2VpdmVkIHRoZSByZXBvcnQgbGFzdCBGcmlkYXkgdGhhdCBoZSBoYWQgYXNrZWQgTVAgSGVydlx1MDBlOSBCRVJWSUxMRSBhbmQgSSB0aGFuayBoaW0gZm9yIHRoZSB3b3JrIGhlIGhhcyBkb25lIGFuZCB0aGUgd2lkZSBjb25zdWx0YXRpb24uIEFzIGhlIHByb3Bvc2VzLCBhIG5ldyBwYXJ0bmVyc2hpcCBkaW1lbnNpb24gd2lsbCBiZSBwdXQgaW4gcGxhY2UgdG8gYmV0dGVyIGludm9sdmUgY2l2aWwgc29jaWV0eSwgeW91dGgsIGJ1c2luZXNzZXMgYW5kIGRpYXNwb3Jhcy48XC9wPlxuPHA+VGhpcyBpbnZvbHZlcyBhY3RpbmcgYXMgY2xvc2UgdG8gdGhlIGZpZWxkIGFzIHBvc3NpYmxlLiBJbiB0aGlzIHJlc3BlY3QsIEkgc3VwcG9ydCB0aGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgbWVhbnMgYXZhaWxhYmxlIGRpcmVjdGx5IHRvIG91ciBFbWJhc3NpZXMgdG8gZW5jb3VyYWdlIGxvY2FsIGluaXRpYXRpdmVzLiBPbiBnZW5kZXIgZXF1YWxpdHksIG9uIHN1cHBvcnQgZm9yIGlubm92YXRpb24sIHlvdSBtdXN0IGJlIHRoZSBmaXJzdCBhY3RvcnMgYW5kIHRoZSBmaXJzdCByZWxheXMgb2YgdGhlIHBvbGl0aWNhbCB3aWxsIEkgaGF2ZSBleHByZXNzZWQuIEkgYWxzbyBzdXBwb3J0IHRoZSBpZGVhIG9mIFx1MjAwYlx1MjAwYmEgbmV3IG9yaWVudGF0aW9uIGFuZCBwcm9ncmFtbWluZyBsYXcgdG8gZW5kb3JzZSBvdXIgYWlkIHRyYWplY3RvcnkgYW5kIHRvIHJlbmV3IHRoZSBmcmFtZXdvcmsgb2Ygb3VyIGludGVybmF0aW9uYWwgY29vcGVyYXRpb24gcG9saWN5LjxcL3A+XG48cD5BbiBhbWJpdGlvdXMgZXZhbHVhdGlvbiBwb2xpY3kgd2lsbCBiZSBpbXBsZW1lbnRlZCB0byBtb25pdG9yIHRoZSByZXN1bHRzIG9mIHRoaXMgYWlkIGluIGZ1bGwgdHJhbnNwYXJlbmN5IGFuZCBkZWVwIHJlb3JnYW5pc2F0aW9ucyB3aWxsIGJlIGNvbmR1Y3RlZCBhcm91bmQgdGhlIEFGRC4gSSBhbHNvIGFzayB5b3UgdG8gbWFrZSBzdXJlIHRoYXQgdGhlcmUgaXMgYSBoaWdoIGxldmVsIG9mIGNvaGVyZW5jZSBhbmQgY29tcGxlbWVudGFyaXR5IGJldHdlZW4gb3VyIG5hdGlvbmFsIHByaW9yaXRpZXMgYW5kIHRoZSBFdXJvcGVhbiBwcm9ncmFtcyBvZiBjb29wZXJhdGlvbiBhbmQgZGV2ZWxvcG1lbnQuIEl0IGlzLCBJIGJlbGlldmUsIGEgZ3VhcmFudGVlIG9mIGNvaGVyZW5jZSBhbmQgZWZmaWNpZW5jeSBmb3IgYWxsIG9mIHVzLjxcL3A+XG48cD5JIHdpbGwgZW5kIG15IHJlbWFya3Mgd2l0aCB0aGUgZm91cnRoIGF4aXMgZGV2ZWxvcGVkIGxhc3QgeWVhciwgcHJvYmFibHkgZXZlbiBtb3JlIHJlbGV2YW50IHRvZGF5LCB3aGljaCBpcyBvdXIgRXVyb3BlYW4gcHJpb3JpdHkuIEluIHRoZSBlbmQsIHRocm91Z2hvdXQgbXkgc3BlZWNoLCBJIHN0cmVzc2VkIHRoZSBpbXBvcnRhbmNlIG9mIEV1cm9wZSwgd2hldGhlciBpdCBiZSBvdXIgc2VjdXJpdHksIG91ciBhYmlsaXR5IHRvIHJlZm91bmQgdGhlIGludGVybmF0aW9uYWwgb3JkZXIgb3IgdG8gcHJvbW90ZSBvdXIgb3duIGludGVyZXN0LiBUbyBkbyBpdCBhbG9uZSBpcyBtb3N0IG9mIHRoZSB0aW1lLCBpZiBub3QgZG9vbWVkLCBtdWNoIGxlc3MgZWZmZWN0aXZlLiBUbyBkbyBzbyB3aXRoIGEgc3Ryb25nLCBjb25zaXN0ZW50IEV1cm9wZWFuIHZvaWNlIGlzLCBJIGJlbGlldmUsIGEgZ3VhcmFudGVlIG9mIG91ciBzdWNjZXNzLiBTaW5jZSBsYXN0IHllYXIgYW5kIG91ciBsYXN0IGV4Y2hhbmdlLCB3ZSBoYXZlIHByb3Bvc2VkLCB3ZSBoYXZlIGFkdmFuY2VkLCB3ZSBoYXZlIGFscmVhZHkgYnVpbHQgYWxsaWFuY2VzLiBEdXJpbmcgdGhlIHNwZWVjaCBhdCB0aGUgU29yYm9ubmUgbGFzdCBTZXB0ZW1iZXIsIEkgcHJvcG9zZWQgYSBjb21wcmVoZW5zaXZlLCBhbWJpdGlvdXMgdmlzaW9uIG9mIGEgbW9yZSBzb3ZlcmVpZ24sIHVuaXRlZCwgbW9yZSBkZW1vY3JhdGljIEV1cm9wZS4gT24gdGhpcyBwYXRoLCB3ZSBoYXZlIGFscmVhZHkgYWNoaWV2ZWQgc29tZSBmaXJzdCByZXN1bHRzIGluIHRlcm1zIG9mIGRlZmVuc2UgLSBJIG1lbnRpb25lZCB0aGVtIGVhcmxpZXIgLSBpbiB0ZXJtcyBvZiBzZWNvbmRtZW50IHdvcmssIGluIHRlcm1zIG9mIHNvY2lhbCBhbmQgZmlzY2FsIGNvbnZlcmdlbmNlLCBhbmQgdHJhZGUgcG9saWN5LiBXZSB3aWxsIGhhdmUgaW4gdGhlIGNvbWluZyBtb250aHMgdG8gY29udGludWUgd29yayBvbiBtaWdyYXRpb24gb3IgZGlnaXRhbC48XC9wPlxuPHA+T24gdGhpcyBiYXNpcyBhbmQgdGFraW5nIGludG8gYWNjb3VudCB0aGUgcG9saXRpY2FsIGNvbnRleHQgdGhhdCBvdXIgZmlyc3QgR2VybWFuIHBhcnRuZXIgaGFkIHRvIGtub3csIGNhcnJpZWQgb3V0IGEgd29yayBmb3Igc2V2ZXJhbCBtb250aHMgd2hpY2ggYWxsb3dlZCBNZXNlYmVyZyBsYXN0IEp1bmUgdG8gc2VhbCBhIGhpc3RvcmljIHN0YWdlIGJldHdlZW4gRnJhbmNlIGFuZCBHZXJtYW55IGFuZCB0byBidWlsZCBhIHN0cmF0ZWdpYyBkb2N1bWVudCB3aGljaCwgb24gYWxsIHRoZXNlIHBvaW50cywgaW5jbHVkaW5nIHRoYXQgb2YgYSBldXJvIGFyZWEgYnVkZ2V0LCBzZXRzIHVzIGEgY29tbW9uIGFnZW5kYSBieSAyMDIxIHdoaWNoIHdpbGwsIEkgYmVsaWV2ZSwgYWxsb3cgZm9yIGEgY29oZXJlbnQgZGV2ZWxvcG1lbnQgb2YgdGhpcyB2aXNpb24gb2YgYSBFdXJvcGUgc292ZXJlaWduLCB1bml0ZWQgYW5kIHVuaXRlZCB0aGF0IG11c3QgYmUgb3Vycy48XC9wPlxuPHA+Q3VsdHVyZSBhbmQgZWR1Y2F0aW9uOyBjbGltYXRlIGFuZCBlbmVyZ3k7IGhlYWx0aCBhbmQgbnV0cml0aW9uOyBkaWdpdGFsIGFuZCBpbm5vdmF0aW9uOiBpbiBlYWNoIG9mIHRoZXNlIGFyZWFzLCB3ZSBoYXZlIG1vdmVkIGZvcndhcmQgYW5kIHByb3Bvc2VkIGEgam9pbnQgaW5pdGlhdGl2ZS4gV2UgaGF2ZSBhbHNvIGFkb3B0ZWQgYW4gYW1iaXRpb3VzIG1ldGhvZCwgdGhhdCBvZiB0YWxraW5nIHRvIGV2ZXJ5b25lLCBhZ2FpbiBpbiBFdXJvcGUuIEkgdmlzaXRlZCBpbiBvbmUgeWVhciBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgY291bnRyaWVzIG9mIHRoZSBFdXJvcGVhbiBVbmlvbi4gSSBoYXZlLCBvZiBjb3Vyc2UsIGV4Y2hhbmdlZCB3aXRoIGFsbCwgYmlsYXRlcmFsbHksIGhlYWRzIG9mIHN0YXRlIGFuZCBnb3Zlcm5tZW50LiBJIHdhbnRlZCB0byBtYXJrIHRoZSBmaXJzdCBzdW1tZXIgd2l0aCBhIHRvdXIgb2YgQ2VudHJhbCBhbmQgRWFzdGVybiBFdXJvcGUgYW5kIEkgd2lsbCBiZSBpbiBEZW5tYXJrIHRvbW9ycm93LCB3aGVyZSBubyBzdGF0ZSB2aXNpdCBoYXMgYmVlbiBoZWxkIGZvciB0aGlydHktc2l4IHllYXJzIGFuZCB0aGVuIGluIEZpbmxhbmQuPFwvcD5cbjxwPldlIGhhdmUgc29tZXRpbWVzIGZvcmdvdHRlbiBjZXJ0YWluIGNvdW50cmllcyBpbiBFdXJvcGUgb24gdGhlIHByZXRleHQgdGhhdCB3ZSBzZWUgdGhlbSBhdCBldmVyeSBFdXJvcGVhbiBDb3VuY2lsLiBCdXQgdGhlcmUgaXMgYWxzbyBhIG5lZWQgdG8gY29udmluY2UgYW5kIHVuZGVyc3RhbmQgdGhlIHByb2ZvdW5kIGR5bmFtaWNzIG9mIG1hbnkgRXVyb3BlYW4gcGVvcGxlcyB0byBidWlsZCBhIHN0cm9uZyBiaWxhdGVyYWwgcmVsYXRpb25zaGlwIHRoYXQgc2VydmVzIG91ciBFdXJvcGVhbiBwb2xpY3kuIEV1cm9wZSBpcyBub3QgZG9uZSBpbiBCcnVzc2VscywgaW4gUGFyaXMsIG9yIGluIEJlcmxpbjogaXQgaXMgYnVpbHQgaW4gdGhlIHRpcmVsZXNzIGRpZmZ1c2lvbiBvZiBvdXIgaWRlYXMsIG91ciBwcm9qZWN0cywgaW4gYSBub24taGVnZW1vbmljIHdheS48XC9wPlxuPHA+SSB0ZWxsIHlvdSB0b2RheSB3aXRoIGdyYXZpdHkgYW5kIGh1bWlsaXR5OiB0aGlzIEV1cm9wZWFuIGZpZ2h0IGlzIGp1c3QgYmVnaW5uaW5nLiBJdCB3aWxsIGJlIGxvbmcsIGl0IHdpbGwgYmUgZGlmZmljdWx0LiBJdCB3aWxsIGJlIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGFjdGlvbiBvZiBGcmFuY2UgdGhyb3VnaG91dCBteSBtYW5kYXRlIGFuZCBlc3BlY2lhbGx5IGluIHRoZSB5ZWFyIHRoYXQgb3BlbnMsIGJlY2F1c2Ugd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBFdXJvcGVhbiBjcmlzaXMuPFwvcD5cbjxwPkFjcm9zcyBFdXJvcGUsIGRvdWJ0cyBhcmUgdGhlcmUuIEJyZXhpdCBpcyBhIHN5bXB0b20uIFRoZSByaXNlIG9mIGV4dHJlbWVzIGlzIGFsbW9zdCBhIGdlbmVyYWwgcnVsZSBhbmQgRnJhbmNlIGlzIGFuIGV4Y2VwdGlvbi4gVGhlIGRpdmlzaW9ucyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgdGhlIHNvdXRoIGVjb25vbWljYWxseSwgYmV0d2VlbiBlYXN0IGFuZCB3ZXN0IG9uIG1pZ3JhdG9yeSBpc3N1ZXMgc3RpbGwgZnJhY3R1cmUgYWxsIHRvbyBvZnRlbiBvdXIgRXVyb3BlYW4gVW5pb24gYW5kIHdlIGFyZSBub3cgbGl2aW5nIGEgcG9saXRpY2FsIGNyaXNpcyBvbiBtaWdyYXRpb24gdGhhdCB3ZSBmYWNlIC48XC9wPlxuPHA+U28gd2hhdCBpcyB0aGUgYW5zd2VyIHRvIHRoaXM/IERvIG5vdCBnaXZlIHVwIG9uIHRoZSBhbWJpdGlvbiBleHByZXNzZWQgYSB5ZWFyIGFnby4gTm90aGluZy4gT24gdGhlIGNvbnRyYXJ5LCB0byBicmluZyBtb3JlIGNsYXJpdHkgYW5kIHNvbWUgYW5nbGVzIHRoYXQgSSB3YW50IGhlcmUsIHRvIGNvbmNsdWRlIG15IHBvaW50LCB0byBzaGFyZSB3aXRoIHlvdS4gRmlyc3QsIHdoYXQgRXVyb3BlIGFyZSB3ZSB0YWxraW5nIGFib3V0PyBXaGVuIHdlIHNwZWFrIHRvIEFmcmljYSwgd2hlbiB3ZSBzcGVhayBvZiBvdXJzZWx2ZXMsIHdoZW4gd2Ugc3BlYWsgb2YgYWxsIHRoZXNlIGdyZWF0IGNoYWxsZW5nZXMsIHRoZSBwZXJpbWV0ZXIsIHRoZSBvdXRsaW5lIG9mIHRoaXMgRXVyb3BlIG11c3Qgbm90IGJlIHRoZSBzdWJqZWN0IG9mIGEgZm9ybSBvZiBpbnRlbGxlY3R1YWwgY29tZm9ydCBlaXRoZXIuIFRoZSBFdXJvcGVhbiBVbmlvbiBpcyBub3Qgd3JpdHRlbiBhdCBhbGwgdGltZXMgYW5kIHRoZSBjaGFuZ2VzIGluIGl0cyBwZXJpbWV0ZXIgYXJlIG5laXRoZXIgYSB0cmFnZWR5IG5vciBuZWNlc3NhcmlseSBhIG1vdmVtZW50IHRoYXQgd2Ugc2hvdWxkIHVuZGVyZ28uIFRoZXJlIGlzIG9mIGNvdXJzZSBCcmV4aXQgYnV0IEkgZHJhdyBjb2xsZWN0aXZlIGF0dGVudGlvbjogaXMgbm90IHRoZXJlIHNvbWV0aGluZyBhYnN1cmQgaW4gYSBFdXJvcGVhbiBVbmlvbiB0aGF0IHRvZGF5IHdpbGwgZGV2b3RlIGEgY29sb3NzYWwgZW5lcmd5IHRvIGRpc2N1c3MgQnJleGl0PyBhbmQsIGF0IHRoZSBzYW1lIHRpbWUsIHdvdWxkIGxpa2UgdG8gZGlzY3VzcyB0aGUgc3RhcnQgb2YgYW4gYWNjZXNzaW9uIG5lZ290aWF0aW9uIHdpdGggQWxiYW5pYSBvciBhbnkgb3RoZXIgY291bnRyeSBpbiB0aGUgV2VzdGVybiBCYWxrYW5zPyBBbGwgb2YgdGhlc2UgY291bnRyaWVzIGhhdmUgc29tZXRoaW5nIHRvIGRvIHdpdGggb3VyIGhpc3RvcnkgYW5kIG91ciBzdHJhdGVneSBidXQgYXJlIHdlIGhlcmUsIGluIHRoaXMgaW5zaWRlciBhbmQgbHVjaWQgY2lyY2xlLCBjYW4gd2UgYmUgc2F0aXNmaWVkIHdpdGggdGhpcyBjb3Vyc2Ugb2YgZXZlbnRzPyBEbyB3ZSB0aGluayB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byBtZWV0IG91ciBjaGFsbGVuZ2VzPyBEbyB3ZSB0aGluayB0aGluZ3MgYXJlIGdvaW5nIHRoZSB3YXkgdGhleSBhcmUsIHdoZW4gaXQgY29tZXMgdG8gdGhlIHBlcmltZXRlciBvZiBFdXJvcGUsIHdoYXQgRXVyb3BlIGRvIHdlIHdhbnQ/IEFic29sdXRlbHkgbm90LjxcL3A+XG48cD5TbyBmb3IgQnJleGl0LCBJIGhvcGUgdGhhdCB0aGUgYWdyZWVtZW50IHdpbGwgYmUgcmVhY2hlZCBieSB0aGUgZW5kIG9mIHRoZSB5ZWFyIGJ5IHNldHRpbmcgdGhlIGZyYW1ld29yayBmb3Igb3VyIGZ1dHVyZSByZWxhdGlvbnMuIEJ1dCBJIHJlcGVhdCwgQnJleGl0IGlzIGEgc292ZXJlaWduIGNob2ljZSB0aGF0IG11c3QgYmUgcmVzcGVjdGVkLCBidXQgaXQgaXMgYSBjaG9pY2UgdGhhdCBjYW4gbm90IGJlIG1hZGUgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGludGVncml0eSBvZiB0aGUgRXVyb3BlYW4gVW5pb24uIEl0IGlzIHRoZSBjaG9pY2Ugb2YgdGhlIEJyaXRpc2ggcGVvcGxlIGZvciBpdHNlbGYsIGJ1dCBub3QgZm9yIG90aGVycywgYW5kIEZyYW5jZSB3aXNoZXMgdG8gbWFpbnRhaW4gYSBzdHJvbmcsIHByaXZpbGVnZWQgcmVsYXRpb25zaGlwIHdpdGggTG9uZG9uLCBidXQgbm90IGF0IHRoZSBjb3N0IG9mIHRoZSBkaXNzb2x1dGlvbiBvZiB0aGUgRXVyb3BlYW4gVW5pb24uIEFuZCB0aGF0IGludGVncml0eSBpcyBkZWZlbmRlZCBieSB0aGUgY2FwaXRhbCBvZiB3aGljaCBpdCBpcyB0aGUgY2F1c2UsIGluIGl0cyBvd24gY291bnRyeSwgaXMgb25lIHRoaW5nLCBidXQgd2UgaGF2ZSB0byBkZWZlbmQgdGhlIGludGVncml0eSBvZiBvdXIgdmFsdWVzLCBvdXIgYmFzZSBhbmQgdGhlIEV1cm9wZWFuIFVuaW9uLiBBbmQgc28gd2Ugd2lsbCBoYXZlIG9uIHRoaXMgcG9pbnQgYSBkZW1hbmRpbmcgZGlhbG9ndWUsIGluZGlzcGVuc2FibGUsIGJ1dCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSwgd2hhdGV2ZXIgYmUgdG8gdGhpbmsgdGhlIHJlbGF0aW9uIG9mIHRoZSBFdXJvcGVhbiBVbmlvbiBhZnRlciB0aGUgQnJleGl0IHdpdGggTG9uZG9uLCBpdCBpcyBpbmRpc3BlbnNhYmxlLiBBbmQgdGhlIHRoaW5raW5nIGlzIHByZWNpc2VseSB0byBkZWZpbmUgYXQgbGVhc3QgYSBzdHJhdGVnaWMgcGFydG5lcnNoaXAgdG8gYnVpbGQuPFwvcD5cbjxwPlRoaXMgaXMgdGhlIHNhbWUgcmVxdWlyZW1lbnQgdGhhdCBJIHdhbnQgYXQgb3VyIGJvcmRlcnMsIEkgaGF2ZSBhbHJlYWR5IG1lbnRpb25lZCB0aGUgY2FzZSBvZiBSdXNzaWEgZWFybGllciwgdGhlIGZyYW1ld29yayBvZiBhIEV1cm9wZWFuIHNlY3VyaXR5IGFuZCBkZWZlbnNlIGFyY2hpdGVjdHVyZSwgYnV0IHdlIGNhbiBub3Qgc3VzdGFpbmFibHkgYnVpbGQgdGhlIEV1cm9wZSB3aXRob3V0IHRoaW5raW5nIGFib3V0IG91ciByZWxhdGlvbnNoaXAgd2l0aCBSdXNzaWEgYW5kIFR1cmtleS4gVG8gdGhpbmsgaXQgd2l0aG91dCBjb21wbGFjZW5jeSBhbmQgd2l0aG91dCBuYWl2ZXR5LiBEbyB3ZSB0aGluayBoZXJlIGFnYWluLCBpbiBhIGx1Y2lkIGFuZCBzaW5jZXJlIHdheSwgdGhhdCB3ZSBjYW4gY29udGludWUgdG8gbmVnb3RpYXRlIG1lbWJlcnNoaXAgb2YgdGhlIEV1cm9wZWFuIFVuaW9uIG9mIFR1cmtleSwgd2hlbiB0aGUgZGFpbHkgcmVhZmZpcm1lZCBwcm9qZWN0IG9mIHRoZSBUdXJraXNoIFByZXNpZGVudCB3aXRoIHdob20gSSBoYWQgYSBVbnB1Ymxpc2hlZCBpbnRlbnNpdHkgb2YgY29udGFjdHMgZm9yIGEgbGl0dGxlIG92ZXIgYSB5ZWFyLCBpcyBhIHBhbi1Jc2xhbWljIHByb2plY3QgcmVndWxhcmx5IHByZXNlbnRlZCBhcyBhbnRpLUV1cm9wZWFuLCB3aG9zZSByZWd1bGFyIG1lYXN1cmVzIGFyZSByYXRoZXIgYWdhaW5zdCBvdXIgcHJpbmNpcGxlcz8gQWJzb2x1dGVseSBub3QuIEFuZCBoZXJlIHRvbyB3ZSBtdXN0IGdvIG91dCBvZiBoeXBvY3Jpc3kgdG8gYnVpbGQgYSBzb2x1dGlvbiBzZWVtcyB0byBtZSBtb3JlIGVmZmVjdGl2ZSwgbW9yZSBjb25zaXN0ZW50IGZvciB1cy4gU28gd2UgbmVlZCB0byBidWlsZCBhIHN0cmF0ZWdpYyBwYXJ0bmVyc2hpcCB0aGF0IGlzIG5vdCBFVSBtZW1iZXJzaGlwLCBidXQgYSBzdHJhdGVnaWMgcGFydG5lcnNoaXAgd2l0aCBSdXNzaWEgYW5kIFR1cmtleSwgYmVjYXVzZSB0aGV5IGFyZSB0d28gaW1wb3J0YW50IHBvd2VycyBmb3Igb3VyIGNvbGxlY3RpdmUgc2VjdXJpdHksIGJlY2F1c2UgV2UgbXVzdCBsaW5rIHRoZW0gdG8gRXVyb3BlIGJlY2F1c2UgdGhlIGhpc3Rvcnkgb2YgdGhlc2UgcGVvcGxlcyBoYXMgYmVlbiB3aXRoIEV1cm9wZSBhbmQgdG9nZXRoZXIgd2UgbXVzdCBidWlsZCBvdXIgZnV0dXJlLiBBbmQgc28sIG9uIGFsbCB0aGVzZSBsZXZlbHMsIHdlIG5lZWQgYSByZWxhdGlvbnNoaXAgdGhhdCB3ZSBoYXZlIHRvIHJlaW52ZW50LCBvbiBhIGRlbWFuZGluZyBwbGFuZSwgYnV0IHdpdGhvdXQgeWllbGRpbmcgdG8gdGhlIHNvcnQgb2YgYnVyZWF1Y3JhdGljIGdyb3BpbmdzIHdpdGggd2hpY2ggd2UgaGF2ZSBiZWNvbWUgYWNjdXN0b21lZCBvbiB0aGVzZSBzdWJqZWN0cy48XC9wPlxuPHA+V2UgY2FtZSBvdXQgb2YgdGhlIGNvbGQgd2FyIGFuZCBQcmVzaWRlbnQgRVJET0dBTiYjMzk7cyBUdXJrZXkgaXMgbm90IFByZXNpZGVudCBLRU1BTCYjMzk7cyBUdXJrZXkuIFRoZXNlIHR3byByZWFsaXRpZXMgYXJlIHRoZXJlIGFuZCB3ZSBtdXN0IGRyYXcgYWxsIHRoZSBjb25zZXF1ZW5jZXMuPFwvcD5cbjxwPlRoZW4gd2UgbXVzdCBhc3N1bWUsIGFjY2VwdCwgY2FycnkgdGhlIGZhY3QgdGhhdCBFdXJvcGUgd2lsbCBiZSBhIEV1cm9wZSBvZiBzZXZlcmFsIGNpcmNsZXMsIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSB0aGUgY2FzZSBhbmQgdGhlcmVmb3JlIHdlIG11c3QgYWNjZXB0IHRoYXQgdGhlcmUgaXMgYSBFdXJvcGUgd2lkZSwgcGVyaGFwcyB3aWRlciB0aGFuIHRoZSBFdXJvcGVhbiBVbmlvbiwgdGhlIENvdW5jaWwgb2YgRXVyb3BlIGJlaW5nLCBtb3Jlb3ZlciwgdGhpcyBicm9hZGVzdCBiYXNpcywgYmFzZWQgb24gb3VyIHByaW5jaXBsZXMsIHdoaWNoIGFyZSBzb21ldGltZXMgY2FsbGVkIGludG8gcXVlc3Rpb24gd2l0aGluIHRoZSBVbmlvbiBpdHNlbGYuIEJ1dCB0aGVyZSBpcyB0aGVyZWZvcmUgcm9vbSBmb3IgYSBicm9hZCBFdXJvcGUsIGEgcGxhY2UgZm9yIGEgY29tbW9uIG1hcmtldCBhbmQgYXQgdGhlIGhlYXJ0IG9mIGl0IHRoZSBwbGFjZSBmb3Igc3RyZW5ndGhlbmVkIGNvb3BlcmF0aW9uIGFuZCBzdHJvbmdlciBpbnRlZ3JhdGlvbi4gQW5kIHRoYXQgbWVhbnMgaGF2aW5nIGEgbGl0dGxlIGF1ZGFjaXR5IGFuZCBhZ3JlZWluZyB0byByZXZpc2l0IHRhYm9vcyBvbiBib3RoIHNpZGVzLCB0cmFuc2ZlciB0YWJvb3Mgb24gb25lIHNpZGUgb2YgdGhlIFJoaW5lLCB0cmVhdHkgY2hhbmdlIHRhYm9vcyBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgUmhpbmUgLiBBbmQgb24gdGhpcyBwb2ludCwgRnJhbmNlJiMzOTtzIHZpc2lvbiB0b2RheSwgd2hpY2ggd2Ugd2lsbCBiZWFyIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjb21pbmcgZGVhZGxpbmVzLCBwcmVzdXBwb3NlcyBhIHJldmlzaW9uIG9mIHRoZSB0cmVhdGllcywgYmUgaXQgdGhlIHJlZm9ybSBvZiB0aGUgRXVyb3BlYW4gVW5pb24gb3Igb2YgdGhlIGV1cm8gem9uZS4gSSB3aXNoIGl0IGFuZCBJIGhvcGUgdGhhdCB3ZSBjYW4gYnVpbGQgaXQgb24gdGhlIGJhc2lzIG9mIHRoZSBvbmdvaW5nIGRlbW9jcmF0aWMgY29uc3VsdGF0aW9ucywgb24gdGhlIGJhc2lzIG9mIHRoZSByZXN1bHRzIG9mIHRoZSBmb3J0aGNvbWluZyBFdXJvcGVhbiBlbGVjdGlvbnMgYW5kIGludGVyZ292ZXJubWVudGFsIHdvcmsgdGhhdCB3aWxsIGJlIHJlcXVpcmVkIGluIHRoZSBjb21pbmcgc2VtZXN0ZXJzLiBCZWNhdXNlIHdlIG5lZWQgdG8gcmV0aGluayBvdXIgY29sbGVjdGl2ZSBvcmdhbml6YXRpb24sIHdlIG5lZWQgYSBtb3JlIGVmZmljaWVudCBhbmQgc21hbGxlciBDb21taXNzaW9uIGFuZCB3ZSBuZWVkIHRvIHJldGhpbmsgdGhlIHN0cmF0ZWdpYyBheGVzIG9mIHRoaXMgRXVyb3BlLjxcL3A+XG48cD5GaW5hbGx5LCB3ZSB3aWxsIGJlIGFuZCB3ZSBhcmUgdG9kYXkgY29sbGVjdGl2ZWx5IHRlc3RlZCBiZWNhdXNlIHRoaXMgRXVyb3BlLCBJIGhhdmUgc2FpZCBtYW55IHRpbWVzIGFuZCBJIGhhdmUganVzdCB0YWxrZWQgYWJvdXQgaXRzIHBlcmltZXRlciwgaXRzIGV4dGVudCwgaGFzIHRvIGZhY2UgYWxsIHRoZSBjb250ZW1wb3JhcnkgY2hhbGxlbmdlcyBvZiB3aGljaCBJIGFtIHNwZWFrIHNpbmNlIGp1c3Qgbm93LiBBbmQgd2UgaGF2ZSBvbmx5IG9uZSBjcmVkaWJsZSBFdXJvcGVhbiBhbnN3ZXI6IHRoYXQgb2Ygb3VyIHN0cmF0ZWdpYyBhdXRvbm9teS4gVGhlIHF1ZXN0aW9uIGlzIG5vdCB3aGV0aGVyIHdlIGNhbiBjb252aW5jZSB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLCBpdCBpcyBhIGdyZWF0IHBlb3BsZSBhbmQgYSBncmVhdCBjb3VudHJ5LCB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIGxvb2tzIHRvIHVzIGFzIGEgcG93ZXIgd2l0aCBzdHJhdGVnaWMgYXV0b25vbXksIHRoaXMgaXMgdGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBpcyBwb3NlZCBmb3IgRXVyb3BlIHRvZGF5LiBBbmQgaXQgaXMgY2xlYXIgdGhhdCB0b2RheSBpdCBpcyBub3QgdGhlIGNhc2UsIHdlIG11c3QgbG9vayBhdCBvdXJzZWx2ZXMgd2l0aCBsdWNpZGl0eSwgZXZlbiBpZiBpdCBpcyBjcnVlbCwgSSBkbyBub3QgYmVsaWV2ZSB2ZXJ5IHNpbmNlcmVseSB0b2RheSB0aGF0IENoaW5hIG9yIHRoZSBVbml0ZWQgU3RhdGVzIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSB0aGluayB0aGF0IEV1cm9wZSBpcyBhIHBvd2VyIHdpdGggYSBzdHJhdGVnaWMgYXV0b25vbXkgY29tcGFyYWJsZSB0byB0aGVpcnMuIEkgZG8gbm90IGJlbGlldmUgdGhhdC48XC9wPlxuPHA+QW5kIEkgYmVsaWV2ZSB0aGF0IGlmIHdlIGNhbiBub3QgYnVpbGQgdGhhdCwgd2UgYXJlIHByZXBhcmluZyBhIG1vcm9zZSBhZnRlcm1hdGguIEFuZCBzbyBob3cgdG8gYnVpbGQgdGhpcyB0cnVlIEV1cm9wZWFuIHNvdmVyZWlnbnR5PyBXZWxsLCBieSByZXNwb25kaW5nIHRvIHRoZSBjaGFsbGVuZ2VzIEkgbWVudGlvbmVkIGVhcmxpZXIsIGJ5IG1ha2luZyBFdXJvcGUgdGhlIG1vZGVsIGZvciB0aGlzIGh1bWFuaXN0IHJlZm91bmRhdGlvbiBvZiBnbG9iYWxpemF0aW9uLiBUaGlzIGlzIG91ciBjaGFsbGVuZ2UgYW5kIHRoYXQgaXMgZXhhY3RseSB0aGUgZGViYXRlIHRoYXQgaXMgYmVpbmcgcHV0IHRvZGF5IHRvIHRoZSBFdXJvcGVhbiBwZW9wbGUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGVsZWN0aW9ucyB0aGF0IGFyZSBjb21pbmcuPFwvcD5cbjxwPlRoZXJlIGlzIGNsZWFyIGNob2ljZSBvbiB0aGUgb25lIGhhbmQsIEV1cm9wZSBpcyBub3QgZWZmaWNpZW50LCBpdCBubyBsb25nZXIgcmVzcG9uZHMgdG8gdGhlc2UgY2hhbGxlbmdlcyBvZiBnbG9iYWxpemF0aW9uLCBpdCBpcyBub3QgdG90YWxseSBmYWxzZS4gSXQgZG9lcyBub3QgaGF2ZSBzdHJhdGVnaWMgYXV0b25vbXksIHNvIHlvdSBoYXZlIHRvIGRpc2FnZ3JlZ2F0ZSBpdC48XC9wPlxuPHA+VGhlbiB0aGUgbW9zdCBzb3BoaXN0aWNhdGVkIHdpbGwgc2F5IHRvIHlvdTogd2UgYXJlIHRvIGRpc2ludGVncmF0ZSBpdCwgZXhjZXB0IHdoZW4gaXQgYnJpbmdzIHVzIHNvbWV0aGluZywgYmVjYXVzZSBJdGFseSBpcyBhZ2FpbnN0IEV1cm9wZSB3aGljaCBpcyBub3Qgc29saWRhcml0eSBvbiB0aGUgbWlncmF0b3J5IGxldmVsLCBidXQgaXQgaXMgZm9yIEV1cm9wZSBTdHJ1Y3R1cmFsIEZ1bmRzIHdoZW4gSSBsaXN0ZW4gdG8gY2VydGFpbiBtaW5pc3RlcnM7IHRoZSBwcmVzaWRlbnQgb2YgdGhlIEl0YWxpYW4gY291bmNpbCBrbm93cyB0aGF0LCBoZSBpcyBvbiBhIG11Y2ggbW9yZSBzdHJ1Y3R1cmVkIGxpbmUuIFZpa3RvciBPUkJBTiYjMzk7cyBIdW5nYXJ5LCBzaGUgaGFzIG5ldmVyIGJlZW4gYWdhaW5zdCBFdXJvcGUmIzM5O3Mgc3RydWN0dXJhbCBmdW5kcywgdGhlIGNvbW1vbiBhZ3JpY3VsdHVyYWwgcG9saWN5LCBidXQgc2hlIGlzIGFnYWluc3QgRXVyb3BlIHdoZW4gaXQgY29tZXMgdG8gaG9sZGluZyBncmVhdCBzcGVlY2hlcyBhYm91dCBDaHJpc3RpYW5pdHkuIEFuZCBzbyB0aGVyZSBpcyBhIGNsZWFyIHBhdGggb2YgRXVyb3BlYW4gb3Bwb3J0dW5pc20sIGJ1dCBvZiB0aGUgY2xhaW1lZCBuYXRpb25hbGlzbSwgZGlzaW50ZWdyYXRlIHRoaXMgYnVyZWF1Y3JhdGljIHN0cnVjdHVyZSwgaXQgYnJpbmdzIHVzIG5vdGhpbmcsIHdlIHByZXRlbmQgdG8gZm9yZ2V0IHdoYXQgaXQgYnJpbmdzIHVzIGFuZCBhc3N1bWUgYSBjbGVhciBsaW5lLjxcL3A+XG48cD5PbiB0aGUgb3RoZXIgaGFuZCwgd2UgbmVlZCB0byBicmluZyBhIGNsZWFyIGxpbmUsIHRoYXQgb2YgYSBkZXNpcmUgZm9yIEV1cm9wZWFuIHNvdmVyZWlnbnR5LCBob3cgYW5kIGhvdyBjYW4gRXVyb3BlIGFsb25lIHByb3ZpZGUgYW4gYW5zd2VyIHRvIG1hbnkgb2Ygb3VyIGNoYWxsZW5nZXM/IEFuZCBJIHRoaW5rIHRoYXQmIzM5O3MgdGhlIGNhc2UsIGFuZCBJIHRoaW5rIHRoYXQmIzM5O3MgcGFydGljdWxhcmx5IHRoZSBjYXNlIHdpdGggdGhlIGN1cnJlbnQgcG9saXRpY2FsIGNyaXNpcyBpbiBFdXJvcGUuIEkgYW0gdGFsa2luZyBhYm91dCBhIHBvbGl0aWNhbCBjcmlzaXMsIGJlY2F1c2UgdGhlIHRvcGljcyB3ZSB0YWxrZWQgYWJvdXQgYWxsIHN1bW1lciBvbiBtaWdyYXRpb24gYXJlIGFib3ZlIGFsbCBhIHBvbGl0aWNhbCBjcmlzaXMuIEV1cm9wZSBoYWQgdG8gZW5kdXJlIGEgcmVhbCBtaWdyYXRpb24gY3Jpc2lzIGluIDIwMTUsIHdoZW4gbWlsbGlvbnMgb2YgQWZnaGFucyBhbmQgU3lyaWFucyBjYW1lIGJlY2F1c2Ugb2YgdGhlIGNvbmZsaWN0cy4gRXVyb3BlIGhhZCB0byBzdWZmZXIsIGEgbGl0dGxlIG1vcmUgdGhhbiBhIHllYXIgYWdvIGEgcmVhbCBtaWdyYXRpb24gY3Jpc2lzIGZyb20gTGlieWEgYnV0IHRoZXNlIGZsb3dzIGhhdmUgYmVlbiBkaXZpZGVkIGJ5IHRlbiBpbiByZWNlbnQgd2Vla3MsIGl0IGlzIG5vdCBhIG1pZ3JhdGlvbiBjcmlzaXMsIGl0IGlzIGEgcG9saXRpY2FsIGNyaXNpcywgdGhhdCBvZiB0aGUgY2FwYWNpdHkgcHJlY2lzZWx5IHRvIGFuc3dlciB0aGlzIGNoYWxsZW5nZS48XC9wPlxuPHA+T24gdGhpcyBzdWJqZWN0LCB3ZSBoYXZlIHRvIGZhY2UgdGhlIGZhY3RzLCB3aHkgZG8gd2UgaGF2ZSB0aGlzIEV1cm9wZWFuIGFuZCBlc3BlY2lhbGx5IEl0YWxpYW4gcG9saXRpY2FsIGNyaXNpcz8gQmVjYXVzZSB0aGVyZSB3YXMgbm8gRXVyb3BlYW4gc29saWRhcml0eS4gV2h5IGRpZCB3ZSBoYXZlIGEgcG9saXRpY2FsIGNyaXNpcyBpbiBHcmVlY2UgYmVmb3JlPyBCZWNhdXNlIHRoZXJlIHdhcyBubyBFdXJvcGVhbiBzb2xpZGFyaXR5LiBUaGF0JiMzOTtzIHdoeSBJIGhhdmUgYWx3YXlzIGxpbmtlZCBFdXJvcGVhbiBzb2xpZGFyaXR5IHdpdGggYSByZWFsIHBvbGljeSBvZiBzb3ZlcmVpZ250eSBhbmQgdGhlcmVmb3JlIHdoYXQgaGFwcGVucyBpbiBJdGFseSwgd2UgcHJvZHVjZWQgaXQgcG9saXRpY2FsbHkgYnkgb3VyIGxhY2sgb2Ygc29saWRhcml0eS4gRG9lcyB0aGF0IGV4Y3VzZSB0aGUgeGVub3Bob2JpYyBkaXNjb3Vyc2UsIHRoZSBmYWNpbGl0aWVzPyBJIGRvIG5vdCBiZWxpZXZlIGl0IGFuZCBJIGJlbGlldmUgdGhhdCB0aGVzZSBzYW1lIHhlbm9waG9iZXMgYnJpbmcgbm8gc29sdXRpb24gdG8gdGhlIGV2aWwgdGhleSBkZW5vdW5jZS4gQmVjYXVzZSwgdGhhdCB0aGV5IGdvIHRvIHNlZWsgdGhlIHNvbGlkYXJpdHkgb2YgdGhvc2Ugb2Ygd2hpY2ggdGhleSB3YW50IHRvIHNlcGFyYXRlLCBncmVhdCBnb29kIGRvZXMgdG8gdGhlbSwgaXQgZG9lcyBub3Qgd29yayBvZnRlbiwgYW5kIGJlc2lkZXMgYWxsIHRob3NlIHdobyBjYXJyeSBhIG5hdGlvbmFsaXN0IG9yIHVuaWxhdGVyYWwgdm9pY2UgZ2V0IGFsb25nIHZlcnkgd2VsbCB0byBkZW5vdW5jZSB0aGUgRXVyb3BlLCByYXJlbHkgYWdyZWUgdG8gZmluZCBjb21tb24gc29sdXRpb25zLCBpbmNsdWRpbmcgZm9yIHRoZW1zZWx2ZXMuIFRoZSBheGVzIHdlIGFyZSB0YWxraW5nIGFib3V0IGJyaW5nIG5vIHNvbHV0aW9uLCBub25lLjxcL3A+XG48cD5BbmQgc28gb24gdGhpcyBzdWJqZWN0LCBJIGJlbGlldmUgdGhhdCBGcmFuY2UsIHdpdGggdGhlIGNvbnN0cnVjdGl2ZSBwYXJ0bmVycyBhbmQgdGhlIEV1cm9wZWFuIENvbW1pc3Npb24sIG11c3QgcHV0IGluIHBsYWNlLCBjb250cmlidXRlIHRvIHB1dCBpbiBwbGFjZSBhIHBlcmVubmlhbCBkZXZpY2UsIHJlc3BlY3RmdWwgb2YgdGhlIGh1bWFuaXRhcmlhbiBwcmluY2lwbGVzIGFuZCB0aGUgc29saWRhcnkgYW5kIGVmZmVjdGl2ZSBsYXcuIFdoaWNoIG1lYW5zIHRoYXQgd2UgbXVzdCBub3QgYW5kIGNhbiBub3QgZ2V0IG91dCBvZiB0aGUgcmlnaHQgdG8gYXN5bHVtIGFzIHdlIGhhdmUgdGhvdWdodC4gSSBsaXN0ZW4gZXZlcnkgZGF5IHNwZWVjaGVzIHRoYXQgc2F5ICZxdW90O2RvIG5vdCB0YWtlIHBlb3BsZSwgZG8gbm90IGFjY2VwdCB0aGVtLCBpdCYjMzk7cyB3ZWFrbmVzcywgZ29vZCB3aWxsLCZxdW90OyBGcmFuY2UsIGFuZCBJIHdlbGNvbWUsIGlzIG9uZSBvZiB0aGUgY291bnRyaWVzIHRoYXQgZHVyaW5nIHRoZSBwb2xpdGljYWwgY3Jpc2lzIG9mIHRoaXMgc3VtbWVyIGhhcyB3ZWxjb21lZCB0aGUgbW9zdCByZWZ1Z2VlcywgMjUwLCBJIGludml0ZSB5b3UgdG8gcmVtZW1iZXIgdGhlIHByb3BvcnRpb24gb2YgdGhlc2UgZmlndXJlcywgYmVjYXVzZSBvbiB0aGUgYmFzaXMgb2YgdGhlIGZpdmUgT0ZQUkEgbWlzc2lvbnMgdGhhdCB3ZSBvcmdhbml6ZWQsIHdlIGlkZW50aWZpZWQgdGhlbSBhcyB1bmRlciB0aGUgcmlnaHQgdG8gYXN5bHVtLiBCdXQgd2hvIGFyZSB0aGUgcG9saXRpY2lhbnMsIGJhc2ljYWxseSByZXNwb25zaWJsZSwgbHVjaWQsIHdobyBjYW4gZXhwbGFpbiB0byB1cyB0aGF0IHdlIHNob3VsZCBnaXZlIHVwIHRoZSByZXNwZWN0IG9mIHRoZSByaWdodCBvZiBhc3lsdW0gaW4gRnJhbmNlIGFuZCBpbiBFdXJvcGU/IEJ1dCB0aGlzIHJpZ2h0IG9mIGFzeWx1bSwgaXQgaXMgaW4gb3VyIGNvbnN0aXR1dGlvbiwgd2UgRnJlbmNoLCBpdCBpcyBpbiBhbGwgb3VyIEV1cm9wZWFuIHRleHRzLiBUaGUga2V5IHNpbXBseSBpcyB0byBhY2NlcHQgdGhpcyBkaWZmZXJlbnRpYXRpb24uIFRoZXJlIGFyZSB0aG9zZSB3aG8gYXJlIGVudGl0bGVkIHRvIGFzeWx1bSB0aGF0IG11c3QgYmUgYWNjZXB0ZWQgdW5jb25kaXRpb25hbGx5IGJ5IGhhdmluZyB0aGUgcmlnaHQgb3JnYW5pemF0aW9uLCB3aXRoIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBNZWRpdGVycmFuZWFuIGFuZCB3aXRoIHRoZSByZXN0IG9mIEFmcmljYSBhbmQgdGhlcmUgaXMgdGhlbiBhIG1pZ3JhdGlvbiBwb2xpY3kgdG8gYnVpbGQgYXQgRXVyb3BlYW4gbGV2ZWwgd2l0aCBBZnJpY2EgdG8gYXZvaWQsIHJlZHVjZSwgY29udHJvbCBtaWdyYXRpb24gZmxvd3MgbGlua2VkIHRvIGVjb25vbWljIG1pZ3JhdGlvbiBhbmQgb3JnYW5pemUgYSBtdWNoIG1vcmUgZWZmZWN0aXZlIHJldHVybiB0byB0aGVtLjxcL3A+XG48cD5UaGlzIGlzIHRoZSB2ZXJ5IG1lYW5pbmcgb2YgdGhlIGxhdyB0aGF0IHdpbGwgYmUgcHJvbXVsZ2F0ZWQgaW4gYSBmZXcgZGF5cyBhbmQgdGhhdCB3ZSBoYXZlIHRha2VuIGZvciBGcmFuY2UsIGl0IGlzIHRoZSB2ZXJ5IG1lYW5pbmcgb2YgdGhlIGFjdGlvbiB0aGF0IHdlIGNhcnJ5IGluIEV1cm9wZSwgYW5kIHRoZSBwYXJ0bmVyc2hpcCB0aGF0IHdlIHdhbnQgdG8gYnVpbGQsIHdpdGggdGhlIGFsbCBBZnJpY2FuIHN0YXRlcywgYXMgd2Ugc3RhcnRlZCB0byBkbywgaW4gQWJpZGphbiwgYXQgdGhlIGVuZCBvZiBsYXN0IHllYXIsIGluIHRoZSBkaWFsb2d1ZSBiZXR3ZWVuIHRoZSBFdXJvcGVhbiBVbmlvbiBhbmQgdGhlIEFmcmljYW4gVW5pb24sIGluIFBhcmlzLCBhIHllYXIgYWdvIGZvciBkYXksIHdpdGggdGhlIEFmcmljYW4gVW5pb24gYW5kIG1hbnkgY291bnRyaWVzIG9mIG9yaWdpbiBhbmQgdHJhbnNpdCwgYW5kIHdpdGggbWFueSBvZiBvdXIgcGFydG5lcnMsIHRoaXMgaXMgdGhlIHJpZ2h0IGFuc3dlciB0byB0aGUgbWlncmF0aW9uIGNyaXNpcy48XC9wPlxuPHA+SXQgaXMgdGhlcmVmb3JlIGEgZGVtYW5kaW5nIEV1cm9wZWFuIHBvbGljeSB0aGF0IHJlc3BlY3RzIG91ciB2YWx1ZXMsIGJ1dCB3aGljaCwgYmVjYXVzZSB3ZSBoYXZlIGZvdW5kIHRoZSBjb21tb24gcnVsZXMgb2YgYm9yZGVyIHByb3RlY3Rpb24sIGFuZCBpbnRlcm5hbCBzb2xpZGFyaXR5LCB3aWxsIGZpbmFsbHkgYmUgZWZmZWN0aXZlLiBGcmFuY2UgaGFzIGEgbWlncmF0b3J5IGNoYWxsZW5nZSwgd2UgYXJlIHRoZSBjb3VudHJ5IHRoYXQgcmVjZWl2ZWQgYWxtb3N0IHRoZSBtb3N0IHJlcXVlc3RzIGxhc3QgeWVhciwgdGhlIHNlY29uZCBjb3VudHJ5IG9mIGFzeWx1bSBhcHBsaWNhdGlvbnMsIGp1c3Qgb3ZlciAxMDAsMDAwLCBidXQgbm9uZSBhcnJpdmVkIGJ5IHNvLWNhbGxlZCBwcmltYXJ5IHJvYWRzLiBJdCBpcyB0aGUgaW5hYmlsaXR5IG9mIEV1cm9wZSB0byBtYW5hZ2UgdGhlIG1pZ3JhdG9yeSBzdWJqZWN0IHRoYXQgd2UgaGF2ZSBoYWQgc28gbWFueSBhc3lsdW0gYXBwbGljYXRpb25zLiBBbmQgc28gSSBpbnZpdGUgYWxsIHRob3NlIHdobyBob2xkIHNwZWVjaGVzIG9uIHRoaXMgc3ViamVjdCB0byBsb29rIGF0IHRoZSByZWFsaXR5IG9mIHRoZSBmYWN0cy4gSWYgd2UgaGF2ZSBhIG1vcmUgZWZmaWNpZW50IG9yZ2FuaXphdGlvbiBhdCB0aGUgRXVyb3BlYW4gbGV2ZWwsIHRoZW4gd2UgaGF2ZSBzb21lIG9mIHRoZSBhbnN3ZXIgdG8gb3VyIG93biBjaGFsbGVuZ2VzLCBhbmQgc29tZXRpbWVzIHRvIG91ciBvd24gZmVhcnMuPFwvcD5cbjxwPkl0IG11c3QgYmUgYnVpbHQgaW4gYSBzdXN0YWluYWJsZSBhbmQgZGVtYW5kaW5nIHdheSB3aXRoIGFsbCB0aGUgcGFydG5lcnMgaW52b2x2ZWQuIEJ1dCBtb3JlIGJyb2FkbHksIHlvdSBoYXZlIHVuZGVyc3Rvb2QsIG9uIGVhY2ggb2YgdGhlc2UgdG9waWNzLCBJIHdpbGwgcGxlYWQgZm9yIEV1cm9wZSB0byBiZSB0aGF0IHBvd2VyIHdoaWNoLCBhcyBJIGp1c3Qgc2FpZCwgZm9yIHRoZSBzdWJqZWN0IG9mIG1pZ3JhdGlvbiwgYW5kIHdlbGwsIHdpbGwgYnVpbGQgdGhlIHNvbHV0aW9ucyB3ZSBiZWxpZXZlIGluIGdsb2JhbGl6YXRpb24uIEFuIGVjb25vbWljIGFuZCBjb21tZXJjaWFsIHBvd2VyIHRocm91Z2ggYSBzdHJvbmdlciBldXJvIGFyZWEsIGEgZGVmZW5zZSBvZiBvdXIgc3RyYXRlZ2ljIGFuZCBjb21tZXJjaWFsIGludGVyZXN0cywgYSBmaW5hbmNpYWwgaW5kZXBlbmRlbmNlIHdpdGggbWVjaGFuaXNtcyB0aGF0IHdlIG11c3QgcHJvcG9zZSwgYW5kIHRoaXMgaXMgdGhlIHJlcXVlc3Qgd2UgbWFkZSB0byB0aGUgQ29tbWlzc2lvbiwgdG8gZXN0YWJsaXNoIHRoZSBmaW5hbmNpYWwgYXV0b25vbXkgb2YgRXVyb3BlLCBhbmQgZmluYWxseSBwdXQgYW4gZW5kIHRvIHRoZSBleHRyYXRlcnJpdG9yaWFsaXR5IG9mIGNlcnRhaW4gZmluYW5jaWFsIGFuZCBtb25ldGFyeSBkZWNpc2lvbnMuPFwvcD5cbjxwPkFuIGVjb25vbWljIGFuZCBjb21tZXJjaWFsIHBvd2VyIHRoYXQgd2lsbCBidWlsZCB0YXggYW5kIHNvY2lhbCBjb252ZXJnZW5jZSB3aXRoaW4gaXQuIEkgd2FudCBhIEV1cm9wZSB0aGF0IGlzIGRpZ2l0YWwgcG93ZXIsIGFuZCBhcnRpZmljaWFsIGludGVsbGlnZW5jZSwgdGhyb3VnaCB0aGUgaW5pdGlhdGl2ZXMgd2Ugc3RhcnRlZCB0byB0YWtlLCBhIGZ1bmQgZm9yIGJyZWFrdGhyb3VnaCBpbm5vdmF0aW9ucywgYSByZWFsIGRpZ2l0YWwgc2luZ2xlIG1hcmtldCwgYSB0YXhhdGlvbiBqdXN0IGRpZ2l0YWwgYWN0b3JzLiBBIEV1cm9wZSBvZiBlY29sb2dpY2FsLCBmb29kIGFuZCBzYW5pdGFyeSBwb3dlciwgd2hpY2ggYWxsb3dzIGV2ZXJ5d2hlcmUgaW4gRXVyb3BlIHRvIGd1YXJhbnRlZSB0aGUgc2FtZSByaWdodHMgb2YgYWNjZXNzIHRvIGEgaGVhbHRoeSBmb29kIGFuZCBhIGhlYWx0aGllciBlbnZpcm9ubWVudC48XC9wPlxuPHA+VGhpcyB2aXNpb24sIHdlIHdlYXIgaXQ7IHRvIGxlYWQgaXQgYWxvbmUgYW1vbmcgb3RoZXIgRXVyb3BlYW4gYWN0b3JzIHdobyBkbyBub3QgZm9sbG93IGl0IGlzIGltcG9zc2libGUsIGl0IGlzIGF0IHRoZSBFdXJvcGVhbiBsZXZlbCB0aGF0IHdlIG11c3QgbGVhZCwgYW5kIHRoYXQgd2Ugd2lsbCBsZWFkIHRvIHRoZSBlbmQgdGhlIGZpZ2h0IGZvciB0aGUgZW5kIG9mIGdseXBob3NhdGUsIHRoYXQgRnJhbmNlIGhhcyBpbml0aWF0ZWQsIEkgcmVtaW5kIHlvdSwgYW5kIHdpdGhvdXQgRnJhbmNlLCBpdCB3YXMgZmlmdGVlbiB5ZWFycyBvZiBhdXRob3JpemF0aW9uIHRoYXQgd2VyZSBhZ2FpbiBncmFudGVkIHRvIGdseXBob3NhdGUgdGhyb3VnaG91dCBFdXJvcGUsIGJ1dCBhbHNvIGZvciBhIHNpbmdsZSBwcmljZSBvZiBjYXJib24sIGZvciBhIHJlYWwgZW5lcmd5IHNvdmVyZWlnbnR5LCBmb3IgYSByZWFsIHN0cmF0ZWd5IG9mIHJlbmV3YWJsZS48XC9wPlxuPHA+SSBiZWxpZXZlIGluIHRoaXMgdmlzaW9uIG9mIGEgRXVyb3BlIHdoZXJlIGF0IHRoZSB0aW1lIG9mIGNob2ljZSB3aGljaCBpcyBvdXJzLCB0aGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgZm9yIGEgcHJvZ3Jlc3NpdmUgaHVtYW5pc20sIGluIEV1cm9wZSwgSSBiZWxpZXZlIHRoYXQgdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IGZvciBhIHdheSB3aGljaCB3aWxsIG1ha2UgaXQgcG9zc2libGUgZnVsbHkgcGVyY2VpdmUgdG8gb3VyIGZlbGxvdyBjaXRpemVucyB0aGF0IEV1cm9wZSwgb24gbWFueSBpc3N1ZXMgdGhhdCB3b3JyeSB0aGVtIGlzIG5vdCBqdXN0IHBhcnQgb2YgdGhlIGFuc3dlciwgYnV0IHRoZSBoZWFydCBvZiBvdXIgc3RyYXRlZ2ljIGF1dG9ub215LCB0aGUgaGVhcnQgb2YgdGhlIGFuc3dlciB3ZSBjYW4gYnJpbmcgdG8gb3VyIHBlb3BsZXMsIGFuZCB2aXMtXHUwMGUwLXZpcyBvdXIgcGFydG5lcnMuPFwvcD5cbjxwPldlIG11c3Qgd3JpdGUgYW5kIHRlbGwgdGhlIGhpc3Rvcnkgb2YgdGhlIEV1cm9wZSB3ZSB3YW50LCBkZW1vbnN0cmF0ZSBpdHMgY29uY3JldGUgcmVzdWx0cywgdG8gY29udmluY2Ugb3VyIGZlbGxvdyBjaXRpemVucyB0aGF0IHRoZSByb2FkIHRvIGNvb3BlcmF0aW9uIGluIEV1cm9wZSwgaW4gdGhlIHdvcmxkLCBpcyB0aGUgb25seSBvbmUgdGhhdCBjYW4gbGVhZCB0byBtdXR1YWwgdHJ1c3QgaW4gdGhlIGludGVyZXN0IG9mIEZyYW5jZS48XC9wPlxuPHA+TGFkaWVzIGFuZCBHZW50bGVtZW4gQW1iYXNzYWRvcnMsIEkgaGF2ZSBwcmVzZW50ZWQgdG8geW91IG91ciBwcmlvcml0aWVzIGZvciB0aGUgY29taW5nIHllYXIgYXJvdW5kIHRoZXNlIGZvdXIgcGlsbGFycyB0aGF0IEkgZGVmaW5lZCBsYXN0IHllYXIuIFlvdSB3aWxsIGltcGxlbWVudCB0aGVtIHVuZGVyIHRoZSBsZWFkZXJzaGlwIG9mIHRoZSBNaW5pc3RlciBvZiBFdXJvcGUgYW5kIEZvcmVpZ24gQWZmYWlycyBKZWFuLVl2ZXMgTEUgRFJJQU4sIHdob20gSSB0aGFuayBhZ2FpbiBmb3IgdGhlIHRpcmVsZXNzIHdvcmsgaGUgaXMgZG9pbmcsIGluIFBhcmlzIGFuZCBhcm91bmQgdGhlIHdvcmxkLCBlZmZlY3RpdmVseSBzdXBwb3J0ZWQgYnkgTmF0aGFsaWUgTE9JU0VBVSBhbmQgSmVhbi1CYXB0aXN0ZSBMRU1PWU5FIGFuZCBieSBhbGwgdGhlIGFnZW50cyBvZiB0aGUgUXVhaSBkJiMzOTtPcnNheSwgaW4gdGhlIHNlcnZpY2Ugb2Ygb3VyIGNvdW50cnkuIEkgd2lzaCB0byBleHByZXNzIHRvIHRoZW0gYWxsLCBleHByZXNzIHRvIHlvdSBhbGwgbXkgZ3JhdGl0dWRlIGZvciB0aGUgZGVkaWNhdGlvbiwgdGhlIHNraWxscywgdGhlIGludGVsbGlnZW5jZSwgdGhlIGNvbW1pdG1lbnQgYW5kIHRoZSBjb3VyYWdlLjxcL3A+XG48cD5PbiBlYWNoIG9mIHRoZSBpc3N1ZXMgSSBoYXZlIGp1c3QgZGVzY3JpYmVkLCB0aGUgYmF0dGxlIGlzIG5vdCB3b24sIGFuZCBGcmFuY2UsIHNvbWV0aW1lcywgc2VlbXMgdG8gaGF2ZSBhIHNvbGl0YXJ5IHZvaWNlLCBpbiBhbnkgY2FzZSwgaXQgaXMgd2hhdCBzb21lIGRlbm91bmNlIG9yIHdvdWxkIGxpa2UgdG8gbW9jay4gSSBkbyBub3QgdGhpbmsgdGhpcyB2b2ljZSBpcyBzb2xpdGFyeSwgSSB0aGluayBpdCBpcyBleHBlY3RlZCwgSSB0aGluayBpdCBpcyBkZXNpcmVkLCBhbmQgSSBiZWxpZXZlIGl0IGlzIHRydWUgdG8gd2hhdCBvdXIgc3RvcnkgaXMsIEkgdGhpbmsgaXQgbXVzdCBicmVhayB0b28gd2l0aCBoYWJpdHMgb3IgYXV0b21hdGlzbXMsIGFuZCB0aGF0IGl0IG11c3Qgc2VlayBldmVyeXdoZXJlIHRoaXMgZGVtYW5kIHdoaWNoIGlzIGltcG9zZWQgb24gdXMuPFwvcD5cbjxwPkZvcnR5IHllYXJzIGFnbywgYWxtb3N0IHRvIHRoZSBkYXksIFNPTEpFTklUU1lORSB3YXMgZ2l2aW5nIEhhcnZhcmQgYSB2ZXJ5IGJpZyBzcGVlY2ggdGhhdCB3YXMgY2FsbGVkIGFmdGVyIHRoZSBEZWNsaW5lIG9mIENvdXJhZ2UsIGFuZCBoZSB3YXMgYWxyZWFkeSBzYXlpbmcganVzdCBhYm91dCBldmVyeXRoaW5nIEkmIzM5O3ZlIGp1c3QgZGVzY3JpYmVkLCBhYm91dCB0aGUgZnJhZ2lsaXR5IG9mIFdlc3Rlcm4gd29ybGQgdGhhdCBoZSBoYWQgZGlzY292ZXJlZCB5ZXQgYW5kIHdoaWNoIHdhcyBwZXJjZWl2ZWQgYXMgdGhlIHBsYWNlIG9mIGFsbCBwcm9taXNlcy4gV2hhdCB3ZSBuZWVkIHRvIHN0b3AgdG9kYXkgaXMgcHJlY2lzZWx5IHRoZSBkZWNsaW5lIG9mIGNvdXJhZ2UuPFwvcD5cbjxwPkFuZCBzbyB0byBmYWNlIGl0LCBvdXIgdm9jYXRpb24gaXMgZXZlcnl3aGVyZSwgYW5kIHRoYXQgaXMgd2hhdCBJIGV4cGVjdCBmcm9tIHlvdSwgdG8gYmUgYSBtZWRpYXRpbmcgcG93ZXIsIGEgZGlwbG9tYXRpYywgbWlsaXRhcnksIGN1bHR1cmFsLCBlZHVjYXRpb25hbCwgbmF0aW9uYWwgYW5kIEV1cm9wZWFuIHBvd2VyLCBhbmQgdG8gYmUgYWx3YXlzIG1lZGlhdG9yLCBtZWRpYXRvciwgdGhhdCBtZWFucyB0aGF0IEZyYW5jZSBuZXZlciBnaXZlcyB1cCBoZXIgdm9pY2UsIGJ1dCB0aGF0IHNoZSBhbHdheXMgc2Vla3MgdG8gYnVpbGQgYWxsaWFuY2VzIG9uIHRoaXMgYmFzaXMsIGl0IGlzIG5vdCBhIHBvd2VyIG9mIGNvbXByb21pc2UsIGl0IGlzIG5vdCBhIG1lZGlhbiBwb3dlciBpdCBpcyBhIHBvd2VyIG9mIG1lZGlhdGlvbiwgdGhlIG9uZSB0aGF0IHNlZWtzIHByZWNpc2VseSB0byBidWlsZCB0aGlzIGludGVybmF0aW9uYWwgb3JkZXIgd2hpY2ggYWxvbmUsIEkgYmVsaWV2ZSB2ZXJ5IGRlZXBseSwgd2lsbCBhbGxvdyB1cyB0byBtYWtlIGEgbGl0dGxlIG1vcmUgaHVtYW4gYW5kIGh1bWFuaXN0LCB0aGUgZ2xvYmFsaXphdGlvbiB0aGF0IGlzIG91cnMuPFwvcD5cbjxwPkkga25vdyBJIGNhbiBjb3VudCBvbiB5b3UsIGJlY2F1c2UgeW91ciBkYWlseSBjb21taXRtZW50IHRvIG91ciBjb3VudHJ5IGlzIHRoZSBETkEgb2YgeW91ciBidXNpbmVzcyBhbmQgeW91ciBwcmlkZS4gSSB0aGFuayB5b3UgZm9yIHRoYXQuPFwvcD5cbjxwPjxhIGhyZWY9XCJodHRwOlwvXC93d3cuZWx5c2VlLmZyXC9hc3NldHNcL1VwbG9hZHNcLzIwMTgtMDgtMjctMTcuMzEuOC5qcGdcIj48aW1nIGNsYXNzPVwiYzNcIiBzcmM9XCJlbHlzZWVcL2ltYWdlc1wvaWNvX3NtYWxsX3BkZi5wbmdcIiBhbHQ9XCJGaWNoaWVyIFBERiAoMTgwIEtvKTpcIlwvPiAyMDE4IDA4IDI3IDE3LjMxLjg8XC9hPjxcL3A+XG48cD5FRElUT1InUyBOT1RFOiBUaGlzIGFydGljbGUgaXMgYSB0cmFuc2xhdGlvbi4gUGxlYXNlIGFjY2VwdCBvdXIgYXBvbG9naWVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmRcL29yIHNlbnRlbmNlIHN0cnVjdHVyZSBpcyBub3QgYmUgcGVyZmVjdC48XC9wPiJdLCJjb250ZXh0X3R5cGUiOiJvdGhlciJ9
FFEAU : 9th edition of the year franco-émirien El-Himeimat
MIL OSI Translation. Government of the Republic of France statements from French to English – From 28 August to 17 September 2018 took place the ninth edition of the year El-Himeimat, which has become, in a few years, a exercise must of the land-based component of the French forces stationed in the united arab Emirates (FFEAU) and of the Land Forces of the united arab emirates.878bdd161aecdab442ae75180d86a958bde3ecc87e4ec1be3593002aa5c3046a.eyJibG9ja05hbWUiOm51bGwsImF0dHJzIjp7ImRpc2FibGVDYWNoZSI6ZmFsc2V9LCJpbm5lckJsb2NrcyI6W10sImlubmVySFRNTCI6Ik1JTCBPU0kgVHJhbnNsYXRpb24uIEdvdmVybm1lbnQgb2YgdGhlIFJlcHVibGljIG9mIEZyYW5jZSBzdGF0ZW1lbnRzIGZyb20gRnJlbmNoIHRvIEVuZ2xpc2ggLSBGcm9tIDI4IEF1Z3VzdCB0byAxNyBTZXB0ZW1iZXIgMjAxOCB0b29rIHBsYWNlIHRoZSBuaW50aCBlZGl0aW9uIG9mIHRoZSB5ZWFyIEVsLUhpbWVpbWF0LCB3aGljaCBoYXMgYmVjb21lLCBpbiBhIGZldyB5ZWFycywgYSBleGVyY2lzZSBtdXN0IG9mIHRoZSBsYW5kLWJhc2VkIGNvbXBvbmVudCBvZiB0aGUgRnJlbmNoIGZvcmNlcyBzdGF0aW9uZWQgaW4gdGhlIHVuaXRlZCBhcmFiIEVtaXJhdGVzIChGRkVBVSkgYW5kIG9mIHRoZSBMYW5kIEZvcmNlcyBvZiB0aGUgdW5pdGVkIGFyYWIgZW1pcmF0ZXMuPHA+RURJVE9SJ1MgTk9URTogVGhpcyBhcnRpY2xlIGlzIGEgdHJhbnNsYXRpb24uIFBsZWFzZSBmb3JnaXZlIHVzIHNob3VsZCB0aGUgZ3JhbW1hciBhbmRcL29yIHNlbnRlbmNlIHN0cnVjdHVyZSBpcyBub3QgYmUgcGVyZmVjdC48XC9wPiIsImlubmVyQ29udGVudCI6WyJNSUwgT1NJIFRyYW5zbGF0aW9uLiBHb3Zlcm5tZW50IG9mIHRoZSBSZXB1YmxpYyBvZiBGcmFuY2Ugc3RhdGVtZW50cyBmcm9tIEZyZW5jaCB0byBFbmdsaXNoIC0gRnJvbSAyOCBBdWd1c3QgdG8gMTcgU2VwdGVtYmVyIDIwMTggdG9vayBwbGFjZSB0aGUgbmludGggZWRpdGlvbiBvZiB0aGUgeWVhciBFbC1IaW1laW1hdCwgd2hpY2ggaGFzIGJlY29tZSwgaW4gYSBmZXcgeWVhcnMsIGEgZXhlcmNpc2UgbXVzdCBvZiB0aGUgbGFuZC1iYXNlZCBjb21wb25lbnQgb2YgdGhlIEZyZW5jaCBmb3JjZXMgc3RhdGlvbmVkIGluIHRoZSB1bml0ZWQgYXJhYiBFbWlyYXRlcyAoRkZFQVUpIGFuZCBvZiB0aGUgTGFuZCBGb3JjZXMgb2YgdGhlIHVuaXRlZCBhcmFiIGVtaXJhdGVzLjxwPkVESVRPUidTIE5PVEU6IFRoaXMgYXJ0aWNsZSBpcyBhIHRyYW5zbGF0aW9uLiBQbGVhc2UgZm9yZ2l2ZSB1cyBzaG91bGQgdGhlIGdyYW1tYXIgYW5kXC9vciBzZW50ZW5jZSBzdHJ1Y3R1cmUgaXMgbm90IGJlIHBlcmZlY3QuPFwvcD4iXSwiY29udGV4dF90eXBlIjoib3RoZXIifQ==