ClRoZSBNUEwgaW5jbHVkZXMgYSBudW1iZXIgb2YgcHJlZGVmaW5lZCBtZXRhZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHJvdWdobHkKY2xhc3NpZmllZCBpbiB0d28gY2F0ZWdvcmllczogYGdlbmVyYWwgcHVycG9zZSBtZXRhZnVuY3Rpb25zYCwgZGVhbGluZyB3aXRoCmNvbmRpdGlvbmFsIHx0eXBlIHNlbGVjdGlvbnwgYW5kIGhpZ2hlci1vcmRlciBtZXRhZnVuY3Rpb24gfGludm9jYXRpb258LCAKfGNvbXBvc2l0aW9ufCwgYW5kIHxhcmd1bWVudCBiaW5kaW5nfCwgYW5kIGBudW1lcmljIG1ldGFmdW5jdGlvbnNgLCAKaW5jYXBzdWxhdGluZyBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIHxhcml0aG1ldGljfCwgfGNvbXBhcmlzb258LCAKfGxvZ2ljYWx8LCBhbmQgfGJpdHdpc2V8IG9wZXJhdGlvbnMuCgpHaXZlbiB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHBlcmZvcm0gaW50ZWdlciBudW1lcmljIGNvbXB1dGF0aW9ucyBhdCAKY29tcGlsZSB0aW1lIHVzaW5nIHRoZSBjb252ZW50aW9uYWwgb3BlcmF0b3JzIG5vdGF0aW9uLCB0aGUgbmVlZCBmb3IgdGhlIApzZWNvbmQgY2F0ZWdvcnkgbWlnaHQgYmUgbm90IG9idmlvdXMsIGJ1dCBpdCBpbiBmYWN0IHBsYXlzIGEgY2VudGFsIHJvbGUgaW4gCm1ha2luZyBwcm9ncmFtbWluZyB3aXRoIE1QTCBzZWVtaW5nbHkgZWZmb3J0bGVzcy4gSW4gCnBhcnRpY3VsYXIsIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gY29udGV4dHMgd2hlcmUgYnVpbHQtaW4gbGFuZ3VhZ2UgCmZhY2lsaXRpZXMgZmFsbCBzaG9ydCBbI3BvcnRhYmlsaXR5XV9cIDoKCjEpIFBhc3NpbmcgYSBjb21wdXRhdGlvbiB0byBhbiBhbGdvcml0aG0uCjIpIFBlcmZvcm1pbmcgYSBjb21wdXRhdGlvbiBvbiBub24taW50ZWdlciBkYXRhLgoKVGhlIHNlY29uZCB1c2UgY2FzZSBkZXNlcnZlcyBzcGVjaWFsIGF0dGVudGlvbi4gSW4gY29udHJhc3QgdG8gdGhlIGJ1aWx0LWluLApzdHJpY3RseSBpbnRlZ2VyIGNvbXBpbGUtdGltZSBhcml0aG1ldGljcywgdGhlIE1QTCBudW1lcmljIG1ldGFmdW5jdGlvbnMgYXJlIAoqcG9seW1vcnBoaWMqLCB3aXRoIHN1cHBvcnQgZm9yICptaXhlZC10eXBlIGFyaXRobWV0aWNzKi4gVGhpcyBtZWFucyB0aGF0IHRoZXkgCmNhbiBvcGVyYXRlIG9uIGEgdmFyaWV0eSBvZiBudW1lcmljIHR5cGVzIHwtLXwgZm9yIGluc3RhbmNlLCByYXRpb25hbCwgCmZpeGVkLXBvaW50IG9yIGNvbXBsZXggbnVtYmVycywgfC0tfCBhbmQgdGhhdCwgaW4gZ2VuZXJhbCwgeW91IGFyZSBhbGxvd2VkIHRvIApmcmVlbHkgaW50ZXJtaXggdGhlc2UgdHlwZXMgd2l0aGluIGEgc2luZ2xlIGV4cHJlc3Npb24uIFNlZSB8TnVtZXJpYyAKTWV0YWZ1bmN0aW9ufCBjb25jZXB0IGZvciBtb3JlIGRldGFpbHMgb24gdGhlIE1QTCBudW1lcmljIGluZnJhc3RydWN0dXJlLgoKLi4gVGhlIHByb3ZpZGVkIGBpbmZyYXN0cnVjdHVyZWBfXyBhbGxvd3MgZWFzeSBwbHVnZ2luZyBvZiB1c2VyLWRlZmluZWQgbnVtZXJpYyAKICAgdHlwZXMKICAgTmF0dXJhbGx5LCB0aGV5IGFsc28gLCBtZWFuaW5nIHRoYXQgeW91IGNhbiBwZXJmb3JtIGEgY29tcHV0YXRpb24gb24gdGhlIAogICBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgdGhlIHJlc3VsdCB3aWxsIHllaWxkIHRoZSBsYXJnZXN0L21vc3QgZ2VuZXJhbCAKICAgb2YgdGhlbS4gRm9yIHVzZXItZGVmaW5lZCBudW1lcmljIHR5cGVzLCB0aGV5IHByb3ZpZGUgYW4gYGluZnJhc3RydWN0dXJlYF9fIHRoYXQgCiAgIGFsbG93cyBlYXN5IHBsdWdnaW5nIGFuZCBzZWVtbGVzcyBpbnRlZ3JhdGlvbiB3aXRoIHByZWRlZmluZWQgbGlicmFyeSAKICAgdHlwZXMuIGRldGFpbHMuCgogICBfXyBgTnVtZXJpYyBNZXRhZnVuY3Rpb25gXwoKClRvIHJlZHVjZSBhIG5lZ2F0aXZlIHN5bnRhY3RpY2FsIGltcGFjdCBvZiB0aGUgbWV0YWZ1bmN0aW9ucyBub3RhdGlvbgpvdmVyIHRoZSBpbmZpeCBvcGVyYXRvciBub3RhdGlvbiwgYWxsIG51bWVyaWMgbWV0YWZ1bmN0aW9ucwphbGxvdyB0byBwYXNzIHVwIHRvIE4gYXJndW1lbnRzLCB3aGVyZSBOIGlzIGRlZmluZWQgYnkgdGhlIHZhbHVlIG9mCnxCT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZfCBjb25maWd1cmF0aW9uIG1hY3JvLgoKCi4uIFsjcG9ydGFiaWxpdHldIEFsbCBvdGhlciBjb25zaWRlcmF0aW9ucyBhc2lkZSwgYXMgb2YgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nIAogICAoZWFybHkgMjAwNCksIHVzaW5nIGJ1aWx0LWluIG9wZXJhdG9ycyBvbiBpbnRlZ3JhbCBjb25zdGFudHMgc3RpbGwgb2Z0ZW4gCiAgIHByZXNlbnQgYSBwb3J0YWJpbGl0eSBwcm9ibGVtIHwtLXwgbWFueSBjb21waWxlcnMgY2Fubm90IGhhbmRsZSBwYXJ0aWN1bGFyIAogICBmb3JtcyBvZiBleHByZXNzaW9ucywgZm9yY2luZyB1cyB0byB1c2UgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIEJlY2F1c2UgTVBMCiAgIG51bWVyaWMgbWV0YWZ1bmN0aW9ucyB3b3JrIG9uIHR5cGVzIGFuZCBlbmNhcHN1bGF0ZSB0aGVzZSBraW5kIG9mIHdvcmthcm91bmRzIAogICBpbnRlcm5hbGx5LCB0aGV5IGVsdWRlIHRoZXNlIHByb2JsZW1zLCBzbyBpZiB5b3UgYWltIGZvciBwb3J0YWJpbGl0eSwgaXQgaXMgCiAgIGdlbmVyYWxseSBhZHZpY2VkIHRvIHVzZSB0aGVtIGluIHRoZSBwbGFjZSBvZiB0aGUgY29udmVudGlvbmFsIG9wZXJhdG9ycywgZXZlbiAKICAgYXQgdGhlIHByaWNlIG9mIHNsaWdodGx5IGRlY3JlYXNlZCByZWFkYWJpbGl0eS4KCgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCg==