ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmYmMzOWRlLi4zNjE2M2U1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDggKzEsOCBAQAotRnJpIEphbiAyOCAwMDowNToxOCBQU1QgMjAwNyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KK0ZyaSBKYW4gMjYgMDA6MDU6MTggUFNUIDIwMDcgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+CiAKIAkqIGltcGxlbWVudGVkIHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIGZvciB1cmkuYyAoYnVnICMzODk3NjcpCiAKLVdlZCBKYW4gMjUgMTE6MTU6MDggUFNUIDIwMDcgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+CitUaHUgSmFuIDI1IDExOjE1OjA4IFBTVCAyMDA3IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgogCiAJKiB4cGF0aC5jOiBhZGRlZCBjaGVja3MgZm9yIGFsbG9jIGZhaWwgb24gY2FsbHMgdG8KIAkgIHhtbFhQYXRoTmV3Q29udGV4dCAobGlieHNsdCBidWcgIzQwMDI0MikKQEAgLTE4Mjc0LDE4MjcwICsxODI3NCwzIEBACiAJKiBtaWdyYXRlZCB0byBhdXRvbWFrZQogCSogcHJlZml4ZWQgdGhlIGZpbGVuYW1lcyBieSB4bWxfIHRvIGF2b2lkIGZpbGVuYW1lIGNsYXNoZXMKIAotVGh1IEphbiAxMSAxNTozODowOCBQU1QgMjAwNyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogUmUtZ2VuZXJhdGVkIHRoZSBkb2N1bWVudGF0aW9uIChBUEkgY2h1bmtzIDI3LTI5IHdlcmUgbWlzc2luZykKLQkgIChhbHNvIGNhdXNlcyBjaGFuZ2VzIHRvIHRlc3RhcGkuYywgZWxmZ2NjaGFjay5oIGFuZAotCSAgd2luMzIvbGlieG1sMi5kZWYuc3JjKQotCi1UdWUgSmFuICA5IDIyOjI0OjI2IENFVCAyMDA3IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBmaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgcHl0aG9uIHN0cmluZyBoYW5kbGluZwotCSAgd2hlbiBTQVggZXZlbnQgYXJlIHBhc3NlZCBiYWNrIHRvIHRoZSBweXRob24gaGFuZGxlcnMKLQotVGh1IEphbiAgNCAxODoyNzo0OSBDRVQgMjAwNyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBmaXggeG1sVGV4dFJlYWRlclNldHVwKCkgZGVzY3JpcHRpb24KLQkqIHRlc3QvcmVsYXhuZy9lbXB0eTEucm5nIHRlc3QvcmVsYXhuZy9jb21wc18wLnhtbAotCSAgdGVzdC9yZWxheG5nL2VtcHR5MV8wLnhtbCB0ZXN0L3JlbGF4bmcvY29tcHMucm5nCi0JICB0ZXN0L3JlbGF4bmcvZW1wdHkwLnJuZyB0ZXN0L3JlbGF4bmcvZW1wdHkwXzAueG1sCi0JICB0ZXN0L3JlbGF4bmcvZW1wdHkxXzEueG1sOiB0ZXN0cyB3aGljaCB3ZXJlIGFwcGFyZW50bHkgCi0JICBuZXZlciBjb21taXRlZCB0byBDVlMKLQotV2VkIEphbiAgMyAxNjowNToyMSBQU1QgMjAwNyBBbGVrc2V5IFNhbmluIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiB4bWxyZWFkZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaCB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6Ci0JZXhwb3NlIHhtbFRleHRSZWFkZXJTZXR1cCgpIGZ1bmN0aW9uCi0KLVdlZCBKYW4gIDMgMTY6MTQ6MTMgQ0VUIDIwMDcgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IGFkYXB0IHRoZSBleHRyYSB2ZXJzaW9uaW5nIGNvZGUgdG8gU1ZOCi0KLVRodSBEZWMgMTQgMTY6NTI6MzQgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwucHk6IGFwcGFyZW50bHkgaWQoKSBzb21ldGltZXMKLQkgIGdlbmVyYXRlIG5lZ2F0aXZlIHZhbHVlcyBhbmQgJVggb3V0cHV0cyAtWFhYWCA6LSgKLQotTW9uIERlYyAgNCAxMDozMDoyNSBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogcGF0Y2ggZnJvbSBNaWNoYWVsIERheSBvbiBzdGFuZGFsb25lCi0JICBhbmQgWE1MIGRlY2xhcmF0aW9uIGRldGVjdGlvbiwgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBjaGFuZ2UKLQotTW9uIERlYyAgNCAxMDoyNzowMSBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmM6IGFub3RoZXIgWEluY2x1ZGUgdXNlciBkYXRhIHByb3BhZ2F0aW9uIHBhdGNoIGZyb20KLQkgIE1pY2hhZWwgRGF5Ci0KLVRodSBOb3YgMjMgMTc6MjI6MDMgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBTdGV2ZW4gUmFpbndhdGVyIHRvIGZpeCAKLQkgIFVURjhUb0h0bWwgYmVoYXZpb3VyIG9uIGNvZGUgcG9pbnRzIHdoaWNoIGFyZSBub3QgbWFwcGFibGUgdG8KLQkgIHByZWRlZmluZWQgSFRNTCBlbnRpdGllcywgZml4ZXMgIzM3NzU0NAotCi1UaHUgTm92IDIzIDE3OjExOjIzIENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogZml4ZWQgYSBidWcgd2hlcmUgdGhlIHByaW5jaXBhbCBub2RlIHR5cGUgb2YgYW4gYXhpcwotCSAgd2Fzbid0IHRlc3RlZCBvbiBuYW1lIGNoZWNrLCBmaXhlcyBidWcgIzM3NzQzMgotCi1XZWQgTm92ICA4IDEwOjE5OjI3IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBjaGFuZ2UgaHRtbEN0eHRSZXNldCgpIGZvbGxvd2luZyBNaWNoYWVsIERheSBidWcKLQkgIHJlcG9ydCBhbmQgc3VnZ2VzdGlvbi4KLQotTW9uIE5vdiAgNiAwOTo1Njo0MSBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHVyaS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gSWdvciBmb3IgcGF0aCBjb252ZXJzaW9uIG9uIFdpbmRvd3MKLQotVGh1IE5vdiAgMiAxMToyOToxNyBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBhbm90aGVyIHNtYWxsIGNoYW5nZSBvbiB0aGUgYWxnb3JpdGhtIGZvciB0aGUKLQkgIGVsaW1pbmF0aW9uIG9mIGVwc2lsb24gdHJhbnNpdGlvbnMsIHNob3VsZCBoZWxwIG9uICMzNjI5ODkgdG9vCi0KLVdlZCBOb3YgIDEgMTY6MzM6MTAgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgZG9jdW1lbnRhdGlvbiBwYXRjaGVzIGZyb20gTWFya3VzIEtlaW0KLQkqIHhtbHJlZ2V4cC5jOiBmaXhlZCBvbmUgYnVnIGFuZCBhZGRlZCBhIGNvdXBsZSBvZiBvcHRpbWlzYXRpb25zCi0JICB3aGlsZSB3b3JraW5nIG9uIGJ1ZyAjMzYyOTg5Ci0KLUZyaSBPY3QgMjcgMTQ6NTQ6MDcgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIGEgcmV3b3JrZWQgdmVyc2lvbiBvZiBVc2FtYWggTWFsaWsgcGF0Y2gKLQkgIHRvIGF2b2lkIGdyb3dpbmcgdGhlIHBhcnNlciBzdGFjayBpbiBzb21lIGF1dG9jbG9zZSBjYXNlcywgc2hvdWxkCi0JICBmaXggIzM2MTIyMQotCi1UaHUgT2N0IDI2IDEwOjU0OjQwIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IFdpbGxpYW0gc3BvdHRlZCBhbiBvYnZpb3VzIGJ1ZwotCi1XZWQgT2N0IDI1IDE4OjA0OjUwIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5FV1MgY29uZmlndXJlLmluIHRlc3RhcGkuYyBkb2MvLyo6IHByZXBhcmluZyByZWxlYXNlIG9mCi0JICBsaWJ4bWwyLTIuNi4yNwotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBmaXggYSBzbWFsbCBwcm9ibGVtIHdpdGggcHJlcHJvYyBmbGFncwotCi1GcmkgT2N0IDIwIDE0OjU1OjQ3IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogZml4IGNvbW1lbnQgZm9yIHhtbERvY1NldFJvb3RFbGVtZW50IGMuZi4gIzM1MTk4MQotCSogeG1sbGludC5jOiBvcmRlciBYUGF0aCBlbGVtZW50cyB3aGVuIHVzaW5nIC0tc2hlbGwKLQotVHVlIE9jdCAxNyAyMzoyMzoyNiBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogYXBwbGllZCBmaXggZnJvbSBDaHJpc3RvcGhlciBCb3VtZW5vdCBmb3IgYnVnCi0JICAjMzYyNzE0IG9uIHJlZ2V4cHMgbWlzc2luZyAnXScKLQotVHVlIE9jdCAxNyAyMjozMjo0MiBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogYXBwbGllZCBwYXRjaCBmcm9tIE1hcml1cyBLb25pdHplciB0byBhdm9pZAotCSAgbGVha2luZyBpbiB4bWxOZXdJbnB1dEZyb21GaWxlKCkgaW4gY2FzZSBvZiBIVFRQIHJlZGlyZWN0aW9uCi0KLVR1ZSBPY3QgMTcgMjI6MTk6MDIgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBmaXggb25lIHByb2JsZW0gZm91bmQgaW4gaHRtbEN0eHRVc2VPcHRpb25zKCkKLQkgIGFuZCBwb2ludGVkIGluICMzNDA1OTEKLQotVHVlIE9jdCAxNyAyMjowNDozMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIHRlaCAyIHN0dXBpZCBidWdzIGFmZmVjdGluZyBodG1sUmVhZERvYygpIGFuZAotCSAgaHRtbFJlYWRJTygpIHRoaXMgc2hvdWxkIGZpeCAjMzQwMzIyCi0KLVR1ZSBPY3QgMTcgMjE6Mzk6MjMgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogYXBwbGllZCBwYXRjaCBmcm9tIE9sYWYgV2Fsa293aWFrIHdoaWNoIHNob3VsZCBmaXggIzMzNDEwNAotCi1UdWUgT2N0IDE3IDE4OjEyOjM0IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4aW5nIEhUTUwgbWluaW1pemVkIGF0dHJpYnV0ZSB2YWx1ZXMgdG8gYmUgZ2VuZXJhdGVkCi0JICBpbnRlcm5hbGx5IGlmIG5vdCBwcmVzZW50LCBmaXhlcyBidWcgIzMzMjEyNAotCSogcmVzdWx0L0hUTUwvZG9jMi5odG0uc2F4IHJlc3VsdC9IVE1ML2RvYzMuaHRtLnNheCAKLQkgIHJlc3VsdC9IVE1ML3dpcmVkLmh0bWwuc2F4OiB0aGlzIGFmZmVjdHMgdGhlIFNBWCBldmVudCBzdHJlbSBmb3IKLQkgIGEgZmV3IHRlc3QgY2FzZXMKLQotVHVlIE9jdCAxNyAxNzo1NjozMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGluZyBIVE1MIGVudGl0aWVzIGluIGF0dHJpYnV0ZXMgcGFyc2luZyBidWcgIzM2MjU1MgotCSogcmVzdWx0L0hUTUwvZW50aXRpZXMyLmh0bWwqIHRlc3QvSFRNTC9lbnRpdGllczIuaHRtbDogYWRkZWQgdG8KLQkgIHRoZSByZWdyZXNzaW9uIHN1aXRlCi0KLVR1ZSBPY3QgMTcgMDE6MjE6MzcgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBzdGFydGVkIHRvIHN3aXRjaCB4bWxsaW50IHRvIHVzZSB4bWxTYXZlRG9jIHRvIHRlc3QKLQkgICMzNDI1NTYKLQkqIHhtbHNhdmUuYzogZml4ZWQgIzM0MjU1NiBlYXN5IGFuZCBhIHdob2xlIHNldCBvZiBwcm9ibGVtcyB3aXRoCi0JICBlbmNvZGluZ3MsIEJPTSBhbmQgeG1sU2F2ZURvYygpCi0KLU1vbiBPY3QgMTYgMTU6MTQ6NTMgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBmaXggIzM0ODI1MiBpZiB0aGUgZG9jdW1lbnQgY2xhaW5zIHRvIGJlIGluIGEKLQkgIGRpZmZlcmVudCBlbmNvZGluZyBpbiB0aGUgbWV0YSB0YWcgYW5kIGl0J3Mgb2J2aW91c2x5IHdyb25nLAotCSAgZG9uJ3Qgc2NyZXcgdXAgdGhlIGVuZCBvZiB0aGUgY29udGVudC4KLQotTW9uIE9jdCAxNiAxMTozMjowOSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeCBhIGNodW5raW5nIGFuZCBzY3JpcHQgYnVnICMzNDc3MDgKLQotTW9uIE9jdCAxNiAwOTo1MTowNSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IHJlbW92ZSBhIHdhcm5pbmcKLQkqIGVuY29kaW5nLmM6IGNoZWNrIHdpdGggdXBwZXJjYXNlIGZvciBBSVggaWNvbnYoKSBzaG91bGQgZml4ICMzNTI2NDQKLQkqIGRvYy9leGFtcGxlcy9NYWtlZmlsZS5hbTogcGFydGlhbGx5IGhhbmRsZSBvbmUgYnVnIHJlcG9ydAotCi1TdW4gT2N0IDE1IDIyOjMxOjQyIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXggdGhlIHBhdGNoIGZvciB1bnJlcHJvZHVjdGFibGUgIzM0MzAwMCBidXQKLQkgIGFsc28gZml4IGEgbGluZS9jb2x1bW4ga2VlcGluZyBlcnJvcgotCSogcmVzdWx0L2Vycm9ycy9hdHRyMS54bWwuZXJyIHJlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVycgotCSAgcmVzdWx0L2Vycm9ycy9uYW1lLnhtbC5lcnIgcmVzdWx0L2Vycm9ycy9uYW1lMi54bWwuZXJyIAotCSAgcmVzdWx0L3NjaGVtYXMvYW55QXR0ci1wcm9jZXNzQ29udGVudHMtZXJyMV8wXzAuZXJyIAotCSAgcmVzdWx0L3NjaGVtYXMvYnVnMzEyOTU3XzFfMC5lcnI6IGFmZmVjdGVkIGxpbmVzIGluIGVycm9yIG91dHB1dAotCSAgb2YgdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotU2F0IE9jdCAxNCAxMDo0Njo0NiBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGluZyBidWcgIzM0NDM5MCB3aXRoIHhtbFJlY29uY2lsaWF0ZU5zCi0KLVNhdCBPY3QgMTQgMDA6MzE6NDkgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhZGRlZCAtLWh0bWwgLS1tZW1vcnkgdG8gdGVzdCBodG1sUmVhZE1lbW9yeSB0byAKLQkgIHRlc3QgIzMyMTYzMgotCSogSFRNTHBhcnNlci5jOiBhZGRlZCB2YXJpb3VzIGluaXRpYWxpemF0aW9uIGNhbGxzIHdoaWNoIG1heSBoZWxwIAotCSAgIzMyMTYzMiBidXQgbm90IGNvbmNsdXNpdmUKLQkqIHRlc3RhcGkuYyB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBmaXhlZCBjb21waWxhdGlvbiB3aXRoCi0JICAtLXdpdGgtbWluaW11bSAtLXdpdGgtc2F4MSBhbmQgLS13aXRoLW1pbmltdW0gLS13aXRoLXNjaGVtYXMKLQkgIGZpeGluZyAjMzI2NDQyCi0KLUZyaSBPY3QgMTMgMTg6MzA6NTUgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXggYSBSZWxheC1ORyBidWcgcmVsYXRlZCB0byBlbGVtZW50IGNvbnRlbnQgcHJvY2Vzc2luZywKLQkgIGZpeGVzIGJ1ZyAjMzAyODM2Ci0JKiB0ZXN0L3JlbGF4bmcvMzAyODM2LnJuZyB0ZXN0L3JlbGF4bmcvMzAyODM2XzAueG1sCi0JICByZXN1bHQvcmVsYXhuZy8zMDI4MzYqOiBhZGRlZCB0byByZWdyZXNzaW9uIHRlc3RzCi0KLUZyaSBPY3QgMTMgMTQ6NDI6NDQgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeCBhIHByb2JsZW0gaW4geG1sU3BsaXRRTmFtZSByZXN1bHRpbmcgaW4gYnVnICMzMzQ2NjkKLQotRnJpIE9jdCAxMyAxMjoyNzoyMiBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgeG1sSU9QYXJzZURURCBoYW5kbGluZyBvZiBAaW5wdXQgaW4gZXJyb3IgY2FzZSwKLQkgIFNob3VsZCBmaXggIzMzNTA4NQotCSogdGVzdGFwaS5jOiByZXNldCB0aGUgaHR0cF9wcm94eSBlbnYgdmFyaWFibGUgdG8gbm90IHdhc3RlIHRpbWUKLQkgIG9uIHJlZ3Jlc3Npb24gdGVzdHMKLQotVGh1IE9jdCAxMiAyMzowNzo0MyBDRVNUIDIwMDYgUm9iIFJpY2hhcmRzIDxycmljaGFyZHNAY3RpbmR1c3RyaWVzLm5ldD4KLQotCSogeG1sSU8uYzogZml4IFdpbmRvd3MgY29tcGlsZSAtIG1pc3NpbmcgeG1sV3JhcE9wZW4uCi0KLVRodSBPY3QgMTIgMTg6MjE6MTggQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIHRoZSBoZXVyaXN0aWMgdXNlZCB3aGVuIHRyeWluZyB0byBkZXRlY3QgbWl4ZWQtY29udGVudAotCSAgZWxlbWVtdHMgaWYgdGhlIHBhcnNlciB3YW50cyB0byB0cmVhdCBpZ25vcmFibGUgd2hpdGVzcGFjZXMgCi0JICBpbiBhIG5vbi1zdGFuZGFyZCB3YXksIHNob3VsZCBmaXggYnVnICMzMDAyNjMKLQotVGh1IE9jdCAxMiAxNDo1MjozOCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4IGEgZmlyc3QgYXJnIGVycm9yIGluIFNBWCBjYWxsYmFjayBwb2ludGVkIG91dCBieQotCSAgTWlrZSBIb21tZXksIGFuZCBhbm90aGVyIG9uZSBzdGlsbCBoYW5naW5nIGFyb3VuZC4gU2hvdWxkIGZpeCAjMzQyNzM3Ci0KLVdlZCBPY3QgMTEgMjM6MTE6NTggQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBmaXggY29tbWVudCBvbiB2ZXJzaW9ucwotCSogeG1sbWVtb3J5LmM6IGRvIG5vdCBzcGVuZCB0b28gbXVjaCB0aW1lIGRpZ2dpbmcgaW4gZHVtcGVkIG1lbW9yeQotCi1XZWQgT2N0IDExIDE4OjQwOjAwIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIGEgd2VpcmQgZXJyb3Igd2hlcmUgdmFsaWRpdHkgY29udGV4dCB3aG91bGQgbm90Ci0JICBzaG93IHVwIGlmIHdhcm5pbmdzIHdlcmUgZGlzYWJsZWQgcG9pbnRlZCBvdXQgYnkgQm9iIFN0YXl0b24KLQkqIHhtbElPLmMgZG9jL2dlbmVyYXRvci5weTogY2xlYW51cCBhbmQgZml4IHRvIHJlZ2VuZXJhdGUgdGhlIGRvY3MKLQkqIGRvYy8vKiB0ZXN0YXBpLmM6IHJlYnVpbHQgdGhlIGRvY3MKLQotV2VkIE9jdCAxMSAxNDozMjowMCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwtMi4wLnBjLmluOiBhcHBsaWVkIHBhdGNoIGZyb20gTWlraGFpbCBaYWJhbHVldiB0byBzZXBhcmF0ZQotCSAgbGlicmFyeSBmbGFncyBmb3Igc2hhcmVkIGFuZCBzdGF0aWMgYnVpbGRzLCBmaXhlcyAjMzQ0NTk0LiBJZiB0aGlzCi0JICBiaXRlcyB5b3UsIHVzZSB4bWwyLWNvbmZpZy4KLQotV2VkIE9jdCAxMSAxMToyNzozNyBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW06IHJlbW92ZSB0aGUgYnVpbGQgcGF0aCByZWNvcmRlZCBpbiB0aGUgcHl0aG9uCi0JICBzaGFyZWQgbW9kdWxlIGFzIFBldGVyIEJyZWl0ZW5sb2huZXIgcG9pbnRlZCBvdXQsIHNob3VsZCBmaXggIzM0NjAyMgotCi1XZWQgT2N0IDExIDExOjE0OjUxIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBNaWtoYWlsIFphYmFsdWV2IGZpeGluZyB0aGUgY29uZGl0aW9ucwotCSAgb2YgdW5lc2NhcGluZyBmcm9tIFVSTCB0byBmaWxlcGF0aCwgc2hvdWxkIGZpeCAjMzQ0NTg4LgotCi1XZWQgT2N0IDExIDEwOjI0OjU4IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4c3RjL01ha2VmaWxlLmFtOiBhcHBsaWVkIHBhdGNoIGZyb20gUGV0ZXIgQnJlaXRlbmxvaG5lcgotCSAgZm9yIHdnZXQgZGV0ZWN0aW9uIGFuZCBmaXggb2YgYSBQeXRob24gcGF0aCBwcm9ibGVtLCBzaG91bGQgZml4Ci0JICAjMzQwOTkzCi0KLVR1ZSBPY3QgMTAgMjI6MDI6MjkgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvZW50aXRpZXMuaCBlbnRpdGllcy5jIFNBWDIuYyBwYXJzZXIuYzogdHJ5aW5nIHRvCi0JICBmaXggZW50aXRpZXMgYmVoYXZpb3VyIHdoZW4gdXNpbmcgU0FYLCBoYWQgdG8gZXh0ZW5kIGVudGl0aWVzIAotCSAgY29udGVudCBhbmQgaGFjayBvbiB0aGUgZW50aXRpZXMgcHJvY2Vzc2luZyBjb2RlLCBidXQgdGhhdCBzaG91bGQKLQkgIGZpeCB0aGUgbG9uZyBzdGFuZGluZyBidWcgIzE1OTIxOQotCi1UdWUgT2N0IDEwIDE0OjM2OjE4IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHVyaS5jIGluY2x1ZGUvbGlieG1sL3VyaS5oOiBhZGQgYSBuZXcgZnVuY3Rpb24geG1sUGF0aFRvVXJpKCkKLQkgIHRvIHByb3ZpZGUgYSBjbGVhbiBjb252ZXJzaW9uIHdoZW4gc2V0dGluZyB1cCBhIGJhc2UKLQkqIFNBWDIuYyB0cmVlLmM6IHVzZSBzYWlkIGZ1bmN0aW9uIHdoZW4gc2V0dGluZyB1cCBkb2MtPlVSTAotCSAgb3IgdXNpbmcgdGhlIHhtbFNldEJhc2UgZnVuY3Rpb24uIFNob3VsZCBmaXggIzM0NjI2MQotCi1UdWUgT2N0IDEwIDExOjA1OjU5IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmM6IGFwcGxpZWQgYSBwb3J0YWJpbGl0eSBwYXRjaCBmcm9tIEVtZWx5YW5vdiBBbGV4ZXkKLQotVHVlIE9jdCAxMCAxMDo1MjowMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogYXBwbGllZCBhbmQgc2xpZ2h0bHkgbW9kaWZpZWQgYSBwYXRjaCBmcm9tIE1pY2hhZWwgRGF5IHRvIAotCSAga2VlcCBfcHJpdmF0ZSBpbiB0aGUgcGFyc2VyIGNvbnRleHQgd2hlbiBwYXJzaW5nIGV4dGVybmFsIGVudGl0aWVzCi0KLVR1ZSBPY3QgMTAgMTA6MzM6NDMgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5weSBweXRob24vdHlwZXMuYzogYXBwbGllZCBwYXRjaCBmcm9tIFJvc3MgUmVlZHN0cm9tLAotCSAgQnJpYW4gV2VzdCBhbmQgU3RlZmFuIEFuY2EgdG8gYWRkIFhQb2ludGVyIHN1cG9ydCB0byB0aGUgUHl0aG9uIGJpbmRpbmdzCi0KLUZyaSBTZXAgMjkgMTE6MTM6NTkgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jOiBmaXhlZCBhIGNvbW1lbnQKLQkqIHhpbmNsdWRlLmMgaW5jbHVkZS9saWJ4bWwveGluY2x1ZGUuaDogYXBwbGllZCBhIHBhdGNoIGZyb20gTWljaGFlbCBEYXkKLQkgIHRvIGFkZCBhIG5ldyBmdW5jdGlvbiBwcm92aWRpbmcgdGhlIF9wcml2YXRlIGZpZWxkIGZvciB0aGUgZ2VuZXJhdGVkCi0JICBwYXJzZXIgY29udGV4dHMgeG1sWEluY2x1ZGVQcm9jZXNzRmxhZ3NEYXRhKCkKLQotVGh1IFNlcCAyMSAxMDozNjoxMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gTWljaGFlbCBEYXkgZG9pbmcgc29tZSByZWZhY3RvcmluZwotCSAgZm9yIHRoZSBjYXRhbG9nIGVudGl0eSBsb2FkZXJzLgotCi1UaHUgU2VwIDIxIDA4OjUzOjA2IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC9IVE1McGFyc2VyLmg6IGV4cG9ydHMgaHRtbE5ld1BhcnNlckN0eHQoKQotCSAgYXMgTWljaGFlbCBEYXkgcG9pbnRlZCBvdXQgdGhpcyBpcyBuZWVkZWQgdG8gdXNlIGh0bWxDdHh0UmVhZCooKQotCi1UdWUgU2VwIDE5IDE0OjQyOjU5IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQmVuIERhcm5lbGwgb24gIzMyMTU0NSwgSSBjb3VsZCBub3QKLQkgIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSBidXQgMS8gdGhpcyBpcyBzYWZlIDIvIGl0J3MgYmV0dGVyIHRvIGJlIHNhZmUuCi0KLVNhdCBTZXAgMTYgMTY6MDI6MjMgQ0VTVCAyMDA2IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHRyZWUuYzogeG1sVGV4dENvbmNhdCB3b3JrcyB3aXRoIGNvbW1lbnRzIGFuZCBQSSBub2RlcyAoYnVnICMzNTU5NjIpLgotCSogcGFyc2VyLmM6IGZpeCByZXN1bHRpbmcgdHJlZSBjb3JydXB0aW9uIHdoZW4gdXNpbmcgWE1MIG5hbWVzcGFjZSAKLQkgIHdpdGggZXhpc3RpbmcgZG9jIGluIHhtbFBhcnNlQmFsYW5jZWRDaHVua01lbW9yeVJlY292ZXIuCi0KLUZyaSBTZXAgIDEgMTE6NTI6NTUgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogYW5vdGhlciBwYXRjaCBmcm9tIEVtZWx5YW5vdiBBbGV4ZXkgdG8gY2xlYW4gdXAgYSBmZXcgdGhpbmdzCi0JICBpbiB0aGUgcHJldmlvdXMgcGF0Y2guCi0KLVdlZCBBdWcgMzAgMTU6MTA6MDkgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogYXBwbGllZCBwYXRjaCBmcm9tIFJvbGFuZCBTY2h3aW5nZWwgdG8gZml4IHRoZSBwcm9ibGVtCi0JICB3aXRoIGZpbGUgbmFtZXMgaW4gVVRGLTggb24gV2luZG93cywgYW5kIGNvbXBhdCBvbiBvbGRlciB3aW45eCAKLQkgIHZlcnNpb25zLgotCi1UdWUgQXVnIDIyIDE2OjUxOjIyIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIGEgYnVnICMyMDMxMjUgaW4gUmVkIGhhdCBidWd6aWxsYSwgY3Jhc2hpbmcgUEhQNAotCSAgb24gdmFsaWRhdGlvbiBlcnJvcnMsIHRoZSBoZXVyaXN0aWMgdG8gZ3Vlc3MgaXMgYSB2Y3R4dCB1c2VyCi0JICBwb2ludGVyIGlzIHRoZSBwYXJzaW5nIGNvbnRleHQgd2FzIGluc3VmZmljaWVudC4KLQotTW9uIEF1ZyAyMSAxMDo0MDoxMCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sY2F0YWxvZy4xIGRvYy94bWxjYXRhbG9nX21hbi54bWwgZG9jL3htbGxpbnQuMSBkb2MveG1sbGludC54bWw6Ci0JICBhcHBsaWVkIHBhdGNoIHRvIG1hbiBwYWdlcyBmcm9tIERhbmllbCBMZWlkZXJ0IGFuZCByZWdlbmVyYXRlZAotCi1UaHUgQXVnIDE3IDAwOjQ4OjMxIENFU1QgMjAwNiBSb2IgUmljaGFyZHMgPHJyaWNoYXJkc0BjdGluZHVzdHJpZXMubmV0PgotCi0JKiB4bWx3cml0ZXIuYzogQWRkIGEgZG9jdW1lbnQgdG8gdGhlIHhtbHdyaXRlciBzdHJ1Y3R1cmUgYW5kIAotCSAgcGFzcyBkb2N1bWVudCB3aGVuIHdyaXRpbmcgYXR0cmlidXRlIGNvbnRlbnQgZm9yIGVuY29kaW5nIHN1cHBvcnQuCi0KLVdlZCBBdWcgMTYgMDE6MTU6MTIgQ0VTVCAyMDA2IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIEhUTUx0cmVlLmMgeG1sc2F2ZS5jOiBBZGQgbGluZWZlZWRzIHRvIGVycm9yIG1lc3NhZ2VzIGFsbG93aW5nIAotCSAgZm9yIGNvbnNpc3RhbnQgaGFuZGxpbmcuCi0KLVR1ZSBBdWcgMTUgMTU6MDI6MTggQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYzogQXBwbGllZCB0aGUgcHJvcG9zZWQgZml4IGZvciB0aGUgZG9jdW1lbnRhdGlvbgotCSAgb2YgeG1sWFBhdGhDYXN0VG9TdHJpbmcoKTsgc2VlIGJ1ZyAjMzQ2MjAyLgotCi1UdWUgQXVnIDE1IDE0OjQ5OjE4IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogV2hpbGUgaW52ZXN0aWdhdGluZyBidWcgIzM1MDI0NywgSSBub3RpY2VkCi0JICB0aGF0IHhtbFNjaGVtYUlEQ01hdGNoZXIgc3RydWN0cyBhcmUgbWFzc2l2ZWx5IHJlY3JlYXRlZAotCSAgYWx0aG91Z2ggb25seSBhIG1heGltdW0gb2YgMyBzdHJ1Y3RzIGlzIHVzZWQgYXQgdGhlIHNhbWUKLQkgIHRpbWU7IGFkZGVkIGEgY2FjaGUgZm9yIHRob3NlIHN0cnVjdHVyZXMgdG8gdGhlCi0JICB2YWxpZGF0aW9uIGNvbnRleHQuCi0KLVNhdCBBdWcgMTIgMTY6MTI6NTMgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gTWFydG9uIElsbGVzIHRvIGZpeCBhbiBhbGxvY2F0aW9uCi0JICBidWcgaW4geG1sU2NoZW1hWFBhdGhFdmFsdWF0ZSBzaG91bGQgY2xvc2UgIzM1MTAzMgotCi1Nb24gQXVnICA3IDEzOjA4OjQ2IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogYXBwbGllZCBwYXRjaCBmcm9tIEJlcnRyYW5kIEZyaXRzY2ggdG8gZml4IGEgYnVnIGluCi0JICB4bWxTY2hlbWFDbGVhclZhbGlkQ3R4dAotCi1GcmkgQXVnICA0IDE0OjUwOjQxIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IGZpeGVkIHRoZSBjb252ZXJzaW9uIG9mIGxvbmcgcGFyYW1ldGVycwotCi1UaHUgSnVsIDEzIDE1OjAzOjExIENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNhdmUuYzogUmVtb3ZlZCB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgQ0RBVEEgc2VjdGlvbnMKLQkgIGZvciB0aGUgY29udGVudCBvZiB0aGUgInNjcmlwdCIgYW5kICJzdHlsZSIgZWxlbWVudHMgd2hlbgotCSAgc2VyaWFsaXppbmcgWEhUTUwuIFRoZSBpc3N1ZSB3YXMgcmVwb3J0ZWQgYnkgVmluY2VudCBMZWZldnJlLAotCSAgYnVnICMzNDUxNDcuCi0JKiByZXN1bHQveGh0bWwxIHJlc3VsdC9ub2VudC94aHRtbDE6IEFkanVzdGVkIHJlZ3Jlc3Npb24gdGVzdAotCSAgcmVzdWx0cyBkdWUgdG8gdGhlIHNlcmlhbGl6YXRpb24gY2hhbmdlIGRlc2NyaWJlZCBhYm92ZS4KLQotVGh1IEp1bCAxMyAwODozMjoyMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gcGFyc2VyLmMgeG1sbGludC5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW46IGFwcGxpZWQgcGF0Y2ggZnJvbSBBbmRyZXcgVy4gTm9zZW5rbwotCSAgdG8gZXhwb3NlIGlmIHpsaWIgc3VwcG9ydCB3YXMgY29tcGlsZWQgaW4sIGluIHRoZSBoZWFkZXIsIGluIHRoZQotCSAgZmVhdHVyZSBBUEkgYW5kIGluIHRoZSB4bWxsaW50IC0tdmVyc2lvbiBvdXRwdXQuCi0KLVRodSBKdWwgMTMgMDg6MjQ6MTQgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jOiByZWZhY3RvciB0byB1c2Ugbm9ybWFsIHdhcm5pbmdzIGZvciBlbnRpdGllcyBwcm9ibGVtCi0JICBhbmQgbm90IHN0cmFpZ2h0IFNBWCBjYWxsYmFja3MuCi0KLVdlZCBKdWwgMTIgMTc6MTM6MDMgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBidWcgIzM0NzMxNiwgcmVwb3J0ZWQgYnkgRGF2aWQgQmVsaXVzOgotCSAgVGhlIHNpbXBsZSB0eXBlLCB3aGljaCB3YXMgdGhlIGNvbnRlbnQgdHlwZSBkZWZpbml0aW9uCi0JICBvZiBhIGNvbXBsZXggdHlwZSwgd2hpY2ggaW4gdHVybiB3YXMgdGhlIGJhc2UgdHlwZSBvZiBhCi0JICBleHRlbmRpbmcgY29tcGxleCB0eXBlLCB3YXMgbWlzc2VkIHRvIGJlIHNldCBvbiB0aGlzCi0JICBleHRlbmRpbmcgY29tcGxleCB0eXBlIGluIHRoZSBkZXJpdmF0aW9uIG1hY2hpbmVyeS4KLQotTW9uIEp1bCAgMyAxMzozNjo0MyBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBDaGFuZ2VkIHhtbFhQYXRoQ29sbGVjdEFuZFRlc3QoKSB0byB1c2UKLQkgIHhtbFhQYXRoTm9kZVNldEFkZE5zKCkgd2hlbiBhZGRpbmcgYSBucy1ub2RlIGluIGNhc2Ugb2YKLQkgIE5PREVfVEVTVF9UWVBFICh0aGUgbnMtbm9kZSB3YXMgcHJldmlvdXNseSBhZGRlZCBwbGFpbmx5Ci0JICB0byB0aGUgbGlzdCkuIFNpbmNlIGZvciBOT0RFX1RFU1RfQUxMIGFuZCBOT0RFX1RFU1RfTkFNRQotCSAgdGhpcyBzcGVjaWFsaXplZCBucy1hZGRpdGlvbiBmdW5jdGlvbiB3YXMgYWxyZWFkeSB1c2VkLAotCSAgSSBhc3N1bWUgaXQgd2FzIG1pc3NlZCB0byBiZSB1c2VkIHdpdGggTk9ERV9URVNUX1RZUEUuCi0KLU1vbiBKdWwgIDMgMTA6NTc6MzMgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIGNvbnN0J2lmaWNhdGlvbiBvZiBzdHJpbmdzIHBhdGNoIGZyb20KLQkgIE1hdHRoaWFzIENsYXNlbgotCi1UaHUgSnVuIDI5IDEzOjUxOjEyIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYzogcGF0Y2ggZnJvbSBBbmRyZXcgVy4gTm9zZW5rbywgeG1sRnJlZVJNdXRleCBmb3Jnb3QgdG8KLQkgIGRlc3Ryb3kgdGhlIGNvbmRpdGlvbiBhc3NvY2lhdGVkIHRvIHRoZSBtdXRleC4KLQotVGh1IEp1biAyOSAxMjo0ODowMCBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBGaXhlZCBhIGRvdWJsZS1mcmVlIGluIHhtbFhQYXRoQ29tcE9wRXZhbFRvQm9vbGVhbigpLAotCSAgcmV2ZWFsZWQgYnkgYSBMaWJ4c2x0IHJlZ3Jlc3Npb24gdGVzdC4KLQotVGh1IEp1biAyOSAxMjoyODowNyBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBFbmhhbmNlZCB4bWxYUGF0aENvbXBPcEV2YWxUb0Jvb2xlYW4oKSB0byBiZSBhbHNvCi0JICB1c2FibGUgb3V0c2lkZSBwcmVkaWNhdGUgZXZhbHVhdGlvbjsgdGhlIGludGVudGlvbiBpcyB0bwotCSAgdXNlIGl0IHZpYSB4bWxYUGF0aENvbXBpbGVkRXZhbFRvQm9vbGVhbigpIGZvciBYU0xUIHRlc3RzLAotCSAgbGlrZSBpbiA8eHNsOmlmIHRlc3Q9Ii9mb28iPi4KLQkgIAotV2VkIEp1biAyOCAxOToxMToxNiBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBGaXggYSBtZW1vcnkgbGVhayB3aGljaCBvY2N1cnJlZCB3aGVuIHVzaW5nCi0JICB4bWxYUGF0aENvbXBpbGVkRXZhbFRvQm9vbGVhbigpLgotCi1Nb24gSnVuIDI2IDE3OjI0OjI4IFVUQyAyMDA2IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBweXRob24vbGlieG1sLmMsIHB5dGhvbi9saWJ4bWwucHksIHB5dGhvbi90ZXN0cy9jb21wYXJlTm9kZXMucHksCi0JICBweXRob24vdGVzdHMvTWFrZWZpbGUuYW06Ci0JICBBZGRlZCBjb2RlIHN1Ym1pdHRlZCBieSBBbmRyZWFzIFBha3VsYXQgdG8gcHJvdmlkZSBub2RlCi0JICBlcXVhbGl0eSwgaW5lcXVhbGl0eSBhbmQgaGFzaCBmdW5jdGlvbnMsIHBsdXMgYSBzaW5nbGUKLQkgIHRlc3QgcHJvZ3JhbSB0byBjaGVjayB0aGUgZnVuY3Rpb25zIChidWdzIDM0NTc3OSArIDM0NTk2MSkuCi0KLU1vbiBKdW4gMjYgMTg6Mzg6NTEgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYzogQWRkZWQgeG1sWFBhdGhDb21waWxlZEV2YWxUb0Jvb2xlYW4oKSB0byB0aGUgQVBJIGFuZAotCSAgYWRqdXN0ZWQvYWRkZWQgeG1sWFBhdGhSdW5FdmFsKCksIHhtbFhQYXRoUnVuU3RyZWFtRXZhbCgpLAotCSAgeG1sWFBhdGhDb21wT3BFdmFsVG9Cb29sZWFuKCksIHhtbFhQYXRoTm9kZUNvbGxlY3RBbmRUZXN0KCkKLQkgIHRvIGJlIGF3YXJlIG9mIGEgYm9vbGVhbiByZXN1bHQgcmVxdWVzdC4gVGhlIG5ldyBmdW5jdGlvbgotCSAgaXMgbm93IHVzZWQgdG8gZXZhbHVhdGUgcHJlZGljYXRlcy4KLQotTW9uIEp1biAyNiAxNjoyMjo1MCBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBGaXhlZCBhbiBidWcgaW4geG1sWFBhdGhDb21wRXhwckFkZCgpOiB0aGUgbmV3bHkKLQkgIGludHJvZHVjZWQgZmllbGQgQHJld3JpdGVUeXBlIG9uIHhtbFhQYXRoU3RlcE9wIHdhcyBub3QKLQkgIGluaXRpYWxpemVkIHRvIHplcm8gaGVyZTsgdGhpcyBjb3VsZCBsZWFkIHRvIHRoZSBhY3RpdmF0aW9uCi0JICBvZiB0aGUgYXhpcyByZXdyaXRlIGNvZGUgaW4geG1sWFBhdGhOb2RlQ29sbGVjdEFuZFRlc3QoKSB3aGVuCi0JICBAcmV3cml0ZVR5cGUgaXMgcmFuZG9tbHkgc2V0IHRvIHRoZSB2YWx1ZSAxLiBBIHRlc3QKLQkgIChoYXJkY29kaW5nIHRoZSBpbnRpYWwgdmFsdWUgdG8gMSkgcmV2ZWFsZWQgdGhhdCB0aGUKLQkgIHJlc3VsdGluZyBpbmNvcnJlY3QgYmVoYXZpb3VyIGlzIHNpbWlsYXIgdG8gdGhlIGJlaGF2aW91cgotCSAgYXMgZGVzY3JpYmVkIGJ5IEFybm9sZCBIZW5kcmlrcyBvbiB0aGUgbWFpbGluZyBsaXN0OyBzbyBJCi0JICBob3BlIHRoYXQgd2lsbCBmaXggdGhlIGlzc3VlLgkgIAotCi1GcmkgSnVuIDIzIDE4OjI2OjA4IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IEZpeGVkIGFuIGVycm9yIGluIHhtbFhQYXRoRXZhbEV4cHIoKSwgd2hpY2gKLQkgIHdhcyBpbnRyb2R1Y2VkIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBkLW8tcyByZXdyaXRlCi0JICBhbmQgbWFkZSB4cGF0aC5jIHVuYWJsZSB0byBjb21waWxlIGlmIFhQQVRIX1NUUkVBTUlORwotCSAgd2FzIG5vdCBkZWZpbmVkIChyZXBvcnRlZCBieSBLdXByaXlhbm92IEFuYXRvbGlqIC0KLQkgICMzNDU3NTIpLiBGaXhlZCB0aGUgY2hlY2sgZm9yIGQtby1zIHJld3JpdGUKLQkgIHRvIHdvcmsgb24gdGhlIGNvcnJlY3QgWFBhdGggc3RyaW5nLCB3aGljaCBpcyBjdHh0LT5iYXNlCi0JICBhbmQgbm90IGNvbXAtPmV4cHIgaW4gdGhpcyBjYXNlLgotCi1Nb24gSnVuIDE5IDEyOjIzOjQxIENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IEFkZGVkIG9wdGltaXphdGlvbiBmb3IgcG9zaXRpb25hbCBwcmVkaWNhdGVzCi0JICAob25seSBzaG9ydC1oYW5kIGZvcm0gIltuXSIpLCB3aGljaCBoYXZlIGEgcHJlY2VkaW5nCi0JICBwcmVkaWNhdGU6ICIvZm9vW2Rlc2NlbmRhbnQ6OmJhcl1bM10iLgotCi1TdW4gSnVuIDE4IDIwOjU5OjAyIEVEVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHRyeSB0byBmaXggdGhlIGNyYXNoIHJhaXNlZCBieSB0aGUgcGFyc2VyIGluCi0JICByZWNvdmVyIG1vZGUgYXMgcG9pbnRlZCBieSBSeWFuIFBoaWxsaXBzCi0KLVN1biBKdW4gMTggMTg6NDQ6NTYgRURUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vdHlwZXMuYzogcGF0Y2ggZnJvbSBOaWMgRmVycmllciB0byBwcm92aWRlIGEgYmV0dGVyIHR5cGUKLQkgIG1hcHBpbmcgZnJvbSBYUGF0aCB0byBweXRob24KLQotU3VuIEp1biAxOCAxODozNTo1MCBFRFQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogYXBwbGllZCBwYXRjaCBmcm9tIEJveiBmb3IgVk1TIGFuZCByZXBvcnRpbmcKLQkgIFNjaGVtYXMgZXJyb3JzLgotCi1TdW4gSnVuIDE4IDE4OjIyOjI1IEVEVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdGFwaS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gRmVsaXBlIENvbnRyZXJhcyB3aGVuIGNvbXBpbGluZwotCSAgd2l0aCAtLXdpdGgtbWluaW11bQotCi1GcmkgSnVuIDE2IDIxOjM3OjQ0IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IEZpeGVkIGEgYnVnIGluCi0JICB4bWxET01XcmFwQWRvcHROb2RlKCk7IHRoZSB0cmVlIHRyYXZlcnNhbCBzdG9wcGVkIGlmIHRoZQotCSAgdmVyeSBmaXJzdCBnaXZlbiBub2RlIGhhZCBhbiBhdHRyaWJ1dGUgbm9kZSA6LSggVGhpcyB3YXMgZHVlCi0JICB0byBhIG1pc3NlZCBjaGVjayBpbiB0aGUgdHJhdmVyc2FsIG1lY2hhbmlzbS4KLQkgIEV4cGFuZGVkIHRoZSB4bWxET01XcmFwQ3R4dDogaXQgbm93IGhvbGRzIHRoZSBuYW1lc3BhY2UgbWFwCi0JICB1c2VkIGluIHhtbERPTVdyYXBBZG9wdE5vZGUoKSBhbmQgeG1sRE9NV3JhcENsb25lTm9kZSgpIGZvcgotCSAgcmV1c2FsOyBzbyB0aGUgbWFwLWl0ZW1zIGRvbid0IG5lZWQgdG8gYmUgY3JlYXRlZCBmb3IgZXZlcnkKLQkgIGNsb25pbmcvYWRvcHRpb24uIEFkZGVkIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gaXQgZm9yCi0JICByZXRyaWV2YWwgb2YgeG1sTnNQdHIgdG8gYmUgc2V0IG9uIG5vZGUtPm5zOyB0aGlzIGlzIG5lZWRlZAotCSAgZm9yIG15IGN1c3RvbSBoYW5kbGluZyBvZiBucy1yZWZlcmVuY2VzIGluIG15IERPTSB3cmFwcGVyLgotCSAgU3Vic3RpdHV0ZWQgY29kZSB3aGljaCBjcmVhdGVkIHRoZSBYTUwgbmFtZXNwYWNlIGRlY2wgb24KLQkgIHRoZSBkb2MgZm9yIGEgY2FsbCB0byB4bWxUcmVlRW5zdXJlWE1MRGVjbCgpLiBSZW1vdmVkCi0JICB0aG9zZSBuYXN0bHkgIndhcm5pZ25zIiBmcm9tIHRoZSBkb2NzIG9mIHRoZSBjbG9uZS9hZG9wdAotCSAgZnVuY3Rpb25zOyB0aGV5IHdvcmsgZmluZSBvbiBteSBzaWRlLgotCSAgCi1Nb24gSnVuIDEyIDEzOjIzOjExIENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHJlc3VsdC9wYXR0ZXJuL25hbWVzcGFjZXM6IEFkanVzdGVkIHRoZSByZXN1bHQgb2YgYQotCSAgcmVncmVzc2lvbiB0ZXN0LCBzaW5jZSB0aGUgZml4IG9mIHhtbEdldE5vZGVQYXRoKCkgcmV2ZWFsZWQgYQotCSAgYnVnIGluIHRoaXMgdGVzdCByZXN1bHQuCi0KLU1vbiBKdW4gMTIgMTM6MDY6MDMgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdHJlZS5jOiBHb3QgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZyBpbiB4bWxHZXROb2RlUGF0aCgpLgotCi1Nb24gSnVuIDEyIDEyOjU0OjI1IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRyZWUuYzogRml4ZWQgeG1sR2V0Tm9kZVBhdGgoKSB0byBnZW5lcmF0ZSB0aGUgbm9kZSB0ZXN0ICIqIgotCSAgZm9yIGVsZW1lbnRzIGluIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSwgcmF0aGVyIHRoYW4gZ2VuZXJhdGluZwotCSAgYW4gdW5wcmVmaXhlZCBuYW1lZCBub2RlIHRlc3QgYW5kIGxvb3NpbmcgdGhlIG5hbWVzcGFjZQotCSAgaW5mb3JtYXRpb24uCi0KLUZyaSBKdW4gIDkgMjE6NDU6MDIgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IENsYXJpZmllZCBpbiB0aGUgZG9jcyB0aGF0IHRoZSB0cmVlCi0JICBtdXN0IG5vdCAgYmUgdHJpZWQgdG8gYmUgbW9kaWZpZWQgaWYgdXNpbmcgdGhlIHBhcnNlciBmbGFnCi0JICBYTUxfUEFSU0VfQ09NUEFDVCBhcyBzdWdnZXN0ZWQgYnkgU3RlZmFuIEJlaG5lbAotCSAgKCMzNDQzOTApLgotCi1UdWUgSnVuICA2IDE3OjUwOjQzIENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbmkgTkVXUyBkb2MvLyogbGlieG1sLnNwZWMuaW4gOiBwcmVwYXJpbmcgcmVsZWFzZSBvZiAyLjYuMjYKLQotVHVlIEp1biAgNiAxNzoyNToyMyBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBGaXhlZCBzZWxmLWludmVudGVkIGEgc2VnZmF1bHQgaW4geG1sWFBhdGhDdHh0Q29tcGlsZSgpLAotCSAgd2hlbiB0aGUgZXhwcmVzc2lvbiB3YXMgbm90IHZhbGlkIGFuZCBAY29tcCB3YXMgTlVMTCBhbmQgSQotCSAgdHJpZWQgdG8gZG8gdGhlIGQtby1zIHJld3JpdGUuCi0KLVR1ZSBKdW4gIDYgMTU6MTk6NTcgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluaSBORVdTIGRvYy8vKiBsaWJ4bWwuc3BlYy5pbiA6IHByZXBhcmluZyByZWxlYXNlIG9mIDIuNi4yNQotCi1UdWUgSnVuICA2IDExOjI4OjE1IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IEVuYWJsZWQgdGhlIGNvbXBvdW5kIHRyYXZlcnNhbCBhZ2FpbjsgSSBhZGRlZCBhCi0JICBjaGVjayB0byB1c2UgdGhpcyBvbmx5IGlmIHRoZSBoYXZlIGFuIGV4cHJlc3Npb24gc3RhcnRpbmcKLQkgIHdpdGggdGhlIGRvY3VtZW50IG5vZGU7IHNvIGluIHRoZSBjYXNlIG9mICIvL2ZvbyIsIHdlCi0JICBhbHJlYWR5IGtub3cgYXQgY29tcGlsYXRpb24tdGltZSwgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkKLQkgIDEgaW5pdGlhbCBjb250ZXh0IG5vZGUuIEFkZGVkIHRoZSByZXdyaXRlIGFsc28gdG8KLQkgIHhtbFhQYXRoRXZhbEV4cHIoKS4KLQotVHVlIEp1biAgNiAxMDoyMzoxMCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBmaXggYnVnICMzNDM5NjgsIGluY2x1ZGU9J3RleHQnIGNhbid0IGxlYWQgdG8gYSAKLQkgIHJlY3Vyc2lvbi4KLQotRnJpIEp1biAgMiAyMjo0NzowOCBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBEaXNhYmxlZCB0aGUgY29tcG91bmQgdHJhdmVyc2FsIGZvciB0aGUgcmVsZWFzZTsKLQkgIEkgbmVlZCBmaXJzdCB0byBhc3N1cmUgdGhhdCB0aGlzIGlzIGRvbmUgb25seSBpZiB3ZSBoYXZlCi0JICAxIGluaXRpYWwgbm9kZS4KLQotV2VkIE1heSAzMSAxMzo1Mzo0MSBQU1QgMjAwNiBBbGVrc2V5IFNhbmluIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotICAgICAgCi0JKiB4cGF0aC5jOiBmaXhlZCBtZW1vcnkgbGVhayBpbiB4cGF0aCBlcnJvciByZXBvcnRpbmcKLQotV2VkIE1heSAzMSAxNTozMDoxNiBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuaCB0cmlvZGVmLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbSBPbGxpIFNhdmlhIGZvciBMeW54T1MKLQotV2VkIE1heSAzMSAxNDozMzowMCBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmggcnVuc3VpdGUuYzoKLQkgIENoYW5nZWQgdGhlIG5hbWUgb2YgdGhlIHJlY2VudGx5IGFkZGVkIHB1YmxpYyBmdW5jdGlvbgotCSAgeG1sWFBhdGhDb250ZXh0U2V0T2JqZWN0Q2FjaGUoKSB0bwotCSAgeG1sWFBhdGhDb250ZXh0U2V0Q2FjaGUoKTsgc28gYSBtb3JlIGdlbmVyaWMgb25lLCBpbgotCSAgY2FzZSB3ZSBkZWNpZGUgdG8gY2FjaGUgbW9yZSB0aGluZ3MgdGhhbiBvbmx5IFhQYXRoCi0JICBvYmplY3RzLgotCi1UdWUgTWF5IDMwIDIxOjM2OjE2IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IE9wdGltaXplZCB4bWxYUGF0aE5vZGVDb2xsZWN0QW5kVGVzdCgpIGFuZAotCSAgeG1sWFBhdGhOb2RlQ29sbGVjdEFuZFRlc3ROdGgoKSB0byBldmFsdWF0ZSBhIGNvbXBvdW5kCi0JICB0cmF2ZXJzYWwgb2YgMiBheGVzIHdoZW4gd2UgaGF2ZSBhICIvL2ZvbyIgZXhwcmVzc2lvbi4KLQkgIFRoaXMgaXMgZG9uZSB3aXRoIGEgcmV3cml0ZSBvZiB0aGUgWFBhdGggQVNUIGluCi0JICB4bWxYUGF0aFJld3JpdGVET1NFeHByZXNzaW9uKCk7IEkgYWRkZWQgYW4gYWRkaXRpb25hbCBmaWVsZAotCSAgdG8geG1sWFBhdGhTdGVwT3AgZm9yIHRoaXMgKGJ1dCB0aGUgZmllbGQncyBuYW1lIHNob3VsZCBiZQotCSAgY2hhbmdlZCkuIFRoZSBtZWNoYW5pc206IHRoZSBlbWJyYWNpbmcgZGVzY2VuZGFudC1vci1zZWxmCi0JICBheGlzIHRyYXZlcnNhbCAoYWxzbyBvcHRpbWl6ZWQgdG8gcmV0dXJuIG9ubHkgbm9kZXMgd2hpY2gKLQkgIGNhbiBob2xkIGVsZW1lbnRzKSwgd2lsbCBwcm9kdWNlIGNvbnRleHQgbm9kZXMgZm9yIHRoZQotCSAgaW5uZXIgdHJhdmVyc2FsIG9mIHRoZSBjaGlsZCBheGlzLiBUaGlzIHdheSB3ZSBhdm9pZCBhIGZ1bGwKLQkgIG5vZGUtY29sbGVjdGluZyB0cmF2ZXJzYWwgb2YgdGhlIGRlc2NlbmRhbnQtb3Itc2VsZiBheGlzLgotCSAgU29tZSB0ZXN0cyBpbmRpY2F0ZSB0aGF0IHRoaXMgY2FuIHJlZHVjZSBleGVjdXRpb24gdGltZSBvZgotCSAgIi8vZm9vIiB0byA1MCUuIFRvZ2V0aGVyIHdpdGggdGhlIFhQYXRoIG9iamVjdCBjYWNoZSB0aGlzCi0JICBhbGwgc2lnbmlmaWNhbnRseSBzcGVlZHMgdXAgbGlieHNsdC4KLQotVHVlIE1heSAzMCAxMTozODo0NyBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEEgd2FybmluZyB3aWxsIG5vdyBiZSByZXBvcnRlZCBpbiB0aGUgdmFsdWUgb2YKLQkgIHRoZSBYU0QgYXR0cmlidXRlICdzY2hlbWFMb2NhdGlvbicgZG9lcyBub3QgY29uc2lzdCBvZiB0dXBsZXMKLQkgIChuYW1lc3BhY2UtbmFtZSwgZG9jdW1lbnQtVVJJKS4gQSB3YXJuaW5nIHdpbGwgYmUgcmVwb3J0ZWQKLQkgIGlmIGEgc2NoZW1hIGRvY3VtZW50IGNvdWxkIG5vdCBiZSBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkCi0JICBsb2NhdGlvbiAodmlhICdzY2hlbWFMb2NhdGlvbicgb3IKLQkgICdub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uJykuCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBBZGRlZCBYTUxfU0NIRU1BVl9NSVNDIHRvCi0JICB4bWxQYXJzZXJFcnJvcnMuCi0KLVR1ZSBNYXkgMzAgMTE6MjE6MzQgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYzogRW5oYW5jZWQgeG1sWFBhdGhOb2RlQ29sbGVjdEFuZFRlc3QoKSB0byBhdm9pZAotCSAgcmVjcmVhdGlvbiAoaWYgcG9zc2libGUpIG9mIHRoZSBub2RlLXNldCB3aGljaCBpcyB1c2VkIHRvCi0JICBjb2xsZWN0IHRoZSBub2RlcyBpbiB0aGUgY3VycmVudCBheGlzIGZvciB0aGUgY3VycmVjdCBjb250ZXh0Ci0JICBub2RlLiBFc3BlY2lhbGx5IGZvciAiLy9mb28iIHRoaXMgd2lsbCBkZWNyZWFzZSBkcmFtYXRpY2FsbHkKLQkgIHRoZSBudW1iZXIgb2YgY3JlYXRlZCBub2RlLXNldHMsIHNpbmNlIGZvciBlYWNoIG5vZGUgaW4gdGhlCi0JICByZXN1bHQgbm9kZS1zZXQgb2YgdGhlIGV2YWx1YXRpb24gb2YgZGVzY2VuZGFudC1vci1zZWxmOjpub2RlKCkKLQkgIGEgbmV3IHRlbXBvcmFyeSBub2RlLXNldCB3YXMgY3JlYXRlZC4gQWRkZWQgbm9kZSBpdGVyYXRvcgotCSAgeG1sWFBhdGhOZXh0Q2hpbGRFbGVtZW50KCkgYXMgYSB0aW55IG9wdGltaXphdGlvbiBmb3IKLQkgIGNoaWxkOjpmb28uCi0KLU1vbiBNYXkgMjkgMTg6MDY6MTcgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYyBpbmNsdWRlL2xpYnhtbC94cGF0aC5oOiBBZGRlZCBhbiBYUGF0aCBvYmplY3QgY2FjaGUuCi0JICBJdCBzaXRzIG9uIGFuIHhtbFhQYXRoQ29udGV4dCBhbmQgbmVlZCB0byBiZSBleHBsaWNpdGVseQotCSAgYWN0aXZhdGVkIChvciBkZWFjdGl2YXRlZCBhZ2Fpbikgd2l0aAotCSAgeG1sWFBhdGhDb250ZXh0U2V0T2JqZWN0Q2FjaGUoKS4gVGhlIGNhY2hlIGNvbnNpc3RzIG9mIDUKLQkgIGxpc3RzIGZvciBub2RlLXNldCwgc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIG1pc2MgWFBhdGgKLQkgIG9iamVjdHMuIEludGVybmFsbHkgdGhlIHhwYXRoLmMgbW9kdWxlIHdpbGwgdXNlIG9iamVjdC0KLQkgIGRlcG9zaXRpb24gYW5kIC1hY3F1aXNpdGlvbiBmdW5jdGlvbnMgd2hpY2ggd2lsbCB0cnkgdG8gcmV1c2UKLQkgIGFzIG1hbnkgWFBhdGggb2JqZWN0cyBhcyBwb3NzaWJsZSwgYW5kIGZhbGxiYWNrIHRvIG5vcm1hbAotCSAgZnJlZS9jcmVhdGUgYmVoYXZpb3VyIGlmIG5vIGNhY2hlIGlzIGF2YWlsYWJsZSBvciBpZiB0aGUgY2FjaGUKLQkgIGlzIGZ1bGwuCi0JKiBydW5zdWl0ZS5jOiBBZGp1c3RlZCB0byBkZWFjdGl2YXRlIHRoZSBjYWNoZSBmb3IgWE1MIFNjaGVtYQotCSAgdGVzdHMgaWYgYSBjYWNoZS1jcmVhdGlvbiBpcyB0dXJuZWQgb24gYnkgZGVmYXVsdCBmb3IgdGhlIHdob2xlCi0JICBsaWJyYXJ5LCBlLmcuIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9mIHRoZSBjYWNoZS4gSXQgaXMKLQkgIGRlYWN0aXZhdGVkIGhlcmUgaW4gb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uIG9mIHRoZSBtZW1vcnkgbGVhawotCSAgZGV0ZWN0aW9uIGluIHJ1bnN1aXRlLmMuCi0KLVdlZCBNYXkgMjQgMTA6NTQ6MjUgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYzogUmVtb3ZlZCBhIG1lbWNweSBpZiB4bWxYUGF0aE5vZGVTZXRNZXJnZSgpOyBpdAotCSAgc2VlbXMgd2UgcmVhbGx5IG5lZWQgdG8gd2FsayB0aGUgd2hvbGUgbGlzdCwgc2luY2UgdGhvc2UKLQkgIG5hc3RseSBuYW1lc3BhY2Ugbm9kZXMgbmVlZCB0byBiZSBhZGRlZCB3aXRoCi0JICB4bWxYUGF0aE5vZGVTZXREdXBOcygpOyB0aHVzIGEgcHVyZSBtZW1jcHkgaXMgbm90IHBvc3NpYmxlLgotCSAgQSBmbGFnIG9uIHRoZSBub2RlLXNldCBpbmRpY2F0aW5nIGlmIG5hbWVzcGFjZSBub2RlcyBhcmUgaW4KLQkgIHRoZSBzZXQgd291bGQgaGVscCBoZXJlOyB0aGlzIGlzIHRoZSAzcmQgZmxhZyB3aGljaCB3b3VsZAotCSAgYmUgdXNlZnVsbCB3aXRoIG5vZGUtc2V0cy4gVGhlIGN1cnJlbnQgZmxhZ3MgSSBoYXZlIGluIG1pbmQ6Ci0JICAxKSBJcyBhIG5vZGUtc2V0IGFscmVhZHkgc29ydGVkPwotCSAgICAgVGhpcyB3b3VsZCBhbGxvdyBmb3IgcmVidXN0IGFuZCBvcHRpbWl6YWJsZSBzb3J0aW5nCi0JICAgICBiZWhhdmlvdXIuCi0JICAyKSBPZiB3aGF0IHR5cGUgYXJlIHRoZSBub2RlcyBpbiB0aGUgc2V0IChvciBvZiBtaXhlZCB0eXBlKT8KLQkgICAgIFRoaXMgd291bGQgYWxsb3cgZm9yIGZhc3RlciBtZXJnaW5nIG9mIG5vZGUtc2V0cy4KLQkgIDMpIEFyZSBuYW1lc3BhY2Ugbm9kZXMgaW4gdGhlIHNldD8KLQkgICAgIFRoaXMgd291bGQgYWxsb3cgdG8gc2tpcHAgYWxsIHRoZSBuYW1lc3BhY2Ugbm9kZSBzcGVjaWZpYwotCSAgICAgc3BlY2lhbCBoYW5kbGluZy4gRmFzdGVyIG5vZGUtc2V0IG1lcmdpbmcgaWYgdGhlIGZpcnN0Ci0JICAgICBzZXQgaXMgZW1wdHk7IGp1c3QgbWVtY3B5IHRoZSBzZXQuCi0KLU1vbiBNYXkgMjIgMTc6MTQ6MDAgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHBhdGguYzogT3B0aW1pemF0aW9uIG9mIGNvdW50KCk6IGVsaW1pbmF0ZWQgc29ydGluZwotCSAgKHNlZSBidWcgIzE2NTU0NykuIE9wdGltaXphdGlvbiBvZiBYUEFUSF9PUF9GSUxURVIgaWYgdGhlCi0JICBwcmVkaWNhdGUgaXMgYSBbMV0gKGRpc2FibGUgd2l0aCBYUF9PUFRJTUlaRURfRklMVEVSX0ZJUlNUIGlmCi0JICBpdCBwcm9kdWNlcyB0cm91YmxlKS4gVGlueSBvcHQgaW4geG1sWFBhdGhOb2RlU2V0TWVyZ2UoKS4KLQkgIAotTW9uIE1heSAyMiAxMzozMzoxMiBDRVNUIDIwMDYgUm9iIFJpY2hhcmRzIDxycmljaGFyZHNAY3RpbmR1c3RyaWVzLm5ldD4KLQotCSogdHJlZS5jOiBSZXZlcnQgYmVoYXZpb3IgY2hhbmdlIGluIHhtbFNldFByb3AgdG8gaGFuZGxlIGF0dHJpYnV0ZXMKLQkgIHdpdGggY29sb25zIGluIG5hbWUgYW5kIG5vIG5hbWVzcGFjZS4KLQotRnJpIE1heSAxOSAyMTo1Njo0MyBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4cGF0aC5jOiBTdWJzdGl0dXRlZCBhbGwgcmVtYWluaW5nIGNhbGxzIHRvIHhtbFhQYXRoQ21wTm9kZXMoKQotCSAgZm9yIHhtbFhQYXRoQ21wTm9kZXNFeHQoKS4gVGlueSBmdXJ0aGVyIGVuaGFuY2VtZW50IG9mCi0JICB4bWxYUGF0aENtcE5vZGVzRXh0KCkuIEFkZGVkIGFkZGl0aW9uYWwgY2hlY2tzIGluIHZhcmlvdXMgY29kZQotCSAgcGFydHMgdG8gYXZvaWQgY2FsbGluZyBzb3J0aW5nIG9yIG1lcmdpbmcgZnVuY3Rpb25zIGlmIHRoZQotCSAgbm9kZS1zZXQocykgZG9uJ3QgbmVlZCB0aGVtOyBpLmUuLCBpZiB0aGV5IGFyZSBlbXB0eSBvciBjb250YWluCi0JICBqdXN0IG9uZSBub2RlLgotCi1GcmkgTWF5IDE5IDEzOjE2OjU4IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IE9wdGltaXplZCB0aGUgY29tcGFyaXNvbiBmb3Igbm9uLWVsZW1lbnQgbm9kZXMKLQkgIGluIHhtbFhQYXRoQ21wTm9kZXNFeHQoKTsgdGhlIGNvbXBhcmlzb24gaXMgdXNlZCBmb3Igc29ydGluZwotCSAgb2Ygbm9kZS1zZXRzLiBUaGlzIGVuaGFuY2VtZW50IGlzIHJlbGF0ZWQgdG8gYnVnICMxNjU1NDcuCi0JICBUaGVyZSBhcmUgb3RoZXIgcGxhY2VzIHdoZXJlIHRoZSBvbGQgY29tcGFyaXNvbiBmdW5jdGlvbgotCSAgeG1sWFBhdGhDbXBOb2RlcygpIGlzIHN0aWxsIGNhbGxlZCwgYnV0IEkgY3VycmVudGx5IGRvbid0Ci0JICBrbm93IGV4YWN0bHkgd2hhdCB0aG9zZSBjYWxscyBhcmUgZm9yOyB0aHVzIGlmIHRoZXkgY2FuIGJlCi0JICBzdWJzdGl0dXRlZCAoaWYgaXQgbWFrZXMgc2Vuc2UpIGZvciB0aGUgbmV3IGZ1bmN0aW9uLgotCi1UdWUgTWF5IDE2IDE2OjU1OjEzIENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhwYXRoLmM6IEFwcGxpZWQgcGF0Y2ggZnJvbSBSb2IgUmljaGFyZHMsIGZpeGluZyBhIHBvdGVudGlhbAotCSAgbWVtb3J5IGxlYWsgaW4geG1sWFBhdGhUcnlTdHJlYW1Db21waWxlKCksIHdoZW4gYSBsaXN0IG9mCi0JICBuYW1lc3BhY2VzIHdhcyBhc3NpZ25lZCB0byB0aGUgWFBhdGggY29tcGlsYXRpb24gY29udGV4dDsKLQkgIGhlcmUgYSBuZXcgbmFtZXNwYWNlIGxpc3Qgd2FzIGNyZWF0ZWQgYW5kIHBhc3NlZCB0bwotCSAgeG1sUGF0dGVybmNvbXBpbGUoKTsgYnV0IHRoaXMgbGlzdCB3YXMgbm90IGZyZWVkIGFmdGVyd2FyZHMuCi0JICBBZGRpdGlvbmFsbHkgd2UgYXZvaWQgbm93IGluIHhtbFhQYXRoVHJ5U3RyZWFtQ29tcGlsZSgpIHRvCi0JICBjb21waWxlIHRoZSBleHByZXNzaW9uLCBpZiBpdCBoYXMgYSBjb2xvbiAtIGluZGljYXRpbmcKLQkgIHByZWZpeGVkIG5hbWUgdGVzdHMgLSBhbmQgbm8gbmFtZXNwYWNlIGxpc3Qgd2FzIGdpdmVuLiBUaGUKLQkgIHN0cmVhbWluZyBYUGF0aCBtZWNoYW5pc20gbmVlZHMgYSBuYW1lc3BhY2UgbGlzdCBhdAotCSAgY29tcGlsYXRpb24gdGltZSAodW5saWtlIG5vcm1hbCBYUGF0aCwgd2hlcmUgd2UgY2FuIGJpbmQKLQkgIG5hbWVzcGFjZSBuYW1lcyB0byBwcmVmaXhlcyBhdCBleGVjdXRpb24gdGltZSkuCi0JKiBwYXR0ZXJuLmM6IEVuaGFuY2VkIHRvIHVzZSBhIHN0cmluZyBkaWN0IGZvciBsb2NhbC1uYW1lcywKLQkgIG5zLXByZWZpeGVzIGFuZCBhbmQgbmFtZXNwYWNlLW5hbWVzLgotCSAgRml4ZWQgeG1sU3RyZWFtUHVzaEludGVybmFsKCkgbm90IHRvIHVzZSBzdHJpbmctcG9pbnRlcgotCSAgY29tcGFyaXNvbiBpZiBhIGRpY3QgaXMgYXZhaWxhYmxlOyB0aGlzIHdvbid0IHdvcmssIHNpbmNlCi0JICBvbmUgZG9lcyBub3Qga25vdyBpdCB0aGUgZ2l2ZW4gc3RyaW5ncyBvcmlnaW5hdGUgZnJvbSB0aGUKLQkgIHNhbWUgZGljdCAtIGFuZCB0aGV5IG5vcm1hbGx5IGRvbid0IGRvLCBzaW5jZSBlLmcuCi0JICBuYW1lc3BhY2VzIGFyZSBob2xkIG9uIHhtbE5zLT5ocmVmLiBJIHRoaW5rIHRoaXMgd291bGQgYmUKLQkgIHdvcnRoIGFuIGludmVzdGlnYXRpb246IGlmIHdlIGNhbiBhZGQgYSBAZG9jIGZpZWxkIHRvIHhtbE5zCi0JICBhbmQgcHV0IHRoZSBAaHJlZiBpbiB0byBhIGFkZGl0aW9uYW4gbmFtZXNwYWNlIGRpY3QgaG9sZAotCSAgaW4geG1sRG9jLiBEYW5pZWwgd2lsbCBzdXJlbHkgbm90IGxpa2UgdGhpcyBpZGVhIDotKSBCdXQKLQkgIGV2YWx1YXRpb24gb2YgdG9ucyBvZiBlbGVtZW50cy9hdHRyaWJ1dGVzIGluIG5hbWVzcGFjZXMKLQkgIHdpdGggeG1sU3RyRXF1YWwoKSBpc24ndCB0aGUgd2F5IHdlIHNob3VsZCBnbyBmb3JldmVyLgotCSAgCi1UaHUgTWF5IDExIDE4OjAzOjQ5IENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYnVnICMzNDEzMzcsIHJlcG9ydGVkIGJ5IERhdmlkIEdyb2htYW5uLgotCSAgVGhlIGNvZGUgZXhwZWN0ZWQgYSBub2RlICh4bWxOb2RlUHRyKSBvbiB0aGUgaW5mbyBmb3IgYQotCSAgbm9uLWV4aXN0ZW50IGRlZmF1bHQgYXR0cmlidXRlLCB3aGljaCBjbGVhcmx5IGNhbm5vdCBiZQotCSAgZXhwZWN0ZWQsIHNpbmNlIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QuIEkgY2FuIG9ubHkKLQkgIGd1ZXNzIHRoYXQgdGhpcyBzbmVha2VkIHRyeWluZyB0byBlbGltaW5hdGUgdGhlIHF1ZXJ5Ci0JICBmb3IgdGhlIG93bmVyLWVsZW1lbnQsIHdoaWNoIGlzIHVuYXZvaWRhYmxlIGFjdHVhbGx5LgotCSAgTm90ZSB0aGF0IGNyZWF0aW9uIG9mIGRlZmF1bHQgYXR0cmlidXRlcyB3b24ndCBoYXZlIGFuCi0JICBlZmZlY3QgaWYgdmFsaWRhdGluZyB2aWEgU0FYL1hNTFJlYWRlcjsgaS5lLiwgdGhlIHByb2Nlc3NvcgotCSAgd29uJ3QgZmlyZSBhZGRpdGlvbmFsIHN0YXJ0LWF0dHJpYnV0ZSBldmVudHMgKEknbSBub3QgZXZlbgotCSAgc3VyZSBpZiBMaWJ4bWwyIGhhcyBzdWNoIGEgU0FYLWV2ZW50OyBJIHRoaW5rIGl0IGhhbmRzIHRoZW0KLQkgIGFsbCBvdmVyIGluIHRoZSBzdGFydC1lbGVtZW50IGV2ZW50KS4KLQotVHVlIE1heSAgOSAyMTo0Nzo1OCBDRVNUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkIGJ1ZyAjMzQxMTUwLCByZXBvcnRlZCBieSBNaWNoYWVsIFJvbWVyLgotCSAgSW4geG1sU2NoZW1hQnVpbGRDb250ZW50TW9kZWxGb3JTdWJzdEdyb3VwKCksCi0JICB4bWxBdXRvbWF0YU5ld09uY2VUcmFuczIoKSB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mCi0JICB4bWxBdXRvbWF0YU5ld1RyYW5zaXRpb24yKCkgdG8gbWltaWMgYSB4czpjaG9pY2UgZm9yCi0JICBzdWJzdGl0dXRpb24tZ3JvdXBzLgotCSogdGVzdC9zY2hlbWFzL3N1YnN0LWdyb3VwLTFfMS54c2QKLQkgIHRlc3Qvc2NoZW1hcy9zdWJzdC1ncm91cC0xXzAueG1sCi0JICByZXN1bHQvc2NoZW1hcy9zdWJzdC1ncm91cC0xXzBfMQotCSAgcmVzdWx0L3NjaGVtYXMvc3Vic3QtZ3JvdXAtMV8wXzEuZXJyOiBBZGRlZCByZWdyZXNzaW9uIHRlc3QKLQkgIHN1cHBsaWVkIGJ5IE1pY2hhZWwgUm9tZXIgZm9yIGJ1ZyAjMzQxMTUwLgotCi1TYXQgTWF5ICA2IDExOjA1OjI0IEhLVCAyMDA2IFdpbGxpYW0gTS4gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiByZWxheG5nLmM6IEZpeGVkIGNvbXBpbGF0aW9uIGVycm9yIHdpdGggcGF0Y2ggc3VwcGxpZWQgYnkKLQkgIEdyYWhhbSBCZW5uZXR0LgotCi1UaHUgTWF5ICA0IDE5OjE0OjAzIENFU1QgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogV2UnbGwgcmFpc2UgYW4gaW50ZXJuYWwgZXJyb3IgYW5kIHN0b3AKLQkgIHZhbGlkYXRpb24gbm93IHdoZW4gYW4gZW50aXR5IGlzIGZvdW5kIGluIHRoZSBpbnN0YW5jZQotCSAgZG9jdW1lbnQsIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgYXV0b21hdGljIGVudGl0eQotCSAgc3Vic3RpdHV0aW9uIGJ5IHRoZSBzY2hlbWEgcHJvY2Vzc29yICh5ZXQ/KSAtCi0JICBzZWUgYnVnICMzNDAzMTYsIHJlcG9ydGVkIGJ5IE5pY2sgV2VsbG5ob2Zlci4KLQotV2VkIE1heSAgMyAxNToxNjowMCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IGFwcGxpZWQgYW5vdGhlciBQeXRob24gZGV0ZWN0aW9uIHBhdGNoIGZyb20gSm9zZXBoIFNhY2NvCi0JKiBsaWJ4bWwuc3BlYy5pbjogY2xlYW51cCB0aGUgY2hhbmdlbG9nIHNlY3Rpb24sIGFzY2lpZmllcyB0aGUgc3BlYyBmaWxlCi0JICB0b28KLQotVHVlIE1heSAgMiAyMjozNDo1NCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBmaXggYSBtaXggb2YgY29kZSBhbmQgZGVjbGFyYXRpb25zIHNob3dpbmcgdXAgb24gV2luZG93cwotCSAgcGF0Y2ggZnJvbSBLamFydGFuIE1hcmFhcywgZml4aW5nICMzNDA0MDQKLQotVHVlIE1heSAgMiAxNDoyNDo0MCBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBmaXhpbmcgYnVnICMzNDAzOTggeG1sQ2hhckVuY091dEZ1bmMgd3JpdGluZyB0bwotCSAgaW5wdXQgYnVmZmVyCi0KLUZyaSBBcHIgMjggMTg6Mjk6MjIgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBjb25maWd1cmUuaW4gZG9jLy8qOiBwcmVwYXJpbmcgMi42LjI0IHJlbGVhc2UsIGZpeGVkIFB5dGhvbgotCSAgcGF0aHMgYXQgdGhlIGxhc3QgbW9tZW50Ci0JKiByZWxheG5nLmMgdGVzdGFwaS5jIHRyZWUuYzogZml4IHNvbWUgY29tbWVudHMKLQotVGh1IEFwciAyNyAxMDoxNTo0NSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gUm9sYW5kIFNjaHdpbmdlbCB0byBhbGxvdyBVVEYtOAotCSAgZmlsZSBwYXRocyBvbiBXaW5kb3dzCi0KLVRodSBBcHIgMjcgMTA6MTA6NTggQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sd3JpdGVyLmM6IHBhdGNoIGZyb20gSmFzb24gVmllcnMgZm9yIGxpbmUgYnJlYWtzIGFmdGVyIEVuZFBJCi0KLVR1ZSBBcHIgMjUgMjI6MjI6NTggQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXggY29tcGlsYXRpb24gd2l0aG91dCB0cmVlCi0KLVR1ZSBBcHIgMjUgMTg6MTc6MzcgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gR2FyeSBDb2FkeSB0byByZWFsbHkgbWFrZSBzdXJlCi0JICB4bWxsaW50IC0tbm9uZXQgd291bGQgbm90IHJlYWNoIHRoZSBuZXR3b3JrLCBzaG91bGQgZml4ICMzMzc0ODMuCi0KLVR1ZSBBcHIgMjUgMTQ6NTI6MTUgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBhcHBsaWVkIHBhdGNoIGZyb20gSm9zZXBoIFNhY2NvIGNoYW5naW5nIHNsaWdodGx5Ci0JICB0aGUgcHl0aG9uIGRldGVjdGlvbiBzY2hlbWUgc2hvdWxkIGZpeCBidWcgIzMzODUyNgotCi1Nb24gQXByIDI0IDEwOjUwOjE5IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXggdGhlIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgY29kZSBwb2ludCBpbiBjb250ZW50Ci0JICBjLmYuIGJ1ZyAjMzM5MzExCi0KLVdlZCBBcHIgMTkgMTM6MTY6MjMgQ0VTVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jIHRlc3Qvc2NoZW1hcy9yZXN0cmljdGlvbi1lbnVtLTEqCi0JICByZXN1bHQvc2NoZW1hcy9yZXN0cmljdGlvbi1lbnVtLTEqOiBGaXhlZCBpbmNvcnJlY3QKLQkgIHZhbGlkYXRpb24gb2YgcmVzdHJpY3RlZCBlbnVtZXJhdGlvbnMuIEFkZGVkIHJlbGF0ZWQKLQkgIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLVRodSBBcHIgMTMgMDk6NDc6MjUgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBmaXhpbmcgYSBkZWFsbG9jYXRpb24gcHJvYmxlbSBpbiB4bWxTY2hlbWFBZGRTY2hlbWFEb2MoKQotCSAgaW4gY2FzZSBvZiBlcnJvcnMsIHNob3VsZCBmaXggYnVnICMzMzgzMDMKLQotVGh1IEFwciAxMyAwOTozMTo0NSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGZpeGluZyBhIGRlYWxsb2NhdGlvbiBwcm9ibGVtIGluIHhtbFJlbGF4TkdQYXJzZSgpIAotCSAgaW4gY2FzZSBvZiBlcnJvcnMsIHNob3VsZCBmaXggYnVnICMzMzgzMDYKLQotVGh1IEFwciAgNiAxMDoyMjoxNyBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sY2F0YWxvZy4xIGRvYy94bWxjYXRhbG9nX21hbi54bWwgZG9jL3htbGxpbnQuMSBkb2MveG1sbGludC54bWw6Ci0JICBhcHBsaWVkIG1hbiBwYWdlIGltcHJvdmVtZW50cyBmcm9tIERhbmllbCBMZWlkZXJ0Ci0KLU1vbiBNYXIgMjcgMTE6NDQ6MDcgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiByZW1vdmVkIHVudXNlZCBjb2RlIG9yIHZhcmlhYmxlcywgZnJvbSBTdGVmYW4gS29zdAotCSAgZml4aW5nICMzMzYxNjMgYW5kICMzMzYxNjQKLQotTW9uIE1hciAyNyAxMTozODoyMSBDRVNUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBTdGVmYW4gS29zdCBmaXhpbmcgIzMzNjE2MAotCi1Nb24gTWFyIDI3IDExOjIzOjM5IENFU1QgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNodmFsaWQuYyBnZW5DaFJhbmdlcy5weSBnZW5Vbmljb2RlLnB5IHhtbHVuaWNvZGUuYwotCSAgaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oIGluY2x1ZGUvbGlieG1sL3htbHVuaWNvZGUuaDogYXBwbGllZAotCSAgcGF0Y2hlcyBmcm9tIEFpdmFycyBLYWx2YW5zIHRvIG1ha2UgdW5pY29kZSB0YWJsZXMgY29uc3QsIGZpeGVzCi0JICBidWcgIzMzNjA5NiwgdGhpcyBhbHNvIHVwZGF0ZXMgdG8gVW5pY29kZSA0LjAxIGZpbmFsIHdpdGggYSBjb3VwbGUKLQkgIG9mIGNoYXJhY3RlciByYW5nZXMgZml4ZXMuCi0KLU1vbiBNYXIgMjcgMDA6NTE6NDAgQ0VTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2h2YWxpZC5jIGdlbkNoUmFuZ2VzLnB5IGluY2x1ZGUvbGlieG1sL2NodmFsaWQuaDogZml4ZWQgYnVnCi0JICAjMzM1NjAzIGFuZCByZXN5bmMnZWQgZ2VuQ2hSYW5nZXMucHkgdG8gdGhlIGV4cGVjdGVkIG91dHB1dC4KLQotV2VkIE1hciAyMiAwMDoxNDozNCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gWW91cmkgR29sb3Zhbm92IGZpeGluZyBidWcKLQkgICMzMTYzMzggYW5kIGFkZGluZyBhIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zIGluIHRoZSByZWdleHAKLQkgIGNvbXBpbGF0aW9uIGVuZ2luZS4KLQkqIHRlc3QvcmVnZXhwL2J1ZzMxNjMzOCByZXN1bHQvcmVnZXhwL2J1ZzMxNjMzODogYWRkZWQgcmVncmVzc2lvbgotCSAgdGVzdHMgYmFzZWQgb24gdGhlIGV4YW1wbGVzIHByb3ZpZGVkIGluIHRoZSBidWcgcmVwb3J0LgotCi1GcmkgTWFyIDEwIDA4OjQwOjU1IEVTVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogYzE0bi5jIGVuY29kaW5nLmMgeG1sc2NoZW1hcy5jIHhwYXRoLmMgeHBvaW50ZXIuYzogZml4IGEgZmV3Ci0JICB3YXJuaW5nIHJhaXNlZCBieSBnY2MtNC4xIGFuZCBsYXRlc3RzIGNoYW5nZXMKLQotRnJpIE1hciAxMCAwMTozNDo0MiBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYyBzY2hlbWF0cm9uLmMgdGVzdEF1dG9tYXRhLmMgdHJlZS5jIHZhbGlkLmMgeGluY2x1ZGUuYwotCSAgeG1sY2F0YWxvZy5jIHhtbHJlYWRlci5jIHhtbHJlZ2V4cC5jIHhwYXRoLmM6IGVuZCBvZiBmaXJzdAotCSAgcGFzcyBvbiBjb3Zlcml0eSByZXBvcnRzLgotCi1UaHUgTWFyICA5IDE5OjM2OjE0IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYzogbW9yZSBjbGVhbnVwcyBiYXNlZAotCSAgb24gY292ZXJpdHkgcmVwb3J0cy4KLQkKLVRodSBNYXIgIDkgMTc6NDc6NDAgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmMgY2F0YWxvZy5jIGVuY29kaW5nLmMgZW50aXRpZXMuYyBleGFtcGxlL2dqb2JyZWFkLmMKLQkgIHB5dGhvbi9saWJ4bWwuYzogbW9yZSBjbGVhbnVwcyBiYXNlZCBvbiBjb3Zlcml0eSByZXBvcnRzLgotCi1UaHUgTWFyICA5IDE1OjEyOjE5IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHBhdHRlcm4uYyB1cmkuYzogYSBidW5jaAotCSAgb2Ygc21hbGwgY2xlYW51cHMgYmFzZWQgb24gY292ZXJpdHkgcmVwb3J0cy4KLQotVGh1IE1hciAgOSAwOTo0MjoxMCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYjogYWRkZWQgc2NoZW1hdHJvbiBhcyBwb2ludGVkIG91dCBieSBFcmljIFp1cmNoZXIKLQotVHVlIE1hciAgNyAwOTo1MDowOSBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbDItY29uZmlnLmluOiBmaXggUmVkIEhhdCBidWcgIzE4NDE3MAotCi1Nb24gTWFyICA2IDE0OjIxOjA4IENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdHJlZS5jOiBTaW1wbGlmaWVkIHVzYWdlIG9mIHRoZSBpbnRlcm5hbCB4bWxOc01hcC4gQWRkZWQgYQotCSAgInN0cmljdCIgbG9va3VwIGZvciBuYW1lc3BhY2VzIGJhc2VkIG9uIGEgcHJlZml4LiBGaXhlZCBhCi0JICBuYW1lc3BhY2UgcHJvY2Vzc2luZyBpc3N1ZSBpbiB0aGUgY2xvbmUtbm9kZSBmdW5jdGlvbiwgd2hpY2gKLQkgIG9jY3VyZWQgaWYgYSBAY3R4dCBhcmd1bWVudCB3YXMgZ2l2ZW4uCi0JICAKLUZyaSBNYXIgIDMgMTc6NDQ6MTAgQ0VUIDIwMDYgUm9iIFJpY2hhcmRzIDxycmljaGFyZHNAY3RpbmR1c3RyaWVzLm5ldD4KLQotCSogdmFsaWQuYzogZml4IEhUTUwgYXR0cmlidXRlIElEIGNoZWNraW5nIGZvciBpbnB1dCBlbGVtZW50LgotCSAgTWFpbnRhaW4gY3VycmVudCBhdHRyaWJ1dGUgIm5hbWUiIGJlaGF2aW9yIGZvciBub3cuCi0KLVRodSBNYXIgIDIgMTg6NTk6NTAgQ0VUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0cmVlLmM6IEJ1bmRsZWQgbG9va3VwIG9mIGF0dHItbm9kZXMgYW5kIHJldHJpZXZpbmcgdGhlaXIKLQkgIHZhbHVlcyBpbnRvIHRoZSBmdW5jdGlvbnMgeG1sR2V0UHJvcE5vZGVJbnRlcm5hbCgpIGFuZAotCSAgeG1sR2V0UHJvcE5vZGVWYWx1ZUludGVybmFsKCkuIENoYW5nZWQgcmVsZXZhbnQgY29kZQotCSAgdG8gdXNlIHRob3NlIGZ1bmN0aW9ucy4KLQotTW9uIEZlYiAyNyAyMDo0MjowNCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHdvcmthcm91bmQgSFAtVVggY29tcGlsZXIgYnVnIGJ5IFJpY2sgSm9uZXMKLQotTW9uIEZlYiAyNyAxMDo1NzowNSBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwyLnB5OiByZW1vdmUgYSB0YWIsIGFzIHBvaW50ZWQgb3V0IG9uIElSQwotCi1TYXQgRmViIDI1IDE4OjEyOjEwIENFVCAyMDA2IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHRyZWUuYzogRml4IHRoZSBhZGQgc2libGluZyBmdW5jdGlvbnMgd2hlbiBwYXNzaW5nIGF0dHJpYnV0ZXMuCi0JICBNb2RpZnkgdGVzdGluZyBmb3IgSUQgaW4geG1sU2V0UHJvcC4KLQkgIE5vIGxvbmdlciByZW1vdmUgSURuZXNzIHdoZW4gdW5saW5raW5nIG9yIHJlcGxhY2luZyBhbiBhdHRyaWJ1dGUuCi0KLUZyaSBGZWIgMjQgMjE6MjA6MzMgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IE1hcnRpbiBDb2xlIHBvaW50ZWQgb3V0IGEgYnVnIGluIHhtbENhdGFsb2dBZGQoKQotCSAgaWYgL2V0Yy94bWwvY2F0YWxvZyBkb2Vzbid0IGV4aXN0LgotCi1UaHUgRmViIDIzIDIzOjA2OjE4IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jLy8qOiB1cGRhdGVkIHRoZSBSdWJ5IGJpbmRpbmdzIGxpbmtzLCBhbmQgcmVnZW5lcmF0ZWQgdGhlCi0JICBkb2NzLgotCi1UaHUgRmViIDIzIDA5OjEyOjI3IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2F0YWxvZy5jOiBpbXByb3ZlIGNhdGFsb2cgZGVidWdnaW5nIG1lc3NhZ2UgcGF0Y2ggZnJvbSBSaWNrIEpvbmVzCi0KLVdlZCBGZWIgMjIgMTY6MDk6MTAgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vdHlwZXMuYzogTmljIEZlcnJpZXIgZm91bmQgZGVidWcgc3RhdGVtZW50IGxlZnQgaW4gdGhlCi0JICBYUGF0aCBjb252ZXJzaW9uIGNvZGUKLQotVHVlIEZlYiAyMSAyMDoyMzoxNCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy94bWxsaW50LjEgZG9jL3htbGxpbnQueG1sOiBzbWFsbCBtYW4gcGFnZSBpbXByb3ZlbWVudHMgZnJvbQotCSAgRGFuaWVsIExlaWRlcnQKLQotTW9uIEZlYiAyMCAxNTo0NToxOSBDRVQgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYSBzaWRlLWVmZmVjdCBvZiB0aGUgcHJldmlvdXMgWFNJIGJ1Z2ZpeDoKLQkgIFRoZSBjb25zdHJ1Y3RvciBuZWVkcyBhIGJ1Y2tldCB0byBiZSBhc3NpZ25lZCBkdXJpbmcgY29tcG9uZW50Ci0JICBmaXh1cC4KLQotTW9uIEZlYiAyMCAxNDozMjozNiBDRVQgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYzogRml4ZWQgeHM6Ym9vbGVhbiB0byByZWplY3QKLQkgIHRoZSBlbXB0eSBzdHJpbmcgKHJlcG9ydGVkIGJ5IEJhcyBEcmllc3NlbiBvbiB0aGUgbWFpbGluZy1saXN0KS4KLQkgIEZpeGVkIHNjaGVtYSBYU0ktYWNxdWlzaXRpb24gYW5kIGNvbnN0cnVjdGlvbjogdGhlIHNjaGVtYXRhCi0JICAoeG1sU2NoZW1hKSBkaWRuJ3QgZ2V0IHRoZSB0YXJnZXROYW1lc3BhY2UgaW4gc29tZSBjYXNlcywgdGh1cwkgIAotCSAgdGhlIGNvbXBvbmVudCByZXNvbHV0aW9uIG1lY2hhbmlzbSBmYWlsZWQgdG8gd29yay4gVGhlIFhTSQotCSAgc3R1ZmYgbmVlZHMgdG8gYmUgdGVzdGVkIG1vcmUgaW50ZW5zaXZlbHk7IHRoaW5rIGFib3V0IGhvdwotCSAgdG8gdGVzdCB0aGlzIGZvciByZWdyZXNzaW9uLgotCi1Nb24gRmViIDIwIDA5OjU3OjQxIENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL3htbGxpbnQuMSBkb2MveG1sbGludC54bWw6IG1vcmUgbWFuIHBhZ2UgaW1wcm92ZW1lbnRzIGZyb20KLQkgIERhbmllbCBMZWlkZXJ0Ci0KLVN1biBGZWIgMTkgMjI6MzE6MzMgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sbGludC4xIGRvYy94bWxsaW50LnhtbDogbWFuIHBhZ2UgaW1wcm92ZW1lbnRzIGZyb20gRGFuaWVsCi0JICBMZWlkZXJ0LCBjLmYuICMzMzEyOTAKLQotU3VuIEZlYiAxOSAxNzo1NDowNCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogZml4IGFuIGVycm9yIHJlcG9ydCB3aGVuIHVzaW5nIC0tcGF0aCBhbmQgLS12YWxpZAotCSAgY2xvc2VzIGJ1ZyAjMzMxMjkwCi0KLVN1biBGZWIgMTkgMTY6MjA6NDMgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IHRyeWluZyB0byBmaXggIzMzMTA2MiwgdGhpcyBpcyBhZ2FpbiBhIHByb2JsZW0KLQkgIGFyb3VuZCBpbnRlcmxlYXZlLCB0aGVyZSBpcyBubyBnb29kIGZpeCB1bmxlc3MgcmVpbXBsZW1lbnRpbmcKLQkgIGJ1dCB0aGlzIHdvcmtzIGFyb3VuZCBzb21lIGNhc2VzIGFuZCBhbGxvdyB0byB2YWxpZGF0ZSBpbiB0aGF0Ci0JICBjYXNlLgotCi1XZWQgRmViIDE1IDExOjU1OjIyIENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdHJlZS5jOiBGaXhlZCBidWcgIzMyODg5NiByZXBvcnRlZCBieSBMaXJvbi4gVGhlIHBhdGgKLQkgIGZvciB0ZXh0LSBhbmQgQ0RBVEEtc2VjdGlvbi1ub2RlcyB3YXMgY29tcHV0ZWQgaW5jb3JyZWN0bHkKLQkgIGluIHhtbEdldE5vZGVQYXRoKCkuCi0KLVN1biBGZWIgMTIgMjA6MTI6MjIgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogYnVnIGZpeGVzIGZvciAjMzI3MTY3IGFzIHdlbGwgYXMgc29tZSBjbGVhbnVwcwotCSAgYW5kIG1vcmUgdGhvcm91Z2ggdGVzdHMgb24gYXRvbXMgY29tcGFyaXNvbnMuCi0KLVRodSBGZWIgIDkgMTA6MDc6MjAgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL3dzb2NrY29tcGF0Lmg6IHBhdGNoIGZyb20gRXJpYyBadXJjaGVyIHRvIGNvbXBpbGUgd2l0aAotCSAgQm9ybGFuZCBDKysgNgotCi1TdW4gRmViICA1IDA0OjAzOjU5IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGJpbGwgcG9pbnRlZCBvdXQgYSBtaXNzaW5nIGJsb2NrIGluIHhtbFBhcnNlQ29tbWVudAotCSAgdHJ5aW5nIHRvIGZpbGwgd2l0aCBhIG5vcm1hbCBwcm9jZXNzaW5nIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXIuCi0KLVN1biBGZWIgIDUgMDM6NDE6MzkgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgdGhlIGNvbW1lbnQgc3RyZWFtaW5nIGJ1ZyByYWlzZWQgYnkgR3JhaGFtIEJlbm5ldHQKLQkqIHRlc3QvYmFkY29tbWVudC54bWwgcmVzdWx0Ly9iYWRjb21tZW50LnhtbCo6IGFkZGVkIHRvIHRoZSByZWdyZXNzaW9uCi0JICBzdWl0ZS4KLQotRnJpIEZlYiAgMyAxNzozNjo0MSBDRVQgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogQWRkZWQgdGhlIHhtbERPTVdyYXBDbG9uZU5vZGUoKSB0bwotCSAgdGhlIGhlYWRlciBmaWxlLgotCi1GcmkgRmViICAzIDE3OjI5OjIyIENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdHJlZS5jOiBBZGRlZCBhbiBpbml0aWFsIHZlcnNpb24gb2YgeG1sRE9NV3JhcENsb25lTm9kZSgpIHRvCi0JICB0aGUgQVBJLiBJdCB3aWxsIGJlIHVzZWQgdG8gcmVmbGVjdCBET00ncyBOb2RlLmNsb25lTm9kZSBhbmQKLQkgIERvY3VtZW50LmltcG9ydE5vZGUgbWV0aG9kcy4KLQkgIFRoZSBwcm9zOiAxKSBub24tcmVjdXJzaXZlLCAyKSBvcHRpbWl6ZWQgbnMtbG9va3VwCi0JICAobW9zdGx5IHBvaW50ZXIgY29tcGFyaXNvbiksIDMpIHVzZXIgZGVmaW5lZCBucy1sb29rdXAsCi0JICA0KSBzYXZlIG5zLXByb2Nlc3NpbmcuIFRoZSBmdW5jdGlvbiBpcyBpbiBhbiB1bmZpbmlzaGVkCi0JICBhbmQgZXhwZXJpbWVudGFsIHN0YXRlIGFuZCBzaG91bGQgYmUgb25seSB1c2VkIHRvIHRlc3QgaXQuCi0KLUZyaSBGZWIgIDMgMTA6NDI6NDggQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogYXBwbGllZCBwYXRjaCBmcm9tIFJvYiBSaWNoYXJkcyBmaXhpbmcgdGhlIFVSSSByZWdyZXNzaW9ucwotCSAgdGVzdHMgb24gV2luZG93cyB3aGljaCBzZWVtcyB0byBpbmRpY2F0ZSBiYWQgZXNjYXBpbmcuCi0KLVRodSBGZWIgIDIgMTM6MTE6MjYgQ0VUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0cmVlLmM6IEZpeGVkIHNvbWUgYnVncyB4bWxET01XcmFwUmVjb25jaWxlTmFtZXNwYWNlcygpIHdydAotCSAgdGhlIHByZXZpb3VzIGFkZGl0aW9uIG9mIHRoZSByZW1vdmFsIG9mIHJlZHVuZGFudCBucy1kZWNscy4KLQotV2VkIEZlYiAgMSAxNzozMjoyNSBDRVQgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRyZWUuYzogRW5oYW5jZWQgeG1sRE9NV3JhcFJlY29uY2lsZU5hbWVzcGFjZXMoKSB0byByZW1vdmUKLQkgIHJlZHVuZGFudCBucy1kZWNscyBpZiB0aGUgb3B0aW9uIFhNTF9ET01fUkVDT05OU19SRU1PVkVSRURVTkQKLQkgIHdhcyBnaXZlbi4gTm90ZSB0aGF0IEkgaGF2ZW4ndCBtb3ZlZCB0aGlzIG9wdGlvbiB0byB0aGUKLQkgIGhlYWRlciBmaWxlIHlldDsgc28ganVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBhbiBAb3B0aW9uCi0JICBvZiAxIHRvIHRlc3QgdGhlIGJlaGF2aW91ci4JICAKLQotV2VkIEZlYiAgMSAxMjoyMTowOCBDRVQgMjAwNiBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRhcGkuYyB3aW4zMi9NYWtlZmlsZS4qOiBBZGRlZCBjaGFuZ2VkIGFzIHByb3Bvc2VkIG9uCi0JICB0aGUgbWFpbGluZyBsaXN0IGJ5IHZlbmthdCBuYWlkdSBpbiBvcmRlciB0byBjb21waWxlCi0JICB0ZXN0YXBpLmMgb24gd2luZG93cy4KLQotVGh1IEphbiAxOSAwOTo1NzoyOCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWwyLWNvbmZpZy5pbjogdHJ5aW5nIHRvIGZpeCB3aW5kb3dzL2NvbmZpZ3VyZQotCSAgaXNzdWVzIHJlcG9ydGVkIGJ5IFRpbSBWYW4gSG9sZGVyCi0KLVdlZCBKYW4gMTggMTg6MjE6MTUgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgbGlieG1sLmggcGFyc2VyLmM6IHRyeSB0byBmaXggeG1sUGFyc2VJbk5vZGVDb250ZXh0Ci0JICB3aGVuIG9wZXJhdGluZyBvbiBhbiBIVE1MIGRvY3VtZW50LgotCi1Nb24gSmFuICA5IDE3OjI3OjE1IENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3JlbGF4bmcuaDogQWRkZWQKLQkgIHhtbFJlbGF4TkdTZXRQYXJzZXJTdHJ1Y3R1cmVkRXJyb3JzKCkgdG8gdGhlIEFQSS4KLQotTW9uIEphbiAgOSAxNTozMzoxNiBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiByZXZlcnRlZCBmaXJzdCBwYXRjaGVzIGZvciAjMzE5Mjc5IHdoaWNoIGxlZCB0byAjMzI2Mjk1Ci0JICBhbmQgZml4ZWQgdGhlIHByb2JsZW0gaW4geG1sUGFyc2VDaHVuaygpIGluc3RlYWQKLQkqIHRlc3QvZW50MTEgcmVzdWx0Ly9lbnQxMSo6IGFkZGVkIHRlc3QgZm9yICMzMjYyOTUgdG8gdGhlIHJlZ3Jlc3Npb24KLQkgIHN1aXRlCi0KLVRodSBKYW4gIDUgMTY6MjU6MDYgQ0VUIDIwMDYgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBORVdTIGNvbmZpZ3VyZS5pbiBsaWJ4bWwuc3BlYy5pbiB0ZXN0YXBpLmMgZG9jLyo6IHVwYXRlZCB0aGUgbmV3cwotCSAgcmVnZW5lcmF0ZWQgdGhlIGRvY3MsIHByZXBhcmluZyBmb3IgcmVsZWFzZSBvZiAyLjYuMjMKLQkqIHBhdHRlcm4uYyB4bWxzY2hlbWFzLmM6IGZpeGVkIHNvbWUgY29tbWVudHMKLQkKLVRodSBKYW4gIDUgMTU6NDg6MjcgQ0VUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0ZXN0L1hQYXRoL2RvY3Mvbm9kZXMgdGVzdC9YUGF0aC90ZXN0cy9ub2Rlc3BhdAotCSAgcmVzdWx0L1hQYXRoL3Rlc3RzL25vZGVzcGF0OiBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvcgotCSAgdGhlIGxhdGVzdCBYUGF0aC9wYXR0ZXJuIGZpeGVzLgotCi1UaHUgSmFuICA1IDE1OjQzOjM4IENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogcGF0dGVybi5jOiBBbm90aGVyIGZpeCB0byBoYW5kbGUgImZvby8vLiI6ICJmb28iIHdhcyBub3QKLQkgIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbm9kZS1zZXQuCi0KLVRodSBKYW4gIDUgMTM6MjI6MjkgQ0VUIDIwMDYgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiBwYXR0ZXJuLmMgeHBhdGguYyBpbmNsdWRlL2xpYnhtbC9wYXR0ZXJuLmg6Ci0JICBGaXhlZCBidWcgIzMyMjkyOCwgcmVwb3J0ZWQgYnkgRXJpY2ggU2NodWJlcnQ6IFRoZSBidWcgd2FzCi0JICBpbiBwYXR0ZXJuLmMsIHdoaWNoIGlzIHVzZWQgZm9yIGEgdGlueSBzdWJzZXQgb2YgeHBhdGgKLQkgIGV4cHJlc3Npb24gd2hpY2ggY2FuIGJlIGV2YWx1YXRlZCBpbiBhbiBvcHRpbWl6ZWQgd2F5LgotCSAgVGhlIGRvYy1ub2RlIHdhcyBuZXZlciBjb25zaWRlcmVkIHdoZW4gZXZhbHVhdGluZyAiLy8iCi0JICBleHByZXNzaW9ucy4gQWRkaXRpb25hbGx5LCB3ZSBmaXhlZCByZXNvbHV0aW9uCi0JICB0byBub2RlcyBvZiBhbnkgdHlwZSBpbiBwYXR0ZXJuLmM7IGkuZS4gYSAiLy8uIiBkaWRuJ3Qgd29yawotCSAgeWV0LCBhcyBpdCBkaWQgc2VsZWN0IG9ubHkgZWxlbWVudC1ub2Rlcy4gRHVlIHRvIHRoaXMKLQkgIGlzc3VlIHRoZSBwdXNoaW5nIG9mIG5vZGVzIGluIHhwYXRoLmMgbmVlZGVkIHRvIGJlIGFkanVzdGVkCi0JICBhcyB3ZWxsLgotCi1XZWQgSmFuICA0IDE4OjA3OjQ3IENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHRpbnkgcmVmYWN0b3JpbmcgcGF0Y2ggZnJvbSBCam9ybiBSZWVzZQotCi1XZWQgSmFuICA0IDE1OjAwOjUxIENFVCAyMDA2IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jOiBmaXggYnVnICMzMjQ0MzIgd2l0aCA8eG1sOmZvby8+Ci0JKiB0ZXN0L25zNyByZXN1bC8vbnM3KjogYWRkZWQgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotV2VkIEphbiAgNCAxMDo1Mzo1NiBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvd3NvY2tjb21wYXQuaDogYXBwbGllZCBwYXRjaCBmcm9tIE1hcmsgSnVua2VyLCBmaXhpbmcgYSAKLQkgIE1pbkdXIGNvbXBpbGF0aW9uIHByb2JsZW0sIHNob3VsZCBjbG9zZSBidWcgIzMyNDk0MwotCi1UdWUgSmFuICAzIDExOjQ5OjU0IENFVCAyMDA2IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBSZW1vdmVkIGxhc3QgZGVwZW5kZW5jeSBvbiB0aGUgb2Jzb2xldGUgZW51bQotCSAgeG1sU2NoZW1hVmFsaWRFcnJvci4KLQotTW9uIEphbiAgMiAxMToyMDowMCBDRVQgMjAwNiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oIHhtbHNjaGVtYXMuYzogY29tcGlsYXRpb24KLQkgIGFuZCBkb2MgYnVpbGQgZml4ZXMgZnJvbSBNaWNoYWVsIERheQotCi1XZWQgRGVjIDI4IDIyOjEyOjM0IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGJ1ZyBpbiB4bWxSZWdFeGVjUHVzaFN0cmluZzIoKSBwb2ludGVkIG91dCBieSAKLQkgIFNyZWVuaSBOYWlyLgotCi1UdWUgRGVjIDIwIDE2OjU1OjMxIENFVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHRyZWUuYzogZml4IGJ1ZyAjMzIyMTM2IGluIHhtbE5vZGVCdWZHZXRDb250ZW50IHdoZW4gZW50aXR5IHJlZiBpcyAKLQkgIGEgY2hpbGQgb2YgYW4gZWxlbWVudCAoZml4IGJ5IE9sZWtzYW5kciBLb25vbmVua28pLgotCSogSFRNTHRyZWUuYyBpbmNsdWRlL2xpYnhtbC9IVE1MdHJlZS5oOiBBZGQgaHRtbERvY0R1bXBNZW1vcnlGb3JtYXQuCi0KLVR1ZSBEZWMgMjAgMTE6NDM6MDYgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgeG1sc3RyaW5nLmM6IEZpeGVkIGEgc2VnZmF1bHQgZHVyaW5nCi0JICB0ZXh0IGNvbmNhdGVuYXRpb24gd2hlbiB2YWxpZGF0aW5nIGEgbm9kZSB0cmVlOgotCSAgeG1sU3RybmNhdCB3YXMgY2FsbGVkIHdpdGggYSBAbGVuIG9mIC0xOyBidXQgdW5saWtlCi0JICB4bWxTdHJuY2F0TmV3LCBpdCBkb2VzIG5vdCBjYWxjdWxhdGUgdGhlIGxlbmd0aAotCSAgYXV0b21hdGljYWxseSBpbiBzdWNoIGEgY2FzZSAocmVwb3J0ZWQgYnkgSnVkeSBIYXkKLQkgIG9uIHRoZSBtYWlsaW5nIGxpc3QpLgotCSAgVXBkYXRlZCB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSBpbnZvbHZlZCBzdHJpbmcKLQkgIGZ1bmN0aW9ucyB0byBub3RlIHRoaXMuCi0KLVRodSBEZWMgMTUgMTI6MTE6MDcgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vaHR0cC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gR2FyeSBDb2FkeSB0byBhY2NlcHQgZ3ppcHBlZAotCSAgaHR0cCByZXNvdXJjZXMuCi0KLVdlZCBEZWMgMTQgMTg6NDE6MjYgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IEFkZGVkIGVuYWJsZS9kaXNhYmxlIG9mIHJ1bnRpbWUKLQkgIGRlYnVnZ2luZyAoTElCWE1MX0RFQlVHX1JVTlRJTUUpLgotCi1XZWQgRGVjIDE0IDE4OjExOjUwIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBGaXhlZCB0byBkZWZpbmUKLQkgIExJQlhNTF9ERUJVR19SVU5USU1FIG9uIHRoZSBiYXNpcyBvZiBAV0lUSF9SVU5fREVCVUdALgotCi1UdWUgRGVjIDEzIDEyOjQ5OjIzIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdGVzdC9zY2hlbWFzL2J1ZzMyMTQ3NSogcmVzdWx0L3NjaGVtYXMvYnVnMzIxNDc1KjoKLQkgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVnICMzMjE0NzUgKHJlcG9ydGVkIGJ5Ci0JICBHYWJvciBOYWd5KS4gRml4aW5nIG9mIGJ1ZyAjMzIzNTEwIHNlZW1lZCB0byBoYXZlCi0JICBmaXhlZCB0aGlzIGJ1ZyBhcyB3ZWxsLgotCi1Nb24gRGVjIDEyIDE2OjE5OjE2IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdGVzdC9zY2hlbWFzL2J1ZzMyMzUxMCogcmVzdWx0L3NjaGVtYXMvYnVnMzIzNTEwKjoKLQkgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVnICMzMjM1MTAuCi0KLU1vbiBEZWMgMTIgMTY6MTE6MTMgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IFdvcmthcm91bmQgZm9yIGJ1ZyAjMzIzNTEwIChyZXBvcnRlZCBieQotCSAgSm9uYXRoYW4gRmlsaWF0cmF1bHQpOiBzdWJzdGl0dXRlZCB0aGUgZXBzaWxvbiB0cmFuc2l0aW9uCi0JICBmb3IgYSBsYWJlbGxlZCB0cmFuc2l0aW9uLCBpbiBvcmRlciB0byBhdm9pZCBhIGJ1ZyBpbgotCSAgeG1scmVnZXhwLmMgd2hpY2ggZWxpbWluYXRlZCB0aGUgZXBzaWxvbiB0cmFuc2l0aW9uIGFuZAotCSAgbWFya2VkIHRoZSBpbml0aWFsIHN0YXRlIGFzIGZpbmFsLgotCi1Nb24gRGVjIDEyIDE0OjI1OjQ2IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IEdhcnkgQ29hZHkgcG9pbnRlZCBhIG1lbW9yeSBsZWFrIGluCi0JICB4bWxUZXh0UmVhZGVyUmVhZElubmVyWG1sKCkgYXBwbGllZCBwYXRjaCBmaXhpbmcgIzMyMzg2NAotCi1TYXQgRGVjIDEwIDEyOjA4OjI4IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIGNvbmZpZ3VyZS5pbiBwYXJzZXJJbnRlcm5hbHMuYyBydW5zdWl0ZS5jIHJ1bnRlc3QuYwotCSAgdGVzdGFwaS5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyB4bWxzdHJpbmcuYzogZml4ZWQgYSBudW1iZXIKLQkgIG9mIHdhcm5pbmdzIHNob3duIGJ5IEhQLVVYIGNvbXBpbGVyIGFuZCByZXBvcnRlZCBieSBSaWNrIEpvbmVzCi0KLUZyaSBEZWMgIDkgMTg6NTc6MzEgQ0VUIDIwMDUgUm9iIFJpY2hhcmRzIDxycmljaGFyZHNAY3RpbmR1c3RyaWVzLm5ldD4KLQotCSogeG1sd3JpdGVyLmM6IEluc2VydCBzcGFjZSBiZXR3ZWVuIHB1YmlkIGFuZCBzeXNpZCB3aGVuIGJvdGggCi0JICBwYXNzZWQgdG8geG1sVGV4dFdyaXRlclN0YXJ0RFREIGFuZCBpbmRlbnRpbmcgbm90IGJlaW5nIHVzZWQuCi0JICBSZW1vdmUgbm8gbG9uZ2VyIHVzZWQgTWVtIGNhbGxiYWNrcy4KLQotRnJpIERlYyAgOSAxMTowMToxNiBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHJ1bnN1aXRlLmM6IENoYW5nZWQgdG8gaW5zdGFudGx5IG1hcmsgaW5zdGFuY2UtdGVzdHMgYXMKLQkgIGZhaWxlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBzY2hlbWEgd2FzIGludmFsaWQuIFRoaXMKLQkgIHJlZmxlY3RzIHRoZSBzaWRlIG9mIHRoZSBQeXRob24gY29kZSBmb3IgdGhlIFhNTCBTY2hlbWEgdGVzdAotCSAgc3VpdGUuIFdlIG5vdyBnZXQgdGhlIHNhbWUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBvbiBib3RoCi0JICBzaWRlcy4KLQotV2VkIERlYyAgNyAxNDo1OTowMSBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oOiBBZGRlZAotCSAgeG1sVGV4dFJlYWRlclNjaGVtYVZhbGlkYXRlQ3R4dCgpIHRvIHRoZSBBUEkuCi0KLVdlZCBEZWMgIDcgMTI6NTk6NTYgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkIGEgc2VnZmF1bHQ6IHRoZSBpbnN0YW5jZSBkb2N1bWVudCB3YXMKLQkgIHN0aWxsIHRyaWVkIHRvIGJlIHZhbGlkYXRlZCwgaWYgdGhlIHNjaGVtYSwgZHluYW1pY2FsbHkKLQkgIGFjcXVpcmVkIHVzaW5nIFhTSSB3YXMgaW52YWxpZCwgdGh1cyBtYW5nbGVkLiBUaGUKLQkgIHZhbGlkYXRpb24gd2lsbCBzdG9wIChvciByYXRoZXIgd29uJ3QgdmFsaWRhdGUpIG5vdyBpbgotCSAgc3VjaCBhIGNhc2UuIFRoZSBzY2hlbWEgcGFyc2VyIGVycm9yIGNvZGUgd2lsbCBiZSBzZXQKLQkgIG9uIHRoZSB2YWxpZGlvbiBjb250ZXh0IG5vdzsgdGhpcyBpcyBzb21laG93IG5vdCBuaWNlLAotCSAgYnV0IGl0IGFzc3VyZXMgdGhhdCB0aGUgdmFsaWRhdGlvbiBjb250ZXh0IGluZGljYXRlcyBhbgotCSAgZXJyb3IgaW4gdGhlcmUgd2FzIGEgcGFyc2VyIGVycm9yLgotCi1UdWUgRGVjICA2IDE4OjU3OjIzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IHNtYWxsIGRvYyBwYXRjaCBmcm9tIEFyb24gU3RhbnN2aWsKLQkqIGxlZ2FjeS5jOiBhbm90aGVyIGRvYyBwYXRjaCBmb3IgYSBkZXByZWNhdGVkIEFQSQotCi1Nb24gRGVjICA1IDE2OjIzOjQ5IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogTWFrZWZpbGUuYW06IFRpbnkgY2hhbmdlIGZvciAnbWFrZSB0ZXN0cyc6IHJhaXNlZAotCSAgdGhlIG51bWJlciBvZiBleHBlY3RlZCBmYWlsdXJlcyBmb3IgSmFtZXMgQ2xhcmsncwotCSAgWE1MIFNjaGVtYSBkYXRhdHlwZSB0ZXN0cyBmcm9tIDEwIHRvIDExLiBUaGUgYWRkaXRpb25hbAotCSAgcmVwb3J0ZWQgZXJyb3Igd2FzIGFncmVlZCB0byBiZSBjb3JyZWN0IGxvbmcgdGltZSBhZ28sCi0JICBidXQgd2UgbWlzc2VkIHRvIGFkanVzdCB0aGUgbWVzc2FnZSByZXBvcnRlZCBieQotCSAgdGhlIHRlc3Rpbmcgc2NyaXB0LgotCi1GcmkgRGVjICAyIDEzOjUxOjE0IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogcmVzdWx0L3NjaGVtYXMvZGVjaW1hbCogcmVzdWx0L3NjaGVtYXMvYnVnMzIyNDExKjoKLQkgIEFkZGVkIG1pc3NpbmcgcmVncmVzc2lvbiB0ZXN0IHJlc3VsdHMgZm9yIHRoZSBsYXRlc3QgSURDCi0JICBhbmQgeHM6ZGVjaW1hbCBidWdzLgotCi1XZWQgTm92IDMwIDEyOjIyOjIzIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdGVzdC9zY2hlbWFzL2RlY2ltYWwqIHRlc3Qvc2NoZW1hcy9idWczMjI0MTEqOiBBZGRlZAotCSAgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIGxhdGVzdCBJREMgYW5kIHhzOmRlY2ltYWwgYnVncy4KLQotV2VkIE5vdiAzMCAxMTo1NzozNSBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYnViYmxpbmcgb2YgZHVwbGljYXRlIElEQyBub2RlczogdGhlCi0JICBwYXJlbnQncyBsaXN0IG9mIGR1cGxpY2F0ZXMgd2FzIGZpbGxlZCB3aXRoIE5VTExzIGluc3RlYWQKLQkgIG9mIHRoZSBub2RlcyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFRoaXMgbGVhZCB0byBhCi0JICBzZWdmYXVsdCB3aGVuIHRoZSBsaXN0J3MgZW50cmllcyB3ZXJlIGFjY2Vzc2VkLgotCi1Nb24gTm92IDI4IDE3OjI4OjUzIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IEZpeGVkIHBhcnNpbmcgb2YgeHM6ZGVjaW1hbCB0bwotCSAgYWxsb3cvZGVueSBzcGVjaWFsIGxleGljYWwgZm9ybXMuIEZpeGVkIHRoZSB0b3RhbERpZ2l0cwotCSAgZm9yIHZhbHVlcyBpbiB0aGUgcmFuZ2UgKHggPCAxKSAmJiAgKHggPiAtMSkgJiYgKHggIT0gMCk7Ci0JICBFLmcgIjAuMTIzIiBoYXMgbm93IGEgdG90YWxEaWdpdHMgb2YgMyAod2FzIDQgcHJldmlvdXNseSkuCi0JICBBZGp1c3RlZCB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgZGVjaW1hbHMgZHVlIHRvIHRoaXMKLQkgIGNoYW5nZS4gQXMgYSBzaWRlIGVmZmVjdCBjb21wYXJpc29uIGFnYWluc3QgemVyb2VzIHdhcwotCSAgb3B0aW1pemVkLgotCi1Nb24gTm92IDI4IDEzOjI1OjExIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBBbiBhc3NpZ25tZW50IHRvIGEgbG9jYWwgdmFyaWFibGUsIHdoaWNoIHdhcwotCSAgdXNlZCB0byBhY2Nlc3MgdGhlIElEQyBub2RlIGxpc3QsIHdhcyBtaXNzaW5nIGFmdGVyIHRoZQotCSAgcmVhbGxvY2F0aW9uIG9mIHRoZSBsaXN0IChyZXBvcnRlZCBieSBGYWJyaWNlIEdVWQotCSAgYnVnICMzMjI0MTEpLiBSZW5hbWVkIHRoZSBkZWZpbmUgRU5BQkxFX0lEQ19OT0RFX1RBQkxFUwotCSAgdG8gRU5BQkxFX0lEQ19OT0RFX1RBQkxFU19URVNUIGFuZCAqZGlzYWJsZWQqIGl0LCBzaW5jZQotCSAgaXQgaXMgdXNlZCB0byBmb3JjZSBidWJibGluZyBvZiBJREMgbm9kZSB0YWJsZXMgZXZlbgotCSAgaWYgbm90IG5lY2Vzc2FyeTsgdGhpcyB3YXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGVzdAotCSAgcHVycG9zZXMsIGJ1dCBJIG9idmlvdXNseSBtaXNzZWQgdG8gZGlzYWJsZSBpdCAoYWx0aG91Z2gKLQkgIGl0IGFwcGFyZW50bHkgaGVscGVkIGZpbmRpbmcgdGhlIGJ1ZykuCi0KLVdlZCBOb3YgMjMgMTc6MzQ6NTIgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEluIHhtbFNjaGVtYUFzc2VtYmxlQnlYU0koKSB0aGUgcmV0dXJuIHZhbHVlCi0JICBvZiB4bWxTY2hlbWFHZXRNZXRhQXR0ckluZm8oKSB3YXMgbm90IGFzc2lnbmVkIHRvIGFueXRoaW5nOwotCSAgdGhpcyBjYXVzZWQgWFNJLWRyaXZlbi1keW5hbWljIHNjaGVtYSBhY3F1aXNpdGlvbiB0byBmYWlsCi0JICB3aXRoIEBub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uIChyZXBvcnRlZCBieSBKdWxpZW4gTGFteQotCSAgb24gdGhlIG1haWxpbmcgbGlzdCkuCi0KLVR1ZSBOb3YgMjIgMTg6MzE6MzQgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkIGEgYnVnIGluIHhtbFNjaGVtYUZpbmRSZWRlZkNvbXBJbkdyYXBoKCkKLQkgIHdoaWNoIGNhdXNlZCB0aGUgc2VhcmNoIGZvciBjb21wb25lbnRzIHRvIHN0b3AgYXQgdGhlCi0JICBmaXJzdCBlbmNvdW50ZXJlZCBhdHRyaWJ1dGUgZ3JvdXAgY29tcG9uZW50LgotCSAgRml4ZWQgZXJyb3IgcmVwb3J0IGluIHhtbFNjaGVtYUNoZWNrU1JDUmVkZWZpbmVGaXJzdCgpOiB0aGUKLQkgIGRlc2lnbmF0aW9uIG9mIGEgbm90LWZvdW5kIGNvbXBvbmVudCB3YXMgbm90IHJlcG9ydGVkLgotCi1Nb24gTm92IDIxIDEyOjIzOjI4IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IEFsYmVydCBDaGluIGZvdW5kIGFub3RoZXIgc2lnbmVkL3Vuc2lnbmVkIHByb2JsZW0KLQkgIGluIHRoZSBkYXRlIGFuZCB0aW1lIGNvZGUgcmFpc2VkIG9uIElSSVggNi41Ci0KLUZyaSBOb3YgMTggMTg6MTM6MzggQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hcy5oOgotCSAgQWRkZWQgeG1sU2NoZW1hU2V0UGFyc2VyU3RydWN0dXJlZEVycm9ycygpIHRvIHRoZSBBUEkuCi0JICBGaXhlZCBjaGFubmVsaW5nIG9mIGVycm9yIHJlbGV2YW50IGluZm9ybWF0aW9uIHRvCi0JICBzdWJzZXF1ZW50IHBhcnNlci92YWxpZGF0aW9uIGNvbnRleHRzLgotCi1UaHUgTm92IDE3IDE0OjExOjQzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VySW50ZXJuYWxzLmM6IHJlbW92ZWQgdW5yZWFjaGFibGUgY29kZSBwb2ludGVkIG91dCBieSAKLQkgIE9sZWtzYW5kciBLb25vbmVua28sIGZpeGVzIGJ1ZyAjMzIxNjk1Ci0KLVRodSBOb3YgMTcgMDg6MjQ6MzEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogdXNlIGN0eHQtPnN0YW5kYWxvbmUgPSAtMiB0byBpbmRpY2F0ZSB0aGF0IHRoZQotCSAgWE1MRGVjbCB3YXMgcGFyc2VkIGJ1dCBubyBzdGFuZGFsb25lIGF0dHJpYnV0ZSB3YXMgZm91bmQsCi0JICBzdWdnZXN0ZWQgYnkgTWljaGFlbCBEYXkgdG8gZGV0ZWN0IGlmIGFuIFhNTERlY2wgd2FzIGZvdW5kLgotCi1UdWUgTm92IDE1IDA5OjQ5OjI0IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVudGVzdC5jOiBIaXNhc2hpIEZ1amluYWthIHBvaW50ZWQgdGhhdCBlcnJvcnMgaW4gU2NoZW1hcyB0ZXN0cwotCSAgd2VyZSBub3QgcHJvcGVybHkgcmVwb3J0ZWQuCi0KLVN1biBOb3YgMTMgMTM6NDI6NDEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gR2VlcnQgSmFuc2VuIHRvIHJlbW92ZSB4bWxCdWZmZXJDbG9zZSgpCi0JICB3aGljaCBpcyBub3QgbmVlZGVkLgotCi1GcmkgTm92IDExIDEzOjQ4OjUyIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBDaGFuZ2VkIHhtbFNjaGVtYUZvcm1hdElEQ0tleVNlcXVlbmNlKCkKLQkgIHRvIHVzZSB4bWxTY2hlbWFHZXRDYW5vblZhbHVlV2h0c3BFeHQoKSBpbiBvcmRlciB0bwotCSAgY29ycmVjdGx5IHJlcG9ydCB2YWx1ZXMgZm9yIHhzOmFueVNpbXBsZVR5cGUuCi0JKiB0ZXN0L3NjaGVtYXMvaWRjLWtleXJlZi1lcnIxKgotCSAgcmVzdWx0L3NjaGVtYXMvaWRjLWtleXJlZi1lcnIxKjogQWRkZWQgYSB0ZXN0IGZvciB0aGlzIGNoYW5nZS4KLQotV2VkIE5vdiAgOSAxMzowNzoyNCBFU1QgMjAwNSBSb2IgUmljaGFyZHMgPHJyaWNoYXJkc0BjdGluZHVzdHJpZXMubmV0PgotCi0JKiB4bWxJTy5jIHhtbHdyaXRlci5jOiBmdW5jdGlvbiBjb25zb2xpZGF0aW9uIHdoZW4gd3JpdGluZyB0byB4bWxCdWZmZXIuCi0JICBSZXR1cm4gZXJyb3IgY29uZGl0aW9uIG5vdCBsZW4gaWYgeG1sd3JpdGVyIGZhaWxzIHdyaXRpbmcgdG8gYnVmZmVyLgotCi1XZWQgTm92ICA5IDA5OjU0OjU0IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwveG1sSU8uaCBpbmNsdWRlL2xpYnhtbC94bWxzYXZlLmg6Ci0JICBhcHBsaWVkIHBhdGNoIGZyb20gR2VlcnQgSmFuc2VuIHRvIGltcGxlbWVudCB0aGUgc2F2ZSBmdW5jdGlvbiB0byAKLQkgIGEgeG1sQnVmZmVyLCBhbmQgYSBiaXQgb2YgY2xlYW51cC4KLQotTW9uIE5vdiAgNyAxNDo1ODozOSBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYzogRml4ZWQgdGhlIHR5cGUgb2YgdGhlCi0JICB0b3RhbERpZ2l0cyB2YWx1ZSB0byBiZSBwb3NpdGl2ZUludGVnZXIuCi0JICBGaXhlZCBjcmFzaCBpbiBhbiBlcnJvciByZXBvcnQgZnVuY3Rpb24gd2hlbiB3ZSBnYXZlIGl0Ci0JICB0aGUgZG9jdW1lbnQgbm9kZTsgb25seSBlbGVtZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMgYXJlCi0JICBwcm9jZXNzZWQgbm93IChyZXBvcnRlZCBieSBSb2IgUmljaGFyZHMpLgotCi1UdWUgTm92ICAxIDE2OjIyOjI5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGZpeCBidWcgIzMxOTg5NywgcHJvYmxlbSB3aXRoIGNvdW50ZWQgYXRvbXMKLQkgIHdoZW4gdGhlIHRyYW5zaXRpb24gaXRzZWxmIGlzIGNvdW50ZWQgdG9vCi0JKiByZXN1bHQvcmVnZXhwL2hhcmQgdGVzdC9yZWdleHAvaGFyZDogYXVnbWVudGVkIHRoZSByZWdyZXNzaW9uCi0JICB0ZXN0cyB3aXRoIHRoZSBwcm9ibGVtIGV4cG9zZWQuCi0KLVR1ZSBOb3YgIDEgMTE6NTQ6MzkgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndyBpbmNsdWRlL3dpbjMyY29uZmlnLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbQotCSAgTWFyayBKdW5rZXIgdG8gZml4IGNvbXBpbGF0aW9uIHdpdGggTWluR1cKLQotRnJpIE9jdCAyOCAxODozNjowOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuMzogdGlueSBmaXggZnJvbSBBbGJlcnQgQ2hpbgotCSogcnVuc3VpdGUuYyBydW50ZXN0LmMgdGVzdGFwaS5jOiBwb3J0YWJpbGl0eSBjbGVhbnVwIGZvciBhcmNoCi0JICBuZWVkaW5nIHRyaW8gZm9yICpwcmludGYKLQotRnJpIE9jdCAyOCAxMjoyMTozOSBFRFQgMjAwNSBSb2IgUmljaGFyZHMgPHJyaWNoYXJkc0BjdGluZHVzdHJpZXMubmV0PgotCi0JKiB0cmVlLmM6IGFkZCBhZGRpdGlvbmFsIGNoZWNrcyB0byBwcmV2ZW50IHRyZWUgY29ycnVwdGlvbi4gZml4IHByb2JsZW0gCi0JICBjb3B5aW5nIGF0dHJpYnV0ZSB1c2luZyB4bWxEb2NDb3B5Tm9kZSBmcm9tIG9uZSBkb2N1bWVudCB0byBhbm90aGVyLgotCi1GcmkgT2N0IDI4IDE3OjU4OjEzIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiB2bXMvY29uZmlnLnZtcyBtYWNvcy9zcmMvY29uZmlnLW1hYy5oOgotCSAgY2xlYW51cCBmcm9tIEFsYmVydCBDaGluCi0JKiBkb2MvTWFrZWZpbGUuYW06IGh0bWwvaW5kZXguc2dtbCBkb2Vzbid0IGV4aXN0IGFueW1vcmUKLQotRnJpIE9jdCAyOCAxNjo1Mzo1MSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jIHhtbG1vZHVsZS5jOiBtb3JlIHBvcnRhYmlsaXR5IHBhdGNoZXMgZnJvbSBBbGJlcnQgQ2hpbiBmb3IKLQkgIEhQLVVYIGFuZCBBSVgKLQotRnJpIE9jdCAyOCAxMDozNjoxMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxtb2R1bGUuYyBjb25maWd1cmUuaW46IGFwcGxpZWQgMiBwYXRjaGVzIGZyb20gQWxiZXJ0IENoaW4gZm9yCi0JICBtb2R1bGUgcG9ydGFiaWxpdHkKLQotRnJpIE9jdCAyOCAxMDoyNDozOSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlcnJvci5jOiBmaXhpbmcgYSBwb3J0YWJpbGl0eSBwcm9ibGVtIG9uIHNvbWUgb2xkIFVuaWNlcyB3aXRoCi0JICBwYXRjaCBmcm9tIEFsYmVydCBDaGluCi0KLTIwMDUtMTAtMjcgIEFsZWtzZXkgU2FuaW4gPGFsZWtzZXlAYWxla3NleS5jb20+Ci0KLQkqIGMxNG4uYyAgcmVzdWx0L2MxNG4vZXhjLXdpdGhvdXQtY29tbWVudHMvdGVzdC0yCi0JICB0ZXN0L2MxNG4vZXhjLXdpdGhvdXQtY29tbWVudHMvdGVzdC0yLnhtbAotCSAgdGVzdC9jMTRuL2V4Yy13aXRob3V0LWNvbW1lbnRzL3Rlc3QtMi54cGF0aDogZml4aW5nCi0JICBidWcgaW4gZXhjLWMxNG4gbmFtZXNwYWNlIHZpc2liaWxpdHkgKyB0ZXN0IGNhc2UgKGJ1ZyAjMzE5MzY3KQotCi1UaHUgT2N0IDI3IDE2OjEwOjMxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwucHk6IHJlbW92ZSB3YXJuaW5ncyB0byBzdGRvdXQgcGF0Y2ggZnJvbSBOaWMgRmVycmllcgotCi1UaHUgT2N0IDI3IDEzOjU0OjUyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmMgeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwvdmFsaWQuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGF2b2lkIGZ1bmN0aW9uIHBhcmFtZXRlcnMgbmFtZXMgJ2xpc3QnCi0JICBhcyB0aGlzIHNlZW1zIHRvIGdpdmUgdHJvdWJsZXMgd2l0aCBWQzYgYW5kIHN0bCBhcyByZXBvcnRlZCBieQotCSAgU2FtdWVsIERpYXogR2FyY2lhLgotCi1XZWQgT2N0IDI2IDEwOjU5OjIxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlckludGVybmFscy5jOiBmaXggYSBwcm9ibGVtIGluIHNvbWUgZXJyb3IgY2FzZSBvbiBTb2xhcmlzCi0JICB3aGVuIHBhc3NlZCBhIE5VTEwgZmlsZW5hbWUsIHBvaW50ZWQgYnkgQWxiZXJ0IENoaW4uCi0KLVR1ZSBPY3QgMjUgMTQ6MzQ6NTggQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBzY3JpcHQgSFRNTCBwYXJzZXIgZXJyb3IgZml4LCBjb3JyZWN0cyBidWcgIzMxOTcxNQotCSogcmVzdWx0L0hUTUwvNTM4NjcqIHRlc3QvSFRNTC81Mzg2Ny5odG1sOiBhZGRlZCB0ZXN0IGZyb20gTWljaGFlbCBEYXkKLQkgIHRvIHRoZSByZWdyZXNzaW9uIHN1aXRlIAotCi1UdWUgT2N0IDI1IDE0OjIxOjExIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogdHlwbyBmaXggZnJvbSBNaWNoYWVsIERheQotCi1Nb24gT2N0IDI0IDIwOjE2OjIzIEVEVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHRyZWUuYzogZml4IGlzc3VlIGFkZGluZyBub24tbmFtZXNwYWNlZCBhdHRyaWJ1dGVzIGluIHhtbEFkZENoaWxkKCksIAotCSAgeG1sQWRkTmV4dFNpYmxpbmcoKSBhbmQgeG1sQWRkUHJldlNpYmxpbmcoKSAoYnVnICMzMTkxMDgpIC0gcGFydCAxLgotCi1TYXQgT2N0IDIyIDEwOjAwOjQxIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgc2Vjb25kIHNwb3Qgd2hlcmUgQ1JMRiBzcGxpdCBiZXR3ZWVuIGNodW5rcwotCSAgY291bGQgY2F1c2UgdHJvdWJsZSAoYnVnICMzMTkyNzkpCi0JKiBnZW50ZXN0LnB5LCB0ZXN0YXBpLmM6IGZpeGVkIHR3byBwcm9ibGVtcyBpbnZvbHZlZCB3aXRoCi0JICAtLXdpdGgtbWluaW11bSBjb21waWxhdGlvbiAoY29tcGlsYXRpb24gZXJyb3JzIHdpdGggc2NoZW1hdHJvbgotCSAgYW5kIGZvcm1hbCBleHByZXNzaW9ucyB0ZXN0cykKLQotRnJpIE9jdCAyMSAxMDo1MDoxNCBFRFQgMjAwNSBSb2IgUmljaGFyZHMgPHJyaWNoYXJkc0BjdGluZHVzdHJpZXMubmV0PgotCi0JKiB4bWxzYXZlLmM6IHByZXZlbnQgb3V0cHV0IG9mIGZyYWdtZW50IHRhZ3Mgd2hlbiBzZXJpYWxpemluZyBYSFRNTC4KLQotV2VkIE9jdCAxOSAxNjo1Mzo0NyBCU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBjb21taXRpbmcgYSBzb21lIGZpeGVzIGFuZCBkZWJ1ZyBkb25lIHllc3RlcmRheSBpbgotCSAgdGhlIExvbmRvbiBhaXJwb3J0LgotCi1UaHUgT2N0IDIwIDEyOjU0OjIzIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogUmVtb3ZlZCBjcmVhdGlvbiBvZiBhIHRlbXBvcmFyeSBwYXJzZXIgY29udGV4dAotCSAgZHVyaW5nIHZhbGlkYXRpb24gd2hlbiBwcm9jZXNzaW5nIHhzaTp0eXBlOyB0aGlzIHByZXZpb3VzbHkKLQkgIGFkZGVkIGEgc3RyaW5nIHRvIHRoZSBkaWN0IG9mIHRoZSBzY2hlbWEgLSB0byBhc3N1cmUgdGhyZWFkCi0JICBzYWZldHksIHdlIGRvbid0IHdhbnQgdG8gbW9kaWZ5IGEgZ2l2ZW4gc2NoZW1hIGR1cmluZwotCSAgdmFsaWRhdGlvbi4KLQotVGh1IE9jdCAyMCAxNzowNToyOSBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sd3JpdGVyLmM6IGZpeGVkIHByb2JsZW0gaW4geG1sVGV4dFdyaXRlclZTcHJpbnRmIGNhdXNlZCBieQotCSAgbWlzdXNlIG9mIHZzbnByaW50ZgotCSogY29uZmlndXJlLmluLCBjb25maWcuaC5pbjogYWRkZWQgYSBjb25maWd1cmF0aW9uIGNoZWNrIGZvcgotCSAgdmFfY29weSBhbmQgYWRkZWQgYSBkZWZpbmUgZm9yIFZBX0NPUFkgZm9yIHhtbHdyaXRlci5jIGZpeAotCSogcGFyc2VyLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBDUkxGIHNwbGl0IGJldHdlZW4gY2h1bmtzIChidWcKLQkgICMzMTkyNzkpIChmaXggcHJvdmlkZWQgYnkgQnJpb24gVmliYmVyKQotCi1XZWQgT2N0IDE5IDE4OjQ5OjUyIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgaW4KLQkgIHhtbFNjaGVtYUNoZWNrQ1NlbGVjdG9yWFBhdGgoKSB3aGVuIGFuIGludGVybmFsIGVycm9yIG9jY3Vycy4KLQkgIEZpeGVkIHNldHRpbmcgb2YgY3R4dC0+ZXJyIHRvIHRoZSBnaXZlbiBlcnJvciBjb2RlIGluCi0JICB0aGUgcGFyc2luZyBlcnJvciBmdW5jdGlvbnMuCi0JKiBwYXR0ZXJuLmM6IEFkZGVkIGludGVybmFsIHhtbENvbXBpbGVJRENYUGF0aFBhdGgoKSBhcyBhCi0JICBzdGFydGluZyBwb2ludCBmb3IgSURDIFhQYXRoIGNvbXBpbGF0aW9uOyB0aGlzIGFuZCBzb21lIG90aGVyCi0JICB0aW55IGNoYW5nZXMgZml4ZXMgaXNzdWVzIHJlZ2FyZGluZyB3aGl0ZXNwYWNlIGluIHRoZQotCSAgZXhwcmVzc2lvbnMgYW5kIElEQyBzZWxlY3Rvci9maWVsZCByZWxldmFudCByZXN0cmljdGlvbnMgb2YKLQkgIHRoZSBzdWJzZXQgb2YgWFBhdGguIEZpeGVkIGEgbWlzc2luZyBibG9ja2luZyBvZiBhdHRyaWJ1dGVzCi0JICBpbiB4bWxTdHJlYW1QdXNoSW50ZXJuYWwoKS4KLQotTW9uIE9jdCAxNyAxNTowNjowNSBFRFQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogcmVtb3ZlZCB0aGUgZXJyb3IgbWVzc2FnZQotCSogcmVsYXhuZy5jIHhtbHNjaGVtYXMuYzogcmVtb3ZlZCAyIGluc3RhYmlsaXR5IHdhcm5pbmdzIGZyb20gZnVuY3Rpb24KLQkgIGRvY3VtZW50YXRpb24KLQkqIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaDogY2hhbmdlZCB3YXJuaW5nIGFib3V0IEFQSSBzdGFiaWxpdHkKLQkqIHhtbHJlZ2V4cC5jOiB0cnlpbmcgdG8gaW1wcm92ZSBydW50aW1lIGV4ZWN1dGlvbiBvZiBub24tZGV0ZXJtaW5pc3RpYwotCSAgcmVnZXhwcyBhbmQgYXV0b21hdGEuIE5vdCBmdWxseSBmaW5pc2hlZCBidXQgc2hvdWxkIGJlIHdheSBiZXR0ZXIuCi0KLU1vbiBPY3QgMTcgMTY6MTI6MDIgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCi0JICB4bWxTY2hlbWFDb250ZW50TW9kZWxEdW1wKCkuIEFkZGVkIG91dHB1dCBvZiBsb2NhbCB0eXBlcwotCSAgaW4geG1sU2NoZW1hRWxlbWVudER1bXAoKS4gVGlueSBjb3NtZXRpY2FsIGNoYW5nZXMgdG8gdGhlCi0JICBkdW1wIG91dHB1dC4KLQotTW9uIE9jdCAxNyAxNDoyOTowOCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0cmVlLmMgcGF0dGVybi5jOiBTaWxlbmNlZCBpbnRlbCBjb21waWxlciB3YXJuaW5ncyAocmVwb3J0ZWQKLQkgIGJ5IEtqYXJ0YW4gTWFyYWFzLCBidWcgIzMxODUxNykuCi0JKiB4bWxzY2hlbWFzLmM6IFRoZSBhYm92ZSBjaGFuZ2VzIGluIHBhdHRlcm4uYyByZXZlYWxlZCBhbgotCSAgaW5jb25zaXN0ZW5jeSB3cnQgSURDczogd2Ugbm93IF9vbmx5XyBwb3AgWFBhdGggc3RhdGVzLCBpZgotCSAgd2UgcmVhbGx5IHB1c2hlZCB0aGVtIGJlZm9yZWhhbmQ7IHRoaXMgd2FzIHByZXZpb3VzbHkgbm90Ci0JICBjaGVja2VkIGZvciB0aGUgY2FzZSB3aGVuIHdlIGRpc2NvdmVyIGFuIGVsZW1lbnQgbm9kZSB0byBiZQotCSAgaW52YWxpZCB3cnQgdGhlIGNvbnRlbnQgbW9kZWwuCi0JICBGaXhlZCBzZWdmYXVsdCBpbiB4bWxTY2hlbWFHZXRFZmZlY3RpdmVWYWx1ZUNvbnN0cmFpbnQoKS4KLQotRnJpIE9jdCAxNCAxNjo0MDoxOCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy8qLmVycjogQWRhcHRlZCByZWdyZXNzaW9uIHRlc3QgcmVzdWx0cy4KLQotRnJpIE9jdCAxNCAxNjoyMToyMiBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBzb21lIGlkZW50aXR5LWNvbnN0cmFpbnQgaXNzdWVzOgotCSAgUmVzdHJ1Y3R1cmVkIElEQyBub2RlLXRhYmxlcwotCSAgQWxsb3dlZCBJRENzIHRvIHJlc29sdmUgYWxzbyB0byBub2RlcyBvZiBjb21wbGV4IHR5cGUgd2l0aAotCSAgc2ltcGxlIGNvbnRlbnQuCi0JICBBZGRlZCBjaGVjayBmb3Iga2V5cmVmcyB3aXRoIHJlZmVyZW5jZXMgdG8ga2V5cmVmcy4KLQkgIElEQyB0YXJnZXQtbm9kZXMgd2VyZSBpbnRlcmZlcnJpbmcgd2l0aCBJREMgbm9kZS10YWJsZXMsCi0JICBzaW5jZSB0aGV5IHVzZWQgb25lIGxpc3Qgb2YgZW50cmllcyBvbmx5LiBJIHNlcGFyYXRlZCB0aGlzCi0JICBvbmUgYmlnIGxpc3QgaW50byAzIGxpc3RzOiAxIGZvciBJREMgbm9kZS10YWJsZSBlbnRyaWVzLAotCSAgMSBmb3IgX2R1cGxpY2F0ZXNfIG9mIElEQyBub2RlLXRhYmxlIGVudHJpZXMgYW5kIDEgZm9yCi0JICBJREMgdGFyZ2V0LW5vZGVzLiBNb3JlIGNvZGUsIGJ1dCBjbGVhbmVyIGFuZCBpdCB3b3JrcyBhdCBsYXN0LgotCSAgS2V5cmVmcyB3aWxsIGZhaWwgdG8gcmVzb2x2ZSB0byBkdXBsaWNhdGUga2V5L3VuaXF1ZSBlbnRyaWVzLgotCSAgSSB0aG91Z2h0IHRoaXMgd2FzIGFscmVhZHkgd29ya2luZyB0aGlzIHdheSwgYnV0IGl0IGRpZG4ndC4KLQkgIFRoZSB3b3JkaW5nIG9mIHRoZSBkZWZpbml0aW9uIGZvciBbbm9kZSB0YWJsZV0gaW4gdGhlIHNwZWMKLQkgIGNhbiBsZWFkIHRvIGEgc2NlbmFyaW8sIHdoZXJlIGtleXJlZnMgcmVzb2x2ZSBwZXJmZWN0bHksIGV2ZW4KLQkgIGlmIHRoZSByZWxldmFudCBrZXktc2VxdWVuY2VzIG9mIHRoZSByZWZlcmVuY2VkIGtleS91bmlxdWUgaGF2ZQotCSAgZHVwbGljYXRlcyBpbiB0aGUgc3VidHJlZS4gQ3VycmVudGx5IG9ubHkgU2F4b24gOC41LjEgaXMKLQkgIGRpc3NhbGxvd2luZyByZXNvbHV0aW9uIHRvIGR1cGxpY2F0ZSBlbnRyaWVzIGNvcnJlY3RseSAtIHdlCi0JICB3aWxsIGZvbGxvdyBTYXhvbiBoZXJlLgotCSAgUmVtb3ZlZCBzb21lIGludGVsIGNvbXBpbGVyIHdhcm5pbmdzIChyZXBvcnRlZCBieQotCSAgS2phcnRhbiBNYXJhYXMsIGJ1ZyAjMzE4NTE3KS4KLQkqIHBhdHRlcm4uYzogRml4ZWQgYW4gSURDLVhQYXRoIHByb2JsZW0gd2hlbiByZXNvbHZpbmcgdG8KLQkgIGF0dHJpYnV0ZXMuCSAgCi0KLU1vbiBPY3QgMTQgMDE6MTU6MTQgQ0VTVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0JKiBuYW5vaHR0cC5jIGluY2x1ZGUvd3NvY2tjb21wYXQuaDogYXBwbGllZCBwYXRjaCBmcm9tIEtvbGphIE5vd2FrIAotCSAgdG8gdXNlIGdldGFkZHJpbmZvKCkgaWYgc3VwcG9ydGVkIGluIFdpbmRvd3MgYnVpbGQgKGJ1ZyMgMzE3NDMxKS4KLQotTW9uIE9jdCAxMCAxNTozMzo0OCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy8qOiBBZGFwdGVkIHJlZ3Jlc3Npb24gdGVzdCByZXN1bHRzLgotCi1Nb24gT2N0IDEwIDE1OjEyOjQzIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IEluaXRpYWwgaW1wbGVtZW50YXRpb24gZm9yCi0JICByZWRlZmluaXRpb25zOyB0aGlzIHN0aWxsIG1pc3NlcyBjaGVja3MgZm9yIHJlc3RyaWN0aW9ucwotCSAgb2YgdGhlIGNvbnRlbnQgbW9kZWwgb2YgY29tcGxleCB0eXBlcy4KLQkgIEZpeGVkIGRlZmF1bHQvZml4ZWQgdmFsdWVzIGZvciBhdHRyaWJ1dGVzIChsb29rcyBsaWtlIHRoZXkKLQkgIGRpZCBub3Qgd29yayBpbiB0aGUgbGFzdCAgcmVsZWFzZXMpLgotCSAgQ29tcGxldGVkIGNvbnN0cmFpbnRzIGZvciBhdHRyaWJ1dGUgdXNlcy4KLQkgIFNlcGVyYXRlZCBhdHRyaWJ1dGUgZGVyaXZhdGlvbiBmcm9tIGF0dHJpYnV0ZSBjb25zdHJhaW50cy4KLQkgIENvbXBsZXRlZCBjb25zdHJhaW50cyBmb3IgYXR0cmlidXRlIGdyb3VwIGRlZmluaXRpb25zLgotCSAgRGlzYWxsb3dpbmcgPGltcG9ydD5zIG9mIHNjaGVtYXMgaW4gbm8gdGFyZ2V0IG5hbWVzcGFjZSBpZiB0aGUKLQkgIGltcG9ydGluZyBzY2hlbWEgaXMgYSBjaGFtZWxlb24gc2NoZW1hLiBUaGlzIGNvbnRyYWRpY3RzCi0JICB0aGUgd2F5IFNheG9uLCBYZXJjZXMtSiwgWFNWIGFuZCBJQk0ncyBTUUMgd29ya3MsIGJ1dCB0aGUKLQkgIFczQyBYTUwgU2NoZW1hIFdHLCB0aGlua3MgaXQgaXMgY29ycmVjdCB0byBkaXNzYWxvdyBzdWNoCi0JICBpbXBvcnRzLgotCSAgQWRkZWQgY29zLWFsbC1saW1pdGVkIGNvbnN0cmFpbnRzLgotCSAgUmVzdHJ1Y3R1cmVkIHJlZmVyZW5jZSByZXNvbHV0aW9uIHRvIG1vZGVsIGdyb3VwcyBhbmQgZWxlbWVudAotCSAgZGVjbGFyYXRpb25zLgotCSAgTWlzYyBjbGVhbnVwLgotCi1GcmkgT2N0ICA3IDA0OjM0OjEyIENFU1QgMjAwNSBSb2IgUmljaGFyZHMgPHJyaWNoYXJkc0BjdGluZHVzdHJpZXMubmV0PgotCi0JKiBzY2hlbWF0cm9uLmMgeG1scmVnZXhwLmM6IHJlbW92ZSB3YXJuaW5ncyB1bmRlciBXaW5kb3dzLgotCi1XZWQgU2VwIDI4IDIzOjQyOjE0IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gTWFzc2ltbyBNb3JhcmEgZml4aW5nIGJ1ZyAjMzE3NDQ3Ci0JICBhYm91dCByaXNrIG9mIGludmFsaWQgd3JpdGUgaW4geG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMKLQotVHVlIFNlcCAyNyAxMToyMDo1NyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlcnJvci5jOiBBZHJpYW4gTW91YXQgcG9pbnRlZCBvdXQgcmVkdW5kYW5jaWVzIGluIHhtbFJlcG9ydEVycm9yKCkKLQotTW9uIFNlcCAyNiAxOToxODoyNCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogc2VlbXMgYSB0ZXN0IHRvIGF2b2lkIGR1cGxpY2F0ZSB0cmFuc2l0aW9uIGlzIAotCSAgcmVhbGx5IG5lZWRlZCBhdCBhbGwgdGltZXMuIEx1a2EgUG9yIGdhdmUgYW4gZXhhbXBsZSBoaXR0aW5nCi0JICB0aGlzLiBDaGFuZ2VkIGJhY2sgdGhlIGludGVybmFsIEFQSS4KLQotVGh1IFNlcCAyMiAxMzoxNDowNyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogZml4aW5nIGxlYWsgaW4geG1sVGV4dFJlYWRlclJlYWRTdHJpbmcoKSAjMzE2OTI0Ci0KLVRodSBTZXAgMTUgMTY6MTI6NDQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmM6IG1vcmUgZml4ZXMgdG8gdGhlIGJlaGF2aW91ciBvZiB4bWxCdWlsZFJlbGF0aXZlVVJJCi0KLVRodSBTZXAgMTUgMTU6MDg6MjEgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGRldGVjdCBjb21iaW5hdG9yeSBleHBsb3Npb24gYW5kIHJldHVybiB3aXRoCi0JICBhIHJ1bnRpbWUgZXJyb3IgaW4gdGhvc2UgY2FzZSwgYy5mLiAjMzE2MzM4IHRob3VnaCBtYXliZSB3ZQotCSAgc2hvdWxkIG5vdCBzZWUgc3VjaCBhbiBleHBsb3Npb24gd2l0aCB0aGF0IHNwZWNpZmljIHJlZ2V4cCwKLQkgIG1vcmUgY2hlY2tpbmcgbmVlZHMgdG8gYmUgZG9uZS4KLQotV2VkIFNlcCAxNCAxOTo1MjoxOCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmg6IEFkZGVkIHNvbWUgY29tbWVudHMgZm9yIHRoZQotCSAgc3RydWN0IGZpZWxkcy4KLQotV2VkIFNlcCAxNCAxMzoyNDoyNyBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdXJpLmM6IGZpeGVkIHByb2JsZW0gd2hlbiB4bWxCdWlsZFJlbGF0aXZlVVJJIHdhcyBnaXZlbiBhCi0JICBibGFuayBwYXRoIChidWcgMzE2MjI0KQotCi1Nb24gU2VwIDEyIDIzOjQxOjQwIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5FV1MgY29uZmlndXJlLmluIGRvYy8vKjogcmVsZWFzZSBvZiAyLjYuMjIgdXBkYXRlZCBkb2MgYW5kCi0JICByZWJ1aWxkLgotCSogeG1sc2F2ZS5jIGluY2x1ZGUvbGlieG1sL3htbHNhdmUuaDogYWRkZWQgWE1MX1NBVkVfTk9fWEhUTUwKLQkgIHhtbFNhdmVPcHRpb24KLQkqIHhtbHNjaGVtYXMuYzogbWlub3IgY2xlYW51cHMKLQotTW9uIFNlcCAxMiAyMTo0Mjo0NyBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCQotCSogdGVzdC9zY2hlbWFzL2ltcG9ydDFfMC54c2Q6IEFuZCBhZGFwdGluZyBhbm90aGVyIG9uZS4KLQotTW9uIFNlcCAxMiAyMToyOTozNSBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy9kZXJpdmF0aW9uLW9rLWV4dGVuc2lvbl8wXzA6IEFkYXB0ZWQgcmVzdWx0LgotCi1Nb24gU2VwIDEyIDIxOjIwOjQxIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHJlc3VsdC9zY2hlbWFzL2FsbHNnXzBfMy5lcnIgcmVzdWx0L3NjaGVtYXMvYWxsc2dfMF80LmVycgotCSAgcmVzdWx0L3NjaGVtYXMvY2hhbmdlbG9nMDkzXzFfMC5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2Rlcml2YXRpb24tb2stZXh0ZW5zaW9uXzBfMC5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2ltcG9ydDFfMF8wLmVycgotCSAgcmVzdWx0L3NjaGVtYXMvZGVyaXZhdGlvbi1vay1yZXN0cmljdGlvbi0yLTEtMV8wXzAuZXJyOgotCSAgQWRhcHRlZCByZWdyZXNzaW9uIHJlc3VsdHMuCi0KLU1vbiBTZXAgMTIgMjE6MDA6NTMgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogQ29tcGxldGlvbiBvZiB0aGUgc2NoZW1hIGdyYXBoLgotCSAgQ2VudHJhbGlzYXRpb24sIG1vcmUgcm9idXN0bmVzcyBvZiB0aGUgc2NoZW1hIGRvY3VtZW50Ci0JICBhcXVpc2l0aW9uIHN0b3J5LiBDZW50cmFsaXNlZCBhbmQgcmVzdHJ1Y3R1cmVkIGNvbXBvbmVudCBmaXh1cC4KLQkgIEZpeGVkIGF0dHJpYnV0ZSBkZXJpdmF0aW9uIHdoZW4gJ3Byb2hpYml0aW5nJyBhdHRyaWJ1dGUgdXNlcy4KLQkgIEFkZGVkIHdhcm5pbmdzOiB3aGVuIHNjaGVtYSBkb2N1bWVudHMgY2Fubm90IGJlIGxvY2FsaXplZAotCSAgZHVyaW5nIGltcG9ydHM7IHdoZW4gd2UgZ2V0IGR1cGxpY2F0ZSBhbmQgcG9pbnRsZXNzIGF0dHJpYnV0ZQotCSAgcHJvaGliaXRpb25zLiBDaGFuZ2VkIGVycm9yIHJlcG9ydHMgZm9yIElEQ3MgdG8gcmVwb3J0Ci0JICB0aGUgcmVsZXZhbnQgSURDIGRlc2lnbmF0aW9uIGFzIHdlbGwgKHJlcXVlc3RlZCBieSBHVVkgRmFicmljZSkuCi0JICBNaXNjIGNvZGUtY2xlYW51cC4KLQotTW9uIFNlcCAxMiAxNjowMjoxMiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzYXZlLmM6IGFwcGxpZWQgc2Vjb25kIHBhdGNoIGZyb20gRGF2aWQgTWFkb3JlIHRvIGJlIGxlc3MgaW50cnVzaXZlCi0JICB3aGVuIGhhbmRsaW5nIHNjcmlwdHMgYW5kIHN0eWxlIGVsZW1lbnRzIGluIFhIVE1MMSBzaG91bGQgZml4ICMzMTYwNDEKLQkqIHRlc3QveGh0bWwxIHJlc3VsdC8veGh0bWwxXCo6IHVwZGF0ZWQgdGhlIHRlc3QgYWNjb3JkaW5nbHkKLQotTW9uIFNlcCAxMiAxNTowOTowOSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbiBkb2MvZGV2aGVscC8qOiBmaW5pc2hlZCB0aGUgaW50ZWdyYXRpb24gd2l0aAotCSAgZGV2aGVscCwgY29tcGxldGluZyB0aGUgaW5kZXggYW5kIGluc2VydGVkIGludG8gdGhlIGd0ay1kb2MKLQkgIGRhdGFiYXNlIGF0ICJtYWtlIGluc3RhbGwiIHN0YWdlCi0KLU1vbiBTZXAgMTIgMTQ6MTQ6MTIgQ0VTVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3htbHNhdmUuaCB4bWxzYXZlLmM6IGFkZCBYTUxfU0FWRV9OT19FTVBUWSBzYXZlIG9wdGlvbgotCSAgYW5kIHVzZSBvcHRpb24gZnJvbSB4bWxTYXZlQ3R4dFB0ciByYXRoZXIgdGhhbiBnbG9iYWwgZHVyaW5nIG91dHB1dC4KLQkqIHhtbHNhdmUuYzogZml4IHNvbWUgb3V0cHV0IGZvcm1hdHRpbmcgZm9yIG1ldGEgZWxlbWVudCB1bmRlciBYSFRNTC4KLQotTW9uIFNlcCAxMiAxMToxMjowMyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBwYXJzZXIuYyB4bWxsaW50LmM6IGRhbW4gWE1MX0ZFQVRVUkVfVU5JQ09ERQotCSAgY2xhc2hlcyB3aXRoIEV4cGF0IGhlYWRlcnMgcmVuYW1lIHRvIFhNTF9XSVRIXyB0byBmaXggYnVnICMzMTYwNTMuIAotCSogZG9jL01ha2VmaWxlLmFtOiBidWlsZCBkZXZoZWxwIGJlZm9yZSB0aGUgZXhhbXBsZXMuCi0JKiBkb2MvKjogcmVnZW5lcmF0ZWQgdGhlIEFQSQotCi1Nb24gU2VwIDEyIDAyOjAzOjEyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNhdmUuYzogZml4IGJ1ZyAjMzE2MDM0LCB3aGVyZSB4bWxFbGVtRHVtcCgpIGNhbiBjcmFzaCBpZiAKLQkgIGdpdmVuIGEgZG9jdW1lbnQgcG9pbnRlciBpbnN0ZWFkIG9mIGFuIGVsZW1lbnQKLQotTW9uIFNlcCAxMiAwMToyNjoxNiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvZGV2aGVscC9kZXZoZWxwLnhzbDogaW1wcm92ZW1lbnRzIG9uIHRoZSBodG1sIGdlbmVyYXRpb24sCi0JICBzaG91bGQgYmUgY29tcGxldGUgd2l0aCBuYXZpZ2F0aW9uLCB3aGF0IGlzIGxlZnQgZG9uZSBpcyBnbHVlaW5nCi0KLU1vbiBTZXAgMTIgMDA6MDM6MjcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy9NYWtlZmlsZS5hbSBkb2MvYXBpYnVpbGQucHkgZG9jL2xpYnhtbDItYXBpLnhtbAotCSAgZG9jL2RldmhlbHAvKjogc3RhcnRlZCB3b3JrIG5lZWRlZCB0byBnZW5lcmF0ZSBkZXZoZWxwIGNvbnRlbnQsCi0JICBub3QgdG9vIGhhcmQgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGZvcm1hdCBhbmQgZXh0cmFjdG9yLgotCi1GcmkgU2VwICA5IDEyOjU2OjE5IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhlcyBidWcgIzMxNTYxNyB3aGVuIHVzaW5nIHB1c2ggQ0RBVEEgaW4gc29tZSBjYXNlcy4KLQotVGh1IFNlcCAgOCAyMzozOTo0MSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIHRvIGNvbXBpbGUgd2l0aG91dCBzY2hlbWF0cm9uCi0KLVdlZCBTZXAgIDcgMDA6MTY6MjcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYzogcGF0Y2ggZnJvbSBPbGVnIFBhcmFzY2hlbmtvIHRvIGZpeCB4bWxEZWJ1Z0R1bXBOb2RlKCkKLQkgIHdoZW4gaGFuZGxlZCBhIG5hbWVzcGFjZSBub2RlLgotCi1TdW4gU2VwICA0IDIzOjM2OjQ1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5FV1MgZWxmZ2NjaGFjay5oIHRlc3RhcGkuYyBkb2MvKjogdXBkYXRlZCB0aGUgZG9jcyBhbmQgcmVidWlsZAotCSAgcmVsZWFzaW5nIDIuNi4yMQotCSogaW5jbHVkZS9saWJ4bWwvdGhyZWFkcy5oIHRocmVhZHMuYzogcmVtb3ZlZCB4bWxJc1RocmVhZHNFbmFibGVkKCkKLQkqIHRocmVhZHMuYyBpbmNsdWRlL2xpYnhtbC90aHJlYWRzLmggeG1sbGludC5jOiBhZGRlZCB0aGUgbW9yZQotCSAgZ2VuZXJpYyB4bWxIYXNGZWF0dXJlKCkgYXMgc3VnZ2VzdGVkIGJ5IEJqb3JuIFJlZXNlLCB4bWxsaW50IHVzZXMgaXQuCi0KLVN1biBTZXAgIDQgMjI6NDU6NDkgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy8qIGNvbmZpZ3VyZS5pbjogcHJlcGFyZSBmb3IgcmVsZWFzZQotCSogeHBhdGguYzogd29yayBmb3IgIzMwMzI4OSwgZml4IGEgZm9ybWF0dGluZyBidWcgZm9yIE1JTl9JTlQKLQotU3VuIFNlcCAgNCAxNTo0ODo1NyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IHJlYWwgZml4IGZvciAjMzE0ODgxIGFuZCAjMzE0NzU5IGlzIHdhcyBhIGJpdCBtb3JlIGNvbXBsZXgKLQkgIHRoYW4gaW5pdGlhbGx5IGV4cGVjdGVkIGFzIGN0eHQtPmVycm9yID09IE5VTEwgaGFkIGJlaGF2aW91ciBzaWRlCi0JICBlZmZlY3RzIGF0IHRoZSBjb21waWxhdGlvbiBsZXZlbCBpdHNlbGYuCi0KLVN1biBTZXAgIDQgMTQ6MDE6MDAgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGF0dGVybi5jIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwvcGF0dGVybi5oOiBmaXhpbmcgeWV0IGFub3RoZXIKLQkgIHBhdHRlcm4gaW5kdWNlZCBYUGF0aCBidWcgIzMxNDI4MgotCSogcmVsYXhuZy5jOiByZXZlcnRlZCBiYWNrIGxhc3QgY2hhbmdlIGl0IHdhcyBzZXJpb3VzbHkgYnJva2VuCi0KLVNhdCBTZXAgIDMgMTY6NTE6NTUgQ0VTVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHhtbHNhdmUuYzogY2hlY2sgZm9yIE5VTEwgdG8gcHJldmVudCBjcmFzaCB3aXRoIG1ldGEgZWxlbWVudHMKLQotU2F0IFNlcCAgMyAxNjoyNjo1NSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IHN0cnVjdHVyZWQgZXJyb3IgcmVwb3J0aW5nIHByb2JsZW0gd2l0aCBSZWxheC1ORwotCSAgc2hvdWxkIGZpeCAjMzE0ODgxIGFuZCAjMzE0NzU5Ci0KLVNhdCBTZXAgIDMgMTU6NDI6MjkgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGF0dGVybi5jOiBmaXhlcyBhIHBvcnRhYmlsaXR5IHByb2JsZW0gcmFpc2VkIGJ5IEMzNzAgb24gWi9PUwotCi1TYXQgU2VwICAzIDE1OjI2OjMxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWDIuYyB0cmVlLmMgdmFsaWQuYzogZml4aW5nIGEgbnVtYmVyIG9mIGlzc3VlcyByYWlzZWQgYnkgeG1sOmlkCi0JICBidXQgbW9yZSBnZW5lcmFsbHkgcmVsYXRlZCB0byBhdHRyaWJ1dGVzIGFuZCBJRCBoYW5kbGluZywgZml4ZXMKLQkgICMzMTQzNTggYW1vbmcgb3RoZXIgdGhpbmdzCi0KLUZyaSBTZXAgIDIgMTQ6MjY6NDMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYyBwYXJzZXJJbnRlcm5hbHMuYzogYXZvaWQgcGFzc2luZyBhIGNoYXJbXSBhcyBzbnByaW50ZgotCSAgZmlyc3QgYXJndW1lbnQuCi0JKiB0aHJlYWRzLmMgaW5jbHVkZS9saWJ4bWwvdGhyZWFkcy5oOiBpbXBsZW1lbnRlZCB4bWxJc1RocmVhZHNFbmFibGVkKCkKLQkgIGJhc2VkIG9uIEFuZHJldyBXLiBOb3NlbmtvIGlkZWEuCi0JKiBkb2MvKiBlbGZnY2NoYWNrLmg6IHJlZ2VuZXJhdGVkIHRoZSBBUEkKLQotVGh1IFNlcCAgMSAxNDo0NDo0MiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHRoZSB1c2Ugb2YgQU1fUEFUSF9QWVRIT04gaXMgbm90IHBvcnRhYmxlIGVub3VnaAotCSAgcmV2ZXJ0aW5nIGJhY2sgdG8gQU1fUEFUSF9QUk9HCi0KLVRodSBTZXAgIDEgMTE6NDI6MzkgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBBcHBsaWVkIHRoZSBsYXN0IHBhdGNoIGZyb20gR2FyeSBDb2FkeSBmb3IgIzMwNDYzNwotCSAgY2hhbmdpbmcgdGhlIGJlaGF2aW91ciB3aGVuIHRleHQgbm9kZXMgYXJlIGZvdW5kIGluIGJvZHkKLQkqIHJlc3VsdC9IVE1MLyo6IHRoaXMgY2hhbmdlcyB0aGUgb3V0cHV0IG9mIHNvbWUgdGVzdHMKLQotVGh1IFNlcCAgMSAxMToyMjozNyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvZG93bmxvYWRzLmh0bWwgZG9jL3htbC5odG1sOiBhZGRpbmcgcmVmZXJlbmNlIHRvIEJ1bGwgQUlYIHJwbXMKLQkgIGMuZi4gIzE2MDU5OAotCi1XZWQgQXVnIDMxIDExOjM5OjAyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbDItY29uZmlnLmluOiByZW1vdmVkIHRoZSBvYnNvbGV0ZSAtLWxpYnRvb2wtbGlicyBvcHRpb24sIGMuZi4KLQkgIGJ1ZyAjMzE0ODUzCi0KLUZyaSBBdWcgMjYgMTc6MzM6MjYgQ0VTVCAyMDA1IFJvYiBSaWNoYXJkcyA8cnJpY2hhcmRzQGN0aW5kdXN0cmllcy5uZXQ+Ci0KLQkqIHhtbHNhdmUuYzogbW92ZSBoYW5kbGluZyBvZiBtZXRhIGVsZW1lbnQgZm9yIGh0dHAtZXF1aXYgaW4gWEhUTUwgZG9jcyAKLQkgIHRvIHNlcmlhbGl6YXRpb24gYW5kIG5vIGxvbmdlciBtb2RpZnkgaW50ZXJuYWwgdHJlZS4KLQotRnJpIEF1ZyAyNiAwMDo1MTo1OCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbjogdGhlIHByb2ZpbGluZyB1c3VhbGx5IGRvbid0IHdvcmssIGRpc2FibGVkCi0JKiBkb2MvKjogcmVidWlsdAotCi1UaHUgQXVnIDI1IDIzOjQ3OjU1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogdHJ5aW5nIHRvIGZpeCB0aGUgZmlyc3QgcGFydCBvZiAjMzEwMDMzIGJ5Ci0JICBkZXRlY3RpbmcgZ2NjIDw9IDMuMgotCi1UaHUgQXVnIDI1IDIyOjEzOjM3IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVycm9yLmM6IGZpeGVkIGJ1ZyAjMzEwMDMzLCB0aGUgVVJJIGV4dHJhY3Rpb24gY29kZSBnaXZlbiBhCi0JICBub2RlIGlzIGEgYml0IHR3aXN0ZWQgYW5kIGJyb2tlIGluIHRoZSBsYXN0IG1vbnRocy4KLQotVGh1IEF1ZyAyNSAxNjoxODoxNSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIHJlc3VsdC9YUGF0aC94cHRyL3N0cnJhbmdlMjogdW5pbml0aWFsaXplZCBmaWVsZCBhbmQKLQkgIGZpeCBvbiB0ZXN0LgotCi1UaHUgQXVnIDI1IDE2OjAzOjA1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRlYnVnWE1MLmM6IGNoYW5nZSB2ZXJib3NpdHkgZGVwZW5kaW5nIG9uIEFQSQotCSogcmVzdWx0L1hQYXRoL3Rlc3RzLyogcmVzdWx0L1hQYXRoL3hwdHIvKiByZXN1bHQveG1saWQvKjogZ2V0IGJhY2sKLQkgIHRvIHByZXZpb3VzIG91dHB1dHMKLQotVGh1IEF1ZyAyNSAxNToxNDo1NiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgcGFyc2VyLmMgU0FYMi5jIGRlYnVnWE1MLmMgdHJlZS5jIHZhbGlkLmMgeG1scmVhZGVyLmMKLQkgIHhtbGxpbnQuYyBpbmNsdWRlL2xpYnhtbC9IVE1McGFyc2VyLmggaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6Ci0JICBhZGRlZCBhIHBhcnNlciBYTUxfUEFSU0VfQ09NUEFDVCBvcHRpb24gdG8gYWxsb2NhdGUgc21hbGwgCi0JICB0ZXh0IG5vZGVzIChsZXNzIHRoYW4gOCBieXRlcyBvbiAzMmJpdHMsIGxlc3MgdGhhbiAxNmJ5dGVzIG9uIDY0Yml0cykKLQkgIGRpcmVjdGx5IHdpdGhpbiB0aGUgbm9kZSwgdmFyaW91cyBjaGFuZ2VzIHRvIGNvcGUgd2l0aCB0aGlzLgotCSogcmVzdWx0L1hQYXRoL3Rlc3RzLyogcmVzdWx0L1hQYXRoL3hwdHIvKiByZXN1bHQveG1saWQvKjogdGhpcyAKLQkgIHNsaWdodGx5IGNoYW5nZSB0aGUgb3V0cHV0Ci0KLVRodSBBdWcgMjUgMTI6MTY6MjYgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwYXRjaCBmcm9tIEFuZHJldyBXLiBOb3NlbmtvLCB1c2Ugc2UgJEdDQyA9ICd5ZXMnCi0JICBpbnN0ZWFkIG9mICRDQyA9ICdnY2MnIGJlY2F1c2UgR0NDIG1heSBoYXZlIGEgZGlmZmVyZW50IG5hbWUKLQotVGh1IEF1ZyAyNSAwMDoxODoyMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IGNoYW5nZXMgdGhlIHdheSB0aGUgcHl0aG9uIGJpbmFyeSBpcyBmb3VuZCwgc2hvdWxkCi0JICBhbHNvIGZpeCBidWcgIzMwODAwNAotCi1XZWQgQXVnIDI0IDE2OjQ0OjQxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmb3VuZCBhbm90aGVyIGJ1ZyB3aGlsZSBsb29raW5nIGF0ICMzMDk2MTYgb24gbWlzc2luZwotCSAgZW50aXRpZXMuCi0JKiByZXN1bHQvZW50Mi5zYXgqIHJlc3VsdC9lbnQ3LnNheCogcmVzdWx0L3htbDIuc2F4KjogdGhpcyBjaGFuZ2VkIHRoZQotCSAgU0FYIHN0cmVhbSBpbiBtaXNzaW5nIGNvbmRpdGlvbnMgZm9yIGEgZmV3IHRlc3RzCi0KLVdlZCBBdWcgMjQgMTY6MTk6MDAgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogYXBwbGllZCB0aGUgcGF0Y2ggc3VnZ2VzdGVkICMzMDk1NjUgd2hpY2ggY2FuIGF2b2lkCi0JICBsb29waW5nIGluIGVycm9yIGNvbmRpdGlvbnMuCi0KLVdlZCBBdWcgMjQgMTY6MDQ6MTcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jIHRyZWUuYzogbGluZSBudW1iZXJzIGFyZSBub3cgY2FycmllZCBieSBtb3N0IG5vZGVzLCBmaXhpbmcKLQkgIHhtbEdldExpbmVObygpIGMuZi4gYnVnICMzMDkyMDUKLQotV2VkIEF1ZyAyNCAxNDo0MzozNCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jIGVycm9yLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogZmluYWxseSBjb252ZXJ0ZWQKLQkgIHRoZSBlbmNvZGluZyBtb2R1bGUgdG8gdGhlIGNvbW1vbiBlcnJvciByZXBvcnRpbmcgbWVjaGFuaXNtCi0JKiBkb2MvKiBkb2MvaHRtbC9saWJ4bWwteG1sZXJyb3IuaHRtbDogcmVidWlsdAotCi1XZWQgQXVnIDI0IDExOjM1OjI2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHJlbW92ZWQgYSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGVycm9yCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5OiBmaXhlZCBhIGRlcHJlY2F0aW9uIHdhcm5pbmcKLQkqIHB5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHk6IHNpbGVudCB0aGUgZGFtbiB0ZXN0IHdoZW4gT2theSAhCi0KLVdlZCBBdWcgMjQgMDA6MTE6MTYgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jIGdsb2JhbHMuYyBydW50ZXN0LmMgdGVzdEMxNE4uYyB0ZXN0YXBpLmMgdHJlZS5jCi0JICBpbmNsdWRlL2xpYnhtbC9TQVgyLmggaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGZpeGVkIGNvbXBpbGF0aW9uCi0JICB3aGVuIGNvbmZpZ3VyZWQgLS13aXRob3V0LXNheDEgYW5kIG90aGVyIGNsZWFudXBzIGZpeGVzIGJ1ZyAjMTcyNjgzCi0JKiBkb2MvKiBlbGZnY2NoYWNrLmg6IHJlZ2VuZXJhdGVkCi0KLVR1ZSBBdWcgMjMgMjA6MDU6MDUgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1ZyAjMTcwNDg5IHJlcG9ydGVkIGJ5IEppcmthIEtvc2VrCi0JKiB0ZXN0L3ZhbGlkL29iamVkbmF2a2EueG1sIHRlc3QvdmFsaWQvZHRkcy9vYmplZG5hdmthLmR0ZAotCSAgcmVzdWx0L3ZhbGlkL29iamVkbmF2a2EqOiBhZGRlZCB0aGUgdGVzdCB0byB0aGUgcmVncmVzc2lvbiBzdWl0ZS4KLQotVHVlIEF1ZyAyMyAxODowNDowOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvSFRNTHBhcnNlci5oOiBhZGRlZCBhIHJlY292ZXJ5IG1vZGUKLQkgIGZvciB0aGUgSFRNTCBwYXJzZXIgYmFzZWQgb24gdGhlIHN1Z2dlc3Rpb25zIG9mIGJ1ZyAjMTY5ODM0IGJ5Ci0JICBQYXVsIExvYmVyZwotCi1UdWUgQXVnIDIzIDE1OjM4OjQ2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVsZmdjY2hhY2suaCB0ZXN0YXBpLmMgZG9jLyo6IHJlZ2VuZXJhdGVkCi0JKiBzY2hlbWF0cm9uLmM6IGZpeGVkIGEgY29tcGlsYXRpb24gcHJvYmxlbQotCSogeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IHNvbWUgY2xlYW51cHMgYW5kIG9uZSBidWcgZml4Ci0JKiByZXN1bHQvZXhwci9iYXNlOiBzbGlnaHRseSBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgQ29ucy4KLQotTW9uIEF1ZyAyMiAyMzoxOTo1MCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbGZnY2NoYWNrLmggdGVzdGFwaS5jIGRvYy8qOiByZXNjYW5uZWQgY29kZSBhbmQgcmVidWlsdAotCSogeG1scmVnZXhwLmM6IHNtYWxsIGNsZWFudXAKLQkqIGluY2x1ZGUvbGlieG1sL3NjaGVtYXRyb24uaCBpbmNsdWRlL2xpYnhtbC94bWxleHBvcnRzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbjogY2xlYW51cCBwcm9ibGVtcyBmcm9tIGNvZGUgc2Nhbm5lcgotCi1Nb24gQXVnIDIyIDE4OjAwOjE4IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gS3ViYSBOb3dha293c2tpIGZpeGluZyBidWcKLQkgICMzMTM5ODIKLQkqIHJlc3VsdC9zY2hlbWFzL2J1ZzMxMzk4MiogdGVzdC9zY2hlbWFzL2J1ZzMxMzk4Mio6IGFsc28gYWRkZWQKLQkgIHRoZSB0ZXN0IGNhc2UgdG8gdGhlIHJlZ3Jlc3Npb24gc3VpdGUuCi0KLU1vbiBBdWcgMjIgMTc6NTA6MjAgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdFJlZ2V4cC5jOiBwcmludGVkIHRoZSB3cm9uZyBzdHJpbmcKLQotTW9uIEF1ZyAyMiAxNjo0MjowNyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0UmVnZXhwLmMgeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGV4cG9ydGVkCi0JICB4bWxFeHBFeHBEZXJpdmUoKSwgYWRkZWQgaXQgdG8gdGhlIHRlc3RSZWdleHAgY29tbWFuZCBsaW5lIAotCSAgdG9vbCB3aGVuIHByb3ZpZGluZyBtdWx0aXBsZSBleHByZXNzaW9ucy4KLQotTW9uIEF1ZyAyMiAxNDo1NzoxMyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSByZXN1bHQvZXhwci9iYXNlIHRlc3QvZXhwci9iYXNlOiBhZGRlZCB0aGUgZmlyc3QKLQkgIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBzZXQgZm9yIHRoZSBuZXcgZXhwcmVzc2lvbiBzdXBwb3J0Ci0KLU1vbiBBdWcgMjIgMTM6NDk6MTggQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZml4ZWQgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZQotCSogeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGV4dGVuZGVkIHRoZSBBUEkgdG8KLQkgIGFkZCB0aGUgcGFyc2VyLCBzZXJpYWxpemVyIGFuZCBzb21lIGRlYnVnZ2luZwotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBtYWRlIHRoZSBuZXcgc3VwcG9ydCBjb21waWxlZAotCSAgYnkgZGVmYXVsdCBpZiBTY2hlbWFzIGlzIGluY2x1ZGVkCi0JKiB0ZXN0UmVnZXhwLmM6IGNsZWFudXAgYW5kIGludGVncmF0aW9uIG9mIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQotCSAgbmV3IGNvZGUgd2l0aCBhIHNwZWNpYWwgc3dpdGNoCi0JKiB4bWxsaW50LmM6IHNob3cgdXAgRXhwciBpbiAtLXZlcnNpb24gaWYgY29tcGlsZWQgaW4KLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogbW92ZWQgdGhlIHhtbEJ1ZmZlciBkZWZpbml0aW9uIHVwCi0KLU1vbiBBdWcgMjIgMTI6MTE6MTAgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBTb21lIHByZXBhcmF0aW9uIGZvciB0aGUgY3JlYXRpb24gb2YgYSBncmFwaAotCSAgb2YgaW1wb3J0ZWQvaW5jbHVkZWQvcmVkZWZpbmVkIHNjaGVtYXM7IHRoaXMgaXMgbmVlZGVkIGZvcgotCSAgYXQgbGVhc3QgdGhlIHJlZGVmaW5pdGlvbnMuCi0JICBDZW50cmFsaXplZCB0aGUgY3JlYXRpb24gb2YgdGhlIHBhcnNlciBjb250ZXh0IGluIG9uZSBmdW5jdGlvbi4KLQotTW9uIEF1ZyAyMiAwMjoxOTozMyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYyBpbmNsdWRlL2xpYnhtbC94bWxyZWdleHAuaDogcHVzaGluZyB0aGUgZm9ybWFsIGV4cHJlc3Npb24KLQkgIGhhbmRsaW5nIGNvZGUgdG8gaGF2ZSBpdCBpbiBDVnMgZnJvbSBub3cuIE5vdCBwbHVnZ2VkLCBhbmQgbWlzc2VzIAotCSAgQVBJcyBpdCdzIG5vdCBjb21waWxlZCBpbiB5ZXQuCi0KLVNhdCBBdWcgMjAgMjM6MTM6MjcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGFwcGxpZWQgYW5vdGhlciBwYXRjaCBmcm9tIFJvYiBSaWNoYXJkcyB0byBmaXgKLQkgIHhtbFRleHRSZWFkZXJHZXRBdHRyaWJ1dGVOcyBhbmQgeG1sVGV4dFJlYWRlck1vdmVUb0F0dHJpYnV0ZU5zCi0KLVdlZCBBdWcgMTcgMDk6MDY6MzMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBSb2IgUmljaGFyZHMgdG8gZml4IAotCSAgeG1sVGV4dFJlYWRlckdldEF0dHJpYnV0ZSBiZWhhdmlvdXIgd2l0aCBuYW1lc3BhY2UgZGVjbGFyYXRpb25zCi0KLUZyaSBBdWcgMTIgMTQ6MTI6NTYgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6Ci0JICBDaGFuZ2VkIG91dHB1dCBmb3Iga2V5cmVmLW1hdGNoIGVycm9yczsgdGhlIHRhcmdldC1ub2RlIHdpbGwKLQkgIGJlIG5vdyByZXBvcnRlZCByYXRoZXIgdGhhbiB0aGUgc2NvcGUtbm9kZSBvZiB0aGUga2V5cmVmCi0JICBkZWZpbml0aW9uIC0gYWxsb3dpbmcgZWFzaWVyIGNoYXNpbmcgb2YgaW5zdGFuY2UgZXJyb3JzLgotCSAgVGhpcyB3YXMgcmVwb3J0ZWQgYnkgR3V5IEZhYnJpY2UgdG8gdGhlIG1haWxpbmcgbGlzdC4KLQkgIFNvbWUgaW5pdGlhbCBwYXJzaW5nIGNvZGUgZm9yIHNjaGVtYSByZWRlZmluaXRpb25zLgotCSogcmVzdWx0L3NjaGVtYXMvYnVnMzAzNTY2XzFfMS5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2J1ZzMxMjk1N18xXzAuZXJyOiBBZGFwdGVkIHRlc3QgcmVzdWx0cyBkdWUKLQkgIHRvIHRoZSBrZXlyZWYgY2hhbmdlcy4KLQotRnJpIEF1ZyAxMiAxMjoxNzo1MiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gRGVyZWsgUG9vbiBmaXhpbmcgYnVnICMzMTA2OTIKLQotV2VkIEF1ZyAxMCAyMzozOTowMiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGZpeCBmb3IgYnVnICMzMTI5NDUgYXMgcG9pbnRlZCBieSBEZWFuIEhpbGwsIHRoZQotCSAgY29udGV4dCB0eXBlIHdhcyBub3QgYWx3YXlzIHByb3Blcmx5IGluaXRpYWxpemVkLiAKLQotV2VkIEF1ZyAxMCAxODoyMTo0MSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGZpeGVkIGJ1ZyAjMzA3Mzc3IGFib3V0IHZhbGlkYXRpb24gb2YgY2hvaWNlcyBpbgotCSAgbGlzdCB2YWx1ZXMuCi0JKiB0ZXN0L3JlbGF4bmcvMzA3Mzc3KiByZXN1bHQvcmVsYXhuZy8zMDczNzcqIE1ha2VmaWxlLmFtIHJ1bnRlc3QuYzoKLQkgIGFkZGVkIGV4YW1wbGVzIHRvIHRoZSByZWdyZXNzaW9uIHRlc3RzLCBwcm9ibGVtIGlzIHRoYXQgc3RyZWFtaW5nCi0JICB2ZXJzaW9uIGdpdmVzIHNsaWdodGx5IG1vcmUgaW5mb3JtYXRpb25zLgotCi1XZWQgQXVnIDEwIDE1OjI1OjUzIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmM6IGZpeGVkIGJ1ZyAjMzAyMzAyLCBuYXN0eSBidXQgdGhlIGZpeCBpcyByYXRoZXIgc2ltcGxlLgotCi1XZWQgQXVnIDEwIDExOjU5OjQ2IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHJlc3VsdC9zY2hlbWFzL2FueTZfMV8wKjogQWRkZWQgbWlzc2luZyB0ZXN0IHJlc3VsdHMuCi0KLVR1ZSBBdWcgIDkgMjM6Mzc6MjIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGZpeGVkIGEgZGV0ZXJtaW5pc20gZGV0ZWN0aW9uIHByb2JsZW0gZXhwb3NlZCBieQotCSAgIyNvdGhlciB0ZXN0cyBjb21taXRlZCBieSBLYXNpbWllciwgYWxzbyBhZGRlZCBhIHNtYWxsIHNwZWVkdXAKLQkgIG9mIGRldGVybWluaXNtIGRldGVjdGlvbi4KLQkqIHRlc3QvcmVzdWx0cy9hbnk2XzJfMCogYW55OF8xXzAqIGFueTdfMV8yKiBhbnk3XzJfMio6IGFkZGVkIAotCSAgdGhlIHJlc3VsdHMgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdHMgbm93Ci0KLVR1ZSBBdWcgIDkgMTU6NTQ6MDkgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdGVzdC9zY2hlbWFzL2FueTdfMi54bWwgdGVzdC9zY2hlbWFzL2FueTZfMi54c2QKLQkgIHRlc3Qvc2NoZW1hcy9hbnk4XzEueHNkIHRlc3Qvc2NoZW1hcy9hbnk4XzAueG1sOgotCSAgQWRkZWQgc29tZSBtb3JlIHRlc3RzIGZvciBlbGVtZW50IHdpbGRjYXJkcy4KLQotVHVlIEF1ZyAgOSAxNDoyMjo0NyBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkICMzMTI5NTcgcmVwb3J0ZWQgYnkgQ2Fyb2wgSHVudGVyOgotCSAgc3RyZWFtaW5nIFhQYXRoIHN0YXRlcyB3ZXJlIG5vdCBwb3BwZWQgaW4gZXZlcnkgY2FzZSwKLQkgIHRodXMgZmFpbGVkIHRvIHJlc29sdmUgY29ycmVjdGx5IGZvciBzdWJzZXF1ZW50IGlucHV0LgotCSogdGVzdC9zY2hlbWFzL2J1ZzMxMjk1NyogcmVzdWx0L3NjaGVtYXMvYnVnMzEyOTU3KjoKLQkgIEFkZGVkIHRoZSB0ZXN0IHN1Ym1pdHRlZCBieSBDYXJvbCBIdW50ZXIuCi0KLVR1ZSBBdWcgIDkgMTM6MDc6MjcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmMgeG1sc2NoZW1hcy5jOiB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSByZW1haW5pbmcKLQkgICMjb3RoZXIgaXNzdWVzCi0JKiByZXN1bHQvc2NoZW1hcy9hbnk3KiB0ZXN0L3NjaGVtYXMvYW55NzogY29tcGxldGVkIHRoZSB0ZXN0cwotCSAgYW5kIGFkZGVkIHRoZSByZXN1bHRzCi0JKiByZXN1bHQvc2NoZW1hcy9hbnkzXzBfMC5lcnIgcmVzdWx0L3NjaGVtYXMvYW55NV8wXzAuZXJyCi0JICByZXN1bHQvc2NoZW1hcy9hbnk1XzFfMC5lcnI6IHRoaXMgc2xpZ2h0bHkgY2huYWdlcyB0aGUgb3V0cHV0Ci0JICBmcm9tIDMgZXhpc3RpbmcgdGVzdHMKLQotTW9uIEF1ZyAgOCAyMjozMzowOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vZnRwLmMgbmFub2h0dHAuYyB4bWxzY2hlbWFzdHlwZXMuYzogYXBwbGllZCBwYXRjaCBmcm9tIAotCSAgTWFyY3VzIEJvZXJnZXIgdG8gcmVtb3ZlIHdhcm5pbmdzIG9uIFdpbmRvd3MuCi0KLU1vbiBBdWcgIDggMTY6NDM6MDQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jIGluY2x1ZGUvbGlieG1sL3htbHNhdmUuaDogZml4ZWQgIzE0NTA5MiBieSBhZGRpbmcgCi0JICBhbiB4bWxTYXZlT3B0aW9uIHRvIG9taXQgWE1MIGRlY2xhcmF0aW9uCi0KLU1vbiBBdWcgIDggMTU6NDQ6NTQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogZml4ZWQgYnVnICMzMTAzMzMgd2l0aCBhIHBhdGNoIGNsb3NlIHRvIHRoZSBwcm92aWRlZAotCSAgcGF0Y2ggZm9yIEhUTUwgVVRGLTggc2VyaWFsaXphdGlvbgotCSogcmVzdWx0L0hUTUwvc2NyaXB0Mi5odG1sOiB0aGlzIGNoYW5nZWQgdGhlIG91dHB1dCBvZiB0aGF0IHRlc3QKLQotTW9uIEF1ZyAgOCAxNTowMTo1MSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogZml4ZWQgYnVnICMzMTAyNjQsIGJhc2ljYWxseSBpdCdzIGFib3V0IHJlZW50cmFuY3kKLQkgIG9mIGNvdW50IGJhc2VkIHRyYW5zaXRpb24sIHdoZW4gZ29pbmcgdGhvdWdoIHRoZSBjb3VudGVyIG11c3QKLQkgIGJlIHJlc2V0IHRvIDAKLQkqIHRlc3Qvc2NoZW1hcy9idWczMTAyNjQqIHJlc3VsdC9zY2hlbWFzL2J1ZzMxMDI2NCo6IGFkZGVkIHRoZQotCSAgcmVncmVzc2lvbiB0ZXN0LgotCi1Nb24gQXVnICA4IDE0OjQwOjUyIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYSBtZW1vcnkgbGVhazogeG1sU2NoZW1hRnJlZUFubm90KCkgd2FzCi0JICBvbmx5IGZyZWVpbmcgdGhlIGZpcnN0IGFubm90YXRpb24gaW4gdGhlIGxpc3QuCi0KLU1vbiBBdWcgIDggMDk6NDQ6MzQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBSb2IgUmljaGFyZHMgZml4aW5nCi0JICB4bWxUZXh0UmVhZGVyR2V0QXR0cmlidXRlCi0KLU1vbiBBdWcgIDggMDE6NDE6NTMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBmaXhlZCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3Mgc3BvdHRlZCBieQotCSAgdmFsZ3JpbmQKLQotU3VuIEF1ZyAgNyAxMjozOTozNSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0L3JlbGF4bmcvZG9jYm9va18wLnhtbDogZ2V0IHJpZCBvZiB0aGUgZGVwZW5kYW5jeSBvbiBhIGxvY2FsbHkKLQkgIGluc3RhbGxlZCBEVEQKLQkqIHVyaS5jIGluY2x1ZGUvbGlieG1sL3VyaS5oIHhtbElPLmMgbmFub2Z0cC5jIG5hbm9odHRwLmM6IHRyeSB0bwotCSAgY2xlYW51cCB0aGUgUGF0aC9VUkkgY29udmVyc2lvbiBtZXNzLCBuZWVkZWQgZml4aW5nIGluIHZhcmlvdXMgCi0JICBsYXllcnMgYW5kIGEgbmV3IEFQSSB0byB0aGUgdXJpIG1vZHVsZSB3aGljaCBhbHNvIGZpeGVzICMzMDY4NjEKLQkqIHJ1bnRlc3QuYzogaW50ZWdyYXRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBzcGVjaWZpYyB0byBjaGVjayB0aGUKLQkgIFVSSSBjb252ZXJzaW9ucyBkb25lIGJlZm9yZSBjYWxsaW5nIHRoZSBJL08gaGFuZGxlcnMuCi0KLVNhdCBBdWcgIDYgMTE6MDY6MjQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL1hTTFQuaHRtbCBkb2MveG1sLmh0bWw6IHNtYWxsIGRvYyBmaXggZm9yICMzMTI2NDcKLQotVHVlIEF1ZyAgMiAxMzoyNjo0MiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBSb2IgUmljaGFyZHMgdG8gYWxsb3cKLQkgIGRpc2FibGluZyBtb2R1bGVzIGluIHdpbjMyLCBmaXhlcyAjMzA0MDcxCi0KLU1vbiBBdWcgIDEgMDc6MTg6NTMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBhcHBsaWVkIGZpeCBmcm9tIEpha3ViIFBpb3RyIENsYXBhIGZvcgotCSAgeG1sQXR0ci5wYXJlbnQoKSwgY2xvc2luZyAjMzEyMTgxCi0KLVN1biBKdWwgMzEgMTg6NDg6NTUgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogc2NoZW1hdHJvbi5jOiByZXBvcnQgaW1wcm92ZW1lbnQKLQkqIHRlc3Qvc2NoZW1hdHJvbi96dm9uKiByZXN1bHQvc2NoZW1hdHJvbi96dm9uKjogbW9yZSB0ZXN0cwotCi1TdW4gSnVsIDMxIDE2OjAyOjU5IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1zdmMgd2luMzIvY29uZmlndXJlLmpzOiBhcHBsaWVkIHBhdGNoIGZyb20gUm9iCi0JICBSaWNoYXJkcyB0byBhZGQgc2NoZW1hdHJvbiB0byB0aGUgYnVpbGQgb24gV2luZG93cwotCSogdGVzdC9zY2hlbWF0cm9uL3p2b24zKiByZXN1bHQvc2NoZW1hdHJvbi96dm9uMyo6IHNlY29uZCB0ZXN0Ci0JKiB0ZXN0L3NjaGVtYXRyb24venZvbjEwKiByZXN1bHQvc2NoZW1hdHJvbi96dm9uMTAqOiB0aGlzIGlzIHRoZQotCSAgcmVhbCBzZWNvbmQgdGVzdCAxMCBhbmQgMiBhcmUgc3dhcHBlZC4KLQotU3VuIEp1bCAzMSAxNTo0MjozMSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBzY2hlbWF0cm9uLmM6IG1vcmUgYnVnIGZpeGVzLCBpbXByb3ZlIHRoZSBlcnJvciByZXBvcnRpbmcuCi0JKiB0ZXN0L3NjaGVtYXRyb24venZvbjIqIHJlc3VsdC9zY2hlbWF0cm9uL3p2b24yKjogc2Vjb25kIHRlc3QKLQotU3VuIEp1bCAzMSAxNDoxNTozMSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBzY2hlbWF0cm9uLmMgeG1sbGludC5jOiBmaXhpbmcgdGhlIGxvb3AgYnVnLCBmaXhpbmcgc2NoZW1hdHJvbgotCSAgdGV4dCBlcnJvciByZW5kZXJpbmcKLQkqIE1ha2VmaWxlLmFtIHJlc3VsdC9zY2hlbWF0cm9uLyogdGVzdC9zY2hlbWF0cm9uL3p2b24xKi5zY3Q6Ci0JICBzdGFydGVkIGludGVncmF0aW5nIHdpdGhpbiAibWFrZSB0ZXN0cyIKLQotU2F0IEp1bCAzMCAxNzoyNjo1OCBFRFQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3Qvc2NoZW1hdHJvbi8qOiBhIGZldyBmaXJzdCB0ZXN0cyBmcm9tIFp2b24gdW5mb3J0dW5hdGVseQotCSAgd2l0aCB0aGUgb2xkIHN5bnRheAotCi1TYXQgSnVsIDMwIDE3OjA4OjA3IEVEVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogc2NoZW1hdHJvbi5jIHhtbGxpbnQuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWF0cm9uLmg6IGNvbW1pdGluZwotCSAgd29yayBkb25lIG9uIHRoZSBwbGFuZSBsYXN0IHdlZWstZW5kCi0KLVNhdCBKdWwgMzAgMTU6MTY6MjkgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVudGVzdC5jOiBhbGxvd3MgYW4gZXh0cmEgYXJndW1lbnQgdG8gc3Vic2V0IHRoZSB0ZXN0cwotCSogeG1scmVnZXhwLmM6IGJpZyBzcGVlZHVwIGZvciB2YWxpZGF0aW9uLCBiYXNpY2FsbHkgYXZvaWRlZAotCSAgdHJhbnNpdGlvbiBjcmVhdGlvbiBleHBsb3Npb24gd2hlbiByZW1vdmluZyBlcHNpbG9uIHRyYW5zaXRpb24KLQkgIAotU2F0IEp1bCAzMCAwMDowMDo0NiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBnbG9iYWxzLmMgcGFyc2VySW50ZXJuYWxzLmMgeG1scmVhZGVyLmMgeG1sdW5pY29kZS5jCi0JICB4bWx3cml0ZXIuYzogbW9yZSBjbGVhbnVwcyBiYXNlZCBvbiBzcGFyc2UgcmVwb3J0cywgYWRkZWQgCi0JICAibWFrZSBzcGFyc2UiCi0KLUZyaSBKdWwgMjkgMTI6MTE6MjUgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBkb24ndCBvdXRwdXQgYW55IG1lc3NhZ2Ugb24gZmFpbGVkIHJlc29sdmVyIGxvb2t1cHMsCi0JICBiZXR0ZXIgZG9uZSBieSB0aGUgcHl0aG9uIHVzZXIgcHJvdmlkZWQgcmVzb2x2ZXIgbGF5ZXIuCi0KLUZyaSBKdWwgMjkgMDE6NDg6MDIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIFNBWDIuYyBlbmNvZGluZy5jIGdsb2JhbHMuYyBwYXJzZXIuYyByZWxheG5nLmMKLQkgIHJ1bnN1aXRlLmMgcnVudGVzdC5jIHNjaGVtYXRyb24uYyB0ZXN0SFRNTC5jIHRlc3RSZWFkZXIuYwotCSAgdGVzdFJlZ2V4cC5jIHRlc3RTQVguYyB0ZXN0VGhyZWFkcy5jIHZhbGlkLmMgeGluY2x1ZGUuYyB4bWxJTy5jCi0JICB4bWxsaW50LmMgeG1sbW9kdWxlLmMgeG1sc2NoZW1hcy5jIHhwYXRoLmMgeHBvaW50ZXIuYzogYSBsb3Qgb2YgCi0JICBzbWFsbCBjbGVhbnVwcyBiYXNlZCBvbiBMaW51cycgc3BhcnNlIGNoZWNrIG91dHB1dC4KLQotVGh1IEp1bCAyOCAyMToyODozMyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbTogYWRkZWQgc2NoZW1hdHJvbi5oLCBvb3BzIC4uLgotCi1UaHUgSnVsIDI4IDAyOjM4OjIxIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBBZGRlZCBjcmVhdGlvbiBvZiB0aGUgY29udGVudCB0eXBlIG9mCi0JICB4czphbnlUeXBlLiBUaGlzIGlzIG5lZWRlZCB3aGVuIHRyeWluZyB0byBleHRlbmQgeHM6YW55VHlwZQotCSAgKGFsdGhvdWdoIGl0IG1ha2VzIG5vIHNlbnNlIHRvIGV4dGVuZCBpdDsgSU1ITyB0aGUgc2NoZW1hCi0JICBwZW9wbGUgc2hvdWxkIGhhdmUgcnVsZWQgdGhpcyBvdXQpLiBUaGlzIHdhcyByZXBvcnRlZAotCSAgYnkgWW9uZyBDaGVuIHRvIHRoZSBtYWlsaW5nIGxpc3QuCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkIGhhbmRsaW5nIG9mIHhzOmFueVR5cGUgaW4KLQkgIHhtbFNjaGVtYUNoZWNrQ09TQ1RFeHRlbmRzKCkgKHJlcG9ydGVkIGJ5IFlvdW5nIENoZW4pLiBUaW55Ci0JICBhZGp1c3RtZW50IHRvIGFuIGVycm9yIHJlcG9ydCBvdXRwdXQuCi0JKiB0ZXN0L3NjaGVtYXMvZXh0ZW5zaW9uMiogcmVzdWx0L3NjaGVtYXMvZXh0ZW5zaW9uMio6Ci0JICBBZGRlZCBhIHRlc3QgY2FzZSBwcm92aWRlZCBieSBZb3VuZyBDaGVuLgotCi1Nb24gSnVsIDI1IDExOjQxOjE4IFBEVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB1cmkuYzogZW5oYW5jZWQgeG1sQnVpbGRSZWxhdGl2ZVVSSSB0byBhbGxvdyB0aGUgVVJJIGFuZCB0aGUKLQkgIGJhc2UgdG8gYmUgaW4gInJlbGF0aXZlIiBmb3JtCi0KLVN1biBKdWwgMjQgMTA6MjU6NDEgRURUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBzY2hlbWF0cm9uLmMgeG1sbGludC5jOiBzdGFydGVkIGFkZGluZyBzY2hlbWF0cm9uIHRvIHRoZSB4bWxsaW50Ci0JICB0b29sLCB0aGUgcmVwb3J0IGluZnJhc3RydWN0dXJlIGlzIGdvbm5hIGJlIGZ1bi4KLQotU2F0IEp1bCAyMyAyMzoyMzo1MSBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0ZXN0L3NjaGVtYXMvYW55NiogdGVzdC9zY2hlbWFzL2FueTcqOiBBZGRlZCByZWdyZXNzaW9uIHRlc3RzCi0JICAodGhleSBmYWlsIGN1cnJlbnRseSksIGJ1dCBkaWQgbm90IGFkZGVkIHJlc3VsdHMgeWV0LgotCi1TYXQgSnVsIDIzIDIzOjA3OjA1IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogUmVtb3ZlZCB0aGUgd29ya2Fyb3VuZCBjb2RlIGluCi0JICB4bWxTY2hlbWFWYWxpZGF0ZUVsZW1XaWxkY2FyZCgpIGZvciB0aGUgPGFueT4gd2lsZGNhcmQKLQkgIHdpdGggbmFtZXNwYWNlID09ICMjb3RoZXIuIFN1cHBvcnQgZm9yIHN1Y2ggd2lsZGNhcmRzIHdhcwotCSAgaW1wbGVtZW50ZWQgYnkgRGFuaWVsIGF0IHRoZSBhdXRvbWF0b24gbGV2ZWwgcmVjZW50bHksIGFuZAotCSAgdGhlIHdvcmthcm91bmQgY29kZSBpdGVyZmVyZWQgd2l0aCBpdC4KLQotU2F0IEp1bCAyMyAxMDo1NTo1MCBFRFQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhdHRlcm4uYyBpbmNsdWRlL2xpYnhtbC9wYXR0ZXJuLmg6IGNoYW5nZWQgeG1sUGF0dGVybmNvbXBpbGUKLQkgIHNpZ25hdHVyZSB0byBwYXNzIGFuIGludCBhbmQgbm90IGFuIGVudW0gc2luY2UgaXQgY2FuIGdlbmVyYXRlCi0JICBBQkkgY29tcGF0IHRyb3VibGVzLgotCSogaW5jbHVkZS9saWJ4bWwvc2NoZW1hdHJvbi5oIHNjaGVtYXRyb24uYzogYWRkaW5nIHRoZSBuZXcgCi0JICBzY2hlbWF0cm9uIGNvZGUsIHdvcmsgaW4gcHJvZ3Jlc3MgbG90cyB0byBiZSBsZWZ0IGFuZCBuZWVkaW5nCi0JICB0ZXN0aW5nCi0JKiBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4gaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmguaW4KLQkgIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbjogaW50ZWdyYXRpb24gb2Ygc2NoZW1hdHJvbiBpbnRvIHRoZQotCSAgYnVpbGQKLQkqIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwveHBhdGguaDogYWRkaW5nIGZsYWdzIHRvIGNvbnRyb2wgY29tcGlsYXRpb24KLQkgIG9wdGlvbnMgcmlnaHQgbm93IGp1c3QgWE1MX1hQQVRIX0NIRUNLTlMuCi0KLVNhdCBKdWwgMjMgMTY6Mzk6MzUgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBSZW1vdmVkIGFuICJpbnRlcm5hbCBlcnJvciIgbWVzc2FnZSBmcm9tCi0JICB4bWxTY2hlbWFCdWlsZEFDb250ZW50TW9kZWwoKSB3aGVuIGFuIGVtcHR5IG1vZGVsIGdyb3VwCi0JICBkZWZpbml0aW9uIGlzIGhpdC4KLQotU2F0IEp1bCAyMyAwMDozNDowNyBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiBwYXR0ZXJuLmM6IENoYW5nZWQgeG1sQ29tcGlsZVN0ZXBQYXR0ZXJuKCkgYW5kCi0JICB4bWxDb21waWxlQXR0cmlidXRlVGVzdCgpIHRvIGhhbmRsZSB0aGUgInhtbCIgcHJlZml4IHdpdGhvdXQKLQkgIGNhcmluZyBpZiB0aGUgWE1MIG5hbWVzcGFjZSB3YXMgc3VwcGxpZWQgYnkgdGhlIHVzZXIuCi0KLUZyaSBKdWwgMjIgMDA6MDg6NDMgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCB4bWxTY2hlbWFQU2ltcGxlVHlwZUVycigpLCB3aGljaCBkaWQgbm90Ci0JICBvdXRwdXQgdGhlIGdpdmVuIHN0cmluZyBhcmd1bWVudHMgY29ycmVjdGx5LgotCi1UaHUgSnVsIDIxIDA5OjIxOjAwIEVEVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYyBnbG9iYWxzLmMgcGFyc2VyLmMgcnVudGVzdC5jIHRlc3RIVE1MLmMgdGVzdFNBWC5jCi0JICB0aHJlYWRzLmMgdmFsaWQuYyB4bWxsaW50LmMgeG1scmVhZGVyLmMgeG1sc2NoZW1hcy5jIHhtbHN0cmluZy5jCi0JICB4bWx3cml0ZXIuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmgKLQkgIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmggaW5jbHVkZS9saWJ4bWwveG1sSU8uaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBpbmNsdWRlL2xpYnhtbC94bWxleHBvcnRzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDogYXBwbGllZCBhIHBhdGNoIGZyb20gTWFyY3VzIEJvZXJnZXIKLQkgIHRvIGZpeCBwcm9ibGVtcyB3aXRoIGNhbGxpbmcgY29udmVudGlvbnMgb24gV2luZG93cyB0aGlzIHNob3VsZAotCSAgZml4ICMzMDk3NTcKLQotV2VkIEp1bCAyMCAxNDo0NTozOSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogYW4gb3B0aW1pemF0aW9uIG9mIHRoZSBjaGFyIGRhdGEgaW5uZXIgbG9vcCwKLQkgIGNhbiBnYWluIHVwIHRvIDEwJSBpbiBwdXJlIFNBWDIgcGFyc2luZyBzcGVlZAotCSogeG1sc2NoZW1hcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gS3Vwcml5YW5vdiBBbmF0b2xpaiBmaXhpbmcKLQkgIGEgYnVnIGluIFhNTCBTY2hlbWFzIGZhY2V0IGNvbXBhcmlzb24gIzMxMDg5MwotCi1UdWUgSnVsIDE5IDE3OjI3OjI2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYzogZml4ZWQgdGhlIGVycm9yIHJlcG9ydGluZyBmb3IKLQkgIG5vdCB0cmFuc2l0aW9ucwotCSogcmVzdWx0L3NjaGVtYXMvYW55NV8wXzAqIHJlc3VsdC9zY2hlbWFzL2FueTVfMF8yKgotCSAgcmVzdWx0L3NjaGVtYXMvYW55NV8xXzAqOiBmaXhlZCBvdXRwdXQKLQotVHVlIEp1bCAxOSAxNTozNDoxMiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYyB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwveG1sYXV0b21hdGEuaDogZml4aW5nCi0JICBidWcgIzE3MjIxNSBhYm91dCBmb3JlaWduIG5hbWVzcGFjZXMgYnkgYWRkaW5nIHN1cHBvcnQgZm9yCi0JICBuZWdhdGVkIHN0cmluZyB0cmFuc2l0aW9ucy4gRXJyb3IgbWVzc2FnZXMgc3RpbGwgbmVlZCB0byBiZQotCSAgaW1wcm92ZWQuCi0JKiB0ZXN0L3NjaGVtYXMvYW55NSogcmVzdWx0L3NjaGVtYXMvYW55NSo6IGFkZGluZyByZWdyZXNzaW9uCi0JICB0ZXN0cyBmb3IgdGhpcy4KLQotVHVlIEp1bCAxOSAxMjozMzozMSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBBbGV4YW5kZXIgUG9ob3lkYSBmaXhpbmcgeG1sR2V0Tm9kZVBhdGgKLQkgIG9uIG5hbWVzcGFjZWQgYXR0cmlidXRlcyAjMzEwNDE3LgotCi1Nb24gSnVsIDE4IDIzOjAxOjE1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy94bWxsaW50LjEgZG9jL3htbGxpbnQuaHRtbCBkb2MveG1sbGludC54bWw6IC0tbm9uZXQgd2FzCi0JICBkdWNwbGljYXRlZAotCi1Nb24gSnVsIDE4IDIwOjQ5OjI4IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogZml4ZWQgeHNkOmFsbCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAotCSAgc3Vic3RpdHV0aW9uIGdyb3VwcwotCSogdGVzdC9zY2hlbWFzL2FsbHNnXyogcmVzdWx0L3NjaGVtYXMvYWxsc2dfKjogYWRkaW5nIHNwZWNpZmljCi0JICByZWdyZXNzaW9uIHRlc3RzLCBzdHJhbmdlbHkgbWlzc2luZyBmcm9tIE5JU1QvU3VuL01pY3Jvc29mdAotCSAgdGVzdHN1aXRlcwotCi1TdW4gSnVsIDE3IDA3OjExOjI3IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogZml4ZWQgYnVnICMzMDc1MDgsIGEgYmFkIGF1dG9tYXRhIHdhcyBidWlsdCBidXQKLQkgIHRoaXMgc2hvd2VkIGFzIGFuIGluZGV0ZXJtaW5pc3QgcmVzdWx0Ci0KLVRodSBKdWwgMTQgMTc6NTM6MDIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGZvdW5kIHRoZSBsYXN0IGJ1ZyByYWlzZWQgYnkgTklTVCB0ZXN0cyBpbgotCSAgY29tcGFyaW5nIGJhc2U2NCBzdHJpbmdzLCByZXN1bHQgZnJvbSBydW5zdWl0ZToKLQkgICMjIE5JU1QgdGVzdCBzdWl0ZSBmb3IgU2NoZW1hcyB2ZXJzaW9uIE5JU1QyMDA0LTAxLTE0Ci0JICBSYW4gMjMxNzAgdGVzdHMgKDM5NTMgc2NoZW1hdGEpLCBubyBlcnJvcnMKLQotVGh1IEp1bCAxNCAxNDo1NzozNiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0UmVnZXhwLmM6IGZpeGVkIHdoZXJlIHhtbE1lbW9yeUR1bXAoKSBzaG91bGQgYmUgY2FsbGVkLgotCSogeG1scmVnZXhwLmM6IGZpeGVkIGhhbmRsaW5nIG9mIHswfSwgXG4sIFxyIGFuZCBcdCwgdHdvIGJ1Z3MKLQkgIGFmZmVjdGluZyBOSVNUIHJlZ3Jlc3Npb24gdGVzdHMKLQotVGh1IEp1bCAxNCAxMTozMDoyNCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IGFwcGxpZWQgYSBwYXRjaCBmcm9tIEdlcnJpdCBQLiBIYWFzZSB0byBhZGQKLQkgIG1vZHVsZSBzdXBwb3J0IG9uIGN5Z3dpbgotCi1UaHUgSnVsIDE0IDEwOjU2OjQyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJydW4gZXJyb3IgaW50cm9kdWNlZAotCSAgb24gbGFzdCBjb21taXQgdG8gaHRtbFBhcnNlU2NyaXB0KCkgYy5mLiAjMzEwMjI5Ci0KLVRodSBKdWwgMTQgMjM6NDg6MTcgUERUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhwYXRoLmM6IENoYW5nZWQgdGhlIGJlaGF2aW91ciBvZiB4bWxYUGF0aEVxdWFsTm9kZVNldEZsb2F0IHRvCi0JICByZXR1cm4gVFJVRSBpZiBhIG5vZGVzZXQgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgTmFOIGlzIGNvbXBhcmVkCi0JICBmb3IgaW5lcXVhbGl0eSB3aXRoIGFueSBudW1lcmljIHZhbHVlIChidWcgMzA5OTE0KS4KLQkgIAotVGh1IEp1bCAxNCAwMTowMzowMyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlcnJvci5jIHJlbGF4bmcuYyB4bWxyZWFkZXIuYyB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwvcmVsYXhuZy5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbSBNYXJjdXMgQm9lcmdlcgotCSAgdG8gcm91dGUgcmVsYXhuZyBhbmQgc2NoZW1hcyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nIHRoZSByZWFkZXIKLQkgIHRocm91Z2ggdGhlIHN0cnVjdHVyZWQgaW50ZXJmYWNlIGlmIGFjdGl2YXRlZC4KLQkqIGVsZmdjY2hhY2suaCBkb2MvKiB0ZXN0YXBpLmM6IHJlYnVpbHQgc2luY2UgdGhpcyBhZGQgIG5ldyBBUElzCi0JICB0byB0ZXN0LgotCi1XZWQgSnVsIDEzIDE4OjM1OjQ3IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogYXBwbGllZCBVVEYtOCBzY3JpcHQgcGFyc2luZyBidWcgIzMxMDIyOSBmaXggZnJvbQotCSAgSmlyaSBOZXRvbGlja3kgCi0JKiByZXN1bHQvSFRNTC9zY3JpcHQyLmh0bWwqIHRlc3QvSFRNTC9zY3JpcHQyLmh0bWw6IGFkZGVkIHRoZSB0ZXN0Ci0JICBjYXNlIGZyb20gdGhlIHJlZ3Jlc3Npb24gc3VpdGUKLQotVHVlIEp1bCAxMiAxNzowODoxMSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vaHR0cC5jOiBmaXhlZCBidWcgIzMxMDEwNSB3aXRoIGh0dHBfcHJveHkgZW52aXJvbm1lbnRzIHdpdGgKLQkgIHBhdGNoIHByb3ZpZGVkIGJ5IFBldGVyIEJyZWl0ZW5sb2huZXIKLQotTW9uIEp1bCAxMSAwMDoyODoxMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBORVdTIGNvbmZpZ3VyZS5pbiBkb2MvKjogcHJlcGFyaW5nIHJlbGVhc2UgMi42LjIwIAotCSogeG1sbGludC5jOiByZW1vdmVkIGEgY29tcGlsYXRpb24gcHJvYmxlbQotCi1TdW4gSnVsIDEwIDIzOjMzOjQxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhzdGMvTWFrZWZpbGUuYW0gUkVBRE1FIFJFQURNRS50ZXN0cyBNYWtlZmlsZS50ZXN0cyBNYWtlZmlsZS5hbToKLQkgIHByZXBhcmluZyB0byBtYWtlIHRlc3RzdWl0ZSByZWxlYXNlcyBhbG9uZyB3aXRoIGNvZGUgc291cmNlIHJlbGVhc2VzCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogZml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5Ci0JICB0aGUgbmV3IFNjaGVtYXMgc3VwcG9ydCBmb3IgUmVhZGVycwotCSogeHBhdGguYzogZml4ZWQgdGhlIFhQYXRoIGF0dHJpYnV0ZTo6IGJ1ZyAjMzA5NTgwLCAjMzA5ODY0IGluIGEgY3J1ZGUKLQkgIGJ1dCBzaW1wbGUgd2F5LgotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogZml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbXMKLQkgIHJhaXNlZCBieSB0aGUgZG9jIGJ1aWxkZXIuCi0JKiBkb2MvKjogbWFkZSByZWJ1aWxkCi0KLVN1biBKdWwgMTAgMjE6NTE6MTYgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBmaXhlZCBhIGJ1ZyBpbnRyb2R1Y2VkIG9uIGxhc3QgY29tbWl0Ci0KLVN1biBKdWwgMTAgMjE6MDA6NTQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL3htbGxpbnQuMSBkb2MveG1sbGludC5odG1sIGRvYy94bWxsaW50LnhtbDogZml4ZWQgYSB0eXBvCi0JICBwb2ludGVkIGJ5IEplcm9lbiBSdWlncm9rCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaCBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmg6IGluY3JlYXNlZAotCSAgdGhlIEFQSXMgZm9yIHhtbFJlYWRlciBzY2hlbWFzIHZhbGlkYXRpb24gc3VwcG9ydAotCSogeG1sbGludC5jIHhtbHJlYWRlci5jIHhtbHNjaGVtYXMuYzogeG1sUmVhZGVyIHNjaGVtYXMgdmFsaWRhdGlvbgotCSAgaW1wbGVtZW50YXRpb24gYW5kIHRlc3RpbmcgYXMgeG1sbGludCAtLXN0cmVhbSAtLXNjaGVtYSAuLi4KLQotU3VuIEp1bCAxMCAxNjoxMToyNiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjogdHJ5IHRvIGF2b2lkIGNvbmZsaWN0cy4KLQotU2F0IEp1bCAgOSAxOToyOToxMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4IGZvciAjMzA5NzYxIGZyb20gRHlsYW4gU2hlbGwgIAotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDogYWRkZWQgeG1sU2NoZW1hU0FYUGx1ZwotCSAgYW5kIHhtbFNjaGVtYVNBWFVucGx1ZyBnZW5lcmljIEFQSXMgZm9yIFNBWCBTY2hlbWFzIHZhbGlkYXRpb24uCi0JKiB4bWxsaW50LmM6IGNvdXBsZSBvZiBmaXhlcyBwbHVzIGFkZGVkIGRlc2NyaXB0aW9ucyBmb3IgLS1zYXggYW5kCi0JICAtLXNheDEKLQotRnJpIEp1bCAgOCAyMzozNTowMCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEFkZGVkIGMtcHJvcHMtY29ycmVjdCBjb25zdHJhaW50IHRvIGNoZWNrCi0JICBmb3IgZXF1YWwgY2FyZGluYWxpdHkgb2Yga2V5cmVmL2tleS4KLQkqIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IEFkZGVkIGFuIGVycm9yIGNvZGUuCi0KLUZyaSBKdWwgIDggMjE6NTY6MDQgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogcGF0dGVybi5jOiBGaXhlZCBldmFsdWF0aW9uIG9mIGF0dHJpYnV0ZXMuIEFjdHVhbGx5IG9ubHkKLQkgIGF0dHJpYnV0ZSBhdCB0aGUgZmlyc3QgbGV2ZWwgd2VyZSBldmFsdWF0ZWQgKGUuZy4gIkBhdHRyIik7Ci0JICBleHByZXNzaW9uIGxpa2UgImZvby9AYXR0ciIgYWx3YXlzIGZhaWxlZC4KLQotRnJpIEp1bCAgOCAyMDowNDoyOSBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IHRpbnkgZml4IGluIHhtbFNjaGVtYVZhbGlkYXRlU3RyZWFtKCkgaWYgYQotCSAgdXNlci1wcm92aWRlZCBTQVggaGFuZGxlciBpcyBnaXZlbi4KLQotRnJpIEp1bCAgOCAxOToyNToyNiBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4IHNvbWUgcG90ZW50aWFsIGxlYWtzIGluIGVycm9yIGNhc2VzLgotCSogeG1sbGludC5jOiBhZGRlZCAtLXNheCwgdG8gYWxsb3cgdGVzdGluZyBvZiAtLXNjaGVtYXMgLS1zYXggYW5kCi0JICB2YXJpb3VzIG90aGVyIGNvbWJpbmF0aW9ucy4KLQkqIHhtbHNjaGVtYXMuYzogZml4IGEgY291cGxlIG9mIHRpbnkgcHJvYmxlbXMgaW4KLQkgIHhtbFNjaGVtYVZhbGlkYXRlU3RyZWFtKCkKLQotRnJpIEp1bCAgOCAxODozNDoyMiBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCQotCSogeG1sc2NoZW1hcy5jOiBDaGFuZ2VkIHhtbFNjaGVtYVZhbGlkYXRlRmlsZSgpIHRvIHVzZQotCSAgeG1sU2NoZW1hVmFsaWRhdGVTdHJlYW0oKSBpbnRlcm5hbGx5LgotCi1GcmkgSnVsICA4IDE3OjAyOjE0IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3QvcmVsYXhuZy9kb2Nib29rXzAueG1sOiBhZGRlZCB0aGUgbWlzc2luZyBlbnRpdHkgdG8gdGhlCi0JICBkb2N1bWVudCBpbnRlcm5hbCBzdWJzZXQgdG8gYXZvaWQgZXJyb3JzIGlmIHRoZSBEb2NCb29rIGNhdGFsb2dzCi0JICBhcmUgbm90IHRoZXJlCi0JKiB4bWxzY2hlbWFzLmM6IGZpcnN0IGN1dCBhdCBpbXBsZW1lbnRpbmcgeG1sU2NoZW1hVmFsaWRhdGVTdHJlYW0oKQotCSAgdW50ZXN0ZWQgeWV0Ci0KLVdlZCBKdWwgIDYgMTU6NDU6NDggUERUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHBhcnNlci5jOiBmaXhlZCBwcm9ibGVtIHdpdGggZnJlZSBvbiBkdXBsIGF0dHJpYnV0ZSBpbgotCSAgZHRkIChidWczMDk2MzcpLgotCSogdGVzdC9lcnJvcnMvYXR0cjMueG1sLCByZXN1bHQvZXJyb3JzL2F0dHIzLio6IGFkZGVkCi0JICByZWdyZXNzaW9uIHRlc3QgZm9yIHRoaXMKLQotV2VkIEp1bCAgNiAxMzoxMTozNSBQRFQgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogd2luMzIvTWFrZWZpbGUubXN2YzogdHJ5IGFnYWluIHRvIGZpeCBmaWxlIGZvcm1hdCBmb3IgV2luZG93cwotCi1XZWQgSnVsICA2IDEyOjIwOjEzIFBEVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5tc3ZjOiByZW1vdmVkIHNwdXJpb3VzIF5NCi0JKiBydW50ZXN0LmM6IGFkZGVkIGNoZWNrIGZvciBvcHRpb24gT19CSU5BUlkKLQkqIHRlc3Qvc2NoZW1hcy9idWczMDkzMzgqLCByZXN1bHQvc2NoZW1hcy9idWczMDkzMzgqOiBjaGFuZ2VkCi0JICBzdGlja3kgdGFnIHRvICdiaW5hcnknCi0KLVdlZCBKdWwgIDYgMTA6Mzg6MDIgUERUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRlYnVnWE1MLmM6IGV4Y2x1ZGVkIGNvbnRlbnQgc3RyaW5nIGNoZWNrIGZvciBYTUxfRUxFTUVOVF9ERUNMCi0JICBpbiB4bWxDdHh0R2VuZXJpY05vZGVDaGVjawotCSogcnVudGVzdC5jOiBjaGFuZ2VkICJvcGVuIiBjYWxscyB0byBpbmNsdWRlIE9fQklOQVJZIGZvciBXaW5kb3dzCi0KLVdlZCBKdWwgIDYgMTc6MTQ6MDMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGluZyBidWcgIzE2Njc3NyAoYW5kICMxNjk4MzgpLCBpdCB3YXMgYW4gaGV1cmlzdGljCi0JICBpbiBhcmVCbGFua3Mgd2hpY2ggZmFpbGVkLgotCSogcmVzdWx0L3dpbmJsYW5rcy54bWwqIHJlc3VsdC9ub2VudC93aW5ibGFua3MueG1sIHRlc3Qvd2luYmxhbmtzLnhtbDoKLQkgIGFkZGVkIHRoZSBpbnB1dCBmaWxlIHRvIHRoZSByZWdyZXNzaW9uIHRlc3RzCi0KLVdlZCBKdWwgIDYgMTM6NDA6MjIgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IEZpeGVkIGJ1ZyAjMzA5MzM4LCByZXBvcnRlZCBieSBLdXByaXlhbm92Ci0JICBBbm90b2xpai4KLQkqIHRlc3Qvc2NoZW1hcy9idWczMDkzMzgqIHJlc3VsdC9zY2hlbWFzL2J1ZzMwOTMzOCo6Ci0JICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGFib3ZlIGJ1Zy4KLQotVHVlIEp1bCAgNSAxNjowMzowNSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogZmlyc3Qgc3RlcHMgdG93YXJkIGEgdGVzdHN1aXRlIGRpc3QKLQkqIFNBWDIuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBmaXhlZCBidWcgIzMwNzg3MAotCi1UdWUgSnVsICA1IDEyOjM4OjM2IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHJ1bnN1aXRlLmMgcnVudGVzdC5jOiBUaW55IHBvcnRhYmlsaXR5IGFkanVzdG1lbnQgZm9yIHdpbi4KLQkqIHdpbjMyL01ha2VmaWxlLio6IEFkZGVkIHJ1bnRlc3QuZXhlIGFuZCBydW5zdWl0ZS5leGUgdG8KLQkgIGJlIGNyZWF0ZWQuCi0KLU1vbiBKdWwgIDQgMTc6NDQ6MjYgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVuc3VpdGUuYzogZmlyc3Qgc3RiIGF0IHVuaW1wbGVtbnRlZCBkZXRlY3Rpb24KLQkqIHJ1bnRlc3QuYzogZml4aW5nIFdpbmRvd3MgY29kZQotCi1Nb24gSnVsICA0IDE3OjE5OjMxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnN1aXRlLmM6IGZpeCBvbiBzY2hlbWFzIGVycm9yCi0JKiBydW50ZXN0LmM6IHBvcnRhYmlsaXR5IGdsb2IoKSBvbiBXaW5kb3dzCi0KLU1vbiBKdWwgIDQgMTY6MjM6NTQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVuc3VpdGUuYyBydW50ZXN0LmM6IGNsZWFudXBzLCBsb2dmaWxlIGFuZCBwb3J0YWJpbGl0eQotCSogeG1sbGludC5jOiBmaXhlZCBhIG1lbW9yeSBsZWFrCi0KLU1vbiBKdWwgIDQgMTM6MTE6MTIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGEgYnVnIGZhaWxpbmcgdG8gZGV0ZWN0IFVURi04IHZpb2xhdGlvbnMgaW4KLQkgIENEYXRhIGluIHB1c2ggbW9kZS4KLQkqIHJlc3VsdC9lcnJvcnMvY2RhdGEueG1sKiB0ZXN0L2Vycm9ycy9jZGF0YS54bWw6IGFkZGVkIHRoZSB0ZXN0Ci0JICB0byB0aGUgcmVncmVzc2lvbnMKLQotTW9uIEp1bCAgNCAxMToyNjo1NyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCBlbmhhbmNlbWVudCBmb3IgIzMwOTA1NyBpbiB4bWxsaW50IHNoZWxsCi0KLU1vbiBKdWwgIDQgMDA6NTg6NDQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gSmFtZXMgQnVyc2EgZml4aW5nIGFuIGh0bWwgcGFyc2luZwotCSAgYnVnIGluIHB1c2ggbW9kZQotCSogcmVzdWx0L0hUTUwvcmVwZWF0Lmh0bWwqIHRlc3QvSFRNTC9yZXBlYXQuaHRtbDogYWRkZWQgdGhlIHRlc3QgdG8gdGhlCi0JICByZWdyZXNzaW9uIHN1aXRlCi0KLVN1biBKdWwgIDMgMjM6NDI6MzEgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdGFwaS5jIHRyZWUuYzogZml4aW5nIGEgbGVhayBkZXRlY3RlZCBieSB0ZXN0YXBpIGluIAotCSAgeG1sRE9NV3JhcEFkb3B0Tm9kZSwgYW5kIGZpeGluZyBhbm90aGVyIHNpZGUgZWZmZWN0IGluIHRlc3RhcGkKLQkgIHNlZW1zIHRvIHBhc3MgdGVzdHMgZmluZSBub3cuCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBwYXJzZXIuYzogeG1sU3RvcFBhcnNlcigpIGlzIG5vIG1vcmUgbGltaXRlZAotCSAgdG8gcHVzaCBtb2RlCi0JKiBlcnJvci5jOiByZW1vdmUgYSB3YXJuaW5nCi0JKiBydW50ZXN0LmMgeG1sbGludC5jOiBhdm9pZCBjb21waWxhdGlvbiBlcnJvcnMgaWYgb25seSBzb21lIHBhcnRzCi0JICBvZiB0aGUgbGlicmFyeSBhcmUgY29tcGlsZWQgaW4uCi0KLU1vbiBKdWwgIDQgMDA6Mzk6MzUgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGZpeCBhIHByb2JsZW0gd2l0aCBwcmV2aW91cyBwYXRjaCB0bwotCSAgdGVzdGFwaS5jCi0KLVN1biBKdWwgIDMgMjI6NTk6MjggQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVuc3VpdGUuYyBydW50ZXN0LmMgdHJlZS5jOiBmaXhpbmcgY29tcGlsYXRpb25zIHdoZW4KLQkgIGRpc2FibGluZyBwYXJ0cyBvZiB0aGUgbGlicmFyeSBhdCBjb25maWd1cmUgdGltZS4KLQotU3VuIEp1bCAgMyAxODoxNzo1OCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogZml4IGJ1ZyByYWlzZWQgYnkgemFtZXogb24gSVJDCi0JKiB0ZXN0YXBpLmM6IHJlZ2VuZXJhdGVkLCBzZWVtcyB0byBwb3AtdXAgbGVha3MgaW4gbmV3IHRyZWUgZnVuY3Rpb25zCi0JKiB0cmVlLmM6IGFkZGVkIGNvbW1lbnRzIG1pc3NpbmcuCi0JKiBkb2MvKjogcmVnZW5lcmF0ZWQKLQotU3VuIEp1bCAgMyAxODowNjo1NSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0YXBpLmMgcnVuc3VpdGUuYyBydW50ZXN0LmM6IGZpeGluZyAjMzA3ODIzIGFuZCBhIGNvdXBsZSBvZgotCSAgYXNzb3J0ZWQgYnVncwotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbDogZml4ZWQgCi0JICBjb25kaXRpb25hbHMgaW4gZ2VuZXJhdG9yIHRvbwotCSogZG9jL2FwaWJ1aWxkLnB5IGRvYy9saWJ4bWwyLWFwaS54bWwgZG9jLyogZWxmZ2NjaGFjay5oOiBzb21lCi0JICBjbGVhbnVwcyB0b28gYW5kIHJlYnVpbHQKLQotU3VuIEp1bCAgMyAxNjo0MjowMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBmaXhlZCBidWcgIzMwNzUwMyBtaXNwbGFjZWQgI2lmZGVmCi0KLVN1biBKdWwgIDMgMTY6MzQ6NDcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVuc3VpdGUuYzogZXhwYW5kZWQgdGVzdAotCSogeG1scmVnZXhwLmM6IGZvdW5kIGFuZCBmaXhlZCB0aGUgbGVhayBleHBvc2VkIGJ5IE1pY3Jvc29mdCByZWd0ZXN0cwotCi1TYXQgSnVsICAyIDIzOjM4OjI0IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnN1aXRlLmM6IGEgYml0IG9mIHByb2dyZXNzZXMgb24geHN0YwotCi1TYXQgSnVsICAyIDA5OjMwOjEzIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnN1aXRlLmM6IGNvbXBsZXRlZCB0aGUgc2ltcGxlIGNoZWNrcyBmb3IgUmVsYXgtTkcgc3VpdGVzCi0JICBiYWNrIHRvIHRoZSBzYW1lIDExIGVycm9ycyBhcyBpbiB0aGUgUHl0aG9uIHJ1bnMuCi0KLVRodSBKdW4gMzAgMTU6MDE6NTIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVudGVzdC5jOiBjb21wbGV0ZSwgY2hlY2tpbmcgb24gb3RoZXIgcGxhdGZvcm1zIGlzIG5lZWRlZAotCSogUkVBRE1FOiB1cGRhdGVkIAotCSogZGVidWdYTUwuYzogZml4IGEgYnVnIHJhaXNlZCBieSBiaWxsIG9uIElSQwotCSogcmVsYXhuZy5jOiBmaXggYSBsZWFrIGluIHdlaXJkIGNpcmN1bXN0YW5jZXMKLQkqIHJ1bnN1aXRlLmMgTWFrZWZpbGUuYW06IHN0YW5kYWxvbmUgdGVzdCB0b29sIGFnYWlzbnQKLQkgIHRoZSByZWdyZXNzaW9uIHN1aXRlcywgd29yayBpbiBwcm9ncmVzcwotCi1UdWUgSnVuIDI4IDA4OjMwOjI2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogYWRkaW5nIFVSSSB0ZXN0cwotCi1Nb24gSnVuIDI3IDIzOjU1OjU2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogYWRkaW5nIHhtbDppZAotCi1Nb24gSnVuIDI3IDIzOjI5OjM2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogZmluaXNoaW5nIFhQYXRoLCBhZGRpbmcgWFBvaW50ZXIKLQotTW9uIEp1biAyNyAxNzozOToyNyBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBydW50ZXN0LmM6IGFkZGluZyBtb3JlIGNvdmVyYWdlLCBYSW5jbHVkZSBhbmQgc3RhcnRpbmcgWFBhdGgKLQotTW9uIEp1biAyNyAxNzowMjoxNCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBBZGRlZCBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbgotCSAgZnVuY3Rpb25zIGZvciB0aGUgRE9NLXdyYXBwZXIgY29udGV4dC4KLQotTW9uIEp1biAyNyAxNTo0MTozMCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0cmVlLmM6IENvbW1lbnRlZCB0aGUgbmV3IGZ1bmN0aW9ucyB0byBiZSBleHBlcmltZW50YWwuCi0KLU1vbiBKdW4gMjcgMTQ6NDE6MTQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYyB2YWxpZC5jOiB3b3JraW5nIHNvbWUgd2VpcmQgZXJyb3IgcmVwb3J0aW5nIHByb2JsZW0gZm9yCi0JICBEVEQgdmFsaWRhdGlvbi4KLQkqIHJ1bnRlc3QuYzogYXVnbWVudGVkIHdpdGggRFREIHZhbGlkYXRpb24gdGVzdHMKLQkqIHJlc3VsdC9WQy9PbmVJRCo6IHNsaWdodCBjaGFuZ2UgaW4gdmFsaWRhdGlvbiBvdXRwdXQuCi0KLU1vbiBKdW4gMjcgMTM6NDQ6NDEgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVudGVzdC5jOiBhZGRlZCBtb3N0IEhUTUwgdGVzdHMKLQotTW9uIEp1biAyNyAxNDowNjoxMCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0ZXN0L25hbWVzcGFjZXMvcmVjb25jaWxlL3Rlc3RzLnhtbAotCSAgdGVzdC9uYW1lc3BhY2VzL3JlY29uY2lsZS90ZXN0cy10by1jLnhzbDogQWRkZWQgaW5pdGlhbCB0ZXN0cwotCSAgZm9yIHNvbWUgbmV3IERPTS13cmFwcGVyIGhlbHBpbmcgZnVuY3Rpb25zLgotCi1Nb24gSnVuIDI3IDE0OjAxOjA2IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhzdGMveHN0Yy10by1weXRob24ueHNsOiBDbGVhbnVwLgotCSogeHN0Yy9zdW4tdGVzdC1kZWYueG1sIHhzdGMvbmlzdC10ZXN0LWRlZi54bWwgeHN0Yy9tcy10ZXN0LWRlZi54bWw6Ci0JICBSZW1vdmVkLCB0aG9zZSBhcmUgbm90IG5lZWRlZCBhbnltb3JlIGR1ZSB0byB0aGUgbmV3IHRlc3Qgc3VpdGUuCi0KLU1vbiBKdW4gMjcgMTE6Mzk6NTAgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVzdWx0Lyouc2F4MiBNQWtlZmlsZS5hbTogYWRkZWQgU0FYdjIgcmVncmVzc2lvbiB0ZXN0cyBhcHBhcmVudGx5Ci0JICBtaXNzaW5nLgotCSogcnVudGVzdC5jOiBhZGRlZCBTQVgxL1NBWDIgY2hlY2tzLgotCi1Nb24gSnVuIDI3IDEyOjI0OjU0IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IEFkZGVkCi0JICB4bWxET01XcmFwUmVjb25jaWxlTmFtZXNwYWNlcygpLCB4bWxET01XcmFwQWRvcHROb2RlKCkgYW5kCi0JICB4bWxET01XcmFwUmVtb3ZlTm9kZSgpIHRvIHRoZSBBUEkuIFRoZXNlIGFyZSBmdW5jdGlvbnMgaW50ZW5kZWQKLQkgIHRvIGJlIHVzZWQgd2l0aCBET00td3JhcHBlcnMuCi0KLU1vbiBKdW4gMjcgMTA6MTQ6NTcgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcnVudGVzdC5jOiBjb250aW51ZSB0byBpbmNyZWFzZSB0aGUgdGVzdHMKLQotTW9uIEp1biAyNyAwOToyMTo0OSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBydW50ZXN0LmM6IGNvbnRpbnVlIHRvIGluY3JlYXNlIHRoZSB0ZXN0cwotCi1Nb24gSnVuIDI3IDAxOjAxOjMyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJ1bnRlc3QuYzogY29udGludWUgdG8gaW5jcmVhc2UgdGhlIHRlc3RzCi0KLVN1biBKdW4gMjYgMjA6MDg6MjQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdmFsaWQuaCB2YWxpZC5jOiBhdm9pZCBuYW1lIGdsb2IgaW4gYWdydW1lbnRzIGFzCi0JICBpdCBtYXRjaGVzIHRoZSBnbG9iKCkgcm91dGluZS4KLQkqIHJ1bnRlc3QuYyBNYWtlZmlsZS5hbTogZmlyc3Qgc3RlcHMgdG93YXJkIGEgQyByZWdyZXNzaW9uIHRlc3QKLQkgIGZyYW1ld29yay4KLQotU2F0IEp1biAyNSAwMTozNzoyMiBQRFQgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogY29uZmlndXJlLmluOiBmaXhlZCBhIHByb2JsZW0gd2l0aCB0aGUgZGV0ZWN0aW9uIG9mCi0JICBzc19mYW1pbHkgZm9yIGlwVjYsIGFzIHJlcG9ydGVkIG9uIHRoZSBtYWlsaW5nIGxpc3QgYnkKLQkgIERvdWcgT3JsZWFucy4KLQotVHVlIEp1biAyMSAxMDo0NDozNCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0ZXN0L3NjaGVtYXMvZW1wdHktdmFsdWUqIHJlc3VsdC9zY2hlbWFzL2VtcHR5LXZhbHVlKjoKLQkgIEFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgKGZyb20gRGh5YW5lc2gpLgotCi1UdWUgSnVuIDIxIDEwOjM1OjQzIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgTlVMTCB2YWx1ZXMgdG8gYmUgdmFsaWRhdGVkIGFzIGVtcHR5Ci0JICBzdHJpbmcgdmFsdWVzIChyZXBvcnRlZCBieSBEaHlhbmVzaCB0byB0aGUgbWFpbGluZyBsaXN0KS4KLQkgIEFkanVzdGVkIHRleHQgY29uY2F0ZW5hdGlvbiBvZiBtaXhlZCBjb250ZW50LgotCi1Nb24gSnVuIDIwIDE4OjExOjMyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYyB2YWxpZC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gUm9iIFJpY2hhcmRzIGZvciByZW1vdmFsCi0JICBvZiBJRCAoYW5kIHhtbDppZCkKLQkqIHhtbHJlYWRlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gSmFtZXMgV2VydCBpbXBsZW1lbnRpbmcgCi0JICB4bWxUZXh0UmVhZGVyUmVhZElubmVyWG1sIGFuZCB4bWxUZXh0UmVhZGVyUmVhZE91dGVyWG1sCi0KLVRodSBKdW4gMTYgMTQ6Mzg6MjIgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBTQVgyIHZhbGlkYXRpb246IGdyb3cgb2YgaW50ZXJuYWwKLQkgIG5hbWVzcGFjZSBsaXN0LCBhcHBlbmRpbmcgb2YgZWxlbWVudCBjaGFyYWN0ZXIgY29udGVudC4KLQkqIHhzdGMveHN0Yy5weTogQWRkZWQgIi0tc2F4IiBvcHRpb24gZm9yIFNBWDIgdmFsaWRhdGlvbi4KLQotV2VkIEp1biAxNSAxNTozNDo1MiBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogQWRkZWQgbWlzc2luZyBmdW5jdGlvbiBkZXNjcmlwdGlvbnMuCi0KLVdlZCBKdW4gMTUgMTU6MjY6MTQgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBpZiBzYXgxIGlzIHVzZWQgYW5kIGlucHV0IGlzIGEgZmlsZSB1c2UgdGhlIG9sZAotCSAgQVBJIHhtbFBhcnNlRmlsZSgpCi0JKiB4bWxzY2hlbWFzLmM6IGNsZWFudXBzCi0JKiBkb2MvKiB0ZXN0YXBpLmMgZWxmZ2NjaGFjay5oOiByZWJ1aWx0IHRvIGFkZCBweXRob24gYmluZGluZ3MKLQkgIGZvciB0aGUgbmV3IGZ1bmN0aW9ucyBpbiBTY2hlbWFzLgotCi1XZWQgSnVuIDE1IDE0OjUwOjQ4IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmg6IEFkZGVkCi0JICB4bWxTY2hlbWFWYWxpZGF0ZUZpbGUoKSB0byB0aGUgcHVibGljIEFQSS4gVGhpcyB3aWxsIHVzZQotCSAgU0FYMi1kcml2ZW4gdmFsaWRhdGlvbi4KLQotV2VkIEp1biAxNSAxMToxMTozOCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy9idWczMDY4MDZfMV8wIHJlc3VsdC9zY2hlbWFzL2J1ZzMwNjgwNl8xXzAuZXJyOgotCSAgQWRkZWQgc2NoZW1hIHRlc3QgcmVzdWx0cyAoVG9tIEJyb3dkZXIsIGJ1ZyAjMzA2ODA2KS4KLQotV2VkIEp1biAxNSAxMTowODozNCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB0ZXN0L3NjaGVtYXMvYnVnMzA2ODA2XzEueHNkIHRlc3Qvc2NoZW1hcy9idWczMDY4MDZfMC54bWw6Ci0JICBBZGRlZCBzY2hlbWEgdGVzdHMgc3VibWl0dGVkIGJ5IFRvbSBCcm93ZGVyIChidWcgIzMwNjgwNikuCi0KLVR1ZSBKdW4gMTQgMTU6MDM6MjIgUERUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHBhdHRlcm4uYzogYWRqdXN0ZWQgbGFzdCBjaGFuZ2UgdG8geG1sQ29tcGlsZVBhdGhQYXR0ZXJuLAotCSAgZml4ZWQgb25lIGNvbXBpbGF0aW9uIHdhcm5pbmcKLQotVHVlIEp1biAxNCAyMToxOToxNiBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiBwYXR0ZXJuLmM6IFNvbWUgY2hhbmdlcy9maXhlcyB0byB0aGUgc3RyZWFtaW5nIGV2YWx1YXRpb24uCi0JKiB4bWxzY2hlbWFzLmM6IEEgYml0IG9mIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlIHNjaGVtYSBmb3IKLQkgIHNjaGVtYS4gRml4ZWQgYXR0cmlidXRlIGRlcml2YXRpb24gd2hlbiB0aGUgdXNlIGlzCi0JICAicHJvaGliaXRlZCIgYW5kIHdhcyAib3B0aW9uYWwiLiBGaXhlZCBhbiBhdHRyaWJ1dGUgY29uc3RydWN0aW9uCi0JICBidWcsIGEgbGVmdC1vdmVyIGZyb20gdGhlIHRpbWUsIHdoZXJlIDxjb21wbGV4Q29udGVudD4sCi0JICA8ZXh0ZW5zaW9uPiwgZXRjLiB3aGVyZSBjcmVhdGVkIGFzIHN0cnVjdHMuCi0KLVR1ZSBKdW4gMTQgMTI6MzU6MTIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLTIuMC5wYy5pbjogcmVtb3ZlZCBhIHJlZHVuZGFudCBpbmNsdWRlIHBhdGgKLQotTW9uIEp1biAxMyAxNDo1ODozMyBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4c3RjL01ha2VmaWxlLmFtOiBTb21lIG1vcmUgYWRqdXN0bWVudHMuCi0KLU1vbiBKdW4gMTMgMTQ6MzU6NTkgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHN0Yy9NYWtlZmlsZS5hbTogQ2hhbmdlZCB0ZXN0IGV4dHJhY3Rpb24gcHJvY2Vzcywgc2luY2Ugc29tZQotCSAgYm94ZXMgZG9uJ3Qga25vdyBhYm91dCAidGFyIC0tc3RyaXAtcGF0aCIuCi0KLU1vbiBKdW4gMTMgMTM6Mzk6NDMgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBhIGJ1ZyBleHBvc2VkIGJ5IFJvYiBSaWNoYXJkcyBpbiB0aGUgbWFpbGluZy1saXN0Ci0JKiByZXN1bHQvL2NvbXBhcmUwKiB0ZXN0Ly9jb21wYXJlMCo6IGFkZGVkIHRoZSByZWdyZXNzaW9uIHRlc3QgaW4KLQkgIHRoZSBzdWl0ZSBhcyB0aGlzIHdlbnQgdW5ub3RpY2VkICEKLQotV2VkIEp1biAgOSAxMTowNzo0MiBQRFQgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGF0dGVybi5jLCB4cGF0aC5jLCBpbmNsdWRlL2xpYnhtbC9wYXR0ZXJuLmg6IEZ1cnRoZXIKLQkgIGVuaGFuY2VtZW50IGZvciBYUGF0aCBzdHJlYW1pbmcsIGNvbnNvbGlkYXRlZCB3aXRoCi0JICBzY2hlbWFzIHVzYWdlIG9mIHBhdHRlcm4uYy4gIEFkZGVkIGEgbmV3IGVudW0KLQkgIHhtbFBhdHRlcm5GbGFncy4KLQkqIGRvYy8qLCB0ZXN0YXBpLmMsIGVsZmdjY2hhY2suaDogdXBkYXRlZCB0byByZWZsZWN0IG5ldwotCSAgZW51bS4KLQkqIHRlc3QvWFBhdGgvdGVzdHMvbWl4ZWRwYXQsIHRlc3QvWFBhdGgvZG9jcy9taXhlZCwKLQkgIHJlc3VsdC9YUGF0aC9taXhlZHBhdDogYWRkZWQgcmVncmVzc2lvbiB0ZXN0IGZvciBwcm9ibGVtcwotCSAgcmVwb3J0ZWQgaW4gYnVnMzA2MzQ4Ci0KLVRodSBKdW4gIDkgMTY6NTE6MzEgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IENoYW5nZWQgbm9uLXByZWZpeGVkIFFOYW1lcyB0byBiZSBib3VuZCB0byBhCi0JICBkZWZhdWx0IG5hbWVzcGFjZSBpZiBleGlzdGVudC4KLQotVGh1IEp1biAgOSAxNToxMTozOCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogRml4ZWQgYSBidWcgd2hpY2ggSSBpbnZlbnRlZDogaGV4QmluYXJ5J3Mgc3RyaW5nCi0JICB2YWx1ZXMgd2VyZSBub3QgZHVwbGljYXRlZCBjb3JyZW50bHkgd2hlbiBjcmVhdGluZyBhIGNvbXB1dGVkIHZhbHVlCi0JICBpbiB4bWxTY2hlbWFWYWxBdG9taWNUeXBlLgotCi1UaHUgSnVuICA5IDEzOjIwOjU3IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyByZXN1bHQvc2NoZW1hcy9pbmNsdWRlMV8wXzAuZXJyOgotCSAgRml4ZWQgYW4gYXR0cmlidXRlIGZpeGVkL2RlZmF1bHQgdmFsdWUgY29uc3RyYWludCBlcnJvci4KLQotVGh1IEp1biAgOSAxMjo1MToyMyBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy8qOiBBZGFwdGVkIHJlZ3Jlc3Npb24gdGVzdCByZXN1bHRzLgotCi1UaHUgSnVuICA5IDEyOjIyOjQ1IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXN0eXBlcy5oOiBDaGFuZ2VkIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MKLQkgIHRvIGJlIGFibGUgdG8gd29yayBpbiBzdHJlYW1pbmcgbW9kZS4gU29tZSBkYXRhdHlwZSBmaXhlcywKLQkgIGVzcGVjaWFsbHkgZm9yIGxpc3QgYW5kIHVuaW9uIHR5cGVzLiBEdWUgdG8gdGhlIGNoYW5nZXMgdGhlCi0JICBlcnJvciByZXBvcnQgb3V0cHV0IGhhcyBjaGFuZ2VkIGluIG1vc3QgY2FzZXMuIEluaXRpYWwgbWlncmF0aW9uIHRvCi0JICBmdW5jdGlvbnMgdXNhYmxlIGJ5IGJvdGgsIHRoZSBwYXJzZXIgYW5kIHRoZSB2YWxpZGF0b3IuIFRoaXMgc2hvdWxkCi0JICBlYXNlIGEgeWV0LXRvLWNvbWUgWFMgY29uc3RydWN0aW9uIEFQSSBpbiB0aGUgbG9uZyB0ZXJtIGFzIHdlbGwuCi0KLVRodSBKdW4gIDkgMTA6MTY6MTEgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBNYWxjb2xtIFJvd2UgdG8gYXZvaWQgbmFtZXNwYWNlCi0JICB0cm91YmxlcyBvbiByb2xsYmFjayBwYXJzaW5nIG9mIGVsZW1lbnRzIHN0YXJ0ICMzMDQ3NjEKLQkqIHRlc3QvbnNjbGVhbi54bWwgcmVzdWx0L25vZW50L25zY2xlYW4ueG1sIHJlc3VsdC9uc2NsZWFuLnhtbCo6Ci0JICBhZGRlZCBpdCB0byB0aGUgcmVncmVzc2lvbiB0ZXN0cy4KLQotVGh1IEp1biAgOSAwMDozMzo1MCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhcHBsaWVkIHBhdGNoIGZyb20gUm9iIFJpY2hhcmRzCi0JICBmb3IgeG1sOnNwYWNlIGFuZCB4bWw6bGFuZyBoYW5kbGluZyB3aXRoIFNBWDIgYXBpLgotCi1XZWQgSnVuICA4IDE5OjQxOjM4IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdsb2JhbHMuYzogYXBwbGllZCBwYXRjaCBmcm9tIE1vcnRlbiBXZWxpbmRlciwgY2xvc2luZyBidWcgIzMwNjkwMQotCSAgb24gY29tcGlsaW5nIHN1YnNldHMgb2YgdGhlIGxpYnJhcnkKLQotV2VkIEp1biAgOCAxOToxMTo0MiBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4c3RjL01ha2VmaWxlLmFtIHhzdGMucHkgeHN0Yy10by1weXRob24ueHNsOiBBZGFwdGVkIHRoZQotCSAgWFMgdGVzdHMgdG8gdXNlIHRoZSBuZXcgcmVsZWFzZSBvZiB0ZXN0cyBhbmQgdGVzdC1kZWZpbml0aW9ucy4KLQotMjAwNS0wNi0wNyAgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogYzE0bi5jOiBmaXggcmVuZGVyaW5nIG9mIGF0dHJpYnV0ZXMgd2hlbiBwYXJlbnQgbm9kZQotCWlzIG5vdCBpbiB0aGUgbm9kZSBzZXQKLQotMjAwNS0wNi0wNiAgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogYzE0bi5jOiBmaXhlZCB4bWwgYXR0cmlidXRlcyBwcm9jZXNzaW5nIGJ1ZyBpbiBleGMgYzE0bgotCSogeG1sbGludC5jOiBhZGRlZCAtLWV4Yy1jMTRuIGNvbW1hbmQgbGluZSBvcHRpb24KLQotTW9uIEp1biAgNiAwNjo0MzozMyBQRFQgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYywgcGF0dGVybi5jOiBFbmhhbmNlZCB4bWxYUGF0aFJ1blN0cmVhbUV2YWwsIGZpeGVkCi0JICBoYW5kbGluZyBvZiBkZXB0aC9sZXZlbCBmb3IgY2FzZXMgbGlrZSB1bmlvbiBvcGVyYXRvcgotCSAgKGJ1ZyAjMzA2MzQ4IHJlcG9ydGVkIGJ5IEJvYiBTdGF5dG9uKS4gIEFsc28gZW5oYW5jZWQKLQkgIHNldmVyYWwgY29tbWVudHMgdGhyb3VnaG91dCBwYXR0ZXJuLmMuCi0JKiBkb2MvYXBpYnVpbGQucHk6IGZpeGVkIHByb2JsZW0gaW4gaGFuZGxpbmcgb2YKLQkgICdzaWduZWQnIGRlY2xhcmF0aW9uLiAgUmVidWlsdCB0aGUgZG9jcy4KLQkgIAotVHVlIE1heSAzMSAyMDozNToyNyBQRFQgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogRW5oYW5jZWQgaGFuZGxpbmcgb2YgeG1sOmJhc2UgZm9yIGluY2x1ZGVkCi0JICBlbGVtZW50cywgZml4aW5nIGJ1Z3MgMTY5MjA5IGFuZCAzMDIzNTMuCi0KLVdlZCBNYXkgMjUgMTg6NTk6NTMgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBmYWNldCBlcnJvcnMgdG8gYmUgY2hhbm5lbGxlZCBiYWNrIGZvcgotCSAgdW5pb24gdHlwZSBtZW1iZXJzOyBmYWNldC12YWxpZGF0aW9uIHdpbGwgc3RvcCBub3cgb24gdGhlCi0JICBmaXJzdCBlcnJvci4gUmVwb3J0ZWQgYnkgR1VZIEZhYnJpY2UgdG8gdGhlIG1haWxpbmctbGlzdC4KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBDaGFuZ2VkIHRvIGlnbm9yZSBsZW5naC1yZWxhdGVkIGZhY2V0Ci0JICB2YWxpZGF0aW9uIGZvciBRTmFtZXMgYW5kIE5PVEFUSU9OcyBhcyBwcm9wb3NlZCBieSB0aGUKLQkgIHNjaGVtYSBwZW9wbGUuCi0JKiB0ZXN0L3NjaGVtYXMvdW5pb24yKiByZXN1bHQvc2NoZW1hcy91bmlvbjIqOiBBZGRlZAotCSAgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdW5pb24gdHlwZXMgKGJ5IEdVWSBGYWJyaWNlKS4KLQotRnJpIE1heSAyMCAyMDo0ODowOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzYXZlLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBNYXJrIFZha29jIGZpeGluZyBzYXZpbmcgb2YKLQkgIENEQVRBIHdpdGggTlVMTCBjb250ZW50LgotCi1UaHUgTWF5IDEyIDE1OjE0OjI2IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBDaGFuZ2VkIHRoZSBWQUxJRF9UWk8gbWFjcm8gdG8gcmVzdHJpY3QKLQkgIHRoZSB0aW1lem9uZSB0byAtODQwIHRvIDg0MC4KLQotVGh1IE1heSAxMiAxNTowNToxMSBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogQXBwbGllZCBwYXRjaCBmcm9tIFN0ZXZlIE5haXJuIChidWcgIzMwMzY3MCkKLQkgIGZvciAic2lnbmVkIGludCIgb2YgdGhlIGRhdGUtdGltZSB0aW1lem9uZSBmaWVsZC4gU2lsZW5jZWQKLQkgIGEgd2FybmluZy4KLQotV2VkIE1heSAxMSAyMDowNDowOSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgcGF0Y2ggZm9yIHJlcGxhY2VOb2RlIGZyb20gQnJlbnQgSGVuZHJpY2tzCi0KLVR1ZSBNYXkgMTAgMTc6Mjc6NTIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXhlZCBidWcgIzMwMzY4MiBvZiBhIGxlYWsgcmVwb3J0ZWQgYnkgTWFsY29sbSBSb3dlCi0KLVR1ZSBNYXkgMTAgMTE6NTA6MTYgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdGFwaS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gU3RldmUgTmFpcm4gdG9mIGZpeCB0aGUgY29tcGlsYXRpb24KLQkgIHByb2JsZW0gZXhwb3NlZCBpbiBidWcgIzMwMzY0MAotCi1UdWUgTWF5IDEwIDExOjExOjI2IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRlc3Qvc2NoZW1hcy9idWczMDM1NjZfMSogcmVzdWx0L3NjaGVtYXMvYnVnMzAzNTY2XzFfMSo6Ci0JICBBZGRlZCByZWdyZXNzaW9uIGEgdGVzdCBwcm92aWRlZCBieSBIZWlrbyBPYmVyZGllayAoYnVnICMzMDM1NjYpLgotCi1Nb24gTWF5ICA5IDE3OjU2OjU4IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHBhdHRlcm4uYzogQ2hhbmdlZCB0aGUgWFBhdGggIi4iIHRvIHJlc29sdmUgb25seSBvbiB0aGUgZmlyc3QKLQkgIGxldmVsIGZvciBYTUwgU2NoZW1hIElEQ3MgKGJ1ZyAjMzAzNTY2IHJlcG9ydGVkIGJ5IEhlaWtvIE9iZXJkaWVrKS4KLQkgIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgcGF0dGVybi1saWtlIHJlc29sdXRpb24gb24gZXZlcnkgbGV2ZWwuCi0KLVN1biBNYXkgIDggMTM6MzU6MzkgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbWVtb3J5LmM6IGZpeGVkICMxNjk2MzAgc2VnZmF1bHQgaW4geG1sTWVtRGlzcGxheQotCi1GcmkgTWF5ICA2IDEzOjQwOjAzIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYzogZml4aW5nIGJ1ZyAjMzAzMDY4IGluY3JlYXNpbmcgdGhlIG5hbm9mdHAgYnVmZmVyLgotCSogZG9jL2FwaWJ1aWxkLnB5OiBmaXhlZCBfX2F0dHJpYnV0ZSgpIHBhcnNpbmcgcHJvYmxlbQotCSogZG9jLyogdGVzdGFwaS5jOiByZWdlbmVyYXRlZCB0aGUgZGVzY3JpcHRpb25zIGFuZCBkb2NzLgotCi1XZWQgTWF5ICA0IDExOjE2OjAwIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbiB0aHJlYWRzLmM6IG9uIGxpbnV4L2djYyB1c2Ugd2VhayBkZWZpbml0aW9ucwotCSAgdG8gYXZvaWQgbGlua2luZyB3aXRoIHB0aHJlYWQgbGlicmFyeSBvbiBub24tdGhyZWFkZWQgZW52aXJvbm1lbnRzLgotCSogeHBhdGguYzogYXBwbGllZCBwYXRjaCBmcm9tIE1hcmsgVmFrb2Mgdy5yLnQuIGEgYnVnZ3kgbmFtZXNwYWNlCi0JICBsaXN0IGFsbG9jYXRpb24uCi0KLUZyaSBBcHIgMjkgMTE6Mjc6MzcgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogcGFyc2VyLmM6IEZpeGVkIGEgdGVzdCBmb3IgZHVwbGljYXRlIGF0dHJpYnV0ZXM6IE5vbi1wcmVmaXhlZAotCSAgYXR0cmlidXRlcyB3ZXJlIHRyZWF0ZWQgYXMgYmVpbmcgYm91bmQgdG8gdGhlIGRlZmF1bHQgbmFtZXNwYWNlLgotCi1UdWUgQXByIDE5IDE3OjUxOjMyIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBGaXhlZCBkYXRlLXRpbWUgcmVsYXRlZCB2YWxpZGF0aW9uCi0JICAocmVwb3J0ZWQgYnkgRGF2aWQgQ3Jvc3NsZXksIGJ1ZyAjMzAwNTc2KS4KLQotVHVlIEFwciAxOSAxNjo1NTo0MCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgeG1scmVnZXhwLmM6IFJlbW92ZWQgNSB1bm5lY2Vzc2FyeQotCSAgZGVyZWZlcmVuY2VzIChyZXBvcnRlZCBieSBBbmRyaXksIGJ1ZyAjMzAxMDc0KS4KLQotVHVlIEFwciAxOSAyMjozMzoxOCBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogQWRkZWQgc29tZSBjb2RlIHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgZm9yCi0JICBjZWlsLCBmbG9vciBhbmQgcm91bmQgZnVuY3Rpb25zIChidWcgMzAxMTYyKQotCi1UdWUgQXByIDE5IDEzOjIxOjU0IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogUmVtb3ZlZCB3b3JrYXJvdW5kIGZvciBidWcgIzE3MjIxNSwgc2luY2UgaXQKLQkgIGRvZXMgbW9yZSBoYXJtIGluIHNvbWUgc2NlbmFyaW9zLiBBZGRlZCBzb21lIG9mIHRoZQotCSAgIlBhcnRpY2xlIFJlc3RyaWN0aW9uIE9LIiBjb25zdHJhaW50cyAtIG5vdCB5ZXQgZW5hYmxlZC4JICAKLQotTW9uIEFwciAxOCAxMzowMjo1NSBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiByZXN1bHQvc2NoZW1hcy9jaGFuZ2Vsb2cwOTMqOiBBZGRlZCB0ZXN0IHJlc3VsdHMuCi0KLU1vbiBBcHIgMTggMTI6NDI6MTQgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBBZGRlZCBvdXRwdXQgb2YgY2Fub25pY2FsIHZhbHVlcyBpbgotCSAgaWRlbnRpdHktY29uc3RyYWludCBlcnJvciBtZXNzYWdlcy4KLQkqIHhtbHNjaGVtYXN0eXBlcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXN0eXBlcy5oOgotCSAgQWRkZWQgeG1sU2NoZW1hR2V0Q2Fub25WYWx1ZVdodHNwKCkgdG8gdGhlIEFQSS4KLQkgIEZ1cnRoZXIgZW5oYW5jZW1lbnQgb2YgdGhlIGNhbm9uaWNhbCB2YWx1ZQotCSAgY29udmVyc2lvbi4KLQkqIHRlc3Qvc2NoZW1hcy9jaGFuZ2Vsb2cwOTNfMC4qOiBBZGRlZCB0ZXN0IHdpdGggYW4gWFNECi0JICBzdWJtaXR0ZWQgYnkgUmFuZHkgSi4gUmF5LgotCi1GcmkgQXByIDE1IDA5OjMzOjIxIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB2YWxpZC5jOiBBcHBsaWVkIERhbmllbCdzIGZpeCBmb3IgbWVtb3J5IGxlYWsgaW4gZHRkCi0JICBwcmVmaXggKGJ1ZyAzMDA1NTApLgotCSogeHBhdGguYzogbWlub3IgY2hhbmdlIHRvIGNvbW1lbnQgb25seQotCi1UaHUgQXByIDE0IDIwOjUyOjQxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1lbW9yeS5jOiBhZGRlZCB0aGUgY2FsbCB0byB0aGUgYnJlYWtwb2ludCByb3V0aW5lCi0JICB3aGVuIGEgbW9uaXRvcmVkIGJsb2NrIGlzIHJlYWxsb2NhdGVkIG9yIGZyZWVkCi0KLVdlZCBBcHIgMTMgMDU6NTU6NTEgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbmFub2h0dHAuYzogYXBwbGllZCBwYXRjaCBmcm9tIEFyb24gU3RhbnN2aWsgZm9yIGJ1ZyAjMTcyNTI1Ci0JICBhYm91dCBIVFRQIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXIgYmVpbmcgbG9zdAotCi1UdWUgQXByIDEyIDA0OjAzOjMyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5OiBhcHBsaWVkIHBhdGNoIGZyb20gQnJlbnQgSGVuZHJpY2tzCi0JICBhZGRpbmcgbmFtZXNwYWNlIHJlbW92YWwgYXQgdGhlIHB5dGhvbiBsZXZlbCAjMzAwMjA5Ci0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL25zZGVsLnB5OiBhZGRlZCB0aGUgcmVncmVzc2lvbgotCSAgdGVzdAotCi1TdW4gQXByIDEwIDA5OjAzOjIyIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBzZXZlcmFsIHBsYWNlcyB3aGVyZSBtZW1vcnkgY2xlYW51cCB3YXMgbm90Ci0JICBwcm9wZXJseSBkb25lIGFmdGVyIGFuIGVycm9yIHdhcyBkZXRlY3RlZCAocHJvYmxlbSB3YXMKLQkgIHJlcG9ydGVkIG9uIHRoZSBtYWlsaW5nIGxpc3QgYnkgUGF3ZWwgUGFsdWNoYSkKLQotRnJpIEFwciAgOCAyMTo1ODowNCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEFkZGVkIHN1YnN0aXR1dGlvbiBncm91cCBjb25zdHJhaW50czsgY2hhbmdlZAotCSAgdGhlIGJ1aWxkIG9mIHRoZSBwcmUtY29tcHV0ZWQgc3Vic3RpdHV0aW9uIGdyb3Vwcy4gQ2hhbm5lbGVkCi0JICBlcnJvcnMgZHVyaW5nIHhzaSBhc3NlbWJsaW5nIG9mIHNjaGVtYXMgdG8gdGhlIHZhbGlkYXRpb24KLQkgIGNvbnRleHQuIEZpeGVkIGEgYmlnIG1lbW9yeSBsZWFrLCB3aGljaCBvY2N1cmVkIHdoZW4gdXNpbmcKLQkgIElEQ3M6IHRoZSBwcmVjb21wdXRlZCB2YWx1ZSBvZiBhdHRyaWJ1dGVzIHdhcyBub3QgZnJlZWQgaWYKLQkgIHRoZSBhdHRyaWJ1dGUgZGlkIG5vdCByZXNvbHZlIHRvIGFuIElEQyBmaWVsZCAoZGlzY292ZXJlZAotCSAgd2l0aCB0aGUgaGVscCBvZiBSYW5keSBKLiBSYXkncyBzY2hlbWEsIHBvc3RlZCB0byB0aGUKLQkgIHhtbHNjaGVtYS1kZXYgbWFsaW5nIGxpc3QpLgotCi1GcmkgQXByICA4IDEzOjIyOjAxIENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogQWRkZWQgIlBhcnRpY2xlIGNvcnJlY3QgMiIgdG8gcGFyc2luZyBvZiBtb2RlbCBncm91cHMuCi0JICBBZGRlZCBoYW5kbGluZyBzdWJzdGl0dXRpb24gZ3JvdXBzIGluc2lkZSA8Y2hvaWNlPiBhbmQgPHNlcXVlbmNlPjsKLQkgIGZvciA8YWxsPiB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiBDaGFuZ2VkIGNpcmN1bGFyIGNoZWNrcyBmb3IKLQkgIG1vZGVsIGdyb3VwcyBkZWZpbml0aW9ucy4gIm1lbWJlclR5cGVzIiBhcmUgcHJvY2Vzc2VkIGF0IGRpZmZlcmVudAotCSAgbGV2ZWxzIG5vdzogY29tcG9uZW50IHJlc29sdXRpb24gZmlyc3QsIGNvbnN0cnVjdGlvbiBsYXRlcjsgdGhpcwotCSAgZ29lcyBoYW5kIGluIGhhbmQgd2l0aCBhIGdsb2JhbCBjaGFuZ2UgdG8gaGFuZGxlIGNvbXBvbmVudAotCSAgcmVzb2x1dGlvbiBpbiBhIGRpc3RpbmN0IHBoYXNlLiBGaXhlZCBpbnZhbGlkIGRlZmF1bHQgdmFsdWVzIGZvcgotCSAgZWxlbWVudHMgdG8gbWFyayB0aGUgc2NoZW1hIGFzIGludmFsaWQ7IHRoaXMganVzdCByZXN1bHRlZCBpbiBhbgotCSAgZXJyb3IgcmVwb3J0IHByZXZpb3VzbHksIGJ1dCB0aGUgc2NoZW1hIHdhcyBoYW5kbGVkIGFzIHZhbGlkLgotCSAgU2VwYXJhdGVkIHRoZSBhc3NpZ25tZW50IG9mIHRoZSBtb2RlbCBncm91cHMgdG8gcmVmZXJlbmNpbmcKLQkgIG1vZGVsIGdyb3VwIGRlZmluaXRpb24gcmVmZXJlbmNlcyAoaS5lLiBwYXJ0aWNsZXMpOyB0aGlzIHdhcwotCSAgbmVlZGVkIHRvIHBlcmZvcm0gdGhlIGNpcmN1bGFyaXR5IGNoZWNrIGZvciBtb2RlbCBncm91cCBkZWZpbml0aW9ucy4KLQkgIEFkZGVkICJFbGVtZW50IERlY2xhcmF0aW9uIFByb3BlcnRpZXMgQ29ycmVjdCAoZS1wcm9wcy1jb3JyZWN0KSIKLQkgIGNvbnN0cmFpbnRzLiBTZXBhcmF0ZWQgY29tcG9uZW50IHJlc29sdXRpb24gZm9yIHNpbXBsZS9jb21wbGV4Ci0JICB0eXBlcy4KLQkqIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaDogQWRkZWQgYSBmbGFnIGZvciBzdWJzdGl0dXRpb24KLQkgIGdyb3VwIGhlYWRzLgkgIAotCi1XZWQgQXByICA2IDIzOjE0OjAzIENFU1QgMjAwNSBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS4qOiBtYWtlIGluc3RhbGwgY2xlYW51cAotCi1XZWQgQXByICA2IDIyOjQyOjIzIENFU1QgMjAwNSBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndzogZml4ZWQgbWluZ3cgY29tcGlsYXRpb24KLQkqIHRlc3RNb2R1bGUuYzogcmVtb3ZlZCBtaW5ndyB3YXJuaW5ncwotCi1XZWQgQXByICA2IDIxOjU5OjExIENFU1QgMjAwNSBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiAuY3ZzaWdub3JlOiBhZGRlZCBFY2xpcHNlIHByb2plY3QgZmlsZXMgdG8gaWdub3JlIGxpc3QKLQotV2VkIEFwciAgNiAxNjowODoxMCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhlZCB0aGUgYnVnIGluIGxhbmcoKSBhcyByYWlzZWQgYnkgRWxsaW90dGUgUnVzdHkgSGFyb2xkCi0JKiByZXN1bHQvWFBhdGgvdGVzdHMvbGFuZ3NpbXBsZSB0ZXN0L1hQYXRoL3Rlc3RzL2xhbmdzaW1wbGUKLQkgIHRlc3QvWFBhdGgvZG9jcy9sYW5nOiBhZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdAotCi1UdWUgQXByICA1IDIzOjQ4OjM1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYzogYXBwbGllZCBmaXggZnJvbSBSb2IgUmljaGFyZHMgdG8gY29tcGlsZSBvbiBXaW5kb3dzLgotCi1UdWUgQXByICA1IDE3OjAyOjU4IENFU1QgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogQWRkZWQgIlR5cGUgRGVyaXZhdGlvbiBPSyAoQ29tcGxleCkiIGNvbnN0cmFpbnRzCi0JICBhbmQgYW5jaG9yZWQgdGhlbSBpbiB0aGUgIkVsZW1lbnQgTG9jYWxseSBWYWxpZCAoRWxlbWVudCkiCi0JICBjb25zdHJhaW50cy4gVGhpcyByZXN0cmljdHMgdGhlIHR5cGUgc3Vic3RpdHV0aW9uIHZpYSAieHNpOnR5cGUiLgotCi1UdWUgQXByICA1IDEzOjEwOjA2IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogcGF0Y2ggZnJvbSBNYXR0aGV3IEJ1cmdlc3MgdG8gaW1wcm92ZSBzb21lIHNjaGVtYXMKLQkgIGZhY2V0cyB2YWxpZGF0aW9uIG1lc3NhZ2VzLgotCi1TYXQgQXByICAyIDEyOjQ4OjQxIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qIGNvbmZpZ3VyZS5pbiBORVdTOiBwcmVwYXJpbmcgcmVsZWFzZSAyLjYuMTksIHVwZGF0ZWQgZG9jcyBhbmQKLQkgIHJlYnVpbGRpbmcuCi0KLVNhdCBBcHIgIDIgMTM6Mjc6MzIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHN0Yy9NYWtlZmlsZS5hbTogaW50ZWdyYXRlZCBmaXh1cC10ZXN0cy5weQotCi1GcmkgQXByICAxIDE5OjE0OjE4IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBmaXhlZCBhIGxhY2sgb2YgY29tbWVudCBhbmQgbWlzc2luZyB0ZXN0IGZvcgotCSAgYSBwb2ludGVyIGluIHRoZSBBUEkuCi0KLUZyaSBBcHIgIDEgMTc6NTQ6MjIgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHN0Yy9maXh1cC10ZXN0cy5weTogQSB0aW55IHNjcmlwdCB0byBmaXh1cCBzb21lIG9mIHRoZSBzY2hlbWEKLQkgIGZpbGVzIHVzZWQgZm9yIHRoZSB0ZXN0cy4KLQotRnJpIEFwciAgMSAxNzozMzo1MCBDRVNUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oCi0JICByZXN1bHQvc2NoZW1hcy9zcmMtZWxlbWVudDItKi5lcnIgcmVzdWx0L3NjaGVtYXMvZWxlbWVudC0qLmVycjoKLQkgIENvbW1pdHRpbmcgYWdhaW4sIHNpbmNlIHRoZSBDVlMgc2VydmVyIGFib3J0ZWQuCi0KLUZyaSBBcHIgIDEgMTU6Mjk6MjcgQ0VTVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IENvcnJlY3RlZCAnbGVuZ3RoJyBmYWNldCB2YWxpZGF0aW9uIGZvcgotCSAgUU5hbWVzIGFuZCBub3RhdGlvbnMuIENvcnJlY3RlZCB4bWxTY2hlbWFHZXRDYW5vblZhbHVlOiBzb21lCi0JICBkYXRhIHR5cGVzIGRpZCBub3QgcmV0dXJuIGEgdmFsdWUgaWYgYWxyZWFkeSBpbiBub3JtYWxpemVkCi0JICBmb3JtLgotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaDoKLQkgIEVsaW1pbmF0ZWQgY3JlYXRpb24gb2Ygc3RydWN0cyBmb3IgPHJlc3RyaWN0aW9uPiwgPGV4dGVuc2lvbj4sCi0JICA8c2ltcGxlQ29udGVudD4sIDxjb21wbGV4Q29udGVudD4sIDxsaXN0PiBhbmQgPHVuaW9uPjogdGhlCi0JICBpbmZvcm1hdGlvbiBpcyBub3cgc2V0IGRpcmVjdGx5IG9uIHRoZSBjb3JyZXNwb25kaW5nIHNpbXBsZS8KLQkgIGNvbXBsZXggdHlwZS4gQWRkZWQgc29tZSBtb3JlIGNvbXBsZXggdHlwZSBjb25zdHJhaW50cy4KLQkgIEFkZGVkIGZhY2V0IGRlcml2YXRpb24gY29uc3RyYWludHMuIEludHJvZHVjZWQgInBhcnRpY2xlIgotCSAgY29tcG9uZW50cywgd2hpY2ggc2VlbSB0byBiZSByZWFsbHkgbmVlZGVkIGlmIGFwcGx5aW5nCi0JICBjb25zdHJhaW50cy4gQ29ycmVjdGVkL2NoYW5nZSBzb21lIG9mIHRoZSBwYXJzaW5nIGZ1bmN0aW9ucy4KLQkgIFRoaXMgaXMgYWxsIGEgYml0IHNjYXJ5LCBzaW5jZSBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgY29kZS4KLQkqIHJlc3VsdC9zY2hlbWFzL3NyYy1lbGVtZW50Mi0qLmVyciByZXN1bHQvc2NoZW1hcy9lbGVtZW50LSouZXJyOgotCSAgQWRhcHRlZCByZWdyZXNzaW9uIHRlc3QgcmVzdWx0cy4KLQotRnJpIEFwciAgMSAxNjowNzo1OSBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvYXBpYnVpbGQucHkgZG9jL2VsZmdjY2hhY2sueHNsOiByZXZhbXBlZCB0aGUgZWxmZ2NjaGFjay5oIAotCSAgZm9ybWF0IHRvIGNvcGUgd2l0aCBnY2M0IGNoYW5nZSBvZiBhbGlhc2luZyBhbGxvd2VkIHNjb3BlcywgaGFkCi0JICB0byBhZGQgZXh0cmEgaW5mb3JtYXRpb25zIHRvIGRvYy9saWJ4bWwyLWFwaS54bWwgdG8gc2VwYXJhdGUKLQkgIHRoZSBoZWFkZXIgZnJvbSB0aGUgYyBtb2R1bGUgc291cmNlLgotCSogKi5jOiB1cGRhdGVkIGFsbCBjIGxpYnJhcnkgZmlsZXMgdG8gYWRkIGEgI2RlZmluZSBib3R0b21feHh4Ci0JICBhbmQgcmVpbXBvcnQgZWxmZ2NjaGFjay5oIHRoZXJlYWZ0ZXIsIGFuZCBhIGJpdCBvZiBjbGVhbnVwcy4KLQkqIGRvYy8vKiB0ZXN0YXBpLmM6IHJlZ2VuZXJhdGVkIHdoZW4gcmVidWlsZGluZyB0aGUgQVBJCi0KLVRodSBNYXIgMzEgMTc6MjA6MzIgQ0VTVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jOiBmaXhlZCBidWcgcmVwb3J0ZWQgYnkgUGV0ciBQYWphcywgaW4gdGhlIGFic2VuY2Ugb2YKLQkgIGVuY29kaW5nIFVURi04IHNob3VsZCByZWFsbHkgYmUgYXNzdW1lZC4gVGhpcyBtYXkgYnJlYWsgaWYgCi0JICB0aGUgSFRUUCBoZWFkZXJzIGluZGljYXRlcyBmb3IgZXhhbXBsZSBJU08tODg1OS0xIHNpbmNlIHRoaXMKLQkgIHRoZW4gYmVjb21lcyBhIHdlbGwgZm9ybWVkbmVzcyBlcnJvci4KLQotVGh1IE1hciAzMSAxNjo1NzoxOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYzogZml4ZWQgIzE3MjI2MCByZWR1bmRhbnQgYXNzaWdubWVudC4KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBmaXhlZCB4bWxTQVhQYXJzZURvYygpIGFuZCAKLQkgIHhtbFBhcnNlRG9jKCkgc2lnbmF0dXJlcyAjMTcyMjU3LgotCi1UaHUgTWFyIDMxIDE2OjExOjEwIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXggcG90ZW50aWFsIGNyYXNoIGlmIGN0eHQtPnNheC0+aWdub3JhYmxlV2hpdGVzcGFjZQotCSAgaXMgTlVMTCBhcyByZXBvcnRlZCBieSBidWcgIzE3MjI1NQotCi1UaHUgTWFyIDMxIDE1OjM2OjUyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogZml4ZWQgYSBwcm9ibGVtIGluIFJlbGF4LU5HIHZhbGlkYXRpb24gIzE1OTk2OAotCSogdGVzdC9yZWxheG5nL2xpc3QuKiByZXN1bHQvcmVsYXhuZy9saXN0Xyo6IGFkZGVkIHRoZSB0ZXN0Ci0JICB0byB0aGUgcmVncmVzc2lvbiBzdWl0ZQotCi1UaHUgTWFyIDMxIDEzOjA2OjAyIENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYzogZml4ZWQgYnVnICMxNjg1MDQKLQotVGh1IE1hciAzMSAxMjoyMjo1NCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWcuaC5pbiBjb25maWd1cmUuaW4gbmFub2Z0cC5jIG5hbm9odHRwLmMgeG1sbGludC5jCi0JICBtYWNvcy9zcmMvY29uZmlnLW1hYy5oOiB1c2UgWE1MX1NPQ0tMRU5fVCBpbnN0ZWFkIG9mIFNPQ0tMRU5fVAotCSAgc2luY2UgYXBwYXJlbnRseSBJQk0gY2FuJ3QgYXZvaWQgYnJlYWtpbmcgY29tbW9uIGRlZmluZXMgIzE2NjkyMgotCi1UaHUgTWFyIDMxIDEwOjQxOjQ1IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVuY29kaW5nLmM6IGZpeCB1bml0aW5pYWxpemVkIHZhcmlhYmxlIGluIG5vdCBmcmVxdWVudGx5IHVzZWQKLQkgIGNvZGUgYnVnICMxNzIxODIKLQotVGh1IE1hciAzMSAwMDo0NToxOCBDRVNUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwucHk6IGFub3RoZXIgcGF0Y2ggZnJvbSBCcmVudAotCSAgSGVuZHJpY2tzIHRvIGFkZCBuZXcgaGFuZGxlcnMgd2l0aCB0aGUgdmFyaW91cyB2YWxpZGl0eSBjb250ZXh0cwotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy92YWxpZERURC5weQotCSAgcHl0aG9uL3Rlc3RzL3ZhbGlkUk5HLnB5IHB5dGhvbi90ZXN0cy92YWxpZFNjaGVtYXMucHk6IGFsc28gCi0JICBhZGRlZCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBoZSBwcm92aWRlZAotCi1XZWQgTWFyIDMwIDA5OjM5OjI3IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQnJlbnQKLQkgIEhlbmRyaWNrcyB0byBhdm9pZCBsZWFrIGluIHB5dGhvbiBiaW5kaW5ncyB3aGVuIHVzaW5nIHNjaGVtYXMKLQkgIGVycm9yIGhhbmRsZXJzLgotCi1UdWUgTWFyIDI5IDIyOjI5OjI4IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmM6IGZpeGluZyBidWcgMTY4MTk2LCA8YSBuYW1lPSIiPiBtdXN0IGJlIFVSSSBlc2NhcGVkIHRvbwotCi1TdW4gTWFyIDI3IDEzOjI0OjI0IENFU1QgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogY2xlYW51cCBvZiB0aGUgUHJvcCByZWxhdGVkIGZ1bmN0aW9ucyBhbmQgeG1sTmV3Tm9kZUVhdE5hbWUKLQkgIGJ5IFJvYiBSaWNoYXJkcwotCi1UaHUgTWFyIDI0IDE5OjAxOjIyIFBTVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBnZW50ZXN0LnB5LCB0ZXN0YXBpLmM6IGZpeGVkIHByb2JsZW0gd2l0aCAnbWluaW1hbCBsaWJyYXJ5JwotCSAgY29tcGlsYXRpb24gKExJQlhNTF9QQVRURVJOX0VOQUJMRUQgbm90IHByb3Blcmx5IGNoZWNrZWQpIHJlcG9ydGVkCi0JICBieSBHcmVnIE1vcmdhbgotCi1UaHUgTWFyIDI0IDEyOjAxOjMwIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBGaXhlZCBjYWxsIHRvIGEgZmFjZXQgZXJyb3IgcmVwb3J0OiB0aGUgdHlwZSBvZgotCSAgdGhlIGVycm9yIHdhcyB3cm9uZywgcmVzdWx0aW5nIGluIGEgc2VnZmF1bHQgKGJ1ZyAjMTcxMjIwLCByZXBvcnRlZAotCSAgYnkgR1VZIEZhYnJpY2UpLgotCi1Nb24gTWFyIDIxIDIyOjU4OjM3IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBSZW1vdmVkIGEgc3R1cGlkIGJ1ZyBpbiB4bWxTY2hlbWFWYWxpZGF0ZUF0dHJpYnV0ZXMsCi0JICBmYWlsaW5nIHRvIGJ1aWxkIGEgbGlua2VkIGxpc3QgY29ycmVjdGx5IChidWcgIzE2OTg5OCwgcmVwb3J0ZWQKLQkgIGJ5IGJpbmcgc29uZywgaG1tLi4uKS4KLQotTW9uIE1hciAyMSAyMTowOTowNyBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYSBzZWdmYXVsdCwgd2hpY2ggb2NjdXJlZCBkdXJpbmcgYnViYmxpbmcKLQkgIG9mIElEQyBub2RlcyAoYnVnICMxNzA3NzkgYW5kICMxNzA3NzgsIHJlcG9ydGVkIGJ5IEdVWSBGYWJyaWNlKToKLQkgIGEgdmFyaWFibGUgd2FzIG1pc3NlZCB0byBiZSByZXNldCBpbiBhIGxvb3AuIERlYWN0aXZhdGVkIGJ1YmJsaW5nLAotCSAgaWYgbm90IHJlZmVyZW5jZWQgYnkgYSBrZXlyZWYuCi0KLVN1biBNYXIgMjAgMTE6MTM6MDIgUFNUIDIwMDUgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQkKLQkqIGMxNG4uYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBzcGVjaWFsIGNhc2UgIkRBVjoiIG5hbWVzcGFjZQotCWluIGMxNG4gcmVsYXRpdmUgbmFtZXNwYWNlcyBjaGVjayBhbmQgYWRkIHN0cnVjdHVyZWQgZXJyb3IgbWVzc2FnZXMKLQl0byBjMTRuIGNvZGUKLQotVGh1IE1hciAxNyAxMjo1NToyMyBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogUmVtb3ZlZCBpbmhlcml0YW5jZSBvZiAibWl4ZWQiIGNvbnRlbnQgdHlwZSBmb3IKLQkgIHNob3J0LWhhbmQgcmVzdHJpY3Rpb25zIG9mICJhbnlUeXBlIiAocmVwb3J0ZWQgYnkgR3V5IEZhYnJpY2UKLQkgIHRvIHRoZSBtYWlsaW5nIGxpc3QpLiBBZGRlZCB0aGUgbmFtZXNwYWNlIGNvbnZlcnNpb24gKGNoYW1lbGVvbgotCSAgaW5jbHVkZXMpIGZvciB0aGUgYmFzZSB0eXBlIHJlZmVyZW5jZSBvZiA8cmVzdHJpY3Rpb24+IGFuZAotCSAgPGV4dGVuc2lvbj4uCi0JKiB0ZXN0L3NjaGVtYXMvYnVnMTUyNDcwXzEueHNkOiBBZGFwdGVkIGR1ZSB0byB0aGUgYWJvdmUgY2hhbmdlCi0JICBvZiAibWl4ZWQiIGluaGVyaXRhbmNlLgotCi1UaHUgTWFyIDE3IDExOjAzOjU5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBmaXhlZCBhID0gLT4gPT0gZXJyb3IgcG9pbnRlZCBieSBHVVkgRmFicmljZQotCi1XZWQgTWFyIDE2IDIyOjUzOjUzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBtb3JlIGRlYnVnIG1lc3NhZ2VzIGZyb20gTWF0dGhldyBCdXJnZXNzCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogeG1sU2NoZW1hVmFsaWRhdGVMZW5ndGhGYWNldCBBUEkgbWlzc2luZyBjaGVjay4KLQotV2VkIE1hciAxNiAxNzozNzowNCBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBBYWFhbm5uZCBwdXR0aW5nIGJhY2sgdGhlIHByZXZpb3VzIGNoYW5nZXMgZG9uZQotCSAgYnkgRGFuaWVsLCB3aGljaCBJIG92ZXJ3cm90ZSB3aXRoIHRoZSBwcmV2aW91cyBjb21taXQuCi0KLVdlZCBNYXIgMTYgMTc6MjA6MjUgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmg6Ci0JICBIb3BlZnVsbHkgZmluaXNoZWQgdmFsaWRhdGlvbiBhZ2FpbnN0IGZhY2V0cyB0byB1c2UgdGhlIG5vcm1hbGl6ZWQKLQkgIHZhbHVlIG9mIGJvdGgsIHRoZSBmYWNldHMgYW5kIGluc3RhbmNlIHZhbHVlcy4gQWRkZWQgCi0JICB4bWxTY2hlbWFWYWxpZGF0ZUxlbmd0aEZhY2V0V2h0c3AoKSwgeG1sU2NoZW1hVmFsaWRhdGVGYWNldFdodHNwKCkKLQkgIGFuZCB4bWxTY2hlbWFHZXRWYWxUeXBlKCkgdG8gdGhlIHNjaGVtYSBBUEkuCi0KLVdlZCBNYXIgMTYgMTM6NTU6MzEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbjogZG8gbm90IHBhY2thZ2UgLmxhIGZpbGVzCi0JKiB4bWxsaW50LmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBHZXJyeSBNdXJwaHkgZm9yIHhtbGxpbnQgcmV0dXJuIGNvZGUKLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBmaXhlZCBhIGNvdXBsZSBvZiBtaXNzaW5nIHRlc3RzIG9mIHBhcmFtZXRlcnMKLQkgIGF0IHB1YmxpYyBBUEkgZW50cnkgcG9pbnRzLgotCi1UdWUgTWFyIDE1IDIzOjMxOjE0IEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogYSBjb3VwbGUgb2YgbW9yZSBjaGFuZ2VzIHRvIHZhcmlvdXMKLQkgIGRlY2ltYWwtaGFuZGxpbmcgcm91dGluZXMuICBGaXhlcyBweXRob24gc29tZSBwcm9ibGVtcwotCSAgdHVybmVkIHVwIGJ5IHRoZSBweXRob24gdGVzdHMuCi0JKiBNYWtlZmlsZS5hbTogY2hhbmdlIFNjaGVtYXNQeXRob25UZXN0cyBtZXNzYWdlIHRvIHdhcm4KLQkgIHRoYXQgdGhlcmUgYXJlIDEwICdleHBlY3RlZCcgZXJyb3JzIChyYXRoZXIgdGhhbiA2KSBzaW5jZQotCSAgd2Ugbm93IHJlamVjdCBhICcrJyBzaWduIG9uIGFuIHVuc2lnbmVkLgotCi1UdWUgTWFyIDE1IDE1OjQzOjI3IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmMgeG1sc2NoZW1hc3R5cGVzLmg6IEluIHByZXBhcmF0aW9uIHRvIHVzZQotCSAgbm9ybWFsaXplZCB2YWx1ZXMgb2YgZmFjZXRzIGR1cmluZyB2YWxpZGF0aW9uOiBjaGFuZ2VkIHRoZQotCSAgYXJndW1lbnRzIG9mIHNvbWUgc3RyaW5nIGNvbXBhcmlzb24gZnVuY3Rpb25zOyBhZGRlZCBhIHN0YXRpYwotCSAgeG1sU2NoZW1hVmFsaWRhdGVGYWNldEludGVybmFsKCkgd2l0aCBtb3JlIGFyZ3VtZW50cyB0byBiZQotCSAgbW9yZSBmbGV4aWJsZS4gUHJlcGFyZWQgWE1MX1NDSEVNQV9GQUNFVF9FTlVNRVJBVElPTiB2YWxpZGF0aW9uCi0JICB0byB1c2UgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zLiBGaXhlZCBzb21lIGFzc2lnbm1lbnRzIGluCi0JICB4bWxTY2hlbWFWYWxBdG9taWNUeXBlKCk6IHRvdGFsIGRpZ2l0IGNvdW50LCBsbywgbWksIGhpLgotCi1TdW4gTWFyIDEzIDE5OjMyOjAzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBjb25maWd1cmUuaW4gdGVzdGFwaS5jIGRvYy8qOiBwcmVwYXJpbmcgcmVsZWFzZSBvZiAyLjYuMTgKLQkgIHVwZGF0ZWQgZG9jcyBhbmQgcmVidWlsdAotCSogbGlieG1sLnNwZWMuaW46IHJlYWN0aXZhdGVkIGdjYyBwcm9maWxpbmcgZm9yIGdjYyA+PSA0LjAuMAotCi1TYXQgTWFyIDEyIDE5OjUwOjIyIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogcmVtb3ZlZCBhIHN0YXRpYyBidWZmZXIgaW4geG1sQnl0ZUNvbnN1bWVkKCksCi0JICBhcyBwb2ludGVkIGJ5IEJlbiBNYXVyZXIsIGZpeGVzICMxNzAwODYKLQkqIHhtbHNjaGVtYXMuYzogcmVtb3ZlIGEgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBwb2ludGVyIHdhcm5pbmcKLQotRnJpIE1hciAxMSAyMzo1MzoxMyBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGVuaGFuY2VkIHRoZSBwYXJzaW5nIG9mIFhNTF9TQ0hFTUFTX0RFQ0lNQUwKLQkgIGFuZCBtdWNoIG9mIHRoZSByb3V0aW5lIHhtbFNjaGVtYUNvbXBhcmVEZWNpbWFscy4gIFRoZQotCSAgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSB0byBmaXggYSBwcm9ibGVtIHJlcG9ydGVkIG9uIHRoZQotCSAgbWFpbGluZyBsaXN0IGJ5IEpvaG4gSG9ja2FkYXkuCi0KLUZyaSBNYXIgMTEgMTM6MjI6NTIgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IFRoZSBzY2hlbWEgcGFyc2VyIHdpbGwgc3RvcCBpZiBjb21wb25lbnRzIGNvdWxkCi0JICBub3QgYmUgcmVzb2x2ZWQuIFRoaXMgaXMgbm90IGNvbmZvcm1pbmcgdG8gdGhlIHNwZWMgYnV0IGZvciBub3cKLQkgIHdpbGwgYXZvaWQgaW50ZXJuYWwgZXJyb3JzIGR1cmluZyB0eXBlIGZpeHVwIGFuZCBjb250ZW50IG1vZGVsCi0JICBjcmVhdGlvbi4gUmVzdHJ1Y3R1cmVkIGluY2x1c2lvbi9pbXBvcnQgb2Ygc2NoZW1hdGE6IHRoaXMgYXZvaWRzCi0JICBkdXBsaWNhdGUsIHNlbGYgYW5kIGNpcmN1bGFyIGluY2x1c2lvbi4gQ2hhbWVsZW9uIGluY2x1ZGVzIGFyZQotCSAgc3RpbGwgd29ya2Fyb3VuZGVkLiBBZGRlZCByZXN0cmljdGlvbiB0byBkaXNhbGxvdyByZWZlcmVuY2VzIHRvCi0JICBub24taW1wb3J0ZWQgbmFtZXNwYWNlcy4gQ29ycmVjdGVkIHBhcnNpbmcgb2YgPGdyb3VwPi4KLQkqIHJlc3VsdC9zY2hlbWFzL2J1ZzE2Nzc1NF8wXzAqOiBBZGRlZCBhIG1pc3NpbmcgdGVzdCByZXN1bHQuCi0KLVRodSBNYXIgMTAgMTY6MDI6MTcgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sLmh0bWwgZG9jL2VuY29kaW5nLmh0bWw6IEVucmljaGVkIGVuY29kaW5nLmh0bWwgd2l0aCBtb3JlCi0JICBsaW5rIGFuZCBmb3Jld29yZCB3YXJuaW5nIHRvIGF2b2lkIHByb2JsZW0gd2l0aCBpZ25vcmFudAotCSAgcHJvZ3JhbW1lcnMsIGMuZiAjMTY5NzIxCi0KLVRodSBNYXIgMTAgMTU6MDE6MzQgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlYWRlcm5leHQucHk6IGFkZGVkCi0JICBhIHJlZ3Jlc3Npb24gdGVzdCBmcm9tIFJvYiBSaWNoYXJkcyBmb3IgdGhlIHByZXZpb3VzIGJ1ZwotCi1UaHUgTWFyIDEwIDEzOjIyOjM2IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGFwcGxpZWQgZml4IGZvciB4bWxUZXh0UmVhZGVyTmV4dCgpIGJ1ZyBmcm9tCi0JICBSb2IgUmljaGFyZHMKLQotVGh1IE1hciAxMCAxMTozNTo1NyBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1vZHVsZS5jOiBzZWNvbmQgcGF0Y2ggZnJvbSBSaWNrIEpvbmVzLCBwb3J0YWJpbGl0eSBmaXggZm9yCi0JICBIUC1VWAotCSogZG9jL2V4YW1wbGVzL3hwYXRoMS5jIGRvYy9leGFtcGxlcy94cGF0aDIuYzogZmlyc3QgZml4IGZyb20gUmljayBKb25lcwotCSAgdG8gYXZvaWQgd2FybmluZ3MuCi0KLVRodSBNYXIgMTAgMTA6MjA6MjMgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9oYXNoLmggbGlieG1sLmggbGlieG1sLnNwZWMuaW46IHNvbWUgZ2NjNCBwb3J0YWJpbGl0eQotCSAgcGF0Y2hlcywgaW5jbHVkaW5nIGEgc2VyaW91cyBhbGlhc2luZyBidWcgZXhwb3NlZCBpbiBzMzkwIAotCSAgd2hlbiB0cnlpbmcgdG8gY29udmVydCBkYXRhIHBvaW50ZXIgdG8gY29kZSBwb2ludGVyLgotCi1Nb24gTWFyICA3IDE4OjM0OjAwIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBUaW55IHJlc3RydWN0dXJpbmcgb2YgdGhlIHZhbGlkYXRpb24gc3RhcnQtdXAKLQkgIGZ1bmN0aW9ucy4gQWRkZWQgY2xlYW51cCBvZiB0aGUgdmFsaWRhdGlvbiBjb250ZXh0IGF0IHRoZQotCSAgZW5kIG9mIHZhbGlkYXRpb24uIFRoaXMgdGFrZXMgY2FyZSBvZiB0aGUgdmFsaWRhdGlvbiBjb250ZXh0Ci0JICBiZWluZyByZXVzZWQuCi0KLU1vbiBNYXIgIDcgMTI6MTI6MDEgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogVGlueSBjaGFuZ2VzIGluIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucwotCSAgSSBmb3Jnb3QgdG8gY29tbWl0IGxhc3QgdGltZS4KLQotRnJpIE1hciAgNCAyMjo1MTo0MiBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogQWRkZWQgSURDIHZhbGlkYXRpb24gb2YgYW55U2ltcGxlVHlwZSBhdHRyaWJ1dGUKLQkgIHZhbHVlczsgYW55d2F5IHRoZSBJREMga2V5IGNvbXBhcmlzb24gaXMgcmVzdHJpY3RlZCB0bwotCSAgYW55U2ltcGxlVHlwZSA8LS0+IHN0cmluZyBiYXNlZCB0eXBlcy4gRm9yIG90aGVyIHR5cGVzIHdlCi0JICB3b3VsZCBwb3NzaWJseSBuZWVkIHRoZSBjYW5vbmljYWwgbGV4aWNhbCByZXByZXNlbnRhdGlvbiBvZgotCSAgdGhlbTsgdGhpcyBzb3VuZHMgbm90IHBlcmZvcm1hbnQsIHNpbmNlIHdlIHdvdWxkIG5lZWQgdG8KLQkgIGJ1aWxkIHN1Y2ggYSByZXByZXNlbnRhdGlvbiBlYWNoIHRpbWUgd2Ugd2FudCB0byBjb21wYXJlIGFnYWluc3QKLQkgIGFueVNpbXBsZVR5cGUuIFRPRE86IHRoaW5rIGFib3V0IGJ1ZmZlcmluZyB0aGUgY2Fub25pY2FsIHZhbHVlcwotCSAgc29tZXdoZXJlLiBGaXhlZCBlcnJvciByZXBvcnRzIGZvciBkZWZhdWx0IGF0dHJpYnV0ZXMgdG8gd29yawotCSAgd2l0aG91dCBhIG5vZGUgYmVpbmcgc3BlY2lmaWVkLiBUaGlzIGFsbCBhbmQgdGhlIGVuYWJsaW5nIG9mIElEQwotCSAgdmFsaWRhdGlvbiBmaXhlcyBidWcgIzE2NTM0NiAocmVwb3J0ZWQgYnkgQmVub2l0IEdyP2dvaXJlIC0gY291bGQKLQkgIG5vdCByZWFkIGhpcyBsYXN0IG5hbWUgY29ycmVjdGx5IGZyb20gYnVnemlsbGEpLgotCi1GcmkgTWFyICA0IDE4OjU3OjQ0IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBFbmFibGVkIElEQyBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uLgotCSogeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmg6IAotCSAgQWRkZWQgeG1sU2NoZW1hQ29weVZhbHVlIHRvIHRoZSBBUEk7IHRoaXMgd2FzIGRvbmUgZHVlIHRvCi0JICB2YWxpZGF0aW9uIG9mIGRlZmF1bHQgYXR0cmlidXRlcyBhZ2FpbnN0IElEQ3M6IHNpbmNlIElEQyBrZXlzCi0JICBjb25zdW1lIHRoZSBwcmVjb21wdXRlZCB2YWx1ZSwgb25lIG5lZWRzIGEgY29weS4KLQkqIHBhdHRlcm4uYzogRW5hYmxlZCBJREMgc3VwcG9ydDsgdGhpcyBpcyBjdXJyZW50bHkgZG9uZQotCSAgdmlhIGNhbGxpbmcgeG1sUGF0dGVybmNvbXBpbGUgd2l0aCBhIGZsYWcgYXJnIG9mIDEuCi0KLVdlZCBNYXIgIDIgMTE6NDU6MTggQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBkb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi0JICB4c3RjL01ha2VmaWxlLmFtOiB0cnkgdG8gZml4IGEgcHJvYmxlbSB3aXRoIHZhbGdyaW5kLgotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi0JICBweXRob24vdGVzdHMvdHN0bWVtLnB5OiBhcHBsaWVkIG1lbW9yeSBsZWFrIGZpeCBmcm9tIEJyZW50IEhlbmRyaWNrcwotCSAgYy5mLiBidWcgIzE2NTM0OQotCi1Nb24gRmViIDI4IDExOjE4OjI0IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdHJlZS5jOiBDaGFuZ2VkIHhtbFNlYXJjaE5zQnlIcmVmIHRvIGNhbGwgeG1sTnNJblNjb3BlIHdpdGgKLQkgIHRoZSBwcmVmaXggaW5zdGVhZCBvZiB0aGUgbmFtZXNwYWNlIG5hbWUuCi0JKiB0ZXN0L3NjaGVtYXMvYW5ub3QtZXJyXzAueHNkIHRlc3Qvc2NoZW1hcy9lbGVtZW50LWVycl8wLnhzZDoKLQkgIEFkYXB0ZWQgaW52YWxpZCB2YWx1ZXMgb2YgdGhlICJpZCIgYXR0cmlidXRlLCBzaW5jZSB0aGV5IGFyZQotCSAgdmFsaWRhdGVkIG5vdy4KLQotRnJpIEZlYiAyNSAwODozMToxNiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYzogbmV3IHZlcnNpb24gd2l0aCBmaXhlcyBmcm9tIFJvYiBSaWNoYXJkcwotCi1UaHUgRmViIDI0IDE2OjM3OjUxIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGhyZWFkcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gUmljaCBTYWx6IGZvciBtdWx0aXRocmVhZGluZyBvbgotCSAgV2luZG93cy4KLQotV2VkIEZlYiAyMyAxNTowNDo0NiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHdyaXRlci5jOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBSb2IgUmljaGFyZHMgZml4aW5nIGEgY291cGxlCi0JICBvZiBidWdzIGluIHRoZSB3cml0ZXIKLQotTW9uIEZlYiAyMSAyMTo1MTowMyBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2F2ZS5jOiBmaXhlZCBwcm9ibGVtIHdoZW4gWE1MTElOVF9JTkRFTlQgd2FzIGVtcHR5IChidWcgMTY4MDMzKS4KLQkqIHhwYXRoLmM6IGZpeGVkIGNvbXBpbGF0aW9uIHdhcm5pbmcsIG5vIGNoYW5nZSB0byBsb2dpYy4KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBmaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nLCBubyBjaGFuZ2UgdG8gbG9naWMuCi0KLU1vbiBGZWIgMjEgMTQ6NDg6MjcgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWx3cml0ZXIuYzogYXBwbGllZCBwYXRjaCBmcm9tIFJvYiBSaWNoYXJkcyB0byBmaXggYSBwcm9ibGVtIHdpdGgKLQkgIHhtbFRleHRXcml0ZXJTdGFydEF0dHJpYnV0ZU5TCi0KLU1vbiBGZWIgMjEgMTE6NDE6NDEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXR0ZXJuLmMgeHBhdGguYzogZml4ZWQgcmVtYWluaW5nIGtub3duIGJ1Z3MgaW4gdGhlIFhQYXRoIHN0cmVhbWluZywKLQkgIGFuZCBzd2l0Y2hlZCBYUGF0aCB0byB1c2UgaXQgYnkgZGVmYXVsdCB3aGVuIHBvc3NpYmxlCi0KLVNhdCBGZWIgMTkgMTk6MjU6MTQgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogYSBiaXQgb2YgY2xlYW51cAotCSogZWxmZ2NjaGFjay5oIHRlc3RhcGkuYyBkb2MvKjogcmVidWlsdCB0aGUgQVBJIHRoZSB0ZXN0cyBhbmQKLQkgIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgcmVzdWx0LgotCi1GcmkgRmViIDE4IDIwOjM0OjAzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbQotCSAgQXJvbiBTdGFuc3ZpayB0byBhZGQgeG1sVGV4dFJlYWRlckJ5dGVDb25zdW1lZCgpCi0JKiB0ZXN0UmVhZGVyLmM6IGFkZGVkIGEgdGVzdCBvcHRpb24KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBmaXggYSBsYWNrIG9mIHBvaW50ZXIgY2hlY2tpbmcgaW4gQVBJcwotCi1GcmkgRmViIDE4IDEyOjQxOjEwIENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogdGVzdC9zY2hlbWFzL2J1ZzE2Nzc1NF8wKjogQWRkZWQgdGhlIHJlZ3Jlc3Npb24gdGVzdCBvZiBGcmFucwotCSAgRW5nbGljaCBmb3IgYnVnICMxNjc3NTQuCi0KLUZyaSBGZWIgMTggMTI6MzE6NDkgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IFN0YXJ0ZWQgc3VwcG9ydCBmb3IgSURDIHJlc29sdXRpb24gdG8gZGVmYXVsdAotCSAgYXR0cmlidXRlcy4gSWYgYnVpbGRpbmcgdGhlIGNvbnRlbnQgbW9kZWwgZm9yIDxhbGw+OiBlbnN1cmVkCi0JICB0byBwdXQgZWxlbWVudCBkZWNsYXJhdGlvbnMgYW5kIG5vdCB0aGUgcGFydGljbGVzIGludG8gdGhlCi0JICBjb250ZW50IG1vZGVsIGF1dG9tYXRvbiAodGhpcyB3YXMgYnVnICMxNjc3NTQsIHJlcG9ydGVkIGJ5Ci0JICBGcmFucyBFbmdsaWNoKS4KLQotVGh1IEZlYiAxNyAyMjozMTo1OCBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHBhdHRlcm4uYyBwYXR0ZXJuLmg6IFNvbWUgZXhwZXJpbWVudGFsIGFkZGl0aW9uIGZvciBwYXJzaW5nCi0JICBvZiBleHByZXNzaW9ucyBhbmQgc3RyZWFtYWJsZSB2YWxpZGF0aW9uLgotCSAgQWRkZWQgeG1sU3RyZWFtUHVzaEF0dHIgdG8gdGhlIEFQSS4KLQotVGh1IEZlYiAxNyAxOTo1NzozNSBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogQWRkZWQgdmFsaWRhdGlvbiBmb3IgdGhlIGF0dHJpYnV0ZSAiaWQiIGluIHRoZQotCSAgc2NoZW1hdGE7IGRvaW5nIHRoaXMgbmVlZGVkIGVycm9yIHJlcG9ydCBmaXhlcyBmb3Igbm90YXRpb25zLAotCSAgZmFjZXRzIGFuZCBncm91cC4gQ2hhbmdlZCBOT1RBVElPTiB2YWxpZGF0aW9uIHRvIHdvcmsgd2l0aCB0aGUKLQkgIGRlY2xhcmVkIE5PVEFUSU9OcyBpbiB0aGUgc2NoZW1hOyB0aGlzIGRvZXMgaGF2ZSBubyBpbXBhY3Qgb24KLQkgIHRoZSB2YWxpZGF0aW9uIHZpYSB0aGUgcmVsYXhuZyBtb2R1bGUuCi0JKiB4bWxzY2hlbWFzdHlwZXMuYyBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzdHlwZXMuaDoKLQkgIEFkZGVkIHhtbFNjaGVtYU5ld05PVEFUSU9OVmFsdWUgdG8gdGhlIEFQSSB0byBiZSBhYmxlIHRvIGRvCi0JICB0aGUgTk9UQVRJT04gdmFsaWRhdGlvbiBkZXNjcmliZWQgYWJvdmUuCi0JKiB0ZXN0L3NjaGVtYXMvZWxlbWVudC1lcnJfMC54c2QgdGVzdC9zY2hlbWFzL2Fubm90LWVycl8wLnhzZDoKLQkgIEZpeGVkIHRoZSB2YWx1ZXMgb2YgdGhlICJpZCIgYXR0cmlidXRlcywgd2hpY2ggd2VyZSBub3QgdmFsaWRhdGVkCi0JICBwcmV2aW91c2x5LiAgCi0KLVRodSBGZWIgMTcgMTI6MDM6NDYgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZpeGVkIGNvbXBhcmlzb24gZm9yIGRlZmF1bHQvZml4ZWQgYXR0cmlidXRlCi0JICB2YWx1ZXMsIGlmIHRoZSB0eXBlIHdhcyAneHNkOnN0cmluZycuIENoYW5nZWQgdGhlIGNvbXBhcmlzb24KLQkgIGZvciBJRENzIHRvIHVzZSB0aGUgd2hpdGVzcGFjZSBhd2FyZSBjb21wYXJpc29uIGZ1bmN0aW9uLgotCSogeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmg6Ci0JICBBZGRlZCB4bWxTY2hlbWFHZXRDYW5vblZhbHVlLCB4bWxTY2hlbWFOZXdTdHJpbmdWYWx1ZSBhbmQKLQkgIHhtbFNjaGVtYUNvbXBhcmVWYWx1ZXNXaHRzcCB0byB0aGUgQVBJLiBBZGRlZCBmdW5jdGlvbnMKLQkgIHRvIGNvbXBhcmUgc3RyaW5ncyB3aXRoIHdoaXRlc3BhY2UgY29tYmluYXRpb25zIG9mICJwcmVzZXJ2ZSIsCi0JICAicmVwbGFjZSIgYW5kICJjb2xsYXBzZSIuCi0KLVdlZCBGZWIgMTYgMTM6MjQ6MzUgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEZ1cnRoZXIgd29yayBvbiBJRENzLCBlc3BlY2lhbGx5IGV2YWx1YXRpb24gZm9yCi0JICBhdHRyaWJ1dGUgbm9kZXMuCi0KLVdlZCBGZWIgMTYgMDE6MTk6MjcgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBmaXggdGhlIGNvbW1lbnQgdG8gZGVzY3JpYmUgdGhlIHJlYWwgcmV0dXJuIHZhbHVlcwotCSogcGF0dGVybi5jIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwvcGF0dGVybi5oOiBsb3Qgb2Ygd29yayBvbgotCSAgdGhlIHBhdHRlcm5zLCBwbHVnZ2luIGluIHRoZSBYUGF0aCBkZWZhdWx0IGV2YWx1YXRpb24sIGJ1dAotCSAgZGlzYWJsZWQgcmlnaHQgbm93IGJlY2F1c2UgaXQncyBub3QgeWV0IGdvb2QgZW5vdWdoIGZvciBYU0xULgotCSAgcGF0dGVybi5oIHN0cmVhbWluZyBBUEkgYXJlIGxpa2VseSB0byBiZSBjaGFuZ2VkIHRvIGhhbmRsZQotCSAgcmVsYXRpdmUgYW5kIGFic29sdXRlIHBhdGhzIGluIHRoZSBzYW1lIGV4cHJlc3Npb24uCi0KLVR1ZSBGZWIgMTUgMTU6MzM6MzIgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IEFkZGVkIElEQyBldmFsdWF0aW9uIGZvciBhdHRyaWJ1dGUgbm9kZXMuCi0JICBNYWRlICduaWwnZWQgZWxlbWVudHMgd29yay4gQWRkZWQgYSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlCi0JICBmb3IgJ3N0cmljdCcgYXR0cmlidXRlIHdpbGRjYXJkcy4KLQkqIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IEFkZGVkIGFuIGVycm9yIGNvZGUgZm9yCi0JICB3aWxkY2FyZHMuCi0JKiByZXN1bHQvc2NoZW1hcy9hbnlBdHRyLXByb2Nlc3NDb250ZW50cy1lcnIxXzBfMC5lcnI6IEFkYXB0ZWQuICAKLQotU3VuIEZlYiAxMyAxNjoxNTowMyBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCVRoaXMgY2hhbmdlIHN0YXJ0ZWQgb3V0IGFzIGEgc2ltcGxlIGRlc2lyZSB0byBzcGVlZCB1cCB0aGUKLQlleGVjdXRpb24gdGltZSBvZiB0ZXN0YXBpLmMsIHdoaWNoIHdhcyBiZWluZyBkZWxheWVkIGJ5Ci0JbmFtZXNlcnZlciByZXF1ZXN0cyBmb3Igbm9uLWV4aXN0ZW50IFVSTCdzLiAgRnJvbSB0aGVyZSBpdAotCWp1c3Qgc29ydCBvZiBncmV3LCBhbmQgZ3Jldy4uLi4KLQkqIG5hbm9odHRwLmMsIG5hbm9mdHAuYzogY2hhbmdlZCB0aGUgcHJvY2Vzc2luZyBvZiBVUkwncwotCSAgdG8gdXNlIHRoZSB1cmkuYyByb3V0aW5lcyBpbnN0ZWFkIG9mIGN1c3RvbSBjb2RlLgotCSogaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogYWRkZWQgY29kZSBYTUxfRlRQX1VSTF9TWU5UQVgKLQkqIHVyaS5jOiBhZGRlZCBhY2NlcHRpbmcgaXBWNiBhZGRyZXNzZXMsIGluIGFjY29yZGFuY2Ugd2l0aAotCSAgUkZDJ3MgMjczMiBhbmQgMjM3MyAoVE9ETzogYWxsb3cgaXBWNCB3aXRoaW4gaXBWNikKLQkqIGdlbnRlc3QucHksIHRlc3RhcGkuYzogZml4ZWQgYSBmZXcgcHJvYmxlbXMgd2l0aCB0aGUKLQkgIHRlc3Rpbmcgb2YgdGhlIG5hbm9mdHAgYW5kIG5hbm9odHRwIHJvdXRpbmVzLgotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oOiBtaW5vciBjaGFuZ2UgdG8gZml4IGEKLQkgIHdhcm5pbmcgb24gdGhlIGRvY3MgZ2VuZXJhdGlvbgotCSogcmVnZW5lcmF0ZWQgdGhlIGRvY3MKLQotU2F0IEZlYiAxMiAwOTowNzoxMSBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgeG1sWEluY2x1ZGVQYXJzZUZpbGUgdG8gcHJldmVudAotCSAgb3ZlcndyaXRpbmcgWE1MX0NPTVBMRVRFX0FUVFJTIHdoZW4gc2V0dGluZyBwY3R4dC0+bG9hZHN1YnNldAotCSAgKGJ1ZyAxNjYxOTkpCi0JKiBNYWtlZmlsZS5hbSwgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtLCB4c3RjL01ha2VmaWxlLmFtOiBhZGRlZAotCSAgY29kZSB0byBhZGQgJCh0b3BfYnVpbGRkaXIpLy5saWJzIHRvIExEX0xJQlJBUllfUEFUSCB3aGVuZXZlcgotCSAgUFlUSE9OUEFUSCBpcyBzZXQsIHRvIGFzc3VyZSBuZXcgbGlieG1sMiByb3V0aW5lcyBhcmUgdXNlZC4KLQotRnJpIEZlYiAxMSAyMjoyMDo0MSBIS1QgMjAwNSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmM6IGZpeGVkIHByb2JsZW0gd2hlbiBubyBpbml0aWFsICJjaHVuayIgd2FzCi0JICBnaXZlbiB0byB4bWxDcmVhdGVQdXNoUGFyc2VyIChidWcgMTYyNjEzKQotCi1GcmkgRmViIDExIDE4OjM3OjIyIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkaWN0LmM6IGZpeGVkIGNvbXBpbGF0aW9uIHdhcm5pbmcKLQkqIHBhcnNlci5jOiBjaGFuZ2VkIHhtbFdhcm5pbmdNc2cgc28gY3R4dC0+ZXJyTm8gaXMgbm90IHNldAotCSogeG1sbGludC5jOiBjaGFuZ2VkIHRvIHJldHVybiBub24temVybyBzdGF0dXMgaWYgZXJyb3IKLQkgIG9uIHhpbmNsdWRlIHByb2Nlc3NpbmcKLQkqIHhtbHNhdmUuYzogbWlub3IgZGVsZXRpb24gb2YgYSByZWR1bmRhbnQgY29uZGl0aW9uIHN0YXRlbWVudAotCQotV2VkIEZlYiAgOSAxNzo0Nzo0MCBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogYXBwbGllZCBwYXRjaCB0byB4bWxTZXROc1Byb3AgZnJvbSBNaWtlIEhvbW1leQotCi1TdW4gRmViICA2IDAwOjE3OjU3IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGF0dGVybi5jIHhtbGxpbnQuYzogZml4ZWQgaW1wbGVtZW50YXRpb24gZm9yIHwKLQkqIHRlc3QvcGF0dGVybi9jb25qLiogcmVzdWx0L3BhdHRlcm4vY29uajogYWRkZWQgYSBzcGVjaWZpYyByZWdyZXNzaW9uCi0JICB0ZXN0Ci0KLVNhdCBGZWIgIDUgMTg6MzY6NTYgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXR0ZXJuLmM6IGZpcnN0IGltcGxlbWVudGF0aW9uIGZvciB8IHN1cHBvcnQKLQotU2F0IEZlYiAgNSAxNDo1ODo0NiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhdHRlcm4uYzogZml4ZWQgdGhlIG5hbWVzcGFjZXMgc3VwcG9ydAotCSogdHJlZS5jOiBmaXhlZCB4bWxHZXROb2RlUGF0aCB3aGVuIG5hbWVzcGFjZXMgYXJlIHVzZWQKLQkqIHJlc3VsdC9wYXR0ZXJuL211bHRpcGxlIHJlc3VsdC9wYXR0ZXJuL25hbWVzcGFjZXMKLQkgIHRlc3QvcGF0dGVybi9tdWx0aXBsZS4qIHRlc3QvcGF0dGVybi9uYW1lc3BhY2VzLio6IGFkZGVkCi0JICBtb3JlIHJlZ3Jlc3Npb24gdGVzdHMKLQotRnJpIEZlYiAgNCAxODoyNjo0MyBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogZml4ZWQgb25lIGludGVybmFsIGZ1bmN0aW9uCi0JKiBkb2MvTWFrZWZpbGUuYW0gZG9jL3dpa2kueHNsOiBhcHBsaWVkIHBhdGNoIGZyb20gSm9lbCBSZWVkCi0JKiB0ZXN0YXBpLmMgZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvbGlieG1sMi1yZWZzLnhtbDogcmVnZW5lcmF0ZWQKLQotRnJpIEZlYiAgNCAwMDoyNTo0MyBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiB1c2UgdGhlIHdhbGtlciB0byB0ZXN0IHRoZSBwYXR0ZXJucyBpbnN0ZWFkIG9mCi0JICB0aGUgbm9ybWFsIHJlYWRlcgotCSogcGF0dGVybi5jIHhtbGxpbnQuYzogYnVnIGZpeGVzIGluIHRoZSB0cmFpbiBpbmNsdWRpbmcgZml4aW5nIHRoZQotCSAgc3R1cGlkIGJ1aWxkIGJyZWFrLgotCi1UdWUgRmViICAxIDE4OjE1OjUyIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGF0dGVybi5jOiBtb3JlIGJ1ZyBmaXhlcyBmb3IgdGhlIFhQYXRoIHN0cmVhbWluZyBjb2RlLgotCi1Nb24gSmFuIDMxIDE3OjU5OjI0IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBJbnRlZ3JhdGVkIHRoZSBzdHJlYW1pbmcgcGF0dGVybiBmcm9tIHRoZQotCSAgcGF0dGVybiBtb2R1bGUuIEZpeGVkIHNvbWUgSURDIGNvZGUgYnVncy4gQ2hhbmdlZAotCSAgZmFsbGJhY2sgZm9yIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbiBhZGRpdGlvbiB0byB3b3JrIGxpa2UgZm9yCi0JICBlbGVtZW50IGRlY2xhcmF0aW9ucy4JCi0KLU1vbiBKYW4gMzEgMDE6Mjc6MjIgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXR0ZXJuLmMgeG1sbGludC5jOiBidWdmaXhlcyBhcm91bmQgdGhlIHN0cmVhbWluZyBwYXR0ZXJucwotCi1TdW4gSmFuIDMwIDIzOjM1OjE5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluIHJlc3VsdC9wYXR0ZXJuL3NpbXBsZSAKLQkgIHRlc3QvcGF0dGVybi9zaW1wbGUuKjogYWRkZWQgZmlyc3QgdGVzdCBmb3IgdGhlIHBhdHRlcm5zCi0JKiBwYXR0ZXJuLmMgeG1sbGludC5jOiBhIGZldyBmaXhlcwotCi1TdW4gSmFuIDMwIDE5OjI3OjIzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGF0dGVybi5jIGluY2x1ZGUvbGlieG1sL3BhdHRlcm4uaCB4bWxsaW50LmM6IGFkZGVkIGEgCi0JICBzdHJlYW1pbmcgcGF0dGVybiBkZXRlY3RvciBmb3IgYSBzdWJzZXQgb2YgWFBhdGgsIHNob3VsZAotCSAgaGVscCBLYXNpbWllciBmb3IgaWRlbnRpdHkgY29uc3RyYWludHMKLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IGFwcGxpZWQgU3RlcGhhbmUgQmlkb3VsIHBhdGNoIHRvIGZpbmQKLQkgIHBhdGhzIHdpdGhvdXQgYnJlYWtpbmcuCi0KLUZyaSBKYW4gMjggMTg6NTM6NDAgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGZpeGVkIGFuIHVudGVzdGVkIHBvaW50ZXIgZGVyZWZlcmVuY2UgYW5kIGEgJiB2cyAmJgotCi1GcmkgSmFuIDI4IDE4OjM3OjE4IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGltcGxlbWVudGF0aW9uIG9mIHhtbFRleHRSZWFkZXJSZWFkU3RyaW5nIGJ5Ci0JICBCam9ybiBSZWVzZQotCi1GcmkgSmFuIDI4IDE2OjUxOjQ3IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBDb3JyZWN0ZWQgYW4gYW1iaWdpb3VzIHN5bWJvbC1zcGFjZSBmb3IKLQkgIGxvY2FsIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbnMuIElGREVGZWQgbW9yZSBJREMgY29kZSB0bwotCSAgc3VycHJlc3MgY29tcGlsZXIgd2FybmluZ3MuCi0KLUZyaSBKYW4gMjggMDA6NTc6MDQgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBiYWtlZmlsZS9SZWFkbWUudHh0IGJha2VmaWxlL0Jha2VmaWxlcy5ia2dlbiBiYWtlZmlsZS9saWJ4bWwyLmJrbDoKLQkgIGZpbGVzIGZvciB0aGUgQmFrZWZpbGUgZ2VuZXJhdG9yIGZvciBNYWtlZmlsZXMgZnJvbSBGcmFuY2VzY28KLQkgIE1vbnRvcnNpCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGZpeGVzIGZvciBXaW5kb3dzIGNvbXBpbGF0aW9uIHdpdGggbm9uLWRlZmF1bHQKLQkgIGZsYWdzIGJ5IEpvZWwgUmVlZAotCi1UaHUgSmFuIDI3IDE4OjIzOjUwIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXhlZCB4bWxDb3B5RG9jIHRvIGFsc28gY29weSB0aGUgZG9jLT5VUkwgYXMgcG9pbnRlZAotCSAgYnkgTWFydGlqbiBGYWFzc2VuCi0KLVRodSBKYW4gMjcgMTM6Mzk6MDQgQ0VUIDIwMDUgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oOgotCSAgQWRkZWQgYW4gaW5pdGlhbCBza2VsZXRvbiBmb3IgaW5kZW50aXR5LWNvbnN0cmFpbnRzLiBUaGlzIGlzIGFsbAotCSAgZGVmaW5lZCBvdXQsIHNpbmNlIG5vdCBjb21wbGV0ZSwgcGx1cyBpdCBuZWVkcyBzdXBwb3J0IGZyb20gb3RoZXIKLQkgIG1vZHVsZXMuCi0JICBBZGRlZCBtYWNoYW5pc20gdG8gc3RvcmUgZWxlbWVudCBpbmZvcm1hdGlvbiBmb3IgdGhlCi0JICBhbmNlc3Rvci1vci1zZWxmIGF4aXM7IHRoaXMgaXMgbmVlZGVkIGZvciBpZGVudGl0eS1jb25zdHJhaW50cwotCSAgYW5kIHNob3VsZCBiZSBoZWxwZnVsbCBmb3IgYSBmdXR1cmUgc3RyZWFtYWJsZSB2YWxpZGF0aW9uLgotCSogaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogQWRkZWQgYW4gZXJyb3IgY29kZSBmb3IKLQkgIGlkZW50aXR5LWNvbnN0cmFpbnRzLgotCi1XZWQgSmFuIDI2IDAxOjAzOjM3IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGhhZCB0byBmaXggZ2VuZXJhdGlvbiBhbmQgcmVidWlsZC4KLQkqIHZhbGlkLmM6IHRoZSB0ZXN0YXBpIGZvdW5kIGEgYnVnIGluIHRoZSBsYXN0IGNvZGUgb2YgY291cnNlICEKLQotV2VkIEphbiAyNiAwMDo0MzowNSBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHRlc3RhcGkuYyBkb2MvTWFrZWZpbGUuYW06IGZpeGluZyB0aGUgd2F5IHRlc3RhcGkuYwotCSAgaXMgZ2VuZXJhdGVkLCBmaXhlcyBidWcgIzE2MTM4NgotCSogZGljdC5jOiBmaXggYSBjb21tZW50IHR5cG8KLQkqIGVsZmdjY2hhY2suaCBkb2MvKjogcmVnZW5lcmF0ZWQKLQotVHVlIEphbiAyNSAyMjozOTozMyBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmb3VuZCBhbmQgZml4ZWQgMiBwcm9ibGVtcyBpbiB0aGUgaW50ZXJuYWwgc3Vic2V0IHNjYW5uaW5nCi0JICBjb2RlIGFmZmVjdGluZyB0aGUgcHVzaCBwYXJzZXIgKGFuZCB0aGUgcmVhZGVyKSwgZml4ZXMgIzE2NTEyNgotCSogdGVzdC9pbnRzdWJzZXQyLnhtbCByZXN1bHQvL2ludHN1YnNldDIueG1sKjogYWRkZWQgdGhlIHRlc3QgY2FzZQotCSAgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLVR1ZSBKYW4gMjUgMDE6MjA6MTEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0ZHNvLmMgeG1scmVnZXhwLmM6IHdhcm5pbmcgcGF0Y2hlcyBmcm9tIFBldGVyIEJyZWl0ZW5sb2huZXIKLQkqIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmggdmFsaWQuYyBwYXJzZXIuYzogc2VyaW91cyBEVEQgcGFyc2luZwotCSAgc3BlZWR1cHMsIHN0YXJ0IHRvIGRlcHJlY2F0ZSAzIEVsZW1lbnREZWYgcmVsYXRlZCBlbnRyeSBwb2ludAotCSAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGJldHRlciBvbmVzLgotCi1Nb24gSmFuIDI0IDAwOjQ3OjQxIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBtb3JlIGhhc2ggZGljdGlvbmFyeSBpbnRlcm5pbmcgY2hhbmdlcwotCi1TdW4gSmFuIDIzIDIzOjU0OjM5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaGFzaC5jIGluY2x1ZGUvbGlieG1sL2hhc2guaDogYWRkZWQgeG1sSGFzaENyZWF0ZURpY3Qgd2hlcmUKLQkgIHRoZSBoYXNoIHJldXNlcyB0aGUgZGljdGlvbm5hcnkgZm9yIGludGVybmFsIHN0cmluZ3MKLQkqIGVudGl0aWVzLmMgdmFsaWQuYyBwYXJzZXIuYzogcmV1c2UgdGhhdCBuZXcgQVBJLCBsZWFkcyB0byBhIGRlY2VudAotCSAgc3BlZWR1cCB3aGVuIHBhcnNpbmcgZm9yIGV4YW1wbGUgRG9jQm9vayBkb2N1bWVudHMuCi0KLVN1biBKYW4gMjMgMjE6MTQ6MjAgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogc21hbGwgc3BlZWR1cCBpbiBza2lwcGluZyBibGFua3MgY2hhcmFjdGVycwotCSogZW50aXRpZXMuYzogaW50ZXJuaW5nIHRoZSBlbnRpdGllcyBzdHJpbmdzIAotCi1TdW4gSmFuIDIzIDE4OjM1OjAwIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGJvb3N0aW5nIGNvbW1vbiBjb21tbmVudCBwYXJzaW5nIGNvZGUsIGl0IHdhcyByZWFsbHkKLQkgIHNsb3cuCi0JKiB0ZXN0L2NvbW1lbnRbMy01XS54bWwgcmVzdWx0Ly9jb21tZW50WzMtNV0ueG1sKjogYWRkZWQgc3ByZWNpZmljCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVN1biBKYW4gMjMgMDE6MDA6MDkgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogc21hbGwgb3B0aW1pemF0aW9uIGJhY2suCi0KLVNhdCBKYW4gMjIgMDA6NDA6MzEgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkaWN0LmMgcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvZGljdC5oOiBhIHNpbmdsZSBsb2NrIHZlcnNpb24KLQkgIG1vc3RseSBhdm9pZCB0aGUgY29zdCBwZW5hbHR5IG9mIHRoZSBsb2NrIGluIGNhc2Ugb2YgbG93IAotCSAgcGFyYWxsZWxpc20sIHNvIGFwcGx5aW5nIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLgotCi1GcmkgSmFuIDIxIDE3OjU0OjA2IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGljdC5jOiBwYXRjaCBmcm9tIEdhcnkgQ29hZHkgdG8gZml4IGEgcmFjZSBpbiBkaWN0IHJlZmVyZW5jZQotCSAgY291bnRpbmcgaW4gbXVsdGl0aHJlYWRlZCBhcHBzLgotCi1GcmkgSmFuIDIxIDE2OjA4OjIxIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1ZyAjMTY0NTU2IHdoZXJlIG5vbi1mYXRhbCBlcnJvcnMgc3RvcHBlZAotCSAgcHVzaCBwYXJzaW5nIGFuZCB4bWxyZWFkZXIuCi0JKiBNYWtlZmlsZS5hbTogZml4dXAKLQkqIHRlc3QvZXJyb3JzL3dlYmRhdi54bWwgcmVzdWx0L2Vycm9ycy93ZWJkYXYqOiBhZGRpbmcgcmVncmVzc2lvbgotCSAgdGVzdCBmb3IgdGhpcyBwcm9ibGVtLgotCi1XZWQgSmFuIDE5IDE3OjI0OjM0IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBDb3JyZWN0ZWQgdGFyZ2V0TmFtZXNwYWNlIGluCi0JICB4bWxTY2hlbWFFbGVtZW50RHVtcC4gQ29zbWV0aWMgY2hhbmdlcyB0byB0aGUgZHVtcCBvdXRwdXQuCQotCi1TdW4gSmFuIDE2IDIxOjAwOjUzIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIE5FV1MgZG9jLyo6IHByZXBhcmluZyByZWxlYXNlIG9mIDIuNi4xNywKLQkgIHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvY3MKLQotU3VuIEphbiAxNiAxOTo1ODozNiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBiZXR0ZXIgZml4IGZvciAjMTUxNjk0IG5vdCBraWxsaW5nIGMxNG4gcmVncmVzc2lvbiB0ZXN0cwotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGZpeGluZyBidWcgIzE1NzY1MwotCi1TdW4gSmFuIDE2IDE5OjAxOjA2IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGluZyBidWcgIzE1MTY5NCwgbGluZSBzaG91bGQgYWx3YXlzIGJlIHNldCBpbiB0aGUKLQkgIGVsZW1lbnRzLgotCi1TdW4gSmFuIDE2IDAxOjA0OjE4IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IHRyeWluZyB0byBmaXggYXQgbGVhc3QgdGhlIG1lc3NhZ2UgZnJvbQotCSAgYnVnICMxNTg2MjgKLQkqIGluY2x1ZGUvbGlieG1sL3htbHNhdmUuaCB4bWxzYXZlLmM6IGFkZGVkIGZpcnN0IHhtbHNhdmUgb3B0aW9uCi0JICBmb3IgZm9ybWF0LCBjLmYuIGJ1ZyAjMTU5OTk3Ci0KLVNhdCBKYW4gMTUgMTg6NDQ6MzAgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLnB5OiBtYWtlIF9fc3RyX18gY2FsbCBzZXJpYWxpemUoKSBvbiBub2RlcywgYy5mLiAKLQkgIGJ1ZyAjMTU3ODcyCi0KLVNhdCBKYW4gMTUgMTg6MTg6MDcgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vZnRwLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBEYW4gTWNOaWNob2wgZm9yIGNvbXBpbGF0aW9uIG9uIEFJWAotCi1TYXQgSmFuIDE1IDEzOjM1OjE5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBidWcgIzE1NzYzMyBpbiByZWxheG5nIGNob2ljZSBvcHRpbWl6YXRpb24KLQkqIHJlc3VsdC9yZWxheG5nL2Nob2ljZTAqIHRlc3QvcmVsYXhuZy9jaG9pY2UwKjogYWRkZWQgcmVncmVzc2lvbgotCSAgdGVzdHMgYWJvdXQgaXQuCi0JKiBkb2MvKjogcmVidWlsdAotCSogdGVzdGRzby5jOiByZW1vdmVkIGEgd2FybmluZyBkdWUgdG8gYSBtaXNzaW5nIHZvaWQgaW4gc2lnbmF0dXJlLgotCi1UaHUgSmFuIDEzIDE3OjQyOjU1IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oIHhtbHNjaGVtYXMuYzogCi0JICBFeHBvc2VkIHRhcmdldE5hbWVzcGFjZSBmb3Igc2ltcGxlL2NvbXBsZXggdHlwZXMsIG1vZGVsIGdyb3VwcywKLQkgIGF0dHJpYnV0ZSBncm91cHMgYW5kIG5vdGF0aW9ucyAocmVwb3J0ZWQgYnkgTWljaGFlbCBIZXdhcnRoIAotCSAgdG8gdGhlIG1haWxpbmcgbGlzdCkuIEFkZGVkIHRhcmdldE5hbWVzcGFjZSB0byB4bWxTY2hlbWFUeXBlLCAKLQkgIHhtbFNjaGVtYUF0dHJpYnV0ZUdyb3VwIGFuZCB4bWxTY2hlbWFOb3RhdGlvbi4KLQkgIFRpbnkgY29zbWV0aWMgY2hhbmdlIHRvIHRoZSBjb250ZW50IG1vZGVsIGVycm9yIHJlcG9ydCBvdXRwdXQuCi0JKiByZXN1bHQvL2FsbF8qLmVyciByZXN1bHQvL2FueTNfMF8wLmVyciByZXN1bHQvL2Nob2ljZV8qLmVyciAKLQkgIHJlc3VsdC8vbGlzdDBfMF8xLmVyciByZXN1bHQvL2xpc3QwXzFfMS5lcnI6IEFkYXB0ZWQgb3V0cHV0IAotCSAgb2YgcmVncmVzc2lvbiB0ZXN0cy4KLQotVGh1IEphbiAxMyAxMzoyMDo1MSBDRVQgMjAwNSBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogUHV0IHRoZSBmaXggb2YgRGFuaWVsIChmcm9tIFR1ZSBKYW4gMTEgMTQ6NDE6NDcgQ0VUKQotCSAgYmFjayBpbiwgc2luY2UgSSBtaXNzZWQgdG8gdXBkYXRlIHhtbHNjaGVtYXMuYyBiZWZvcmUgZG9pbmcKLQkgIHRoZSBwcmV2aW91cyBjb21taXQuCi0JCi1UaHUgSmFuIDEzIDEyOjU5OjI1IENFVCAyMDA1IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBJbnRlZ3JhdGVkIHhtbFJlZ0V4ZWNFcnJJbmZvIGFuZCB4bWxSZWdFeGVjTmV4dFZhbHVlcwotCSAgZnJvbSB4bWxyZWdleHAuYyB0byByZXBvcnQgZXhwZWN0ZWQgZWxlbWVudHMgb24gY29udGVudCBtb2RlbCBlcnJvcnMuCi0JKiBhbGxfKi5lcnIgYW55M18wXzAuZXJyIGNob2ljZV8qLmVyciBsaXN0MF8wXzEuZXJyIGxpc3QwXzFfMS5lcnI6Ci0JICBBZGFwdGVkIG91dHB1dCBvZiByZWdyZXNzaW9uIHRlc3RzLgotCi1UaHUgSmFuIDEzIDEyOjI0OjA5IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlnLmguaW4gY29uZmlndXJlLmluIHhtbG1vZHVsZS5jOiB0cnlpbmcgdG8gd29yayBhcm91bmQKLQkgIHRoZSBjb21waWxhdGlvbiBwcm9ibGVtIG9uIEhQLVVYCi0KLVdlZCBKYW4gMTIgMjI6MDM6MzMgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXR0ZXJuLmM6IGZpeGVkIHRoZSBmaXhlZCBzaXplIGFycmF5IHN0cnVjdHVyZSBwcm9ibGVtIHJlcG9ydGVkIGJ5Ci0JICBQYXRyaWNrIFN0cmV1bGUKLQotV2VkIEphbiAxMiAxNToxNTowMiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVsZmdjY2hhY2suaCB0ZXN0YXBpLmMgZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvKjogcmVnZW5lcmF0ZWQKLQkgIHRoZSBBUEkgZGVzY3JpcHRpb24sIHJlYnVpbHQsIGltcHJvdmVkIG5hdmlnYXRpb24gaW4gZG9jdW1lbnRhdGlvbgotCSAgYSBiaXQuCi0KLVdlZCBKYW4gMTIgMTQ6MTc6MTQgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxyZWdleHAuaCB4bWxyZWdleHAuYzogZXh0ZW5kZWQgeG1sUmVnRXhlY0VyckluZm8oKQotCSAgYW5kIHhtbFJlZ0V4ZWNOZXh0VmFsdWVzKCkgdG8gcmV0dXJuIGVycm9yIHRyYW5zaXRpb24gc3RyaW5ncyB0b28sCi0JICBhbmQgc2luayBzdGF0ZSBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nLgotCi1UdWUgSmFuIDExIDE0OjQxOjQ3IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBmaXhlZCBidWcgIzE2MzY0MSB3aGVuIHRoZSB2YWx1ZSBwYXNzZWQgZm9yCi0JICBhbiBhdG9taWMgbGlzdCB0eXBlIGlzIE5VTEwuCi0KLVR1ZSBKYW4gMTEgMTA6MTQ6MzMgSEtUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbjogZml4ZWQgZGVwZW5kZW5jeSBvbiBweXRob24gMi4zLAotCSAgYWxzbyBzbWFsbCBpbXByb3ZlbWVudCBmb3IgY3lnd2luIChidWcgMTYzMjczKQotCi1TdW4gSmFuICA5IDE4OjQ2OjMyIENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IFdpbGxpYW0gbm90aWNlZCBJIGZvcmdvdCB0byBhZGQgc3BlY2lhbAotCSAgc3VwcG9ydCBmb3IgeG1sbW9kdWxlcy5jIGRlZmluZQotCSogeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGFkZGVkIHRlcm1pbmFsIHRvCi0JICB4bWxSZWdFeGVjRXJySW5mbygpIEFQSSwgYWRkaW5nIG5ldyB4bWxSZWdFeGVjTmV4dFZhbHVlcygpCi0JICBlbnRyeSBwb2ludCBhbmQgcmVmYWN0b3JlZCB0byB1c2UgYm90aCBjb2RlLgotCi1Nb24gSmFuIDEwIDAxOjAyOjQxIEhLVCAyMDA2IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkb2MveG1sLmh0bWwsIGRvYy9GQVEuaHRtbDogYWRkZWQgYW4gRkFRIHVuZGVyIERldmVsb3BlciBmb3IKLQkgIHNldHRpbmcgdXAgYSAicHJpdmF0ZSIgbGlicmFyeSAoYWZ0ZXIgc29tZSBsaXN0IHBvc3RzIGFib3V0Ci0JICBwZW9wbGUgaGF2aW5nIHRyb3VibGUgZG9pbmcgaXQpCi0KLVNhdCBKYW4gIDggMjM6MDQ6MTAgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogZml4aW5nIGJlaGF2aW91ciBmb3IgeG1sUmVnRXhlY0VyckluZm8gaW4gY2FzZSBvZgotCSAgcm9sbGJhY2sKLQotRnJpIEphbiAgNyAxNDo1NDo1MSBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFRPRE86IHNtYWxsIHVwZGF0ZQotCSogeG1scmVnZXhwLmM6IHRyeWluZyB0byBhZGQgYW4gQVBJIHRvIGdldCB1c2VmdWwgZXJyb3IgaW5mb3JtYXRpb25zCi0JICBiYWNrIGZyb20gYSBmYWlsaW5nIHJlZ2V4cCBjb250ZXh0LgotCi1UaHUgSmFuICA2IDE3OjM1OjQxIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBwcm9ibGVtIHdpdGggeG1sWFBhdGhFcnIgd2hlbiBlcnJvciBudW1iZXIKLQkgIHN1YnNjcmlwdCB3YXMgb3V0IG9mIHJhbmdlIChidWcgMTYzMDU1KQotCi1UaHUgSmFuICA2IDA5OjU3OjAzIEhLVCAyMDA1IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB1cmkuYzogZml4ZWQgcHJvYmxlbSB3aXRoIHhtbFVSSUVzY2FwZSB3aGVuIHF1ZXJ5IHBhcnQgd2FzCi0JICBlbXB0eSAoYWN0dWFsbHkgZml4ZWQgeG1sVVJJRXNjYXBlU3RyIHRvIHJldHVybiBhbiBlbXB0eQotCSAgc3RyaW5nIHJhdGhlciB0aGFuIE5VTEwgZm9yIGVtcHR5IHN0cmluZyBpbnB1dCkgKGJ1ZyAxNjMwNzkpCi0JICAKLVR1ZSBKYW4gIDQgMTc6MDg6NDUgUFNUIDIwMDUgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogcGFyc2VyLmMsIHBhcnNlckludGVybmFsLmM6IGZpeGVkICJjb2wiIGNhbGN1bGF0aW9uIGZvciAKLSAgICAgICAgICBzdHJ1Y3QgX3htbFBhcnNlcklucHV0IChiYXNlZCBvbiBwYXRjaCBmcm9tIFJvYiBSaWNoYXJkcykgCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oLCBlcnJvci5jOiBwcm9wYWdhdGVkIGVycm9yIGNvbHVtbgotICAgICAgICAgIG51bWJlciBpbiB0aGUgeG1sRXJyb3Igc3RydWN0dXJlCi0KLVR1ZSBKYW4gIDQgMjI6NDc6MjIgQ0VUIDIwMDUgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgbmFtZXNwYWNlIGJ1ZyBpbiBwdXNoIG1vZGUgcmVwb3J0ZWQgYnkgCi0JICBSb2IgUmljaGFyZHMKLQkqIHRlc3QvbnM2IHJlc3VsdC8vbnM2KjogYWRkZWQgaXQgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQkqIHhtbG1vZHVsZS5jIHRlc3RNb2R1bGUuYyBpbmNsdWRlL2xpYnhtbC94bWxtb2R1bGUuaDoKLQkgIGFkZGVkIGFuIGV4dHJhIG9wdGlvbiBhcmd1bWVudCB0byBtb2R1bGUgb3BlbmluZyBhbmQgZGVmaW5lZAotCSAgYSBjb3VwbGUgb2YgZmxhZ3MgdG8gdGhlIEFQSS4KLQotVHVlIEphbiAgNCAyMToxNjowNSBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1vZHVsZS5jIGluY2x1ZGUvbGlieG1sL3htbG1vZHVsZS5oOiBhcHBsaWVkIHBhdGNoIGZyb20KLQkgIEJqb3JuIFJlZXNlLCBwbHVzIHNvbWUgY2xlYW51cHMKLQkqIGVsZmdjY2hhY2suaCBkb2MvZWxmZ2NjaGFjay54c2w6IGZpeGVkIHRoZSBzdHlsZXNoZWV0IHRvIAotCSAgYWRkIHRoZSBuZXcgaGVhZGVyCi0JKiBkb2MvKiB0ZXN0YXBpLmM6IHJlZ2VuZXJhdGVkIHRoZSBBUEkKLQotVHVlIEphbiAgNCAxODo0NzoxOSBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogbWFraW5nIERTTyBzdXBwb3J0IGFuIG9wdGlvbgotCSogeG1sbW9kdWxlLmMgeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1sbW9kdWxlLmg6IGNvZGUKLQkgIGFuZCBkb2N1bWVudGF0aW9uIGNsZWFudXBzCi0JKiBlbGZnY2NoYWNrLmggdGVzdGFwaS5jIGRvYy8qOiByZWdlbmVyYXRlZCB0aGUgZG9jcyBhbmQKLQkgIGNoZWNrcyBmb3IgbmV3IG1vZHVsZQotCSogdGVzdC92YWxpZC9SRUMteG1sLTE5OTgwMjEwLnhtbDogZml4IGEgc21hbGwgY2hhbmdlIGludHJvZHVjZWQKLQkgIHByZXZpb3VzbHkKLQotVHVlIEphbiAgNCAxNjowNzo1MiBDRVQgMjAwNSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiBlcnJvci5jIGxpYnhtbC0yLjAucGMuaW4KLQkgIHRlc3RNb2R1bGUuYyB0ZXN0ZHNvLmMgeG1sMi1jb25maWcuaW4geG1sbGludC5jIHhtbG1vZHVsZS5jCi0JICBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbSBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWxtb2R1bGUuaCBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4gCi0JICBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjogYXBwbGllZCBEU08gc3VwcG9ydAotCSAgcGF0Y2ggMiBmcm9tIEpvZWwgUmVlZAotCi1UdWUgSmFuICA0IDE1OjMwOjE1IENFVCAyMDA1IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBhcHBsaWVkIHBhdGNoIGZyb20gTWFyY2luIEtvbmlja2kgZm9yIEJlT1MKLQotTW9uIEphbiAgMyAxMzo1NzoyMSBQU1QgMjAwNSBBbGVrc2V5IFNhbmluIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBwYXJzZXIuYzogYWRkZWQgR2V0TGluZU51bWJlciBhbmQgR2V0Q29sdW1uTnVtYmVyIGZ1bmN0aW9ucyBmb3IgeG1sUmVhZGVyCi0KLVN1biBKYW4gIDIgMTc6NTE6MTggSEtUIDIwMDUgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQlSZS1leGFtaW5lZCB0aGUgcHJvYmxlbXMgb2YgY29uZmlndXJpbmcgYSAibWluaW1hbCIgbGlicmFyeS4KLQlTeW5jaHJvbml6ZWQgdGhlIGhlYWRlciBmaWxlcyB3aXRoIHRoZSBsaWJyYXJ5IGNvZGUgaW4gb3JkZXIKLQl0byBhc3N1cmUgdGhhdCBhbGwgdGhlIHZhcmlvdXMgY29uZGl0aW9uYWxzIChMSUJYTUxfeHh4eF9FTkFCTEVEKQotCXdlcmUgdGhlIHNhbWUgaW4gYm90aC4gIE1vZGlmaWVkIHRoZSBBUEkgZGF0YWJhc2UgY29udGVudCB0byBtb3JlCi0JYWNjdXJhdGVseSByZWZsZWN0IHRoZSBjb25kaXRpb25hbHMuICBFbmhhbmNlZCB0aGUgZ2VuZXJhdGlvbgotCW9mIHRoYXQgZGF0YWJhc2UuICBBbHRob3VnaCB0aGVyZSB3YXMgbm8gc3Vic3RhbnRpYWwgY2hhbmdlIHRvCi0JYW55IG9mIHRoZSBsaWJyYXJ5IGNvZGUncyBsb2dpYywgYSBsYXJnZSBudW1iZXIgb2YgZmlsZXMgd2VyZQotCW1vZGlmaWVkIHRvIGFjaGlldmUgdGhlIGFib3ZlLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gc2NyaXB0Ci0Jd2FzIGVuaGFuY2VkIHRvIGRvIHNvbWUgYXV0b21hdGljIGVuYWJsaW5nIG9mIGZlYXR1cmVzIChlLmcuCi0JLS13aXRoLXhpbmNsdWRlIGZvcmNlcyAtLXdpdGgteHBhdGgpLiAgQWRkaXRpb25hbGx5LCBhbGwgdGhlIGZvcm1hdAotCWVycm9ycyBkaXNjb3ZlcmVkIGJ5IGFwaWJ1aWxkLnB5IHdlcmUgY29ycmVjdGVkLgotCSogY29uZmlndXJlLmluOiBlbmhhbmNlZCBjcm9zcy1jaGVja2luZyBvZiBvcHRpb25zCi0JKiBkb2MvYXBpYnVpbGQucHksIGRvYy9lbGZnY2NoYWNrLnhzbCwgZG9jL2xpYnhtbDItcmVmcy54bWwsCi0JICBkb2MvbGlieG1sMi1hcGkueG1sLCBnZW50ZXN0LnB5OiBjaGFuZ2VkIHRoZSB1c2FnZSBvZiB0aGUKLQkgIDxjb25kPiBlbGVtZW50IGluIG1vZHVsZSBkZXNjcmlwdGlvbnMKLQkqIGVsZmdjY2hhY2suaCwgdGVzdGFwaS5jOiByZWdlbmVyYXRlZCB3aXRoIHByb3BlciBjb25kaXRpb25hbHMKLQkqIEhUTUxwYXJzZXIuYywgU0FYLmMsIGdsb2JhbHMuYywgdHJlZS5jLCB4bWxzY2hlbWFzLmMsIHhwYXRoLmMsCi0JICB0ZXN0U0FYLmM6IGNsZWFuZWQgdXAgY29uZGl0aW9uYWxzCi0JKiBpbmNsdWRlL2xpYnhtbC9bU0FYLmgsIFNBWDIuaCwgZGVidWdYTUwuaCwgZW5jb2RpbmcuaCwgZW50aXRpZXMuaCwKLQkgIGhhc2guaCwgcGFyc2VyLmgsIHBhcnNlckludGVybmFscy5oLCBzY2hlbWFzSW50ZXJuYWxzLmgsIHRyZWUuaCwKLQkgIHZhbGlkLmgsIHhsaW5rLmgsIHhtbElPLmgsIHhtbGF1dG9tYXRhLmgsIHhtbHJlYWRlci5oLCB4cGF0aC5oXToKLQkgIHN5bmNocm9uaXplZCB0aGUgY29uZGl0aW9uYWxzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIGNvZGUKLQkqIGRvYy9leGFtcGxlcy90cmVlMi5jLCBkb2MvZXhhbXBsZXMveHBhdGgxLmMsIGRvYy9leGFtcGxlcy94cGF0aDIuYzoKLQkgIGFkZGVkIGFkZGl0aW9uYWwgY29uZGl0aW9ucyByZXF1aXJlZCBmb3IgY29tcGlsYXRpb24KLQkqIGRvYy8qLmh0bWwsIGRvYy9odG1sLyouaHRtbDogcmVidWlsdCB0aGUgZG9jcwotCQotU2F0IERlYyAyNSAxODoxMDowMiBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VySW50ZXJuYWxzLmM6IGZpeGVkIHRvIHNraXAgKGlmIG5lY2Vzc2FyeSkgdGhlIEJPTSBmb3IKLQkgIGVuY29kaW5nICd1dGYtMTYnLiAgQ29tcGxldGVzIHRoZSBmaXggZm9yIGJ1ZyAjMTUyMjg2LgotCSogdHJlZS5jLCBwYXJzZXIuYzogbWlub3Igd2FybmluZyBjbGVhbnVwLCBubyBjaGFuZ2UgdG8gbG9naWMKLQkKLUZyaSBEZWMgMjQgMTY6MzE6MjIgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IGFkZGVkIG1vc3QgcmVxdWlyZWQgZW50aXJlcyB0bwotCSAgZm9yZWlnbiBlbmNvZGluZyB0YWJsZSwgcGx1cyBzb21lIGFkZGl0aW9uYWwgbG9naWMgdG8KLQkgIGFzc3VyZSBvbmx5IHRoZSAxc3QgcGFyYW0gdXNlcyB0aGUgJ3QjJyBmb3JtYXQuICBGaXhlcwotCSAgYnVnICMxNTIyODYsIGJ1dCBtYXkgc3RpbGwgaGF2ZSBzb21lIG90aGVyIFVURi0xNiBwcm9ibGVtcy4KLQotVGh1IERlYyAyMyAyMzo0NDowOCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogTWFrZWZpbGUuYW0sIGdlbnRlc3QucHk6IGVuaGFuY2VkIGZvciBlbmFibGluZyBidWlsZCBpbgotCSAgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LiAgQWRkZWQgKG9wdGlvbmFsKSBwYXJhbSB0byBnZW50ZXN0LnB5Ci0JICB0byBzcGVjaWZ5IHRoZSBzb3VyY2UgZGlyZWN0b3J5IChidWcgIzE1NTQ2OCkKLQkqIGRvYy9NYWtlZmlsZS5hbTogY2hhbmdlZCBkZXN0aW5hdGlvbiBvZiBORVdTIGZyb20gKHRvcF9zcmNkaXIpCi0JICB0byAodG9wX2J1aWxkZGlyKSAoYnVnICMxNTU0NjgpCi0JKiBweXRob24vTWFrZWZpbGUuYW0sIHB5dGhvbi9nZW5lcmF0b3IucHk6IGVuaGFuY2VkIGZvciBlbmFibGluZwotCSAgYnVpbGQgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5KGJ1ZyAjMTU1NDY4KS4gIEFkZGVkIChvcHRpb25hbCkKLQkgIHBhcmFtIHRvIGdlbmVyYXRvci5weSB0byBzcGVjaWZ5IHRoZSBzb3VyY2UgZGlyZWN0b3J5LiAgQWRkZWQKLQkgIGEgbmV3IHRhYmxlIG9mIGZ1bmN0aW9ucyB3aGljaCBoYXZlIHBvc3NpYmxlICJmb3JlaWduIiBlbmNvZGluZ3MKLQkgIChlLmcuIFVURjE2KSwgYW5kIGNvZGUgdG8gdXNlIHB5dGhvbiAndCcgZm9ybWF0IGluc3RlYWQgb2YKLQkgICd6JyBmb3JtYXQgKG1vc3RseSBzb2x2aW5nIGJ1ZyAjMTUyMjg2LCBidXQgc3RpbGwgbmVlZCB0bwotCSAgcG9wdWxhdGUgdGhlIHRhYmxlKS4KLQkgIAotVHVlIERlYyAyMSAwODoxMDo0NCBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2Mvc2l0ZS54c2wsIGRvYy94bWwuaHRtbCwgcGx1cyByZWJ1aWx0IGFsbCB0aGUgaHRtbCBwYWdlcwotCUNoYW5nZSByZWZlcmVuY2UgdG8gbmV3IHNpdGUgZm9yIFNvbGFyaXMgYmluYXJpZXMsIGZpeGluZyBidWcKLQkxNjA1OTgKLQotCi1Nb24gRGVjIDIwIDA4OjAyOjU3IFBTVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBwYXJzZXIuYzogcmVzZXQgaW5wdXQtPmJhc2Ugd2l0aGluIHhtbFN0b3BQYXJzZXIKLQkqIHhtbHN0cmluZy5jOiByZW1vdmVkIGNhbGwgdG8geG1sVVRGOFN0cmxlbiBmcm9tIHdpdGhpbgotCSAgeG1sVVRGOFN0cnBvcyAoQmlsbCBNb3NlbGV5IHBvaW50ZWQgb3V0IGl0IHdhcyBub3QKLQkgIHVzZWZ1bCkKLQotRnJpIERlYyAxNyAxNjowMzo0MSBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdmFsaWQuYzogY2hhbmdlZCB4bWxFcnJWYWxpZFdhcm5pbmcgdG8gdXNlIGN0eHQtPndhcm5pbmcKLQkgIGluc3RlYWQgb2YgY3R4dC0+ZXJyb3IgZm9yIGl0cyByZXBvcnRzIChidWcgIzE2MDY2MikKLQotRnJpIERlYyAxNyAxNDo1MjoxNyBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weTogbW9kaWZpZWQgdG8gYWxsb3cgdGhlIG5zIGFuZCBuc0RlZnMKLQkgIGFjY2Vzc29ycyB0byByZXR1cm4gTm9uZSBpbnN0ZWFkIG9mIGVycm9yIHdoZW4gbm8gbmFtZXNwYWNlCi0JICBpcyBwcmVzZW50IChidWcgIykKLQotRnJpIERlYyAxNyAxMTo0MDoyMSBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL01ha2VmaWxlLmFtOiBjaGFuZ2VkIG1haW50YWluZXItY2xlYW4gZGVwZW5kZW5jeSB3aXRoCi0JICBzdWdnZXN0aW9uIGZyb20gQ3Jpc3BpbiBGbG93ZXJkYXkgKGJ1ZyAjMTU3NjM0KQotCSogZGVidWdYTUwuYzogZml4ZWQgY3Jhc2ggd2hlbiBBVFRSSUJVVEUgb3IgRE9DVU1FTlQgbm9kZXMKLQkgIHdlcmUgc3BlY2lmaWVkIHdpdGggZGVidWdEdW1wTm9kZSAoYnVnICMxNjA2MjEpCi0KLUZyaSBEZWMgMTAgMTE6MjQ6NDEgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBmaXhlZCBJRCBkZWFsbG9jYXRpb24gcHJvYmxlbSBiYXNlZCBvbiBwYXRjaCBmcm9tCi0JICBTdGV2ZSBTaGVwYXJkIGZpeGVzIGJ1ZyAjMTYwODkzCi0JKiB4bWxtZW1vcnkuYzogaW1wcm92aW5nIGNvbW1lbnQuCi0JKiB0ZXN0YXBpLmM6IG5ldyB0ZXN0IGZvciB4bWxEaWN0RXhpc3RzKCkgaXMgZ2VuZXJhdGVkLgotCi1XZWQgRGVjICAxIDIyOjM1OjM3IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkaWN0LmMsIHhwYXRoLmMsIGluY2x1ZGUvbGlieG1sL2hhc2guaDogZml4ZWQgdXAgc29tZSBnY2Mgd2FybmluZ3MsCi0JICBubyBjaGFuZ2UgdG8gbG9naWMuICBOZXcgbWFjcm8gWE1MX0NBU1RfRlBUUiB0byBjaXJjdW12ZW50IGdjYwotCSAgd2FybmluZ3Mgb24gZnVuY3Rpb24gcG9pbnRlciA8LT4gb2JqZWN0IHBvaW50ZXIgKGEgaGFjaykuCi0KLU1vbiBOb3YgMjkgMTQ6MDc6MTggQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBhIG1lbW9yeSBsZWFrIG9uIGVycm9ycyBpbiBzb21lIGNpcmN1bXN0YW5jZXMgIzE1OTgxMgotCi1GcmkgTm92IDI2IDIzOjIwOjQ4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxJTy5jOiBhZGRlZCBhIGNoZWNrIHdpdGhpbiB4bWxPdXRwdXRCdWZmZXJXcml0ZUVzY2FwZSB0byBwcmV2ZW50Ci0JICBhIGRlYWQgbG9vcCBvbiBiYWQgZGF0YSAoYnVnIDE1OTU1MCkKLQotRnJpIE5vdiAyNiAxMzowOTowNCBDRVQgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgc3RyaWN0L2xheCBlbGVtZW50IHdpbGRjYXJkczogdGhlIGNoaWxkcmVuCi0JICBvZiBlbGVtZW50cyBmb3Igd2hpY2ggYSBkZWNsYXJhdGlvbiBleGlzdGVkIHdlcmUgc3RpbGwgcHJvY2Vzc2VkCi0JICBieSB0aGUgd2lsZGNhcmQgbWVjaGFuaXNtIChyZXBvcnRlZCBieSBwaGlsaXBwZSB2ZW50cmlsbG9uIHRvIHRoZQotCSAgbWFpbGluZyBsaXN0KS4KLQkgIENoYW5nZWQgdGhlIGltcG9ydCBhbmQgaW5jbHVkZSBtYWNoYW5pc20gdG8gc2hhcmUgZGljdGlvbmFyaWVzLgotCi1GcmkgTm92IDI2IDExOjQ0OjM2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIHBhcnNlci5jOiBtYWtlIHN1cmUgeG1sQ3R4dFJlYWRGaWxlIGFuZCBodG1sQ3R4dFJlYWRGaWxlCi0JICBnbyB0aHJvdWdoIHRoZSBjYXRhbG9nIHJlc29sdXRpb24uCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogZml4IGEgc2lkZSBlZmZlY3Qgd3JuaW5nIG9mIHRoZSBjaGFuZ2UKLQotV2VkIE5vdiAyNCAxMzo0MTo1MiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRpY3QuYyBpbmNsdWRlL2xpYnhtbC9kaWN0Lmg6IGFkZGVkIHhtbERpY3RFeGlzdHMoKSB0byB0aGUgCi0JICBkaWN0aW9ubmFyeSBpbnRlcmZhY2UuCi0JKiB4bWxyZWFkZXIuYzogYXBwbHlpbmcgeG1sVGV4dFJlYWRlckhhc0F0dHJpYnV0ZXMgZml4IGZvciBuYW1lc3BhY2VzCi0JICBmcm9tIFJvYiBSaWNoYXJkcwotCi1XZWQgTm92IDE3IDEzOjU0OjM3IENFVCAyMDA0IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiB0aW55IGVuaGFuY2VtZW50IGZvciBjb250ZW50IG1vZGVsIGVycm9yIHJlcG9ydHMKLQkgICgjMTU3MTkwLCAjMTQzOTQ4KS4gUmVtb3ZlZCBhYmJyZXZpYXRpb25zOiBDVCwgU1QgYW5kIFdDIAotCSAgKCMxNTcxOTAsIHJlcG9ydGVkIGJ5IEZyYW5zICBFbmdsaWNoKS4KLQkgIEluaXRpYWw6IG5vIHJlcG9ydCBvZiBsb2NhbCBjb21wb25lbnRzLgotCSogcmVzdWx0L3NjaGVtYXMvYWxsKiByZXN1bHQvc2NoZW1hcy9hbnkzXzBfMC5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2Nob2ljZSoKLQkgIHJlc3VsdC9zY2hlbWFzL2Nvcy1zdC1yZXN0cmljdHMtMS0yLWVycl8wXzAuZXJyCi0JICByZXN1bHQvc2NoZW1hcy9kZXJpdmF0aW9uLW9rLWV4dGVuc2lvbi1lcnJfMF8wLmVycgotCSAgcmVzdWx0L3NjaGVtYXMvZGVyaXZhdGlvbi1vay1leHRlbnNpb25fMF8wLmVycgotCSAgcmVzdWx0L3NjaGVtYXMvZGVyaXZhdGlvbi1vay1yZXN0cmljdGlvbi0yLTEtMV8wXzAuZXJyCi0JICByZXN1bHQvc2NoZW1hcy9kZXJpdmF0aW9uLW9rLXJlc3RyaWN0aW9uLTQtMS1lcnJfMF8wLmVyciAKLQkgIHJlc3VsdC9zY2hlbWFzL2RldGVyMF8wXzAuZXJyIHJlc3VsdC9zY2hlbWFzL2V4dGVuc2lvbjFfMF8yLmVycgotCSAgcmVzdWx0L3NjaGVtYXMvZmFjZXQtdW5pb25TVC1lcnIxXzBfMC5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2hleGJpbmFyeV8wXzEuZXJyCi0JICByZXN1bHQvc2NoZW1hcy9saXN0KiByZXN1bHQvc2NoZW1hcy9yZXN0cmljdGlvbi1hdHRyMV8wXzAuZXJyCi0JICByZXN1bHQvc2NoZW1hcy92ZHYtZmlyc3Q0XzBfMS5lcnIgcmVzdWx0L3NjaGVtYXMvdmR2LWZpcnN0NF8wXzIuZXJyOgotCSAgQWRhcHRlZCBvdXRwdXQuCi0KLU1vbiBOb3YgMTUgMTM6MDQ6MjggQ0VUIDIwMDQgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IE1vdmVkIGV4ZWN1dGlvbiBvZiB4bWxTY2hlbWFDaGVja0RlZmF1bHRzIHRvCi0JICB4bWxTY2hlbWFUeXBlRml4dXA7IHRoaXMgZW5zdXJlcyBmYWNldHMgb2YgaW5oZXJpdGVkIHR5cGVzIHRvIGJlCi0JICBjaGVja2VkIHByaW9yIHRvIGZhY2V0cyBvZiBkZXJpdmVkIHR5cGVzIC0gd2hpY2ggY2F1c2VkIGEgc2VnCi0JICBmYXVsdCBvdGhlcndpc2UgKGJ1ZyAjMTU4MjE2LCByZXBvcnRlZCBieSBGcmFucyBFbmdsaWNoKS4KLQotU3VuIE5vdiAxNCAyMjoyMzoxOCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZ2VudGVzdC5weSwgdGVzdGFwaS5jOiBmdXJ0aGVyIGVuaGFuY2VtZW50LCBub3cgYWxsCi0JICBjb21waWxhdGlvbiB3YXJuaW5ncyBoYXZlIGJlZW4gZml4ZWQuCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogYWRkZWQgTlVMTCBjaGVjayBmb3Igb25lIGZ1bmN0aW9uCi0KLUZyaSBOb3YgMTIgMjM6NTg6MTQgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhwYXRoLmM6IHRyaXZpYWwgY2hhbmdlIChjaGFuZ2VkIENIRUNLX0NPTlRFWFQgdG8gQ0hFQ0tfQ1RYVAotCSAgb24gYSBjb3VwbGUgb2YgbGluZXMpCi0JKiBnZW50ZXN0LnB5LCB0ZXN0YXBpLmM6IGVuaGFuY2VkIHRvIHJlZHVjZSBjb21waWxhdGlvbiB3YXJuaW5ncwotCi1GcmkgTm92IDEyIDE2OjEyOjQ4IENFVCAyMDA0IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jOiBVbi1jb21tZW50ZWQgYSBUT0RPIGluIHhtbFNjaGVtYVBhcnNlRWxlbWVudC4KLQotRnJpIE5vdiAxMiAxNDo1NTozNiBDRVQgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogQ29ycmVjdCBzeW1ib2wgc3BhY2UgZm9yICdhbGwnIGFuZCAnY2hvaWNlJy4KLQkqIHhtbHNjaGVtYXN0eXBlcy5jIGluY2x1ZGUveG1sc2NoZW1hc3R5cGVzLmg6IEFkZGVkICdyZXBsYWNlJyAKLQkgIG5vcm1hbGl6YXRpb24gZm9yICdub3JtYWxpemVkU3RyaW5nJy4gIAotCSAgQWRkZWQgeG1sU2NoZW1hV2hpdGVTcGFjZVJlcGxhY2UgdG8gdGhlIEFQSS4KLQotVGh1IE5vdiAxMSAyMTo0MzowMiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBmb3Jnb3QgYSAkKHNyY2RpcikKLQkqIGVuY29kaW5nLmM6IHN0dXBpZCBlcnJvciB3cm9uZyBuYW1lICMxNTc5NzYKLQotV2VkIE5vdiAxMCAxNTozNToyNSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5FV1MgY29uZmlndXJlLmluIGRvYy8qOiBwcmVwYXJpbmcgcmVsZWFzZSBvZiBsaWJ4bWwyLTIuNi4xNgotCi1XZWQgTm92IDEwIDEyOjU1OjE4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQKLQkgIHB5dGhvbi9saWJ4bWxfd3JhcC5oIHB5dGhvbi90eXBlcy5jOiBBcHBsaWVkIHBhdGNoIGZyb20gQnJlbnQKLQkgIEhlbmRyaWNrcyBhZGRpbmcgc3VwcG9ydCBmb3IgbGF0ZSBEVEQgdmFsaWRhdGlvbi4KLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvZHRkdmFsaWQucHkKLQkgIHB5dGhvbi90ZXN0cy90ZXN0LmR0ZDogaW50ZWdyYXRlZCB0aGUgcHJvdmlkZWQgcmVncmVzc2lvbiB0ZXN0Ci0KLVR1ZSBub3YgIDkgMTk6MjQ6MzEgQ0VUIDIwMDQgRG9kamkgU2VrZXRlbGkgPGRvZGppQHNla2V0ZWxpLm9yZz4KLQotCSogY29uZmlndXJlLmluOiBkZXRlY3Qgd2hlbiBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZQotCSAgaGFzIHRoZSBfX3NzX2ZhbWlseSBtZW1iZXIgaW5zdGVhZCBvZiBzc19mYW1pbHkgYW5kCi0JICBiZWhhdmUgYWNjb3JkaW5nbHkuIFdlIG5vdyBjYW4gdXNlIGlwdjYgb24gYWl4LgotCi1UdWUgTm92ICA5IDE3OjE1OjQ2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGludGVncmF0ZWQgaW4gIm1ha2UgdGVzdHMiCi0JICBhZGRlZCAtcSBvcHRpb24sIGFuZCBtb3JlIGNvbmRpdGlvbmFsIGZlYXR1cmVzIGZpeGVzCi0JKiBjYXRhbG9nLmMgZGVidWdYTUwuYyBwYXJzZXIuYyB0ZXN0VGhyZWFkcy5jIHhtbGxpbnQuYwotCSAgeG1sc2NoZW1hc3R5cGVzLmMgeG1sd3JpdGVyLmNpbmNsdWRlL2xpYnhtbC9jYXRhbG9nLmgKLQkgIGluY2x1ZGUvbGlieG1sL2RlYnVnWE1MLmg6IHZhcmlvdXMgY29tcGlsYXRpb24gYW5kIGNvbmRpdGlvbmFsCi0JICBjbGVhbnVwcy4KLQkqIGRvYy8qOiByZWdlbmVyYXRlZAotCi1UdWUgTm92ICA5IDE1OjU5OjUwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGJldHRlciBoYW5kbGluZyBvZiBjb25kaXRpb25hbCBmZWF0dXJlcwotCSogSFRNTHBhcnNlci5jIFNBWDIuYyBwYXJzZXJJbnRlcm5hbHMuYyB4bWx3cml0ZXIuYzogbW9yZSB0ZXN0aW5nCi0JICBvbiBwYXJzZXIgY29udGV4dHMgY2xvc2VkIGxlYWtzLCBlcnJvciBtZXNzYWdlcwotCi1UdWUgTm92ICA5IDEwOjIxOjM3IEdNVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBwcm9ibGVtIGNvbmNlcm5pbmcgWFBhdGggY29udGV4dCBjb3JydXB0aW9uCi0JICBkdXJpbmcgZnVuY3Rpb24gYXJndW1lbnQgZXZhbHVhdGlvbiAoYnVnIDE1NzY1MikKLQkgIAotTW9uIE5vdiAgOCAxODo1NDo1MiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3RhcGkuYzogbW9yZSB0eXBlcy4KLQkqIHBhcnNlckludGVybmFscy5jIHhwYXRoLmM6IG1vcmUgZml4ZXMKLQotTW9uIE5vdiAgOCAxODoxNjo0MyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBiZXR0ZXIgcGFyc2VyIG9wdGlvbnMgY292ZXJhZ2UKLQkqIFNBWDIuYyB4cGF0aC5jOiBtb3JlIGNsZWFudXBzLgotCi1UdWUgTm92ICA5IDAxOjUwOjA4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdGFwaS5jOiB0cnlpbmcgdG8gZml4IHNvbWUgb3B0aW9uYWwgc3VwcG9ydCBicm9rZW5uZXNzCi0KLU1vbiBOb3YgIDggMTc6MjU6MjcgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogbW9yZSBjb3ZlcmFnZQotCSogZGVidWdYTUwuYyBwYXJzZXIuYyB4bWxyZWdleHAuYyB4cGF0aC5jOiBtb3JlIGZpeGVzCi0KLU1vbiBOb3YgIDggMTU6MDI6MzkgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogbW9yZSBjb3ZlcmFnZQotCSogU0FYMi5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jOiBtb3JlIGZpeGVzCi0KLU1vbiBOb3YgIDggMTI6NTU6MTYgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyB0ZXN0YXBpLmMgeG1sSU8uYyB4bWxzdHJpbmcuYzogbW9yZSBmaXhlcy4KLQotTW9uIE5vdiAgOCAxMToyNDo1NyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIHR5cGVzLCBtb3JlIGNvdmVyYWdlCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyByZWxheG5nLmMgdmFsaWQuYyB4bWxJTy5jCi0JICB4bWxzY2hlbWFzdHlwZXMuYzogbW9yZSBwcm9ibGVtcyBmaXhlZAotCSAgCi1Nb24gTm92ICA4IDEwOjI0OjI4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBnZW50ZXN0LnB5OiBmaXhlZCB0ZXN0IGZpbGUgY29ycnVwdGlvbiBwcm9ibGVtCi0KLVN1biBOb3YgIDcgMTM6MTg6MDUgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogZml4ZWQgdHlwb3MgYW5kIGF2b2lkIENhdGFsb2dzIHZlcmJvc2l0eQotCi1TYXQgTm92ICA2IDIzOjI1OjE2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdGFwaS5jOiBhdWdtZW50ZWQgdGhlIG51bWJlciBvZiB0eXBlcwotCi1TYXQgTm92ICA2IDIwOjI0OjA3IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYyB0cmVlLmMgeG1scmVhZGVyLmMgeG1sd3JpdGVyLmM6IGEgbnVtYmVyIG9mIG5ldwotCSAgYnVnIGZpeGVzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCi0KLVNhdCBOb3YgIDYgMTU6NTA6MTEgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogYXVnbWVudGVkIHR5cGUgYXV0b2dlbmVyYXRpb24gZm9yIGVudW1zCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmg6IHJlbW92ZWQgZGlyZWN0IGVycm9yIHJlcG9ydGluZy4KLQotU2F0IE5vdiAgNiAxNDoyNzoxOCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVuY29kaW5nLmM6IGZpeGVkIGEgcmVncmVzc2lvbiBpbiBpY29udiBzdXBwb3J0LgotCi1GcmkgTm92ICA1IDE4OjE5OjIzIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGF1dG9nZW5lcmF0ZSBhIG1pbmltYWwgTlVMTCB2YWx1ZSBzZXF1ZW5jZQotCSAgZm9yIHVua25vd24gcG9pbnRlciB0eXBlcwotCSogSFRNTHBhcnNlci5jIFNBWDIuYyBjaHZhbGlkLmMgZW5jb2RpbmcuYyBlbnRpdGllcy5jIHBhcnNlci5jCi0JICBwYXJzZXJJbnRlcm5hbHMuYyByZWxheG5nLmMgdmFsaWQuYyB4bWxJTy5jIHhtbHJlYWRlci5jIAotCSAgeG1sc2F2ZS5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyB4bWxzdHJpbmcuYyB4cGF0aC5jCi0JICB4cG9pbnRlci5jOiBUaGlzIHVuY292ZXJlZCBhbiBpbXByZXNzaXZlIGFtb3VudCBvZiBlbnRyeSBwb2ludHMKLQkgIG5vdCBjaGVja2luZyBmb3IgTlVMTCBwb2ludGVycyB3aGVuIHRoZXkgb3VnaHQgdG8sIGNsb3NpbmcgYWxsCi0JICB0aGUgb3BlbiBnYXBzLgotCi1GcmkgTm92ICA1IDE2OjI2OjI4IFVUQyAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBjYXRhbG9nLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBOVUxMIGVudHJ5IChidWcgMTU3NDA3KQotCSogeHBhdGguYzogZml4ZWQgYSBjb3VwbGUgb2Ygd2FybmluZ3MgKG5vIGNoYW5nZSB0byBsb2dpYykKLQotRnJpIE5vdiAgNSAxNTozMDo0MyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIGNvdmVyYWdlCi0JKiB4bWx1bmljb2RlLmM6IG9uZSBmaXgKLQotRnJpIE5vdiAgNSAyMzoxNTo1MSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IGZpeGVkIGEgY29tcGlsYXRpb24gcHJvYmxlbSBvbiBhIHJlY2VudCBjaGFuZ2UKLQotRnJpIE5vdiAgNSAxMjo1MDowOSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIGNvdmVyYWdlCi0JKiBuYW5vZnRwLmMgdHJlZS5jOiBtb3JlIGZpeGVzCi0KLUZyaSBOb3YgIDUgMTE6MDI6MjggQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogZml4ZWQgdGhlIHdheSB0aGUgZ2VuZXJhdG9yIHdvcmtzLAotCSAgZXh0ZW5kZWQgdGhlIHRlc3RpbmcsIGVzcGVjaWFsbHkgd2l0aCBtb3JlIHJlYWwgdHJlZXMgYW5kIG5vZGVzLgotCSogSFRNTHRyZWUuYyB0cmVlLmMgdmFsaWQuYyB4aW5jbHVkZS5jIHhtbElPLmMgeG1sc2F2ZS5jOiBhIGJ1bmNoCi0JICBvZiByZWFsIHByb2JsZW1zIGZvdW5kIGFuZCBmaXhlZC4KLQkqIGVudGl0aWVzLmM6IGZpeCBlcnJvciByZXBvcnRpbmcgdG8gZ28gdGhyb3VnaCB0aGUgbmV3IGhhbmRsZXJzCi0KLVRodSBOb3YgIDQgMTg6NDQ6NTYgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZG9oaCAuLi4gc3R1cGlkIGNoYW5nZSBraWxsaW5nIHhtbFBhcnNlRG9jKCkKLQotVGh1IE5vdiAgNCAxODozMjoyMiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBjaGFuZ2luZyB0aGUgd2F5IHRoZSAuYyBpcyBnZW5lcmF0ZWQsCi0JICBleHRlbmRpbmcgdGhlIHRlc3RzIGNvdmVyYWdlCi0JKiBpbmNsdWRlL2xpYnhtbC9uYW5vZnRwLmggbmFub2Z0cC5jIGVsZmdjY2hhY2suaCBkb2MvKjogZml4aW5nIHNvbWUKLQkgIGZ1bmN0aW9uIHNpZ25hdHVyZXMsIHJlZ2VuZXJhdGluZyBzdHVmZgotCSogU0FYMi5jIHBhcnNlci5jIHhtbElPLmM6IGFub3RoZXIgc2V0IG9mIGJ1ZyBmaXhlcyBhbmQgQVBJIGhhcmRlbmluZwotCi1UaHUgTm92ICA0IDEzOjMyOjE5IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IGV4dGVuZGluZyB0aGUgdGVzdHMgY292ZXJhZ2UKLQotVGh1IE5vdiAgNCAxMTo1MjoyOCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBnZW50ZXN0LnB5IHdhcyBtaXNzaW5nIGZyb20gdGhlIEVYVFJBX0RJU1QKLQotVGh1IE5vdiAgNCAxMTo0ODo0NyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBleHRlbmRpbmcgdGhlIHRlc3RzIGNvdmVyYWdlCi0JKiBIVE1MdHJlZS5jIHRyZWUuYyB4bWxzYXZlLmMgeHBvaW50ZXIuYzogbW9yZSBmaXhlcyBhbmQgY2xlYW51cHMKLQotVGh1IE5vdiAgNCAwMDoyNTozNiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIGZpeGVzIGFuZCBleHRlbmRpbmcgdGhlIHRlc3RzIGNvdmVyYWdlCi0JKiBuYW5vZnRwLmMgeG1sSU8uYzogbW9yZSBmaXhlcyBhbmQgaGFyZGVuaW5nCi0JCi1XZWQgTm92ICAzIDIwOjE2OjI0IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IG1vcmUgZml4ZXMgYW5kIGV4dGVuZGluZyB0aGUgdGVzdHMgY292ZXJhZ2UKLQkqIHZhbGlkLmM6IGJ1bmNoIG9mIGNsZWFudXBzIGFuZCAyIGxlYWtzIHJlbW92ZWQgCi0KLVdlZCBOb3YgIDMgMTg6MDY6NDQgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogbW9yZSBmaXhlcyBhbmQgZXh0ZW5kaW5nIHRoZSB0ZXN0cyBjb3ZlcmFnZQotCSogbGlzdC5jIHRyZWUuYzogbW9yZSBmaXhlcyBhbmQgaGFyZGVuaW5nCi0KLVdlZCBOb3YgIDMgMTU6MTk6MjIgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnZW50ZXN0LnB5IHRlc3RhcGkuYzogbW9yZSBmaXhlcyBhbmQgZXh0ZW5kaW5nIHRoZSB0ZXN0cyBjb3ZlcmFnZQotCSogcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3JlbGF4bmcuaDogYWRkaW5nIGEgdHlwZSBpbml0IGludGVyZmFjZQotCSogaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBwYXJzZXIuYyB4bWxyZWFkZXIuYyB4bWx3cml0ZXIuYzogbW9yZQotCSAgY2xlYW51cHMgYW5kIGJ1ZyBmaXhlcyByYWlzZWQgYnkgdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotV2VkIE5vdiAgMyAxMjo0OTozMCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIGZpeGVzIGFuZCBleHRlbmRpbmcgdGhlIHRlc3RzIGNvdmVyYWdlCi0JKiB4bWx3cml0ZXIuYyBsaXN0LmM6IG1vcmUgaGFyZGVpbmcgb2YgQVBJcwotCSogZG9jL2FwaWJ1aWxkLnB5OiBza2lwIHRlc3RhcGkuYyB3aGVuIHNjYW5uaW5nIHRoZSBDIGZpbGVzLgotCi1UdWUgTm92ICAyIDIzOjA5OjA2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2VudGVzdC5weSB0ZXN0YXBpLmM6IG1vcmUgdGVzdGluZyBhbmQgY292ZXJhZ2UKLQkqIGVsZmdjY2hhY2suaCB4bWxzdHJpbmcuYyBpbmNsdWRlL2xpYnhtbC94bWxzdHJpbmcuaDogbW9yZSBjbGVhbnVwcwotCSogZG9jLyo6IHJlYnVpbHQKLQotVHVlIE5vdiAgMiAxOTo0NDozMiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdlbnRlc3QucHkgdGVzdGFwaS5jOiBtb3JlIGRldmVsb3BtZW50cyBvbiB0aGUgQVBJIHRlc3RpbmcKLQkqIEhUTUxwYXJzZXIuYyB0cmVlLmM6IG1vcmUgY2xlYW51cHMKLQkqIGRvYy8qOiByZWJ1aWx0Ci0KLVR1ZSBOb3YgIDIgMTU6NDk6MzQgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxtZW1vcnkuYyBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogYWRkaW5nIHhtbE1lbUJsb2NrcygpCi0JKiBNYWtlZmlsZS5hbSBnZW50ZXN0LnB5IHRlc3RhcGkuYzogd29yayBvbiBnZW5lcmF0b3Igb2YgYW4KLQkgIGF1dG9tYXRpYyBBUEkgcmVncmVzc2lvbiB0ZXN0IHRvb2wuCi0JKiBTQVgyLmMgbmFub2Z0cC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRyZWUuYyB4bWxJTy5jCi0JICB4bWxzdHJpbmcuYzogdmFyaW91cyBBUEkgaGFyZGVpbmcgY2hhbmdlcyBhcyBhIHJlc3VsdCBvZiBydW5uaW5nCi0JICB0ZWggZmlyc3Qgc2V0IG9mIGF1dG9tYXRpYyBBUEkgcmVncmVzc2lvbiB0ZXN0cy4KLQkqIHRlc3Qvc2xhc2hkb3QxNi54bWw6IGFwcGFyZW50bHkgbWlzc2luZyBmcm9tIENWUywgY29tbWl0ZWQgaXQKLQotTW9uIE5vdiAgMSAxNTo1NDoxOCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIGFuIFVURi04IHBhcnNpbmcgYnVnIHJlcG9ydGVkIGJ5IE1hcmt1cyBCZXJ0aGVhdQotCSAgb24gI2ZlZG9yYS1kZXZlbAotCi1TdW4gT2N0IDMxIDIyOjAzOjM4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGEgYnVnIHJlcG9ydGVkIGJ5IFBldHIgUGFqYXMgb24gdGhlIGxpc3QgYW5kCi0JICBhZmZlY3RpbmcgWE1MOjpMaWJ4bWwKLQotU3VuIE9jdCAzMSAxNjozMzo1NCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVuY29kaW5nLmMgZG9jL2V4YW1wbGVzL3Rlc3RXcml0ZXIuYzogRml4ZWQgYnVnICMxNTM5MzcsIG1ha2luZwotCSAgc3VyZSB0aGUgY29udmVyc2lvbiBmdW5jdGlvbnMgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZSB3cml0dGVuLgotCSAgSGFkIHRvIGZpeCBvbmUgb2YgdGhlIGV4YW1wbGVzLgotCi1GcmkgT2N0IDI5IDE0OjE2OjU2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy94bWxsaW50LjEgZG9jL3htbGxpbnQueG1sOiBpbmRpY2F0ZSAtIG1lYW5zIHN0ZGluIGNsb3NpbmcgIzE1NjYyNgotCi1GcmkgT2N0IDI5IDE0OjAzOjM2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYzogcmVnaXN0ZXIgeG1sU2NoZW1hU2V0VmFsaWRFcnJvcnMsIHBhdGNoIGZyb20KLQkgIEJyZW50IEhlbmRyaWNrcyBpbiB0aGUgbWFpbGluZy1saXN0Ci0JKiBpbmNsdWRlL2xpYnhtbC92YWxpZC5oIEhUTUxwYXJzZXIuYyBTQVgyLmMgdmFsaWQuYwotCSAgcGFyc2VySW50ZXJuYWxzLmM6IGZpeCAjMTU2NjI2IGFuZCBtb3JlIGdlbmVyYWxseSBob3cgdG8gZmluZCBvdXQKLQkgIGlmIGEgdmFsaWRhdGlvbiBjb250ZWN0IGlzIHBhcnQgb2YgYSBwYXJzaW5nIGNvbnRleHQgb3Igbm90LiBUaGlzCi0JICBjYW4gcHJvYmFibHkgYmUgaW1wcm92ZWQgdG8gbWFrZSAxMDAlIHN1cmUgdGhhdCB2Y3R4dC0+dXNlckRhdGEKLQkgIGlzIHRoZSBwYXJzZXIgY29udGV4dCB0b28uIEl0J3MgYSBiaXQgaGFpcnkgYmVjYXVzZSB3ZSBjYW4ndCAKLQkgIGNoYW5nZSB0aGUgeG1sVmFsaWRDdHh0IHN0cnVjdHVyZSB3aXRob3V0IGJyZWFraW5nIHRoZSBBQkkgc2luY2UKLQkgIHRoaXMgY2hhbmdlIHhtbFBhcnNlckN0eHQgaW5mb3JtYXRpb24gaW5kZXhlcy4KLQotV2VkIE9jdCAyNyAxOToyNjoyMCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBDaGFuZ2VMb2cgTkVXUyBjb25maWd1cmUuaW4gZG9jLyo6IHByZXBhcmluZyByZWxlYXNlIDIuNi4xNQotCSogZGVidWdYTUwuYyBuYW5vZnRwLmMgeG1sc2NoZW1hcy5jIHhtbHNjaGVtYXN0eXBlcy5jOiBjbGVhbnVwcwotCi1XZWQgT2N0IDI3IDA5OjMxOjI0IFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB1cmkuYzogZml4ZWQgYSBzdHVwaWQgbWlzdGFrZSBpbiB4bWxCdWlsZFJlbGF0aXZlVVJJCi0JICAoYnVnIDE1NjUyNykKLQotV2VkIE9jdCAyNyAxMTo0NDozNSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vZnRwLmMgbmFub2h0dHAuYzogc2Vjb25kIHBhcnQgb2YgdGhlIHNlY3VyaXR5IGZpeCBmb3IKLQkgIHhtbE5hbm9GVFBDb25uZWN0KCkgYW5kIHhtbE5hbm9IVFRQQ29ubmVjdEhvc3QoKS4KLQotVHVlIE9jdCAyNiAyMzo1NzowMiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vZnRwLmM6IGFwcGxpZWQgZml4ZXMgZm9yIGEgY291cGxlIG9mIHBvdGVudGlhbCBzZWN1cml0eSBwcm9ibGVtcwotCSogdHJlZS5jIHZhbGlkLmMgeG1sbGludC5jOiBtb3JlIGZpeGVzIG9uIHRoZSBzdHJpbmcgaW50ZXJuaW5nIGNoZWNrcwotCi1UdWUgT2N0IDI2IDE4OjA5OjU5IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRlYnVnWE1MLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogYWRkZWQgY2hlY2tpbmcgZm9yIG5hbWVzCi0JICB2YWx1ZXMgYW5kIGRpY3Rpb25uYXJpZXMgZ2VuZXJhdGVzIGEgdG9ucyBvZiBlcnJvcnMKLQkqIFNBWDIuY2NhdGFsb2cuYyBwYXJzZXIuYyByZWxheG5nLmMgdHJlZS5jIHhpbmNsdWRlLmMgeG1sd3JpdGVyLmMKLQkgIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogZml4aW5nIHRoZSBlcnJvcnMgaW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIE9jdCAyNSAxNjowNDoyMiBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmM6IG1vZGlmaWVkIHRoZSBoYW5kbGluZyBvZiBfcHJpdmF0ZSBmb3IgZW50aXR5Ci0JICBleHBhbnNpb24gKGJ1ZyAxNTU4MTYpCi0KLU1vbiBPY3QgMjUgMTc6MTE6MzcgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIHRoZSBsZWFrIHJlcG9ydGVkIGJ5IFZvbGtlciBSb3RoIG9uIHRoZSBsaXN0Ci0JKiB0ZXN0L2VudDEwIHJlc3VsdC8vZW50MTAqOiBhZGRlZCBhIHNwZWNpZmljIHRlc3QgZm9yIHRoZSBwcm9ibGVtCi0KLVNhdCBPY3QgMjMgMTE6MDc6NDEgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHZhbGlkLmM6IHVubGlua2VkIHRoZSBpbnRlcm5hbCBzdWJzZXQgd2l0aGluIHhtbFZhbGlkYXRlRHRkCi0JICAoYnVnIDE0MTgyNykKLQkqIGNvbmZpZ3VyZS5pbjogYWRkZWQgLVdhbGwgdG8gZGV2ZWxvcGVyJ3MgZmxhZ3MKLQkqIGRvYy9leGFtcGxlcy9yZWFkZXI0LnJlczogYWRkZWQgdG8gQ1ZTCi0KLUZyaSBPY3QgMjIgMTY6MzY6NTAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhZGRlZCBzdXBwb3J0IGZvciBIVE1MIFBJcyAjMTU2MDg3Ci0JKiB0ZXN0L0hUTUwvcHl0aG9uLmh0bWwgcmVzdWx0L0hUTUwvcHl0aG9uLmh0bWwqOiBhZGRlZCBzcGVjaWZpYyB0ZXN0cwotCi1GcmkgT2N0IDIyIDE1OjIwOjIzIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYzogZml4ZWQgbmFzdHkgYnVnICMxNTYwODcKLQotRnJpIE9jdCAyMiAyMTowNDoyMCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLmM6IGZpeGVkIGEgcHJvYmxlbSBvY2N1cmluZyBvbmx5IGluIHg4Nl82NCB3aGVuCi0JICB2ZXJ5IGxhcmdlIGVycm9yIG1lc3NhZ2VzIGFyZSByYWlzZWQgdG8gdGhlIFB5dGhvbiBoYW5kbGVycy4KLQotVGh1IE9jdCAyMSAxODowMzoyMSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGZpeGVkIGEgbWVtb3J5IGJ1ZwotCSogZG9jL2V4YW1wbGVzL3JlYWRlcjQuYyBkb2MvZXhhbXBsZXMvKjogYWRkZWQgdGVzdCBmcm9tIEdyYWhhbSBCZW5uZXR0Ci0JICBhbmQgcmVnZW5lcmF0ZWQgdGhlIGRpcmVjdG9yeQotCi1UdWUgT2N0IDE5IDExOjA2OjM5IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oIHhtbHJlYWRlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20KLQkgIEdyYWhhbSBCZW5uZXR0IGFkZGluZyA0IGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byB0aGUgcmVhZGVyIEFQSS4KLQotRnJpIE9jdCAxNSAxMToyMjo0OCBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZGVidWdYTUwuYzogZXhjbHVkZWQgYSBmZXcgbm9kZXMgKHdpdGggbm8gY29udGVudCkgZnJvbSB0aGUKLQkgIHN0cmluZyBjaGVjayByb3V0aW5lLgotCi1GcmkgT2N0IDE1IDEwOjQ4OjMwIEVEVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhZGRlZCBVVEYtOCBzdHJpbmcgY2hlY2tpbmcsCi0JICByYWlzZSBhIHByb2JsZW0sIG5lZWQgZGVidWcKLQotV2VkIE9jdCAxMyAwMjoxNzozNiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW06IGFwcGxpZWQgcGF0Y2ggZnJvbSBUaG9tYXMgRml0enNpbW1vbnMgZml4aW5nCi0JICAjMTU1MjQwIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLiBidXQgbWFrZSB0ZXN0cyBmYWlscy4KLQotTW9uIE9jdCAxMSAxNjoyNjo1MSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGFkZGVkIG5hbWVzcGFjZSBjaGVja2luZwotCi1TYXQgT2N0ICA5IDIyOjM2OjIxIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRlYnVnWE1MLmM6IHNvbWUgZnJhbWV3b3JrIHByZXBhcmF0aW9uIHRvIGFkZCBuYW1lc3BhY2UgY2hlY2tpbmdzCi0KLVRodSBPY3QgIDcgMTU6MTI6NTggQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYyBpbmNsdWRlL2xpYnhtbC9kZWJ1Z1hNTC5oIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6Ci0JICBhZGRpbmcgdGhlIHRyZWUgZGVidWcgbW9kZQotCSogcGFyc2VyLmMgcmVsYXhuZy5jIHRyZWUuYyB4cGF0aC5jOiBmaXhpbmcgdmFyaW91cyBwcm9ibGVtcyByZXBvcnRlZAotCSAgYnkgdGhlIGRlYnVnIG1vZGUuCi0JKiBTQVgyLmM6IGFub3RoZXIgdHJlZSBmaXggZnJvbSBSb2IgUmljaGFyZHMKLQotV2VkIE9jdCAgNiAxMDo1MDowMyBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogY2F0YWxvZy5jOiBzbWFsbCBjaGFuZ2UgdG8gbGFzdCBmaXgsIHRvIGdldCB4bWw6YmFzZSByaWdodAotCi1XZWQgT2N0ICA2IDA5OjMzOjUxIFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBjYXRhbG9nLmM6IGFkZGVkIGNvZGUgdG8gaGFuZGxlIDxncm91cD4sIGluY2x1ZGluZyBkdW1waW5nCi0JICB0byBvdXRwdXQgKGJ1ZyAxNTE5MjQpLgotCSogeG1sY2F0YWxvZy5jLCB4bWxzdHJpbmcuYywgcGFyc2VyLmM6IG1pbm9yIGNvbXBpbGVyIHdhcm5pbmcgCi0JICBjbGVhbnVwIChubyBjaGFuZ2UgdG8gbG9naWMpCi0JICAKLU1vbiBPY3QgIDQgMTY6MDk6MDcgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRlYnVnWE1MLmMgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi0JICBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjogcmV2YW1wZWQgdGhlIFhNTCBkZWJ1Z2dpbmcKLQkgIG1vZHVsZSBhbmQgcHJlcGFyZSBmb3IgYSBuZXcgY2hlY2tpbmcgbW9kZQotCi1Nb24gT2N0ICA0IDEzOjUzOjI0IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gTWFsY29sbSBUcmVkaW5uaWNrIGZpeGluZyBidWcgIzE1MjQyNgotCi1Nb24gT2N0ICA0IDEyOjI2OjI4IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi90ZXN0cy9vdXRidWYucHk6IAotCSAgYXBwbGllZCBwYXRjaCBmcm9tIE1hbGNvbG0gVHJlZGlubmljayBmaXhpbmcgYnVnICMxNTQyOTQKLQkgIHJlbGF0ZWQgdG8gc2F2aW5nIHRvIHB5dGhvbiBmaWxlIG9iamVjdHMuCi0KLVNhdCBPY3QgIDIgMjE6MDg6NTEgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHRyZWUuYzogY2hhbmdlZCB4bWxIYXNOc1Byb3AgdG8gcHJvcGVybHkgaGFuZGxlIGEgcmVxdWVzdCBmb3IKLQkgIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSAoYnVnIDE1MzU1NykKLQotU2F0IE9jdCAgMiAxODoxODoyNyBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBkaWN0aW9uYXJ5IGhhbmRsaW5nIHdpdGhpbgotCSAgeG1sUGFyc2VJbk5vZGVDb250ZXh0IChidWcgMTUzMTc1KQotCi1TYXQgT2N0ICAyIDE1OjQ2OjM3IFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUucHksIGNoZWNrLXJlbGF4bmctdGVzdC1zdWl0ZTIucHksCi0JICBjaGVjay14aW5jbHVkZS10ZXN0LXN1aXRlLnB5LCBjaGVjay14bWwtdGVzdC1zdWl0ZS5weSwKLQkgIGNoZWNrLXhzZGRhdGEtdGVzdC1zdWl0ZS5weSwgZG9jL2V4YW1wbGVzL2luZGV4LnB5OiBjaGFuZ2VkCi0JICBjaGFuZ2VkIHN5cy5wYXRoIHNldHRpbmcgZnJvbSAnYXBwZW5kJyB0byAnaW5zZXJ0JyAocGF0Y2gKLQkgIHN1cHBsaWVkIGJ5IE1hbGNvbG0gVHJlZGlubmljaykgKGJ1ZyAxNTM3MTYpCi0KLVNhdCBPY3QgIDIgMTU6MDM6MTQgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oOiBhZGRlZCB0d28gbmV3IG1hY3JvcwotCSAgSVNfQVNDSUlfTEVUVEVSIGFuZCBJU19BU0NJSV9ESUdJVCB1c2VkIHdpdGggKGh0bWwpCi0JICBwYXJzaW5nIGFuZCB4cGF0aCBmb3IgdGVzdGluZyBkYXRhIG5vdCBuZWNlc3NhcmlseQotCSAgdW5pY29kZS4KLQkqIEhUTUxwYXJzZXIuYywgeHBhdGguYzogY2hhbmdlZCB1c2Ugb2YgSVNfTEVUVEVSX0NIIGFuZAotCSAgSVNfRElHSVRfQ0ggbWFjcm9zIHRvIGFzY2lpIHZlcnNpb25zIChidWcgMTUzOTM2KS4KLQkgIAotRnJpIE9jdCAgMSAyMDozNzoyNSBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZXJyb3IuYzogYWRkZWQgc29tZSBjb2RpbmcgdG8gYXR0ZW1wdCB0byBkaXNwbGF5IHdoaWNoIGZpbGUKLQkgIGNvbnRhaW5zIGFuIGVycm9yIHdoZW4gdXNpbmcgWEluY2x1ZGUgKGJ1ZyAxNTI2MjMpCi0KLVRodSBTZXAgMzAgMTE6MTk6MTcgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBzdHVwaWQgY3V0J24gcGFzdGUgYnVnIGluIHhtbGxpbnQgZGV0ZWN0aW9uCi0KLVdlZCBTZXAgMjkgMTc6NDc6NTYgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy8qOiByZWxlYXNpbmcgMi42LjE0LCByZWJ1aWxkaW5nIHRoZSBkb2NzCi0JICAKLVdlZCBTZXAgMjkgMTU6MDA6MTEgQ0VTVCAyMDA0IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmggaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hcy5oCi0JICBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmg6IFBhcnNpbmcgb2YgPGNvbXBsZXhDb250ZW50PgotCSAgLSBoYW5kbGUgYXR0cmlidXRlICdtaXhlZCcsIGNhdGNoIGlsbGVnYWwgYXR0cmlidXRlcy4KLQkgIFBhcnNpbmcgb2YgPGNvbXBsZXhUeXBlPiAtIGhhbmRsZSBhdHRyaWJ1dGVzICdhYnN0cmFjdCcsCi0JICAnZmluYWwnIGFuZCAnYmxvY2snLCBjYXRjaCBpbGxlZ2FsIGF0dHJpYnV0ZXMuCi0JICBWYWxpZGF0aW9uIG9mIGNvbXBsZXggdHlwZXMgLSBoYW5kbGUgYWJzdHJhY3QgdHlwZXMuCi0JICBBZGRlZCBoYW5kbGluZyBvZiBkZWZhdWx0L2ZpeGVkIGF0dHJpYnV0ZXMgYW5kIGVsZW1lbnQgdmFsdWVzLgotCSAgUGVyIHZhbGlkYXRpb24gb3B0aW9uIGF0dHJpYnV0ZSBub2Rlcy90ZXh0IG5vZGVzIGFyZSBjcmVhdGVkCi0JICBvbiB0aGUgaW5zdGFuY2UuCi0JICBBZGRlZCB0aGUgY29ycmVzcG9uZGluZyBjb25zdHJhaW50cyBmb3IgZml4ZWQvZGVmYXVsdC4KLQkgIEFkZGVkIHhtbFNjaGVtYVNldFZhbGlkT3B0aW9ucywgeG1sU2NoZW1hR2V0VmFsaWRPcHRpb25zCi0JICB0byB0aGUgZXh0ZXJuYWwgQVBJLgotCSAgRXh0ZW5kZWQgZWxlbWVudCBkZWNsYXJhdGlvbiBjb25zdHJhaW50cy4gIAotCSAgR290IHJpZCBvZiBwZXJzZXZlcmF0aXZlIGNyZWF0aW9uIG9mIHRlbXBvcmVyeSB2YWxpZGF0aW9uL3BhcnNlciAKLQkgIGNvbnRleHRzLgotCSAgQWRkZWQgaGFuZGxpbmcgb2YgeHNpOnNjaGVtYUxvY2F0aW9uIGFuZAotCSAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb24uCi0JICBGaXhlZCB4c2k6dHlwZSBjb21wb25lbnQgcmVzb2x1dGlvbiBpZiB1c2luZyBub24tcHJlZml4ZWQKLQkgIFFOYW1lcy4KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxhdXRvbWF0YS5oOgotCSAgRW5hYmxlZCBuYW1lc3BhY2UgYXdhcmVuZXNzIG9mIHRoZSBjb250ZW50IG1vZGVsIGlmIHVzaW5nIHRoZQotCSAgbW9kZWwgZ3JvdXAgImFsbCIuCi0JKiB0ZXN0L3NjaGVtYXMvYnVnMTUyNDcwXzEueHNkOiBSZW1vdmVkIGFuICJhYnN0cmFjdCIgYXR0cmlidXRlLAotCSAgd2hpY2ggYnJva2UgdGhlIHRlc3QuCi0JKiB4c3RjL3hzdGMucHk6ICBXb3JrYXJvdW5kIHRvIGFjY29tb2RhdGUgY2FzZSBpbnNlbnNpdGl2ZQotCSAgdGVzdCBkZWZpbml0aW9ucyBpbiBtcy10ZXN0LmRlZi54bWwgKHdhcyBtaXNzaW5nIGluIGEgcHJldmlvdXMKLQkgIGNvbW1pdCkuCi0KLVdlZCBTZXAgMjkgMTE6MDM6MTAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2Rydl9saWJ4bWwyLnB5OiBhbm90aGVyIHBhdGNoIGZyb20gTWFsY29sbSBUcmVkaW5uaWNrCi0JICBhZGRpbmcgb3B0aW9uIG5vdCB0byBsb2FkIGR0ZCBmcm9tIHRoZSBkcnZfbGlieG1sMi5weSBtb2R1bGUKLQkgICMxMzQ2MzMKLQotVHVlIFNlcCAyOCAxNDozMDoyMiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBhY2NvbmZpZy5oIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiB4bWxJTy5jIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYwotCSAgeG1sc2NoZW1hc3R5cGVzLmM6IGFub3RoZXIgcGF0Y2ggZnJvbSBNYWxjb2xtIFRyZWRpbm5pY2sgZml4aW5nCi0JICB3YXJuaW5nIGdlbmVyYXRlZCBieSB0aGUgTm9uc3RvcCBLZXJuZWwgT3BlbiBTeXN0ZW0gU2VydmljZXMgCi0JICBjb21waWxlciAjMTUxNzEwCi0KLVR1ZSBTZXAgMjggMTM6MDc6MzcgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5weTogYXBwbGllZCBwYXRjaCBmcm9tIE1hbGNvbG0gVHJlZGlubmljayBmaXhpbmcKLQkgIHB5dGhvbiBleGNlcHRpb24gaGllcmFyY2h5ICMxMzk4MjQKLQotU3VuIFNlcCAyNiAxNjo0MDoyNCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jIFRPRE86IGFwcGxpZWQgcGF0Y2ggZnJvbSBNYWxjb2xtIFRyZWRpbm5pY2sgZml4aW5nIGVycmF0YQotCSAgRTIwIGNvbmNlcm5pbmcgTk1UT0tFTlMgYW5kIGNvLiB2YWxpZGF0aW9uICMxNTM3MjIKLQkqIHJlc3VsdC9WQy9BdHRyaWJ1dGVObXRva2VucyB0ZXN0L1ZDL0F0dHJpYnV0ZU5tdG9rZW5zCi0JICB0ZXN0L1ZDTS9BdHRyaWJ1dGVObXRva2Vucy54bWw6IGFsc28gYWRkZWQgdGVzdHMgZnJvbSBNYWxjb2xtCi0KLVN1biBTZXAgMjYgMTY6MjQ6NDQgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHN0Yy94c3RjLnB5OiBhcHBsaWVkIHBhdGNoIGZyb20gTWFsY29sbSBUcmVkaW5uaWNrIGZpeGluZyBzcGFjZS90YWJzCi0JICAjMTUzNzEzCi0JKiB4cGF0aC5jOiBmaXhlZCBhIHJlYWxsb2MgcG90ZW50aWFsIHByb2JsZW0KLQotRnJpIFNlcCAyNCAxNjoxNDoxMiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogZml4ZWQgbWFrZSB2YWxncmluZCB4c3RjIAotCi1UaHUgU2VwIDIzIDE4OjIzOjQ2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBmaXhpbmcgYW4gb3V0IG9mIGJvdW5kIGFkcmVzc2luZyBpc3N1ZQotCi1UaHUgU2VwIDIzIDE1OjE0OjEyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBwYXJzZXIuYyByZWxheG5nLmMgeG1sc2NoZW1hcy5jOiBtb3JlIG1lbW9yeSByZWxhdGVkCi0JICBjb2RlIGNsZWFudXBzLgotCi1UaHUgU2VwIDIzIDAxOjA0OjMwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhlZCBhIGJ1bmNoIG9mIGVycm9ycyB3aGVuIHJlYWxsb2MgZmFpbGVkLgotCi1XZWQgU2VwIDIyIDIzOjU2OjA1IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYyB1cmkuYzogY291cGxlIG9mIG1lbW9yeSBmaXhlcyBmcm9tIE1hcmsgVmFrb2MgcmVwb3J0ZWQKLQkgIGJ5IFB1cmlmeSBvbiBXaW5kb3dzLgotCi1Nb24gU2VwIDIwIDIyOjAxOjQ3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogYWRkZWQgLS10aW1pbmcgLS1jb3B5IHRpbWluZyBmb3IgdGhlIGNvcHkKLQkqIHZtcy9idWlsZF9saWJ4bWwuY29tOiBhcHBsaWVkIHBhdGNoIGZyb20gQ3JhaWcgQmVycnkKLQkgIHRvIGJ1aWxkIHdpdGggcmVjZW50IHJlbGVhc2VzCi0KLUZyaSBTZXAgMTcgMjE6MjU6MzMgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIG5hbm9odHRwLmMsIGluY2x1ZGUvbGlieG1sL25hbm9odHRwLmg6IGFkZGVkIHRoZSByb3V0aW5lCi0JICB4bWxOYW5vSFRUUENvbnRlbnRMZW5ndGggdG8gdGhlIGV4dGVybmFsIEFQSSAoYnVnMTUxOTY4KS4KLQkqIHBhcnNlci5jOiBmaXhlZCB1bm5lY2Vzc2FyeSBpbnRlcm5hbCBlcnJvciBtZXNzYWdlIChidWcxNTIwNjApOwotCSAgYWxzbyBjaGFuZ2VkIGNhbGwgdG8gc3RybmNtcCBvdmVyIHRvIHhtbFN0cm5jbXAuCi0JKiBlbmNvZGluZy5jOiBmaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nIChidWcxNTIzMDcpLgotCSogdHJlZS5jOiBmaXhlZCBzZWdmYXVsdCBpbiB4bWxDb3B5UHJvcExpc3QgKGJ1ZzE1MjM2OCk7IGZpeGVkCi0JICBhIGNvdXBsZSBvZiBjb21waWxhdGlvbiB3YXJuaW5ncy4KLQkqIEhUTUx0cmVlLmMsIGRlYnVnWE1MLmMsIHhtbG1lbW9yeS5jOiBmaXhlZCBhIGZldyBjb21waWxhdGlvbgotCSAgd2FybmluZ3M7IG5vIGNoYW5nZSB0byBsb2dpYy4KLQotRnJpIFNlcCAxNyAxMDo0MDoyMyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogcmVtb3ZlZCBzb21lIGV4dGVybiBiZWZvcmUgZnVuY3Rpb24gY29kZSByZXBvcnRlZCBieQotCSAgS2phcnRhbiBNYXJhYXMgb24gSVJDCi0JKiBsZWdhY3kuYzogZml4ZWQgY29tcGlsaW5nIHdoZW4gY29uZmlndXJpbmcgb3V0IHRoZSBIVE1MIHBhcnNlcgotCSogTWFrZWZpbGUuYW06IGFkZGVkIGEgZGVjbGFyYXRpb24gZm9yIENWU19FWFRSQV9ESVNUCi0JKiBIVE1McGFyc2VyLmM6IGJlZ2lubmluZyBvZiBhbiBhdHRlbXB0IGF0IGNsZWFuaW5nIHVwIHRoZSBjb25zdHJ1Y3Rpb24KLQkgIG9mIHRoZSBIVE1MIHBhcnNlciBkYXRhIHN0cnVjdHVyZXMsIGN1cnJlbnQgZGF0YSBnZW5lcmF0ZSBhIGh1Z2UKLQkgIGFtb3VudCBvZiBFTEYgcmVsb2NhdGlvbnMgYXQgbG9hZGluZyB0aW1lLgotCi1GcmkgU2VwIDE3IDEwOjM2OjIzIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIENoYW5nZUxvZzogYXBwbGllZCBmaXggZnJvbSBTdGVwYW4gS2FzYWwgdG8gZml4IGR1cGxpY2F0aW9uCi0JICBpbiB0aGUgY2hhbmdlIGxvZyBhbmQgY2xlYW51cCBvZiBzcGFjZS90YWJzIGlzc3Vlcy4KLQotVGh1IFNlcCAxNiAxMzoyNDoyNyBDRVNUIDIwMDQgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oIAotCSAgdGVzdC9zY2hlbWFzL2J1ZzE1MjQ3MF8xLiogcmVzdWx0L3NjaGVtYXMvYnVnMTUyNDcwXzFfMSo6IAotCSAgU2ltcGlmaWVkIGF0dHJpYnV0ZSB3aWxkY2FyZCBjcmVhdGlvbiBhbmQgYXNzaWdubWVudCB0byBnZXQgcmlkIAotCSAgb2YgbWVtb3J5IGxlYWtzLgotCSAgUmVzdHJ1Y3R1cmVkIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MuCi0JICBSZXN0cnVjdHVyZWQgYW5kIGV4cGFuZGVkIHBhcnNpbmcgb2YgPGF0dHJpYnV0ZUdyb3VwPi4KLQkgIEFkZGVkIGluaXRpYWwgaGFuZGluZyBvZiB4c2k6dHlwZS4KLQkgIEFkdmFuY2VkIGhhbmRsaW5nIG9mIHhzaTpuaWwgKHNob3VsZCB3b3JrIG5vdyBmb3Igc2ltcGxlIHR5cGVzKS4KLQkgIEFkZGVkIGNvbnN0cnVjdGlvbiBvZiBzY2hlbWF0YSB1c2luZyB4c2k6c2NoZW1hTG9jYXRpb24gYW5kIAotCSAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb247IHRoaXMgaXMgbm90IGVuYWJsZWQsIHNpbmNlIAotCSAgbm8gY29ycmVzcG9uZGluZyBBUEkgZXhpc3RzIHlldC4KLQkgIE1vdmVkIHRoZSBjb250ZW50IG1vZGVsIHRvIGNvbXBsZXggdHlwZSBjb21wb25lbnRzLgotCSAgUmVzb2x1dGlvbiBvZiB0eXBlcyBmb3IgYXR0cmlidXRlcyB3aWxsIGxvb2sgZm9yIHNpbXBsZSB0eXBlcwotCSAgb25seSAoaW5jbC4gYWxsIHRoZSBidWlsdC1pbiBzaW1wbGUgdHlwZXMpLgotCSAgRXh0ZW5kZWQgcGFyc2luZyBvZiAnYW55QXR0cmlidXRlJy4KLQkgIEZpeGVkIGNvbnRlbnQtdHlwZSB0eXBlIGZvciBjb21wbGV4IHR5cGVzIGlmIGRlcml2ZWQgZnJvbSAKLQkgICdhbnlUeXBlJyB1c2luZyB0aGUgc2hvcnQtaGFuZCBmb3JtIChzZWUgYnVnICMgMTUyNDcwLAotCSAgc3VibWl0dGVkIGJ5IFRoaWxvIEplcmVtaWFzKS4KLQkqIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXR5cGVzLmg6IENsZWFuZWQgdXAgc29tZSBjb21tZW50cy4KLQkqIHhzdGMveHN0Yy5weTogV29ya2Fyb3VuZCB0byBhY2NvbW9kYXRlIGNhc2UgaW5zZW5zaXRpdmUKLQkgIHRlc3QgZGVmaW5pdGlvbnMgaW4gbXMtdGVzdC5kZWYueG1sLgotCSogcmVzdWx0L3NjaGVtYXMvZGV0ZXIwXzBfMC5lcnIgcmVzdWx0L3NjaGVtYXMvbnMwXzBfMi5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL25zMF8xXzIuZXJyOiBBZGFwdGVkLgotCi1TYXQgU2VwIDExIDA5OjA0OjIyIFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWx3cml0ZXIuYzogY2hhbmdlZCBjaGFyIGFycmF5IGluaXRpYWxpc2F0aW9uIHRvIGF2b2lkIGEKLQkgIGNvbXBsYWludCBmcm9tIHNvbWUgY29tcGlsZXIocykgKGJ1ZyAxNTIzMDgpCi0KLVRodSBTZXAgIDkgMDc6MjI6MTEgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGVuY29kaW5nLmM6IGFwcGxpZWQgZml4ZXMgZm9yIHRoZSBVVEY4VG9JU084ODU5eCB0cmFuc2NvZGluZwotCSAgcm91dGluZSBzdWdnZXN0ZWQgYnkgTWFyayBJdHpjb3ZpdHoKLQotV2VkIFNlcCAgOCAyMjo1MDoyNyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jIHhtbHNhdmUuYzogZml4ZWQgMiBwcm9ibGVtcyByYWlzZWQgYnkgIzE1MjE0MCwgb25lCi0JICB3aGljaCBpcyB0aGF0IG5vdGF0aW9uIG5vdCBpbiB0aGUgaW50ZXJuYWwgc3Vic2V0IHNob3VsZAotCSAgbm90IGJlIHNhdmVkLCBhbmQgdGhlIHNlY29uZCBtb3JlIG5hc3R5IG9uIGFuIGVycm9yIHNhdmluZwotCSAgTk9UQVRJT05zLCBpZiB0aGVyZSBpcyBhIHByb29mIHRoYXQgbm9ib2R5IHVzZXMgbm90YXRpb25zICEKLQotV2VkIFNlcCAgOCAxMTowNDoyNyBDRVNUIDIwMDQgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hcy5oOiBBZGRlZCB0aGUgZnVuY3Rpb24KLQkgIHhtbFNjaGVtYVZhbGlkYXRlT25lRWxlbWVudCB0byB0aGUgWE1MIFNjaGVtYSB2YWxpZGF0aW9uIEFQSSwgCi0JICBhcyBwcm9wb3NlZCBieSBKZWZmcmV5IEZpbmsgLSBzZWUgYnVnICMgMTUyMDczLgotCi1UdWUgU2VwICA3IDExOjEwOjM2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBkb2MvTWFrZWZpbGUuYW0geHN0Yy9NYWtlZmlsZS5hbTogc29tZSBjbGVhbnVwCi0JICBjaGVja2luZyBmb3IgeG1sbGludCBhbmQgeHNsdHByb2MgaW4gY29uZmlndXJlLmluLCBmaXhlZAotCSAgbWFrZSBkaXN0IHcuci50LiB0aGUgbmV3IHhzdGMgc3ViZGlyLgotCSogZG9jLyo6IHJlYnVpbHQKLQotTW9uIFNlcCAgNiAxNjo0Mjo1OSBDRVNUIDIwMDQgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4c3RjL3hzdGMucHk6IENoYW5nZWQgdG8gZmluYWxseSB2YWxpZGF0ZSBpbnN0YW5jZSBkb2N1bWVudHMuCi0KLU1vbiBTZXAgIDYgMTY6MDQ6MDEgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHN0Yy9NYWtlZmlsZS5hbSBNYWtlZmlsZS5hbTogaW50ZWdyYXRlZCB0byAibWFrZSB2YWxncmluZCIsCi0JICBoZWF2eSAuLi4gd2VpZ2h0IDI1ME1CIG9mIFZNICEKLQotTW9uIFNlcCAgNiAxNDo1NDozOSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4c3RjL01ha2VmaWxlLmFtIHhzdGMveHN0Yy10by1weXRob24ueHNsIHhzdGMveHN0Yy5weSBNYWtlZmlsZS5hbToKLQkgIG1vcmUgY2xlYW51cCBpbiBpbnRlZ3JhdGluZyB0aGUgeHN0YyB0ZXN0c3VpdGUKLQotTW9uIFNlcCAgNiAxMzo1NjoyOCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW4geHN0Yy8uY3ZzaWdub3JlIHhzdGMvTWFrZWZpbGUuYW06Ci0JICBzdGFydGluZyB0byBpbnRlZ3JhdGUgdGhlIHhzdGMgc3VpdGUgaW4gdGhlIG5vcm1hbCByZWdyZXNzaW9uCi0JICB0ZXN0cwotCi1Nb24gU2VwICA2IDEzOjE0OjExIENFU1QgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhzdGMvc3VuLXRlc3QtZGVmLnhtbDogVGhlICJ0c0RpciIgYXR0cmlidXRlIHdhcyBub3QKLQkgIHNldCBjb3JyZWN0bHkuCi0KLU1vbiBTZXAgIDYgMTE6NTI6NTAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2hlY2steGluY2x1ZGUtdGVzdC1zdWl0ZS5weTogd2hlbiBvdXRwdXQgYW5kIGV4cGVjdGVkIGRvIG5vdCBtYXRjaAotCSAgZXhhY3RseSBydW4gZGlmZiB0byBwdXQgdGhlIGRpZmZlcmVuY2VzIGluIHRoZSBsb2cgYy5mLiAjMTQ4NjkxCi0KLU1vbiBTZXAgIDYgMTE6MTc6MzUgQ0VTVCAyMDA0IEthc2ltaWVyIEJ1Y2hjaWsgPGxpYnhtbDItY3ZzQGNhemljLm5ldD4KLQotCSogeHN0Yy94c3RjLXRvLXB5dGhvbi54c2x0IHhzdGMvbXMtdGVzdC1kZWYueG1sIHhzdGMvbmlzdC10ZXN0LWRlZi54bWwKLQkgIHhzdGMvc3VuLXRlc3QtZGVmLnhtbDogSW5pdGlhbCByZWxlYXNlIG9mIGdlbmVyYXRpb24gZmlsZXMgdG8gCi0JICBjcmVhdGUgcHl0aG9uIHRlc3Qgc2NyaXB0cywgd2hpY2ggd2lsbCBydW4gdGhlIFczQyBYTUwgU2NoZW1hIFRlc3QKLQkgIENvbGxlY3Rpb24uIFRoZSBtcy10ZXN0LWRlZi54bWwgYW5kIHN1bi10ZXN0LWRlZi54bWwgZmlsZXMKLQkgIHdlcmUgZXh0cmFjdGVkIGZyb20gdGhlIG9ubGluZSBIVE1MIFhTVEMgcmVzdWx0cyBbMV0sIHNpbmNlIHRoZXkgZGlkCi0JICBub3QgZXhpc3QgZm9yIHRoZSBTVU4gdGVzdHMsIGFuZCBvbmx5IHBhcnRpYWxseSBkaWQgZXhpc3QgZm9yIHRoZSAKLQkgIE1TIHRlc3RzLiBUaGUgTklTVCBkZWZpbml0aW9uIGZpbGUgd2FzIGNyZWF0ZWQgYnkgY29uY2F0ZW5hdGlvbgotCSAgb2YgdGhlIGV4aXN0aW5nIGRlZmluaXRpb24gZmlsZXMgZm9yIGVhY2ggc2luZ2xlIGRhdGF0eXBlLgotCSAgVGhlIHN0eWxlc2hlZXQgInhzdGMtdG8tcHl0aG9uLnhzbHQiIHNob3VsZCBiZSBydW4gYWdhaW5zdCB0aGUKLQkgIGRlZmluaXRpb24gZmlsZXMgdG8gcHJvZHVjZSB0aGUgcHl0aG9uIHNjcmlwdHMuCi0JICBbMV0gImh0dHA6Ly93d3cudzMub3JnL1hNTC8yMDAxLzA1L3htbHNjaGVtYS10ZXN0LWNvbGxlY3Rpb24vCi0JICByZXN1bHRzLW1hc3Rlci5odG1sIgotCi1GcmkgU2VwICAzIDIwOjI5OjU5IENFU1QgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IEZpeGVkIGEgc2VnIGZhdWx0IGluIHhtbEdldFFOYW1lUHJvcDoKLQkgIGEgZm9ybWF0IGFyZ3VtZW50IHdhcyBtaXNzaW5nLgotCSAgRml4ZWQgd3JvbmcgYXNzaWdubWVudCBvZiB0aGUgb3duZXIgb2YgYSB3aWxkY2FyZCBpbgotCSAgeG1sU2NoZW1hQnVpbGRBdHRyaWJ1dGVWYWxpZGF0aW9uIChpbiB0aGUgc2hvcnRoYW5kZm9ybSBvZgotCSAgPGNvbXBsZXhUeXBlPjsgdGhpcyBjYXVzZWQgYSBzZWcgZmF1bHQsIGR1ZSB0byBhIGRvdWJsZS1mcmVlCi0JICBvZiB0aGUgd2lsZGNhcmQuCi0JICBBZGRlZCBhIGNoZWNrIGZvciBjaXJjdWxhciBhdHRyaWJ1dGUgZ3JvdXAgcmVmZXJlbmNlcy4KLQkgIEFkZGVkIGEgY2hlY2sgZm9yIGNpcmN1bGFyIG1vZGVsIGdyb3VwIGRlZmluaXRpb24gcmVmZXJlbmNlcy4KLQkgIEZpeGVkIGEgZHVibGljYXRlIHhtbFBhcnNlckVycm9ycyBlbnVtIHZhbHVlIC0gc2VlIGJ1ZyAjMTUxNzM4LgotCi1GcmkgU2VwICAzIDEwOjA4OjEzIFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW1tLmNvbS5oaz4KLQotCSogeG1sc3RyaW5nLmM6IG1vZGlmaWVkIGNvbW1lbnRzIG9uIHhtbEdldFVURjhDaGFyIGluCi0JICByZXNwb25zZSB0byBidWcgMTUxNzYwIChubyBjaGFuZ2UgdG8gbG9naWMpCi0KLVR1ZSBBdWcgMzEgMDk6NDY6MTggUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbHN0cmluZy5jOiBmaXhlZCBlcnJvciByZXBvcnRlZCBvbiB0aGUgbGlzdCBjYXVzZWQgYnkKLQkgIG15IGxhc3QgY2hhbmdlCi0KLVR1ZSBBdWcgMzEgMTU6NDE6NTIgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBjb25maWd1cmUuaW4gZG9jLyo6IHJlbGVhc2Ugb2YgbGlieG1sMi0yLjYuMTMKLQotVHVlIEF1ZyAzMSAxNDoxNDozMCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBmaXhpbmcgIzE1MTQ1NiwgYW4gZW5jb2RpbmcgZXJyb3IgY291bGQgZ2VuZXJhdGUKLQkgIGEgc2VyaWFsaXphdGlvbiBsb29wLgotCi1UdWUgQXVnIDMxIDExOjM0OjA0IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhbHNvIHByb2R1Y2UgYSB0YXIgYmFsbCB3aXRoIGp1c3QgdGhlIHNvdXJjZXMKLQkqIHhtbGxpbnQuYzogYWRkZWQgLS1wYXRoIG9wdGlvbiBhbmQgLS1sb2FkLXRyYWNlIG9wdGlvbnMgdG8KLQkgIHhtbGxpbnQsIFJGRSAjMTQ3NzQwIGJhc2VkIG9uIHhzbHRwcm9jIHZlcnNpb25zCi0JKiBkb2MveG1sbGludC4qIGRvYy8qOiB1cGRhdGVkIHRoZSBtYW4gcGFnZSBhbmQgcmVidWlsdAotCi1UdWUgQXVnIDMxIDEwOjM3OjIzIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiAiIiBpcyBhIHZhbGlkIGhleGJpbmFyeSBzdHJpbmcgZGl4aXQgeG1sc2NoZW1hLWRldgotCSogcmVzdWx0L3NjaGVtYXMvaGV4YmluYXJ5XzBfMS5lcnIgdGVzdC9zY2hlbWFzL2hleGJpbmFyeV8xLnhtbDogCi0JICB1cGRhdGUgdGhlIHRlc3QuCi0JKiB0ZXN0L25zNSByZXN1bHQvL25zNSo6IGFkZGVkIGEgdGVzdCBmb3IgdGhlIG5hbWVzcGFjZSBidWcgZml4ZWQKLQkgIGluIHByZXZpb3VzIGNvbW1pdC4KLQkqIE1ha2VmaWxlLmFtOiBhZGRlZCBhIG1lc3NhZ2UgaW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIEF1ZyAzMCAyMzozNjoyMSBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogU0FYMi5jOiBmaXhlZCBidWcgaW50cm9kdWNlZCBkdXJpbmcgT09NIGZpeHVwIGNhdXNpbmcgcHJvYmxlbXMKLQkgIHdpdGggZGVmYXVsdCBuYW1lc3BhY2Ugd2hlbiBhIG5hbWVkIHByZWZpeCB3aXRoIHRoZSBzYW1lIGhyZWYKLQkgIHdhcyBwcmVzZW50IChyZXBvcnRlZCBvbiB0aGUgbWFpbGluZyBsaXN0IGJ5IEthcmwgRWljaHdhbGRlci4KLQkqIHhtbHN0cmluZy5jOiBtb2RpZmllZCB4bWxDaGVja1VURjggd2l0aCBzdWdnZXN0ZWQgY29kZSBmcm9tCi0JICBKdWxpdXMgTWl0dGVuendlaS4KLQkqIGRpY3QuYzogYWRkZWQgYSB0eXBlY2FzdCB0byB0cnkgdG8gYXZvaWQgcHJvYmxlbSByZXBvcnRlZCBieQotCSAgUGFzY2FsIFJvZGVzLgotCi1Nb24gQXVnIDMwIDEyOjQ1OjQ2IENFU1QgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHhtbHNjaGVtYXMuYzogRml4ZWQgYSBidWcgaW4geG1sU2NoZW1hc0NoZWNrRmFjZXQsIHdoaWNoIGRpZAotCSAgbm90IGNyZWF0ZSBhIGNvbXB1dGVkIHZhbHVlIG9uIGEgZmFjZXQgYW5kIHRodXMgY3Jhc2hlZCBkdXJpbmcKLQkgIHZhbGlkYXRpb24gb2YgaW5zdGFuY2VzLgotCSAgRXhwYW5kZWQgdmFsaWRpdHkgY2hlY2tzIGZvciBtaW4vbWF4T2NjdXJzIGF0dHJpYnV0ZXMuCi0JICBFeHBhbmRlZCB2YWxpZGl0eSBjaGVja3MgZm9yIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlICJmb3JtIi4KLQotRnJpIEF1ZyAyNyAxODozMjoyNCBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc3RyaW5nLmM6IGZpeGVkIGEgcHJvYmxlbSB3aXRoIHhtbENoZWNrVVRGOCByZXBvcnRlZCBvbiB0aGUKLQkgIG1haWxpbmcgbGlzdCBieSBKdWxpdXMgTWl0dGVuendlaQotCi1GcmkgQXVnIDI3IDAwOjEzOjM5IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5zcGVjLmluOiBhZGRlZCBCdWlsZFJlcXVpcmVzOiAgemxpYi1kZXZlbCwgZml4ZXMKLQkgIFJlZCBIYXQgYnVnICMxMjQ5NDIKLQotVGh1IEF1ZyAyNiAxMjoyNzoyMyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogcmVtb3ZlIGEgd2FybmluZyBvbiBTb2xhcmlzCi0JKiB4bWxzY2hlbWFzdHlwZS5jOiBmaXggYSBjcmFzaGluZyBidWcgIzE1MTExMQotCi1XZWQgQXVnIDI1IDIyOjIwOjE4IENFU1QgMjAwNCBLYXNpbWllciBCdWNoY2lrIDxsaWJ4bWwyLWN2c0BjYXppYy5uZXQ+Ci0KLQkqIHRlc3Qvc2NoZW1hcy9pbXBvcnQtYmFkLTFfMC5pbXA6IEFkZGVkIG1pc3NpbmcgdGVzdCBmaWxlLgotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmggaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hcy5oOgotCSAgU3Vic3RpdHV0ZWQgdGhlIG9ic29sZXRlIHhtbFNjaGVtYVZhbGlkRXJyb3IocykgZm9yIHhtbFBhcnNlckVycm9ycwotCSAgLSBzZWUgIzE1MDg0MC4gCi0JICBDaGFuZ2VkIHRoZSBpbXBvcnQgb2Ygc2NoZW1hcyB0byBhbGxvdyBmYWlsdXJlIG9mIGxvY2F0aW9uCi0JICBvZiBhIHJlc291cmNlIHRvIGJlIGltcG9ydGVkLgotCSogcmVzdWx0L3NjaGVtYXMvYWxsXyogcmVzdWx0L3NjaGVtYXMvYW55M18wXzAuZXJyIAotCSAgcmVzdWx0L3NjaGVtYXMvY2hvaWNlXyogcmVzdWx0L3NjaGVtYXMvaW1wb3J0MV8wXzAuZXJyCi0JICByZXN1bHQvc2NoZW1hcy9saXN0MF8wXzEuZXJyIHJlc3VsdC9zY2hlbWFzL2xpc3QwXzFfMC5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL2xpc3QwXzFfMS5lcnIgcmVzdWx0L3NjaGVtYXMvbnMwXzBfMi5lcnIKLQkgIHJlc3VsdC9zY2hlbWFzL25zMF8xXzIuZXJyOiBBZGFwdGVkIHJlZ3Jlc3Npb24gdGVzdCByZXN1bHRzLgotCi1UdWUgQXVnIDI0IDIwOjQ5OjE1IE1EVCAyMDA0IEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWwsIHhtbHR1dG9yaWFsLnBkZiwgKi5odG1sCi0JZml4IFhwYXRoIG1lbW9yeSBsZWFrICh0aGFua3MgdG8gc0thQm95IGFuZCBXaWxsaWFtIEJyYWNrKQotCi1UdWUgQXVnIDI0IDIxOjEwOjU5IENFU1QgMjAwNCBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgcGF0aCBwcm9ibGVtIGluIERURCBsb2FkaW5nIHJlcG9ydGVkIGJ5IAotCSAgU2FtZWVyIEFiaGlua2FyCi0KLVR1ZSBBdWcgMjQgMTY6NDA6NTEgQ0VTVCAyMDA0IElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL2NvbmZpZ3VyZS5qczogYWRkZWQgc3VwcG9ydCBmb3IgdmVyc2lvbiBleHRyYQotCSogd2luMzIvTWFrZWZpbGUuKjogdXBncmFkZWQgdG8gemxpYiAxLjIuMQotCi1Nb24gQXVnIDIzIDE0OjMzOjU0IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcmVtb3ZpbmcgLU8gLWcgZnJvbSBkZWZhdWx0IGdjYyBmbGFncyAjMTUwODI4Ci0KLVN1biBBdWcgMjIgMTY6MjY6NDYgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy8qIE5FV1M6IHByZXBhcmluZyAyLjYuMTIgcmVsZWFzZSwgdXBkYXRlZCBhbmQKLQkgIGFuZCByZWJ1aWx0IHRoZSBkb2NzLgotCi1TdW4gQXVnIDIyIDE2OjA3OjIwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYzogZml4IGEgcHJvYmxlbSBvbiBsYXN0IGNvbW1pdAotCi1TdW4gQXVnIDIyIDE1OjE2OjUzIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYyB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmggCi0JICBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oIHB5dGhvbi9saWJ4bWwuYyAKLQkgIHB5dGhvbi9saWJ4bWxfd3JhcC5oOiB0cnlpbmcgdG8gcmVtb3ZlIHNvbWUgd2FybmluZyB3aGVuIGNvbXBpbGluZwotCSAgb24gRmVkb3JhIENvcmUgMyBhbmQgNjRiaXRzCi0KLVNhdCBBdWcgMjEgMDowMzU6MTAgQ0VUIDIwMDQgS2FzaW1pZXIgQnVjaGNpayA8bGlieG1sMi1jdnNAY2F6aWMubmV0PgotCi0JKiB4bWxzY2hlbWFzLmM6IG1vZGlmaWVkIHBhcnNpbmcgb2YgPGxpc3Q+LCA8dW5pb24+LCA8cmVzdHJpY3Rpb24+LAotCSAgPHNlcXVlbmNlPiwgPGNob2ljZT4sIDxpbmNsdWRlPiwgPGltcG9ydD4uCi0JICBGaXhlZCBzY2hlbWEgZGVmYXVsdHMgKGVsZW1lbnRGb3JtRGVmYXVsdCwgZXRjLikgZm9yIGluY2x1ZGVkCi0JICBzY2hlbWFzLgotCSAgRml4ZWQgYSBidWcgd2hpY2ggcmVwb3J0ZWQgYXR0cmlidXRlcyBhcyBpbnZhbGlkIG9uCi0JICBlbGVtZW50cyBkZWNsYXJhdGlvbnMgd2l0aCB0aGUgYnVpbHQtaW4gdHlwZSAnYW55VHlwZScuCi0JICBBZGRlZCAibGF4IiB2YWxpZGF0aW9uIG9mIHRoZSBjb250ZW50IG9mIGVsZW1lbnRzIG9mIHR5cGUKLQkgICdhbnlUeXBlJy4KLQkgIEZpeGVkOiBlbGVtZW50IGRlY2xhcmF0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUgd2VyZSB0cmVhdGVkCi0JICBhcyBkdXBsaWNhdGUgaWYgbG9jYXRlZCBpbiB0aGUgc3VidHJlZSBvZiA8Y2hvaWNlPiAtPiA8c2VxdWVuY2U+LgotCSAgKFRoaXMgd2FzIGJ1ZyAxNTA2MjMsIHN1Ym1pdHRlZCBieSBSb2xhbmQgTGV6dW8pCi0JICBGaXhlZCBjbGVhbnVwIG9mIGVycm9yIGNvZGVzIGluIHhtbFNjaGVtYVZhbGlkYXRlRG9jIGFzIHByb3Bvc2VkCi0JICBieSBJZ29yIEthcGl0YW5rZXIuIChUaGlzIHdhcyBidWcgMTUwNjQ3LCBzdWJtaXR0ZWQgYnkgSWdvcgotCSAgS2FwaXRhbmtlcikKLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBDaGFuZ2VkIHRoZSB0eXBlIG9mIGFueVR5cGUgdG8KLQkgIFhNTF9TQ0hFTUFTX0FOWVRZUEUuCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBBZGRlZCBzY2hlbWEgcGFyc2VyIGVycm9ycy4KLQkqIHJlc3VsdC9zY2hlbWFzL2J1ZzE0NTI0Nl8wXzAqCi0JICByZXN1bHQvc2NoZW1hcy9leHRlbnNpb24xXzBfMi5lcnI6IENoYW5nZWQgdGVzdCByZXN1bHRzLgotCSogcmVzdWx0L3NjaGVtYXMvY3Qtc2Mtbm9iYXNlXzBfMCoKLQkgIHJlc3VsdC9zY2hlbWFzL2ZhY2V0LXdoaXRlU3BhY2VfMF8wKgotCSAgcmVzdWx0L3NjaGVtYXMvaW1wb3J0MV8wXzAqIHJlc3VsdC9zY2hlbWFzL2ltcG9ydDJfMF8wKgotCSAgcmVzdWx0L3NjaGVtYXMvaW5jbHVkZTJfMF8wKiByZXN1bHQvc2NoZW1hcy9pbmNsdWRlM18wXzAqCi0JICByZXN1bHQvc2NoZW1hcy9yZXN0cmljdGlvbi1hdHRyMV8wXzAqCi0JICByZXN1bHQvc2NoZW1hcy9zZXEtZHVibC1lbGVtMV8wXzAqCi0JICByZXN1bHQvc2NoZW1hcy94c2QtbGlzdC1pdGVtVHlwZV8wXzAqOiBBZGRlZCBuZXcgcmVzdCByZXN1bHRzLgotCSAgdGVzdC9zY2hlbWFzL2J1ZzE0NTI0Ni54c2QuaW1wIHRlc3Qvc2NoZW1hcy9jdC1zYy1ub2Jhc2VfMCoKLQkgIHRlc3Qvc2NoZW1hcy9mYWNldC13aGl0ZVNwYWNlXzAqIHRlc3Qvc2NoZW1hcy9pbXBvcnQxXzAqCi0JICB0ZXN0L3NjaGVtYXMvaW1wb3J0Ml8wKiB0ZXN0L3NjaGVtYXMvaW5jbHVkZTJfMCoKLQkgIHRlc3Qvc2NoZW1hcy9pbmNsdWRlM18wKiB0ZXN0L3NjaGVtYXMvcmVzdHJpY3Rpb24tYXR0cjFfMCoKLQkgIHRlc3Qvc2NoZW1hcy9zZXEtZHVibC1lbGVtMV8wKiB0ZXN0L3NjaGVtYXMveG1sLnhzZAotCSAgdGVzdC9zY2hlbWFzL3hzZC1saXN0LWl0ZW1UeXBlXzAqOiBBZGRlZCBuZXcgdGVzdHMgYW5kIG1pc3NpbmcKLQkgIGZpbGVzLiAgCSAgICAgIAotCi1GcmkgQXVnIDIwIDE4OjUxOjM2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbjogYSBiaXQgb2YgY2xlYW51cCBhbmQgYSBleHRyYSB2YXJpYWJsZSBmb3IKLQkgIENWUyBkaXN0Ci0KLVRodSBBdWcgMTkgMDc6NDQ6MDcgTURUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGxpbnQueG1sLCB4bWxsaW50LjEsIHhtbGxpbnQuaHRtbDoKLQlFZGl0IGFuZCByZWJ1aWxkIHRoZSBtYW4gcGFnZXMgd2l0aCBEYW5pZWwncyBDMTQgdXBkYXRlCi0KLVdlZCBBdWcgMTggMTk6MTU6MjcgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHBhcnNlci5jOiBmaXhlZCBtaXNzaW5nIGxpbmUgbnVtYmVycyBvbiBlbnRpdHkgYXMgcmVwb3J0ZWQKLQkgIG9uIHRoZSBsaXN0IGJ5IFN0ZXZlIENoZW5nCi0KLVdlZCBBdWcgMTggMTQ6MDQ6MzEgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBnbG9iYWxzLmMgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi0JICBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjogYWRkZWQgc29tZSBjb2RlIHRvCi0JICBpbmNsdWRlIHRoZSBDVlMgQ2hhbmdlTG9nIHZlcnNpb24gaW4gdGhlIHhtbFBhcnNlclZlcnNpb24KLQkgIHN0cmluZyAocHJpbnRlZCBieSB4bWxsaW50IHdpdGggLS12ZXJzaW9uKQotCi1XZWQgQXVnIDE4IDExOjE0OjA2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmggcHl0aG9uL2dlbmVyYXRvci5weQotCSAgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWxfd3JhcC5oIHB5dGhvbi90eXBlcy5jCi0JICBweXRob24vdGVzdHMvc2NoZW1hLnB5IHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbTogQXBwbGllZCBwYXRjaAotCSAgZnJvbSBUb3JrZWwgTHluZyB0byBhZGQgU2NoZW1hcyBzdXBwb3J0IHRvIHRoZSBQeXRob24gYmluZGluZ3MKLQkgIGFuZCBleHRlbmQgdGhlIHNjaGVtYXMgZXJyb3IgQVBJLCByZWdpc3RlcmVkIGEgbmV3IHRlc3QuCi0JKiBkb2MvKiBlbGZnY2NoYWNrLmg6IHJlYnVpbHQgdG8gcmVnZW5lcmF0ZSB0aGUgYmluZGluZ3MKLQotTW9uIEF1ZyAxNiAxNDozNjoyNSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCBoZWxwIGZvciBuZXcgc2V0IHNoZWxsIGNvbW1hbmQKLQkqIHhpbmNsdWRlLmMgeG1sbGludC5jIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOgotCSAgYWRkZWQgcGFyc2VyIG9wdGlvbiB0byBub3QgZ2VuZXJhdGUgWEluY2x1ZGUgc3RhcnQvZW5kIG5vZGVzLAotCSAgYWRkZWQgYSBzcGVjaWZpYyBvcHRpb24gdG8geG1sbGludCB0byB0ZXN0IGl0IGZpeGVzICMxMzA3NjkKLQkqIE1ha2VmaWxlLmFtOiByZWdyZXNzaW9uIHRlc3QgdGhlIG5ldyBmZWF0dXJlCi0JKiBkb2MveG1sbGludC4xIGRvYy94bWxsaW50LnhtbDogdXBkYXRlZCBtYW4gcGFnZSB0byBkb2N1bWVudCBvcHRpb24uCi0KLU1vbiBBdWcgMTYgMDI6NDI6MzAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogc21hbGwgdHlwbyBwb2ludGVkIG91dCBieSBNaWtlIEhvbW1leQotCSogZG9jL3htbGxpbnQueG1sLCB4bWxsaW50Lmh0bWwsIHhtbGxpbnQuMTogc2xpZ2h0bHkgaW1wcm92ZWQKLQkgIHRoZSAtLWMxNG4gZGVzY3JpcHRpb24sIGMuZi4gIzE0NDY3NSAuCi0JKiBuYW5vaHR0cC5jIG5hbm9mdHAuYzogYXBwbGllZCBhIGZpcnN0IHNpbXBsZSBwYXRjaCBmcm9tIAotCSAgTWlrZSBIb21tZXkgZm9yICRub19wcm94eSwgYy5mLiAjMTMzNDcwCi0JKiBwYXJzZXJJbnRlcm5hbHMuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogY2xlYW51cCB0byBhdm9pZCAnZXJyb3InIGlkZW50aWZpZXIgCi0JICBpbiBpbmNsdWRlcyAjMTM3NDE0Ci0JKiBwYXJzZXIuYyBTQVgyLmMgZGVidWdYTUwuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDoKLQkgIGZpcnN0IHZlcnNpb24gb2YgdGhlIGlucGxlbWVudGF0aW9uIG9mIHBhcnNpbmcgd2l0aGluCi0JICB0aGUgY29udGV4dCBvZiBhIG5vZGUgaW4gdGhlIHRyZWUgIzE0MjM1OSwgbmV3IGZ1bmN0aW9uCi0JICB4bWxQYXJzZUluTm9kZUNvbnRleHQoKSwgYWRkZWQgc3VwcG9ydCBhdCB0aGUgeG1sbGludCAtLXNoZWxsCi0JICBsZXZlbCBhcyB0aGUgInNldCIgZnVuY3Rpb24KLQkqIHRlc3Qvc2NyaXB0cy9zZXQqIHJlc3VsdC9zY3JpcHRzLyogTWFrZWZpbGUuYW06IGV4dGVuZGVkCi0JICB0aGUgc2NyaXB0IGJhc2VkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gaW5zdHJ1bWVudCB0aGUgbmV3IGZ1bmN0aW9uLgotCi1TYXQgQXVnIDE0IDE4OjUzOjA4IE1EVCAyMDA0IEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50LnhtbCwgeG1sbGludC5odG1sLCB4bWxsaW50LjE6Ci0JYWRkIGMxNG4gdG8gbWFuIHBhZ2UgKG1hbiwgaXQncyBoYXJkIHRvIGtlZXAgdXAgd2l0aAotCURhbmllbCEpCi0KLVNhdCBBdWcgMTQgMTg6NDU6MzggTURUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGxpbnQueG1sLCB4bWxsaW50Lmh0bWwsIHhtbGxpbnQuMToKLQlhZGQgcGF0dGVybiwgd2Fsa2VyLCBtYXhtZW0sIG91dHB1dCBhbmQgeG1sb3V0IHRvIG1hbiBwYWdlCi0JZml4ZXMgIzE0NDY3NQotCi1TdW4gQXVnIDE1IDAwOjQxOjEyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogYWRkZWQgYSAtLWMxNG4gb3B0aW9uIHRvIGNhbm9uaWNhbGl6ZSB0aGUgb3V0cHV0Ci0JICBzaG91bGQgY2xvc2UgdGhlIFJGRSAjMTQzMjI2Ci0KLVNhdCBBdWcgMTQgMjM6NTA6MTAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBEb2RqaSBwb2ludGVkIG91dCBhIGJ1ZyBpbiB4bWxHZXROb2RlUGF0aCgpCi0JKiB4bWxjYXRhbG9nLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBBbGJlcnQgQ2hpbiB0byBhZGQgYQotCSAgLS1uby1zdXBlci11cGRhdGUgb3B0aW9uIHRvIHhtbGNhdGFsb2cgc2VlICMxNDU0NjEKLQkgIGFuZCBhbm90aGVyIHBhdGNoIGFsc28gZnJvbSBBbGJlcnQgQ2hpbiB0byBub3QgY3Jhc2ggCi0JICBvbiAtc2dtbCAtLWRlbCB3aXRob3V0IGFyZ3Mgc2VlICMxNDU0NjIKLQkqIE1ha2VmaWxlLmFtOiBhcHBsaWVkIGFub3RoZXIgcGF0Y2ggZnJvbSBBbGJlcnQgQ2hpbiB0bwotCSAgZml4IGEgcHJvYmxlbSB3aXRoIGRpZmYgb24gU29sYXJpcyAjMTQ1NTExCi0JKiB4bWxzdHJpbmcuYzogZml4IHhtbENoZWNrVVRGOCgpIGFjY29yZGluZyB0byB0aGUgc3VnZ2VzdGlvbgotCSAgaW4gYnVnICMxNDgxMTUKLQkqIHB5dGhvbi9saWJ4bWwucHk6IGFwcGx5IGZpeCBmcm9tIE1hcmMtQW50b2luZSBQYXJlbnQgYWJvdXQKLQkgIHRoZSBlcnJvcnMgaW4gbGlieG1sKDIpLnB5IG9uIHRoZSBub2RlIHdyYXBwZXIgIzEzNTU0NwotCi1TYXQgQXVnIDE0IDEzOjE4OjU3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhZGRlZCBhIGR1bWIgcnVsZSB0byBhYmxlIHRvIGNvbXBpbGUgdHN0LmMKLQkgIHdoZW4gcGVvcGxlIHN1Ym1pdCBhIHNhbXBsZSB0ZXN0IHByb2dyYW0KLQkqIHhtbHNjaGVtYXMuYzogYXBwbGllZCBzbWFsbCBwYXRjaCBmcm9tIEVyaWMgSGFzemxha2lld2ljegotCSAgdG8gZG9jdW1lbnQgeG1sU2NoZW1hc1NldFZhbGlkRXJyb3JzKCkgbGltaXRhdGlvbnMsICMxNDE4MjcKLQkqIGVycm9yLmM6IEFkZCBpbmZvcm1hdGlvbiBpbiBnZW5lcmljIGFuZCBzdHJ1Y3R1cmVkIGVycm9yCi0JICBzZXR0ZXIgZnVuY3Rpb25zIHRoYXQgdGhpcyBuZWVkIHRvIGJlIGRvbmUgcGVyIHRocmVhZCAjMTQ0MzA4Ci0JKiB4bWxzYXZlLmM6IGZpeGVkIGJ1ZyB3aGl0aCBtaXNzaW5nIE5PVEFUSU9OKHMpIHNlcmlhbGl6YXRpb24KLQkgIGJ1ZyAjMTQ0MTYyCi0JKiBkb2MveG1sbGludC54bWw6IHR5cG8gZml4ICMxNDQ4NDAKLQotVHVlIEF1ZyAxMCAwNzoxOTozMSBQRFQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWxyZWdleHAuYyB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMKLQkgIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaCBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzdHlwZXMuaDogYXBwbGllZCBTY2hlbWFzIHBhdGNoZXMKLQkgIGZyb20gS2FzaW1pZXIgQnVjaGNpawotCSogdGVzdC8gcmVzdWx0LyBidWcxNDEzMzMqIGFubm90LWVyciogYW55WzEtNF0qIGJ1ZzE0NTI0NioKLQkgIGVsZW1lbnQtZXJyKiBlbGVtZW50LW1pbm1heC1lcnIqIGluY2x1ZGUxKiByZXN0cmljdC1DVC1hdHRyLXJlZio6Ci0JICBsb3Qgb2YgbmV3IHRlc3RzIGZvciB0aGluZ3MgZml4ZWQgYnkgdGhlIHBhdGNoCi0KLUZyaSBBdWcgIDYgMDk6MjI6MzQgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIG15IG1pcy1oYW5kbGluZyBvZiBFeHRlcm5hbCBJRCBvbiBsYXN0Ci0JICBjaGFuZ2UuCi0KLVdlZCBBdWcgIDQgMjM6NDA6MjEgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHZhbGlkLmM6IGNoYW5nZWQgdGhlIHBhcnNpbmcgb2YgYSBkb2N1bWVudCdzIERURCB0byB1c2UKLQkgIHRoZSBwcm9wZXIgYmFzZSBwYXRoIChidWcgMTQ0MzY2KQotCi1XZWQgQXVnICA0IDE2OjU4OjA4IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiBweXRob24vTWFrZWZpbGUuYW06Ci0JICBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBHZXJyaXQgUC4gSGFhc2UgdG8gZ2V0IHB5dGhvbiBiaW5kaW5ncwotCSAgb24gQ3lnd2luCi0KLVR1ZSBBdWcgIDMgMTU6MDg6MjIgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmg6IGVsYWJvcmF0ZWQgb24gZGVzY3JpcHRpb24gb2YKLQkgIHhtbFZhbGlkaXR5V2FybmluZ0Z1bmMgYW5kIHhtbFZhbGlkaXR5RXJyb3JGdW5jIChidWcKLQkgIDE0NDc2MCkKLQkqIHhtbElPLmMsIHhtbHNjaGVtYXN0eXBlcy5jLCBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzaW50ZXJuYWxzLmg6Ci0JICBtaW5vciBmaXhlcyB0byBjb21tZW50cyBmb3IgZG9jIHJlYnVpbGRpbmcgZXJyb3JzLgotCSogZG9jLyouaHRtbDogcmVidWlsdCB0aGUgZG9jcwotCi1UdWUgQXVnICAzIDIzOjU5OjIzIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9DaGFuZ2VMb2cueHNsIGRvYy9kb3dubG9hZHMuaHRtbCBkb2MveG1sLmh0bWwgZG9jLyo6Ci0JICBmaXhlcyBkb2N1bWVudGF0aW9uIGdsaXRjaGVzIHJhaXNlZCBieSBPbGl2ZXIgU3RvZW5lYmVyZwotCi1UdWUgQXVnICAzIDA5OjQyOjMxIFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB0cmVlLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBtZW1vcnkgbGVhayBvbiB0ZXh0IG5vZGVzIGluIERURAotCSAgKGJ1ZyAxNDg5NjUpIHdpdGggcGF0Y2ggcHJvdmlkZWQgYnkgRGFycmVsbCBLaW5kcmVkCi0KLVR1ZSBBdWcgIDMgMDg6MTQ6NDQgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgaW5pdGlhbGlzYXRpb24gcHJvYmxlbSBmb3IgaHRtbFJlYWRNZW1vcnkKLQkgIChidWcgMTQ5MDQxKQotCi1TYXQgSnVsIDMxIDExOjAxOjMzIFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkb2MvYnVpbGREb2NCb29rQ2F0YWxvZzogZW5oYW5jZWQgcGVyIGJ1ZyAxMTk4NzYuICBGdXJ0aGVyCi0JICBpbmZvIHBvc3RlZCB0byB0aGUgbWFpbGluZyBsaXN0LgotCi1TYXQgSnVsIDMxIDA5OjEyOjQ0IFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBTQVgyLmMsIGVuY29kaW5nLmMsIGVycm9yLmMsIHBhcnNlci5jLCB0cmVlLmMsIHVyaS5jLCB4bWxJTy5jLAotCSAgeG1scmVhZGVyLmMsIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogbWFueSBmdXJ0aGVyIGxpdHRsZSBjaGFuZ2VzCi0JICBmb3IgT09NIHByb2JsZW1zLiAgTm93IHNlZW1zIHRvIGJlIGdldHRpbmcgY2xvc2VyIHRvICJvayIuCi0JKiB0ZXN0T09NLmM6IGFkZGVkIGNvZGUgdG8gaW50ZXJjZXB0IG1vcmUgZXJyb3JzLCBmb3VuZCBtb3JlCi0JICBwcm9ibGVtcyB3aXRoIGxpYnJhcnkuIENoYW5nZWQgbWV0aG9kIG9mIGZsYWdnaW5nIC8gY291bnRpbmcKLQkgIGVycm9ycyBpbnRlcmNlcHRlZC4KLQotRnJpIEp1bCAzMCAxMzo1Nzo1NSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgYSBjb3VwbGUgb2YgcGF0Y2ggb25lIGZyb20gT2xpdmVyIFN0b2VuZWJlcmcKLQkgIGFuZCBhbm90aGVyIG9uZSBmcm9tIFJvYiBSaWNoYXJkcyBmaXhpbmcgIzE0ODQ0OAotCi1UaHUgSnVsIDI5IDEzOjIwOjI4IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogMSBsaW5lIHBhdGNoLCBhcHBhcmVudGx5IGh0bWxOZXdEb2MoKSB3YXMgbm90Ci0JICBzZXR0aW5nIGRvYy0+Y2hhcnNldC4KLQotVGh1IEp1bCAyOSAwMDowNTo1OCBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogU0FYMi5jLCB0cmVlLmMsIHVyaS5jLCB4bWxJTy5jLCB4bWxyZWFkZXIuYzogZnVydGhlcgotCSAgZml4ZXMgZm9yIG91dCBvZiBtZW1vcnkgY29uZGl0aW9uLCBtb3N0bHkgZnJvbSBPbGl2aWVyCi0JICBBbmRyaWV1LgotCSogdGVzdE9PTS5jOiBzb21lIGZ1cnRoZXIgaW1wcm92ZW1lbnQgYnkgT2xpdmllciwgd2l0aAotCSAgYSBmdXJ0aGVyIHNtYWxsIGVuaGFuY2VtZW50IGZvciBlYXNpZXIgZGVidWdnaW5nLgotCi1UdWUgSnVsIDI3IDAwOjM0OjA3IFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBTQVgyLmMsIGVycm9yLmMsIHBhcnNlci5jLCB0cmVlLmMsIHhtbHJlYWRlci5jOgotCSAgaW1wbGVtZW50ZWQgcGF0Y2hlcyBzdXBwbGllZCBieSBPbGl2aWVyIEFuZHJpZXUgCi0JICAoYnVnIDE0ODU4OCksIHBsdXMgbWFkZSBzb21lIGZ1cnRoZXIgZW5oYW5jZW1lbnRzLCB0bwotCSAgY29ycmVjdCBzb21lIHByb2JsZW1zIHdpdGggb3V0IG9mIG1lbW9yeSBjb25kaXRpb25zLgotCSogdGVzdE9PTS5jOiBpbXByb3ZlZCB3aXRoIHBhdGNoZXMgZnJvbSBPbGl2aWVyIEFuZHJpZXUKLQotTW9uIEp1bCAyNiAxMTowMzoxOCBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdHJlZS5jOiBwdXQgaW4gcGF0Y2ggZm9yIFdpbmRvd3MgYnVmZmVyIHJlLWFsbG9jYXRpb24KLQkgIHN1Ym1pdHRlZCBieSBTdGV2ZSBIYXkgKGJ1ZyAxNDY2OTcpCi0KLVN1biBKdWwgMjUgMTc6MTg6MzkgUERUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhpbmNsdWRlLmM6IGFkZGVkIHNvbWUgY29kZSB0byBjaGVjaywgd2hlbiBhbiBpbmNsdWRlIGlzCi0JICBkb25lLCB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgVVJMIGdldHMgbWFwcGVkIHRvIHNvbWUgb3RoZXIKLQkgIGxvY2F0aW9uIChlLmcuIHdpdGggYSBjYXRhbG9nIGVudHJ5KSBhbmQsIGlmIHNvLCB0YWtlIGNhcmUKLQkgIG9mIHRoZSB4bWw6YmFzZSBwcm9wZXJseSAoYnVnIDE0Njk4OCkKLQotU3VuIEp1bCAyNSAxNDowMjoyNCBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZXJyb3IuYzogZml4ZWQgdG8gYXNzdXJlIHVzZXIgZGF0YSBwYXJhbSBpcyBzZXQgY29ycmVjdGx5Ci0JICB3aGVuIHVzZXIgc3RydWN0dXJlZCBlcnJvciBoYW5kbGVyIGlzIGNhbGxlZCAoYnVnIDE0NDgyMykKLQotVGh1IEp1bCAyMiAxMDoxNDo0OCBQRFQgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1scmVhZGVyLmM6IGZpeGVkIHByb2JsZW0gd2l0aCByZWFkZXIgc3RhdGUgYWZ0ZXIKLQkgIHByb2Nlc3NpbmcgYXR0cmlidXRlcyAoYnVnIDE0Nzk5MykKLQotV2VkIEp1bCAyMSAxNzowNDoyNyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogY29uZmlndXJlLmluLCBNYWtlZmlsZS5hbTogcHV0IGluIGFuIGF1dG8qIGNoZWNrIGZvciB0aGUKLQkgIHBhdGggdG8gcGVybCAoaWYgaXQgZXhpc3RzKSwgYW5kIG1vZGlmaWVkIG1ha2UgVGltaW5ndGVzdHMKLQkgIHRvIHVzZSB0aGF0IHBhdGggaW5zdGVhZCBvZiBqdXN0IGV4ZWN1dGluZyB0aGUgZGJnZW5hdHRyLnBsCi0JICBzY3JpcHQgKGJ1ZyAxNDgwNTYpCi0KLUZyaSBKdWwgMTYgMTg6MzY6MzMgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IGFkZGVkIGEgY2hlY2sgb24gdGhlIGFyZ3VtZW50IGZvciBzb21lCi0JICBjbGFzc2VzIChlLmcuIHhtbERvYyBhbmQgeG1sTm9kZSkgdG8gcHJldmVudCBhIHNlZ2ZhdWx0IChhcwotCSAgcmVwb3J0ZWQgb24gdGhlIGxpc3QpLiAgRnVydGhlciBlbmhhbmNlbWVudCBzaG91bGQgYmUgZG9uZQotCSAgdG8gYXV0by1jcmVhdGUgdGhlIGFwcHJvcHJpYXRlIG9iamVjdC4KLQkqIHB5dGhvbi9saWJ4bWwuYzogbWlub3IgZml4IGZvciBhIHdhcm5pbmcgbWVzc2FnZTsgYWRkZWQgYQotCSAgcm91dGluZSwgY3VycmVudGx5IG5vdCB1c2VkLCB0byByZXBvcnQgdGhlIGRlc2NyaXB0aW9uIG9mIGEKLQkgIFB5Q09iamVjdC4KLQkqIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0OiByZWdlbmVyYXRlZAotCi1GcmkgSnVsIDE2IDExOjAxOjQwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYyB0ZXN0L2NhdGFsb2dzL3doaXRlKiByZXN1bHQvY2F0YWxvZ3Mvd2hpdGUqOgotCSAgYXBwbGllZCBwYXRjaGVzIGZyb20gUGV0ZXIgQnJlaXRlbmxvaG5lciB0byBmaXggaGFuZGxpbmcKLQkgIG9mIHdoaXRlIHNwYWNlIG5vcm1hbGl6YXRpb24gaW4gcHVibGljIGlkcyBhbmQgYWRkIHRlc3RzCi0KLVR1ZSBKdWwgMTMgMTc6MjQ6MTMgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbWVtb3J5LmM6IGFwcGxpZWQgYSBzbWFsbCBmaXggZnJvbSBTdGV2ZSBIYXkKLQotVHVlIEp1bCAxMyAyMzowMjoxOSBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogQWRkZWQgY29kZSB0byBpbiBQUkVESUNBVEUvRklMVEVSIGhhbmRsaW5nIHRvIHJlc2V0Ci0JICB0aGUgeHBhdGggY29udGV4dCBkb2N1bWVudCBwb2ludGVyIChwYXJ0IG9mIGZpeCB0byBsaWJ4c2x0Ci0JICBidWcgMTQ3NDQ1KQotCi1UdWUgSnVsIDEzIDAwOjE0OjA4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBweXRob24vbGlieG1sLnB5OiByYW4gJ2V4cGFuZCcgb24gdGhlIGZpbGUgdG8gZ2V0IHJpZCBvZiBtaXh0dXJlCi0JICBvZiB0YWJzIGFuZCBzcGFjZXMgKGJ1ZyAxNDc0MjQpCi0KLVN1biBKdWwgMTEgMjI6Mzg6MjkgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHB5dGhvbi9kcnZfbGlieG1sLnB5OiBhZGRlZCBhbiBlbmNvZGluZyAic3BlY2lhbCBjb21tZW50IiB0byBhdm9pZAotCSAgd2FybmluZyBtZXNzYWdlIGluIHB5dGhvbjIuMyAoYnVnIDE0Njg4OSkKLQkqIE1ha2VmaWxlLmFtLCBweXRob24vTWFrZWZpbGUuYW0sIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbTogc21hbGwKLQkgIGNoYW5nZSB0byBtYWtlICJtYWtlIHRlc3RzIiBhIGxpdHRsZSBxdWlldGVyIChNQUtFRkxBR1MrPS0tc2lsZW50KQotCSogeHBhdGguYzogZW5oYW5jZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY3VycmVudCBsaWJ4c2x0IGhhbmRsaW5nCi0JICBvZiB0bXBSVlQuICBGaXhlcyBidWcgMTQ1NTQ3LgotCi1GcmkgSnVsICA5IDE0OjAyOjU0IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5oIHVyaS5jOiBmaXhlZCBhIGNvdXBsZSBvZiBwcm9ibGVtcyBpbiB0aGUgbmV3Ci0JICBlbGZnY2NoYWNrLmggdHJpY2sgcG9pbnRlZCBieSBQZXRlciBCcmVpdGVubG9obmVyCi0KLVdlZCBKdWwgIDcgMDA6NDU6NDggQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZWxmZ2NjaGFjay5oIGRvYy9hcGlidWlsZC5weSBkb2MvbGlieG1sMi1hcGkueG1sOiBmaXhlZCBhIGJ1ZwotCSAgd2hpY2ggcHJldmVudGVkIGJ1aWxkaW5nIHdpdGggLS13aXRoLW1pbmltdW0KLQotTW9uIEp1bCAgNSAxOTo0Mzo1MSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gZG9jLyo6IHJlbGVhc2luZyAyLjYuMTEsIHVwZGF0ZWQgYW5kIHJlZ2VuZXJhdGVkIHRoZQotCSAgZG9jcwotCi1Nb24gSnVsICA1IDE4OjQzOjQ3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBtYWtlIHRoZSBwdXNoIGludGVyZmFjZXMgc3luY2hyb25vdXMKLQkqIHB5dGhvbi90ZXN0cy9zeW5jLnB5OiBhZGRlZCBhIHNwZWNpZmljIHRlc3QKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBkb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLQkgIGRvYy9leGFtcGxlcy9pbmRleC5weTogYWRkZWQgdGhlIG5ldyB0ZXN0LCBjbGVhbmluZyB1cCAKLQkgICJtYWtlIHRlc3RzIiBvdXRwdXQKLQotTW9uIEp1bCAgNSAxNTowOToxNyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBLYXNpbWllciB0byBmaXggc29tZSBSZWxheC1ORwotCSAgZGF0YXR5cGUgZmFjZXQgcHJvYmxlbSB3aXRoIHJlY2VudCBjaGFuZ2VzLgotCi1TYXQgSnVsICAzIDExOjMxOjAyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBweXRob24vbGlieG1sLmM6IENoYW5nZWQgdGhlIG51bWJlciBvZiBYUGF0aCBleHRlbnNpb24gZnVuY3Rpb25zCi0JICBhbGxvd2VkIHRvIGJlIHZhcmlhYmxlLWxlbmd0aCAocGF0Y2ggc3VwcGxpZWQgYnkgTWFyYy1BbnRvaW5lCi0JICBQYXJlbnQsIGJ1ZyAxNDM4MDUpLiAgQWRkZWQgY29kZSB0byAidW5yZWdpc3RlciIgdGhlIGZ1bmN0aW9ucwotCSAgd2hlbiB0aGUgcGFyc2VyIGNsZWFudXAgdGFrZXMgcGxhY2UuCi0KLUZyaSBKdWwgIDIgMTQ6MjI6MTQgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbWVtb3J5LmMgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sOgotCSAgc29tZSB1cGRhdGVzIHdpdGggbWVtb3J5IGRlYnVnZ2luZyBmYWNpbGl0aWVzIHdoaWxlIG1lc3NpbmcKLQkgIHdpdGggbGlieHNsdCBweXRob24gYmluZGluZ3MKLQotVGh1IEp1bCAgMSAxNDo1MzozNiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLmMgcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLnB5Ci0JICBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbCBweXRob24vbGlieG1sMmNsYXNzLnR4dDoKLQkgIGFwcGxpZWQgcGF0Y2ggZnJvbSBTdOlwaGFuZSBCaWRvdWwgdG8gZml4IHNvbWUgUHl0aG9uIGJpbmRpbmdzCi0JICBpbml0aWFsaXphdGlvbiwgdGhlbiBoYWQgdG8gY2hhbmdlIHRoZSBwYXJzZXJDbGVhbnVwKCkgCi0JICB0byBoYW5kbGUgbWVtb3J5IHJlbGVhc2VkIHRoZXJlLgotCSogeG1sbWVtb3J5LmM6IGFkZGVkIG1vcmUgZGVidWdnaW5nIGNvbW1lbnRzLgotCi1UaHUgSnVsICAxIDEzOjE4OjAyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBzZWVtcyB0aGUgcmVhZGVyIGJ1ZmZlciBjb3VsZCBiZSB1c2VkIHdoaWxlIG5vdAotCSAgYWxsb2NhdGVkLCBmaXhlcyBidWcgIzE0NTIxOAotCi1UaHUgSnVsICAxIDExOjM0OjEwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IGRvIG5vdCBwcm92aWRlIGZ1bmN0aW9ucyB1c2VkIGFzIGRlc3RydWN0b3IKLQkgIG9mIGNsYXNzZXMgYXMgcHVibGljIG1ldGhvZHMgdG8gYXZvaWQgZG91YmxlLWZyZWUgcHJvYmxlbSBsaWtlCi0JICBpbiBidWcgIzE0NTE4NQotCi1XZWQgSnVuIDMwIDE5OjQ1OjIzIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzLmMsIHhtbHNjaGVtYXN0eXBlcy5jOiB3YXJuaW5nIG1lc3NhZ2UgY2xlYW51cC4KLQkgIE5vdyBjb21waWxlcyB3YXJuaW5nLWZyZWUsIGFsbCB0ZXN0cyBwYXNzZWQuCi0JKiBTQVgyLmM6IHNtYWxsIGNoYW5nZSB0byBjb21tZW50cyBmb3IgZG9jdW1lbnRhdGlvbi4KLQkgIE5vIGNoYW5nZSB0byBsb2dpYy4KLQotVHVlIEp1biAyOSAxNTowMDoxMyBQRFQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogbW9yZSBmaXhlcyB3aXRoIEthc2ltaWVyLCBsb29rcyBmYXIgY2xlYW5lciA6LSkKLQotVHVlIEp1biAyOSAyMzowMDowNSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IEthc2ltaWVyIEJ1Y2hjaWsgZml4ZWQgdGhlIG1lbW9yeSBhY2Nlc3MgYW5kCi0JICBhbGxvY2F0aW9uIHByb2JsZW0KLQotVHVlIEp1biAyOSAxOTowMDozMiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaAotCSAgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXN0eXBlcy5oOgotCSAgYXBwbGllZCBTY2hlbWFzIHBhdGNoZXMgZnJvbSBLYXNpbWllciBCdWNoY2lrLCB0aGVyZSBpcyBzdGlsbAotCSAgb25lIG9wZW4gaXNzdWUgYWJvdXQgcmVmZXJlbmNpbmcgZnJlZWQgbWVtb3J5LgotCSogdGVzdC9zY2hlbWFzLyogcmVzdWx0L3NjaGVtYXMvKjogdXBkYXRlZCB3aXRoIG5ldyB0ZXN0cyBmcm9tIAotCSAgS2FzaW1pZXIKLQotVHVlIEp1biAyOSAxNDo1MjoxOCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggaW5jbHVkZS9saWJ4bWwveG1sSU8uaAotCSAgZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvbGlieG1sMi1yZWZzLnhtbDogbW92ZWQgc29tZSBkZWZpbml0aW9ucwotCSAgdG8gZ2xvYmFscy5oIHRvIGF2b2lkIHNvbWUgdHJvdWJsZXMgcG9pbnRlZCBvdXQgYnkgUm9iIFJpY2hhcmRzCi0KLU1vbiBKdW4gMjggMTE6MjU6MzEgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLm00OiBhcHBsaWVkIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IE1pa2UgSG9tbWV5LCByZW1vdmUKLQkgIGxpYnhtbDEgc3VwcG9ydCBhbmQgdXNlIENQUEZMQUdTIGluc3RlYWQgb2YgQ0ZMQUdTCi0KLVN1biBKdW4gMjcgMTQ6MTc6MTUgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW46IGFub3RoZXIsIG1vcmUgJ2V4cGVyaW1lbnRhbCcgZmVhdHVyZSB0byAKLQkgIGdldCBjb21waWxlciBvcHRpbWl6YXRpb24gYmFzZWQgb24gZ2NjIHJ1bnRpbWUgcHJvZmlsaW5nCi0KLVN1biBKdW4gMjcgMTQ6MDI6MzYgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZWxmZ2NjaGFjay5oIGRvYy9lbGZnY2NoYWNrLnhzbCBsaWJ4bWwuaDogaGFjayBiYXNlZCBvbiBBcmphbiB2YW4gZGUKLQkgIFZlbiBzdWdnZXN0aW9uIHRvIHJlZHVjZSBFTEYgZm9vdHByaW50IGFuZCBnZW5lcmF0ZWQgY29kZS4gQmFzZWQgb24KLQkgIGFsaWFzaW5nIG9mIGxpYnJhcmllcyBmdW5jdGlvbiB0byBnZW5lcmF0ZSBkaXJlY3QgY2FsbCBpbnN0ZWFkIG9mCi0JICBpbmRpcmVjdCBvbmVzCi0JKiBkb2MvbGlieG1sMi1hcGkueG1sIGRvYy9NYWtlZmlsZS5hbSBkb2MvYXBpYnVpbGQucHk6IGFkZGVkIGF1dG9tYXRpYwotCSAgZ2VuZXJhdGlvbiBvZiBlbGZnY2NoYWNrLmggYmFzZWQgb24gdGhlIEFQSSBkZXNjcmlwdGlvbiwgZXh0ZW5kZWQKLQkgIHRoZSBBUEkgZGVzY3JpcHRpb24gdG8gc2hvdyB0aGUgY29uZGl0aW9uYWxzIGNvbmZpZ3VyYXRpb24gZmxhZ3MKLQkgIHJlcXVpcmVkIGZvciBzeW1ib2xzLgotCSogbmFub2h0dHAuYyBwYXJzZXIuYyB4bWxzYXZlLmMgaW5jbHVkZS9saWJ4bWwvKi5oOiBsb3Qgb2YgY2xlYW51cAotCSogZG9jLyo6IHJlZ2VuZXJhdGVkIHRoZSBkb2NzLgotCi1TdW4gSnVuIDI3IDEwOjAyOjI4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiByZWdyZXNzaW9ucy5weSwgcmVncmVzc2lvbnMueG1sOiBuZXcgZmlsZXMgZm9yIHJ1bm5pbmcKLQkgIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgUHl0aG9uLiAgTm90IHlldCBjb21wbGV0ZSwgYnV0Ci0JICBzaG91bGQgcHJvdmlkZSBnb29kIHRlc3RpbmcgdW5kZXIgYm90aCBMaW51eCBhbmQgV2luZG93cy4KLQkqIHRlc3RIVE1MLmMsIHRlc3RTQVguYywgeG1sbGludC5jOiBjaGFuZ2VkIHRoZSAnZm9wZW4nIHVzZWQKLQkgIGZvciAtLXB1c2ggdGVzdGluZyB0byBpbmNsdWRlIHRoZSAncmInIHBhcmFtIHdoZW4gY29tcGlsZWQKLQkgIHVuZGVyIFdpbmRvd3MuCi0KLUZyaSBKdW4gMjUgMTM6Mzg6NTcgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHVyaS5jOiBmaXhlZCBhIHByb2JsZW0gd2hlbiBiYXNlIHBhdGggd2FzICIuL3h4eCIKLQkqIHJlc3VsdC9YSW5jbHVkZS8qOiA1IHRlc3QgcmVzdWx0cyBjaGFuZ2VkIGJ5IGFib3ZlLgotCSogTWFrZWZpbGUuYW06IGZpeGVkIGEgY291cGxlIG9mIHNwb3RzIHdoZXJlIGEgbmV3Ci0JICByZXN1bHQgZmlsZSB1c2VkIGRpZmZlcmVudCBmbGFncyB0aGF0IHRoZSB0ZXN0aW5nIG9uZS4KLQotVGh1IEp1biAyNCAxNjoyNzo0NCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdmFsaWQuYzogc3VwcHJlc3NlZCB3YXJuaW5ncyBmcm9tIHdpdGhpbiB4bWxWYWxpZEdldFZhbGlkRWxlbWVudHMKLQkgIChidWcgMTQ0NjQ0KQotCSogZG9jL2V4YW1wbGVzL3Rlc3RXcml0ZXIuYzogY29ycmVjdGVkIHR5cG8gaW4gY29tbWVudCBmb3IgSVNPLTg4NTktMQotCSAgKGJ1ZyAxNDQyNDUpCi0KLVRodSBKdW4gMjQgMTA6MTc6MzEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHZhbGlkLmM6IGltcGxlbWVudGVkIGJ1Z2ZpeCBmcm9tIE1hc3NpbW8gTW9yYXJhIGZvciBEVEQKLQkgIGR1bXBpbmcgcHJvYmxlbS4KLQkqIHRlc3QvdmFsaWQvdDEwLnhtbCwgcmVzdWx0L3ZhbGlkL3QxMC4qOiBhZGRlZCByZWdyZXNzaW9uCi0JICBmb3IgYWJvdmUKLQkqIGNvbmZpZ3VyZS5pbjogc21hbGwgY2hhbmdlIGZvciBteSBwcm9maWxlIHNldHRpbmdzCi0KLVdlZCBKdW4gMjMgMjA6MTg6MTkgTURUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGNhdGFsb2dfbWFuLnhtbCwgeG1sY2F0YWxvZy4xCi0JRG9jcyBwYXRjaCBmcm9tIFZpbGxlIFNreXR0YSwgYnVnemlsbGEgIzE0NDg0MQotCi1TYXQgSnVuIDE5IDE4OjM0OjExIE1EVCAyMDA0IEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50LnhtbCwgeG1sbGludC5odG1sLCB4bWxsaW50LjEKLQl1cGRhdGUgbWFuIHBhZ2UgdG8gcmVmbGVjdCBXaWxsaWFtJ3MgbmV3bHkgZGlzY2lwbGluZWQgcmV0dXJuCi0JY29kZSBtb2pvCi0KLVRodSBKdW4gMTcgMDA6NTE6NTUgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2V4YW1wbGVzL2lvMi5jIGRvYy9leGFtcGxlcy9wYXJzZTQuYzogZml4aW5nIGEgY291cGxlIG9mCi0JICBjb21waWxhdGlvbiBlcnJvcnMgd2hlbiBjb25maWd1cmVkIHdpdGggLS13aXRoLW1pbmltdW0KLQotV2VkIEp1biAxNiAxNjowNzoxMCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gU3RlZmFubyBEZWJlbmVkZXR0aSB0byByZWdpc3RlcgotCSAgbmFtZXNwYWNlcyBpbiB0aGUgZGVidWcgc2hlbGwKLQotTW9uIEp1biAxNCAyMTo1NjozMSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogZml4IGZyb20gU3RldmUgQmFsbCBhbmQgdXBkYXRlIG9mIHRoZSBjb21tZW50LgotCSogTWFrZWZpbGUuYW0gcmVzdWx0L2Vycm9ycy8qLnN0cjogV2lsbGlhbSBwb2ludGVkIG91dCB0aGF0IAotCSAgdGhlIHN0cmVhbWluZyBlcnJvciBjaGVja2luZyBwYXJ0IHdhc24ndCBzdHJlYW1pbmcsIGZpeGluZwotCi1Nb24gSnVuIDE0IDE0OjExOjUyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogcGF0Y2ggZnJvbSBJZ29yIGZvciB0aGUgZGVmYXVsdCBjYXRhbG9nIHBhdGggb24gV2luZG93cwotCi1TYXQgSnVuIDEyIDA5OjAzOjU3IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBjb25maWd1cmUuaW46IGFwcGFyZW50bHkgd2Fzbid0IHVwZGF0ZWQgbGFzdCB0aW1lCi0KLVRodSBKdW4gMTAgMjA6NTc6NDggSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGNvbmZpZ3VyZS5pbiwgeG1sbWVtb3J5LmMsIGdsb2JhbHMuYzogZml4ZWQgcHJvYmxlbSB3aGVuCi0JICBjb25maWd1cmluZyB1c2luZyAtLXdpdGgtdGhyZWFkLWFsbG9jCi0KLVdlZCBKdW4gIDkgMTY6MzE6MjQgQ0VTVCAyMDA0IElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL2NvbmZpZ3VyZS5qcyB3aW4zMi9NYWtlZmlsZS4qIG1pbm9yIGNoYW5nZXMgZm9yIHRoZSBuZXcKLQkgIGxheW91dCBvZiB0aGUgV2luZG93cyBiaW5hcnkgcGFja2FnZQotCi1UdWUgSnVuICA4IDE5OjUwOjI1IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhcHBsaWVkIGFub3RoZXIgcGF0Y2gKLQkgIGZyb20gS2FzaW1pZXIgQnVjaGNpayBmb3IgU2NoZW1hIENvbXBvbmVudCBDb25zdHJhaW50cwotCSogdGVzdC9zY2hlbWFzLyogcmVzdWx0L3NjaGVtYXMvKjogYWRkZWQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotVHVlIEp1biAgOCAyMToyNzowMyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sbGludC5jOiBmaXhlZCBtaXNzaW5nIGVycm9yIHJldHVybiBjb2RlIGZvciBzY2hlbWEKLQkgIHZhbGlkYXRpb24gKGJ1ZyAxNDM4ODApLCBhbHNvIGNoYW5nZWQgb3ZlciB0byBhbiBlbnVtIGZvcgotCSAgZGVmaW5pbmcgdGhlIGVycm9yIHJldHVybiBjb2RlcyBmb3IgYWxsIGNvbmRpdGlvbnMuCi0KLVR1ZSBKdW4gIDggMTQ6MDE6MTQgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IGZpeGVkIGEgc2VyaW91cwotCSAgcHJvYmxlbSB3aGVuIHN1YnN0aXR1aW5nIGVudGl0aWVzIHVzaW5nIHRoZSBSZWFkZXIsIHRoZSBlbnRpdGllcwotCSAgY29udGVudCBtaWdodCBiZSBmcmVlZCBhbmQgaWYgcmVyZWZlcmVuY2VkIHdvdWxkIGNyYXNoCi0JKiBNYWtlZmlsZS5hbSB0ZXN0LyogcmVzdWx0Lyo6IGFkZGVkIGEgbmV3IHRlc3QgY2FzZSBhbmQgYSBuZXcKLQkgIHRlc3Qgb3BlcmF0aW9uIGZvciB0aGUgcmVhZGVyIHdpdGggc3Vic3RpdHV0aW9uIG9mIGVudGl0aWVzLgotCi1UdWUgSnVuICA4IDEyOjE0OjE2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdsb2JhbHMuYyB4bWxJTy5jIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBpbmNsdWRlL2xpYnhtbC94bWxJTy5oOgotCSAgYXBwbGllZCBwYXRjaCBmcm9tIFJvYiBSaWNoYXJkcyBmb3IgdGhlIHBlciB0aHJlYWQgSS9PIG1hcHBpbmdzCi0KLVR1ZSBKdW4gIDggMDk6NTg6MzEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhpbmNsdWRlLmM6IHNvbWUgZnVydGhlciBlbmhhbmNlbWVudCB0byB0YWtlIGNhcmUgb2YKLQkgIHhtbDpiYXNlIGZvciBYUG9pbnRlciBlbGVtZW50cyAoYnVnIDE0Mzg4NikuICBBbHNvIGZpeGVkCi0JICBhIHByb2JsZW0gd2hlbiB4bWw6YmFzZSB3YXMgYWxyZWFkeSBzcGVjaWZpZWQgb24gYW4KLQkgIFhJbmNsdWRlJ2QgZWxlbWVudC4KLQotTW9uIEp1biAgNyAyMjoxNDo1OCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBhIHByb2JsZW0gd2l0aCBpbnRlcm5hbCBjbGVhbnVwIG9mIDxESVY+IGVsZW1lbnQKLQkgIChidWcgMTQzNzM4KS4KLQotTW9uIEp1biAgNyAxNjo1Nzo0MyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdXJpLmMsIGluY2x1ZGUvbGlieG1sL3VyaS5oOiBhZGRlZCBhIG5ldyByb3V0aW5lCi0JICB4bWxCdWlsZFJlbGF0aXZlVVJJIG5lZWRlZCBmb3IgZW5oYW5jZW1lbnQgb2YgeGluY2x1ZGUuYwotCSogeGluY2x1ZGUuYzogY2hhbmdlZCBoYW5kbGluZyBvZiB4bWw6YmFzZSAoYnVnIDEzNTg2NCkKLQkqIHJlc3VsdC9YSW5jbHVkZS8qOiByZXN1bHRzIG9mIDUgdGVzdHMgY2hhbmdlZCBhcyBhIHJlc3VsdAotCSAgb2YgdGhlIGFib3ZlIGNoYW5nZQotCi1GcmkgSnVuICA0IDExOjI3OjM3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkIGEgYnVuY2ggb2YgdGVzdHMgZnJvbQotCSAgS2FzaW1pZXIgQnVjaGNpayBwb3N0ZWQgb24gTWF5IDExCi0KLVRodSBKdW4gIDMgMTc6NTg6MjUgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBuZXcgcGF0Y2ggZnJvbSAgS2FzaW1pZXIgQnVjaGNpayBmb3IgcHJvY2Vzc0NvbnRlbnRzCi0JICBvZiB3aWxkY2FyZHMgYXR0cmlidXRlIGhhbmRsaW5nCi0JKiB0ZXN0L3NjaGVtYXMvYW55QXR0ci0qIHJlc3VsdC9zY2hlbWFzL2FueUF0dHItKjogYWRkZWQgc3BlY2lmaWMKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotVGh1IEp1biAgMyAxMzoyMDozNiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBidWcgd2hlcmUgaW52YWxpZCBjaGFycmVmcyBtYXkgbm90IGJlIGRldGVjdGVkCi0JICBzb21ldGltZXMgYXMgcG9pbnRlZCBieSBNb3J1cyBXYWx0ZXIuCi0JKiB0ZXN0L2Vycm9ycy9jaGFycmVmMS54bSByZXN1bHQvZXJyb3JzL2NoYXJyZWYxLnhtbCo6IGFkZGVkIHRoZQotCSAgdGVzdCBpbiB0aGUgcmVncmVzc2lvbiBzdWl0ZS4KLQotVGh1IEp1biAgMyAxODozODoyNyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hcy5jOiBzbWFsbCBjaGFuZ2UgdG8geG1sU2NoZW1hVmFsaWRhdGVBdHRyaWJ1dGVzLAotCSAgYWxzbyBjb3JyZWN0ZWQgdHlwbyBvbiBlcnJvciBjb2RlIGVudW0uCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBjb3JyZWN0ZWQgdHlwbyBvbiBzY2hlbWEgZXJyb3IKLQkgIGNvZGUgZW51bQotCi1UaHUgSnVuICAzIDEwOjEyOjM4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzLmM6IG1pbm9yIGNvc21ldGljIGNoYW5nZXMsIG5vIGNoYW5nZSB0byBsb2dpYy4KLQkqIHJlc3VsdC9zY2hlbWFzL2F0dHJ1c2VfMF9bMTJdLmVycjogcmVnZW5lcmF0ZWQKLQkqIGdsb2JhbHMuYzogYWRkZWQgYSBuZXdsaW5lIGF0IGVuZCB0byBtYWtlIGdjYyBoYXBweQotCi1XZWQgSnVuICAyIDIxOjE2OjI2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmggCi0JICBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBLYXNpbWllciBCdWNoY2lrCi0JICBpbXBsZW1lbnRpbmcgYXR0cmlidXRlIHVzZXMgYW5kIHdpbGRjYXJkcy4KLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkL2ZpeGVkIGEgYnVuY2ggb2YgdGVzdHMKLQotV2VkIEp1biAgMiAxODoxNTo1MSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWxzLmMgeG1sSU8uYyBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbSAKLQkgIFJvYiBSaWNoYXJkcyBmb3IgY3VzdG9tIEkvTyBCdWZmZXJDcmVhdGVGaWxlbmFuZSBmaXhlcyBidWcKLQkgICMxNDMzNjYKLQotV2VkIEp1biAwMiAxNjoyNTozMiBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogZml4ZWQgcHJvYmxlbSB3aXRoIHByZWRpY2F0ZSBldmFsdWF0aW9uIG9uIGFuCi0JICBlbXB0eSBub2Rlc2V0IChidWcgMTQzNDA5KQotCi1XZWQgSnVuIDAyIDExOjI2OjQxIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB0ZXN0U0FYLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBhdHRyaWJ1dGUgbGlzdGluZyAoYnVnIDE0MjY3NCkKLQkgIGFuZCBhZGRlZCBtYWNybyBMSUJYTUxfVEVTVF9WRVJTSU9OIHRvIGFzc3VyZSB4bWxJbml0UGFyc2VyCi0JICBnZXRzIGNhbGxlZCAoYnVnIDE0MjY4NikKLQotU2F0IE1heSAyOSAyMTozNTo1MiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0L3NjaGVtYXMvZGF0ZV8wLnhtbCB4bWxzY2hlbWFzdHlwZXMuYzogYXBwbGllZCBhIHBhdGNoIGZyb20KLQkgIENoYXJsZXMgQm96ZW1hbiBmaXhpbmcgYSBzaWRlIGVmZmVjdCBpbiBkYXRlIGhhbmRsaW5nCi0KLVRodSBNYXkgMjcgMTk6NDc6NDggTURUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3R1dG9yaWFsL3htbHR1dG9yaWFsLnhtbCBmaXggbGFjayBvZiBjYXN0IGluIFhwYXRoIGV4YW1wbGUKLQkqIGRvYy90dXRvcmlhbC8qLmh0bWwsIHhtbHR1dG9yaWFsLnBkZiByZWJ1aWxkIGh0bWwsIHBkZgotCi0yMDA0LTA1LTI1ICBBbGVrc2V5IFNhbmluIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBjMTRuLmM6IGZpeGVkIGMxNG4gYnVnIHdpdGggc2VyaWFsaXppbmcgYXR0cmlidXRlIG5hbWVzcGFjZXMKLQotTW9uIE1heSAyNCAwODoyMjo0OCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogZml4ZWQgdG8gYWxsb3cgJysnIGluIGV4cG9uZW50IG9mIG51bWJlcgotCSAgKGJ1ZyAxNDMwMDUpCi0JKiBTQVgyLmM6IGZpeGVkIHR5cG8gaW4gbGFzdCBjb21taXQKLQotU2F0IE1heSAyMiAwOTowODoyNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogU0FYMi5jOiBza2lwcGVkIGNhbGwgdG8geG1sVmFsaWRhdGVOQ05hbWUgd2hlbiBjb21waWxpbmcKLQkgIC0td2l0aC1taW5pbXVtIChidWcgMTQyOTE3KQotCi1UdWUgTWF5IDE4IDA2OjQ4OjAwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogcmV2ZXJ0ZWQgdGhlIGJyb2tlbiBjaGFuZ2UuCi0KLU1vbiBNYXkgMTcgMjM6MDc6MTUgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBkb2MvKjogdXBkYXRlZCB0aGUgZG9jcyBmb3IgMi42LjEwCi0KLU1vbiBNYXkgMTcgMDU6NTI6MDMgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIDogcmVsZWFzaW5nIDIuNi4xMAotCi1TdW4gTWF5IDE2IDIzOjEyOjM1IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogYXZvaWQgcmV0dXJuaW5nIGRlZmF1bHQgbmFtZXNwYWNlIHdoZW4gc2VhcmNoaW5nCi0JICBmcm9tIGFuIGF0dHJpYnV0ZQotCSogZW50aXRpZXMuYyB4bWx3cml0ZXIuYzogcmV2ZXJzZSB4bWxFbmNvZGVTcGVjaWFsQ2hhcnMoKSBiZWhhdmlvdXIKLQkgIGJhY2sgdG8gZXNjYXBpbmcgIiBzaW5jZSB0aGUgbm9ybWFsIHNlcmlhbGl6YXRpb24gcm91dGluZXMgZG8gbm90Ci0JICB1c2UgaXQgYW55bW9yZSwgc2hvdWxkIGNsb3NlIGJ1ZyAjMTM0NDc3IC4gVHJpZWQgdG8gbWFrZSAKLQkgIHRoZSB3cml0ZXIgYXZvaWQgaXQgdG9vIGJ1dCBpdCBkaWRuJ3Qgd29yay4KLQotU3VuIE1heSAxNiAwMTowNzoxNiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvQ2hhbmdlTG9nLmF3ayBkb2MvQ2hhbmdlTG9nLnhzbDogZml4ZWQgZXNjYXBpbmcKLQkgIGhhbmRsaW5nIGFuZCBhZGRlZCBkaXJlY3QgbGlua3MgdG8gYnVnemlsbGEgcmVwb3J0IGZvcgotCSAgYnVnIG51bWJlcnMuCi0KLVN1biBNYXkgMTYgMTE6MTE6MTMgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGVycm9yLmM6IG1vZGlmaWVkIHRvIGFzc3VyZSBwcm9wZXIgdXNlciBkYXRhIGlzIHNlbnQgdG8KLQkgIHN0cnVjdHVyZWQgZXJyb3Igcm91dGluZSAoYnVnIDE0MjU5OCkKLQotU3VuIE1heSAxNiAwMzoxODo1MiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IGEgY291cGxlIG9mIGxhcmdlIHN0YXRpYyB2YXJpYWJsZSB3aGljaCBzaG91bGQgcmVhbGx5Ci0JICBub3QgYmUgZGVjbGFyZWQgYXMgc3VjaCBjbHV0dGVyZWQgdGhlIC5ic3Mgc2VjdGlvbi4KLQotU3VuIE1heSAxNiAwMzowNjozMSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvQ2hhbmdlTG9nLmF3azogZml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbXMgd2hlbiBwYXJzaW5nCi0JICBsaWJ4c2x0IENoYW5nZUxvZwotCi1TYXQgTWF5IDE1IDIwOjE0OjIxIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9DaGFuZ2VMb2cuYXdrIGRvYy9DaGFuZ2VMb2cueHNsOiBmaXJzdCBzdGVwcyBvZiBhIGdvb2QKLQkgIENoYW5nZUxvZyBwYWdlIGdlbmVyYXRpb24uIFRoZSBhd2sgc2hvdWRsIGVzY2FwZSBjaGFyYWN0ZXJzCi0JICBub3Qgb2theSBpbiBYTUwgYW5kIHRoZSB4c2x0IHNob3VsZCBtYWtlIGxpbmtzIHRvIGZ1bmN0aW9ucwotCSAgb3IgdmFyaWFibGVzIG9yIGJ1ZyByZXBvcnRlZCBpbiB0aGUgZW50cmllcy4KLQotU2F0IE1heSAxNSAxNDo1Nzo0MCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzYXZlLmMgaW5jbHVkZS9saWJ4bWwveG1sc2F2ZS5oOiBzdGFydCBhZGRpbmcgQVBJIGZvciAKLQkgIGVzY2FwaW5nIGN1c3RvbWl6YXRpb24uCi0KLVNhdCBNYXkgMTUgMTI6Mzg6MTcgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jOiBtb3JlIHhtbFNhdmUgY2xlYW51cCwgb3B0aW1pemF0aW9uIGFuZCByZWZhY3RvcmluZwotCi1GcmkgTWF5IDE0IDE3OjUxOjQ4IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmMgeG1sc2F2ZS5jOiB0aGlyZCBwYXNzIGF0IHRoZSBlc2NhcGluZyByZWZhY3RvcmluZy4KLQotRnJpIE1heSAxNCAxMjozNzoyNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmM6IGVuaGFuY2VkIHRoZSBlbmhhbmNlbWVudCwgZml4ZWQgYW5vdGhlciBjb3VwbGUgb2YKLQkgIHNwZWNpYWwgY2FzZXMuCi0KLUZyaSBNYXkgMTQgMTE6NDg6MzMgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHBhcnNlci5jOiBzbWFsbCBlbmhhbmNlbWVudCB0byBkdGQgaGFuZGxpbmcgb2YgKGE/KSsgKGJ1ZyAxNDI0ODcpCi0KLVRodSBNYXkgMTMgMjM6MTk6MDAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYyB4bWxzYXZlLmMgaW5jbHVkZS9saWJ4bWwveG1sSU8uaDogc2Vjb25kIHBhc3Mgb24gZXNjYXBpbmcKLQkgIGhhbmRsaW5nLCBzdGFydCB0byBsb29rcyBiZXR0ZXIsIG5lZWQgdG8gYmUgY29tcGxldGVkIGFuZCBhZGRlZAotCSAgZGlyZWN0bHkgYXQgdGhlIHNhdmluZyBjb250ZXh0IGxldmVsLgotCi1UaHUgTWF5IDEzIDEwOjMxOjI4IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmMgeG1sc2F2ZS5jIGluY2x1ZGUvbGlieG1sL3htbElPLmg6IGZpcnN0IHBhc3MgYXQgcmVmYWN0b3JpbmcKLQkgIHRoZSBlc2NhcGUgb24gc2F2ZSByb3V0aW5lcyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlcyAobGVzcyBtYWxsb2MpCi0JICBhbmQgbW9yZSBmbGV4aWJpbGl0eSB1c2luZyB0aGUgbmV3IHNhdmluZyBjb250ZXh0LiBQcmVsaW1pbmFyeQotCSAgd29yaywgaW50ZXJmYWNlIHdpbGwgY2hhbmdlLgotCi1XZWQgTWF5IDEyIDIyOjM0OjAzIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzLmM6IGFkZGVkIGNvZGUgaW4geG1sU2NoZW1hQnVpbGRBQ29udGVudE1vZGVsIHRvIGhhbmRsZQotCSAgZWxlbWVudCByZWZlcmVuY2Ugd2l0aGluIHRoZSB4czphbGwgY29uc3RydWN0IChidWcgMTM5ODk3KQotCi1XZWQgTWF5IDEyIDE3OjI3OjE4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4aW5jbHVkZS5jOiBhIGxpdHRsZSBmdXJ0aGVyIGZpeGluZyBvZiBmYWxsYmFjayBwcm9jZXNzaW5nLCB0aGlzCi0JICB0aW1lIGZvciBmYWxsYmFjayB3aXRoIGNoaWxkcmVuIChidWcgMTM5NTIwKS4KLQotV2VkIE1heSAxMiAwODoyMTozMyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hcy5jOiBhZGRlZCBjb2RlIGluIHhtbFNjaGVtYUJ1aWxkQ29udGVudE1vZGVsIHRvCi0JICBhbGxvdyByZWYgaW4gZ3JvdXAgZGVmaW5pdGlvbiAoYnVnIDEzNDQxMSkuICBBbHNvIGZpeGVkCi0JICBtaXNjIGNvbXBpbGF0aW9uIHdhcm5pbmcgbWVzc2FnZXMuCi0JKiByZXN1bHQvc2NoZW1hL2dyb3VwMF8wXzAsIHJlc3VsdC9zY2hlbWEvZ3JvdXAwXzBfMC5lcnI6Ci0JICByZWdlbmVyYXRlZCAobm93IG5vIGVycm9yIHJlcG9ydGVkKS4KLQotVHVlIE1heSAxMSAxMTo1NTo1OSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBmaXggdG8gdGhlIGZpeCBmb3IgIzE0MTg2NCBmcm9tIFBhdWwgRWxzZXRoICAKLQkqIEhUTUxwYXJzZXIuYyByZXN1bHQvSFRNTC9kb2MzLmh0bTogYXBwbHkgZml4IGZyb20gRGF2aWQgR2F0d29vZCBmb3IKLQkgICMxNDExOTUgYWJvdXQgdGV4dCBiZXR3ZWVuIGNvbW1lbnRzLgotCi1UdWUgTWF5IDExIDIzOjA0OjQ3IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzLmMsIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaCwKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IEFwcGxpZWQgcGF0Y2hlcyBzdXBwbGllZCBieQotCSAgS2FzaW1pZXIgQnVjaGNpay4KLQkqIHRlc3Qvc2NoZW1hcy9wbzFfMC54bWwsIHRlc3Qvc2NoZW1hcy9wbzFfMC54c2Q6Ci0JICBjaGFuZ2VkIHRlc3QgdG8gYWNjb3VudCBmb3IgYWJvdmUgcGF0Y2guCi0KLVR1ZSBNYXkgMTEgMDk6MDY6NTMgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weTogYmV0dGVyIHBvcnRhYmlsaXR5IGZpeCBmb3IgZigqYXJncyksCi0JICB1c2UgYXBwbHkoZiwgYXJncykgYXMgU3RlcGhhbmUgQmlkb3VsIHN1Z2dlc3RlZAotCi1Nb24gTWF5IDEwIDE1OjQ5OjIyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxyZWdleHAuYzogZW5oYW5jZWQgeG1sUmVnU3RhdGVBZGRUcmFucyB0byBjaGVjayBpZiB0cmFuc2l0aW9uCi0JICBpcyBhbHJlYWR5IHByZXNlbnQgYW5kLCBpZiBzbywgdG8gaWdub3JlIHRoZSByZXF1ZXN0IHRvIGFkZCBpdC4KLQkgIFRoaXMgaGFzIGEgdmVyeSBkcmFtYXRpYyBlZmZlY3Qgb24gbWVtb3J5IHJlcXVpcmVtZW50cyBhcyB3ZWxsCi0JICBhcyBlZmZpY2llbmN5LiAgSXQgYWxzbyBmaXhlcyBidWcgMTQxNzYyLgotCi1TdW4gTWF5ICA5IDIwOjQwOjU5IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5OgotCSAgYXBwbGllZCBwYXRjaCBmcm9tIEVkIERhdmlzIHRvIGFsbG93ICJtYWtlIHRlc3RzIiB0byB3b3JrCi0JICB3aXRoIFB5dGhvbiAxLjUKLQotU3VuIE1heSAgOSAxOTo0NjoxMyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzYXZlLmM6IGFwcGx5IGZpeCBmb3IgWEhUTUwxIGZvcm1hdGluZyBmcm9tIE5pY2sgV2VsbG5ob2ZlcgotCSAgZml4ZXMgYnVnICMxNDEyNjYKLQkqIHRlc3QveGh0bWxjb21wIHJlc3VsdC8veGh0bWxjb21wKjogYWRkZWQgdGhlIHNwZWNpZmljIHJlZ3Jlc3Npb24KLQkgIHRlc3QKLQotU3VuIE1heSAgOSAxNDowNzoyMSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogZml4IGZvciBhIHBlZGFudGljIG1ha2UgY2hlY2sgd2l0aG91dCBtYWtlIGFsbCByZXF1ZXN0Ci0KLVNhdCBNYXkgIDggMjI6NTY6MjIgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmMgeG1sSU8uYzogZml4aW5nIHNvbWUgcHJvYmxlbXMgaW4gVVJJIHVuZXNjYXBpbmcKLQkgIGFuZCBvdXRwdXQgYnVmZmVyIG9wZW5pbmcsIHRoaXMgc2hvdWxkIGZpeCAjMTQxODY0Ci0KLUZyaSBNYXkgIDcgMjI6MzE6NTQgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC92YWxpZC5oOiBmaXhlcyB0aGUgdXNlIG9mICdsaXN0JyBhcyBhIHBhcmFtZXRlcgotCSogeG1sSU8uYyBpbmNsdWRlL2xpYnhtbC94bWxJTy5oOiBhZGRlZCB4bWxQb3BJbnB1dENhbGxiYWNrIGZvcgotCSAgTWF0dCBTZXJnZWFudAotCi1UaHUgTWF5ICA2IDIxOjE0OjM4IFBEVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxyZWdleHAuYzogZW5oYW5jZWQgdGhlIGhhbmRsaW5nIG9mIHN1YmV4cHJlc3Npb24gcmFuZ2VzCi0JICB3aGljaCBoYXZlIGEgbWluT2NjdXJzIG9mIDAgKGJ1ZyAxNDA0NzggYWdhaW4pOyBjbGVhbmVkIHVwCi0JICBjb21tZW50cyB0aHJvdWdob3V0IHRoZSBtb2R1bGUuCi0KLVR1ZSBNYXkgIDQgMDA6NTI6MTYgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhZGRpbmcgYSAtLW1heG1lbSBvcHRpb24gdG8gY2hlY2sgbWVtb3J5IHVzZWQuCi0KLVNhdCBNYXkgIDEgMDE6MDg6NDQgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jIHhtbHNhdmUuYyBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYzogRml4ZWQKLQkgIGJ1ZyAjMTQxNTI5IGkuZS4gdmFyaW91cyBwcm9ibGVtcyB3aGVuIGJ1aWxkaW5nIHdpdGggLS13aXRob3V0LWh0bWwKLQotRnJpIEFwciAzMCAxODoxMjozMSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmMgeG1scmVhZGVyLmM6IGZpeGluZyBidWcgIzE0MTM4NCB3aGVyZSB0aGUgcmVhZGVyIGRpZG4ndAotCSAgY2FsbCB0aGUgZGVyZWdpc3RlcmluZyBmdW5jdGlvbnMuIEFsc28gYWRkZWQgdGhlIGNoZWNrIHRvCi0JICB4bWxsaW50IC0tc3RyZWFtIC0tY2hrcmVnaXN0ZXIgLgotCi1GcmkgQXByIDMwIDA4OjU3OjQ3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1zdmM6IGFwcGxpZWQgYSBzZWNvbmQgcGF0Y2ggZnJvbSBNYXJrIFZha29jIGZvcgotCSAgcmVncmVzc2lvbiB0ZXN0cyBvbiBXaW5kb3dzCi0KLVRodSBBcHIgMjkgMjE6NDc6MjMgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IG5ldmVyIGNvbW1pdCB3aXRob3V0IHJ1bm5pbmcgbWFrZSB0ZXN0cyBmaXJzdCAhCi0KLVRodSBBcHIgMjkgMjA6MTU6MjAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGZpeCBhIG5hc3R5IHByb2JsZW0gd2l0aCByZWFkaW5nIG92ZXIgdGhlIGVuZAotCSogeG1sc2F2ZS5jOiBmaXggYSByZXBvcnRlZCBtZW1vcnkgbGVhayBhcHBhcmVudGx5Ci0KLVRodSBBcHIgMjkgMTc6MDU6MDAgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogd2luMzIvTWFrZWZpbGUubXN2YzogcGF0Y2ggZnJvbSBNYXJrIFZha29jIGZvciByZWdyZXNzaW9uIHRlc3RzCi0JICBvbiBXaW5kb3dzLgotCSogeHBhdGguYzogdGhlIE5hTiBwcm9ibGVtIGFsc28gc2hvd3MgdXAgb24gQm9ybGFuZAotCi1Nb24gQXByIDI2IDIzOjM3OjEyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxyZWdleHAuYzogZW5oYW5jZWQgeG1sRkFSZWdFeGVjIHJhbmdlIGV2YWx1YXRpb24gZm9yIG1pbgotCSAgb2NjdXJzIDAgcHJvYmxlbXMgLSBmaXhlcyBidWcgMTQwNDc4LgotCi1UaHUgQXByIDIyIDA5OjEyOjQ3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJuZ3BhcnNlci5jOiB0aW55IHBhdGggZml4ZXMgdGhlICJ4bWxDb252ZXJ0Q1JOR0ZpbGUiIGZ1bmN0aW9uIG5hbWUKLQkgIGZyb20gS2FzaW1pZXIgQnVjaGNpawotCSogeG1sc2NoZW1hcy5jOiByZWN1cnNpdmUgeHM6ZXh0ZW5zaW9uIGZpeCBmcm9tIHRhaWhlaSBnb2kKLQotV2VkIEFwciAyMSAwMDoxOToyOSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHNtYWxsIGJ1ZmZlciByZXNpemluZyBpbXByb3ZlbWVudCBmcm9tIE1vcnRlbiBXZWxpbmRlcgotCSAgY2xvc2VzICMxNDA2MjkKLQotVHVlIEFwciAyMCAyMzo0MDoxNCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBsYXN0IHZlcnNpb24gb2YgdGhlIGZpeCBmb3IgTVNDIHZlcnNpb24gMTIwMAotCi1UdWUgQXByIDIwIDE5OjQwOjM3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBraWxsaW5nIHRoZSBzdHJuY21wIHZzLiBtZW1jbXAgY29udHJvdmVyc3kgYW5kICMxNDA1OTMKLQotVHVlIEFwciAyMCAxMzoyNzowNiBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9TQVgyLmg6IEthc2ltaWVyIEJ1Y2hjaWsgcG9pbnRlZCBvdXQgc29tZSAKLQkgIGluZXhpc3RlbnQgZnVuY3Rpb25zLCBjbGVhbmVkIHRoZW0gb3V0LgotCi1UdWUgQXByIDIwIDExOjQyOjUwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVycm9yLmM6IEpvaG5zb24gQ2FtZXJvbiBwb2ludGVkIG91dCB0aGF0Ci0JICBpbml0R2VuZXJpY0Vycm9yRGVmYXVsdEZ1bmMoKSB3YXMgcmVhbGx5IHdyb25nLgotCSogeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IHhtbFRleHRSZWFkZXJNb2RlIGVudW0KLQkgIG11c3QgYmUgbWFkZSBwdWJsaWMsIGFkZGVkIHNvbWUgbWlzc2luZyBjb21tZW50cyBvbiB0aGUgWE1MUmVhZGVyCi0JICBoZWFkZXIuCi0JKiBjMTRuLmM6IEFsZXhzZXkgZml4ZWQgQzE0TiBidWcgd2l0aCBwcm9jZXNzaW5nIG5hbWVzcGFjZXMKLQkgIGZyb20gYXR0cmlidXRlcwotCi1Nb24gQXByIDE5IDIzOjI3OjQ2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIGEgc3R1cGlkICgpIGVycm9yICsgTWFyayBuYW1lLgotCi1TdW4gQXByIDE4IDIzOjQ1OjQ2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNi45IHJlbGVhc2UKLQkqIGRvYy8qIE5ld3M6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvY3MKLQotU3VuIEFwciAxOCAyMjo1MTo0MyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiByZWxheGVkIGlkKCkgdG8gbm90IGNoZWNrIHRhaHQgdGhlIG5hbWUocykgcGFzc2VkCi0JICBhcmUgYWN0dWFsbHkgTkNOYW1lLCBkZWNpZGVkIHRoaXMgaW4gYWdyZWVtZW50IHdpdGggQWxla3NleSBTYW5pbgotCSAgc2luY2UgZXhpc3Rpbmcgc3BlY3MgbGlrZSBWaXNhM0QgYnJva2UgdGhhdCBjb25mb3JtYW5jZSBjaGVja2luZwotCSAgYW5kIG90aGVyIHRvb2xzIHNlZW1zIHRvIG5vdCBpbXBsZW1lbnQgaXQgc2lnaC4uLgotCSogU0FYMi5jOiBjaGVjayBhdHRyaWJ1dGUgZGVjbHMgZm9yIHhtbDppZCBhbmQgdGhlIHZhbHVlIGlzIGFuCi0JICBOQ05hbWUuCi0JKiB0ZXN0L3htbGlkL2lkX2VyciogcmVzdWx0L3htbGlkL2lkX2Vycio6IGFkZGVkIGVycm9yIHRlc3RpbmcKLQotU3VuIEFwciAxOCAyMTo0NjoxNyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiB3b3JrIGFyb3VuZCBNaWNyb3NvZnQgY29tcGlsZXIgTmFOIGJ1ZyByYWlzZSByZXBvcnRlZAotCSAgYnkgTWFyayBWYWtvYwotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaCAKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGZpeGVkIGEgcmVjdXNpdmUgZXh0ZW50aW9uIHNjaGVtYXMKLQkgIGNvbXBpbGF0aW9uIGVycm9yIHJhaXNlZCBieSB0YWloZWkgZ29pCi0KLVN1biBBcHIgMTggMTY6NTc6MDIgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW46IGtlZXAgdGhlIENoYW5nZUxvZyBjb21wcmVzc2VkIAotCSogeG1scmVhZGVyLmM6IGZpeCBhIHNlZ2ZhdWx0IHdoZW4gdXNpbmcgQ2xvc2UoKQotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9yZWFkZXI4LnB5OiB0ZXN0IGZvcgotCSAgdGhlIENsb3NlKCkgcmVhZGVyIEFQSS4KLQotU2F0IEFwciAxNyAyMjo0MjoxMyBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hcy5jLCB4bWx3cml0ZXIuYywgZG9jL2V4YW1wbGVzL3BhcnNlNC5jLAotCSAgZG9jL2V4YW1wbGVzL2lvMi5jOiBtaW5vciB3YXJuaW5nIGNsZWFudXAgKG5vIGNoYW5nZSB0byBsb2dpYykKLQkqIHhpbmNsdWRlOiBmaXhlZCByZXR1cm4gdmFsdWUgZm9yIGludGVybmFsIGZ1bmN0aW9uCi0JICB4bWxYSW5jbHVkZUxvYWRGYWxsYmFjayAobm93IGFsd2F5cyAwIG9yIC0xKQotCi1TYXQgQXByIDE3IDIxOjMyOjMyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB2YWxpZC5jOiBzbWFsbCBlbmhhbmNlbWVudCB0byBmaXggYnVnIDEzOTc5MQotCi1GcmkgQXByIDE2IDE4OjQ0OjQ3IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGFwcGxpZWQgcGF0Y2hlcyBmcm9tIEthc2ltaWVyIEJ1Y2hjaWsKLQkgIGZvciB0aGUgYXR0cmlidXRlIHVzZSBzdXBwb3J0Ci0JKiB0ZXN0L3NjaGVtYXMvYXR0cnVzZSogcmVzdWx0L3NjaGVtYXMvYXR0cnVzZSo6IGFkZGVkIHRoZQotCSAgdGVzdHMgdG8gdGhlIHJlZ3Jlc3Npb24gc3VpdGUuCi0KLUZyaSBBcHIgMTYgMTg6MjI6MjUgQ0VTVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2F2ZS5jOiBtb3ZlIHRoZSBUT0RPIGFzIGNvbW1lbnRzIGFzIHRoZSBmdW5jdGlvbiB3aGlsZSBub3QKLQkgIGZpbmlzaGVkIGFyZSB1c2FibGUgYXMtaXMKLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBwYXRjaCBmcm9tIEthc2ltaWVyIEJ1Y2hjaWsKLQkgIGltcGxlbWVudGluZyB1bmlvbgotCSogdGVzdC9zY2hlbWFzL3VuaW9uXzBfMC54KiByZXN1bHQvc2NoZW1hcy91bmlvbl8wXzAqOiBhZGRlZCBleGFtcGxlCi0JKiBweXRob24vTWFrZWZpbGUuYW06IGFwcGxpZWQgZml4IGZyb20gTWlrZSBIb21tZXkKLQotRnJpIEFwciAxNiAyMzo1ODo0MiBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBkZXRlY3RpbmcgZXh0ZXJuYWwgZHRkCi0JICBlbmNvZGluZyAoYnVnIDEzNTIyOSkuCi0JKiBNYWtlZmlsZS5hbTogbWlub3IgY2hhbmdlIHRvIHRlc3QgbGFiZWwKLQotRnJpIEFwciAxNiAxNjowOTozMSBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgcHJvYmxlbSBjYXVzaW5nIGR1cGxpY2F0ZSBmYWxsYmFjawotCSAgZXhlY3V0aW9uIChidWcgMTM5NTIwKQotCSogdGVzdC9YSW5jbHVkZS9kb2NzL2ZhbGxiYWNrMi54bWwgcmVzdWx0L1hJbmNsdWRlL2ZhbGxiYWNrMi4qOgotCSAgYWRkZWQgdGVzdGNhc2UKLQotRnJpIEFwciAgOSAyMzo0OTozNyBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBhZGRpbmcgeG1sOmlkIGRyYWZ0IHN1cHBvcnQKLQkqIE1ha2VmaWxlLmFtIHRlc3QveG1saWQvaWRfdHN0KiByZXN1bHQveG1saWQvaWRfdHN0KjogYWRkaW5nCi0JICA0IGZpcnN0IHJlZ3Jlc3Npb24gdGVzdHMKLQotRnJpIEFwciAgOSAxMTo1NjowOCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbjogZml4aW5nIFJlZCBIYXQgYnVnICMxMjA0ODIgLCBsaWJ4bWwyLXB5dGhvbgotCSAgc2hvdWxkIGRlcGVuZCBvbiB0aGUgdmVyc2lvbiBvZiBweXRob24gdXNlZCB0byBjb21waWxlIGl0LgotCi1Nb24gQXByICA1IDA5OjA3OjI0IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogYXBwbGllZCBwYXRjaCBmcm9tIEphbWVzIEJ1cnNhLCBmcmFtZXNldCBzaG91bGQKLQkgIGNsb3NlIGhlYWQuCi0KLUZyaSBBcHIgIDIgMjI6MDI6MjQgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHJlbGF4bmcuYzogZml4ZWQgcHJvYmxlbSBpbiB4bWxSZWxheE5HQ29tcGFyZU5hbWVDbGFzc2VzCi0JICB3aGljaCB3YXMgY2F1c2luZyBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUucHkgdGVzdCAzNTEgdG8gZmFpbC4KLQotRnJpIEFwciAgMiAxNzowMzo0OCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogbmFub2h0dHAuYzogaW1wbGVtZW50ZWQgZml4IGZvciBNJCBJSVMgcmVkaXJlY3QgcHJvdmlkZWQKLQkgIGJ5IElhbiBIdW1tZWwKLQkqIHJlbGF4bmcuYzogZml4ZWQgcHJvYmxlbSB3aXRoIG5vdEFsbG93ZWQgY29tcGlsYXRpb24KLQkgIChidWcgMTM4NzkzKQotCi1UaHUgQXByICAxIDIyOjA3OjUyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHVyaS5jOiBmaXggZm9yIHhtbFVyaUVzY2FwZSBvbiAiaHR0cDovL3VzZXJAc29tZXdoZXJlLmNvbSIKLQkgIGZyb20gTWFyayBWYWtvYy4KLQotMjAwNC0wNC0wMSAgSm9oYW4gRGFobGluICA8am9oYW5AZ25vbWUub3JnPgotCi0JKiBweXRob24vLmN2c2lnbm9yZTogQWRkIGdlbmVyYXRlZCBmaWxlcywgdG8gbWFrZSBjdnMgc2lsZW50LgotCi1UaHUgQXByICAxIDEyOjQxOjM2IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogc21hbGwgc2lnbmVkLW5lc3MgcGF0Y2ggZnJvbSBTdGV2ZSBMaXR0bGUKLQotV2VkIE1hciAzMSAxNzo0NzoyOCBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogcGF0Y2hlZCBhIGJ1ZyBpbiBwYXJzaW5nIHByb2R1Y3Rpb24gMSBhbmQgMiBvZgotCSAgeG1sc2NoZW1hcyByZWdleHAgdGhhdCBXaWxsaWFtIHBvaW50ZWQgb3V0IHdoaWxlIHdvcmtpbmcgb24KLQkgICMxMzQxMjAKLQkqIHRlc3QvcmVnZXhwL2JyYW5jaCByZXN1bHQvcmVnZXhwL2JyYW5jaDogYWRkZWQgYSBzcGVjaWZpYwotCSAgcmVncmVzc2lvbiB0ZXN0Ci0KLVdlZCBNYXIgMzEgMDk6NTA6MzIgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhZGRlZCBQWVRIT05QQVRIIHRvIHB5dGhvbiB0ZXN0cyBmb3IgU2NoZW1hcwotCSAgYW5kIFJlbGF4TkcKLQkqIHRlc3QveHNkdGVzdC94c2R0ZXN0c3VpdGUueG1sOiBhZGRlZCB0ZXN0ZmlsZSBmb3IKLQkgIFNjaGVtYXNQeXRob25UZXN0cwotCi1Nb24gTWFyIDI5IDE2OjU2OjQ5IENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy9leGFtcGxlcy54c2wgZG9jL2V4YW1wbGVzL2luZGV4Lmh0bWw6IGFkZGVkCi0JICBpbmZvcm1hdGlvbiBhYm91dCBjb21waWxpbmcgb24gVW5peAotCi1Nb24gTWFyIDI5IDE0OjE4OjEyIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogZml4ZXMgdGhlIGNvbW1lbnRzIGZvciB4bWxDYXRhbG9nRHVtcCBhbmQgeG1sRHVtcEFDYXRhbG9nCi0JKiBkb2MvKjogcmVidWlsdCB0byB1cGRhdGUKLQotU3VuIE1hciAyOCAxODoxMTo0MSBDRVNUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzYXZlLmM6IG9wdGltaXplIGluZGVudGF0aW9uIGJhc2VkIG9uIHRoZSBuZXcgY29udGV4dAotCi1TdW4gTWFyIDI4IDE0OjE3OjEwIENFU1QgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy94cGF0aDIuYyBkb2MvZXhhbXBsZXMveHBhdGgyLnJlczogaGFuZGxlIGFuZCBleHBsYWluCi0JICBhIHZlcnkgdHJpY2t5IHByb2JsZW0gd2hlbiBtb2RpZnlpbmcgdGhlIHRyZWUgYmFzZWQgb24gYW4gWFBhdGgKLQkgIHJlc3VsdCBxdWVyeS4KLQotU2F0IE1hciAyNyAwOTo1NjoxNCBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBwcm9ibGVtIHdpdGggSVNfQ09NUElMQUJMRSBmbGFnCi0JICAoYnVnIDEzMDIxNikKLQotRnJpIE1hciAyNiAxODoyODozMiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gRGF2ZSBCZWNrZXR0IHRvIGNvcnJlY3QgbGluZSBudW1iZXIKLQkgIGVycm9ycyB3aGVuIHVzaW5nIHB1c2ggd2l0aCBDREFUQQotCi1GcmkgTWFyIDI2IDE0OjUzOjU4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2V4YW1wbGVzL3hwYXRoMS5jOiBhZGRlZCBhIHRlc3QgdGVtcGxhdGUKLQkqIGRvYy9leGFtcGxlcy94cGF0aDIuYyBkb2MvZXhhbXBsZXMveHBhdGgyLnJlcyBkb2MvZXhhbXBsZXMvKjoKLQkgIGFkZGVkIGEgbmV3IGV4YW1wbGUsIGFuZCBtYWtlIHZhbGdyaW5kIHRhcmdldCAKLQotRnJpIE1hciAyNiAxMTo0NzoyOSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBseSBmaXggZm9yICMxMzY2OTMKLQotVGh1IE1hciAyNSAyMDoyMTowMSBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvZXhhbXBsZXMvaW8yLmMKLQkqIGRvYy9leGFtcGxlcy9pbzIucmVzCi0JYWRkIHhtbERvY0R1bXBNZW1vcnkgZXhhbXBsZSBpbiByZXNwb25zZSB0byBtYWlsaW5nIGxpc3QgRkFRCi0JKHJlYnVpbHQgeG1sIGFuZCBodG1sIGFsc28pCi0KLVRodSBNYXIgMjUgMTA6MzM6MDUgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIHRlc3RYUGF0aC5jIHhtbGxpbnQuYyB4bWxzY2hlbWFzdHlwZXMuYzogYXBwbGllZAotCSAgcGF0Y2ggZnJvbSBNYXJrIFZha29jIGF2b2lkaW5nIHVzaW5nIHhtbFBhcnNlKiBvcHRpb24gYW5kIHVzZQotCSAgeG1sUmVhZCogaW5zdGVhZAotCSogd2luMzIvTWFrZWZpbGUuYmNiOiBwYXRjaCB0byBCb3JsYW5kIEMrKyBidWlsZGVyIGZyb20gRXJpYyBadXJjaGVyCi0JICB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHNvbWUgcGF0aG5hbWVzLgotCi1UdWUgTWFyIDIzIDEyOjM1OjA4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy8qIE5ld3M6IHByZXBhcmluZyAyLjYuOCByZWxlYXNlLCB1cGRhdGVkIGFuZCByZWJ1aWx0Ci0JICB0aGUgZG9jcy4KLQkqIE1ha2VmaWxlLmFtOiB1c2UgdmFsZ3JpbmcgZnJvIHRoZSBuZXcgUHl0aG9uIGJhc2VkIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIE1hciAyMiAyMDowNzoyNyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogcmVtb3ZlIGEgbWVtb3J5IGxlYWsgb24gc2NoZW1hcyB0eXBlIGZhY2V0cy4KLQkqIGNoZWNrLXJlbGF4bmctdGVzdC1zdWl0ZS5weSBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUyLnB5Ci0JICBjaGVjay14c2RkYXRhLXRlc3Qtc3VpdGUucHk6IHJlZHVjZSB2ZXJib3NpdHkKLQkqIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5hbTogaW5jb3Jwb3JhdGVkIHRoZSBQeXRob24gcmVncmVzc2lvbnMKLQkgIHRlc3RzIGZvciBSZWxheC1ORyBhbmQgU2NoZW1hcyBEYXRhdHlwZSB0byAibWFrZSB0ZXN0cyIKLQotTW9uIE1hciAyMiAxNjoxNjoxOCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHdyaXRlci5jIGluY2x1ZGUvbGlieG1sL3htbHdyaXRlci5oIGRvYy8qIDogYXBwbGllZCBwYXRjaCBmcm9tCi0JICBBbGZyZWQgTWlja2F1dHNjaCBmb3IgYmV0dGVyIERURCBzdXBwb3J0LgotCSogU0FYMi5jIEhUTUxwYXJzZXIuYyBwYXJzZXIuYyB4aW5jbHVkZS5jIHhtbGxpbnQuYyB4bWxyZWFkZXIuYwotCSAgeG1sc2NoZW1hcy5jOiBmaXhlZCBidWcgIzEzNzg2NyBpLmUuIGZpeGVkIHByb3Blcmx5IHRoZSB3YXkKLQkgIHJlZmVyZW5jZSBjb3VudGluZyBpcyBoYW5kbGVkIGluIHRoZSBYTUwgcGFyc2VyIHdoaWNoIGhhZCB0aGUKLQkgIHNpZGUgZWZmZWN0IG9mIHJlbW92aW5nIGEgbG90IG9mIGhhemFyZG91cyBjcnVmdCBhZGRlZCB0byB0cnkKLQkgIHRvIGZpeCB0aGUgcHJvYmxlbXMgYXNzb2NpYXRlZCBhcyB0aGV5IHBvcHBlZCB1cC4KLQkqIHhtbElPLmM6IEZJTEUgKiBjbG9zZSBmaXh1cCBmb3Igc3RkZXJyL3N0ZG91dAotCi1TdW4gTWFyIDIxIDE5OjE5OjQxIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiByZWxheG5nLmM6IGFkZGVkIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBlbGVtZW50IGlzIG5vdAotCSAgZm91bmQgd2l0aGluIGEgPGNob2ljZT4gKGJ1ZyAxMjYwOTMpCi0KLVNhdCBNYXIgMjAgMjI6MjU6MTggSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBlbmhhbmNlZCB0aGUgbG9naWMgb2YgcGFyc2luZyBjaGFyIGdyb3VwcyB0bwotCSAgYmV0dGVyIGhhbmRsZSBpbml0aWFsIG9yIGVuZGluZyAnLScgKGJ1ZyAxMzU5NzIpCi0KLVNhdCBNYXIgMjAgMTk6MjY6MDMgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHJlbGF4bmcuYzogYWRkZWQgY2hlY2sgZm9yIGV4dGVybmFsIHJlZmVyZW5jZSBpbiAKLQkgIHhtbFJlbGF4TkdHZXRFbGVtZW50cyAoYnVnIDEzNzcxOCkKLQkqIHRlc3QvcmVsYXhuZy9ybmdidWctMDAxLiosIHJlc3VsdC9yZWxheG5nL3JuZ2J1Zy0wMDEqOiBhZGRlZAotCSAgcmVncmVzc2lvbiB0ZXN0IGZvciBhYm92ZQotCi1XZWQgTWFyIDE3IDE2OjM3OjIyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBuYW5vaHR0cC5jOiBhZGRlZCBhIGNsb3NlIGZvciB0aGUgbG9jYWwgZmlsZSBkZXNjcmlwdG9yCi0JICAoYnVnIDEzNzQ3NCkKLQotTW9uIE1hciAxNSAxNTo0Njo1OSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNhdmUuYzogc3dpdGNoZWQgdGhlIG91dHB1dCByb3V0aW5lcyB0byB1c2UgdGhlIG5ldyBjb250ZXh0LgotCi1Nb24gTWFyIDE1IDEwOjM3OjE4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiByZWxheG5nLmM6IGVuaGFuY2VkIHRvIGlnbm9yZSBYTUxfWElOQ0xVREVfU1RBUlQgYW5kIFhNTF9YSU5DTFVERV9FTkQKLQkgIG5vZGVzIChidWcgMTM3MTUzKQotCi1TdW4gTWFyIDE0IDEzOjE5OjIwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBKb2huIEJlbG1vbnRlIGZvciBhbnlVUkkuCi0KLVdlZCBNYXIgMTAgMTc6MjI6NDggQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4IGJ1ZyByZXBvcnRlZCBieSBIb2xnZXIgUmF1Y2gKLQkqIHRlc3QvYXR0OCByZXN1bHQvbm9lbnQvYXR0OCByZXN1bHQvYXR0OCByZXN1bHQvYXR0OC5yZHIKLQkgIHJlc3VsdC9hdHQ4LnNheDogYWRkZWQgdGhlIHRlc3QgdG8gdGggcmVncmVzc2lvbiBzdWl0ZQotCi1XZWQgTWFyIDEwIDE5OjQyOjIyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkb2Mvc2VhcmNoLnBocDogTWlub3IgY2hhbmdlIGZvciBsYXRlciB2ZXJzb24gb2YgcGhwIHJlcXVpcmluZwotCSAgJEhUVFBfR0VUX1ZBUlMuCi0KLVdlZCBNYXIgMTAgMDA6MTI6MzEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHRyZWUuYzogQ2hhbmdlZCB0aGUgZmxhZyB0byB4bWxEb2NDb3B5Tm9kZSAoYW5kIHNpbWlsYXIgcm91dGluZXMpLAotCSAgcHJldmlvdXNseSB1c2VkIG9ubHkgZm9yIHJlY3Vyc2lvbiwgdG8gdXNlIGEgdmFsdWUgb2YgJzInIHRvCi0JICBpbmRpY2F0ZSBjb3B5IHByb3BlcnRpZXMgJiBuYW1lc3BhY2VzLCBidXQgbm90IGNoaWxkcmVuLgotCSogeGluY2x1ZGUuYzogY2hhbmdlZCB0aGUgaGFuZGxpbmcgb2YgcmFuZ2VzIHRvIHVzZSB0aGUgYWJvdmUgbmV3Ci0JICBmYWNpbGl0eS4gIEZpeGVzIEJ1ZyAxMzQyNjguCi0KLVR1ZSBNYXIgIDkgMTg6NDg6NTEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYiwgd2luMzIvTWFrZWZpbGUubWluZ3csIHdpbjMyL01ha2VmaWxlLm1zdmM6Ci0JICBhZGRlZCBuZXcgbW9kdWxlIHhtbHNhdmUgd2l0aCBwYXRjaCBzdXBwbGllZCBieSBFcmljIFp1cmNoZXIKLQkgIChzZWNvbmQgYXR0ZW1wdCAtIGRvbid0IGtub3cgd2hhdCBoYXBwZW5lZCB0byB0aGUgZmlyc3Qgb25lISkKLQotVHVlIE1hciAgOSAwOTo1OToyNSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5OiBhcHBsaWVkIHBhdGNoIGZyb20gQW50aG9ueSBDYXJyaWNvCi0JICBwcm92aWRpbmcgUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fub25pY2FsaXphdGlvbiBDMTROIHN1cHBvcnQuCi0KLU1vbiBNYXIgIDggMTE6MTI6MjMgQ0VUIDIwMDQgSGFnZW4gTW9lYml1cyA8aGFnZW4ubW9lYml1c0BzdGFyc2NoaWZmY2hlbi5kZT4KLQotCSogLmN2c2lnbm9yZSBhbmQgcHl0aG9uLy5jdnNpZ25vcmUgcGF0Y2hlZAotCi1Nb24gTWFyICA4IDIyOjMzOjE0IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4aW5jbHVkZS5jOiBlbmhhbmNlZCB0byBhc3N1cmUgdGhhdCBpZiB4cG9pbnRlciBpcyBjYWxsZWQKLQkgIGZvciBhIGRvY3VtZW50LCB0aGUgWE1MX1BBUlNFX05PRU5UIGZsYWcgaXMgc2V0IGJlZm9yZSBwYXJzaW5nCi0JICB0aGUgaW5jbHVkZWQgZG9jdW1lbnQgc28gdGhhdCBlbnRpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0Ci0JICB0YWtlbiBjYXJlIG9mLgotCSogeHBvaW50ZXIuYzogY29ycmVjdGVkIGNvZGUgc28gdGhhdCwgaWYgYW4gWE1MX0VOVElUWV9SRUYgbm9kZQotCSAgaXMgZW5jb3VudGVyZWQsIGl0IHdpbGwgbG9nIGl0IGFuZCBub3QgY3Jhc2ggKGJ1ZyAxMzU3MTMpCi0KLVN1biBNYXIgIDcgMTk6MDM6NDggSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhpbmNsdWRlLmM6IG1vZGlmaWVkIHRvIG1ha2Ugc3ViLWluY2x1ZGVzIGluaGVyaXQgdGhlCi0JICBwYXJzZSBmbGFncyBmcm9tIHRoZSBwYXJlbnQgZG9jdW1lbnQgKGJ1ZyAxMzI1OTcpCi0KLUZyaSBNYXIgIDUgMDE6MTM6MjIgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IFFOYW1lIGhhbmRsaW5nIGZpeGVzIGZvciB0aGUgWE1MIFNjaGVtYXMKLQkgIHN1cHBvcnQgZnJvbSBBZGFtIERpY2ttZWlzcwotCSogdGVzdC9zY2hlbWFzL3BvMV8wLnhzZDogYWxzbyBmaXggdGhlIHNjaGVtYXMKLQkqIHRlc3Qvc2NoZW1hcy9uc1sxMl0qIHJlc3VsdC9zY2hlbWFzL25zWzEyXSo6IGFkZGVkIHRoZSBzcGVjaWZpYwotCSAgcmVncmVzc2lvbiB0ZXN0cwotCi1UaHUgTWFyICA0IDIzOjAzOjAyIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGRvYy9NYWtlZmlsZS5hbSBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbToKLQkgIHBhYWxpZWQgcGF0Y2ggZnJvbSBKdWxpbyBNLiBNZXJpbm8gVmlkYWwgZml4aW5nIGJ1ZyAjMTM0NzUxCi0JICB0byBmaXggLS13aXRoLWh0bWwtZGlyIG9wdGlvbi4KLQkqIGRvYy8qOiByZWJ1aWx0IGZ1bGx5IHRoZSBkb2NzIAotCSogZG9jL2h0bWwvbGlieG1sLXhtbHNhdmUuaHRtbDogbmV3IGZpbGUgZnJvbSBuZXcgaGVhZGVyLgotCi1UaHUgTWFyICA0IDE2OjU3OjUwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYyB0ZXN0SFRNTC5jIHRyZWUuYyBkb2MvZXhhbXBsZXMvKi5jCi0JICBpbmNsdWRlL2xpYnhtbC94bWxzYXZlLmg6IGZpeGluZyBjb21waWxhdGlvbiBidWcgd2l0aCBzb21lIG9wdGlvbnMKLQkgIGRpc2FibGVkIGFzIHdlbGwgYXMgLS13aXRoLW1pbmltdW0gc2hvdWxkIGZpeCAjMTM0Njk1Ci0KLVRodSBNYXIgIDQgMTU6MDA6NDUgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxjYXRhbG9nLmM6IGFsbG93IGZhbGxiYWNrIHRvIFVSSSBsb29rdXAgd2hlbiBTWVNURU0gZmFpbHMsCi0JICBzaG91bGQgY2xvc2UgIzEzNDA5MgotCi1UaHUgTWFyICA0IDE0OjM5OjM4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gdHJlZS5jIHhtbHNhdmUuYyBpbmNsdWRlL2xpYnhtbC94bWxzYXZlLmg6IGNvbW1pdGluZwotCSAgdGhlIG5ldyB4bWxzYXZlIG1vZHVsZSBiZWZvcmUgdGhlIGFjdHVhbGwgYmlnIGNvZGUgY2hhbmdlLgotCi1UaHUgTWFyICA0IDEyOjM4OjUzIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQWRhbSBEaWNrbWVpc3MgZm9yIG1peGVkIGNvbnRlbnQKLQkqIHRlc3Qvc2NoZW1hcy9taXhlZCogcmVzdWx0L3NjaGVtYXMvbWl4ZWQqOiBhZGRlZCBoaXMgcmVncmVzc2lvbgotCSAgdGVzdHMgdG9vLgotCi1Nb24gTWFyICAxIDE1OjIyOjA2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdFNBWC5jOiBmaXggYSBjb21waWxhdGlvbiBwcm9ibGVtIGFib3V0IGEgbWlzc2luZyB0aW1iIGluY2x1ZGUKLQotU2F0IEZlYiAyOCAyMjozNTozMiBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdGVzdFNBWC5jOiBzbWFsbCBlbmhhbmNlbWVudCB0byBwcmV2ZW50IHRyeWluZyB0byBwcmludAotCSAgc3RyaW5ncyB3aXRoIG51bGwgcG9pbnRlcnMgKGNhdXNlZCAibWFrZSB0ZXN0cyIgZXJyb3JzIG9uCi0JICBIUC1VWCkKLQotVGh1IEZlYiAyNiAyMDoxOTo0MCBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MveG1sbGludC54bWwKLQkqIGRvYy94bWxsaW50LjEKLQkqIGRvYy94bWxsaW50Lmh0bWwKLQkqIGRvYy94bWxjYXRhbG9nX21hbi54bWwKLQkqIGRvYy94bWxjYXRhbG9nLjEKLQkqIGRvYy94bWxjYXRhbG9nX21hbi5odG1sCi0JYXBwbHlpbmcgcGF0Y2ggZnJvbSBNaWtlIEhvbW1leSB0byBjbGFyaWZ5IFhNTF9DQVRBTE9HX0ZJTEVTCi0JdXNlCi0KLVRodSBGZWIgMjYgMjM6NDc6NDMgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogcGF0Y2ggZm9yIGNyb3NzLWNvbXBpbGF0aW9uIHRvIFdpbmRvd3MgZnJvbQotCSAgQ2hyaXN0b3BoZSBkZSBWSUVOTkUuCi0KLVRodSBGZWIgMjYgMTg6NTI6MTEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRvYy8qLmh0bWwsIGRvYy9odG1sLyouaHRtbDogcmVnZW5lcmF0ZWQgZG9jcyB1c2luZyBvbGRlcgotCSAgdmVyc2lvbiBvZiB4c2x0cHJvYyBwZW5kaW5nIHJlc29sdXRpb24gb2YgQVZUIHByb2JsZW0KLQotVGh1IEZlYiAyNiAxMDo1NjoyOSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhcHBsaWVkIHBhdGNoIGZyb20gQ2hhcmxlcyBCb3plbWFuIHRvIG5vdCB1c2UKLQkgIHRoZSBzeXN0ZW0geG1sbGludC4KLQotV2VkIEZlYiAyNSAxODowNzowNSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3htbGV4cG9ydHMuaDogYXBwbGllZCBwYXRjaCBmcm9tIFJvbGFuZCBTY2h3aW5nZWwKLQkgIGZvciBNaW5nVwotCi1XZWQgRmViIDI1IDEzOjU3OjI1IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY2F0YWxvZy5jIGNvbmZpZ3VyZS5pbjogYXBwbGllZCBhIGNsZWFudXAgcGF0Y2gKLQkgIGZyb20gUGV0ZXIgQnJlaXRlbmxvaG5lcgotCSogdHJlZS5jOiByZW1vdmVkIGEgZG9jIGJ1aWxkIHdhcm5pbmcgYnkgZml4aW5nIGEgcGFyYW0gY29tbWVudAotCSogZG9jLyogOiByZWJ1aWx0IHRoZSBkb2NzCi0KLVdlZCBGZWIgMjUgMTM6MzM6MDcgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jIEhUTUxwYXJzZXIuYzogYXZvaWQgSUQgZXJyb3IgbWVzc2FnZSBpZiB1c2luZwotCSAgSFRNTF9QQVJTRV9OT0VSUk9SIHNob3VsZCBmaXggIzEzMDc2MgotCi1XZWQgRmViIDI1IDEyOjUwOjUzIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYyByZWxheG5nLmMgdmFsaWQuYyB4aW5jbHVkZS5jIHhtbGxpbnQuYyB4bWxyZWFkZXIuYzoKLQkgIGZpeGluZyBjb21waWxhdGlvbiBhbmQgbGluayBvcHRpb24gd2hlbiBjb25maWd1cmluZyB3aXRoCi0JICAtLXdpdGhvdXQtdmFsaWQgc2hvdWxkIGZpeCAjMTM1MzA5Ci0KLVdlZCBGZWIgMjUgMTE6MzY6MDYgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IGZpeGVkIHRoZSBtYWluIGlzc3VlcyByZXBvcnRlZCBieSBQZXRlciBCcmVpdGVubG9obmVyCi0JKiBwYXJzZXIuYzogY2xlYW51cAotCSogdmFsaWQuYzogc3BlZWR1cCBwYXRjaCBmcm9tIFBldHIgUGFqYXMKLQotV2VkIEZlYiAyNSAxNjowNzoxNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogZml4ZWQgYSBtZW1vcnkgbGVhayAoeG1sWFBhdGhMYW5nRnVuY3Rpb24pIHJlcG9ydGVkCi0JICBvbiB0aGUgbGlzdCBieSBNaWtlIEhvbW1leQotCi1Nb24gRmViIDIzIDE3OjI4OjM0IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jLyogTkVXUyBjb25maWd1cmUuaW46IHByZXBhcmluZyAyLjYuNyByZWxlYXNlLCB1cGRhdGVkIGFuZAotCSAgcmVidWlsdCB0aGUgZG9jdW1lbnRhdGlvbi4KLQotTW9uIEZlYiAyMyAxMTo1MjoxMiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi90ZXN0cy8qLnB5OiBhcHBsaWVkIHBhdGNoIGZyb20gTWFsY29sbSBUcmVkaW5uaWNrCi0JICB0byBhdm9pZCB0YWJzIGluIHB5dGhvbiBzb3VyY2VzLCBzaG91bGQgZml4ICMxMzUwOTUKLQotU3VuIEZlYiAyMiAyMzoxNjoyMyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3RTQVguYzogYWRkIC0tdGltaW5nIG9wdGlvbgotCSogcmVsYXhuZy5jOiB1c2UgdGhlIHBzdmkgZmllbGQgb2YgdGhlIG5vZGVzIGluc3RlYWQgb2YgX3ByaXZhdGUKLQkgIHdoaWNoIG1heSBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KLQotU2F0IEZlYiAyMSAxNjo1Nzo0OCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVuY29kaW5nLmM6IHNtYWxsIHBhdGNoIHRvIHRyeSB0byBmaXggYSB3YXJuaW5nIHdpdGggU3VuIE9uZSBjb21waWxlcgotCi1TYXQgRmViIDIxIDE2OjIyOjM1IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogc21hbGwgcGF0Y2ggcmVtb3ZpbmcgYSB3YXJuaW5nIHdpdGggTVMgY29tcGlsZXIuCi0KLVNhdCBGZWIgMjEgMTM6NTI6MzAgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCAicmVsYXhuZyIgb3B0aW9uIHRvIHRoZSBkZWJ1Z2dpbmcgc2hlbGwKLQkqIE1ha2VmaWxlLmFtIHRlc3QvZXJyb3JzLyogcmVzdWx0L2Vycm9ycy8qOiBzb21lIHJlZ3Jlc3Npb24gdGVzdHMKLQkgIGZvciBzb21lIGVycm9yIHRlc3RzIGNhc2VzLgotCi1GcmkgRmViIDIwIDA5OjU2OjQ3IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiB4bWxBdHRyU2VyaWFsaXplVHh0Q29udGVudCBkb24ndCBzZWdmYXVsdCBpZiBOVUxMCi0JICBpcyBwYXNzZWQuCi0JKiB0ZXN0L2F0dDcgcmVzdWx0Ly9hdHQ3KjogYWRkaW5nIGFuIG9sZCByZWdyZXNzaW9uIHRlc3QKLQkgIGxheWluZyBhcm91bmQgb24gbXkgbGFwdG9wCi0KLVRodSBGZWIgMTkgMTc6MzM6MzYgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogZml4ZWQgeG1sbGludCAtLW1lbW9yeSAtLXN0cmVhbSBtZW1vcnkgY29uc3VtcHRpb24KLQkgIG9uIGxhcmdlIGZpbGUgYnkgdXNpbmcgeG1sUGFyc2VySW5wdXRCdWZmZXJDcmVhdGVTdGF0aWMoKSB3aXRoCi0JICB0aGUgbW1hcCdlZCBmaWxlIAotCi1UaHUgRmViIDE5IDEzOjU2OjUzIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBzb21lIGNsYXJpZmljYXRpb24gaW4geG1sRG9jRHVtcE1lbW9yeSgpIGRvY3VtZW50YXRpb24KLQkqIHhtbGxpbnQuYzogZml4ZWQgeG1sbGludCAtLXN0cmVhbSAtLXRpbWluZyB0byBnZXQgdGltaW5ncyBiYWNrCi0KLVdlZCBGZWIgMTggMTU6MjA6NDIgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBwcm9ibGVtIGluIHB1c2ggbW9kZSB3aGVuIGF0dHJpYnV0ZSBjb250YWlucwotCSAgdW5lc2NhcGVkICc+JyBjaGFyYWN0ZXJzLCBmaXhlcyBidWcgIzEzNDU2NgotCSogdGVzdC9hdHQ2IHJlc3VsdC8vYXR0Nio6IGFkZGVkIHRoZSB0ZXN0IHRvIHRoZSByZWdyZXNzaW9uIHN1aXRlCi0KLVR1ZSBGZWIgMTcgMTc6MjY6MzEgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiByZW1vdmluZyBhIG5vbi1saW5lYXIgYmVoYXZpb3VyIGZyb20gSUQvSURSRUYgcmFpc2VkCi0JICBieSBQZXRyIFBhamFzLiBDYWxsIHhtbExpc3RBcHBlbmQgaW5zdGVhZCBvZiB4bWxMaXN0SW5zZXJ0IGluCi0JICB4bWxBZGRSZWYKLQotVHVlIEZlYiAxNyAxMzoyNzoyNyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi90ZXN0cy9pbmRleGVzLnB5IHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IGluZGljYXRlZAotCSAgZW5jb2Rpbmcgb2YgdGhlIHRlc3QgZmlsZSwgbmVlZGVkIGZvciBweXRob24gMi4zCi0KLVR1ZSBGZWIgMTcgMjE6MDg6MTEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIHByb2JsZW0gd2l0aCBudW1iZXJzIGhhdmluZyA+IDE5Ci0JICBmcmFjdGlvbmFsIHBsYWNlcyAoYnVnIDEzMzkyMSkKLQotVHVlIEZlYiAxNyAxMjo0NzoyMCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGFwcGxpZWQgb3B0aW1pemF0aW9uIHBhdGNoIGZyb20gUGV0ciBQYWphcwotCi1UdWUgRmViIDE3IDEyOjM5OjA4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sd3JpdGVyLmMgaW5jbHVkZS9saWJ4bWwveG1sd3JpdGVyLmg6IGFwcGxpZWQgdXBkYXRlCi0JICBmcm9tIEFsZnJlZCBNaWNrYXV0c2NoIGFuZCB0aGUgYWRkZWQgcGF0Y2ggZnJvbSBMdWNhcyBCcmFzaWxpbm8KLQotU3VuIEZlYiAxNSAxMjowMTozMCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGJlbmNobWFyay5wbmcgaW5kZXguaHRtbCB4bWwuaHRtbDogdXBkYXRpbmcgdGhlIGJlbmNobWFyawotCSAgZ3JhcGggYW5kIHVzaW5nIGEgUE5HIGluc3RlYWQgb2YgYSBHSUYKLQkqIHhtbHJlYWRlci5jOiB1cGRhdGVkIHRoZSBUT0RPCi0KLVNhdCBGZWIgMTQgMTg6NTU6NDAgTVNUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3R1dG9yaWFsL3htbHR1dG9yaWFsLnhtbAotCSogZG9jL3R1dG9yaWFsL3htbHR1dG9yaWFsLnBkZgotCSogZG9jL3R1dG9yaWFsLyouaHRtbAotCUZpeCBidWcgaW4gWFBhdGggZXhhbXBsZSBpbiB0aGUgdHV0b3JpYWwsIHRoYW5rcyB0byBDYXJsb3MsIHdob3NlCi0JbGFzdCBuYW1lIEkgZG9uJ3Qga25vdywgZm9yIHBvaW50aW5nIHRoaXMgb3V0Ci0KLVRodSBGZWIgMTIgMTY6Mjg6MTIgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBORVdTIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIHJlbGVhc2Ugb2YgMi42LjYKLQkqIGRvYy8qOiB1cGRhdGVkIHRoZSBkb2NzIGFuZCByZWJ1aWx0IHRoZW0KLQotVGh1IEZlYiAxMiAxMzo0MToxNiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBmaXhpbmcgYnVnICMxMzI5MzAgd2l0aCB0aGUgcHJvdmlkZWQgcGF0Y2gsIGEgYml0Ci0JICBzdXNwaWNpb3VzIGFib3V0IGl0IGJ1dCB0aGlzIGlzIGZhaXJseSBjb250YWluZWQgYW5kIHJlZ3Jlc3Npb24KLQkgIHRlc3RzIHN0aWxsIHBhc3Nlcy4KLQkqIHRlc3Qvc2NoZW1hcy9hbGwxKiByZXN1bHQvc2NoZW1hcy9hbGwxKjogYWRkZWQgdGhlIHRlc3QgdG8KLQkgIHRoZSByZWdyZXNzaW9uIHN1aXRlLgotCi1UaHUgRmViIDEyIDEyOjU0OjI2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1ZyAjMTMyNTc1IGFib3V0IGZpbmRpbmcgdGhlIGVuZCBvZiB0aGUKLQkgIGludGVybmFsIHN1YnNldCBpbiBwdXNoIG1vZGUuCi0JKiB0ZXN0L2ludHN1YnNldC54bWwgcmVzdWx0L2ludHN1YnNldC54bWwqIHJlc3VsdC9ub2VudC9pbnRzdWJzZXQueG1sOgotCSAgYWRkZWQgdGhlIHRlc3QgdG8gdGhlIHJlZ3Jlc3Npb24gc3VpdGUKLQotV2VkIEZlYiAxMSAxNDoxOTozMSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlckludGVybmFscy5jIHhtbElPLmMgZW5jb2RpbmcuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sSU8uaDogYWRkZWQgeG1sQnl0ZUNvbnN1bWVkKCkgaW50ZXJmYWNlCi0JKiBkb2MvKjogdXBkYXRlZCB0aGUgYmVuY2htYXJrIHJlYnVpbHQgdGhlIGRvY3MKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvaW5kZXhlcy5weTogYWRkZWQgYQotCSAgc3BlY2lmaWMgcmVncmVzc2lvbiB0ZXN0IGZvciB4bWxCeXRlQ29uc3VtZWQoKQotCSogaW5jbHVkZS9saWJ4bWwvZW5jb2RpbmcuaCBybmdwYXJzZXIuYyB0cmVlLmM6IHNtYWxsIGNsZWFudXBzCi0KLVdlZCBGZWIgMTEgMDg6MTM6NTggSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGsKLQotCSogdHJlZS5jOiBmaXhlZCBtaXNzaW5nIG91dHB1dCBvZiBpbnRlcm5hbCBEVEQgcGFyYW0gZW50aXRpZXMgd2hlbgotCSAgbm90aGluZyBlbHNlIHByZXNlbnQgaW4gRFREIChidWcgMTM0MDUyKQotCi1UdWUgRmViIDEwIDE5OjI0OjM4IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlbmNvZGluZy5jOiBhcHBsaWVkIHBhdGNoIHN1cHBsaWVkIGJ5IENocmlzdG9waGUgRHViYWNoCi0JICB0byBmaXggcHJvYmxlbSB3aXRoIC0td2l0aC1taW5pbXVtIGNvbmZpZ3VyYXRpb24KLQkgIChidWcgMTMzNzczKQotCSogbmFub2Z0cC5jOiBmaXhlZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHByb2JsZW0sCi0JICBzaW1pbGFyIHRvIGZpeCBqdXN0IGFwcGxpZWQgdG8gbmFub2h0dHAuYy4KLQotTW9uIEZlYiAgOSAxODo0MDoyMSBDRVQgMjAwNCBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBuYW5vaHR0cC5jOiBmaXhlZCB0aGUgZml4IGZvciB0aGUgYnVmZmVyIG92ZXJmbG93LCB0aGFueAotCSAgV2lsbGlhbSA6LSkKLQotTW9uIEZlYiAgOSAyMjozNzoxNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogYWNpbmNsdWRlLm00LCBjb25maWd1cmUuaW46IGZpeGVkIHByb2JsZW0gY29uY2VybmluZwotCSAgZGV0ZXJtaW5pbmcgU09DS0xFTl9UIGFzIHBvaW50ZWQgb3V0IGJ5IERhbmllbCBSaWNoYXJkIEcuCi0JICBvbiB0aGUgbWFpbGluZyBsaXN0Ci0KLU1vbiBGZWIgIDkgMTU6MzE6MjQgQ0VUIDIwMDQgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogbmFub2h0dHAuYzogZml4ZWQgYnVmZmVyIG92ZXJmbG93IHJlcG9ydGVkIGJ5IFl1dWljaGkgVGVyYW5pc2hpCi0KLU1vbiBGZWIgIDkgMTM6NDU6NTkgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBzbWFsbCBwYXRjaCBmcm9tIFBoaWxpcCBMdWRsYW0gdG8gYXZvaWQgd2FybmluZ3MuCi0KLU1vbiBGZWIgIDkgMTM6NDE6NDcgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBhcHBsaWVkIGEgc21hbGwgcGF0Y2ggZnJvbSBBbGZyZWQgTWlja2F1dHNjaAotCSAgdG8gYXZvaWQgYW4gb3V0IG9mIGJvdW5kIGVycm9yIGluIGlzb2xhdDFUb1VURjgoKQotCi1Nb24gRmViICA5IDEzOjM1OjUwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogcmVtb3ZlIHRoZSB3YXJuaW5nIG9uIHRoZSAyMDAxIG5hbWVzcGFjZQotCSogcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmMgeHBhdGguYzogcmVtb3ZlIHNvbWUgd2FybmluZ3MKLQkgIHdoZW4gY29tcGlsaW5nIHdpdGggTVNWQzYKLQkqIG5hbm9odHRwLmM6IGFwcGxpZWQgYSBwYXRjaCB3aGVuIHVzaW5nIF9XSU5TT0NLQVBJXwotCi1TdW4gRmViICA4IDEyOjA5OjU1IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4aW5jbHVkZS5jOiBhZGRlZCBhIHNtYWxsIGhhY2sgdG8gZml4IGludGVyZmVyZW5jZSBiZXR3ZWVuCi0JICBteSBmaXhlcyBmb3IgYnVncyAxMzI1ODUgYW5kIDEzMjU4OC4KLQkqIHB5dGhvbi9saWJ4bWwuYzogZml4ZWQgcHJvYmxlbSB3aXRoIHNlcmlhbGl6YXRpb24gb2YgbmFtZXNwYWNlCi0JICByZXBvcnRlZCBvbiB0aGUgbWFpbGluZyBsaXN0IGJ5IEFudGhvbnkgQ2FycmljbwotCi1TYXQgRmViICA3IDE2OjUzOjExIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4aW5jbHVkZS5jOiBmaXhlZCBwcm9ibGVtIHdpdGggZnVuY3Rpb24geG1sWEluY2x1ZGVDb3B5UmFuZ2UKLQkgIChidWcgMTMzNjg2KS4KLQotRnJpIEZlYiAgNiAyMTowMzo0MSBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sd3JpdGVyLmM6IGZpeGVkIHByb2JsZW0gd2l0aCByZXR1cm4gdmFsdWUgb2YKLQkgIHhtbFRleHRXcml0ZXJXcml0ZUluZGVudCgpIChidWcgMTMzMjk3KQotCi1GcmkgRmViICA2IDE5OjA3OjA0IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4aW5jbHVkZS5jOiBjaGFuZ2VkIGNvZGluZyB0byBvdXRwdXQgZ29vZCBYSW5jbHVkZXMgd2hlbgotCSAgb25lIG9yIG1vcmUgYmFkIG9uZXMgYXJlIHByZXNlbnQgKGJ1ZyAxMzI1ODgpCi0KLUZyaSBGZWIgIDYgMTc6MzQ6MjEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhpbmNsdWRlLmM6IGNvcnJlY3RlZCBoYW5kbGluZyBvZiBlbXB0eSBmYWxsYmFjayBjb25kaXRpb24KLQkgIChidWcgMTMyNTg1KQotCi1GcmkgRmViICA2IDE1OjI4OjM2IEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBIVE1McGFyc2VyLmM6IGFkZGVkIGluaXRpYWxpc2F0aW9uIGZvciBjdHh0LT52Y3R4dAotCSAgaW4gSFRNTEluaXRQYXJzZXIgKGJ1ZyAxMzMxMjcpCi0JKiB2YWxpZC5jOiBtaW5vciBjb3NtZXRpYyBjaGFuZ2UgKHJlbW92ZWQgQVRUUklCVVRFX1VOVVNFRAotCSAgZnJvbSBzZXZlcmFsIGZ1bmN0aW9uIHBhcmFtcykKLQotVHVlIEZlYiAgMyAxNjo0ODo1NyBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgcHJvYmxlbSByZWdhcmRpbmcgZnJlZWluZyBvZiBkaWN0aW9uYXJ5Ci0JICB3aGVuIHRoZXJlIGFyZSBlcnJvcnMgd2l0aGluIGFuIFhJbmNsdWRlIGZpbGUgKGJ1ZyAxMzMxMDYpLgotCSAgVGhhbmtzIHRvIE9sZWcgUGFyYXNjaGVua28gZm9yIHRoZSBhc3Npc3RhbmNlLgotCi1UdWUgRmViICAzIDA5OjUzOjE4IFBTVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogZml4ZWQgdmFsaWRhdGlvbiBvZiBtYXhMZW5ndGggd2l0aCBubwotCSAgY29udGVudCB1c2luZyBwYXRjaCBzdWJtaXR0ZWQgYnkgRXJpYyBIYXN6bGFraWV3aWN6Ci0JICAoYnVnIDEzMzI1OSkKLQotVHVlIEZlYiAgMyAwOToyMTowOSBDRVQgMjAwNCBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaCBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogYWRkZWQKLQkgIGNhbGxpbmcgY29udmVudGlvbiB0byB0aGUgcHVibGljIGZ1bmN0aW9uIHByb3RvdHlwZXMgKHJlcCBieQotCSAgQ2FtZXJvbiBKb2huc29uKQotCSogaW5jbHVkZS9saWJ4bWwveG1sZXhwb3J0cy5oOiBmaXhlZCBtaW5ndyttc3lzIGNvbXBpbGF0aW9uCi0JICAocmVwIGJ5IE1pa2hhaWwgR3J1c2hpbnNraXkpCi0KLU1vbiBGZWIgIDIgMjA6MjI6MTggUFNUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbHdyaXRlci5jOiBlbmhhbmNlZCBvdXRwdXQgaW5kZW50aW5nIChidWcgMTMzMjY0KQotCi1Nb24gRmViICAyIDE2OjEzOjMzIFBTVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxyZWFkZXIuYywgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbQotCSAgU3RldmUgQmFsbCB0byBwcm92aWRlIHN0cnVjdHVyZWQgZXJyb3IgcmVwb3J0cy4KLQotU3VuIEZlYiAgMSAwMTo0ODoxNCBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdHJlZS5jLCBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IG1vdmVkIHNlcmlhbGl6YXRpb24gb2YKLQkgIGF0dHJpYnV0ZSB0ZXh0IGRhdGEgKHhtbFNlcmlhbGl6ZUNvbnRlbnQpIGludG8gYSBzZXBhcmF0ZQotCSAgcm91dGluZSAoeG1sU2VyaWFsaXplVHh0Q29udGVudCkgc28gaXQgY2FuIGJlIHVzZWQgYnkgeG1sd3JpdGVyLmMKLQkqIHhtbHdyaXRlci5jOiBjaGFuZ2VkIGhhbmRsaW5nIG9mIGF0dHJpYnV0ZSBzdHJpbmcgdG8gdXNlIHRoZQotCSAgcm91dGluZSBhYm92ZSAoZml4ZWQgYnVnIDEzMTU0OCkKLQotU2F0IEphbiAzMSAwODoyMjowMiBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0Ci0KLQkqIGRvYy9leGFtcGxlcy9yZWFkZXIxLmMsIHJlYWRlcjIuYywgcmVhZGVyMy5jCi0JKiBkb2MvZXhhbXBsZXMvZXhhbXBsZXMueG1sCi0JKiBkb2MvZXhhbXBsZXMvKi5odG1sCi0JYWRkIG5vdGUgdGhhdCByZWFkZXIgZXhhbXBsZXMgbmVlZCBsaWJteGwyID4gMi42LCByZWJ1aWxkCi0JaHRtbCAtIHRoaXMgdGltZSBkb2luZyBpdCBjb3JyZWN0bHkgOi0pCi0KLUZyaSBKYW4gMzAgMjA6NDU6MzYgTVNUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL2V4YW1wbGVzL2V4YW1wbGVzLnhtbAotCSogZG9jL2V4YW1wbGVzLyouaHRtbAotCWFkZCBub3RlIHRoYXQgcmVhZGVyIGV4YW1wbGVzIG5lZWQgbGlibXhsMiA+IDIuNiwgcmVidWlsZAotCWh0bWwKLQotVGh1IEphbiAyOSAyMzo1MTo0OCBQU1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogYWRkZWQgKHZvaWQgKikgdHlwZSBvdmVycmlkZSB0byBwcmV2ZW50Ci0JICB3YXJuaW5nIG9uIFNvbGFyaXMgKEJ1ZyAxMzI2NzEpCi0KLVdlZCBKYW4gMjggMDc6MjA6MzcgTVNUIDIwMDQgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL2V4YW1wbGVzL01ha2VmaWxlLmFtCi0JcGVyIEphbi4gMTUgZW1haWwgdG8gdGhlIGxpc3QgZnJvbSBvbGl2ZXJzdCwgdGhlIGluZGV4Lmh0bWwKLQlmaWxlIGZyb20gdGhpcyBkaXJlY3Rvcnkgd2Fzbid0IG1ha2luZyBpdCBpbnRvIHRoZSB0YXJiYWxsCi0KLU1vbiBKYW4gMjYgMTg6MDE6MDAgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBhY2luY2x1ZGUubTQ6IGFwcGxpZWQgZml4IGZyb20gQWxleGFuZGVyIFdpbnN0b24gZm9yIGEgcHJvYmxlbQotCSAgcmVsYXRlZCB0byBhdXRvbWFrZS0xLjggLCBjLmYuICMxMzI1MTMgYW5kICMxMjk4NjEKLQotTW9uIEphbiAyNiAxMjo1MzoxMSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy9pbmRleC5weTogZG9uJ3QgcmVseSBvbiAuIGJlaW5nIG9uIHRoZSBwYXRoIGZvcgotCSAgbWFrZSB0ZXN0cywgc2hvdWxkIGtlZXAgTXIuIENyb3phdCBxdWlldCB1bnRpbCBuZXh0IHRpbWUuLi4KLQotU3VuIEphbiAyNSAyMTo0NTowMyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBORVdTIGRvYy8qOiBwcmVwYXJpbmcgcmVsZWFzZSAyLjYuNSwgcmVidWlsdCB0aGUKLQkgIGRvY3MsIGNoZWNrZWQgcm5ncGFyc2VyIHN0dWZmIGRvZXMgbm90IGVuZCB1cCBpbiB0aGUgdGFyYmFsbAotCi1TdW4gSmFuIDI1IDIwOjU5OjIwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gRnJlZGVyaWMgUGV0ZXJzCi0JICBmaXhpbmcgdGhlIHdyb25nIGFyZyBvcmRlciBpbiB4cGF0aCBjYWxsYmFjayBpbiBidWcgIzEzMDk4MAotCi1TdW4gSmFuIDI1IDIwOjUyOjA5IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogZml4aW5nICMxMzA0NTMgWEluY2x1ZGUgZWxlbWVudCB3aXRoIG5vIGhyZWYgYXR0cmlidXRlCi0JKiByZWxheG5nLmMgcm5ncGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwyL3JlbGF4bmcuaDogZnVsbHkgaW50ZWdyYXRpbmcgCi0JICB0aGUgY29tcGFjdCBzeW50YXggd2lsbCByZXF1aXJlIG1vcmUgd29yaywgcG9zdHBvbmVkIGZvciB0aGUKLQkgIDIuNi41IHJlbGVhc2UuCi0KLVNhdCBKYW4gMjQgMDk6MzA6MjIgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmggeG1sc2NoZW1hcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20KLQkgIFN0ZXZlIEJhbGwgdG8gYXZvaWQgYSBkb3VibGUtZnJlZS4KLQotRnJpIEphbiAyMyAxNDowMzoyMSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy8qOiBhZGRlZCBpbzEuYyBhbiBleGFtcGxlIG94IHhtbElPIHVzYWdlIGFuZCBpbzEucmVzCi0JICB0ZXN0IHJlc3VsdCwgZml4ZWQgYSBhd2Z1bCBsb3Qgb2YgbWVtb3J5IGxlYWtzIHNob3dpbmcgdXAgaW4KLQkgIHRlc3RXcml0ZXIuYywgY2hhbmdlZCB0aGUgZXhhbXBsZXMgYW5kIHRoZSBNYWtlZmlsZXMgdG8gdGVzdAotCSAgbWVtb3J5IGxlYWtzLgotCSogeG1sd3JpdGVyLmM6IGZpeGVkIGEgbWVtb3J5IGxlYWsKLQkqIE1ha2VmaWxlLmFtOiBydW4gdGhlIGRvYy9leGFtcGxlcyByZWdyZXNzaW9uIHRlc3RzIGFzIHBhcnQgb2YKLQkgIG1ha2UgdGVzdHMKLQkqIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwveHBhdGguaDogYWRkZWQgeG1sWFBhdGhDdHh0Q29tcGlsZSgpIHRvCi0JICBjb21waWxlIGFuIFhQYXRoIGV4cHJlc3Npb24gd2l0aGluIGEgY29udGV4dCwgY3VycmVudGx5IHRoZSBnb2FsCi0JICBpcyB0byBiZSBhYmxlIHRvIHJldXNlIHRoZSBYU0xUIHN0eWxlc2hlZXQgZGljdGlvbm5hcnksIGJ1dCB0aGlzCi0JICBvcGVucyB0aGUgZG9vciB0byBvdGhlcnMgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KLQkqIGRpY3QuYyBpbmNsdWRlL2xpYnhtbC9kaWN0Lmg6IGFkZGVkIHhtbERpY3RDcmVhdGVTdWIoKSB3aGljaCBhbGxvd3MKLQkgIHRvIGJ1aWxkIGEgbmV3IGRpY3Rpb25uYXJ5IGJhc2VkIG9uIGFub3RoZXIgcmVhZC1vbmx5IGRpY3Rpb25uYXJ5LgotCSAgVGhpcyBpcyBuZWVkZWQgZm9yIFhTTFQgdG8ga2VlcCB0aGUgc3R5bGVzaGVldCBkaWN0aW9ubmFyeSByZWFkLW9ubHkKLQkgIHdoaWxlIGJlaW5nIGFibGUgdG8gcmV1c2UgdGhlIHN0cmluZ3MgZm9yIHRoZSB0cmFuc2Zvcm1hdGlvbgotCSAgZGljdGlvbm5hcnkuCi0JKiB4aW5jbHVkZS5jOiBmaXhlZCBhIGRpY3Rpb25uYXIgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW0gb2NjdXJpbmcKLQkgIHdoZW4gZG9jdW1lbnQgcGFyc2luZyBmYWlsZWQuCi0JKiB0ZXN0U0FYLmM6IGFkZGluZyBvcHRpb24gLS1yZXBlYXQgZm9yIHRpbWluZyAxMDB0aW1lcyB0aGUgcGFyc2luZwotCSogZG9jLyogOiByZWJ1aWx0IGFsbCB0aGUgZG9jcwotCi1UaHUgSmFuIDIyIDE0OjE3OjA1IDIwMDQgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiB4bWxtZW1vcnkuYzogbWFrZSB4bWxSZWFsbG9jTG9jKCkgYWNjZXB0IE5VTEwgcG9pbnRlcgotCi1UaHUgSmFuIDIyIDA4OjI2OjIwIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBKb2huIEJlbG1vbnRlIGZvcgotCSAgbm9ybWFsaXplZFN0cmluZyBkYXRhdHlwZSBzdXBwb3J0LgotCi1UaHUgSmFuIDIyIDEwOjQzOjIyIEhLVCAyMDA0IFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBwcm9ibGVtIHdpdGggdW5pb24gd2hlbiBsYXN0KCkgaXMgdXNlZAotCSAgaW4gcHJlZGljYXRlIChidWcgIzEzMTk3MSkKLQkqIHhwb2ludGVyLmM6IG1pbm9yIGNoYW5nZSB0byBjb21tZW50IGZvciBkb2MgZ2VuZXJhdGlvbgotCi1XZWQgSmFuIDIxIDE3OjAzOjE3IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1ZyAjMTMxNzQ1IHJhaXNlZCBieSBTaGF1biBNY0NhbmNlIHdpdGggdGhlCi0JICBzdWdnZXN0ZWQgcGF0Y2gKLQotV2VkIEphbiAyMSAxMDo1OTo1NSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHdyaXRlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQWxmcmVkIE1pY2thdXRzY2ggZml4aW5nIGEgbWVtb3J5Ci0JICBsZWFrIHJlcG9ydGVkIG9uIHRoZSBsaXN0LgotCi1UaHUgSmFuIDE1IDAwOjQ4OjQ2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5OiBhcHBsaWVkCi0JICBwYXRjaCBmcm9tIFN0ZXBoYW5lIEJpZG91bCB0byBhZGQgZW51bXMgdG8gdGhlIFB5dGhvbiBiaW5kaW5ncy4KLQotVHVlIEphbiAxMyAyMTo1MDowNSBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3RIVE1MLmM6IGFub3RoZXIgc21hbGwgcGF0Y2ggZnJvbSBNYXJrIFZha29jCi0KLVR1ZSBKYW4gMTMgMjE6Mzk6NTggQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgcmVsYXhuZy5jIHRlc3RSZWxheC5jIHRlc3RTY2hlbWFzLmM6IGFwcGxpZWQKLQkgIHBhdGNoIGZyb20gTWFyayBWYWtvYyB0byBub3QgdXNlIFNBWDEgdW5sZXNzIG5lY2Vzc2FyeS4KLQotTW9uIEphbiAxMiAxNzoyMjo1NyBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRpY3QuYyBwYXJzZXIuYyB4bWxzdHJpbmcuYzogc29tZSBwYXJzZXIgb3B0aW1pemF0aW9ucywKLQkgIHhtbGxpbnQgLS1tZW1vcnkgLS10aW1pbmcgLS1yZXBlYXQgLS1zdHJlYW0gLi9kYjEwMDAwLnhtbAotCSAgd2VudCBkb3duIGZyb20gMTYuNSBzZWNzIHRvIDE1LjUgc2Vjcy4KLQotVGh1IEphbiAgOCAxNzo1Nzo1MCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogcmVtb3ZlZCBhIG1lbW9yeSBsZWFrIHJlbWFpbmluZyBmcm9tIHRoZSBzd2l0Y2gKLQkgIHRvIGEgZGljdGlvbm5hcnkgZm9yIHN0cmluZyBhbGxvY2F0aW9ucyBjLmYuICMxMzA4OTEKLQotVGh1IEphbiAgOCAxNzo0ODo0NiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBmaXhpbmcgc29tZSBwcm9ibGVtIGlmIGNvbmZpZ3VyZWQgLS13aXRob3V0LXhpbmNsdWRlCi0JICBjLmYuICMxMzA5MDIKLQotVGh1IEphbiAgOCAxNzo0Mjo0OCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogY2hhbmdlZCBBQ19PVVRQVVQoKSBtYWNybyB0byBhdm9pZCBhIGN5Z3dpbiBwcm9ibGVtCi0JICBjLmYuICMxMzA4OTYKLQotVGh1IEphbiAgOCAwMDozNjowMCBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYiB3aW4zMi9NYWtlZmlsZS5taW5ndyB3aW4zMi9NYWtlZmlsZS5tc3ZjOgotCSAgYXBwbHlpbmcgcGF0Y2ggZnJvbSBNYXJrIFZha29jIGZvciBXaW5kb3dzCi0JKiBkb2MvY2F0YWxvZy5odG1sIGRvYy9lbmNvZGluZy5odG1sIGRvYy94bWwuaHRtbDogYXBwbGllZCBkb2MKLQkgIGZpeGVzIGZyb20gU3ZlbiBaaW1tZXJtYW4KLQotVHVlIEphbiAgNiAyMzo1MTo0NiBDRVQgMjAwNCBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sIHB5dGhvbi9saWJ4bWxfd3JhcC5oIHB5dGhvbi90eXBlcy5jCi0JICBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weTogYXBwbGllZCAKLQkgIHBhdGNoIGZyb20gU3RlcGhhbmUgQmlkb3VsIGZvciBzdHJ1Y3R1cmVkIGVycm9yIGhhbmRsaW5nIGZyb20KLQkgIHB5dGhvbiwgYW5kIHRoZSBhc3NvY2lhdGVkIHRlc3QKLQotVHVlIEphbiAgNiAyMzoxODoxMSBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogY29uZmlndXJlLmluOiBmaXhlZCBCdWcxMzA1OTMKLQkqIHhtbHdyaXRlci5jOiBmaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nCi0KLVR1ZSBKYW4gIDYgMTU6MTU6MjMgQ0VUIDIwMDQgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxzdHJpbmcuaDogZml4ZWQgdGhlIGNvbW1lbnQgaW4gdGhlIGhlYWRlcgotCSogZG9jLyo6IHJlYnVpbHQgdGhlIGRvY3MKLQotVHVlIEphbiAgNiAxOTo0MDowNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZW5jb2RpbmcuYywgcGFyc2VyLmMsIHhtbHN0cmluZy5jLCBNYWtlZmlsZS5hbSwKLQkgIGluY2x1ZGUvbGlieG1sL01ha2VmaWxlLmFtLCBpbmNsdWRlL2xpYnhtbC9jYXRhbG9nLmMsCi0JICBpbmNsdWRlL2xpYnhtbC9jaHZhbGlkLmgsIGluY2x1ZGUvbGlieG1sL2VuY29kaW5nLmgsCi0JICBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCwgaW5jbHVkZS9saWJ4bWwvcmVsYXhuZy5oLAotCSAgaW5jbHVkZS9saWJ4bWwvdHJlZS5oLCBpbmNsdWRlL2xpYnhtbC94bWx3cml0ZXIuaCwKLQkgIGluY2x1ZGUvbGlieG1sL3htbHN0cmluZy5oOgotCSAgbW92ZWQgc3RyaW5nIGFuZCBVVEY4IHJvdXRpbmVzIG91dCBvZiBwYXJzZXIuYyBhbmQgZW5jb2RpbmcuYwotCSAgaW50byBhIG5ldyBtb2R1bGUgeG1sc3RyaW5nLmMgd2l0aCBpbmNsdWRlIGZpbGUKLQkgIGluY2x1ZGUvbGlieG1sL3htbHN0cmluZy5oIG1vc3RseSB1c2luZyBwYXRjaGVzIGZyb20gUmVpZAotCSAgU3BlbmNlci4gIFNpbmNlIHhtbENoYXIgbm93IGRlZmluZWQgaW4geG1sc3RyaW5nLmgsIHNldmVyYWwKLQkgIGluY2x1ZGUgZmlsZXMgbmVlZGVkIHRvIGhhdmUgYSAjaW5jbHVkZSBhZGRlZCBmb3Igc2FmZXR5LgotCSogZG9jL2FwaWJ1aWxkLnB5OiBhZGRlZCBzb21lIGFkZGl0aW9uYWwgc29ydGluZyBmb3IgdmFyaW91cwotCSAgcmVmZXJlbmNlcyBkaXNwbGF5ZWQgaW4gdGhlIEFQSXh4eC5odG1sIGZpbGVzLiAgUmVidWlsdCB0aGUKLQkgIGRvY3MsIGFuZCBhbHNvIGFkZGVkIG5ldyBmaWxlIGZvciB4bWxzdHJpbmcgbW9kdWxlLgotCSogY29uZmlndXJlLmluOiBzbWFsbCBhZGRpdGlvbiB0byBoZWxwIG15IHRlc3Rpbmc7IG5vIGVmZmVjdCBvbgotCSAgbm9ybWFsIHVzYWdlLgotCSogZG9jL3NlYXJjaC5waHA6IGFkZGVkICRfR0VUW3F1ZXJ5XSBzbyB0aGF0IHBlcnNpc3RlbnQgZ2xvYmFscwotCSAgY2FuIGJlIGRpc2FibGVkIChmb3IgcmVjZW50IHZlcnNpb25zIG9mIFBIUCkKLQotTW9uIEphbiAgNSAyMDo0NzowNyBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvdHV0b3JpYWwvY3VzdG9tZm8ueHNsCi0JKiBkb2MvdHV0b3JpYWwvY3VzdG9taHRtbC54c2wKLQl1cGRhdGUgY3VzdG9tIHR1dG9yaWFsLWJ1aWxkaW5nIHN0eWxlc2hlZXRzIGluIHByZXBhcmF0aW9uCi0JZm9yIHR1dG9yaWFsIHVwZGF0ZQotCi1UdWUgSmFuICA2IDAwOjEwOjMzIENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcm5ncGFyc2VyLmM6IGNvbW1pdGluZyB0aGUgY29tcGFjdCByZWxheCBuZyBwYXJzZXIuIEl0J3Mgbm90Ci0JICBjb21wbGV0ZWx5IGZpbmlzaGVkLCBpdCdzIG5vdCBpbnRlZ3JhdGVkIGJ1dCBJIHdhbnQgdG8gc2F2ZSB0aGUKLQkgIGN1cnJlbnQgc3RhdGUKLQotTW9uIEphbiAgNSAyMjoyMjo0OCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL2FwaWJ1aWxkLnB5LCBkb2MvQVBJY29uc3RydWN0b3JzLmh0bWwsIGRvYy9saWJ4bWwyLXJlZnMueG1sLAotCSAgd2luMzIvbGlieG1sMi5kZWYuc3JjOiBmaXhlZCBhcGlidWlsZC5weSdzIGdlbmVyYXRpb24gb2YKLQkgICJjb25zdHJ1Y3RvcnMiIHRvIGJlIGluIGFscGhhYmV0aWNhbCBvcmRlciAoaW5zdGVhZCBvZiBwcmV2aW91cwotCSAgcmFuZG9tIHNlcXVlbmNlKTsgcmVnZW5lcmF0ZWQgcmVzdWx0aW5nIGZpbGVzLgotCi1Nb24gSmFuICA1IDE0OjAzOjU5IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sd3JpdGVyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBMdWNhcyBCcmFzaWxpbm8gZml4aW5nIGFuIGluZGVudAotCSAgcHJvYmxlbS4KLQotU3VuIEphbiAgNCAxODo1NDoyOSBNU1QgMjAwNCBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvbmV3YXBpLnhzbDogY2hhbmdlIGJhY2tncm91bmQgY29sb3Igb2YgZnVuY3Rpb24KLQlkZWNsYXJhdGlvbiB0byBpbXByb3ZlIHJlYWRhYmlsaXR5Ci0JKiBkb2MvKjogcmVidWlsZCBkb2NzIHdpdGggbmV3IHN0eWxlc2hlZXQKLQotU3VuIEphbiAgNCAyMjo0NToxNCBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YmFyY2tAbW1tLmNvbS5oaz4KLQotCSogcGFyc2VyLmMsIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBhZGRlZCBhIHJvdXRpbmUKLQkgIHhtbFN0cm5jYXROZXcgdG8gY3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIDIgZnJhZ3MuCi0JKiB0cmVlLmM6IGFkZGVkIGNvZGUgdG8gY2hlY2sgaWYgbm9kZSBjb250ZW50IGlzIGZyb20KLQkgIGRpY3Rpb25hcnkgYmVmb3JlIHRyeWluZyB0byBjaGFuZ2Ugb3IgY29uY2F0ZW5hdGUuCi0KLVN1biBKYW4gIDQgMDg6NTc6NTEgSEtUIDIwMDQgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbG1lbW9yeS5jOiBhcHBsaWVkIHN1Z2dlc3Rpb24gZnJvbSBNaWxvc2xhdiBUcm1hYyAoc2VlCi0JICBCdWcgMTMwNDE5KSBhbmQgZWxpbWluYXRlZCB4bWxJbml0TWVtb3J5RG9uZS4gIE1vcmUKLQkgIGltcHJvdmVtZW50IG5lZWRlZC4KLQkqIHhtbDItY29uZmlnLmluOiBhZGRlZCBhbiBhZGRpdGlvbmFsIGZsYWcgKC0tZXhlYy1wcmVmaXgpIHRvCi0JICBhbGxvdyBsaWJyYXJ5IGRpcmVjdG9yeSB0byBiZSBkaWZmZXJlbnQgZnJvbSBpbmNsdWRlIGRpcmVjdG9yeQotCSAgKEJ1ZyAxMjk1NTgpLgotCi1GcmkgSmFuICAyIDIxOjIyOjE4IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYzogYXBwbGllZCBwYXRjaCBmcm9tIFN06XBoYW5lIEJpZG91bCBmb3Igc3RydWN0dXJlZCBlcnJvcgotCSAgcmVwb3J0aW5nLgotCi1GcmkgSmFuICAyIDIxOjAzOjE3IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sd3JpdGVyLmggeG1sd3JpdGVyLmM6IGFwcGxpZWQgdGhlIHBhdGNoIGZyb20KLQkgIEx1Y2FzIEJyYXNpbGlubyB0byBhZGQgaW5kZW50YXRpb24gc3VwcG9ydCB0byB4bWxXcml0ZXIKLQotRnJpIEphbiAgMiAyMjo1ODoyOSBIS1QgMjAwNCBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgcHJvYmxlbSB3aXRoICJyZWN1cnNpdmUiIGluY2x1ZGUgKGZhbGxiYWNrCi0JICBjb250YWlucyBhbm90aGVyIGluY2x1ZGUgLSBCdWcgMTI5OTY5KQotCi1GcmkgSmFuICAyIDExOjQwOjA2IENFVCAyMDA0IERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jOiBmb3VuZCBhbmQgZml4ZWQgYSBidWcgbWlzYWxsb2NhdGluZyBzb21lIG5vbgotCSAgYmxhbmsgdGV4dCBub2RlIHN0cmluZ3MgZnJvbSB0aGUgZGljdGlvbm5hcnkuCi0JKiB4bWxtZW1vcnkuYzogZml4ZWQgYSBwcm9ibGVtIHdpdGggdGhlIG1lbW9yeSBkZWJ1ZyBtdXRleAotCSAgcmVsZWFzZS4KLQotV2VkIERlYyAzMSAyMjowMjozNyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgcHJvYmxlbSBjYXVzZWQgYnkgd3JvbmcgZGljdGlvbmFyeQotCSAgcmVmZXJlbmNlIGNvdW50LCByZXBvcnRlZCBvbiB0aGUgbGlzdCBieSBDaHJpc3RvcGhlcgotCSAgR3JheWNlLgotCi1XZWQgRGVjIDMxIDE1OjU1OjU1IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5LCBweXRob24vbGlieG1sMmNsYXNzLnR4dDogZml4ZWQgcHJvYmxlbQotCSAgcG9pbnRlZCBvdXQgYnkgU3TpcGhhbmUgQmlkb3VsIG9uIHRoZSBsaXN0LgotCSogeGluY2x1ZGUuYywgeHBvaW50ZXIuYywgeHBhdGguYywgaW5jbHVkZS9saWJ4bWwveHBvaW50ZXIuaDoKLQkgIGNvbXBsZXRlZCBtb2RpZmljYXRpb25zIHJlcXVpcmVkIHRvIGZpeCBCdWcgMTI5OTY3IChhdCBsYXN0ISkuCi0JICBOb3cgd2FpdCB0byBzZWUgaG93IGxvbmcgYmVmb3JlIGZ1cnRoZXIgdHJvdWJsZS4uLgotCi1UdWUgRGVjIDMwIDE2OjI2OjEzIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBwYXJzZXIuYywgeG1sbWVtb3J5LmMsIGluY2x1ZGUvbGlieG1sL3htbG1lbW9yeS5oOiBGaXhlZAotCSAgbWVtb3J5IGxlYWsgcmVwb3J0ZWQgYnkgRGF2ZSBCZWNrZXR0Ci0JKiB4bWxzY2hlbWFzLmM6IFJlbW92ZWQgc3B1cmlvdXMgY29tbWVudCByZXBvcnRlZCBvbiB0aGUgbWFpbGluZwotCSAgbGlzdAotCSogeGluY2x1ZGUuYywgeHBhdGguYywgeHBvaW50ZXIuYywgbGlieG1sL2luY2x1ZGUveHBvaW50ZXIuaDoKLQkgIEZ1cnRoZXIgd29yayBvbiBCdWcgMTI5OTY3IGNvbmNlcm5pbmcgeHBvaW50ZXIgcmFuZ2UgaGFuZGxpbmcKLQkgIGFuZCByYW5nZS10byBmdW5jdGlvbjsgbXVjaCBiZXR0ZXIsIGJ1dCBzdGlsbCBub3QgY29tcGxldGUKLQotTW9uIERlYyAyOSAxODowODowNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IHhtbFZhbGlkYXRlRWxlbWVudCBjb3VsZCBjcmFzaCBmb3IgZWxlbWVudCBob2xkaW5nIGEgCi0JICBuYW1lc3BhY2UgZGVjbGFyYXRpb24gYnV0IG5vdCBpbiBhIG5hbWVzcGFjZS4gT2xpdmVyIEZpc2NoZXIgCi0JICBwcm92aWRlZCB0aGUgZXhhbXBsZS4KLQotTW9uIERlYyAyOSAxMToyOTozMSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogaXNzdWUgdmFsaWRhdGlvbiBzdGF0dXMgb24gc3RkZXJyLCBub3Qgc3Rkb3V0IGFzIHN1Z2dlc3RlZAotCSAgYnkgUGF3ZWwgUGFsdWNoYQotCSogcmVzdWx0L3JlbGF4bmcvKjogdGhpcyBjaGFuZ2Ugc2xpZ2h0bHkgYWxsIHRoZSBvdXRwdXQgZnJvbSBSTkcgCi0JICByZWdyZXNzaW9ucy4KLQotTW9uIERlYyAyOCAxMDo0NzozMiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hcy5jOiBlZGl0ZWQgYSBjb3VwbGUgb2YgY29tbWVudHMgaW4gYWNjb3JkYW5jZSB3aXRoCi0JICBwb3N0aW5nIG9uIHRoZSBtYWlsaW5nIGxpc3QgKG5vIGxvZ2ljIGNoYW5nZSkKLQkqIHhwb2ludGVyLmM6IHdvcmtpbmcgb24gQnVnIDEyOTk2NywgYWRkZWQgY2hlY2sgZm9yIE5VTEwKLQkgIG5vZGVzZXQgdG8gcHJldmVudCBjcmFzaC4gIEZ1cnRoZXIgd29yayByZXF1aXJlZC4KLQkqIHhwYXRoLmM6IHdvcmtpbmcgb24gQnVnIDEyOTk2NywgYWRkZWQgY29kZSB0byBoYW5kbGUKLQkgIFhQQVRIX0xPQ0FUSU9OU0VUIGluIFJBTkdFVE8gY29kZSwgYWxzbyBhZGRlZCBjb2RlIHRvCi0JICBoYW5kbGUgaXQgaW4geG1sWFBhdGhFdmFsdWF0ZVByZWRpY2F0ZVJlc3VsdC4gIEZ1cnRoZXIKLQkgIHdvcmsgcmVxdWlyZWQuCi0KLVNhdCBEZWMgMjcgMTI6MzI6NTggSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbHNjaGVtYXMuYzogYWRkZWQgdGVzdHMgZm9yIHhzOmFsbCB0byBhc3N1cmUgbWluT2NjdXJzCi0JICBhbmQgbWF4T2NjdXJzIDw9IDEgKEJ1ZyAxMzAwMjApCi0KLVNhdCBEZWMgMjcgMDk6NTM6MDYgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbHJlZ2V4cC5jOiBmaXhlZCB4bWxGQVBhcnNlQ2hhclJhbmdlIGZvciBVbmljb2RlIHJhbmdlcwotCSAgd2l0aCBwYXRjaCBmcm9tIENoYXJsZXMgQm96ZW1hbi4KLQotRnJpIERlYyAyNiAxNDowMzo0MSBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1scmVnZXhwLmM6IGZpeGVkIHByb2JsZW0gY2F1c2luZyBzZWdmYXVsdCBvbiB2YWxpZGF0aW9uIGVycm9yCi0JICBjb25kaXRpb24gKHJlcG9ydGVkIG9uIG1haWxpbmcgbGlzdCkKLQotVGh1IERlYyAyNSAyMToxNjoyMiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sc2NoZW1hcy5jOiBmaXhlZCBtaXNzaW5nIGRpY3Rpb25hcmllcyBmb3IgTWVtb3J5IGFuZCBEb2MKLQkgIHBhcnNlciBjb250ZXh0cyAocHJvYmxlbSByZXBvcnRlZCBvbiBtYWlsaW5nIGxpc3QpCi0JKiBkb2MvYXBpYnVpbGQucHk6IHNtYWxsIGNoYW5nZSB0byBwcmV2ZW50IGR1cGxpY2F0ZSBsaW5lcwotCSAgb24gQVBJIGZ1bmN0aW9ucyBsaXN0LiAgSXQgd2lsbCB0YWtlIGVmZmVjdCB0aGUgbmV4dCB0aW1lCi0JICB0aGUgZG9jcyBhcmUgcmVidWlsdC4KLQotV2VkIERlYyAyNCAxMjo1NDoyNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBORVdTIGRvYy8qOiB1cGRhdGVkIHRoZSBkb2NzIGFuZCBwcmVwYXJlZCBhIG5ldwotCSAgcmVsZWFzZSAyLjYuNAotCi1XZWQgRGVjIDI0IDEyOjA3OjUyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGVnYWN5LmM6IHJlbW92ZSBkZXByZWNhdGVkIHdhcm5pbmcgb24gc3RhcnRFbGVtZW50KCkKLQotV2VkIERlYyAyNCAxMjowNDozNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmMgcmVzdWx0L1hJbmNsdWRlL25vZGVzMi4qOiBYSW5jbHVkZSB4cG9pbnRlciBzdXBwb3J0Ci0JICB3YXMgYnJva2VuIHdpdGggdGhlIG5ldyBuYW1lc3BhY2UuIEZpeGVzICMxMjk5MzIKLQotV2VkIERlYyAyNCAwMDoyOTozMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmg6IHR5cGVzIG1pZ2h0IGJlCi0JICByZWRlZmluZWQgaW4gaW5jbHVkZXMsIHF1aWNrIGZpeCB0byBhbGxvdyB0aGlzIGJ1dCBsYWNrcyB0aGUgCi0JICBlcXVhbGl0eSBvZiB0aGUgcmVkZWZpbml0aW9uIHRlc3QuCi0KLVR1ZSBEZWMgMjMgMTU6MTQ6MzcgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIGJ1ZyBjb25jZXJuaW5nIHZhbGlkYXRpb24gdXNpbmcgZXh0ZXJuYWwKLQkgIGR0ZCBvZiBlbGVtZW50IHdpdGggbXV0aXBsZSBuYW1lc3BhY2UgZGVjbGFyYXRpb25zCi0JICAoQnVnIDEyOTgyMSkKLQotVHVlIERlYyAyMyAxMTo0MTo0MiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdHJlZS5jOiBpbmhpYml0ZWQgcHJvZHVjdGlvbiBvZiAiKG51bGwpOiIgaW4geG1sR2V0Tm9kZVBhdGgKLQkgIHdoZW4gbm9kZSBoYXMgZGVmYXVsdCBuYW1lc3BhY2UgKEJ1ZyAxMjk3MTApCi0KLVR1ZSBEZWMgMjMgMDk6Mjk6MTQgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhwYXRoLmM6IHNtYWxsIGVuaGFuY2VtZW50IHRvIHhtbFhQYXRoQ21wTm9kZXMgdG8gYXNzdXJlCi0JICBkb2N1bWVudCBvcmRlciBmb3IgYXR0cmlidXRlcyBpcyByZXRhaW5lZCAoQnVnIDEyOTMzMSkKLQotTW9uIERlYyAyMiAxOTowNjoxNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIHhtbHJlYWRlci5jOiBjaGFuZ2UgeG1sUmVhZEZkKCkgeG1sQ3R4dFJlYWRGZCgpCi0JICB4bWxSZWFkZXJOZXdGZCgpIHhtbFJlYWRlckZvckZkKCksIGNoYW5nZSB0aG9zZSB0byBub3QgY2xvc2UKLQkgIHRoZSBmaWxlIGRlc2NyaXB0b3IuIFVwZGF0ZWQgdGhlIGNvbW1lbnQsIHNob3VsZCBjbG9zZSAjMTI5NjgzCi0KLU1vbiBEZWMgMjIgMDA6MzQ6MDkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBmaXhlZCBhIHNlcmlvdXMgcHJvYmxlbSBpbiBYSW5jbHVkZSAjMTI5MDIxCi0KLVN1biBEZWMgMjEgMTM6NTk6NTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYnVnICMxMjk0ODksIHByb3BhZ2F0aW9uIG9mIHBhcnNpbmcgZmxhZ3MgCi0JICBpbiBlbnRpdGllcy4KLQkqIHBhcnNlci5jIHhtbHJlYWRlci5jOiBpbXByb3ZlZCB0aGUgY29tbWVudHMgb2YgcGFyc2luZyBvcHRpb25zCi0KLVN1biBEZWMgMjEgMTg6MTQ6MDQgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbSwgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtLAotCSAgZG9jL01ha2VmaWxlLmFtOiBhcHBsaWVkIGZpeGVzIHRvIGFsbG93IGJ1aWxkIGZyb20KLQkgICdvdXRzaWRlJyBkaXJlY3RvcnkgKEJ1ZyAxMjkxNzIpCi0KLVNhdCBEZWMgMjAgMTY6NDI6MDcgTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogdHJlZS5jIC0gYWRkIGV4cGxhbmF0aW9uIG9mIG5hbWVzcGFjZSBpbmhlcml0YW5jZSB3aGVuCi0JbnMgaXMgTlVMTCB0byB4bWxOZXdDaGlsZCBhbmQgeG1sTmV3VGV4dENoaWxkIEFQSSBkb2MKLQotU2F0IERlYyAyMCAxODoxNzoyOCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogaW5jbHVkZS9saWJ4bWwveHBhdGhJbnRlcm5hbHMuaDogdW5kaWQgbGFzdCBjaGFuZ2UgKG15Ci0JICBiYWQpLiAgUHV0IG5lY2Vzc2FyeSBmaXggaW4gbGlieHNsdC9saWJleHNsdCBpbnN0ZWFkLgotCSogaW5jbHVkZS9saWJ4bWwvRE9DQnBhcnNlci5oOiBwdXQgdGVzdCBmb3IgX19HQ0NfXyBvbgotCSAgd2FybmluZyBkaXJlY3RpdmUgKEJ1ZyAxMjkxMDUpCi0KLVNhdCBEZWMgMjAgMTA6NDg6MzcgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3hwYXRoSW50ZXJuYWxzLmg6IGZpeGVkIHhtbFhQYXRoUmV0dXJuU3RyaW5nCi0JICB0byBjYXRlciBmb3IgTlVMTCBwb2ludGVyIChidWcgMTI5NTYxKQotCSogZ2xvYmFscy5jOiBhZGRlZCBjb21tZW50IHRvIHN1cHByZXNzIGRvY3VtZW50YXRpb24gd2FybmluZwotCSogZG9jL2FwaWJ1aWxkLnB5OiBmaXhlZCBwcm9ibGVtIHdoaWNoIGNhdXNlZCBsYXN0IEFQSWNodW5reHguaHRtbAotCSAgdG8gYmUgbG9zdC4gIFJlYnVpbHQgZG9jLyogKGluY2x1ZGluZyBhZGRpbmcgQVBJY2h1bmsyNi5odG1sKQotCi1GcmkgRGVjIDE5IDE4OjI0OjAyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IHRyeWluZyB0byBmaXggIzEyOTY5MiB4bWxUZXh0UmVhZGVyRXhwYW5kKCkgd2hlbgotCSAgdXNpbmcgYW4geG1sUmVhZGVyV2Fsa2VyKCkKLQotVGh1IERlYyAxOCAyMDoxMDozNCBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiB0cmVlLmM6IGZpeCBtaXNjLiB0eXBvcyBpbiBkb2MgY29tbWVudHMKLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogZWxhYm9yYXRlIG9uIG1hY3JvIGRlZmluZSBkb2MgY29tbWVudHMKLQkqIGRvYy8qOiByZWJ1aWxkIGRvY3MKLQotV2VkIERlYyAxNyAxNjowNzozMyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy8qOiBkb24ndCBjYWxsIHRoZSByZXN1bHQgZmlsZXMgLm91dCBidXQgLnJlcyBhcwotCSAgdGhlIE1ha2VmaWxlcyB0ZW5kIHRvIHRyeSBnZW5lcmF0aW5nIGJpbmFyaWVzIGZvciAub3V0IHRhcmdldHMuLi4KLQotVHVlIERlYyAxNiAyMDo1Mzo1NCBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvaHRtbC9saWJ4bWwtcGF0dGVybi5odG1sOiAtIGN2cyBhZGQgQVBJIGRvY3MgZm9yIG5ldwotCXBhdHRlcm4gc3R1ZmYKLQotVHVlIERlYyAxNiAyMDo0MDo0MCBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiB0cmVlLmMKLQkqIGRvYy8qOgotCUVsYWJvcmF0ZSBpbiBkb2N1bWVudGF0aW9uIGRpc2N1c3Npb24gb2YgeG1sTmV3Q2hpbGQKLQlhbmQgeG1sTmV3VGV4dENoaWxkLiBUaGFua3MgdG8gU3RldmUgTGVudGkgZm9yIHBvaW50aW5nCi0Jb3V0IHRoZSB1c2VmdWxuZXNzIG9mIGEgbW9yZSBleHBsaWNpdCBleHBsYW5hdGlvbiBvZiB0aGUKLQlyZXNlcnZlZCBjaGFyYWN0ZXIgZXNjYXBpbmcgaXNzdWUuCi0KLUZyaSBEZWMgMTIgMTU6NTU6MTUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxjYXRhbG9nLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBTdGVmYW4gS29zdAotCi1UaHUgRGVjIDExIDE1OjE1OjMxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2V4YW1wbGVzL3Rlc3RXcml0ZXIuYzogYXBwbGllZCBzbWFsbCBmaXggZnJvbSBMdWNhcyBCcmFzaWxpbm8KLQotVGh1IERlYyAxMSAxNDo1NToyMiBDRVQgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS4qIHdpbjMyL2NvbmZpZ3VyZS5qczogQWRkZWQgcGF0dGVybiBzdXBwb3J0Ci0KLVdlZCBEZWMgMTAgMTQ6MTE6MjAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gZG9jLyogbGlieG1sLnNwZWMuaW46IHByZXBhcmluZyByZWxlYXNlIG9mCi0JICBsaWJ4bWwyLTIuNi4zLCB1cGRhdGVkIGFuZCByZWdlbmVyYXRlZCB0aGUgZG9jcy4KLQotV2VkIERlYyAxMCAxMTo0MzozMyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWDIuYyBwYXR0ZXJuLmM6IHJlbW92ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncwotCi1XZWQgRGVjIDEwIDExOjE2OjI5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBmaXhpbmcgYnVnICMxMTkyNjQgeG1sbGludCBmYWlsaW5nIHRvIHJlcG9ydAotCSAgc2VyaWFsaXphdGlvbiBlcnJvcnMgaW4gc29tZSBjYXNlcy4KLQotVHVlIERlYyAgOSAyMzo1MDoyMyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IGZpeGVkIGFuIFhNTCBlbnRpdGVzIGNvbnRlbnQgc2VyaWFsaXphdGlvbiAKLQkgIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBieSBYSW5jbHVkZSwgc2VlICMxMjY4MTcKLQotVHVlIERlYyAgOSAxNjoxMjo1MCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHdyaXRlci5jOiBhcHBsaWVkIHRoZSBwYXRjaCB0byB4bWxUZXh0V3JpdGVyU3RhcnRQSSgpCi0JICBzdWdnZXN0ZWQgYnkgRGFuaWVsIFNjaHVsbWFuIGluICMxMjgzMTMKLQotVHVlIERlYyAgOSAxNToxODozMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5hbTogYW5vdGhlciBwYXRjaCBmcm9tIEtlbm5ldGggSGFsZXkKLQkgIGZvciBNaW5ndywgYy5mLiAjMTI4Nzg3Ci0KLVR1ZSBEZWMgIDkgMTU6MDc6MDkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxleHBvcnRzLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbSBLZW5uZXRoIEhhbGV5Ci0JICBmb3IgY29tcGlsaW5nIG9uIE1pbmd3IHNlZSAjMTI4Nzg2Ci0KLVR1ZSBEZWMgIDkgMTQ6NTI6NTkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IHNvbWUgZmxhZ3Mgd2VyZSBub3QgcGFzc2VkIGRvd24gY29ycmVjdGx5IGFzCi0JICBwYXJzaW5nIG9wdGlvbnMuIEZpeGVzICMxMjY4MDYKLQotVHVlIERlYyAgOSAxMjoyOToyNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmMgeG1sbGludC5jIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3hpbmNsdWRlLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGF1Z21lbnRlZCB0aGUgWEluY2x1ZGUgQVBJCi0JICB0byBiZSBhYmxlIHRvIHBhc3MgWE1MIHBhcnNlciBmbGFncyBkb3duIHRvIHRoZSBJbmNsdXNpb24KLQkgIHByb2Nlc3MuIEFsc28gcmVzeW5jaHJvbml6ZWQgd2l0aCB0aGUgTGFzdCBDYWxsIFczQyBXb3JraW5nCi0JICBEcmFmdCAxMCBOb3ZlbWJlciAyMDAzIGZvciB0aGUgeHBvaW50ZXIgYXR0cmlidXRlLgotCSogTWFrZWZpbGUuYW0gdGVzdC9YSW5jbHVkZS9kb2NzL25vZGVzWzIzXS54bWwgCi0JICByZXN1bHQvWEluY2x1ZGUvKjogYXVnbWVudGVkIHRoZSB0ZXN0cyBmb3IgdGhlIG5ldyBuYW1lc3BhY2UgYW5kCi0JICB0ZXN0aW5nIHRoZSB4cG9pbnRlciBhdHRyaWJ1dGUsIGNoYW5nZWQgdGhlIHdheSBlcnJvciBtZXNzYWdlcwotCSAgYXJlIHRlc3RlZAotCSogZG9jLyo6IHJlZ2VuZXJhdGVkIHRoZSBkb2N1bWVudGF0aW9uCi0KLU1vbiBEZWMgIDggMTg6Mzg6MjYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlcnJvci5jOiBmaWx0ZXIgd2FybmluZyBtZXNzYWdlcyBpZiB0aGUgZ2xvYmFsIHNldHRpbmcgYmxvY2tzIHRoZW0KLQkqIHhpbmNsdWRlLmMgeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveGluY2x1ZGUuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogdXBkYXRlZCB0aGUgY2hhbmdlIG9mIG5hbWVzcGFjZSBhdAotCSAgdGhlIFhJbmNsdWRlIGxldmVsLCByYWlzZSBhIHdhcm5pbmcgaWYgdGhlIG9sZCBvbmUgaXMgZm91bmQsCi0JICBhbmQgc29tZSBjbGVhbnVwCi0KLU1vbiBEZWMgIDggMTM6MDk6MzkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHRlbnRhdGl2ZSBmaXggZm9yICMxMjYxMTcgY2hhcmFjdGVyIHJlZmVyZW5jZSBpbgotCSAgYXR0cmlidXRlcyBvdXRwdXQgcHJvYmxlbSBpbiBzb21lIGNvcm5lcmNhc2UuCi0KLU1vbiBEZWMgIDggMTE6MDg6NDUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLnB5OiB0cmllZCB0byBmaXggdGhlIHByb2JsZW1zIHJlcG9ydGVkIGluIAotCSAgYnVnICMxMjY3MzUKLQkqIHhwYXRoLmMgU0FYMi5jIGVycm9yLmMgcGFyc2VyLmMgdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOgotCSAgZml4ZWQgYWdhaW4gc29tZSBwcm9ibGVtIHRyeWluZyB0byB1c2UgdGhlIHN0cnVjdHVyZWQgZXJyb3IKLQkgIGhhbmRsZXJzLCBjLmYuIGJ1ZyAjMTI2NzM1Ci0JKiByZXN1bHQvVkMvRWxlbWVudFZhbGlkOiB0aW55IGNoYW5nZSBkdWUgdG8gdGhlIGZpeAotCi1TdW4gRGVjICA3IDIyOjI3OjMxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYzogZml4ZWQgX194bWxSYWlzZUVycm9yIHRvIHVzZSBzdHJ1Y3R1cmVkIGVycm9yIGhhbmRsZXJzCi0JICBkZWZpbmVkIGJ5IHhtbFNldFN0cnVjdHVyZWRFcnJvckZ1bmMoKSwgZml4ZXMgYnVnICMxMjYyMTEKLQotU3VuIERlYyAgNyAyMDozMDo1MyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhdHRlbXB0IHRvIGZpeCAjMTI2MjExIC4uLiAKLQotRnJpIERlYyAgNSAxNzowNzoyOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhdHRlcm4uYyB4bWxyZWFkZXIuYyB4bWxsaW50LmMgaW5jbHVkZS9saWJ4bWwvcGF0dGVybi5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaDogZml4ZWQgdGhlIHBhdHRlcm4gaW50ZXJmYWNlcwotCSAgYnV0IG5vdCB5ZXQgdGhlIHBhcnNlciB0byBoYW5kbGUgdGhlIG5hbWVzcGFjZXMuCi0JKiBkb2MvZXhhbXBsZXMvcmVhZGVyMy5jIGRvYy8qOiBmaXhlZCB0aGUgZXhhbXBsZSwgcmVidWlsdCB0aGUgZG9jcy4KLQotRnJpIERlYyAgNSAxNTo0OTo0NCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdsb2JhbHMuYyB4bWx3cml0ZXIuYyBkb2MvYXBpYnVpbGQucHkgaW5jbHVkZS9saWJ4bWwvZ2xvYmFscy5oIAotCSAgaW5jbHVkZS9saWJ4bWwvcGF0dGVybi5oIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXhwb3J0cy5oIGluY2x1ZGUvbGlieG1sL3htbHdyaXRlci5oOiBjbGVhbnVwCi0JICB0aGUgbWFrZSByZWJ1aWxkIGluIGRvYywgdGhpcyBpbmNsdWRlIG5ldyBkaXJlY3RpdmUgdG8gc3RvcAotCSAgZG9jdW1lbnRhdGlvbiB3YXJuaW5ncwotCSogZG9jLyogZG9jL2h0bWwvKjogcmVidWlsdCB0aGUgZG9jcwotCSogcGF0dGVybi5jIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3BhdHRlcm4uaAotCSAgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IGFkZGluZyB4bWxUZXh0UmVhZGVyUHJlc2VydmVQYXR0ZXJuKCkKLQkgIHRvIHNhdmUgbm9kZXMgd2hpbGUgc2Nhbm5pbmcgdGhlIHRyZWUgd2l0aCB0aGUgcmVhZGVyLCBjbGVhbnVwCi0JICB0aGUgd2F5IGVsZW1lbnQgd2VyZSBmcmVlZCwgYW5kIHhtbFRleHRSZWFkZXJQcmVzZXJ2ZSgpCi0JICBpbXBsZW1lbnRhdGlvbiwgdGhlIEFQSSBtaWdodCBjaGFuZ2UgZm9yIG5hbWVzcGFjZSBiaW5kaW5nIHN1cHBvcnQKLQkgIHdoZW4gY29tcGlsaW5nIHBhdHRlcm5zLgotCSogZG9jL2V4YW1wbGVzLyo6IGFkZGVkIHJlYWRlcjMuYyBleHBvc2luZyB0aGUgeG1sVGV4dFJlYWRlclByZXNlcnZlKCkKLQotVGh1IERlYyAgNCAxNToxMDo1NyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwucHk6IG9vcHMgZm9yZ290IHRvIG1vZGlmeS9jb21taXQgdGhlIG5ldyBjb2RlLgotCi1UaHUgRGVjICA0IDEzOjI5OjE5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbF93cmFwLmg6Ci0JICBjbGVhbnVwIHRoZSBvdXRwdXQgYnVmZmVyIHN1cHBvcnQgdG8gYXQgbGVhc3QgZ2V0IHRoZSBiYXNpYwotCSAgdG8gd29yawotCSogcHl0aG9uL3Rlc3RzL291dGJ1Zi5weSBweXRob24vdGVzdHMvc2VyaWFsaXplLnB5OiBmaXhlcyBhbmQKLQkgIGNsZWFudXAuCi0JKiBpbmNsdWRlL2xpYnhtbC94bWx3cml0ZXIuaDogY2xlYW51cAotCi1XZWQgRGVjICAzIDIxOjM4OjU2IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbgotCSogZG9jLyo6IGFkZCBXSVRIX1RSSU8gY29tbWVudCBzbyBpdCBzaG93cyB1cCBpbiB0aGUgZG9jcywgcmVidWlsZAotCSAgZG9jcwotCi1XZWQgRGVjICAzIDEzOjEwOjA4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlnLmguaW4gY29uZmlndXJlLmluIHhtbHJlZ2V4cC5jOiBmaXggYnVnICMxMjg0MDEgYWZmZWN0aW5nCi0JICByZWdleHAgcXVhbnRpZmllcnMKLQotVHVlIERlYyAgMiAyMzoyOTo1NiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhdHRlcm4uYyBpbmNsdWRlL2xpYnhtbC9wYXR0ZXJuLmg6IGFkZGluZyB0aGUgcGF0dGVybiBub2RlCi0JICBzZWxlY3Rpb24gY29kZS4gSW5oZXJpZWQgaW4gcGFydCBmcm9tIGxpYnhzbHQgYnV0IHNtYWxsZXIuCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgaW50ZWdyYXRlZCB0aGUgcGF0dGVybiBtb2R1bGUsIG1hZGUgaXQgYSBjb25maWd1cmUgdGltZSBvcHRpb24KLQkqIHhtbGxpbnQuYzogYWRkZWQgLS1wYXR0ZXJuIHRvIHRlc3Qgd2hlbiBkb2luZyAtLXN0cmVhbQotCi1UdWUgRGVjICAyIDExOjI1OjI1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGZpeGVkIGEgcHJvYmxlbSBpbiB4bWxyZWFkZXIgdmFsaWRhdGlvbiB3aGVuCi0JICBzdHJlYW1pbmcgZXhwb3NlZCBieSByZWFkZXIyIGV4YW1wbGUuCi0KLU1vbiBEZWMgIDEgMjA6NDA6NTEgTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbC5odG1sCi0JKiBkb2MvZG9jcy5odG1sOgotCWFkZCByZWZlcmVuY2UgdG8gdGhlIENvZGUgRXhhbXBsZXMgcGFnZSB0byBkb2NzLmh0bWwgbGlzdAotCW9mIHJlc291cmNlcwotCi1Nb24gRGVjICAxIDEyOjMwOjI4IENFVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYiB3aW4zMi9jb25maWd1cmUuanM6IEFwcGxpZWQgdGhlIEJDQiBwYXRjaAotCSAgZnJvbSBFcmljCi0KLVN1biBOb3YgMzAgMjE6MzM6MzcgTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogaW5jbHVkZS9saWJ4bWwveGluY2x1ZGUuaAotCSogZG9jLyo6IEFkZCBjb21tZW50cyBmb3IgbWFjcm8gZGVmaW5pdGlvbnMgaW4geGluY2x1ZGUuaCBhbmQKLQlyZWJ1aWxkIHRoZSBkb2NzCi0KLVN1biBOb3YgMzAgMjE6MDY6MjkgTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL2RvY2Rlc2NyLmRvYwotCVVwZGF0aW5nIFdpbGxpYW0ncyBleHBsYW5hdGlvbiBvZiBob3cgdG8gYnVpbGQgZG9jcywgCi0JcmVmbGVjdGluZyBEYW5pZWwncyBuZXcgZG9jcyBidWlsZCBzeXN0ZW0KLQotU2F0IE5vdiAyOSAxODozODoyMiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeG1sbWVtb3J5LmM6IGVuaGFuY2VkIGJ5IGFkZGluZyBtdXRleCB0byBwcm90ZWN0IGdsb2JhbAotCSAgc3RydWN0dXJlcyBpbiBhIG11bHRpLXRocmVhZGluZyBlbnZpcm9ubWVudC4gIFRoaXMgZml4ZWQKLQkgIHNvbWUgcmFuZG9tIGVycm9ycyBvbiB0aGUgVGhyZWFkcyByZWdyZXNzaW9uIHRlc3RzLgotCi1GcmkgTm92IDI4IDIxOjM5OjQ5IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWwuaHRtbCBkb2MvcHl0aG9uLmh0bWw6IGZpeCB0c3QucHkgdGV4dCwgd2hpY2ggZGlkbid0Ci0JICBpbXBvcnQgc3lzCi0KLUZyaSBOb3YgMjggMTc6Mjg6NDcgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGVuY29kaW5nLmMsIGluY2x1ZGUvbGlieG1sL2VuY29kaW5nLmg6IEVuaGFuY2VkIHRoZSBoYW5kbGluZyBvZgotCSAgVVRGLTE2LCBVVEYtMTZMRSBhbmQgVVRGLTE2QkUgZW5jb2RpbmdzLiAgTm93IFVURi0xNiBvdXRwdXQgaXMKLQkgIGhhbmRsZWQgaW50ZXJuYWxseSBieSBkZWZhdWx0LCB3aXRoIHByb3BlciBCT00gYW5kIFVURi0xNkxFCi0JICBlbmNvZGluZy4gIE5hdGl2ZSBVVEYtMTZMRSBhbmQgVVRGLTE2QkUgZW5jb2Rpbmcgd2lsbCBub3QgZ2VuZXJhdGUKLQkgIEJPTSBvbiBvdXRwdXQsIGFuZCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVjb2duaXplZCBvbiBpbnB1dC4KLQkqIHRlc3QvdXRmMTZsZWJvbS54bWwsIHRlc3QvdXRmMTZiZWJvbS54bWwsIHJlc3VsdC91dGYxNj9lYm9tKjoKLQkgIGFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGFib3ZlLgotCi1UaHUgTm92IDI3IDE5OjI1OjEwIENFVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLiogd2luMzIvY29uZmlndXJlLmpzOiBNb2RpZmllZCB0byBhbGxvdyBjb2V4aXN0ZW50IAotCSAgYnVpbGQgd2l0aCBhbGwgY29tcGlsZXJzLiBBZGRlZCBDLVJ1bnRpbWUgb3B0aW9uIGZvciBNU1ZDLiBJbmNsdWRlZAotCSAgeG1sV3JpdGVyLgotCSogeG1sd3JpdGVyLmM6IEFkZGVkIElOX0xJQlhNTCBtYWNybwotCi1XZWQgTm92IDI2IDIxOjU0OjAxIENFVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYjogYXBwbGllZCBwYXRjaCBmcm9tIEVyaWMKLQotV2VkIE5vdiAyNiAyMTozMzoxNCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogc3RlZmFuIG9uIElSQyBwb2ludGVkIG91dCB0aGF0IFhNTF9HRVRfTElORQotCSAgaXMgYnJva2VuIG9uIDIuNi54Ci0KLVR1ZSBOb3YgMjUgMTg6Mzk6NDQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbnRpdGllcy5jOiBmaXhlZCAjMTI3ODc3LCBuZXZlciBvdXRwdXQgJnF1b3Q7IGluIGVsZW1lbnQgY29udGVudAotCSogcmVzdWx0L2lzb2xhdDMgcmVzdWx0L3NsYXNoZG90MTYueG1sIHJlc3VsdC9ub2VudC9pc29sYXQzCi0JICByZXN1bHQvbm9lbnQvc2xhc2hkb3QxNi54bWwgcmVzdWx0L3ZhbGlkL1JFQy14bWwtMTk5ODAyMTAueG1sCi0JICByZXN1bHQvdmFsaWQvaW5kZXgueG1sIHJlc3VsdC92YWxpZC94bGluay54bWw6IHRoaXMgY2hhbmdlcyB0aGUKLQkgIG91dHB1dCBvZiBhIGZldyB0ZXN0cwotCi1UdWUgTm92IDI1IDE2OjM2OjIxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmgKLQkgIHRlc3RTY2hlbWFzLmMgeG1sc2NoZW1hcy5jOiBhZGRlZCB4c2Q6aW5jbHVkZSBzdXBwb3J0LCBmaXhlZAotCSAgdGVzdFNjaGVtYXMgYmVoYXZpb3VyIHdoZW4gYSBzY2hlbWFzIGZhaWxlZCB0byBwYXJzZS4KLQkqIHRlc3Qvc2NoZW1hcy92ZHYtKiByZXN1bHQvc2NoZW1hcy92ZHYtZmlyc3Q1XzBfMCo6IGFkZGVkIG9uZQotCSAgdGVzdCBmb3IgeHNkOmluY2x1ZGUgZnJvbSBFcmljIFZhbiBkZXIgVmxpc3QKLQotVHVlIE5vdiAyNSAwODoxODoxMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBzd2FwcGVkIHRoZSBhdHRyaWJ1dGUgZGVmYXVsdGluZyBhbmQgYXR0cmlidXRlIGNoZWNraW5nCi0JICBwYXJ0cyBvZiBwYXJzaW5nIGEgbmV3IGVsZW1lbnQgc3RhcnQsIGZpeGVzIGJ1ZyAjMTI3NzcyCi0JKiByZXN1bHQvdmFsaWQvMTI3NzcyLiogdGVzdC92YWxpZC8xMjc3NzIueG1sCi0JICB0ZXN0L3ZhbGlkL2R0ZHMvMTI3NzcyLmR0ZDogYWRkZWQgdGhlIGV4YW1wbGUgaW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotVHVlIE5vdiAyNSAwODowMDoxNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBtb3ZlZCB4bWxDbGVhbnVwVGhyZWFkcygpIHRvIHRoZSBlbmQgb2YgeG1sQ2xlYW51cFBhcnNlcigpCi0JICB0byBhdm9pZCBidWcgIzEyNzg1MQotCi1Nb24gTm92IDI0IDE1OjI2OjIxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGZpeGluZyBzb21lIE5lZ2F0aXZlIENoYXJhY3RlciBHcm91cCBhbmQKLQkgIENoYXJhY3RlciBDbGFzcyBTdWJ0cmFjdGlvbiBoYW5kbGluZy4KLQotTW9uIE5vdiAyNCAxNDowMTo1NyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYzogbW9yZSBYTUwgU2NoZW1hcyBmaXhlcyBiYXNlZAotCSAgb24gRXJpYyB2YW4gZGVyIFZsaXN0IGV4YW1wbGVzCi0JKiByZXN1bHQvc2NoZW1hcy92ZHYtZmlyc3Q0KiB0ZXN0L3NjaGVtYXMvdmR2LWZpcnN0NCo6Ci0JICBhZGRlZCByZWdyZXNzaW9uIHRlc3RzCi0JKiBkb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW0gZG9jL2V4YW1wbGVzL2luZGV4LnB5OiBkbyBub3QKLQkgIHJlZ2VuZXJhdGUgdGhlIGluZGV4IG9uIG1ha2UgYWxsIHRhcmdldCwgYnV0IG9ubHkgb24KLQkgIG1ha2UgcmVidWlsZCB0byBhdm9pZCB0cm91Ymxlcy4KLQotU2F0IE5vdiAyMiAyMTozNTo0MiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oCi0JICBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmg6IGxvdCBvZiBidWcgZml4ZXMsIGNsZWFudXAsCi0JICBzdGFydGluZyB0byBhZGQgcHJvcGVyIG5hbWVzcGFjZSBzdXBwb3J0IHRvby4KLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkIGEgbnVtYmVyIG9mIHRlc3RzCi0JICBmaXhlZCB0aGUgcmVzdWx0IGZyb20gc29tZSByZWdyZXNzaW9uIHRlc3RzIHRvby4KLQotRnJpIE5vdiAyMSAyMDo1MDo1OSBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MveG1sLmh0bWwsIGRvY3MuaHRtbDogcmVtb3ZlIHJlZmVyZW5jZSB0byBndGstZG9jIG5vdyB0aGF0Ci0JRGFuaWVsIGhhcyByZW1vdmVkIGl0LCBmaXggbGluayB0byBHZW9yZ2UncyBJQk0gYXJ0aWNsZSwgb3RoZXIKLQltaW5vciBlZGl0cwotCi1GcmkgTm92IDIxIDAxOjI2OjAwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gUm9iZXJ0IFN0ZXBhbmVrIHRvIHN0YXJ0IAotCSAgaW1wb3J0IG9zIHNjaGVtYXMgc3VwcG9ydCwgY2xlYW5lZCB1cCBzdHVmZiBhbmQgdGhlIHBhdGNoLgotCSogdGVzdC9zY2hlbWFzL2ltcG9ydDBfMC4qIHJlc3VsdC9zY2hlbWFzL2ltcG9ydDBfMF8wKjogYWRkZWQgdGVzdAotCSAgdG8gcmVncmVzc2lvbiwgZml4ZWQgYSBmZXcgcmVncmVzc2lvbnMgdG9vLgotCi1UaHUgTm92IDIwIDIyOjU4OjAwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIHR3byBwYXJzaW5nIGZpeGVzIGZyb20gSmFtZXMgQnVyc2EKLQotVGh1IE5vdiAyMCAxOToyMDo0NiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9leGFtcGxlcy8qOiBhZGRlZCB0d28geG1sUmVhZGVyIGV4YW1wbGVzCi0JKiB4bWxyZWFkZXIuYzogY2xlYW5lZCB1cCBzb21lIGJ1Z3MgaW4gdGhlIHByb2Nlc3MKLQotVGh1IE5vdiAyMCAxMjo1NDozMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHdyaXRlci5jIGluY2x1ZGUvbGlieG1sL3htbHdyaXRlci5oOiBhcHBsaWVkIHBhdGNoIGZyb20KLQkgIEFsZnJlZCBNaWNrYXV0c2NoLCBidWdmaXhlcyBhbmQgY29tbWVudHMKLQkqIGRvYy9leGFtcGxlcy8qOiBhZGRlZCBoaXMgdGVzdCBhcyB0aGUgeG1sV3JpdGVyIGV4YW1wbGUKLQkqIGRvYy9odG1sLyBkb2MvKi5odG1sOiB0aGlzIHJlc3VsdGVkIGluIHNvbWUgaW1wcm92ZW1lbnRzCi0JKiBpbmNsdWRlL2xpYnhtbC9oYXNoLmg6IGZpeGVkIGFuIGluY2x1c2lvbiBwcm9ibGVtIHdoZW4KLQkgIDxsaWJ4bWwvaGFzaC5oPiB3YXNuJ3QgcHJlY2VlZGVkIGJ5IDx4bWwvcGFyc2VyLmg+Ci0KLVdlZCBOb3YgMTkgMTc6MTk6MzUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBmaXggYW4gZXJyb3IgbWVzc2FnZQotCSogZG9jL2V4YW1wbGVzLyo6IGFkZGVkIHRyZWUyIGV4YW1wbGUgZnJvbSBMdWNhcyBCcmFzaWxpbm8KLQotV2VkIE5vdiAxOSAxNzo1MDo0NyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL25ld2FwaS54c2w6IGltcHJvdmUgdGhlIHNvcnQgc2VxdWVuY2UgZm9yIHBhZ2UgY29udGVudAotCSogZG9jL2h0bWwvKi5odG1sOiByZWdlbmVyYXRlIHRoZSB3ZWIgcGFnZXMKLQotV2VkIE5vdiAxOSAwMDo0ODo1NiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBkbyBub3QgcGFja2FnZSBjdnMgdmVyc2lvbmluZyB0ZW1wIGZpbGVzLgotCSogZG9jL2FwaWJ1aWxkLnB5IGRvYy9saWJ4bWwyLWFwaS54bWwgZG9jL25ld2FwaS54c2w6IG1vcmUgY2xlYW51cCwKLQkgIHNsaWdodGx5IGltcHJvdmVkIHRoZSBBUEkgeG1sIGZvcm1hdCwgZml4ZWQgYSBsb3Qgb2Ygc21hbGwKLQkgIHJlbmRlcmluZyBwcm9ibGVtcwotCSogZG9jL2h0bWwvbGlieG1sKi5odG1sOiByZWJ1aWx0Ci0KLVR1ZSBOb3YgMTggMjE6NTE6MTUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC8qLmggaW5jbHVkZS9saWJ4bWwvKi5oLmluOiBtb2RpZmllZCB0aGUgZmlsZQotCSAgaGVhZGVyIHRvIGFkZCBtb3JlIGluZm9ybWF0aW9ucywgcGFpbmZ1bC4uLgotCSogZ2VuQ2hSYW5nZXMucHkgZ2VuVW5pY29kZS5weTogdXBkYXRlZCB0byBnZW5lcmF0ZSBzYWlkIGNoYW5nZXMKLQkgIGluIGhlYWRlcnMKLQkqIGRvYy9hcGlidWlsZC5weTogZXh0cmFjdCBoZWFkZXJzLCBhZGQgdGhlbSB0byBsaWJ4bWwyLWFwaS54bWwKLQkqICouaHRtbCAqLnhzbCAqLnhtbDogdXBkYXRlZCB0aGUgc3R5bGVzaGVldHMgdG8gZmxhZyBnZXByZWNhdGVkCi0JICBBUElzIG1vZHVsZXMuIFVwZGF0ZWQgdGhlIHN0eWxlc2hlZXRzLCBzb21lIGNsZWFudXBzLCByZWdlbmVyYXRlZAotCSogZG9jL2h0bWwvKi5odG1sOiByZWdlbmVyYXRlZCBhZGRlZCBiYWNrIGJvb2sxIGFuZCBsaWJ4bWwtbGliLmh0bWwKLQotVHVlIE5vdiAxOCAxNDo0MzoxNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9NYWtlZmlsZS5hbSBkb2MvKi54c2wgZG9jLyouaHRtbCBkb2MvYXBpYnVpbGQucHk6IGNsZWFuZWQgdXAKLQkgIHRoZSBidWlsZCBwcm9jZXNzIHRvIHJlbW92ZSBhbGwgcmVtYWlucyBmcm9tIHRoZSBvbGQgZ3RrLWRvYwotCSAgaW5oZXJpdGVkLCBsaWJ4bWwyLXJlZnMueG1sIGlzIG5vdyBnZW5lcmF0ZWQgYnkgYXBpYnVpbGQucHksIHRoZQotCSAgc3R5bGVzaGVldHMgaGF2ZSBiZWVuIGltcHJvdmVkLCBhbmQgdGhlIEFQSSpodG1sIG5vdyBnZW5lcmF0ZWQKLQkgIGFyZSBYSFRNTDEgdmFsaWQgdG9vCi0KLVR1ZSBOb3YgMTggMTQ6Mjg6MzIgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8bW1tLmNvbS5oaz4KLQotCSogZ2VuQ2hSYW5nZXMucHksIGNodmFsaWQuYywgaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oOiBtaW5vcgotCSAgZW5oYW5jZW1lbnQgdG8gcHJldmVudCBjb21tZW50IHdpdGggdW5yZWZlcmVuY2VkIHZhcmlhYmxlLgotCSogdGhyZWFkcy5jIHhtbHJlYWRlci5jIHhtbHdyaXRlci5jOiBlZGl0ZWQgc29tZSBjb21tZW50cyB0bwotCSAgaW1wcm92ZSBhdXRvLWdlbmVyYXRpb24gb2YgZG9jdW1lbnRhdGlvbgotCSogYXBpYnVpbGQucHk6IG1pbm9yIGNoYW5nZSB0byBhbiBlcnJvciBtZXNzYWdlCi0KLU1vbiBOb3YgMTcgMTc6NTU6NTEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvYXBpYnVpbGQucHkgZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvbmV3YXBpLnhzbDogbW9yZSBjbGVhbnVwLAotCSAgaW1wcm92aW5nIG5hdmlnYXRpb24KLQkqIGRvYy9odG1sLyouaHRtbDogdXBkYXRlZCB0aGUgcmVzdWx0Ci0KLU1vbiBOb3YgMTcgMTQ6NTQ6MzggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvTWFrZWZpbGUuYW0gZG9jL2FwaWJ1aWxkLnB5IGRvYy9saWJ4bWwyLWFwaS54bWwgZG9jL25ld2FwaS54c2w6Ci0JICBpbXByb3ZlbWVudCBvZiB0aGUgc3R5bGVzaGVldHMsIGZpeGVkIGEgQVBJIGdlbmVyYXRpb24gcHJvYmxlbSwKLQkgIHN3aXRjaGVkIHRoZSBzdHlsZXNoZWV0IGFuZCBNYWtlZmlsZSB0byBidWlsZCB0aGUgSFRNTCBvdXRwdXQuCi0JKiBkb2MvaHRtbC8qLmh0bWw6IGNvbXBsZXRlIHVwZGF0ZSwgZGl0Y2hlZCBzb21lIG9sZCBmaWxlcywgbWlnaHQKLQkgIGludHJvZHVjZSBzb21lIGJyZWFrYWdlLi4uCi0KLU1vbiBOb3YgMTcgMTI6NTA6MjggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvbmV3YXBpLnhzbDogbG90IG9mIGltcHJvdmVtZW50cywgdGhpcyBzdGFydHMgbG9va2luZyBnb29kCi0JICBlbm91Z2ggdG8gYmUgdXNhYmxlLgotCi1Nb24gTm92IDE3IDAwOjU4OjA5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL25ld2FwaS54c2w6IHN0eWxlc2hlZXQgdG8gYnVpbGQgSFRNTCBwYWdlcyBmcm9tIHRoZQotCSAgQVBJIFhNTCBkZXNjcmlwdGlvbiwgV29yayBpbiBQcm9ncmVzcwotCi1TdW4gTm92IDE2IDE2OjAzOjI0IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBidWcgMTI2OTc2IChzdHJpbmcgIT0gZW1wdHkgbm9kZXNldAotCSAgc2hvdWxkIGJlIGZhbHNlKQotCi1TdW4gTm92IDE2IDE0OjAwOjA4IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkb2MvaHRtbC8qLmh0bWw6IEZpbmFsbHkgLSBmb3VuZCB0aGUgcHJvYmxlbSB3aXRoIHRoZQotCSAgcGFnZSBnZW5lcmF0aW9uIChYTUxQVUJGVU4gbm90IHJlY29nbml6ZWQgYnkgZ3RrZG9jKS4KLQkgIFJlLWNyZWF0ZWQgdGhlIHBhZ2VzIHVzaW5nIGEgdGVtcG9yYXJ5IHZlcnNpb24gb2YKLQkgIGluY2x1ZGUvbGlieG1sLyouaC4KLQkqIHRlc3RPT01saWIuYyxpbmNsdWRlL2xpYnhtbC9lbmNvZGluZy5oLAotCSAgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oLGluY2x1ZGUvbGlieG1sL3ZhbGlkLmgsCi0JICBpbmNsdWRlL2xpYnhtbC94bGluay5oLGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oLAotCSAgaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmguaW4sCi0JICBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oOiBtaW5vciBlZGl0IG9mIGNvbW1lbnRzCi0JICB0byBoZWxwIGF1dG9tYXRpYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24KLQkqIGRvYy9kb2NkZXNjci5kb2M6IHNtYWxsIGVsYWJvcmF0aW9uCi0JKiBkb2MvZXhhbXBsZXMvdGVzdDEuYyxkb2MvZXhhbXBsZXMvTWFrZWZpbGUuYW06IHJlLWNvbW1pdAotCSAgKG1lc3NlZCB1cCBvbiBsYXN0IHRyeSkKLQkqIHhtbHJlYWRlci5jOiBtaW5vciBjaGFuZ2UgdG8gY2xlYXIgd2FybmluZy4KLQotU2F0IE5vdiAxNSAxOToyMDozMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIENvcHlyaWdodDogZml4ZWQgc29tZSB3b3JkaW5nCi0JKiBsaWJ4bWwuc3BlYy5pbjogbWFrZSBzdXJlIGRvYy9leGFtcGxlcyBpcyBwYWNrYWdlZAotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oIHZhbGlkLmMgeG1scmVhZGVyLmM6IGZpeGVkIHRoZSByZWFsbHkKLQkgIGFubm95aW5nIHByb2JsZW0gYWJvdXQgeG1sUmVtb3ZlSUQgYW5kIHhtbFJlYWRlciBzdHJlYW1pbmcuCi0JICBUaGluZyBsb29rcyBmaXhlZCBub3csIGhhZCB0byBhZGQgYSBkb2MgcmVmZXJlbmNlIHRvIHRoZQotCSAgeG1sSUQgc3RydWN0dXJlIHRob3VnaC4uLgotCi1TYXQgTm92IDE1IDA5OjUzOjM2IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy9kb2NkZXNjci5kb2M6IGFkZGVkIGRlc2NyaXB0aW9uIG9mIG1hbiBwYWdlIGJ1aWxkaW5nCi0KLVNhdCBOb3YgMTUgMTk6MDg6MjIgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRvYy9odG1sL2xpYnhtbC1jaHZhbGlkLmh0bWwsIGRvYy9odG1sL2xpYnhtbC1kaWN0Lmh0bWwsCi0JICBkb2MvaHRtbC9saWJ4bWwtbGlzdC5odG1sLCBkb2MvaHRtbC9saWJ4bWwtdGVzdE9PTWxpYi5odG1sLAotCSAgZG9jL2h0bWwvbGlieG1sLXdpbmNlY29tcGF0LCBkb2MvaHRtbC93aW5zb2NrY29tcGF0Lmh0bWwsCi0JICBkb2MvaHRtbC9saWJ4bWwteG1sZXhwb3J0cy5odG1sLCBkb2MvaHRtbC9saWJ4bWwteG1sdmVyc2lvbi5odG1sLAotCSAgZG9jL2h0bWwvbGlieG1sLXhtbHdpbjMydmVyc2lvbi5odG1sLCBkb2MvaHRtbC9saWJ4bWwteG1sd3JpdGVyLmh0bWw6Ci0JICBhZGRlZCBtaXNzaW5nIHBhZ2VzIGZvciB0aGUgd2Vic2l0ZS4KLQotU2F0IE5vdiAxNSAxODoyMzo0OCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL01ha2VmaWxlLmFtIGRvYy8qLmh0bWwgZG9jL2h0bWwvKi5odG1sOiByZWJ1aWx0IHRoZQotCSAgZ2VuZXJhdGVkIHBhZ2VzIChhZ2FpbiksIG1hbnVhbGx5IHJlc3RvcmVkIGRvYy9odG1sL2luZGV4Lmh0bWwKLQkgIGFuZCBtYW51YWxseSBlZGl0ZWQgZ2VuZXJhdGVkIGZpbGUgZG9jL2dub21lLXhtbC54bWwgdG8gcHV0Ci0JICBpbiBhcHByb3ByaWF0ZSBoZWFkaW5ncy4KLQkqIGRvYy9kb2NkZXNjci5kb2M6IG5ldyBmaWxlIHRvIGRlc2NyaWJlIGRldGFpbHMgb2YgdGhlCi0JICBkb2N1bWVudCBnZW5lcmF0aW9uIChoZWxwcyBteSBtZW1vcnkgZm9yIHRoZSBuZXh0IHRpbWUpCi0JKiBnZW5DaFJhbmdlcy5weSxjaHZhbGlkLmMsaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oOiBtaW5vcgotCSAgZW5oYW5jZW1lbnQgdG8gcGxlYXNlIHRoZSBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgotCi1GcmkgTm92IDE0IDIzOjQ3OjMxIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBjYXRhbG9nLmMscmVsYXhuZy5jLHRlc3RBdXRvbWF0YS5jLHhwb2ludGVyLmMsZ2VuQ2hSYW5nZXMucHksCi0JICBjaHZhbGlkLmMsaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oLGRvYy9leGFtcGxlcy90ZXN0MS5jOgotCSAgbWlub3IgZXJyb3IgY2xlYW51cCBmb3IgZ2NjLTMuMy5bMTJdIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgotCi1GcmkgTm92IDE0IDE1OjA4OjEzIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB0cmVlLmM6IG1pbm9yIGNoYW5nZXMgdG8gc29tZSBjb21tZW50cwotCSogZG9jLyouaHRtbDogcmVidWlsdCB0aGUgZ2VuZXJhdGVkIEhUTUwgcGFnZXMgZm9yIGNoYW5nZXMKLQkgIGZyb20gamZsZWNrIChidWcgMTI2OTQ1KQotCi1UaHUgTm92IDEzIDEyOjQ0OjE0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2V4YW1wbGVzLyo6IGFkZGVkIERvZGppJ3MgZXhhbXBsZSwgYWRkZWQgb3V0cHV0IGhhbmRsaW5nCi0KLVRodSBOb3YgMTMgMTE6MzU6MzUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvZXhhbXBsZXMvKjogYWRkZWQgQWxla3NleSBYUGF0aCBleGFtcGxlLCBmaXhlZCBidWdzCi0JICBpbiB0aGUgaW5kZXhlcgotCi1XZWQgTm92IDEyIDIzOjQ4OjI2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jLyo6IGludGVncmF0aW5nIHRoZSBleGFtcGxlcyBpbiB0aGUgbmF2aWdhdGlvbiBtZW51cwotCSogZG9jL2V4YW1wbGVzLyo6IGFkZGVkIG1ha2UgdGVzdHMsIHVwZGF0ZWQgdGhlIG5hdmlnYXRpb24sCi0JICBhZGRlZCBhIG5ldyB0ZXN0LCBjbGVhbnVwcywgdXBkYXRlcy4KLQotV2VkIE5vdiAxMiAxNzo1MDozNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qLmh0bWw6IHJlYnVpbHQgdGhlIGdlbmVyYXRlZCBIVE1MIHBhZ2VzCi0JKiBkb2MvZXhhbXBsZXMvKjogdXBkYXRlZCB0aGUgc3R5bGVzaGVldHMsIGFkZGVkIGEgc3lub3BzaXMsCi0JICBNYWtlZmlsZS5hbSBpcyBub3cgZ2VuZXJhdGVkIGJ5IGluZGV4LnB5Ci0KLVdlZCBOb3YgMTIgMDE6Mzg6MTYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2Mvc2l0ZS54c2wgZG9jL2V4YW1wbGVzL01ha2VmaWxlLmFtIGRvYy9leGFtcGxlcy9pbmRleC5odG1sOgotCSAgYWRkZWQgYXV0b2dlbmVyYXRpb24gb2YgYSB3ZWIgcGFnZSBmb3IgdGhlIGV4YW1wbGVzCi0JKiBkb2MvZXhhbXBsZXMvZXhhbXBsZTEuYyBkb2MvZXhhbXBsZXMvLmN2c2lnbm9yZQotCSAgZG9jL2V4YW1wbGVzL2V4YW1wbGVzLnhtbCBkb2MvZXhhbXBsZXMvaW5kZXgucHk6IHVwZGF0ZWQgdGhlCi0JICBpbmZvcm1hdGlvbnMgZXh0cmFjdGVkLCBpbXByb3ZlZCB0aGUgZm9ybWF0IGFuZCBpbmRleGluZy4KLQotVHVlIE5vdiAxMSAyMjowODo1OSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhpbmNsdWRlLXRlc3Qtc3VpdGUucHk6IGxlc3MgdmVyYm9zZSBvbiBkaWZmZXJlbmNlCi0JKiBsaWJ4bWwuc3BlYy5pbjogY2xlYW51cAotCSogcGFyc2VyLmM6IGZpeGVkIHhtbENsZWFudXBQYXJzZXIoKSBkb2MKLQkqIGRvYy9NYWtlZmlsZS5hbSBkb2MvYXBpYnVpbGQucHkgZG9jL2xpYnhtbDItYXBpLnhtbAotCSAgZG9jL2V4YW1wbGVzL01ha2VmaWxlLmFtIGRvYy9leGFtcGxlcy9leGFtcGxlMS5jIAotCSAgZG9jL2V4YW1wbGVzL2V4YW1wbGVzLnhtbCBkb2MvZXhhbXBsZXMvaW5kZXgucHkKLQkgIGRvYy9leGFtcGxlcy90ZXN0MS54bWw6IHdvcmsgb24gYWRkaW5nIEMgZXhhbXBsZXMgYW5kCi0JICBnZW5lcmF0aW5nIGF1dG9tYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZS4gZXhhbXBsZXMueG1sCi0JICBpcyBhdXRvZ2VuZXJhdGVkIGRlc2NyaWJpbmcgdGhlIGV4YW1wbGVzLgotCSogZXhhbXBsZS9NYWtlZmlsZS5hbTogY2xlYW51cAotCi1Nb24gTm92IDEwIDIzOjQ3OjAzIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBnZW5Vbmljb2RlLnB5LCB4bWx1bmljb2RlLmMsIGluY2x1ZGUvbGlieG1sL3htbHVuaWNvZGUuaDoKLQkgIGZpeGVkIG1pc3NpbmcgJy0nIGluIGJsb2NrIG5hbWVzLCBlbmhhbmNlZCB0aGUgaGFjayBmb3IKLQkgIEFCSSBhbGlhc2luZy4KLQotU3VuIE5vdiAgOSAyMDoyODoyMSBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZ2VuVW5pY29kZS5weSwgeG1sdW5pY29kZS5jLCBpbmNsdWRlL2xpYnhtbC94bWx1bmljb2RlLmgsCi0JICBweXRob24vbGlieG1sMmNsYXNzLnR4dDogZW5oYW5jZWQgZm9yIHJhbmdlIGNoZWNraW5nLAotCSAgdXBkYXRlZCB0byBVbmljb2RlIHZlcnNpb24gNC4wLjEgKEFQSSBkb2NzIGFsc28gdXBkYXRlZCkKLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IG1pbm9yIGNoYW5nZSB0byBmaXggYSB3YXJuaW5nCi0KLVdlZCBOb3YgIDUgMjM6NDY6MzYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogYXBwbHkgZml4IGZyb20gS2FybCBFaWNod2FsZGVyIGZvciBzY3JpcHQgcGF0aAotCi1XZWQgTm92ICA1IDEwOjQ5OjIwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogd2luMzIvY29uZmlndXJlLmpzOiBhcHBsaWVkIHBhdGNoIGZyb20gTWFyayBWYWtvYyB0byBzaW1wbGlmeQotCSAgaGlzIHdvcmsgZnJvbSBDVlMgY2hlY2tvdXRzLgotCi1UdWUgTm92ICA0IDIxOjE2OjQ3IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxyZWFkZXIuaHRtbDogbWlub3IgY2xlYW51cHMKLQotVHVlIE5vdiAgNCAxNTo1MjoyOCBQU1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBjaGFuZ2VkIG1hY3JvIEFUVFJJQlVURV9VTlVTRUQKLQkgIGZvciBnY2Mgc28gdGhhdCwgaWYgdW5kZWZpbmVkLCBpdCdzIGRlZmluZWQgYXMKLQkgIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0KLVR1ZSBOb3YgIDQgMTU6Mjg6MDcgUFNUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IHNtYWxsIGVuaGFuY2VtZW50IHRvIGFzc3VyZSBBVFRSSUJVVEVfVU5VU0VECi0JICBhcHBlYXJzIGFmdGVyIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KLQkqIHZhbGlkLmM6IHRyaXZpYWwgY2hhbmdlIHRvIGVsaW1pbmF0ZSBhIHdhcm5pbmcgbWVzc2FnZQotCi1UdWUgTm92ICA0IDExOjI0OjA0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIE5FV1MgZG9jLyo6IHByZXBhcmluZyByZWxlYXNlIDIuNi4yLCB1cGRhdGVkIGFuZAotCSAgcmVidWlsdCB0aGUgZG9jcwotCi1UdWUgTm92ICA0IDA5OjM4OjQ2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBjaGFuZ2UgLS1odG1sIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdGhlIEhUTUwgc2VyaWFsaXphdGlvbgotCSAgcnVsZSBieSBkZWZhdWx0IHdoZW4gSFRNTCBwYXJzZXIgaXMgdXNlZCwgYWRkIC0teG1sb3V0IHRvIGFsbG93IHRvCi0JICBmb3JjZSB0aGUgWE1MIHNlcmlhbGl6ZXIgb24gSFRNTC4KLQkqIEhUTUx0cmVlLmM6IHVnbHkgdHdlYWsgdG8gZml4IHRoZSBvdXRwdXQgb24gPHA+IGVsZW1lbnQgYW5kIAotCSAgc29sdmUgIzEyNTA5MwotCSogcmVzdWx0L0hUTUwvKjogdGhpcyBjaGFuZ2VzIHRoZSBvdXRwdXQgb2Ygc29tZSB0ZXN0cwotCi1Nb24gTm92ICAzIDE3OjUxOjI4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogZml4ZWQgYnVnICMxMjU4MTIsIGFib3V0IFhQb2ludGVyIGluIFhJbmNsdWRlIAotCSAgZmFpbGluZyBidXQgbm90IHJldHVybmluZyBhbiBlcnJvci4KLQotTW9uIE5vdiAgMyAxNzoxODoyMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIGJ1ZyAjMTI1ODExIHJlbGF0ZWQgdG8gRFREIHBvc3QgdmFsaWRhdGlvbgotCSAgd2hlcmUgdGhlIERURCBkb2Vzbid0IHBlcnRhaW4gdG8gYSBkb2N1bWVudC4KLQotTW9uIE5vdiAgMyAxNToyNTo1OCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmg6IGltcGxlbWVudGVkCi0JICB0aGUgWE1MX1BBUlNFX05PTkVUIHBhcnNlciBvcHRpb24uCi0JKiB4bWxsaW50LmM6IGNvbnZlcnRlZCB4bWxsaW50LmMgdG8gdXNlIHRoZSBvcHRpb24gaW5zdGVhZCBvZiAKLQkgIHJlbHlpbmcgb24gdGhlIGdsb2JhbCByZXNvbHZlciB2YXJpYWJsZS4KLQotTW9uIE5vdiAgMyAxMzoyNjozMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmMgeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveGluY2x1ZGUuaDogYWRkaW5nIFhJbmNsdWRlCi0JICBzdXBwb3J0IHRvIHRoZSByZWFkZXIgaW50ZXJmYWNlLiBMb3Qgb2YgdGVzdGluZyBvZiB0aGUgd2Fsa2VyLAotCSAgdmFyaW91cyBidWcgZml4ZXMuCi0JKiB4bWxsaW50LmM6IGFkZGVkIC0td2Fsa2VyIGFuZCBtYWRlIHN1cmUgLS14aW5jbHVkZSAtLXN0cmVhbSAtLWRlYnVnCi0JICB3b3JrcyBhcyBleHBlY3RlZAotCSogTWFrZWZpbGUuYW0gcmVzdWx0L2R0ZDExLnJkciByZXN1bHQvZW50Ni5yZHIgdGVzdC9kdGQxMSB0ZXN0L2VudDYKLQkgIHJlc3VsdC9YSW5jbHVkZS8qLnJkcjogYWRkZWQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgdGhlIHdhbGtlciBhbmQKLQkgIFhJbmNsdWRlIHhtbFJlYWRlciBzdXBwb3J0LCBoYWQgdG8gc2xpZ2h0bHkgY2hhbmdlIGEgY291cGxlIG9mIHRlc3RzCi0JICBiZWNhdXNlIHRoZSB3YWxrZXIgY2FuJ3QgZGlzdGluZ3Vpc2ggPGZvby8+IGZyb20gPGZvbz48L2Zvbz4KLQotU2F0IE5vdiAgMSAxNzo0MjoyNyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYyBuYW5vaHR0cC5jIHRocmVhZHMuYzogc2Vjb25kIEJlT1MgcGF0Y2ggZnJvbSAKLQkgIE1hcmNpbiAnU2hhcmQnIEtvbmlja2kKLQotRnJpIE9jdCAzMSAxNTozNToyMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhbHdheXMgZ2VuZXJhdGUgbGluZSBudW1iZXJzCi0KLUZyaSBPY3QgMzEgMTE6NTM6NDYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYW5vdGhlciByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gZml4aW5nICMxMjU4MjMKLQotRnJpIE9jdCAzMSAxMTozMzoxOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYzogcHJldmlvdXMgZml4IGZvciAjMTI0MDQ0IHdhcyBicm9rZW4sIGNvcnJlY3QKLQkgIGZpeCBwcm92aWRlZC4KLQkqIEhUTUxwYXJzZXIuYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB4bWxJTy5jOiBmaXggeG1sU3RvcFBhcnNlcigpCi0JICBhbmQgdGhlIGVycm9yIGhhbmRsZXJzIHRvIGFkZHJlc3MgIzEyNTg3NwotCi1UaHUgT2N0IDMwIDIzOjEwOjQ2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHNpZGUgZWZmZWN0IG9mICMxMjMxMDUgcGF0Y2gsIG5hbWVzcGFjZSByZXNvbHV0aW9uCi0JICB3b3VsZCBmYWlsIHdoZW4gZGVmaW5lZCBpbiBpbnRlcm5hbCBlbnRpdGllcywgZml4ZXMgIzEyNTgyMwotCi1UaHUgT2N0IDMwIDE0OjEwOjQyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBiZSBtb3JlIGRlZmVuc2l2ZSBpbiB0aGUgeG1sUmVhZGVyIHB5dGhvbiBiaW5kaW5ncwotCSAgZml4aW5nIGJ1ZyAjMTI0MDQ0Ci0KLVRodSBPY3QgMzAgMTE6MTQ6MzEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiB0aGUgYS1wb3N0ZXJpb3JpIERURCB2YWxpZGF0aW9uIGNvZGUgd2FzIG5vdCB2YWxpZGF0aW5nCi0JICB0aGUgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucywgdGhpcyBmaXhlcyAjMTI0MTEwCi0KLVdlZCBPY3QgMjkgMTQ6MTM6MDMgUERUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbElPLmM6IGVuaGFuY2VkIHRvIGJ5cGFzcyBjb21wcmVzc2lvbiBkZXRlY3Rpb24gY29kZQotCSAgd2hlbiBpbnB1dCBmaWxlIGlzIHN0ZGluIChidWcgMTI1ODAxKQotCi1XZWQgT2N0IDI5IDE4OjIxOjAwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogZml4IG5lZWRlZCB3aGVuIEhUVFAgaXMgbm90IGNvbXBpbGVkIGluIGJ5IE1hcmsgVmFrb2MKLQotV2VkIE9jdCAyOSAxODowNTo1MyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IG1vcmUgZml4ZXMgYWJvdXQgdW5yZWdpc3RlcmluZyBvYmplY3RzCi0JKiBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmg6IGFwcGxpZWQgcGF0Y2ggZnJvbSBNYXJrIFZha29jCi0JICBtaXNzaW5nIF9jcGx1c3BsdXMgcHJvY2Vzc2luZyBjbGF1c2UKLQotV2VkIE9jdCAyOSAwNzo0OTo1MiAyMDAzICBBbGVrc2V5IFNhbmluICA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmggcGFyc2VyLmM6IGFkZGVkIHhtbFN0clZQcmludGYgZnVuY3Rpb24KLQotV2VkIE9jdCAyOSAxNDozNzo0MCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHRlc3RUaHJlYWRzLmMgdGhyZWFkcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20KLQkgIE1hcmNpbiAnU2hhcmQnIEtvbmlja2kgdG8gcHJvdmlkZSBCZU9TIHRocmVhZCBzdXBwb3J0LgotCi1XZWQgT2N0IDI5IDE0OjIwOjE0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDogYXBwbGllZCBwYXRjaAotCSAgZnJvbSBTdGV2ZSBCYWxsIHRvIG1ha2UgYSBzY2hlbWEgcGFyc2VyIGZyb20gYSBwcmVwYXJzZWQgZG9jdW1lbnQuCi0KLVdlZCBPY3QgMjkgMTM6NTI6MjUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgYSBjb3VwbGUgb2YgcGF0Y2hlcyBmcm9tIE1hcmsgTGlsYmFjayBhYm91dCB0ZXh0Ci0JICBub2RlcyBjb2FsZXNjaW5nCi0KLVdlZCBPY3QgMjkgMTI6MTY6NTIgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBjaGFuZ2Ugc3VnZ2VzdGVkIGJ5IEFudGhvbnkgQ2FycmljbyB3aGVuIHVucmVnaXN0ZXJpbmcKLQkgIGEgbmFtZXNwYWNlIHByZWZpeCB0byBhIGNvbnRleHQKLQkqIGhhc2guYzogYmUgbW9yZSBjYXJlZnVsIGFib3V0IGNhbGxpbmcgY2FsbGJhY2tzIHdpdGggTlVMTCBwYXlsb2Fkcy4KLQotV2VkIE9jdCAyOSAwMDowNDoyNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBORVdTIGRvYy8qOiBwcmVwYXJpbmcgcmVsZWFzZSAyLjYuMSwgdXBkYXRlZCBhbmQKLQkgIHJlZ2VuZXJhdGVkIGRvY3MgYW5kIEFQSXMKLQkqIHBhcnNlci5jOiBjbGVhbnVwIGFuZCBsYXN0IGNoYW5nZSB0byBmaXggIzEyMzEwNQotCi1UdWUgT2N0IDI4IDIzOjAyOjI5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBGaXggIzEyNDkwNyBieSBzaW1wbHkgYmFja3BvcnRpbmcgdGhlIHNhbWUKLQkgIGZpeCBhcyBmb3IgdGhlIFhNTCBwYXJzZXIKLQkqIHJlc3VsdC9IVE1ML2RvYzMuaHRtLmVycjogY2hhbmdlIHRvIElEIGRldGVjdGluZyBtb2RpZmllZCBvbmUKLQkgIHRlc3QgcmVzdWx0LgotCi1UdWUgT2N0IDI4IDIyOjI4OjUwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IGluY2x1ZGVkIGEgbmV3IGZ1bmN0aW9uCi0JICB0byByZXVzZSBhIFB1c2ggcGFyc2VyIGNvbnRleHQsIGJhc2VkIG9uIEdyYWhhbSBCZW5uZXR0IG9yaWdpbmFsCi0JICBjb2RlCi0JKiB2YWxpZC5jOiBpbiBIVE1MLCBhIG5hbWUgaW4gYW4gaW5wdXQgaXMgbm90IGFuIElECi0JKiBUT0RPOiBidWcgbGlzdCB1cGRhdGUKLQotVHVlIE9jdCAyOCAxOTo1NDozNyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBuaWNvQHh0cmFkeW5lLmNvbSBmb3IgIzEyNTAzMAotCi1UdWUgT2N0IDI4IDE2OjQyOjE2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IGNsZWFudXAKLQkqIGVycm9yLmMgdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBmaXhpbmcgYnVnICMxMjU2NTMKLQkgIHNvbWV0aW1lcyB0aGUgZXJyb3IgaGFuZGxlcnMgY2FuIGdldCBhIHBhcnNlciBjb250ZXh0IG9uIERURAotCSAgZXJyb3JzLCBhbmQgc29tZXRpbWUgdGhleSBkb24ndC4gU28gYmUgdmVyeSBjYXJlZnVsIHdoZW4gdHJ5aW5nCi0JICB0byBncmFiIHRob3NlIGluZm9ybWF0aW9ucy4KLQotVHVlIE9jdCAyOCAxNToyNjoxOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogYXBwbGllZCBwYXRjaCBmcm9tIEthc2ltaWVyIEJ1Y2hjaWsgd2hpY2ggZml4ZXMgYSAKLQkgIHByb2JsZW0gaW4geG1sU2VhcmNoTnMgaW50cm9kdWNlZCBpbiAyLjYuMAotCi1UdWUgT2N0IDI4IDE0OjU3OjAzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkICMxMjMyNjMsIHRoZSBlbmNvZGluZyBpcyBtYW5kYXRvcnkgaW4gYSB0ZXh0ZGVjbC4KLQotVHVlIE9jdCAyOCAxMzo0ODo1MiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogZml4IGJ1ZyAjMTI1MDQ3IGFib3V0IHNlcmlhbGl6aW5nIHdoZW4gZmluZGluZyBhIAotCSAgZG9jdW1lbnQgZnJhZ21lbnQgbm9kZS4KLQotTW9uIE9jdCAyNyAxMToxMToyOSBFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3RTQVguYzogZml4IGJ1ZyAjMTI1NTkyIG5lZWQgYSBOVUxMIGNoZWNrCi0JKiBpbmNsdWRlL2xpYnhtbC9jaHZhbGlkLmg6IHJlbmFtZSBhIHBhcmFtZXRlcgotCi1Nb24gT2N0IDI3IDA5OjQzOjQ4IEVTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSAjMTIzMTA1IGFib3V0IGRlZmF1bHRlZCBhdHRyaWJ1dGVzCi0JICBmcm9tIGVsZW1lbnQgY29taW5nIGZyb20gYW4gZW50aXR5Ci0KLU1vbiBPY3QgMjcgMjE6MTI6MjcgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbGxpbnQuYzogZml4ZWQgd2FybmluZyBtZXNzYWdlIGZyb20gSVJJWCAoYnVnIDEyNTE4MikKLQkqIHB5dGhvbi9saWJ4bWwucHk6IHJlbW92ZWQgdGFicywgcmVwbGFjZWQgd2l0aCBzcGFjZXMKLQkgIChidWcgMTI1NTcyKQotCi1Nb24gT2N0IDI3IDA2OjE3OjMwIEVTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLmggcGFyc2VySW50ZXJuYWxzLmMgeG1sSU8uYzogbWFrZSBzdXJlIHdlIHJlcG9ydCBlcnJvcnMKLQkgIGlmIHhtbE5ld0lucHV0RnJvbUZpbGUoKSBmYWlscy4KLQkqIHhtbHJlYWRlci5jOiBhdm9pZCB1c2luZyBfcHJpdmF0ZSBmb3IgdGhlIG5vZGUgb3IgZG9jdW1lbnQKLQkgIGVsZW1lbnRzLgotCi1TYXQgT2N0IDI1IDE3OjMzOjU5IENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGFkZGVkIGRlY2xhcmF0aW9uIGZvciB2ZXJNaWNyb1N1ZmZpeAotCi1GcmkgT2N0IDI0IDIzOjA4OjE3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5tNDogYXBwbGllZCBwYXRjaCBmcm9tIFBhdHJpY2sgV2VsY2hlIHByb3ZpZGVkIGluCi0JICBidWcgIzEyNTQzMiAsIGZ1dHVyZSBwcm9vZmluZyB0aGUgLm00IGZpbGUuCi0JKiBwYXJzZXIuYzogcmVzZXR0aW5nIHRoZSBjb250ZXh0IHNob3VsZCBhbHNvIHJlc2V0IHRoZSBlcnJvcgotCSogVE9ETzogcHJvYmxlbSBvZiBjb25mb3JtYW5jZSB3LnIudC4gRTIwIHdhcyByYWlzZWQgaW4gdGhlCi0JICBYTUwgQ29yZSB0ZWxjb25mIGFuZCBsaWJ4bWwyIGlzbid0IGNvbmZvcm1hbnQgdGhlcmUuCi0KLVdlZCBPY3QgMjIgMTQ6MzM6MDUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sd3JpdGVyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBBbGZyZWQgTWlja2F1dHNjaCBmaXhpbmcgIzEyNTE4MAotCi1XZWQgT2N0IDIyIDEwOjUwOjMxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNodmFsaWQuYyBnZW5DaFJhbmdlcy5weTogU3RlcGhhbmUgQmlkb3VsIHBvaW50ZWQgb3V0IGFub3RoZXIKLQkgIHNtYWxsIGdsaXRjaCBtaXNzaW5nIGEgY29uc3QKLQotV2VkIE9jdCAyMiAxMDo0MzoyMSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaHZhbGlkLmMgZ2VuQ2hSYW5nZXMucHk6IFN0ZXBoYW5lIEJpZG91bCBwb2ludGVkIG91dCB0aGF0Ci0JICBpdCBkb2Vzbid0IGRlZmluZSBJTl9MSUJYTUwKLQotVHVlIE9jdCAyMSAyMToxNDo1NSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndzogdHlwbyBwb2ludGVkIG91dCBieSBTdGVwaGFuZSBCaWRvdWwKLQotVHVlIE9jdCAyMSAxMToyNjozNiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5iY2Igd2luMzIvTWFrZWZpbGUubWluZ3cgd2luMzIvTWFrZWZpbGUubXN2YwotCSAgd2luMzIvY29uZmlndXJlLmpzOiBzZXQgb2YgV2luMzIgcGF0Y2hlcyBmb3IgMi42LjAgYnkgSm9hY2hpbSBCYXVjaAotCi1UdWUgT2N0IDIxIDAyOjA3OjIyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogbGFzdCBtaW51dGUgcGF0Y2ggZnJvbSBFcmljIFp1cmNoZXIgbWFraW5nIGl0IGludG8gMi42LjAKLQotVHVlIE9jdCAyMSAwMjowMzowMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gTkVXUyBkb2MvbGlieG1sMi54c2E6IHByZXBhcmluZyBsaWJ4bWwyLTIuNi4wCi0JKiBkb2MvKjogdXBkYXRlZCBhbmQgcmVnZW5lcmF0ZWQgdGhlIGRvY3MgYW5kIEFQSQotCi1UdWUgT2N0IDIxIDAxOjAxOjU1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWDIuYyBlcnJvci5jIHRyZWUuYzogbW92ZWQgdGhlIGxpbmUgbnVtYmVyIHRvIHRoZWlyIHByb3BlcgotCSAgZmllbGQgaW4gZWxlbWVudHMgbm93LgotCi1UdWUgT2N0IDIxIDAwOjI4OjIwIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWx3cml0ZXIuYyBNYWtlZmlsZS5hbSBpbmNsdWRlL2xpYnhtbC94bWx3cml0ZXIuaAotCSAgaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0gaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgYWRkZWQgdGhlIHhtbFdyaXRlciBtb2R1bGUgY29udHJpYnV0ZWQgYnkgQWxmcmVkIE1pY2thdXRzY2gKLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogYWRkZWQgcm9vbSBmb3IgbGluZSBhbmQgZXh0cmEgaW5mb3JtYXRpb24KLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXI2LnB5OiBidWdmaXhpbmcgc29tZSBwcm9ibGVtIHNvbWUKLQkgIG9mIHRoZW0gaW50cm9kdWNlZCBpbiBTZXB0ZW1iZXIKLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYyBkb2MvbGlieG1sMi1hcGkueG1sOiByZWdlbmVyYXRlZCB0aGUgQVBJCi0KLU1vbiBPY3QgMjAgMTk6MDI6NTMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluIHhtbGR3YWxrLmMgeG1scmVhZGVyLmMKLQkgIGluY2x1ZGUvbGlieG1sL01ha2VmaWxlLmFtIGluY2x1ZGUvbGlieG1sL3htbGR3YWxrLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbjogcmVtb3ZpbmcgeG1sZHdhbGsgbW9kdWxlCi0JICBzaW5jZSBpdCBnb3QgbWVyZ2VkIHdpdGggdGhlIHhtbHJlYWRlci4KLQkqIHBhcnNlci5jOiBjbGVhbnVwCi0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmMgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgZG9jL2xpYnhtbDItYXBpLnhtbDoKLQkgIHJlYnVpbHQgdGhlIEFQSQotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9yZWFkZXI3LnB5Ci0JICBweXRob24vdGVzdHMvd2Fsa2VyLnB5OiBhZGRpbmcgcmVncmVzc2lvbiB0ZXN0aW5nIGZvciB0aGUKLQkgIG5ldyB4bWxyZWFkZXIgQVBJcywgbmV3IEFQSXMgZm9yIHJlYWRlciBjcmVhdGlvbiwgaW5jbHVkaW5nCi0JICBtYWtlaW5nIHJlYWRlciAid2Fsa2VyIiBvcGVyYXRpbmcgb24gcHJlcGFyc2VkIGRvY3VtZW50IHRyZWVzLgotCi1TdW4gT2N0IDIwIDIyOjM3OjAzIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlbnRpdGllcy5jLCB2YWxpZC5jOiBmaXhlZCBwcm9ibGVtIHJlcG9ydGVkIG9uIHRoZSBtYWlsaW5nCi0JICBsaXN0IGJ5IE1lbHZ5biBTb3BhY3VhIC0gd3JvbmcgYXJndW1lbnQgb3JkZXIgb24gZnVuY3Rpb25zCi0JICBjYWxsZWQgdGhyb3VnaCB4bWxIYXNoU2Nhbi4KLQotU3VuIE9jdCAxOSAyMzo1Nzo0NSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jIHhtbElPLmM6IGZpeGVzIGZvciBjb21waWxpbmcgdXNpbmcgLS13aXRoLW1pbmltdW0KLQotU3VuIE9jdCAxOSAyMzo0NjowNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGNsZWFudXAgeG1sTm9kZUdldENvbnRlbnQoKSByZXVzaW5nIHhtbE5vZGVCdWZHZXRDb250ZW50KCksCi0JICB0ZXN0ZWQgaXQgdGhyb3VnaCB0aGUgeHNsdCByZWdyZXNzaW9uIHN1aXRlLgotCi1TdW4gT2N0IDE5IDIyOjQyOjE2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IGFkZGluZyB4bWxOb2RlQnVmR2V0Q29udGVudCgpCi0JICBhbGxvd2luZyB0byBncmFiIHRoZSBjb250ZW50IHdpdGhvdXQgZm9yY2luZyBhbGxvY2F0aW9ucy4KLQkqIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0IGRvYy9saWJ4bWwyLWFwaS54bWw6IHJlYnVpbHQgdGhlIEFQSQotCSogeHBhdGguYyB4bWxkd2Fsay5jOiByZW1vdmVkIGEgY291cGxlIG9mIGNvbW1lbnQgZXJyb3JzLgotCi1TdW4gT2N0IDE5IDE2OjM5OjM2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQ2hyaXMgQW5kZXJzb24gdG8gY2hhbmdlIGJhY2sKLQkgIG1lbWNtcCB3aXRoIENNUHgoKQotCi1TdW4gT2N0IDE5IDE2OjI0OjE5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgdG8gbm90IHNlbmQgTlVMTCB0byAlcyBwcmludGluZwotCSogcHl0aG9uL3Rlc3RzL2Vycm9yLnB5IHJlc3VsdC9IVE1ML2RvYzMuaHRtLmVycgotCSAgcmVzdWx0L0hUTUwvdGVzdDMuaHRtbC5lcnIgcmVzdWx0L0hUTUwvd2lyZWQuaHRtbC5lcnIKLQkgIHJlc3VsdC92YWxpZC90OC54bWwuZXJyIHJlc3VsdC92YWxpZC90OGEueG1sLmVycjogY2xlYW5pbmcKLQkgIHVwIHNvbWUgb2YgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZXJyb3IKLQotU3VuIE9jdCAxOSAxNTozMTo0MyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9uYW5vaHR0cC5oIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oIAotCSAgaW5jbHVkZS9saWJ4bWwveG1sSU8uaCBuYW5vaHR0cC5jIHBhcnNlckludGVybmFscy5jIHhtbElPLmM6Ci0JICBGaXhlZCB0aGUgSFRUUDwtPnBhcnNlciBpbnRlcnJhY3Rpb24sIHdoaWNoIHNob3VsZCBmaXggMiBsb25nCi0JICBzdGFuZGluZyBidWdzICMxMDQ3OTAgYW5kICMxMjQwNTQgLCB0aGlzIGFsc28gZml4IHRoZSBmYWN0IHRoYXQKLQkgIEhUVFAgZXJyb3IgY29kZSAoPiA0MDApIHNob3VsZCBub3QgZ2VuZXJhdGUgZGF0YSwgd2UgdXN1YWxseQotCSAgZG9uJ3Qgd2FudCB0byBwYXJzZSB0aGUgSFRNTCBlcnJvciBpbmZvcm1hdGlvbiBpbnN0ZWFkIG9mIHRoZQotCSAgcmVzb3VyY2UgbG9va2VkIGF0LgotCi1TdW4gT2N0IDE5IDE5OjIwOjQ4IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBkb2MvTWFrZWZpbGUuYW06IGVuaGFuY2VkIHRoZSBpbnN0YWxsYXRpb24gb2YgdHV0b3JpYWwgZmlsZXMKLQkgIHRvIGF2b2lkIGluc3RhbGxpbmcgQ1ZTIHN1YmRpcmVjdG9yaWVzIChidWcgMTIyOTQzKQotCi1TdW4gT2N0IDE5IDE3OjMzOjI3IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4bWxJTy5jOiBmaXhlZCBzZWdmYXVsdCB3aGVuIGlucHV0IGZpbGUgbm90IHByZXNlbnQKLQkqIHRyZWUuYzogY2hhbmdlZCBvdXRwdXQgZm9ybWF0dGluZyBvZiBYTUxfQ0RBVEFfU0VDVElPTgotCSAgKGJ1ZyAxMjA5MTcpCi0KLVN1biBPY3QgMTkgMDA6MTU6MzggSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oIEhUTUxwYXJzZXIuYyBIVE1MdHJlZS5jCi0JICBTQVgyLmMgY2F0YWxvZy5jIGRlYnVnWE1MLmMgZW50aXRpZXMuYyBwYXJzZXIuYyByZWxheG5nLmMKLQkgIHRlc3RTQVguYyB0cmVlLmMgdmFsaWQuYyB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMKLQkgIHhwYXRoLmM6IENoYW5nZWQgYWxsICg/KSBvY2N1cmVuY2VzIHdoZXJlIHZhbGlkYXRpb24gbWFjcm9zCi0JICAoSVNfeHh4KSBoYWQgc2luZ2xlLWJ5dGUgYXJndW1lbnRzIHRvIHVzZSBJU194eHhfQ0ggaW5zdGVhZAotCSAgKGUuZy4gSVNfQkxBTksgY2hhbmdlZCB0byBJU19CTEFOS19DSCkuICBUaGlzIGdldHMgcmlkIG9mCi0JICBtYW55IHdhcm5pbmcgbWVzc2FnZXMgb24gY2VydGFpbiBwbGF0Zm9ybXMsIGFuZCBhbHNvIGhpZ2gtCi0JICBsaWdodHMgcGxhY2VzIGluIHRoZSBsaWJyYXJ5IHdoaWNoIG1heSBuZWVkIHRvIGJlIGVuaGFuY2VkCi0JICBmb3IgcHJvcGVyIFVURjggaGFuZGxpbmcuCi0KLVNhdCBPY3QgMTggMjA6MzQ6MTggSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGdlbkNoUmFuZ2VzLnB5LCBjaHZhbGlkLmMsIGluY2x1ZGUvbGlieG1sL2NodmFsaWQuaCwKLQkgIGRvYy9hcGlidWlsZC5weTogZW5oYW5jZWQgdG8gaW5jbHVkZSBlbm91Z2ggY29tbWVudHMgdG8KLQkgIG1ha2UgdGhlIGFwaSBkb2MgZ2VuZXJhdGlvbiBoYXBweS4KLQotU2F0IE9jdCAxOCAwNzoyODoyNSBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9odHRwLmMgeG1sSU8uYyBpbmNsdWRlL2xpYnhtbC9uYW5vaHR0cC5oOiBzdGFydGluZyB3b3JrCi0JICB0byBmaXggdGhlIEhUVFAvWE1MIHBhcnNlciBpbnRlZ3JhdGlvbi4KLQotU2F0IE9jdCAxOCAxMTowNDozMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaDogYWRkZWQgbmV3IEFQSXMKLQkgIGZvciBjcmVhdGluZyByZWFkZXIgZnJvbSBzb3VyY2VzIG9yIHJldXNpbmcgYSByZWFkZXIgd2l0aAotCSAgYSBuZXcgc291cmNlLCBsaWtlIHRoZSB4bWxSZWFkeHggYW5kIHhtbEN0eHRSZWFkeHh4Ci0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmMgZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvYXBpYnVpbGQucHkKLQkgIGRvYy9NYWtlZmlsZS5hbTogcmVnZW5lcmF0ZWQgdGhlIEFQSXMKLQkqIGRvYy94bWwuaHRtbDogYXBwbGllZCBhIHBhdGNoIGZyb20gU3RlZmFuIEtvc3QgZm9yIG5hbWVzYXBjZSBkb2NzCi0KLVNhdCBPY3QgMTggMTI6NDY6MDIgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGdlbkNoUmFuZ2VzLnB5LCBjaHZhbGlkLmMsIGluY2x1ZGUvbGlieG1sL2NodmFsaWQuaCwKLQkgIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oOiBlbmhhbmNlZCBtYWNyb3MgdG8gYXZvaWQKLQkgIGJyZWFraW5nIEFCSSBmcm9tIHByZXZpb3VzIHZlcnNpb25zLgotCSogY2F0YWxvZy5jLCBwYXJzZXIuYywgdHJlZS5jOiBtb2RpZmllZCB0byB1c2UgSVNfKiBtYWNyb3MKLQkgIGRlZmluZWQgaW4gcGFyc2VySW50ZXJuYWxzLmguICBNYWtlcyBtYWludGVuYW5jZSBtdWNoIGVhc2llci4KLQkqIHRlc3RIVE1MLmMsIHRlc3RTQVguYywgcHl0aG9uL2xpYnhtbC5jOiBtaW5vciBmaXhlcyB0byBhdm9pZAotCSAgY29tcGlsYXRpb24gd2FybmluZ3MKLQkqIGNvbmZpZ3VyYXRpb24uaW46IGZpeGVkIHB1c2hIVE1MIHRlc3QgZXJyb3I7IGVuaGFuY2VkIGZvcgotCSAgYmV0dGVyIGRldmVsIChtZSkgdGVzdGluZwotCi1GcmkgT2N0IDE3IDE0OjM4OjU0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxlZ2FjeS5jOiByZW1vdmUgdGhlIHdhcm5pbmcgZm9yIHN0YXJ0RG9jdW1lbnQoKSwgYXMgaXQgaXMgdXNlZCBieQotCSAgZ2xhZGUgKG9yIGdsYWRlLXB5dGhvbikKLQkqIHBhcnNlci5jIHJlbGF4bmcuYyB4bWxzY2hlbWFzdHlwZXMuYzogZml4ZWQgYW4gYXNzb3J0ZWQgc2V0IG9mCi0JICBpbnZhbGlkIGFjY2Vzc2VzIGZvdW5kIGJ5IHJ1bm5pbmcgc29tZSBQeXRob24gYmFzZWQgcmVncmVzc2lvbgotCSAgdGVzdHMgdW5kZXIgdmFsZ3JpbmQuIFRoZXJlIGlzIHN0aWxsIGEgZmV3IGxlYWtzIHJlcG9ydGVkIGJ5IHRoZQotCSAgcmVsYXhuZyByZWdyZXNzaW9ucyB3aGljaCBuZWVkIHNvbWUgYXR0ZW50aW9uLgotCSogZG9jL01ha2VmaWxlLmFtOiBmaXhlZCBhIG1ha2UgaW5zdGFsbCBwcm9ibGVtIGMuZi4gIzEyNDUzOQotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmg6IGFkZGl0aW9uIG9mIHhtbFBhcnNlck1heERlcHRoCi0JICBwYXRjaCBmcm9tIGNydXRjaGVyCi0KLVdlZCBPY3QgMTUgMTI6NDc6MzMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IE1hcmMgTGl5YW5hZ2UgcG9pbnRlZCBvdXQgdGhhdCB4bWxDbGVhbnVwUGFyc2VyKCkKLQkgIHdhcyBtaXNzaW5nIHhtbENsZWFudXBJbnB1dENhbGxiYWNrcyBhbmQgeG1sQ2xlYW51cE91dHB1dENhbGxiYWNrcwotCSAgY2FsbHMuCi0KLVdlZCBPY3QgMTUgMTA6MTY6NDcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdm1zL2J1aWxkX2xpYnhtbC5jb20gdHJpb25hbi5jOiBWTVMgcGF0Y2ggZnJvbSBDcmFpZyBBLiBCZXJyeQotCi1Nb24gT2N0IDEzIDIxOjQ2OjI1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBzbWFsbCBmaXggZnJvbSBCam9ybiBSZWVzZQotCi1Nb24gT2N0IDEzIDE1OjU5OjI1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeCBhIGNhbGwgbWlzc2luZyBhcmd1bWVudHMKLQotU3VuIE9jdCAxMiAxODo0MjoxOCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZ2VuQ2hSYW5nZXMucHksIGNodmFsaWQuYywgaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oOiBmaXhlZAotCSAgYSBidWcgaW4gdGhlIHJhbmdlIHNlYXJjaDsgZW5oYW5jZWQgcmFuZ2UgZ2VuZXJhdGlvbiAoaW5saW5lIGNvZGUKLQkgIGlmIGEgc21hbGwgbnVtYmVyIG9mIGludGVydmFscyk7IGVuaGFuY2VkIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUKLQkgIG91dHB1dCBmaWxlcy4KLQotU3VuIE9jdCAxMiAwMDo1MjoxNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaHZhbGlkLmRlZiBjaHZhbGlkLmMgaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oOiByZWJ1aWx0IAotCSAgY2h2YWxpZC5kZWYgZnJvbSBzY3JhdGNoIGJhc2VkIG9uIFhNTCAybmQgZWRpdGlvbiBSRUMKLQkgIGFuZCByZWdlbmVyYXRlZCB0aGUgY29kZS4KLQotU2F0IE9jdCAxMSAyMjo1NDoxMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaGVjay14bWwtdGVzdC1zdWl0ZS5weTogcmVtb3ZlZCBzb21lIGFubm95aW5nIHdhcm5pbmdzCi0JKiBjaHZhbGlkLmRlZiBjaHZhbGlkLmMgaW5jbHVkZS9saWJ4bWwvY2h2YWxpZC5oOiBmaXhlZCBhIGJ1ZwotCSAgaW4gdGhlIFB1YmlkQ2hhcnMgZGVmaW5pdGlvbiwgcmVnZW5lcmF0ZWQsIHRoZXJlIGlzIHN0aWxsCi0JICBhIGJ1ZyBsZWZ0IHNvbWV3aGVyZQotCSogZ2VuQ2hSYW5nZXMucHk6IHNhdmUgdGhlIGhlYWRlciBkaXJlY3RseSBpbiBpbmNsdWRlL2xpYnhtbC8KLQkqIGNvbmZpZ3VyZS5pbjogSSBnZW5lcmF0ZWQgYSAyLjYuMGJldGE2IGVhcmxpZXIgdG9kYXkKLQotU2F0IE9jdCAxMSAyMzozMjo0NyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZml4ZWQgc21hbGwgZXJyb3Igb24gcHJldmlvdXMgY29tbWl0IChjaHZhbGlkLmggaW4KLQkgIGJhc2UgZGlyIGluc3RlYWQgb2YgaW5jbHVkZSBkaXJlY3RvcnkpCi0KLVNhdCBPY3QgMTEgMjM6MTE6MjIgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGdlbkNoUmFuZ2UucHksIGNodmFsaWQuZGVmLCBjaHZhbGlkLmMsIGluY2x1ZGUvbGlieG1sL2NodmFsaWQuaDoKLQkgIG5ldyBmaWxlcyBmb3IgYSBkaWZmZXJlbnQgbWV0aG9kIGZvciBkb2luZyByYW5nZSB2YWxpZGF0aW9uCi0JICBvZiBjaGFyYWN0ZXIgZGF0YS4KLQkqIE1ha2VmaWxlLmFtLCBwYXJzZXJJbnRlcm5hbHMuYywgaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0sCi0JICBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaDogbW9kaWZpZWQgZm9yIG5ldyByYW5nZSBtZXRob2QuCi0JKiBjYXRhbG9nLmM6IHNtYWxsIGVuaGFuY2UgZm9yIHdhcm5pbmcgbWVzc2FnZSAodXNpbmcgb25lCi0JICBvZiB0aGUgbmV3IHJhbmdlIHJvdXRpbmVzKQotCi1TYXQgT2N0IDExIDEzOjI0OjU3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmMgaW5jbHVkZS9saWJ4bWwvdmFsaWQuaDogYWRkaW5nIGFuIHNlcnJvciBmaWVsZCB0bwotCSAgdGhlIHZhbGlkYXRpb24gY29udGV4dCBicmVha3MgdGhlIEFCSSBmb3IgdGhlIHhtbFBhcnNlckN0eHQKLQkgIHN0cnVjdHVyZSBzaW5jZSBpdCdzIGVtYmVkZGVkIGJ5IGNvbnRlbnQgYW5kIG5vdCBieSByZWZlcmVuY2UKLQotU2F0IE9jdCAxMSAxMjo0Njo0OSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHBhdGNoIGZyb20gTWlrZSBIb21tZXkKLQkqIHRocmVhZHMuYzogYXBwbGllZCBXaW5kb3dzIHBhdGNoIGZyb20gSmVzc2UgUGVsdG9uIGFuZCBTdGVwaGFuZQotCSAgQmlkb3VsCi0JKiBwYXJzZXIuYzogZml4IHRoZSBwb3RlbnRpYWxseSBuYXN0eSBhY2Nlc3MgdG8gY3R4dC0+c2Vycm9yCi0JICB3aXRob3V0IGNoZWNraW5nIGZpcnN0IHRoYXQgdGhlIFNBWCBibG9jayBpcyB2ZXJzaW9uIDIKLQotRnJpIE9jdCAxMCAyMTozNDowMSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmM6IGZpeGVkIGEgbmFzdHkgYnVnIHdpdGggaW50ZXJuaW5nIHNvbWUgdGV4dCBzdHJpbmdzCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmUgZm9yIGJldGE1IG9mIDIuNi4wCi0JKiBsaWJ4bWwuaCBuYW5vZnRwLmMgbmFub2h0dHAuYyB4bWxJTy5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6Ci0JICBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcgZm9yIEkvTyBhbmQgY29udmVydGVkIEZUUCBhbmQgSFRUUAotCSogcGFyc2VyLmM6IGZpeGVkIGFub3RoZXIgYnVnCi0KLUZyaSBPY3QgMTAgMTY6NDU6MjAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jOiBmaXhlZCB1bmluaXRpYWxpemVkIG5ldyBmaWVsZC4KLQkqIHJlc3VsdC9WQy9PbmVJRDIgcmVzdWx0L3JlbGF4bmcvKi5lcnI6IGZpeGVkIGEgdHlwbyB1cGRhdGluZwotCSAgYWxsIG1lc3NhZ2VzCi0KLUZyaSBPY3QgMTAgMTY6MTk6MTcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBtYWtlIHJvb20gaW4gRG9jLCBFbGVtZW50LCBBdHRyaWJ1dGVzCi0JICBmb3IgUFNWSSB0eXBlIGluZm9ybWF0aW9ucy4KLQotRnJpIE9jdCAxMCAxNjowODowMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgYzE0bi5jIGNhdGFsb2cuYyBlcnJvci5jIGdsb2JhbHMuYyBwYXJzZXIuYwotCSAgcGFyc2VySW50ZXJuYWxzLmMgcmVsYXhuZy5jIHZhbGlkLmMgeGluY2x1ZGUuYyB4bWxJTy5jIHhtbHJlZ2V4cC5jCi0JICB4bWxzY2hlbWFzLmMgeHBhdGguYyB4cG9pbnRlci5jIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmggaW5jbHVkZS9saWJ4bWwvdmFsaWQuaCAKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IFNldHRpbmcgdXAgdGhlIGZyYW1ld29yayBmb3Igc3RydWN0dXJlZAotCSAgZXJyb3IgcmVwb3J0aW5nLCB0b3VjaGVzIGEgbG90IG9mIG1vZHVsZXMsIGJ1dCBsaXR0bGUgY29kZSBub3cKLQkgIHRoZSBlcnJvciBoYW5kbGluZyB0cmFpbCBoYXMgYmVlbiBjbGVhbmVkIHVwLgotCi1GcmkgT2N0IDEwIDE0OjI5OjQyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGMxNG4uYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBjb252ZXJ0ZWQgdGhlIEMxNE4gbW9kdWxlIHRvbwotCi1GcmkgT2N0IDEwIDEzOjQwOjUxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGNsZWFudXAKLQkqIHhwb2ludGVyLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogbWlncmF0ZWQgWFBvaW50ZXIgbW9kdWxlCi0JICB0byB0aGUgbmV3IGVycm9yIG1lY2hhbmlzbQotCi1GcmkgT2N0IDEwIDEyOjQ5OjUzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVycm9yLmMgeG1sc2NoZW1hcy5jOiBhIGJpdCBvZiBjbGVhbnVwCi0JKiByZXN1bHQvc2NoZW1hcy8qLmVycjogdXBkYXRlZCB3aXRoIHRoZSBuZXcgcmVzdWx0IHN0cmluZ3MKLQotRnJpIE9jdCAxMCAwMzo1ODozOSBQRFQgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogZml4ZWQgYnVnIDEyNDA2MQotCi1GcmkgT2N0IDEwIDAyOjQ3OjIyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBjbGVhbnVwCi0JKiBlbmNvZGluZy5jOiBmaXggYSBmdW5ueSB0eXBvCi0JKiBlcnJvci5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOgotCSAgY29udmVydGVkIHRoZSBTY2hlbWFzIGNvZGUgdG8gdGhlIG5ldyBlcnJvciBoYW5kbGluZy4gUElUQSwKLQkgIHN0aWxsIG5lZWQgdG8gY2hlY2sgb3V0cHV0IGZyb20gcmVncmVzc2lvbiB0ZXN0cy4KLQotVGh1IE9jdCAgOSAxNToxMzo1MyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1MdHJlZS5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGNvbnZlcnRlZCB0b28KLQkqIHRyZWUuYzogc21hbGwgY2xlYW51cAotCi1UaHUgT2N0ICA5IDEzOjQ0OjU3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmM6IGNvbW1lbnQgZml4Ci0JKiBjYXRhbG9nLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogbWlncmF0aW5nIHRoZSBjYXRhbG9nIGNvZGUKLQkgIHRvIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUKLQotVGh1IE9jdCAgOSAwMDozNjowMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBmaW5hbCBlcnJvciBoYW5kbGluZyBjbGVhbnVwCi0JKiB4aW5jbHVkZS5jIGVycm9yLmM6IGNvbnZlcnRlZCBYSW5jbHVkZSB0byB0aGUgbmV3IGVycm9yIGhhbmRsaW5nCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhZGRlZCBYSW5jbHVkZSBlcnJvcnMKLQotV2VkIE9jdCAgOCAyMzozMToyMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogYnVnIGluIGNvbXByZXNzaW9uIHNhdmluZyB3YXMgY3Jhc2hpbmcgZ2FsZW9uCi0JICByZXBvcnRlZCBieSB0ZXVmCi0KLVdlZCBPY3QgIDggMjE6MTg6MTIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYyB0cmVlLmMgeG1sSU8uYyB4bWxsaW50LmM6IG1vcmUgY2xlYW51cCB0aHJvdWdoIHRoZQotCSAgSS9PIGVycm9yIHBhdGgKLQotV2VkIE9jdCAgOCAyMDo1NzoyNyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBiZXR0ZXIgaGFuZGxpbmcgb2YgZXJyb3IgY2FzZXMKLQotV2VkIE9jdCAgOCAxMzo1MToxNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jIHhtbGxpbnQuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBmaXJzdCBwYXNzIGF0Ci0JICBjbGVhbmluZyB1cCBlcnJvciBoYW5kbGluZyBpbiB0aGUgSS9PIG1vZHVsZS4KLQotV2VkIE9jdCAgOCAxMDo1MjowNSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBlcnJvciBoYW5kbGluZwotCSAgY2xlYW51cCBvZiB0aGUgUmVnZXhwIG1vZHVsZS4KLQotV2VkIE9jdCAgOCAwMTowOTowNSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGNvbnZlcnRpbmcgdGhlIHRyZWUgbW9kdWxlIHRvbwotCSogZXJyb3IuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBjcmVhdGVkIGEgc2ltcGxlciBpbnRlcm5hbAotCSAgZXJyb3IgcmVwb3J0aW5nIGZ1bmN0aW9uLgotCi1UdWUgT2N0ICA3IDIzOjE5OjM5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVycm9yLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBpbmNsdWRlL2xpYnhtbC94cGF0aC5oCi0JICBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oIHhwYXRoLmM6IGNsZWFuaW5nIHVwIFhQYXRoCi0JICBlcnJvciByZXBvcnRpbmcgdGhhdCB0aW1lLiAKLQkqIHRocmVhZHMuYzogYXBwbGllZCB0aGUgdHdvIHBhdGNoZXMgZm9yIFRMUyB0aHJlYWRzCi0JICBvbiBXaW5kb3dzIGZyb20gSmVzc2UgUGVsdG9uCi0JKiBwYXJzZXIuYzogdGlueSBzYWZldHkgcGF0Y2ggZm9yIHhtbFN0clByaW50ZigpIG1ha2Ugc3VyZSB0aGUKLQkgIHJldHVybiBpcyBhbHdheXMgemVybyB0ZXJtaW5hdGVkLiBTaG91bGQgYWxzbyBoZWxwIGRldGVjdGluZwotCSAgcGFzc2luZyB3cm9uZyBidWZmZXIgc2l6ZSBlYXNpbGx5LgotCSogcmVzdWx0L1ZDLyogcmVzdWx0L3ZhbGlkL3Jzcy54bWwuZXJyIHJlc3VsdC92YWxpZC94bGluay54bWwuZXJyOgotCSAgdXBkYXRlZCB0aGUgcmVzdWx0cyB0byBmb2xsb3cgdGhlIGVycm9ycyBzdHJpbmcgZ2VuZXJhdGVkIGJ5Ci0JICBsYXN0IGNvbW1pdC4KLQotVHVlIE9jdCAgNyAxNDoxNjo0NSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmMgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogbGFzdCBjbGVhbnVwIG9mIGVycm9yCi0JICBoYW5kbGluZyBpbiB0aGUgUmVsYXgtTkcgbW9kdWxlLgotCi1UdWUgT2N0ICA3IDEzOjMwOjM5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVycm9yLmMgcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IHN3aXRjaGVkIFJlbGF4LU5HCi0JICBtb2R1bGUgdG8gdGVoIG5ldyBlcnJvciByZXBvcnRpbmcuIEJldHRlciBkZWZhdWx0IHJlcG9ydCwgYWRkcwotCSAgdGhlIGVsZW1lbnQgYXNzb2NpYXRlZCBpZiBmb3VuZCwgY29udGV4dCBhbmQgbm9kZSBhcmUgaW5jbHVkZWQKLQkgIGluIHRoZSB4bWxFcnJvcgotCSogcHl0aG9uL3Rlc3RzL3JlYWRlcjIucHk6IHRoZSBlcnJvciBtZXNzYWdlcyBjaGFuZ2VkLgotCSogcmVzdWx0L3JlbGF4bmcvKjogZXJyb3IgbWVzc2FnZSBjaGFuZ2VkIHRvby4KLQotTW9uIE9jdCAgNiAxMDo0NjozNSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5iY2Igd2luMzIvTWFrZWZpbGUubWluZ3cgd2luMzIvTWFrZWZpbGUubXN2YwotCSAgd2luMzIvY29uZmlndXJlLmpzOiBhcHBsaWVkIHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIHRvCi0JICBmaXggdGhlIGNvbXBpbGF0aW9uIG9mIDIuNi4wIGNvZGUgb24gV2luMzIKLQotTW9uIE9jdCAgNiAxMDoxNjozMCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaGVjay14bWwtdGVzdC1zdWl0ZS5weTogZml4aW5nIHRoZSBzY3JpcHQKLQkqIHBhcnNlci5jOiByZXBsYWNlIHNlcXVlbmNlcyBvZiBSQVcgJiYgTlhUKC4pID09ICcuJyB3aXRoCi0JICBtZW1jbXAgY2FsbHMsIHNlZW1zIHRvIG5vdCBicmVhayBjb25mb3JtYW5jZSwgc2xpZ2h0bHkgaW5mbGF0ZQotCSAgdGhlIHNpemUgb2YgdGhlIGdjYyBnZW5lcmF0ZWQgY29kZSB0aG91Z2guCi0KLVN1biBPY3QgIDUgMjM6MzA6NDggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VySW50ZXJuYWxzLmMgcGFyc2VyLmMgdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaDoKLQkgIG1vcmUgY2xlYW51cCBvZiBlcnJvciBoYW5kbGluZyBpbiBwYXJzZXJJbnRlcm5hbHMsIHNoYXJpbmcgdGhlCi0JICByb3V0aW5lIGZvciBtZW1vcnkgZXJyb3JzLgotCi1TdW4gT2N0ICA1IDE1OjQ5OjE0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBNYWtlZmlsZS5hbSBsZWdhY3kuYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYwotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaDogbW9yZSBjb2RlIGNsZWFudXAsIGVzcGVjaWFsbHkgYXJvdW5kCi0JICBlcnJvciBtZXNzYWdlcywgdGhlIEhUTUwgcGFyc2VyIGhhcyBub3cgYmVlbiB1cGdyYWRlZCB0byB0aGUgbmV3Ci0JICBoYW5kbGluZy4KLQkqIHJlc3VsdC9IVE1MLyo6IGEgZmV3IGNoYW5nZXMgaW4gdGhlIHJlc3VsdGluZyBlcnJvciBtZXNzYWdlcwotCi1TYXQgT2N0ICA0IDIzOjA2OjQxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IG1vcmUgZXJyb3Ivd2FybmluZwotCSAgaGFuZGxpbmcgY2xlYW51cHMsIHRoZSBYTUwgcGFyc2VyIG1vZHVsZSBzaG91bGQgYmUgb2theSBub3cuCi0KLVNhdCBPY3QgIDQgMDE6NTg6MjcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluIHhtbGR3YWxrLmMgaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0KLQkgIGluY2x1ZGUvbGlieG1sL3htbGR3YWxrLmggaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgaW50ZWdyYXRlZCB0aGUgeG1sRG9jV2Fsa2VyIEFQSSBnaXZlbiBieSBBbGZyZWQgTWlja2F1dHNjaCwKLQkgIGFuZCBwcm92aWRpbmcgYW4geG1sUmVhZGVyIGxpa2UgQVBJIGJ1dCB3b3JraW5nIG9uIGEgeG1sRG9jUHRyLgotCi1TYXQgT2N0ICA0IDAwOjE4OjI5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBtb3JlIGNsZWFudXAgaW4gbWFrZSB0ZXN0cwotCSogZXJyb3IuYyB2YWxpZC5jIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IG1vcmUgd29yawotCSAgaW4gdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBlcnJvciByZXBvcnRpbmcgc3RyYXRlZ3kuCi0JKiBweXRob24vdGVzdHMvcmVhZGVyMi5weSAgcmVzdWx0L1ZDLyogcmVzdWx0L3ZhbGlkLyo6Ci0JICBmZXcgY2hhbmdlcyBpbiB0aGUgc3RyaW5ncyBnZW5lcmF0ZWQgYnkgdGhlIHZhbGlkYXRpb24gb3V0cHV0Ci0KLUZyaSBPY3QgIDMgMDA6MTk6MDIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IGNoYW5nZWQgJ21ha2UgdGVzdHMnIHRvIHVzZSBhIGNvbmNpc2Ugb3V0cHV0LAotCSAgc2Nyb2xsaW5nIHRvIHNlZSB3aGVyZSB0aGluZyBicm9rZSB3YXNuJ3QgcGxlYXNhbnQKLQkqIGNvbmZpZ3VyZS5pbjogc29tZSBiZXRhNCBwcmVwYXJhdGlvbiwgYnV0IG5vdCByZWFkeSB5ZXQKLQkqIGVycm9yLmMgZ2xvYmFscy5jIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOgotCSAgbmV3IGVycm9yIGhhbmRsaW5nIGNvZGUsIGxhc3QgZXJyb3IgaW5mb3JtYXRpb25zIGFyZSBzdG9yZWQKLQkgIGluIHRoZSBwYXJzaW5nIGNvbnRleHQgb3IgYSBnbG9iYWwgdmFyaWFibGUsIG5ldyBBUElzIHRvCi0JICBoYW5kbGUgdGhlIHhtbEVycm9yUHRyIHR5cGUuCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB2YWxpZC5jIDogc3RhcnRlZCBtaWdyYXRpbmcgdG8gdGhlCi0JICBuZXcgZXJyb3IgaGFuZGxpbmcgY29kZSwgaXQncyBhIHJveWFsIHBhaW4uCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaDoKLQkgIG1vdmVkIHRoZSBkZWZpbml0aW9uIG9mIHhtbE5ld1BhcnNlckN0eHQoKQotCSogcGFyc2VyLmM6IHNtYWxsIHBvdGVudGlhbCBidWZmZXIgYWNjZXNzIHByb2JsZW0gaW4gcHVzaCBjb2RlCi0JICBwcm92aWRlZCBieSBKdXN0aW4gRmxldGNoZXIKLQkqIHJlc3VsdC8qLnNheCByZXN1bHQvVkMvUEVOZXN0aW5nKiByZXN1bHQvbmFtZXNwYWNlcy8qCi0JICByZXN1bHQvdmFsaWQvKi5lcnI6IHNvbWUgZXJyb3IgbWVzc2FnZXMgd2VyZSBzbGlndGhseSBjaGFuZ2VkLgotCi1UaHUgT2N0ICAyIDEzOjAxOjEzIDIwMDMgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBwYXJzZXIuYzogaW50cm9kdWNlZCB4bWxTdHJQcmludGYKLQlmdW5jdGlvbiAod3JhcHBlciBhcm91bmQgc25wcmludGYpCi0KLVdlZCBPY3QgIDEgMjE6MTI6MDYgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW50aXRpZXMuYzogRml4IGVycm9yIG9uIG91dHB1dCBvZiBoaWdoIGNvZGVwb2ludCBjaGFycmVmIGxpa2UKLQkgICYjeDEwRkZGRjsgLCByZXBvcnRlZCBieSBFcmljIEhhbmNocm93Ci0KLVdlZCBPY3QgIDEgMTQ6MjA6MTAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogRE9DQnBhcnNlci5jIGluY2x1ZGUvbGlieG1sL0RPQ0JwYXJzZXIuaDogbGV0J3Mgc2VlIGhvdyBtdWNoCi0JICBvZiBhIHBhaW4gbXVycmF5YyBpcyByZWFsbHkgZ29ubmEgYmUuCi0KLVdlZCBPY3QgIDEgMTE6MDM6NDAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IEFwcGxpZWQgZml4IGZvciBidWcgIzEyMzQ4MSByZXBvcnRlZCBieSBQZXRlciBEZXJyCi0KLVR1ZSBTZXAgMzAgMTU6MzQ6MzEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW50aXRpZXMuYyBsZWdhY3kuYyBwYXJzZXIuYzogbWFkZSB0aGUgcHJlZGVmaW5lZCBlbnRpdGllcwotCSAgc3RhdGljIHByZWRlZmluZWQgc3RydWN0dXJlcyB0byBhdm9pZCB0aGUgd29yaywgbWVtb3J5IGFuZAotCSAgaGF6YXJkcyBhc3NvY2lhdGVkIHRvIGluaXRpYWxpemF0aW9uL2NsZWFudXAuCi0KLVR1ZSBTZXAgMzAgMTQ6MzA6NDcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbiBsZWdhY3kuYyBwYXJzZXIuYwotCSAgcGFyc2VySW50ZXJuYWxzLmMgdGVzdEhUTUwuYyB4bWxsaW50LmMgaW5jbHVkZS9saWJ4bWwvSFRNTHBhcnNlci5oCi0JICBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBhZGRlZCBhIG5ldyBjb25maWd1cmUKLQkgIG9wdGlvbiAtLXdpdGgtcHVzaCwgc29tZSBjbGVhbnVwcywgY2hhc2VkIGNvZGUgc2l6ZSBhbm9tYWxpZXMuCi0JICBOb3cgYSBsaWJyYXJ5IGNvbmZpZ3VyZWQgLS13aXRoLW1pbmltdW0gaXMgYXJvdW5kIDE1MEtCLAotCSAgc291bmRzIGdvb2QgZW5vdWdoLgotCi1UdWUgU2VwIDMwIDEyOjMxOjAwIEFFU1QgMjAwMyBNYWxjb2xtIFRyZWRpbm5pY2sgPG1hbGNvbG1AY29tbXNlY3VyZS5jb20uYXU+Ci0KLQkqIGxpYnhtbC0yLjAtdW5pbnN0YWxsZWQucGMuaW46IE5ldyBmaWxlIGZvciBidWlsZGluZyBhZ2FpbnN0Ci0JdW5pbnN0YWxsZWQgbGlieG1sMiBidWlsZHMuCi0JKiBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmFtOiBTdXBwb3J0IHRoZSAqLXVuaW5zdGFsbGVkLnBjIGZpbGUuCi0JKiAuY3ZzaWdub3JlOiBJZ25vcmUgdGhlIG5ldyBnZW5lcmF0ZWQgKi5wYyBmaWxlLgotCi1UdWUgU2VwIDMwIDAyOjM4OjE2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIFNBWC5jIFNBWDIuYyBjb25maWd1cmUuaW4gZ2xvYmFscy5jIHBhcnNlci5jCi0JICBwYXJzZXJJbnRlcm5hbHMuYyB0ZXN0UmVhZGVyLmMgdGVzdFNBWC5jIHhtbElPLmMgeG1sbGludC5jCi0JICB4bWxyZWFkZXIuYyBleGFtcGxlL2dqb2JyZWFkLmMgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgYWRkZWQgMiBuZXcgY29uZmlndXJlIG9wdGlvbjogLS13aXRoLXJlYWRlciAtLXdpdGgtc2F4MQotCSAgdG8gYWxsb3cgcmVtb3ZpbmcgdGhlIHJlYWRlciBvciBub24teG1sUmVhZHh4eCgpIGludGVyZmFjZXMuCi0KLU1vbiBTZXAgMjkgMTk6NTg6MjYgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGVudGl0aWVzLmMgdHJlZS5jIHZhbGlkLmMgeG1sbGludC5jCi0JICBpbmNsdWRlL2xpYnhtbC90cmVlLmggaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgQWRkaW5nIGEgY29uZmlndXJlIG9wdGlvbiB0byByZW1vdmUgdHJlZSBtYW5pcHVsYXRpb24KLQkgIGNvZGUgd2hpY2ggaXMgbm90IHN0cmljdGx5IG5lZWRlZCBieSB0aGUgcGFyc2VyLgotCi1Nb24gU2VwIDI5IDE1OjIzOjQxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiBsYXN0IGZpbmlzaGluZyB0b3VjaCB0byB0aGUgQmVPUwotCSAgcGF0Y2ggZnJvbSBNYXJjaW4gJ1NoYXJkJyBLb25pY2tpCi0KLU1vbiBTZXAgMjkgMTU6MTU6MDggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYyBTQVgyLmMgYzE0bi5jIGNhdGFsb2cuYyBjb25maWd1cmUuaW4gZGVidWdYTUwuYwotCSAgZW5jb2RpbmcuYyBlbnRpdGllcy5jIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHBhcnNlci5jIHJlbGF4bmcuYwotCSAgdGVzdEF1dG9tYXRhLmMgdGVzdEMxNE4uYyB0ZXN0SFRNTC5jIHRlc3RSZWdleHAuYyB0ZXN0UmVsYXguYwotCSAgdGVzdFNjaGVtYXMuYyB0ZXN0WFBhdGguYyB0aHJlYWRzLmMgdHJlZS5jIHZhbGlkLmMgeG1sSU8uYwotCSAgeG1sY2F0YWxvZy5jIHhtbGxpbnQuYyB4bWxtZW1vcnkuYyB4bWxyZWFkZXIuYyB4bWxzY2hlbWFzLmMKLQkgIGV4YW1wbGUvZ2pvYnJlYWQuYyBpbmNsdWRlL2xpYnhtbC9IVE1MdHJlZS5oIGluY2x1ZGUvbGlieG1sL2MxNG4uaAotCSAgaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oIGluY2x1ZGUvbGlieG1sL2RlYnVnWE1MLmgKLQkgIGluY2x1ZGUvbGlieG1sL2VudGl0aWVzLmggaW5jbHVkZS9saWJ4bWwvbmFub2h0dHAuaAotCSAgaW5jbHVkZS9saWJ4bWwvcmVsYXhuZy5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaAotCSAgaW5jbHVkZS9saWJ4bWwvdmFsaWQuaCBpbmNsdWRlL2xpYnhtbC94bWxJTy5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmggaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi0JICBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oIHB5dGhvbi9saWJ4bWwuYzoKLQkgIE9rYXkgdGhpcyBpcyBzY2FyeSBidXQgaXQgaXMganVzdCBhZGRpbmcgYSBjb25maWd1cmUgb3B0aW9uCi0JICB0byBkaXNhYmxlIG91dHB1dCwgdGhpcyB0b3VjaGVzIG1vc3Qgb2YgdGhlIGZpbGVzLgotCi1Nb24gU2VwIDI5IDEyOjUzOjU2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1lbW9yeS5jOiBiZXR0ZXIgZml4LCBhdm9pZHMgYnJlYWtpbmcgdGhlIHB5dGhvbiBiaW5kaW5ncwotCi1Nb24gU2VwIDI5IDExOjIxOjMzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1lbW9yeS5jOiBmaXggYSBjb21waWxhdGlvbiBwcm9ibGVtIHdoZW4gY29uZmlndXJpbmcKLQkgIHdpdGggZGVidWcgYnV0IHdpdGhvdXQgbWVtLWRlYnVnCi0KLVN1biBTZXAgMjggMjA6NTM6MTcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IGNsZWFudXAsIGNyZWF0aW5nIGEgbmV3IGxlZ2FjeS5jIG1vZHVsZSwKLQkgIG1hZGUgc3VyZSBtYWtlIHRlc3RzIHJhbiBpbiByZWR1Y2VkIGNvbmRpdGlvbnMKLQkqIFNBWC5jIFNBWDIuYyBjb25maWd1cmUuaW4gZW50aXRpZXMuYyBnbG9iYWxzLmMgcGFyc2VyLmMKLQkgIHBhcnNlckludGVybmFscy5jIHRyZWUuYyB2YWxpZC5jIHhsaW5rLmMgeG1sSU8uYyB4bWxjYXRhbG9nLmMKLQkgIHhtbG1lbW9yeS5jIHhwYXRoLmMgeG1sbWVtb3J5LmMgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgaW5jcmVhc2VkIHRoZSBtb2R1bGFyaXphdGlvbiwgYWxsb3cgdG8gY29uZmlndXJlIG91dCAKLQkgIHZhbGlkYXRpb24gY29kZSBhbmQgbGVnYWN5IGNvZGUsIGFkZGVkIGEgY29uZmlndXJhdGlvbgotCSAgb3B0aW9uIC0td2l0aC1taW5pbXVtIGNvbXBpbGluZyBvbmx5IHRoZSBtYW5kYXRvcnkgY29kZQotCSAgd2hpY2ggdGhlbiBzaHJpbmsgdG8gMjAwS0IuCi0KLVN1biBTZXAgMjggMDI6MTU6MDcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeCBhIGJ1ZyByYWlzZWQgYnkgdGhlIE1pcHMgY29tcGlsZXIuCi0JKiBpbmNsdWRlL2xpYnhtbC9TQVguaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogbW92ZSB0aGUgCi0JICBTQVh2MSBibG9jayBkZWZpbml0aW9ucyB0byBwYXJzZXIuaCBmaXhlcyBidWcgIzEyMzM4MAotCSogeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IHJlaW5zdGFuY2lhdGUKLQkgIHRoZSBhdHRyaWJ1dGUgYW5kIGVsZW1lbnQgcG9vbCBib3JrZW4gMiBjb21taXRzIGFnby4KLQkgIFN0YXJ0IHBsYXlpbmcgd2l0aCBhbiBlbnRyeSBwb2ludCB0byBwcmVzZXJ2ZSBhIHN1YnRyZWUuCi0JKiBlbnRpdGllcy5jOiByZW1vdmUgYSB3YXJuaW5nLgotCi1TYXQgU2VwIDI3IDEyOjE5OjM4IFBEVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlbmNvZGluZy5jLCBwYXJzZXIuYywgcmVsYXhuZy5jOiBmdXJ0aGVyIChmaW5hbD8pIG1pbm9yCi0JICBjaGFuZ2VzIGZvciBjb21waWxhdGlvbiB3YXJuaW5ncy4gTm8gY2hhbmdlIHRvIGxvZ2ljLgotCi1GcmkgU2VwIDI2IDE4OjAzOjQyIFBEVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgc21hbGwgcHJvYmxlbSB3aXRoIG1pc3NpbmcgZW50aXRpZXMgKHRlc3QvZW50MikKLQotU2F0IFNlcCAyNyAwMToyNTozOSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogV2lsbGlhbSdzIGNoYW5nZSBhbGxvd2VkIHRvIHNwb3QgYSBuYXN0eSBidWcgaW4geG1sRG9SZWFkCi0JICBpZiB0aGUgcmVzdWx0IGlzIG5vdCB3ZWxsIGZvcm1lZCB0aGF0IGN0eHQtPm15RG9jIGlzIG5vdCBOVUxMCi0JICBhbmQgdXNlcyB0aGUgY29udGV4dCBkaWN0aW9ubmFyeS4KLQotRnJpIFNlcCAyNiAyMTowOTozNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogb3RoZXIgcGF0Y2hlcyBmcm9tIFdpbGxpYW0gQnJhY2sgdG8gYXZvaWQKLQkgIGNvbXBpbGF0aW9uIHdhcm5pbmdzIG9uIEFJWC4KLQotRnJpIFNlcCAyNiAxMTowMzowOCBQRFQgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogSFRNTHBhcnNlci5jLCBlbnRpdGllcy5jLCB4bWxyZWFkZXIuYzogbWlub3IgY2hhbmdlIHRvCi0JICBhdm9pZCBjb21waWxhdGlvbiB3YXJuaW5ncyBvbiBzb21lIChlLmcuIEFJWCkgc3lzdGVtcwotCi1GcmkgU2VwIDI2IDE2OjQ5OjI1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlckludGVybmFscy5jOiBmaXhlZCBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcHJvYmxlbQotCSAgd2hlbiBmb3JtYXR0aW5nICJkZXByZWNhdGVkIFNBWHYxIGZ1bmN0aW9uIGlnbm9yYWJsZVdoaXRlc3BhY2UiCi0JICBjb3VsZCBiZSByZXByb2R1Y2VkIGJ5IHhtbGxpbnQgLS1mb3JtYXQKLQotRnJpIFNlcCAyNiAxNTo1MDo0NCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvbGlieG1sMi1hcGkueG1sOiByZWJ1aWx0IHRoZSBBUEkKLQkqIHhtbGxpbnQuYyBkb2MveG1sbGludC4xIGRvYy94bWxsaW50LnhtbDogYWRkZWQgdGhlIG5ldyBvcHRpb25zCi0JICAtLW5vY2RhdGEgYW5kIC0tbnNjbGVhbiB0byByZW1vdmUgQ0RBVEEgc2VjdGlvbiBhbmQgc3VycGVyZmx1b3VzCi0JICBuYW1lc3BhY2UgZGVjbGFyYXRpb25zCi0JKiBwYXJzZXIuYyBTQVgyLmM6IGltcGxlbWVudGF0aW9uIG9mIHRoZSAyIG5ldyBvcHRpb25zCi0KLUZyaSBTZXAgMjYgMTQ6NDE6NTMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIHRlc3RIVE1MLmMgeG1sbGludC5jIGluY2x1ZGUvbGlieG1sL0hUTUxwYXJzZXIuaDoKLQkgIGFkZGVkIHRoZSBzYW1lIGh0bWxSZWFkIEFQSXMgdGhhbiB0aGVpciBYTUwgY291bnRlcnBhcnRzCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogbmV3IHBhcnNlciBvcHRpb25zLCBub3QgeWV0IGltcGxlbWVudGVkLAotCSAgYWRkZWQgYW4gb3B0aW9ucyBmaWVsZCB0byB0aGUgY29udGV4dC4KLQkqIHRyZWUuYzogcGF0Y2ggZnJvbSBTaGF1biBNY0NhbmNlIHRvIGZpeCBidWcgIzEyMzIzOCB3aGVuIF1dPgotCSAgaXMgZm91bmQgd2l0aGluIGEgY2RhdGEgc2VjdGlvbi4KLQkqIHJlc3VsdC9ub2VudC9jZGF0YTIgcmVzdWx0L2NkYXRhMiByZXN1bHQvY2RhdGEyLnJkcgotCSAgcmVzdWx0L2NkYXRhMi5zYXggdGVzdC9jZGF0YTI6IGFkZCBvbmUgbW9yZSBjZGF0YSB0ZXN0Ci0KLVRodSBTZXAgMjUgMjM6MDM6MjMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgeG1sbGludC5jIGRvYy9saWJ4bWwyLWFwaS54bWwgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6Ci0JICBDaGFuZ2VkIHRoZSBuZXcgeG1sUmVhZC94bWxDdHh0UmVhZCBBUElzIHRvIGhhdmUgYW4gZXh0cmEKLQkgIGJhc2UgVVJMIHBhcmFtZXRlciB3aGVuIG5vdCBsb2FkaW5nIGZyb20gYSBmaWxlIG9yIFVSTC4KLQotVGh1IFNlcCAyNSAxNjoyMzo1OCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyBhIGJldGEzIHNvbHZpbmcgdGhlIEFCSSBwcm9ibGVtcwotCSogZ2xvYmFscy5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRlc3RIVE1MLmMgSFRNTHBhcnNlci5jIFNBWC5jCi0JICBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggaW5jbHVkZS9saWJ4bWwvU0FYLmg6IG1ha2Ugc3VyZSB0aGUKLQkgIGdsb2JhbCB2YXJpYWJsZXMgZm9yIHRoZSBkZWZhdWx0IFNBWCBoYW5kbGVyIGFyZSBWMSBvbmVzIHRvCi0JICBhdm9pZCBBQkkgY29tcGF0IHByb2JsZW1zLgotCSogeG1scmVhZGVyLmM6IGNsZWFudXAgb2YgdW5lZWRlZCBjb2RlCi0JKiBoYXNoLmM6IGZpeCBhIGNvbW1lbnQKLQotVGh1IFNlcCAyNSAxNDoxNjo1MSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmMgaGFzaC5jIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3htbGV4cG9ydHMuaCAKLQkgIGluY2x1ZGUvbGlieG1sL3htbG1lbW9yeS5oIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbjoKLQkgIGZpeGluZyBzb21lIGNvbW1lbnRzIHRvIGF2b2lkIHdhcm5pbmdzIGZyb20gYXBpYnVpbGQucHkKLQotV2VkIFNlcCAyNCAyMzo0MjowOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IHBhdGNoIGZyb20gU3RlcGhhbmUgQmlkb3VsIGZvciBjb25maWd1cmluZwotCSAgdGhlIGJldGEyIHZlcnNpb24gIzEyMzEwNAotCi1XZWQgU2VwIDI0IDIzOjE3OjU5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhZGRpbmcgcmVwZWF0ZWQgcGFyc2luZyBhbmQgdmFsaWRhdGluZyB0ZXN0cwotCSogU0FYMi5jIHBhcnNlci5jIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogbWFrZSB0aGUgbmV3Ci0JICBET00gdHJlZSBidWlsZGluZyBpbnRlcmZhY2VzIHVzZSB0aGUgZGljdGlvbmFyeSBmcm9tIHRoZSAKLQkgIHBhcnNpbmcgY29udGV4dCB0byBidWlsZCB0aGUgZWxlbWVudCBhbmQgYXR0cmlidXRlcyBuYW1lcwotCSAgYXMgd2VsbCBhcyBmb3JtYXR0aW5nIHNwYWNlcyBhbmQgc2hvcnQgdGV4dCBub2RlcwotCSogaW5jbHVkZS9saWJ4bWwvZGljdC5oIGRpY3QuYzogYWRkZWQgc29tZSByZWZlcmVuY2UgY291bnRpbmcKLQkgIGZvciB4bWxEaWN0UHRyIGJlY2F1c2UgdGhleSBjYW4gYmUgc2hhcmVkIGJ5IGRvY3VtZW50cyBhbmQKLQkgIGEgcGFyc2VyIGNvbnRleHQuCi0JKiB4bWxyZWFkZXIuYzogYSBiaXQgb2YgY2xlYW51cCwgcmVtb3ZlIHRoZSBzcGVjaWZpYyB0cmVlIGZyZWVpbmcKLQkgIGZ1bmN0aW9ucyBhbmQgdXNlIHRoZSBzdGFuZGFyZCBvbmVzIG5vdy4KLQkqIHhtbGxpbnQuYzogYWRkIC0tbm9kaWN0Ci0JKiBweXRob24vbGlieG1sLmM6IGZpeCBhIHN0dXBpZCBidWcgc28gdGhhdCBucygpIHdvcmtzIG9uIAotCSAgYXR0cmlidXRlIG5vZGVzLgotCi1UdWUgU2VwIDIzIDIzOjA3OjQ1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBhZGRpbmcgYSBuZXcgc2V0IG9mCi0JICBBUEkgZm9yIHBhcnNpbmcgeG1sUmVhZERvYygpIHhtbFJlYWRGaWxlKCkgLi4uIHhtbFJlYWRJTygpCi0JICBhbmQgeG1sQ3R4dFJlYWREb2MoKSAuLi4geG1sQ3R4dFJlYWRJTygpLiBUaGF0IHdpdGgKLQkgIGEgY2xlYXIgZGVmaW5lIG9mIHhtbFBhcnNlck9wdGlvbiwgeG1sQ3R4dFVzZU9wdGlvbnMoKQotCSAgc2hvdWxkIHNpbXBsaWZ5IGN1c3RvbSBwYXJzaW5nIHdpdGhvdXQgYmVpbmcgdGVtcHRlZCB0bwotCSAgdXNlIGdsb2JhbCB2YXJpYWJsZXMsIGFuZCB4bWxDdHh0UmVzZXQoKSBzaG91bGQgYWxsb3cgcmV1c2UKLQkgIG9mIGEgY29udGV4dCBmb3IgbXVsdGlwbGUgcGFyc2luZy4KLQkqIHhtbGxpbnQuYzogc3dpdGNoZWQgdG8gdXNlIHhtbFJlYWRYWFgsIGFsbG93IG9wdGlvbnMgdG8KLQkgIGJlIHVzZWQgc2ltdWx0YW5lb3VzbHkgd2l0aCBsZXNzIHRyb3VibGVzLgotCSogdHJlZS5jOiBzaW1wbGUgd2FybmluZyByZW1vdmFsCi0JKiBkb2MvYXBpYnVpbGQucHk6IHNtYWxsIGZpeAotCSogZG9jL2xpYnhtbDItYXBpLnhtbCB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IHVwZGF0ZWQKLQotVHVlIFNlcCAyMyAxMToxNToyMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogcmV2ZXJ0IHhtbENyZWF0ZURvY1BhcnNlckN0eHQoKSBzaW5jZSB0aGlzIGJyZWFrCi0JICB0aGUgcGFyc2VEb2MoKSBweXRob24gYmluZGluZ3MKLQotVHVlIFNlcCAyMyAxMTowMDoxOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogbWFrZSBzdXJlIHhtbERldGVjdFNBWDIoKSBpcyBjYWxsZWQgb25seSBhdCAKLQkgIHBhcnNpbmcgdGltZSB0byBhdm9pZCBicmVha2luZyBhcHBzIGNoYW5naW5nIHRoZSBTQVgKLQkgIGNhbGxiYWNrcyBhZnRlciBjb250ZXh0IGFsbG9jYXRpb24sIGNoYW5nZSB4bWxDcmVhdGVEb2NQYXJzZXJDdHh0KCkKLQkgIHRvIHVzZSBhbiBpbW11dGFibGUgYnVmZmVyIGluc3RlYWQgb2YgYSBjb3B5Ci0KLVR1ZSBTZXAgMjMgMDk6NDA6MzMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogYXBwbGllZCBwYXRjaCBmcm9tIE1hcmt1cyBLZWltIGZpeGluZyBhIHByb2JsZW0KLQkgIHdpdGggSS9PIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbi4KLQkqIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGZpeGVkICMxMjI5OTQgY29tbWVudCBudW1iZXJpbmcKLQkgIGZvciB4bWxQYXJzZXJFcnJvcnMKLQotTW9uIFNlcCAyMiAxMjoyMToxMSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiB0aGUgdXJpIGFyZyB0byB4bWxOb2RlU2V0QmFzZSBpcwotCSAgcmVhbGx5IGEgY29uc3QgeG1sQ2hhcioKLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oOiBhZGRpbiB0aGUKLQkgIHhtbFRleHRSZWFkZXJDb25zdFN0cmluZygpIHRvIGdldCBhbiBpbnRlcm5lZCBzdHJpbmcgZnJvbQotCSAgdGhlIHJlYWRlcgotCi1TdW4gU2VwIDIwIDE3OjIyOjIwIFBEVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlcnJvci5jOiBmaXhlZCBhIHdhcm5pbmcgbWVzc2FnZSAodHJpdmlhbCkKLQkqIGRvYy9zZWFyY2gucGhwOiByZW1vdmVkIGluY29ycmVjdCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiB3b3JkCi0JICBzZWFyY2ggbm90IGZvdW5kIGluIGxhc3Qgb2YgbXVsdGlwbGUgdGFibGVzIChidWcgMTE5NTM1KQotCi1GcmkgU2VwIDE5IDE0OjI2OjI4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIGEgMi42LjAtYmV0YTIgcmVsZWFzZQotCSogeG1sSU8uYzogYXZvaWQgYSB3YXJuaW5nCi0JKiB0cmVlLmM6IGF2b2lkIGR1cGxpY2F0ZSBjb2RlIGluIHhtbFJlcGxhY2VOb2RlIGFzIHBvaW50ZWQgb3V0Ci0JICBieSBDaHJpcyBSeWxhbmQKLQkqIGluY2x1ZGUvbGlieG1sL2RpY3QuaDogYWRkIGEgUU5hbWUgYWNjZXNzIGxvb2t1cCB0byB0aGUKLQkgIGRpY3Rpb25hcnkuCi0JKiB4bWxyZWFkZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaDogYWRkaW5nIGNvbnN0IGFjY2VzcwotCSAgYmFzZWQgb24gdGhlIGRpY3Rpb25hcnkgaW50ZXJmYWNlIGZvciBzdHJpbmcgcmVhZCBmcm9tIHRoZQotCSAgcmVhZGVyLCB0aGUgbm9kZSBjb250ZW50IGFjY2VzcyBpcyBzdGlsbCBUT0RPLCBpdCdzIHRvbyBkaWZmZXJlbnQKLQotRnJpIFNlcCAxOSAwMDowMTowOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmM6IGZpeGluZyBuYW1lc3BhY2UgRFREIHZhbGlkYXRpb25zCi0JKiByZXN1bHQvdmFsaWQvbnMyLnhtbCByZXN1bHQvdmFsaWQvbnMueG1sOiB0aGUgb3V0cHV0IG9mIGRlZmF1bHRlZAotCSAgbmFtZXNwYWNlcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgbm93LgotCSogTWFrZWZpbGUuYW06IHJlcG9ydCB0aGUgbWVtb3J5IHVzZWQgaW4gVGltaW5ndGVzdHMgKGFzIHdlbGwgYXMgdGltZSkKLQotVGh1IFNlcCAxOCAxNToyOTo0NiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogYWRkIHN0cmVhbWluZyBvbiBtZW1vcnkgcmVncmVzc2lvbiB0ZXN0cywgZm91bmQKLQkgIGJhZCBidWdzIGluIHRoZSByZWFkZXIgaW50ZXJmYWNlCi0JKiB4bWxyZWFkZXIuYzogZml4aW5nIGJ1Z3Mgdy5yLnQuIHZlcnkgbGFyZ2UgbmFtZXMsIGFuZCBzcGVjaWFsCi0JICBjb25kaXRpb24gaW4gZW5kIG9mIGZpbGUuCi0JKiB4bWxJTy5jIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmggaW5jbHVkZS9saWJ4bWwveG1sSU8uaDoKLQkgIGFkZGluZyBpbW11dGFibGUgYnVmZmVycywgYW5kIHBhcnNlciBpbnB1dCBiYXNlZCBvbiB0aG9zZSwKLQkgIGJ1dCB0aGlzIHNob3VsZCBub3QgYmUgdXNlZCAoeWV0KSBmb3IgZ2VuZXJhbCBwYXJzaW5nCi0JKiBwYXJzZXIuYzogYWRkZWQgYSBjb21tZW50IGFib3V0IHVzaW5nIGltbXV0YWJsZSBidWZmZXJzIGZvcgotCSAgZ2VuZXJhbCBwYXJzaW5nLgotCSogcmVzdWx0L2JpZ25hbWUueG1sLnJkciByZXN1bHQvYmlnbmFtZTIueG1sLnJkcjogZml4aW5nIHRoZQotCSAgb3V0cHV0IG9mIHRoZSByZWdyZXNzaW9uIHRlc3RzCi0JKiB4bWxsaW50LmM6IHVzaW5nIHRoZSBpbW11dGFibGUgYnVmZmVycyB3aGVuIHN0cmVhbWluZyBvbgotCSAgbW1hcGVkIGZpbGUgKC0tc3RyZWFtIC0tbWVtb3J5KQotCi1UaHUgU2VwIDE4IDEyOjA0OjUwIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRpY3QuYzogdGhlIGxhc3QgcGF0Y2ggYnJva2UgdW5pY2l0eSBvZiByZXR1cm5lZCBzdHJpbmdzLCByZW1vdmVkCi0KLVRodSBTZXAgMTggMDA6MzE6MDIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IGFkZCBhIFRpbWluZ3Rlc3RzIHRhcmdldCB0byBjaGVjayBiYWQgYmVoYXZpb3VyCi0JICBmcm9tIHRoZSBzdHJlYW1pbmcgZW5naW5lCi0JKiBkYmdlbi5wbCBkYmdlbmF0dHIucGw6IHBlcmwgc2NyaXB0IHRvIGdlbmVyYXRlIGJpZyBpbnN0YW5jZXMKLQkqIHhtbHJlYWRlci5jOiBmaXggYSBiYWQgYmVoYXZpb3VyIG9uIGxhcmdlIGJ1ZmZlciBpbnB1dHMKLQotV2VkIFNlcCAxNyAyMzoyNTo0NyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkaWN0LmMgeG1scmVhZGVyLmM6IHR3byBzbWFsbCBpbXByb3ZlbWVudHMKLQotV2VkIFNlcCAxNyAyMjo1MzozMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogYXZvaWQgYSBsZWFrIHdpdGggcHJldmlvdXMgcGF0Y2gKLQotV2VkIFNlcCAxNyAyMjowNjoxMSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLmM6IHVzZSBzdGRlcnIgYW5kIG5vdCBzdGRvdXQgZm9yIGRlZmF1bHQgZXJyb3JzCi0JICBpbiBweXRob24gZW52aXJvbm1lbnQgYnVnICMxMjI1NTIKLQotV2VkIFNlcCAxNyAyMTozMzo1NyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogc21hbGwgZml4IGZyb20gUm9iIFJpY2hhcmRzIGZvciBpbnB1dCBmaWxlbmFtZQotCSogeG1sbGludC5jOiBmaXhlcyBmb3IgLS1yZXBlYXQgYW5kIC0tbWVtb3J5Ly0tc3RyZWFtIGZvciBzcGVlZCB0ZXN0cwotCSogeG1sSU86IGFkZGluZyBhIGd1YXJkIGluIG9uZSBmdW5jdGlvbgotCi1XZWQgU2VwIDE3IDE1OjU3OjQ0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWDIuYyB4bWxyZWFkZXIuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogbW9yZSBwZXJmb3JtYW5jZSBodW50aW5nCi0JICByZWR1Y2luZyBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZnJlZSBhbmQgYXZvaWRpbmcgZXhwZW5zaXZlIHJvdXRpbmVzCi0KLVdlZCBTZXAgMTcgMTI6MjM6NDEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHhtbHJlYWRlci5jOiBzdGFydGVkIG1lc3NpbmcKLQkgIHNlcmlvdXNseSB3aXRoIHBlci1kb2N1bWVudCBkaWN0IGFuZCBlbGVtZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXMKLQkgIHJldXNlIGluIHRoZSB4bWxSZWFkZXIuIFRoaXMgc2VlbXMgdG8gbGVhZCB0byBhbiBpbnRlcmVzdGluZwotCSAgc3BlZWR1cCBvZiB0aGUgeG1sUmVhZGVyIGFscmVhZHkuCi0KLVdlZCBTZXAgMTcgMDE6MDc6NTYgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGljdC5jIGluY2x1ZGUvbGlieG1sL2RpY3QuaDogZG8gc3RyaW5nIGFsbG9jYXRpb25zIGluIGxhcmdlCi0JICBwb29scywgYWxsb3dpbmcgdG8gZmluZCBpZiBhIHN0cmluZyBwZXJ0YWluIHRvIGEgZGljdCBxdWlja2x5Ci0JKiB4bWxsaW50LmM6IGZpeCAtLXN0cmVhbSAtLXJlcGVhdCAtLXRpbWluZwotCSogTWFrZWZpbGUuYW06IHRoZSB0ZXN0VGhyZWFkcyBydW4gb3V0cHV0IHNob3VsZCBiZSBzZWVuLgotCi1Nb24gU2VwIDE1IDE2OjQ2OjI4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWDIuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogc3RhcnRpbmcgd29yayBvbiByZXVzaW5nIHRoZQotCSAgcGFyc2VyIGRpY3Rpb25hcnkgZm9yIHRoZSBlbGVtZW50IGFuZCBhdHRyaWJ1dGUgdGFnIG5hbWVzLgotCSAgQWRkIHBvb2xzIGZvciBFbGVtZW50IGFuZCBBdHRyaWJ1dGVzIGluIHRoZSBwYXJzZXIgY29udGV4dCwKLQkgIHdoaWNoIHNob3VsZCBoZWxwIHNwZWVkaW5nIHVwIHRoZSByZWFkZXIuCi0JKiBNYWtlZmlsZS5hbSByZXN1bHQvKi5yZHIgOiBhZGRpbmcgbm9uLXB5dGhvbiByZWFkZXIgcmVncmVzc2lvbgotCSAgdGVzdHMuCi0KLU1vbiBTZXAgMTUgMTQ6NTQ6NDIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYMi5jIHBhcnNlci5jIHZhbGlkLmM6IHN0YXJ0aW5nIHRvIGNsZWFudXAgc29tZSBvZiB0aGUKLQkgIHByb2JsZW1zIGV4cG9zZWQgYnkgdGhlIFczQy9OSVNUIHJlZ3Jlc3Npb24gc3VpdGUuCi0JKiByZXN1bHQvZW50Ny5zYXggcmVzdWx0L3htbDIuc2F4OiBzbWFsbCBmaXhlcy4KLQotTW9uIFNlcCAxNSAxMTo0Njo0NyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogbW9yZSBwYXJzZXIgZXJyb3IgZmFjdG9yaW5nCi0KLVN1biBTZXAgMTQgMjE6NTM6MzkgUERUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIEhUTUx0cmVlLmM6IEZpeGVkIGJ1ZyAxMjEzOTQgLSBtaXNzaW5nIG5zIG9uIGF0dHJpYnV0ZXMKLQotU3VuIFNlcCAxNCAyMTo0MzozMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBmYWN0b3Jpbmcgb2YgbW9yZSAKLQkgIGVycm9yIGhhbmRsaW5nIGNvZGUsIHNlcmlvdXMgc2l6ZSByZWR1Y3Rpb24gYW5kIG1vcmUgbGlzaWJpbGl0eQotCSAgb2YgdGhlIHJlc3VsdGluZyBjb2RlLgotCSogcGFyc2VySW50ZXJuYWxzLmMgcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmgKLQkgIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBjaGFuZ2luZyB0aGUgd2F5IFZDOlByb3BlciBHcm91cC9QRSBOZXN0aW5nCi0JICBjaGVja3MgYXJlIGRvbmUsIHVzZSBhIGNvdW50ZXIgZm9yIGVudGl0aWVzLiBFbnRpdGllcyB3aGVyZSBmcmVlZCBhbmQKLQkgIHJlYWxsb2NhdGVkIGF0IHRoZSBzYW1lIGFkZHJlc3MgZmFpbGluZyB0aGUgY2hlY2suCi0JKiB0cmVlLmM6IGF2b2lkIGEgd2FybmluZwotCSogcmVzdWx0L3ZhbGlkLyogcmVzdWx0L1ZDLyo6IHRoaXMgc2xpZ2h0bHkgY2hhbmdlcyBzb21lIHZhbGlkYXRpb24KLQkgIGVycm9yIG1lc3NhZ2VzLgotCi1TdW4gU2VwIDE0IDExOjAzOjI3IFBEVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB2YWxpZC5jOiBmaXhlZCBidWcgMTIxNzU5IC0gZWFybHkgZGVjbGFyYXRpb24gb2YKLQkgIGF0dHJpYnV0ZS1saXN0IGluIGV4dGVybmFsIERURAotCi1TYXQgU2VwIDEzIDE0OjQyOjExIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IHN0YXJ0aW5nIGNsZWFuaW5nIHVwCi0JICBlcnJvciBoYW5kbGluZywgZmFjdG9yaXplIGVycm9yIHByb2Nlc3NpbmcKLQkqIGRvYy94bWxsaW50Lmh0bWw6IHVwZGF0ZSBvZiB0aGUgcGFnZSwgcmVtb3ZlIC0tc2dtbAotCi1TYXQgU2VwIDEzIDAyOjEzOjUwIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIERPQ0JwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB0ZXN0RG9jYm9vay5jCi0JICB4bWxsaW50LmMgZG9jL3htbGxpbnQueG1sIGRvYy94bWxsaW50LjE6IHJlbW92aW5nIHRoZSAKLQkgIGJyb2tlbiBwc2V1ZG8gU0dNTCBEb2NCb29rIHBhcnNlciBjb2RlLgotCi1GcmkgU2VwIDEyIDE3OjI0OjExIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGZpeCBhIHByb2JsZW0gd2l0aCBzdHJjcHkoKSBpbiB4bWxYUGF0aEZvcm1hdE51bWJlcigpCi0JICB2YWxncmluZCBwb2ludGVkIG91dCB0aGUgc3RyaW5ncyBvdmVybGFwcGVkLiBjbGVhbnVwIC4KLQotRnJpIFNlcCAxMiAxMTo0MzoxMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGxpZWQgc3BlZWR1cCB0byB4bWxTZWFyY2hOcygpIGFzIHN1Z2dlc3RlZCBieQotCSAgTHVjYSBQYWRvdmFuaS4gQ2xlYW5lZCB1cCB4bWxTZWFyY2hOc0J5SHJlZigpIGluIHRoZSBwcm9jZXNzCi0JICBhcHBseWluZyB0aGUgc2FtZSB0cmljay4KLQotRnJpIFNlcCAxMiAwMTozNjoyMCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmg6IGFkZGluZyBuYW1lc3BhY2UgY2hlY2tpbmdzCi0JICB3aGlsZSBtYWtpbmcgc3VyZSB0aGV5IHN0aWxsIHBhcnNlIGFzIHdlbGxmb3JtZWQgZG9jdW1lbnRzLgotCSAgQWRkIGFuIG5zV2VsbEZvcm1lZCBzdGF0dXMgcmVwb3J0IHRvIHRoZSBjb250ZXh0LCBhbmQgCi0JICBwcm92aWRlIG5ldyBhcHByb3ByaWF0ZSBlcnJvciBjb2Rlcy4KLQkqIE1ha2VmaWxlLmFtIHJlc3VsdC9uYW1lc3BhY2VzLyogdGVzdC9uYW1lc3BhY2VzLyo6IGFkZCAKLQkgIHNwZWNpZmljIHJlZ3Jlc3Npb24gdGVzdGluZyBmb3IgdGhlIG5ldyBuYW1lc3BhY2Ugc3VwcG9ydAotCSogdGVzdC9hdHQ1IHJlc3VsdC9ub2VudC9hdHQ1IHJlc3VsdC9hdHQ1IHJlc3VsdC9hdHQ1LnNheDoKLQkgIGFkZCBtb3JlIGNvdmVyYWdlIGZvciB0aGUgYXR0cmlidXRlIHBhcnNpbmcgYW5kIG5vcm1hbGl6YXRpb24KLQkgIGNvZGUuCi0KLUZyaSBTZXAgMTIgMDE6MzQ6MTkgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGhyZWFkcy5jOiBiYWNrcG9ydCBvZiBhIHRocmVhZCBidWdmaXggZnJvbSAyXzVfWCBicmFuY2gKLQotVGh1IFNlcCAxMSAxODoyOToxOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBidWcgaW4gb25lIGNvcm5lciBjYXNlIG9mIGF0dHJpYnV0ZSBwYXJzaW5nLgotCi1UaHUgU2VwIDExIDE2OjIxOjUzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBkb2MvKiA6IDIuNi4wYmV0YTEgY2hhbmdlcwotCSogU0FYMi5jIGhhc2guYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYzogRml4aW5nIGF0dHJpYnV0ZQotCSAgbm9ybWFsaXphdGlvbiwgbWlnaHQgbm90IGJlIHRvdGFsbHkgZml4ZWQgYnV0IHRoaXMgc2hvdWxkIAotCSAgbWFrZSBzdXJlIFNBWCBldmVudCBwcm92aWRlIHRoZSByaWdodCBzdHJpbmdzIGZvciBhdHRyaWJ1dGVzCi0JICBleGNlcHQgZW50aXRpZXMgZm9yIHdoaWNoIGxpYnhtbDIgaXMgZGlmZmVyZW50IGJ5IGRlZmF1bHQKLQkgIFRoaXMgc2hvdWxkIGZpeCAjMTA5NTY0Ci0JKiByZXN1bHQvYXR0cmliLnhtbC5zYXggcmVzdWx0L2VudDMuc2F4IHJlc3VsdC9wM3Auc2F4OiBtaW5vciBjaGFuZ2VzCi0JICBpbiBhdHRyaWJ1dGUgY2FsbGJhY2sgdmFsdWVzCi0JKiByZXN1bHQvYzE0bi93aXRoLWNvbW1lbnRzL2V4YW1wbGUtNAotCSAgcmVzdWx0L2MxNG4vd2l0aG91dC1jb21tZW50cy9leGFtcGxlLTQ6IHRoaXMgYWxzbyBmaXhlcyBhIHN1YnRsZQotCSAgYnVnIGluIHRoZSBjYW5vbmljYWxpemF0aW9uIHRlc3RzLgotCi1XZWQgU2VwIDEwIDEyOjM4OjQ0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQlUaW1lIHRvIGNvbW1pdCAzIGRheXMgb2Ygd29yayByZXdyaXRpbmcgdGhlIHBhcnNlciBpbnRlcm5hbCwKLQlmaXhpbmcgYnVncyBhbmQgbWlncmF0aW5nIHRvIFNBWDIgaW50ZXJmYWNlIGJ5IGRlZmF1bHQuIFRoZXJlCi0JaXMgc29tZSB3b3JrIGxldGYgVE9ETywgbGlrZSBuYW1lc3BhY2UgdmFsaWRhdGlvbiBhbmQgYXR0cmlidXRlcwotCW5vcm1hbGl6YXRpb24gKHRoaXMgYnJlYWsgQzE0TiByaWdodCBub3cpCi0JKiBNYWtlZmlsZS5hbTogZml4ZWQgdGhlIHRlc3QgcnVsZXMKLQkqIGluY2x1ZGUvbGlieG1sL1NBWDIuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaAotCSAgaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmggU0FYMi5jIHBhcnNlci5jCi0JICBwYXJzZXJJbnRlcm5hbHMuYzogY2hhbmdpbmcgdGhlIHBhcnNlciwgbWlncmF0aW5nIHRvIFNBWDIsCi0JICBhZGRpbmcgbmV3IGludGVyZmFjZSB0byBzd2l0Y2ggYmFjayB0byBTQVgxIG9yIGluaXRpYWxpemUgYQotCSAgU0FYIGJsb2NrIGZvciB2MSBvciB2Mi4gTW9zdCBvZiB0aGUgbmFtZXNwYWNlIHdvcmsgaXMgZG9uZQotCSAgYmVsb3cgU0FYLCBhcyB3ZWxsIGFzIGF0dHJpYnV0ZSBkZWZhdWx0aW5nCi0JKiBnbG9iYWxzLmM6IGNoYW5nZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRlZmF1bHQgU0FYIGhhbmRsZXJzCi0JKiBoYXNoLmMgdHJlZS5jIGluY2x1ZGUvbGlieG1sL2hhc2guaDogYWRkZWQgUU5hbWUgc3BlY2lmaWMgaGFuZGxpbmcKLQkqIHhtbElPLmM6IHNtYWxsIGZpeAotCSogeG1sbGludC5jIHRlc3RTQVguYzogcHJvdmlkZSBhIC0tc2F4MSBzd2l0Y2ggdG8gdGVzdCB0aGUgb2xkCi0JICB2ZXJzaW9uIGNvZGUgcGF0aAotCSogcmVzdWx0L3AzcCByZXN1bHQvcDNwLnNheCByZXN1bHQvbm9lbnQvcDNwIHRlc3QvcDNwOiB0aGUgbmV3IGNvZGUKLQkgIHBvaW50ZWQgb3V0IGEgdHlwbyBpbiBhIHZlcnkgb2xkIHRlc3QgbmFtZXNwYWNlCi0KLVN1biBTZXAgIDcgMTk6NTg6MzMgUFREIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwveG1sSU8uaCBwYXJzZXIuYzogSW1wbGVtZW50ZWQgZGV0ZWN0aW9uCi0JICBvZiBjb21wcmVzc2VkIGZpbGVzLCBzZXR0aW5nIGRvYy0+Y29tcHJlc3NlZCBhcHByb3ByaWF0ZWx5Ci0JICAoYnVnICMxMjA1MDMpLgotCi1TdW4gU2VwICA3IDIyOjUzOjA2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiB0cnkgdG8gY29wZSB3aXRoIHRoZSBmYWN0IHRoYXQgYXBwcyBtYXkgc3RpbGwKLQkgIGhhdmUgYWxsb2NhdGVkIHNtYWxsZXIgU0FYIGNhbGxiYWsgYmxvY2sKLQotU3VuIFNlcCAgNyAxMToxMTo0NSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkaWN0LmM6IGFsbG93IHRvIGdpdmUgLTEgZm9yIHVuZGVmaW5lZCBsZW5ndGggaW4gbG9va3VwcwotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmggcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmMgdGVzdFNBWC5jOgotCSAgZmlyc3Qgcm91bmQgb2Ygd29yayBvbiB0aGUgbmV3IFNBWDIgaW50ZXJmYWNlcywgdGhlIEFQSQotCSAgd2lsbCBjaGFuZ2UgYnV0IGNvbW1pdGluZyBiZWZvcmUgY2hhbmdpbmcgZm9yIGhpc3RvcmljYWwKLQkgIHJlZmVyZW5jZS4KLQotU2F0IFNlcCAgNiAxMDo1NTowMSBQVEQgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogU0FYMi5jLCB4bWxJTy5jOiBmaXhlZCBidWcgIzEyMTIxMCAoY2FsbGJhY2sgdG8gc2F4LT5lcnJvciwKLQkgIHNheC0+d2FybmluZyB3aXRoIHdyb25nIHBhcmFtcykuCi0KLUZyaSBTZXAgIDUgMTA6MzM6NDIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvZ2xvYmFscy5oOiBwYXRjaCBmcm9tIFN06XBoYW5lIEJpZG91bCB0byBleHBvcnQKLQkgIGdsb2JhbHMgZW50cnkgcG9pbnRzIHRvIHRoZSBweXRob24gYmluZGluZ3MKLQotV2VkIFNlcCAgMyAxNToyNDo0MSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IHdoZW4gY3JlYXRpbmcgYSBET0NUWVBFIHVzZSAiaHRtbCIgbG93ZXJjYXNlCi0JICBieSBkZWZhdWx0IGluc3RlYWQgb2YgIkhUTUwiCi0JKiBwYXJzZXIuYyB4bWxyZWFkZXIuYzogb3B0aW1pemF0aW9uLCBnYWluIGEgZmV3ICUgcGFyc2luZyBzcGVlZCBieQotCSAgYXZvaWRpbmcgY2FsbHMgdG8gImFyZUJsYW5rcyIgd2hlbiBub3QgbmVlZGVkLgotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmggaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBzb21lIHN0cnVjdHVyZQotCSAgZXh0ZW5zaW9ucyBmb3IgZnV0dXJlIHdvcmsgb24gdXNpbmcgcGVyLWRvY3VtZW50IGRpY3Rpb25hcmllcy4KLQotV2VkIFNlcCAgMyAxNTowODowNiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSByZXN1bHRzLyouc2F4IFNBWFJlc3VsdC8qOiByZW1vdmluZyB0aGUgU0FYcmVzdWx0cwotCSAgdHJlZSwga2VlcGluZyByZXN1bHQgaW4gdGhlIHNhbWUgdHJlZSwgYWRkZWQgU0FYdGVzdHMgdG8gdGhlCi0JICBkZWZhdWx0ICJtYWtlIHRlc3RzIgotCi1UdWUgU2VwICAyIDE1OjU5OjA0IENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxleHBvcnRzLmg6IGRlZmluZWQgYWRkaXRpb25hbCBtYWNyb3Mgd2hpY2gKLQkgIGFmZmVjdCBleHBvcnRzIGFuZCBhZGRlZCBtaW5ndyBzZWN0aW9uCi0KLU1vbiBTZXAgIDEgMTU6MTU6MTggUERUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRvYy9pbmRleC5weTogZml4ZWQgcHJvYmxlbSBwYXJzaW5nIHhodG1sIGRvY3MKLQkqIGRvYy94bWxyZWFkZXIuaHRtbCxkb2MvZ3VpZGVsaW5lcy5odG1sOiBzbWFsbCBtb2RpZmljYXRpb24KLQkgIHRvIGF2b2lkIHByb2JsZW0gaW4gcHl0aG9uIHBhcnNpbmcuCi0JKiBkb2Mvc2VhcmNoLnBocDogZml4ZWQgdXBwZXIgY2FzZSBmaWxlbmFtZSBwcm9ibGVtIGZvciBYU0xUIGRvY3MKLQotTW9uIFNlcCAgMSAyMjo1NTowOSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBwYXRjaCBmcm9tIE1hcmsgVmFrb2MgdGhhdCBhbGxvd3MgY29tcGlsaW5nIAotCSAgd2l0aCBYSW5jbHVkZSBidXQgd2l0aG91dCBYUG9pbnRlciBzdXBwb3J0LgotCi1Nb24gU2VwICAxIDIyOjMxOjM4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWwyLWNvbmZpZy5pbjogQXBwbGllZCBhIHBhdGNoIGZyb20gS2V2aW4gUC4gRmxlbWluZwotCSAgdG8gYWRkIC0tbGlidG9vbC1saWJzIG9wdGlvbiB0byB4bWwyLWNvbmZpZyBzY3JpcHQuCi0KLVN1biBBdWcgMzEgMjE6NTI6MTIgUERUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRvYy9SRUFETUUuZG9jcywgZG9jL01ha2VmaWxlLmFtOiBuZXcgZmlsZSBhZGRlZCwKLQkgIGdpdmluZyBzb21lIGRlc2NyaXB0aW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gcHJvY2VzcwotCSogZG9jL3NlYXJjaC5waHA6IGZpeGVkIHByb2JsZW0gd2l0aCB1cHBlciBjYXNlIG9uIGZpbGVuYW1lcwotCi1GcmkgQXVnIDI5IDEyOjI1OjAxIENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5iY2I6IHVwZGF0ZXMgYnkgRXJpYyBadXJjaGVyCi0KLVRodSBBdWcgMjggMjI6NTg6MzggUERUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGRvYy9hcGlidWlsZC5weSwgZG9jL2xpYnhtbDItYXBpLnhtbDogZW5oYW5jZWQgY29kZQotCSAgdG8gY29tcGVuc2F0ZSBmb3IgcG9sbHV0aW9uIGZyb20gSWdvcidzIGhlYWRlciB0YWludAotCSAgKHF1aWNrIGJlZm9yZSBEYW5pZWwgbm90aWNlcykKLQotVGh1IEF1ZyAyOCAyMzowMTozNiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVgyLmM6IGZpeGVkIGEgbmFtZXNwYWNlIGVycm9yIG9uIGF0dHJpYnV0ZSByZXBvcnRpbmcgYnVnCi0JICBwb2ludGVkIG91dCBieSBUb2JpYXMgUmVpZgotCSogdGVzdC9wM3AgcmVzdWx0L3AzcCByZXN1bHQvbm9lbnQvcDNwOiB0aGlzIHRlc3QgY2FzZSB3YXMgd3JvbmcKLQkgIHVzaW5nIHhtbHNuIGluc3RlYWQgb2YgeG1sbnMuLi4KLQotVGh1IEF1ZyAyOCAxODoyNTowNyBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvZ2xvYmFscy5oIGluY2x1ZGUvbGlieG1sL3htbGV4cG9ydHMuaDogZml4ZWQKLQkgIHR5cG9zIHJlcG9ydGVkIGJ5IE1hcmsgVmFrb2MKLQotVGh1IEF1ZyAyOCAwODo1OTo1MSBNRFQgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JYWRkOgotCSogZG9jL3R1dG9yaWFsL2FwaS5odG1sCi0JKiBkb2MvdHV0b3JpYWwvYXIwMXMwOS5odG1sCi0JKiBkb2MvdHV0b3JpYWwvaW5jbHVkZXhwYXRoLmMKLQl1cGRhdGVkCi0JKiBkb2MvdHV0b3JpYWwvKi5odG1sCi0JZml4IG15IGJhZCAtIGZvcmdvdCB0byBjaGVjayBpbiBuZXcgZmlsZXMgd2hlbiBJIGxhc3QKLQl1cGRhdGVkCi0KLVRodSBBdWcgMjggMTQ6MzE6MTMgQ0VTVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLmJjYjogbmV3IGZpbGUsIHN1cHBvcnQgZm9yIEJvcmxhbmQgQysrCi0JKiB4bWxsaW50LmM6IGZpeGVkIHRpbWUgaW5jbHVzaW9uIGZvciB2YXJpb3VzIGNvbXBpbGVycwotCi1UaHUgQXVnIDI4IDEyOjMyOjU5IENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyBET0NCcGFyc2VyLmMgSFRNTHBhcnNlci5jOiBhZGRlZAotCSAgZmV3IGNhc3RzIHRvIHNodXQgdGhlIGNvbXBpbGVyIHdhcm5pbmdzCi0KLVRodSBBdWcgMjggMTI6MjM6NTEgQ0VTVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLiogd2luMzIvY29uZmlndXJlLmpzOiBmaXhlZCBmb3IgbWluZ3cKLQotVGh1IEF1ZyAyOCAxMDowMTo0NCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWxzLmMgdGhyZWFkcy5jOiBmaXhpbmcgYnVnICMxMjA4NzAgdHJ5IHRvIGF2b2lkIHByb2JsZW0KLQkgIHdpdGggdW5pbml0aWFsaXplZCBtdXRleGVzCi0KLVdlZCBBdWcgMjcgMTY6MTI6NDEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBhbiBlcnJvciByZXBvcnRpbmcgYnVnIGluIFJlbGF4LU5HIHdoZW4gd2UgZW5kCi0JICB1cCB3aXRoIG11bHRpcGxlIHN0YXRlcywgc2VsZWN0IHRoZSAiYmVzdCIgb25lLiBGaXggIzEyMDY4MgotCSogcmVzdWx0L3JlbGF4bmcvdHV0b3IxMV8yXzMuZXJyOiBzbWFsbCBjaGFuZ2UgcmVzdWx0aW5nIAotCi1XZWQgQXVnIDI3IDExOjI1OjI1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBhcHBsaWVkIGJhc2U2NCBzdXBwb3J0IHBhdGNoIGZyb20gQW50aG9ueSBDYXJyaWNvCi0KLVdlZCBBdWcgMjcgMTA6NTg6NTEgQ0VTVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL1t0aHJlYWRzLXhwb2ludGVyXS5oOiByZWFsaWduZWQgcGFyYW1ldGVycwotCSAgYWZ0ZXIgdGFpbnQKLQotV2VkIEF1ZyAyNyAwOTo1OTo1NCBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sZXhwb3J0cy5oOiBmaXhlZCBkZWZzIGZvciBCb3JsYW5kIGNvbXBpbGVyLAotCSAgYXMgcmVwb3J0ZWQgYnkgRXJpYyBadXJjaGVyCi0KLVR1ZSBBdWcgMjYgMTU6NTQ6MDQgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCBidWcgIzEyMDM4NiBhZ2FpbiBhIHByb2JsZW0gaW50cm9kdWNlZCB3aGVuCi0JICB0cnlpbmcgdG8gcmV1c2UgYXV0b21hdGEgZm9yIGNvbnRlbnQgdmFsaWRhdGlvbi4gRml4IGEgYnVnIHJlcG9ydAotCSAgcHJvYmxlbSBvbiB6ZXJvT3JNb3JlCi0JKiByZXN1bHQvcmVsYXhuZy90dXRvcjNfN19lcnI6IGNoYW5nZSBzbGlnaHRseSBlcnJvciByZXBvcnRpbmcuCi0KLU1vbiBBdWcgMjUgMTM6MjQ6NTcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06IG1ha2Ugc3VyZSB0aGUgbmV3IGhlYWRlciB3aWxsCi0JICBiZSBpbmNsdWRlZCB3aGVuIGdlbmVyYXRpbmcgYSBuZXcgZGlzdHJpYnV0aW9uLgotCi1Nb24gQXVnIDI1IDEyOjM3OjA1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogZml4ZWQgYSBjb3VwbGUgb2Ygc3R1cGlkIGJ1Z3MgaW4gdGhlIHN0YXRlIGFsbG9jYXRpb24KLQkgIHJvdXRpbmVzIHdoaWNoIGxlZCB0byBidWcgIzEyMDA0MCBhbmQgdGhlIG9uZXMgcmVwb3J0ZWQgYnkKLQkgIE1hcnRpam4gRmFhc3NlbgotCi1Nb24gQXVnIDI1IDEyOjM3OjIzIENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaCBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmgKLQkgIGluY2x1ZGUvbGlieG1sL1NBWC5oIGluY2x1ZGUvbGlieG1sL1NBWDIuaDogcmVhbGlnbmVkIHRoZQotCSAgcGFyYW1ldGVycyBhZnRlciB0YWludC4KLQotTW9uIEF1ZyAyNSAxMToxNjowMSBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBtb3ZlZCBleHBvcnQgZGVmcyB0byBhIHNlcGFyYXRlCi0JICBmaWxlIGZvciBjb25zaXN0ZW5jeS4KLQkqIGluY2x1ZGUvbGlieG1sL3htbGV4cG9ydHMuaDogbmV3IGZpbGUsIGNvbnRhaW5zIGV4cG9ydCBkZWZzLgotCi1Nb24gQXVnIDI1IDExOjAxOjQ5IENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC8qLmggZ2VuVW5pY29kZS5weTogZXhwb3J0YWJpbGl0eSB0YWludAotCSAgb2YgdGhlIGhlYWRlcnMuCi0KLVRodSBBdWcgMjEgMTI6Mzc6NDYgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IG1ha2UgdGhlIGRlcHJlY2F0ZWQgaW50ZXJmYWNlcyBsb2cgYW4gZXJyb3IgbWVzc2FnZQotCSAgdG8gYmUgc3VyZSBpdCB3b24ndCBnZXQgdXNlZC4KLQotVGh1IEF1ZyAyMSAwMDo1MDozMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBTQVgyLmMgaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0gaW5jbHVkZS9saWJ4bWwvU0FYMi5oOgotCSAgQWRkaW5nIG5ldyB2ZXJzaW9uIG9mIHRoZSBTQVggaW50ZXJmYWNlLCBpdCdzIG5vdCB0aGVyZSB5ZXQsCi0JICBjdXJyZW50bHkganVzdCBwcmVwYXJpbmcgdGhlIHdvcmsKLQkqIGdsb2JhbHMuYyBwYXJzZXIuYyBTQVguYyBpbmNsdWRlL2xpYnhtbC9TQVguaCAKLQkgIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogZG9pbmcgc29tZQotCSAgcmVmYWN0b3Jpbmcgb2YgdGhlIFNBWHYxIGludGVyZmFjZXMsIG9ic29sZXRpbmcgYSBidW5jaCBvZiB0aGVtCi0JICB3aGlsZSBrZWVwaW5nIGZ1bmN0aW9uYWxpdGllcywgcHJlcGFyaW5nIFNBWDIgaW50ZWdyYXRpb24uCi0JKiBkaWN0LmM6IHNtYWxsIGNsZWFudXAuCi0KLVdlZCBBdWcgMjAgMDA6MjA6MDEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXhlcyBhIHNtYWxsIGJ1ZyBpbnRyb2R1Y2VkIGluIGxhc3QgY29tbWl0IGFuZCBkZXRlY3RlZAotCSAgYnkgdmFsZ3JpbmQuCi0KLVR1ZSBBdWcgMTkgMTY6NTQ6MTggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGljdC5jIGhhc2guYzogb3B0aW1pemF0aW9uIHdoZW4gZnJlZWluZyBoYXNoIHRhYmxlcy4KLQkqIHBhcnNlci5jIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBzb21lIHR1bmluZyBvZiBidWZmZXIKLQkgIGFsbG9jYXRpb25zCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDoga2VlcCBhCi0JICBzaW5nbGUgYWxsb2NhdGVkIGJsb2NrIGZvciBhbGwgdGhlIGF0dHJpYnV0ZXMgY2FsbGJhY2tzLAotCSAgYXZvaWQgdXNlbGVzcyBtYWxsb2MoKS9mcmVlKCkKLQkqIHRyZWUuYzogZG8gbm90IHJlYWxsb2MoKSB3aGVuIGdyb3dpbmcgYSBidWZmZXIgaWYgdGhlIGJ1ZmZlcgotCSAgYWluJ3QgZnVsbCwgbWFsbG9jL21lbWNweS9mcmVlIGF2b2lkIGNvcHlpbmcgbWVtb3J5LgotCi1Nb24gQXVnIDE4IDE4OjM3OjAxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYyBkb2MveG1sbGludC54bWwgZG9jL3htbGxpbnQuMTogYWRkZWQgb3B0aW9uCi0JICAtLWR0ZHZhbGlkZnBpIGZvciBUb2JpYXMgUmVpZgotCi1Nb24gQXVnIDE4IDE0OjAzOjAzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRpY3QuYyBpbmNsdWRlL2xpYnhtbC9kaWN0LmggTWFrZWZpbGUuYW0gaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06Ci0JICBuZXcgZGljdGlvbmFyeSBtb2R1bGUgdG8ga2VlcCBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgbmFtZXMgdXNlZAotCSAgYnkgdGhlIHBhcnNlcgotCSogRE9DQnBhcnNlci5jIEhUTUxwYXJzZXIuYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB2YWxpZC5jOgotCSAgc3dpdGNoZWQgYWxsIHBhcnNlcnMgdG8gdXNlIHRoZSBkaWN0aW9uYXJ5IGludGVybmFsbHkKLQkqIGluY2x1ZGUvbGlieG1sL0hUTUxwYXJzZXIuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaAotCSAgaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmggaW5jbHVkZS9saWJ4bWwvdmFsaWQuaDoKLQkgIFNvbWUgb2YgdGhlIGludGVyZmFjZXMgY2hhbmdlZCBhcyBhIHJlc3VsdCB0byByZWNlaXZlIG9yIHJldHVybgotCSAgImNvbnN0IHhtbENoYXIgKiIgaW5zdGVhZCBvZiAieG1sQ2hhciAqIiwgdGhpcyBpcyBlaXRoZXIKLQkgIGluc2lnbmlmaWNhbnQgZnJvbSBhbiB1c2VyIHBvaW50IG9mIHZpZXcgb3Igd2hlbiB0aGUgcmV0dXJuaW5nCi0JICB2YWx1ZSBjaGFuZ2VkLCB0aG9zZSBmdW5jdGlvbiBhcmUgcmVhbGx5IHBhcnNlciBpbnRlcm5hbCBtZXRob2RzCi0JICB0aGF0IG5vIHVzZXIgY29kZSBzaG91bGQgcmVhbGx5IGNoYW5nZQotCSogZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvaHRtbC8qOiB0aGUgQVBJIGludGVyZmFjZSBjaGFuZ2VkIGFuZAotCSAgdGhlIGRvY3Mgd2VyZSByZWdlbmVyYXRlZAotCi1TdW4gQXVnIDE3IDIzOjA1OjM4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIHRvIHhtbENsZWFudXBQYXJzZXIgZnJvbSBEYXZlIEJlY2tldHQKLQotU2F0IEF1ZyAxNiAyMjo1Mzo0MiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL3BhcnNlZGVjbC5weSwgZG9jL2xpYnhtbDItcmVmcy54bWwsIGRvYy9BUEkqLmh0bWw6Ci0JICBmaXhlZCBwYXJ0ICgyKSBvZiBidWcgMTE5NTM1ICh3cm9uZyBhbHBoYSBjYXNlIG9uIGZpbGVuYW1lcykKLQotU2F0IEF1ZyAxNiAyMDozNToyOCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL0FQSSouaHRtbCwgZG9jL2h0bWwvKjogcmVnZW5lcmF0ZWQgQVBJIGRvY3VtZW50YXRpb24KLQkgIGZvciB4bWxzb2Z0Lm9yZyAocGFydCBvZiBCdWcgMTE5NTM1KQotCi1GcmkgQXVnIDE1IDE0OjU4OjM3IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlbmNvZGluZy5jLCB0aHJlYWRzLmMsIGluY2x1ZGUvbGlieG1sL0hUTUxwYXJzZXIuaCwKLQkgIGRvYy9saWJ4bWwyLWFwaS54bWw6IE1pbm9yIGNoYW5nZXMgdG8gY29tbWVudHMsIGV0Yy4gZm9yCi0JICBpbXByb3ZpbmcgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uCi0JKiBkb2MvTWFrZWZpbGUuYW06IGZ1cnRoZXIgYWRqdXN0bWVudCB0byBhdXRvLWdlbmVyYXRpb24gb2YKLQkgIHdpbjMyL2xpYnhtbDIuZGVmLnNyYwotCi1GcmkgQXVnIDE1IDAyOjI0OjIwIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5ld3MgY29uZmlndXJlLmluOiBwcmVwYXJpbmcgbGlieG1sMi0yLjUuMTAgcmVsZWFzZQotCSogZG9jLyogOiB1cGRhdGVkIHRoZSBkb2MgYW5kIHJlYnVpbHQKLQotRnJpIEF1ZyAxNSAwMTo1NTo1MyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4aW5nIHRoZSB4bWxTQVhQYXJzZURURCBidWcgIzExOTUzNiByYWlzZWQgYnkKLQkgIE1hbGNvbG0gVHJlZGlubmljayB3aXRoIHRoZSBwYXRjaCBoZSBzdWdnZXN0ZWQuCi0KLUZyaSBBdWcgMTUgMDE6Mzc6MTAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhbGxvY2F0aW9uIGVycm9yICMxMTk3ODQgcmFpc2VkIGJ5IE9saXZlciBTdG9lbmViZXJnCi0KLUZyaSBBdWcgMTUgMDA6NDE6NTggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmM6IGZpeGluZyBhbiB1c2Ugb2Ygc3RyY3B5KCkgd2hlcmUgYm90aCBzdHJpbmdzIG92ZXJsYXAKLQkgIHBvaW50ZWQgb3V0IGJ5IHZhbGdyaW5kLgotCi1UaHUgQXVnIDE0IDE3OjEwOjM5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIERPQ0JwYXJzZXIuYyBnbG9iYWxzLmMgaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5Lmg6IGdldCByaWQgb2YKLQkgIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MuCi0JKiB4aW5jbHVkZS5jOiBmaXggdGhlIHBlcmZvcm1hbmNlIHByb2JsZW0gcmVwb3J0ZWQgYnkgS2V2aW4gUnVzY29lCi0JICBwbHVzIHNvbWUgY2xlYW51cCBhbmQgYmV0dGVyIGVycm9yIHJlcG9ydGluZy4KLQotVGh1IEF1ZyAxNCAxNDoxMzo0MyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBhcHBsaWVkIFVURi0xNiBlbmNvZGluZyBoYW5kbGluZyBwYXRjaCBwcm92aWRlZCBieQotCSAgTWFyayBJdHpjb3ZpdHoKLQkqIGVuY29kaW5nLmMgcGFyc2VyLmM6IG1vcmUgY2xlYW51cCBhbmQgZml4ZXMgZm9yIFVURi0xNiB3aGVuIAotCSAgbm90IGhhdmluZyBpY29udiBzdXBwb3J0LgotCi1UaHUgQXVnIDE0IDAzOjE5OjA4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbiBleGFtcGxlL01ha2VmaWxlLmFtIGxpYnhtbC5oIG5hbm9mdHAuYwotCSAgbmFub2h0dHAuYyB4bWxsaW50LmM6IEFwcGxpZWQgcGF0Y2ggZnJvbSBNaWtoYWlsIEdydXNoaW5za2l5IGZvcgotCSAgbWluZ3cgY29tcGlsZXIgb24gV2luZG93cy4KLQotVGh1IEF1ZyAxNCAwMjoyODozNiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgdGhlIHNlcmlvdXMgQ1BVIHVzYWdlIHByb2JsZW0gcmVwb3J0ZWQgYnkKLQkgIEdyYW50IEdvb2RhbGUKLQkqIEhUTUxwYXJzZXIuYzogYXBwbGllZCBwYXRjaCBmcm9tIE9saXZlciBTdG9lbmViZXJnIGFib3V0IGEgZnJlZQotCSAgbWlzc2luZyBpbiBodG1sU0FYUGFyc2VEb2MKLQotVHVlIEF1ZyAxMiAyMjo0ODoxMCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZG9jL01ha2VmaWxlLmFtOiBSZW1vdmVkIGRlcGVuZGVuY3kgZnJvbSBsaWJ4bWwyLmRlZi5zcmMKLQotVHVlIEF1ZyAxMiAxODo1NTowOCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogYXV0b2dlbi5zaDogdG9vayBhd2F5IHRoZSByZXF1aXJlbWVudCBmb3IgYXV0b21ha2UtMS40LAotCSAgY2hhbmdlZCB0aGUgbWVzc2FnZXMgZm9yIGdldHRpbmcgYXV0byogdG9vbHMgdG8gY3VycmVudAotCSAgZ251IHBhZ2VzLgotCSogY29uZmlndXJlLmluOiBhZGRlZCBjaGVjayBmb3IgTGludXggRGVjIGFscGhhIHJlcXVpcmluZwotCSAgLWllZWUgZmxhZywgZml4ZWQgdGVzdCBmb3IgaXB2NgotCSogdHJpb25hbi5jOiBmaXhlZCBwcm9ibGVtIGZvciBjb21waWxpbmcgb24gTGludXggRGVjIGFscGhhCi0JICB1c2luZyBuYXRpdmUgY29tcGlsZXIKLQkqIGRvYy9NYWtlZmlsZS5hbTogaW1wbGVtZW50ZWQgcmVnZW5lcmF0aW9uIG9mIHdpbjMyL2xpYnhtbDIuZGVmLnNyYwotCSAgd2hlbmV2ZXIgbGlieG1sMi1hcGkueG1sIGlzIGNoYW5nZWQuCi0KLU1vbiBBdWcgMTEgMTc6MDI6MjMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGNsZWFuaW5nIHVwIGEgcHJvYmxlbSB3aGVuIHBhcnNpbmcgVVRGLTE2IGFuZCBsaWJpY29udgotCSAgaXMgbm90IHVzZWQuCi0KLVN1biBBdWcgMTAgMDg6MTM6MjIgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogcmVuZXJhdGVkIHdpdGggZml4ZWQgbGlieG1sMi1hcGkueG1sCi0KLVN1biBBdWcgMTAgMDA6MjI6NTUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTmV3cyBjb25maWd1cmUuaW46IHByZXBhcmluZyBsaWJ4bWwyLTIuNS45IHJlbGVhc2UKLQkqIGRvYy8qIDogdXBkYXRlZCB0aGUgZG9jIGFuZCByZWJ1aWx0Ci0KLVNhdCBBdWcgIDkgMjA6MDA6MTMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmggZG9jL2xpYnhtbDItYXBpLnhtbDogY2hhbmdpbmcgYW4gZW51bQotCSAgZGVmaW5pdGlvbiB0byBnZXQgYSBjb3JyZWN0IEFQSSBYTUwgZGVzY3JpcHRpb24uIFRoaXMgd2FzIGFwcGFyZW50bHkKLQkgIGJyZWFraW5nIFdpbmRvd3MgYnVpbGQuCi0KLVNhdCBBdWcgIDkgMTM6NDE6MjEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBmaXhlZCBhIG5hc3R5IGJ1ZyAjMTE5Mzg3LCBiYWQgaGV1cmlzdGljIGZyb20KLQkgIHRoZSBwcm9ncmVzc2l2ZSBIVE1MIHBhcnNlciBmcm9udC1lbmQgb24gbGFyZ2UgY2hhcmFjdGVyIGRhdGEKLQkgIGlzbGFuZCBsZWFkaW5nIHRvIGFuIGVycm9uZW91cyBlbmQgb2YgZGF0YSBkZXRlY3Rpb24gYnkgdGhlCi0JICBwYXJzZXIuIFNvbWUgY2xlYW51cCB0b28gdG8gZ2V0IGNsb3NlciBmcm9tIHRoZSBYTUwgcHJvZ3Jlc3NpdmUKLQkgIHBhcnNlci4KLQotU2F0IEF1ZyAgOSAwMDo0Mjo0NyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogd2luMzIvY29uZmlndXJlLmpzOiBBZGRlZCBpbiBzdXBwb3J0IGZvciB0aGUgSVNPODg1OVgKLQkgIG1vZHVsZSAocGF0Y2ggcHJvdmlkZWQgYnkgSmVzc2UgUGVsdG9uKQotCi1GcmkgQXVnICA4IDE1OjU2OjMyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmMgdHJlZS5jIHRocmVhZHMuYzogaHVtIHRyeSB0byBhdm9pZCBzb21lIHRyb3VibGVzCi0JICB3aGVuIHRoZSBsaWJyYXJ5IGlzIG5vdCBpbml0aWFsaXplZCBhbmQgb25lIHRyeSB0byBzYXZlLCB0aGUgCi0JICBsb2NrcyBpbiB0aHJlYWRlZCBlbnYgbWlnaHQgbm90IGJlZW4gaW5pdGlhbGl6ZWQsIHBsYXlpbmcgc2FmZQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGFwcGx5IHBhdGNoIGZvciBoZXhCaW5hcnkgZnJvbSBDaGFybGVzIEJvemVtYW4KLQkqIHRlc3Qvc2NoZW1hcy9oZXhiaW5hcnlfKiByZXN1bHQvc2NoZW1hcy9oZXhiaW5hcnlfKjogYWxzbyBhZGRlZAotCSAgaGlzIHRlc3RzIHRvIHRoZSByZWdyZXNzaW9uIHN1aXRlLgotCi1GcmkgQXVnICA4IDE4OjQ3OjM4IEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB3aW4zMi9kZWZnZW4ueHNsLCB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IEJ1ZyAxMTkzNDMKLQkgICh3aXRoIGFwb2xvZ2llcyB0byBJZ29yKSAtIEVuaGFuY2VkIGhhbmRsaW5nIG9mIGRvY2IgYW5kCi0JICBuYW5vaHR0cC4KLQotVGh1IEF1ZyAgNyAyMToxMzoyMiBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogZW5jb2RpbmcuYzogZnVydGhlciBzbWFsbCBjaGFuZ2VzIGZvciB3YXJuaW5ncyB3aGVuCi0JICBjb25maWd1cmVkIHdpdGggLS13aXRoLWljb252PW5vCi0KLVdlZCBBdWcgIDYgMTI6MzI6MTEgSEtUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGVycm9yLmMgdHJpb25hbi5bY2hdIHRlc3RUaHJlYWRzLmMgcHl0aG9uL2dlbmVyYXRvci5weToKLQkgIGZ1cnRoZXIgc21hbGwgY2hhbmdlcyB0byBlbG1pbmF0ZSBtb3N0IG9mIHRoZSByZW1haW5pbmcKLQkgIHdhcm5pbmdzLgotCi1UdWUgQXVnICA1IDIzOjUxOjIxIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBlcnJvci5jIEhUTUxwYXJzZXIuYyB0ZXN0QzE0Ti5jIHRlc3RIVE1MLmMgdGVzdFVSSS5jCi0JICB4bWxjYXRhbG9nLmMgeG1sbWVtb3J5LmMgeG1scmVhZGVyLmMgeG1sc2NoZW1hc3R5cGVzLmMKLQkgIHB5dGhvbi9saWJ4bWwuYyBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogc21hbGwgY2hhbmdlcwotCSAgdG8gc3ludGF4IHRvIGdldCByaWQgb2YgY29tcGlsZXIgd2FybmluZ3MuICBObyBjaGFuZ2VzCi0JICB0byBsb2dpYy4KLQotTW9uIEF1ZyAgNCAyMjo0MDo1NCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvbGlieG1sMi1hcGkueG1sIGRvYy9odG1sLyo6IHJlYnVpbHQgdGhlIEFQSSBhbmQgZG9jcy4KLQotTW9uIEF1ZyAgNCAyMTo0MDozNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGVkIGEgc21hbGwgcHJvYmxlbSBpbiB0aGUgcGF0Y2ggZm9yICMxMTg3NjMKLQkqIHJlc3VsdC9IVE1ML2RvYzMuaHRtKjogdGhpcyByZXZlcnRzIGJhY2sgdG8gdGhlIHByZXZpb3VzIHJlc3VsdAotCi1TdW4gQXVnICAzIDIxOjQxOjQ5IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL0ZBUS5odG1sIGRvYy94bWwuaHRtbDogYXBwbGllZCBkb2MgcGF0Y2ggdG8geG1sLmh0bWwKLQkgIGFuZCByZWJ1aWx0LCBhcHBhcmVudGx5IHNvbWUgQysrIHdyYXBwZXJzIGFyZSBub3QgYXZhaWxhYmxlLAotCSAgYy5mLiBidWcgIzExODk0MwotCi1TdW4gQXVnICAzIDIxOjMwOjMxIEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXhpbmcgSFRNTCBhdHRyaWJ1dGUgc2VyaWFsaXphdGlvbiBidWcgIzExODc2MwotCSAgYXBwbHlpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBmcm9tIEJhY2VrCi0JKiByZXN1bHQvSFRNTC9kb2MzLmh0bSo6IHRoaXMgbW9kaWZpZXMgdGhlIG91dHB1dCBmcm9tIG9uZSB0ZXN0Ci0KLVN1biBBdWcgIDMgMjE6MDI6MzAgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBhZGRlZCBhIG5ldyBBUEkgdG8gc3BsaXQgYQotCSAgUU5hbWUgd2l0aG91dCBnZW5lcmF0aW5nIGFueSBtZW1vcnkgYWxsb2NhdGlvbgotCSogdmFsaWQuYzogZml4ZWQgYW5vdGhlciBwcm9ibGVtIHdpdGggbmFtZXNwYWNlcyBvbiBlbGVtZW50Ci0JICBpbiBtaXhlZCBjb250ZW50IGNhc2UKLQkqIHB5dGhvbi90ZXN0cy9yZWFkZXIyLnB5OiB1cGRhdGVkIHRoZSB0ZXN0Y2FzZSB3aXRoIAotCSAgQmpvcm4gUmVlc2UgZml4IHRvIHJlYWRlciBmb3IgdW5zaWduaWZpY2FudCB3aGl0ZSBzcGFjZQotCSogcGFyc2VyLmMgSFRNTHBhcnNlci5jOiBjbGVhbnVwLgotCi1TdW4gQXVnICAzIDIwOjU1OjQwIEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2F0YWxvZy5jOiB0cnlpbmcgdG8gZml4ICMxMTg3NTQgb2YgcG9zc2libGUgcmVjdXJzaW9uIGluIHRoZQotCSAgY2F0YWxvZ3MuIE5vdCBmYW50YXN0aWNhbGx5IGhhcHB5IGFib3V0IHRoZSBjdXJyZW50IGZpeCBzaW5jZQotCSAgaXQncyBsaWtlbHkgdG8gYnJlYWsgdW5kZXIgdmVyeSB0aHJlYWQgaW50ZW5zaXZlIGNvbmN1cnJlbnQKLQkgIGFjY2VzcyB0byB0aGUgY2F0YWxvZy4gQmV0dGVyIHNvbHV0aW9uIG1pZ2h0IHRvIGtlZXAgdGhlIGRlcHRoCi0JICBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUgcmVzb2x1dGlvbiBmdW5jdGlvbnMuCi0KLVN1biBBdWcgIDMgMTg6NTY6NTQgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBmaXhlZCBidWcgIzExODcxMiBhYm91dCBtaXhlZCBjb250ZW50LCBhbmQgbmFtZXNwYWNlZAotCSAgZWxlbWVudCBuYW1lcy4KLQkqIHRlc3QvdmFsaWQvbWl4ZWRfbnMueG1sIHJlc3VsdC92YWxpZC9taXhlZF9ucyo6IGFkZGVkIGEgY2hlY2sKLQkgIGluIHRoZSByZWdyZXNzaW9uIHRlc3RzCi0KLUZyaSBBdWcgMSAyMzo1NToyMyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCUNvbmludWluZyB3b3JrIG9uIGJ1ZyAxMTg1NTkKLQkqIERPQ0JwYXJzZXIuYzogcmVtb3ZlZCAyIHVuc2VkIHZhcnMKLQkqIHhtbHJlZ2V4cC5jOiBjaGFuZ2VkIHNvbWUgbnVtZXJpYyBjb25zdCB0byB0aGVpciBlbnVtIHN5bWJvbHMKLQkqIHhtbHJlYWRlci5jOiBjaGFuZ2VkIG9uZSB2YXIgZGVmaW5lIGZyb20gaW50IHRvIGVudW0KLQkgIChhIGxpdHRsZSBtb3JlIHRvIGJlIGRvbmUsIGF3YWl0aW5nIGNvLW9yZGluYXRpb24pCi0JKiByZWxheG5nLmM6IGRlbGV0ZWQgb25lIHVudXNlZCB2YXIKLQkqIHhtbGxpbnQuYzogZGVsZXRlZCBzb21lIHVudXNlZCB2YXJzLCBjaGFuZ2VkIG9uZSBhcmcKLQkgIHZhbCBmcm9tIGludCB0byBlbnVtCi0JKiB0ZXN0SFRNTC5jLCB0ZXN0RG9jYm9vay5jOiBjaGFuZ2VkIHNvbWUgYXJnIHZhbHMgdG8gZW51bSBjb25zdAotCSogeG1sSU8uYzogZml4ZWQgdHlwbyBmcm9tIGxhc3QgbmlnaHQgKHNtYWxsIHdhcm5pbmcgbXNnKQotCi1UaHUgSnVsIDMxIDIyOjQ0OjMzIEhLVCAyMDAzIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JV29ya2luZyBvbiBidWcgMTE4NTU5Ci0JKiBlcnJvci5jOiBkZWxldGVkIHVudXNlZCB2YXJpYWJsZQotCSogcGFyc2VySW50ZXJuYWxzLmM6IGRlbGV0ZWQgdW5uZWVkZWQgJ2NvbnN0JyBxdWFsaWZpZXIKLQkqIHBhcnNlci5jOiBjaGFuZ2VkIHZhcmlhYmxlIHR5cGUgZm9yIGVudW0gdGVtcCBzdG9yYWdlCi0JKiB4bWxJTy5jOiBjaGFuZ2VkIGRlYnVnZ2luZyB2YXIgdG8gYmUgaW5zaWRlICNpZmRlZgotCSogdmFsaWQuYzogcmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUKLQkqIEhUTUxwYXJzZXIuYzogcmVtb3ZlZCBzb21lIHVubmVlZGVkICdjb25zdCcgcXVhbGlmaWVycwotCSogeHBhdGguYzogYWRkZWQgc29tZSB0eXBlIGNhc3RzLCByZW1vdmVkIHNvbWUgdW51c2VkIHZhcnMKLQkqIHhpbmNsdWRlLmM6IGFkZGVkIG9uZSB0eXBlIGNhc3QKLQkqIG5hbm9odHRwLmM6IHJlcG9zaXRpb25lZCBzb21lICNpZmRlZiB0byBhdm9pZCB1bnVzZWQgdmFyCi0JKiBuYW5vZnRwLmM6IHJlbW92ZWQgdW51c2VkIHZhcgotCi1XZWQgSnVsIDMwIDE0OjU3OjU1IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBXaWxsaWFtIEJyYWNrIGFib3V0Ci0JICB0aGUgcHJvYmxlbSBvZiBwYXJzaW5nIHZlcnkgbGFyZ2UgSFRNTCBpbnN0YW5jZSB3aXRoIGNvbW1lbnRzCi0JICBhcyByYWlzZWQgYnkgTmljayBLZXcKLQotV2VkIEp1bCAzMCAxMjoyOTozOCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oOiBhcHBseWluZyBjbGVhbnVwCi0JICBwYXRjaCBmcm9tIEJqb3JuIFJlZXNlIGZvciB4bWxUZXh0UmVhZGVyTm9kZVR5cGUoKSBhbmQgCi0JICBzaWduaWZpY2FudCB3aGl0ZXNwYWNlLiBUaGVyZSBpcyBhbiBlbnVtIGZvciBub2RlIHR5cGUKLQkgIHZhbHVlcyBub3cuCi0KLVdlZCBKdWwgMzAgMTE6MDg6MjEgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBhcHBseWluZyBwYXRjaCBmcm9tIFBldGVyIEphY29iaSB0byBhZGRlZCAKLQkgIElTTy04ODU5LXggZW5jb2Rpbmcgc3VwcG9ydCB3aGVuIGljb252IGlzIG5vdCBhdmFpbGFibGUKLQkqIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLQkgIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oLmluOiBhZGRlZCB0aGUgZ2x1ZSBuZWVkZWQKLQkgIGF0IHRoZSBjb25maWd1cmUgbGV2ZWwgYW5kIG1hZGUgaXQgdGhlIGRlZmF1bHQgZm9yIFdpbmRvd3MKLQotVHVlIEp1bCAyOSAxNjo0Mzo0OCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0OgotCSAgcGF0Y2ggZnJvbSBKb2FjaGltIEJhdWNoICsgY2xlYW51cCBmb3IgUmVsYXggTkcgZXJyb3IgY2FsbGJhY2tzCi0JICBpbiBweXRob24KLQotVHVlIEp1bCAyOSAxMjo0NjowOCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRyZWUuYzogYXBwbGllZCBQZXRlciBKYWNvYmkgZW5jb2RpbmcKLQkgIGNsZWFudXAgcGF0Y2gsIGFuZCBhbHNvIGF2b2lkZWQgYSBwb3NzaWJsZSBtZW1vcnkgbGVhawotCi1UdWUgSnVsIDI5IDA5OjI4OjA5IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogZml4IHRoZSBwcmV2aW91cyBjb21taXQKLQotVHVlIEp1bCAyOSAxMjoyODoxNyBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogSFRNTHBhcnNlci5jOiBmaXhlZCBwcm9ibGVtIHdpdGggY29tbWVudHMgcmVwb3J0ZWQgYnkgTmljayBLZXcKLQkqIGVuY29kaW5nLmM6IGFkZGVkIHJvdXRpbmVzIHhtbFVURjhTaXplIGFuZCB4bWxVVEY4Q2hhcmNtcCBmb3IKLQkgIHNvbWUgZnV0dXJlIGNsZWFudXAgb2YgVVRGOCBoYW5kbGluZwotCi1Nb24gSnVsIDI4IDE2OjM5OjE0IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogYXBwbGllZCBhIGNoYW5nZSBzdWdnZXN0ZWQgYnkgU2VhbiBHcmlmZmluIGluIGJ1ZwotCSAgIzExODQ5NCBhYm91dCBhIG1lbW9yeSBsZWFrIGluIEVYU0xUCi0KLVN1biBKdWwgMjcgMTQ6MzA6NTYgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGZpeGVkIGEgUmVsYXgtTkcgY29tcGlsYXRpb24vc3RyZWFtaW5nIGJ1ZyBpbnRyb2R1Y2VkCi0JICB3aGVuIGZpeGluZyB0aGUgcHJldmlvdXMgUmVsYXgtTkcgYnVncwotCSogcmVzdWx0L3JlbGF4bmcvKjogVGhpcyBzbGlnaHRseSBjaGFuZ2VzIHRoZSBvdXRwdXQgbWVzc2FnZXMgb2YKLQkgIHNvbWUgcmVncmVzc2lvbiB0ZXN0cy4KLQkqIGNvbmZpZ3VyZS5pbjogYWRkZWQgc3VwcG9ydCBvZiAtd2l0aC1mZXhjZXB0aW9ucyBmb3IgbmVzdGVkIEMrKwotCSAgc3VwcG9ydC4KLQotVGh1IEp1bCAyNCAxNTo0NjowMiBNRFQgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvdHV0b3JpYWwvYXBhLmh0bWwKLQkqIGRvYy90dXRvcmlhbC9hcGIuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FwYy5odG1sCi0JKiBkb2MvdHV0b3JpYWwvYXBkLmh0bWwKLQkqIGRvYy90dXRvcmlhbC9hcGUuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FwZi5odG1sCi0JKiBkb2MvdHV0b3JpYWwvYXBnLmh0bWwKLQkqIGRvYy90dXRvcmlhbC9hcGguaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDIuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDMuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDQuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDUuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDYuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDcuaHRtbAotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDguaHRtbAotCSogZG9jL3R1dG9yaWFsL2luZGV4Lmh0bWwKLQkqIGRvYy90dXRvcmlhbC9peDAxLmh0bWwKLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC5wZGYKLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWwKLQl1cGRhdGUgdHV0b3JpYWwgd2l0aCBYUGF0aCBleGFtcGxlCi0KLVRodSBKdWwgMjQgMTc6MDc6MDYgSVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYyBwYXJzZXIuYzogZml4aW5nIGEgYnVnIGFib3V0IGEgc3BlY2lhbCBjYXNlIG9mIG5hbWVzcGFjZQotCSAgaGFuZGxpbmcsIHRoaXMgY2xvc2VzIGJ1ZyAjMTE2ODQxCi0KLVdlZCBKdWwgMjMgMjA6NTI6MzYgSVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmMgcmVzdWx0L3JlbGF4bmcvKjogY2hlY2tlZCBhbmQgZml4ZWQgdGhlIGNvbXBpbGF0aW9uCi0JICBvZiBSTkcgc2NoZW1hcywgZml4ZXMgYSBjb3VwbGUgb2YgYnVncyAjMTE3MDk3IGFuZCAjMTE3MDAxIC4KLQkgIFRoaXMgc2xpZ2h0bHkgY2hhbmdlcyB0aGUgb3V0cHV0IG1lc3NhZ2VzIG9mIHNvbWUgcmVncmVzc2lvbiB0ZXN0cy4KLQotV2VkIEp1bCAyMyAxNToxNTowOCBJU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBmaXhlZCBhbiBvdXQgb2YgYm91bmQgZXJyb3IgIzExODA1MiAsIHRoZSBnb29kCi0JICBwYXJ0IGlmIHRoYXQgYmFzZTY0IGNvZGUgd2FzIG5vdCBpbiB1c2UgeWV0IC4uLgotCi1UdWUgSnVsIDIyIDE5OjQyOjE1IE1EVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50Lmh0bWwKLQlpbmNsdWRlIGh0bWwgdmVyc2lvbiBvZiB0aGUgeG1sbGludCBtYW4gcGFnZSwgc28gYW4KLQl1cC10by1kYXRlIHZlcnNpb24gaXMgdmlzaWJsZSBvbiB0aGUgV2ViCi0KLU1vbiBKdWwgMjEgMjE6NTM6NDMgSVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jIGluY2x1ZGUvbGlieG1sL3hpbmNsdWRlLmg6IGFkZGVkIGEgbmV3IEFQSQotCSAgeG1sWEluY2x1ZGVQcm9jZXNzVHJlZSgpIHRvIHByb2Nlc3MgWEluY2x1ZGUgb25seSBvbiBhIHN1YnRyZWUKLQkgIHRoaXMgc2hvdWxkIGZpeCBidWcgIzExNTM4NQotCi1GcmkgSnVsIDE4IDE3OjExOjQyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYyBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmg6IGFkZGluZyBHZXQgaW50ZXJmYWNlIGZvcgotCSAgdGhlIGVycm9yIGNhbGxiYWNrIGFuZCBwYXJhbWV0ZXJzIG9mIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24KLQkgIGNvbnRleHRzCi0JKiB4bWxyZWFkZXIuYzogcGF0Y2ggdG8gZml4IGJ1ZyAjMTE3NzAyIGFib3V0IGluY29tcGxldGUgUmVhZCgpCi0JICBvbiB0ZXh0IG5vZGVzLgotCi1XZWQgSnVsIDE2IDIzOjE1OjUzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlckludGVybmFscy5jOiBwYXRjaCBmcm9tIERvZGppIFNla2V0ZWxpIGFib3V0IFVURjE2IEJPTQotCSAgd2hlbiB1c2luZyB0aGUgcHVzaCBYTUwgcGFyc2VyLgotCSogcmVzdWx0L3V0ZjE2Ym9tLnhtbCByZXN1bHQvbm9lbnQvdXRmMTZib20ueG1sIHRlc3QvdXRmMTZib20ueG1sOgotCSAgYWRkZWQgdGhlIHRlc3QgdG8gdGhlIHJlZ3Jlc3Npb24gc3VpdGUuCi0KLVR1ZSBKdWwgMTUgMjI6MDM6MTMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2xvYmFscy5jOiBhZGQgeG1sVGhyRGVmTXV0ZXggPSBOVUxMIGluIHhtbENsZWFudXBHbG9iYWxzKCkgCi0JICBhcyBzdWdnZXN0ZWQgYnkgUm9iIFJpY2hhcmRzCi0KLVR1ZSBKdWwgMTUgMTU6MzA6NTUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogRE9DQnBhcnNlci5jIEhUTUxwYXJzZXIuYyBlbnRpdGllcy5jIHBhcnNlci5jIHJlbGF4bmcuYyAKLQkgIHhtbHNjaGVtYXMuYyB4cGF0aC5jOiByZW1vdmVkIHNvbWUgd2FybmluZ3MgYnkgY2FzdGluZyB4bWxDaGFyCi0JICB0byB1bnNpZ25lZCBpbnQgYW5kIGEgY291cGxlIG9mIG90aGVycy4KLQotRnJpIEp1bCAxMSAxNjo0NDoyMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogZml4ZXMgYSBzZWdmYXVsdCBvbiBlbXB0eSBoZXhCaW5hcnkgc3RyaW5ncwotCi1UaHUgSnVsIDEwIDE2OjAyOjQ3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiBjbGVhbnVwIHBhdGNoZXMgZnJvbSBQZXRlciBCcmVpdGVubG9obmVyCi0KLVR1ZSBKdWwgIDggMTY6MDI6MTkgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2xvYmFscy5jIHRocmVhZHMuYzogZml4ZXMgc29tZSBwcm9ibGVtIHdoZW4gZnJlZWluZyB1bml0aXRpYWxpemVkCi0JICBtdXRleGVzCi0KLVR1ZSBKdWwgIDggMTQ6MTU6MDcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbmFub2Z0cC5jIG5hbm9odHRwLmM6IHRoZSBtb2R1bGVzIHNob3VsZCBub3QgaW1wb3J0IDxjb25maWcuaD4KLQkgIGRpcmVjdGx5LCBzb21lIGNsZWFudXBzCi0JKiB4bWxzY2hlbWFzLmM6IFBldGVyIFNvYmlzY2ggZm91bmQgYSBuYXN0eSBidWcgaW4gdGhlIFNjaGVtYXMKLQkgIHZhbGlkYXRpb24gY29kZS4KLQotTW9uIEp1bCAgNyAxODowMDo1MSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IEplc3NlIFBlbHRvbiBwb2ludGVkIG91dCBhIHByb2JsZW0gaW4gdGhlCi0JICBqYXZhc2NyaXB0IGNvZGUuCi0KLU1vbiBKdWwgIDcgMTY6Mzk6MzEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBkb2MvKjogcmVnZW5lcmF0ZWQKLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiBtaWdodCBmaXggaW5jbHVkZXMgcHJvYmxlbXMgd2l0aCB0aGUKLQkgIElwdjYgc3VwcG9ydCBvbiBzb2xhcmlzCi0JKiB0cmVlLmM6IHBhdGNoIGZyb20gTWFya3VzIEtlaW0gYWJvdXQgeG1sSGFzTnNQcm9wKCkgb24gYXR0cmlidXRlcwotCSAgZGVmaW5lZCBhcyAjSU1QTElFRAotCi1TdW4gSnVsICA2IDIzOjA5OjEzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBkb2MvKjogcHJlcGFyaW5nIHJlbGVhc2UgMi41LjgKLQkqIG5hbm9odHRwLmM6IGNoYW5nZWQgc29tZSBwcmVwcm9jZXNzb3IgYmxvY2sKLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQ2hhcmxlcyBCb3plbWFuIGFkZGluZwotCSAgaGV4QmluYXJ5IHNjaGVtYSBkYXRhdHlwZSBhbmQgYWRkaW5nIHN1cHBvcnQgZm9yIHRvdGFsRGlnaXRzIGFuZAotCSAgZnJhY3Rpb25EaWdpdHMgZmFjZXRzLgotCi1TdW4gSnVsICA2IDE5OjU2OjE4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRlYnVnWE1MLmMgeHBhdGguYzogZml4ZWQgMiBidWdzIHBvaW50ZWQgaW4gIzExNjQ0OAotCi1TdW4gSnVsICA2IDE5OjM0OjE3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmM6IGZpeGVkIGJ1ZyAjMTE2MDk1IHJlbW92aW5nIHRoZSBlcnJvciBtZXNzYWdlIHdoZW4KLQkgIHJlYXBwbHlpbmcgWEluY2x1ZGUgdG8gYSBkb2N1bWVudC4KLQotU2F0IEp1bCAgNSAyMjo0MDoyMyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBhcHBsaWVkIHNtYWxsIGNoYW5nZXMgdG8gcG9ydGFiaWxpdHkgbGF5ZXIgZm9yIAotCSAgY29tcGlsYXRpb24gb24gREpHUFAgTXMtRE9TIGNvbXBpbGVyLgotCi1TYXQgSnVsICA1IDIyOjMwOjI1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIEhUTUxwYXJzZXIuYzogdXNlIHRoZSBjaGFyYWN0ZXIoKSBTQVggY2FsbGJhY2sKLQkgIGlmIHRoZSBjZGF0YUJsb2NrIGFpbid0IGRlZmluZWQuCi0JKiB4cGF0aC5jOiBmaXggYnVnICMxMTUzNDkgYWxsb3dpbmcgY29tcGlsYXRpb24gd2hlbiBjb25maWd1cmVkCi0JICB3aXRoIC0td2l0aG91dC14cGF0aCBzaW5jZSB0aGUgU2NoZW1hcyBjb2RlIG5lZWRzIE5BTiBhbmQgY28uCi0KLVNhdCBKdWwgNSAwMDo1MTozMCBIS1QgMjAwMyBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCUZpeGVkIHByb2JsZW0gd2l0aCBtdWx0aS10aHJlYWRpbmcsIHNob3duIGJ5IHRoZSB0ZXN0IHByb2dyYW0KLQl0ZXN0VGhyZWFkcy4gIEFmdGVyIGZpeCwgcmFuIG11dGlwbGUgdGVzdHMgb24gdmFyaW91cyBzcGVlZAotCW1hY2hpbmVzIChzaW5nbGUgYW5kIGR1YWwgcHJvY2Vzc29yIFg4NiksIHdoaWNoIGFsbCBzZWVtIG9rYXkuCi0KLQkqIGNhdGFsb2cuYzogYWRkZWQgbWlzc2luZyB4bWxSTXV0ZXhVbmxvY2sgaW4geG1sTG9hZENhdGFsb2cKLQotCSogdGhyZWFkcy5jOiBhZGRlZCBtaXNzaW5nIGluaXRpYWxpc2F0aW9uIGZvciBjb25kaXRpb24gdmFyaWFibGUKLQkgIGluIHhtbE5ld1JNdXRleC4KLQotU2F0IEp1biAyMSAxNjoxMDoyNCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JQXBwbHlpbmcgSVB2NiBwYXRjaCBmcm9tIEFyY2hhbmEgU2hhaCA8YXJjaGFuYS5zaGFoQHdpcHJvLmNvbT4KLQljbG9zaW5nIGJ1ZyAjMTE0ODM3Ci0KLQkqIGNvbmZpZ3VyZS5pbjogQWRkZWQgY2hlY2tzIGZvciBJUHY2IHN1cHBvcnQgYW5kIGdldGFkZHJpbmZvKCkuCi0KLQkqIGFjY29uZmlnLmg6IERlZmluZWQgSEFWRV9HRVRBRERSSU5GTyBhbmQgU1VQUE9SVF9JUDYuCi0KLQkqIGNvbmZpZy5oLmluOiBEZWZpbmVkIEhBVkVfR0VUQUREUklORk8gYW5kIFNVUFBPUlRfSVA2LgotCi0JKiBuYW5vZnRwLmM6IFN0cnVjdHVyZSB4bWxOYW5vRlRQQ3R4dCBjb250YWlucyBlaXRoZXIgc29ja2FkZHJfc3RvcmFnZQotCSAgZmllbGQgb3Igc29ja2FkZHJfaW4gZmllbGQsIGRlcGVuZGluZyB1cG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgSVB2NgotCSAgc3VwcG9ydC4KLQkgIGhhdmVfaXB2NigpOiBBZGRlZCB0byBjaGVjayBmb3IgcnVuLXRpbWUgSVB2NiBzdXBwb3J0LgotCSAgKHhtbE5hbm9GVFBTY2FuVVJMKSwgKHhtbE5hbm9GVFBVcGRhdGVVUkwpLCAoeG1sTmFub0ZUUFNjYW5Qcm94eSk6Ci0JICBNb2RpZmllZCB0byBwYXJzZSBhIFVSSSB3aXRoIElQdjYgYWRkcmVzcyBnaXZlbiBpbiBbXS4KLQkgICh4bWxOYW5vRlRQQ29ubmVjdCk6IENoYW5nZWQgdG8gdXNlIGdldGFkZHJpbmZvIGZvciBhZGRyZXNzCi0JICByZXNvbHV0aW9uLCBpZiBpdCBpcyBhdmFpbGFibGUgb24gdGhlIHN5c3RlbSwgYXMgZ2V0aG9zdGJ5bmFtZQotCSAgZG9lcyBub3QgcmV0dXJuIElQdjYgYWRkcmVzc2VzIG9uIHNvbWUgcGxhdGZvcm1zLgotCSAgKHhtbE5hbm9GVFBHZXRDb25uZWN0aW9uKTogTW9kaWZpZWQgdHlwZSBvZiBkYXRhQWRkciB2YXJpYWJsZSB0bwotCSAgc29ja2FkZHJfc3RvcmFnZSBvciBzb2NrYWRkcl9pbiBkZXBlbmRpbmcgdXBvbiB0aGUgSVB2NiBzdXBwb3J0LgotCSAgU2VuZGluZyBFUFNWLCBFUFJUIG9yIFBBU1YsIFBPUlQgZGVwZW5kaW5nIHVwb24gdGhlIHR5cGUgb2YgYWRkcmVzcwotCSAgd2UgYXJlIGRlYWxpbmcgd2l0aC4KLQotCSogbmFub2h0dHAuYzogKGhhdmVfaXB2Nik6IEFkZGVkIHRvIGNoZWNrIGZvciBydW4tdGltZSBJUHY2IHN1cHBvcnQuCi0JICAoeG1sTmFub0hUVFBTY2FuVVJMKSwgKHhtbE5hbm9IVFRQU2NhblByb3h5KTogTW9kaWZpZWQgdG8gcGFyc2UKLQkgIGEgVVJJIHdpdGggSVB2NiBhZGRyZXNzIGdpdmVuIGluIFtdLgotCSAgKHhtbE5hbm9IVFRQQ29ubmVjdEhvc3QpOiBNb2RpZmllZCB0byB1c2UgZ2V0YWRkcmluZm8gaWYgaXQgaXMKLQkgIGF2YWlsYWJsZSBvbiB0aGUgc3lzdGVtLiBBbHNvIElQdjYgYWRkcmVzc2VzIHdpbGwgYmUgcmVzb2x2ZWQgYnkKLQkgIGdldGhvc3RieW5hbWUgb25seSBpZiBJUHY2IHJ1bi10aW1lIHN1cHBvcnQgaXMgYXZhaWxhYmxlLgotCSAgKHhtbE5hbm9IVFRQQ29ubmVjdEF0dGVtcHQpOiBNb2RpZmllZCB0byBkZWFsIHdpdGggSVB2NiBhZGRyZXNzLgotCi1TYXQgSnVuIDE0IDE4OjQ2OjUxIENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanMgaW5jbHVkZS93aW4zMmNvbmZpZy5oIAotCSAgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOiBBcHBsaWVkIHRoZSBwYXRjaCBmb3IgQkNCCi0JICBieSBFcmljIFp1cmNoZXIuCi0KLUZyaSBKdW4gMTMgMTQ6Mjc6MTkgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL01ha2VmaWxlLmFtIGRvYy9odG1sLyo6IHJldmVydGVkIGJhY2sgcGF0Y2ggZm9yICMxMTM1MjEsCi0JICBkdWUgdG8gIzExNTEwNCBhbmQgd2hpbGUgZml4aW5nICMxMTUxMDEgLiBIVE1MIFVSTHMgbXVzdCBub3QKLQkgIGJlIHZlcnNpb24gZGVwZW5kYW50LgotCi1GcmkgSnVuIDEzIDEyOjAzOjMwIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IGRvIG5vdCBnZW5lcmF0ZSAmcXVvdDsgZm9yICIgb3V0c2lkZSBvZiBhdHRyaWJ1dGVzCi0JKiByZXN1bHQvLyo6IHRoaXMgY2hhbmdlcyB0aGUgb3V0cHV0IG9mIHNvbWUgdGVzdHMKLQotTW9uIEp1biAgOSAxMjoyODo1OCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyB4bWxJTy5jOiB0cnlpbmcgdG8gZml4ICMxMTQyNzcgYWJvdXQgd2hlbiBmaWxlCi0JICByZW1hcHBpbmcgYW5kIGVzY2FwaW5nIHNob3VsZCByZWFsbHkgYmUgYXR0ZW1wdGVkLgotCi1Nb24gSnVuICA5IDExOjA2OjA5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBHbWFuIGZvciBidWlsZGluZyBkb2NzCi0JKiB2YWxpZC5jIHhtbGxpbnQuYyBpbmNsdWRlL2xpYnhtbC92YWxpZC5oOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbQotCSAgR2FyeSBQZW5uaW5ndG9uIHRvIHByb3ZpZGUgYW4gYWxsb2NhdG9yIGZvciB4bWxWYWxpZEN0eHQKLQkqIHhtbHJlYWRlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gSmFjZWsgS29uaWVjem55IGZpeGluZyBidWcKLQkgICMxMTM1ODAgYWJvdXQgZGF0YSBub3QgYmVpbmcgcGFzc2VkIGltbWVkaWF0ZWx5LgotCi1UaHUgSnVuICA1IDExOjMxOjAyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogYXBwbGllZCBhIGNvdXBsZSBvZiBwYXRjaGVzIGZyb20gTWFyayBJdHpjb3ZpdHoKLQkgIHRvIGhhbmRsZSBzYXZpbmcgYmFjayAiVVRGLTE2IiBkb2N1bWVudHMuCi0KLU1vbiBKdW4gIDIgMjE6NTY6MTUgTVZUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmMgeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3NjaGVtYXNJbnRlcm5hbHMuaDogY29tbWl0aW5nCi0JICBzb21lIHdvcmsgZG9uZSB3aGlsZSBpbiB0aGUgTWFsZGl2ZXMgKGhlbmNlIHRoZSB0aW1lem9uZSBvbiB0aGUKLQkgIGxhcHRvcCAhKQotCSogcmVzdWx0L3NjaGVtYXMvbGVuZ3RoMyogdGVzdC9zY2hlbWFzL2RldGVyMF8qCi0JICB0ZXN0L3NjaGVtYXMvZ3JvdXAwXyo6IHNvbWUgdGVzdHMgYWRkZWQgdG9vCi0KLU1vbiBKdW4gIDIgMTU6MzQ6MTcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogc21hbGwgZml4Ci0JKiB4bWxJTy5jOiBmaXhlZCBhbiBlcnJvciBtZXNzYWdlCi0KLVR1ZSBNYXkgMjAgMTQ6MjE6MjMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VySW50ZXJuYWxzLmM6IGZpeGluZyBSZWQgSGF0IGJ1ZyAjOTEwMTMgd2hlcmUgeG1sbGludCB3YXMKLQkgIGFjY2VwdGluZyBhbiBpbXByb3BlciBVVEY4IHNlcXVlbmNlCi0KLVNhdCBNYXkgMTcgMTI6NTM6MTEgQ0VTVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHpsYXRrb3ZpYy5jb20+Ci0KLQkqIHRocmVhZHMuYzogYXBwbGllZCB0aGUgcGF0Y2ggZnJvbSBTdOlwaGFuZSBCaWRvdWwgZm9yIGdldHRpbmcKLQkgIHJpZCBvZiBleHRyYSB0aHJlYWRzIGluIGEgZHluYW1pYyBsaWJyYXJ5LgotCSogd2luMzIvY29uZmlndXJlLmpzOiB0aHJlYWRzIGRlZmF1bHQgdG8gJ25hdGl2ZScgbm93LgotCi1GcmkgTWF5IDE2IDEzOjE3OjUyIEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogZml4aW5nICBidWcgIzExMjkwNDogaHRtbCBvdXRwdXQgbWV0aG9kIGVzY2FwZWQKLQkgIHBsdXMgc2lnbiBjaGFyYWN0ZXIgaW4gVVJJIGF0dHJpYnV0ZS4KLQotVGh1IE1heSAxNSAxODowNjoxOCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGJ1aWxkX2dsb2IucHkgZ2xvYmFsLmRhdGEgZ2xvYmFscy5jIHBhcnNlci5jCi0JICBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmg6IHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIGZvciBzZXR0aW5nCi0JICB1cCB0aHJlYWRzIGdsb2JhbCBkZWZhdWx0cy4KLQkqIGRvYy9saWJ4bWwyLWFwaS54bWw6IHRoaXMgZXh0ZW5kcyB0aGUgQVBJIHdpdGggbmV3IGZ1bmN0aW9ucwotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9yZWFkZXIyLnB5Ci0JICBweXRob24vdGVzdHMvdGhyZWFkMi5weTogaW50ZWdyYXRlZCB0aGUgYXNzb2NpYXRlZCB0ZXN0Y2FzZSBhbmQKLQkgIGZpeGVkIHRoZSBlcnJvciBzdHJpbmcgdXNlZCBpbiByZWFkZXIyCi0KLVdlZCBNYXkgMTQgMTQ6NTY6NDYgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gbGlieG1sLnNwZWMuaW4gcHl0aG9uL01ha2VmaWxlLmFtOiB0cnlpbmcKLQkgIHRvIGNvbmNpbGlhdGUgLS13aXRoLXB5dGhvbj0gcmVxdWlyZW1lbnRzIGFuZCBSUE0gYnVpbGRzLAotCSAgYSBQSVRBIHJlYWxseS4uLgotCi1UdWUgTWF5IDEzIDE4OjMwOjM0IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBvb3BzIGxhc3QgY29tbWl0IGludHJvZHVjZWQgYSBtZW1vcnkgbGVhay4KLQotVHVlIE1heSAxMyAxODoxMDozOCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYyBkb2MveG1sbGludC54bWw6IGFkZGVkIC0tbm9uZXQgb3B0aW9uCi0JKiBkb2MvTWFrZWZpbGUuYW06IGZpeGluZyAjMTEyODAzIGJ5IGFkZGluZyAtLW5vbmV0IHdoZW4gY2FsbGluZwotCSAgeHNsdHByb2Mgb3IgeG1sbGludAotCSogZG9jL3htbGxpbnQueG1sIGRvYy94bWxsaW50LjE6IGFsc28gYWRkZWQgLS1zY2hlbWEgZG9jIGFuZAotCSAgcmVidWlsdAotCSogSFRNTHBhcnNlci5jOiBjbGVhbmVkIHVwIHRoZSBIVE1MIHBhcnNlciBjb250ZXh0IGJ1aWxkIHdoZW4gCi0JICB1c2luZyBhbiBVUkwKLQotVHVlIE1heSAxMyAxNjozNTowNCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5zcGVjLmluOiBhZGRlZCBhIGNvbW1lbnQgYWJvdXQgYnVnICMxMTI5MDIgCi0KLU1vbiBNYXkgMTIgMjE6NTg6MDAgRURUIDIwMDMgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIG1pbm9yIGNsZWFudXAgb2YgY29uZmlndXJlICctLWhlbHAnIGRpc3BsYXkKLQkqIGVycm9yLmM6IGVuaGFuY2VkIHhtbFBhcnNlclByaW50RmlsZUNvbnRleHQgdG8gZml4IGJ1ZyAjMTA5OTQyCi0KLU1vbiBNYXkgMTIgMTc6NTM6MzAgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IFBJIG5vZGVzIGluIGV4dGVybmFsIHN1YnNldCB3ZXJlIG5vdCBmcmVlZCA6LVwKLQkgIGZpeGVzIGJ1ZyAjMTEyODQyCi0KLU1vbiBNYXkgMTIgMTE6MjM6MjcgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IGFkZGVkIC0tc2NoZW1hIG9wdGlvbiB0byBydW4gV1hTIHNjaGVtYSB2YWxpZGF0aW9uCi0JKiB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oOgotCSAgdHJpZWQgdG8gaW1wcm92ZSBlcnJvciByZXBvcnRpbmcgaW4gdGhlIFNjaGVtYSBjb2RlLCBzb21lIGNsZWFudXAKLQkgIHRvby4KLQotU3VuIE1heSAxMSAxNjoxMzoyMCBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogZml4ZWQgc29tZSBwcm9ibGVtcyBpbiB0aGUgaGFuZGxpbmcgb2YgZXJyb3JzLAotCSAgYW5kIGF0dHJpYnV0ZXMgYWRkcmVzc2VkIGJ5IHJlZmVyZW5jZXMuCi0JKiB0ZXN0L3NjaGVtYXMvKiByZXN1bHQvc2NoZW1hcy8qOiBkcm9wcGVkIHRoZSB2ZXJib3NpdHkgbGV2ZWwKLQkgIGFuZCBhZGRlZCBhIGNvdXBsZSBvZiBuZXcgdGVzdHMKLQotU2F0IE1heSAxMCAxNjowMToyMSBFRFQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogU3TpcGhhbmUgQmlkb3VsIGZvdW5kIGFuIG9mZiBieSBvbmUgYWRkcmVzc2luZwotCSAgZXJyb3Igb24gdGhlIGVycm9yIGhhbmRsaW5nLgotCi1GcmkgTWF5ICA5IDE5OjA4OjIwIEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IHRyeWluZyB0byBmaXggIzExMjY3MwotCi1GcmkgTWF5ICA5IDE4OjE0OjE2IEVEVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogRE9DQnBhcnNlci5jIGNhdGFsb2cuYyBwYXJzZXIuYyByZWxheG5nLmM6IHJlbW92ZWQgbXVsdGlwbGUKLQkgIHdhcm5pbmcsIHRoaXMgZml4ZWQgYSBidWcgYW5kIHNob3VsZCBjbG9zZSAjMTExNTc0Ci0KLUZyaSBNYXkgIDkgMTU6MzQ6MzIgRURUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGZpeGluZyBidWcgIzEwNDA4MSB3aXRoIHhzOmFsbCB3aXRoIGFuIGVsZW1lbnQKLQkgIGhvbGRpbmcgbWluT2NjdXJzPSIwIgotCSogdGVzdC9zY2hlbWFzL2FsbF8qIHJlc3VsdC9zY2hlbWFzL2FsbF8qOiBhZGRlZCBzb21lIHJlZ3Jlc3Npb24KLQkgIHRlc3RzIGZvciB0aGF0IGJ1ZwotCSogeG1sbGludC5jIHhtbHJlYWRlci5jOiBwYXRjaGVzIGZyb20gSm9lcmcgU2NobWl0ei1MaW5uZXdlYmVyIGFuZAotCSAgR2FycnkgUGVubmluZ3RvbiB0byBjb21waWxlIHdpdGhvdXQgc2NoZW1hcyBzdXBwb3J0LgotCi1UaHUgTWF5ICAxIDEwOjAyOjM1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogZml4ZWQgYSBwcm9ibGVtIHdpdGggeG1sVW5saW5rTm9kZSgpIGZvciBEVERzLgotCi1XZWQgQXByIDMwIDE0OjE2OjA4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbDItY29uZmlnLmluOiB0cnkgdG8gZml4IFJlZCBoYXQgYnVnICM4OTk1NywgZG8gbm90Ci0JICBvdXRwdXQgLUwvdXNyL2xpYjY0Ci0JKiB4bWxyZWFkZXIuYzogZml4ZWQgYSB0eXBvIGluIGEgY29tbWVudAotCi1UdWUgQXByIDI5IDA3OjMyOjAyIE1EVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5lbnQ+Ci0KLQkqIGRvYy90dXRvcmlhbC9hcGguaHRtbCwgaXgwMS5odG1sCi0JZm9yZ290IHRvIGN2cyBhZGQgdGhlIG5ldyBmaWxlcy4gVGhhbmtzIHRvIFJvbGFuZCB2YW4gTGFhcgotCWZvciBwb2ludGluZyB0aGlzIG91dAotCi1UdWUgQXByIDI5IDE0OjM2OjQ5IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYyBkb2MvbGlieG1sMi1hcGkueG1sOiBmaXhpbmcgYSBmdW5jdGlvbiBjb21tZW50Ci0JKiBkb2MvTWFrZWZpbGUuYW0gZG9jL2FwaWJ1aWxkLnB5IGRvYy9nbm9tZS14bWwuc2dtbDogc3dpdGNoaW5nCi0JICB0byB0aGUgWE1ML1hTTFQgZG9jIGdlbmVyYXRpb24gY2xvc2luZyAjMTExNzk5Ci0JKiBkb2MvaHRtbC8qOiBjb21wbGV0ZSB1cGRhdGUgb2YgdGhlIEhUTUwgcmVzdWx0cwotCi1Nb24gQXByIDI4IDE0OjUxOjQxIENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9kZWZnZW4ueHNsOiBmaXhlZCB0aGUgY29uZGl0aW9uYWwgZm9yIHVuaWNvZGUgbWFwLAotCSAgcmVtb3ZlZCBoYXJkY29kZWQgc2NoZW1hIGVudHJpZXMKLQotTW9uIEFwciAyOCAwMjoxOTowMCBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogd2luMzIvZGVmZ2VuLnhzbDogbmV3IGZpbGUsIHN0eWxlc2hlZXQgZm9yIGdlbmVyYXRpbmcgCi0JICB3aW4zMi9saWJ4bWwyLmRlZi5zcmMgZnJvbSBkb2MvbGlieG1sMi1hcGkueG1sCi0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IGlzIGF1dG9nZW5lcmF0ZWQgZnJvbSBub3cgb24sIGNoYW5nZXMKLQkgIHRvIHRoaXMgZmlsZSB3aWxsIG5vdCBhcHBlYXIgaGVyZSBhbnltb3JlCi0KLU1vbiBBcHIgMjggMDA6MTI6MTEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogd2luMzIvY29uZmlndXJlLmpzIHB5dGhvbi9zZXR1cC5weS5pbjogYXBwbGllZCBwYXRjaAotCSAgZnJvbSBTdOlwaGFuZSBCaWRvdWwgZm9yIHRoZSBQeXRob24gYmluZGluZ3Mgb24gdGhlIG5ldwotCSAgcmVsZWFzZS4KLQotU3VuIEFwciAyNyAxNzo1NjoyMSBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogZGVidWdYTUwuYzogaW5jbHVkZWQgbGlieG1sL3VyaS5oIGZvciB4bWxDYW5vbmljUGF0aAotCSAgZGVjbGFyYXRpb24KLQkqIHdpbjMyL2NvbmZpZ3VyZS5qczogdGhyZWFkLWVuYWJsZWQgYnVpbGQgaXMgbm93IGRlZmF1bHQKLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogYWRkZWQgbW9yZSBleHBvcnRzCi0KLVN1biBBcHIgMjcgMDA6MjM6MDUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBkb2MvKi54c2wgZG9jLyouaHRtbDogdXBkYXRlZCB0aGUgd2ViIHNpdGUgc2VwYXJhdGVkCi0JICBkZXZlbG9wZXJzIGZyb20gY29tbW9uIHBhZ2VzLCBtYWRlIHRoZSB0cmFuc2l0aW9uIHRvIFhIVE1MMSwKLQkgIGFkZGVkIHZhbGlkaXR5IGNoZWNraW5nIHRvIHRoZSBtYWtlZmlsZSBydWxlcy4KLQotU2F0IEFwciAyNiAyMzoxNzo1MSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4IGZvciB4bWxJT1BhcnNlRFREIHNhbWUgYXMgcHJldmlvdXMgYW5kIHJlcG9ydGVkCi0JICBieSBQZXRyIFBhamFzCi0KLVNhdCBBcHIgMjYgMTU6MjY6MDQgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGFwcGxpZWQgZml4IHRvIHhtbFNBWFBhcnNlRFREIGZyb20gTWFsY29sbSBUcmVkaW5uaWNrCi0JICBjbG9zaW5nICMxMTE2MzgKLQotU2F0IEFwciAyNiAxNDowMDo1OCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5OiBmaXhlZCBhIHByb2JsZW0gaW4gdGhlIGdlbmVyYXRvciB3aGVyZQotCSAgdGhlIHdheSBmdW5jdGlvbnMgYXJlIHJlbWFwcGVkIGFzIG1ldGhvZHMgb24gY2xhc3NlcyB3YXMKLQkgIG5vdCBzeW1ldHJpYyBhbmQgZGVwZW5kYW50IG9uIHB5dGhvbiBpbnRlcm5hbCBoYXNoIG9yZGVyLAotCSAgYXMgcmVwb3J0ZWQgYnkgU3TpcGhhbmUgQmlkb3VsCi0KLUZyaSBBcHIgMjUgMjE6NTI6MzMgTURUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3R1dG9yaWFsOgotCXhtbHR1dG9yaWFsLnhtbAotCXhtbHR1dG9yaWFsLnBkZgotCSouaHRtbAotCWFkZCBhcHBlbmRpeCBvbiBnZW5lcmF0aW5nIGNvbXBpbGVyIGZsYWdzLCBtb3JlIGluZGV4aW5nCi0KLVNhdCBBcHIgMjYgMDE6MTA6NDggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJpb2RlZi5oIHZtcy9idWlsZF9saWJ4bWwuY29tOiBhcHBsaWVkIHBhdGNoIGZyb20gQ3JhaWcgQS4gQmVycnkKLQkgIHRvIGdldCBsaWJ4bWwtMi41LjcgdG8gY29tcGlsZSBvbiBPcGVuVk1TCi0KLUZyaSBBcHIgMjUgMTg6NDI6MzUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGluZyBhbiB4bWxQYXJzZURURCBidWcgcmFpc2VkIGJ5IFBldHIgUGFqYXMKLQotRnJpIEFwciAyNSAxNToyMDoyOSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvTWFrZWZpbGUuYW0gZG9jL3htbGNhdGFsb2cuMSBkb2MveG1sY2F0YWxvZ19tYW4ueG1sCi0JICBkb2MveG1sbGludC4xIGRvYy94bWxsaW50LnhtbDogYXV0b21hdGVkIHRoZSBnZW5lcmF0aW9uIG9mIHRoZQotCSAgbWFuIHBhZ2UgYmFzZWQgb24geHNsdHByb2MgYW5kIGEgc3R5bGVzaGVldCBQSSBpbiB0aGUgWE1MLgotCi1GcmkgQXByIDI1IDEyOjM3OjMzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy94bWxsaW50Lio6IHRyeWluZyB0byBmaXggIzExMDU0MSB3aGVyZSAmbmJzcDsgZ2VuZXJhdGVkCi0JICBjaGFyYWN0ZXIgcHJldmVudGluZyByZW5kZXJpbmcgYnkgdGhlIG1hbiBjb21tYW5kLgotCi1GcmkgQXByIDI1IDAxOjA5OjIzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE5FV1MgY29uZmlndXJlLmluOiBwcmVwYXJpbmcgcmVsZWFzZSAyLjUuNwotCSogZG9jLyo6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvY3MKLQkqIGRvYy9hcGlidWlsZC5weTogZml4ZWQgdGhlIHNjcmlwdAotCi1UaHUgQXByIDI0IDE5OjExOjEyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGRvYy9hcGlidWlsZC5weTogbWFrZSBzdXJlIHRoZSBPT00gY29kZSBkb24ndAotCSAgZ2V0IGluIHRoZSB3YXkgb2YgdGhlIGJ1aWxkcwotCSogZG9jL2xpYnhtbDItYXBpLnhtbCBweXRob24vbGlieG1sMmNsYXNzLnR4dDogYXV0b21hdGljIHVwZGF0ZQotCi1UaHUgQXByIDI0IDE4OjAxOjQ2IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHRlc3RPT00uYyB0ZXN0T09NbGliLltjaF0gOiBpbnRlZ3JhdGVkIHRoZSBPdXQgT2YKLQkgIE1lbW9yeSB0ZXN0IGZyb20gSGF2b2MgUGVubmluZ3RvbiAjMTA5MzY4Ci0JKiBTQVguYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB0cmVlLmMgdXJpLmMgdmFsaWQuYwotCSAgeG1sbWVtb3J5LmMgeG1scmVhZGVyLmMgeG1scmVnZXhwLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oCi0JICBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogYSBsb3Qgb2YgbWVtb3J5IGFsbG9jYXRpb24gY2xlYW51cHMKLQkgIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZSBPT00gdGVzdGluZwotCSogY2hlY2stcmVsYXhuZy10ZXN0LXN1aXRlMi5weTogc2VlbXMgSSBmb3Jnb3QgdG8gY29tbWl0IHRoZQotCSAgc2NyaXB0LgotCi1XZWQgQXByIDIzIDE3OjE2OjQxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiB0cml2aWFsIGZpeCBmb3IgMTA5Nzc0IHJlbW92aW5nIGEgd2FybmluZwotCi1XZWQgQXByIDIzIDE1OjQ5OjMyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIERPQ0JwYXJzZXIuYyBTQVguYyBjYXRhbG9nLmMgZGVidWdYTUwuYyBwYXJzZXIuYzogdHJ5IHRvIGZpbmQKLQkgIG1vcmUgcGxhY2VzIHdoZXJlIHhtbENhbm9uaWNQYXRoKCkgbXVzdCBiZSB1c2VkIHRvIGNvbnZlcnQKLQkgIGZpbGVuYW1lcyB0byBVUkxzLCB0cnlpbmcgdG8gZml4ICMxMTEwODgKLQotV2VkIEFwciAyMyAwOTozNToxMiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbC5weTogYXBwbGllZCBwYXRjaCBmcm9tIAotCSAgQnJlbnQgTSBIZW5kcmlja3MgYWRkaW5nIGJpbmRpbmcgZm9yIHhtbENhdGFsb2dBZGRMb2NhbAotCi1UdWUgQXByIDIyIDE1OjE4OjAxIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogdHJpZWQgdG8gZml4ICM5ODg3OSBhZ2FpbiBpbiBhIG1vcmUgc29saWQKLQkgIHdheS4KLQotVHVlIEFwciAyMiAxMzo1ODo0MyBDRVNUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogd2luMzIvbGlieG1sMi5kZWYuc3JjOiBhZGRlZCBtb3JlIGV4cG9ydHMgZnJvbSB0aGUgcmVsYXhuZyBhbmQKLQkgIHhtbHJlYWRlciBjbGFuCi0KLVR1ZSBBcHIgMjIgMTA6MzU6MTMgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmMgdGVzdC92YWxpZC9ucyogdGVzdC9yZXN1bHQvbnMqOiBhcHBsaWVkIHRoZSBwYXRjaAotCSAgcHJvdmlkZWQgYnkgQnJlbnQgSGVuZHJpY2tzIGZpeGluZyAjMTA1OTkyIGFuZCBpbnRlZ3JhdGVkIHRoZQotCSAgZXhhbXBsZXMgaW4gdGhlIHRlc3RzdWl0ZS4KLQotVHVlIEFwciAyMiAwMTowNjowOSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBUT0RPOiB1cGRhdGVkIGEgYml0Ci0JKiBjb25maWd1cmUuaW46IGZpeGVkIHRoZSBjb21tZW50LCB0aHJlYWRzIG5vdyBkZWZhdWx0IHRvIG9uCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogZml4ZWQgYW4gZXJyb25lb3VzIHhtbE1hbGxvY0F0b21pYygpIGNhbGwKLQotTW9uIEFwciAyMSAyMzozMzozOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWxzLmMgbGlieG1sLmggcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmMgdHJlZS5jIHhtbGxpbnQuYwotCSAgeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IGEgbG90IG9mIHBlcmZvcm1hbmNlIHdvcmsKLQkgIGVzcGVjaWFsbHkgdGhlIHNwZWVkIG9mIHN0cmVhbWluZyB0aHJvdWdoIHRoZSByZWFkZXIgYW5kIHB1c2gKLQkgIGludGVyZmFjZS4gU29tZSB0aHJlYWQgcmVsYXRlZCBvcHRpbWl6YXRpb25zLiBOZWFybHkgZG91YmxlZCB0aGUKLQkgIHNwZWVkIG9mIHBhcnNpbmcgdGhyb3VnaCB0aGUgcmVhZGVyLgotCi1TdW4gQXByIDIwIDEwOjM2OjA1IE1EVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50LnhtbAotCSogZG9jL3htbGxpbnQuMQotCXVwZGF0ZSBtYW4gcGFnZSB0byBleHBsYWluIHVzZSBvZiAtLXN0cmVhbQotCi1TYXQgQXByIDE5IDAyOjAzOjI0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIERPQ0JwYXJzZXIuYyBIVE1McGFyc2VyLmMgYzE0bi5jIGNhdGFsb2cuYyBlbmNvZGluZy5jIGdsb2JhbHMuYwotCSAgbmFub2h0dHAuYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyByZWxheG5nLmMgdHJlZS5jIHVyaS5jCi0JICB4bWxtZW1vcnkuYyB4bWxyZWFkZXIuYyB4bWxyZWdleHAuYyB4cGF0aC5jIHhwb2ludGVyLmMKLQkgIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogYWRkZWQKLQkgIHhtbE1hbGxvY0F0b21pYygpIHRvIGJlIHVzZWQgd2hlbiBhbGxvY2F0aW5nIGJsb2NrcyB3aGljaAotCSAgZG8gbm90IGNvbnRhaW5zIHBvaW50ZXJzLCBhZGQgeG1sR2NNZW1TZXR1cCgpIGFuZCB4bWxHY01lbUdldCgpCi0JICB0byBhbGxvdyByZWdpc3RlcmluZyB0aGUgZnVsbCBzZXQgb2YgZnVuY3Rpb25zIG5lZWRlZCBieQotCSAgYSBnYXJiYWdlIGNvbGxlY3RpbmcgYWxsb2NhdG9yIGxpa2UgbGliZ2MsIHJlZiAjMTA5OTQ0Ci0KLUZyaSBBcHIgMTggMTY6Mzc6NDEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBzd2l0Y2hlZCB0byBoYXZlIHRocmVhZCBzdXBwb3J0IGVuYWJsZWQgYnkgZGVmYXVsdCwKLQkgIGRpZG4ndCBnb3QgdHJvdWJsZXMgd2l0aCBBQkkgY29tcGF0aWJpbGl0eSBvbiBMaW51eCwgaG9wZSBpdAotCSAgd29uJ3QgYnJlYWsgb24gc3RyYW5nZSBPU2VzLCBpZiB5ZXMsIHJlcG9ydCB0aGUgc3lzdGVtIElECi0JKiBkb2MvbGlieG1sMi1hcGkueG1sOiBqdXN0IHJlYnVpbHQgdGhlIEFQSQotCi1GcmkgQXByIDE4IDE0OjMxOjE1IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5oIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oIHBhcnNlci5jIHhtbElPLmMgRE9DQnBhcnNlci5jOiAKLQkgIGFkZGVkIHN1cHBvcnQgZm9yIGxhcmdlIGZpbGUsIHRlc3RlZCB3aXRoIGEgMytHQiBpbnN0YW5jZSwKLQkgIGFuZCBzb21lIGNsZWFudXAuCi0JKiBjYXRhbG9nLmM6IGFkZGVkIGEgVE9ETwotCSogTWFrZWZpbGUuYW06IGFkZGVkIHNvbWUgIm1ha2UgdGVzdHMiIGNvbW1lbnRzCi0KLVRodSBBcHIgMTcgMTQ6NTE6NTcgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBzb21lIGNsZWFudXBzCi0JKiBkb2MveG1scmVhZGVyLmh0bWw6IGV4dGVuZGVkIHRoZSBkb2N1bWVudCB0byBjb3ZlciBSZWxheE5HIGFuZAotCSAgdHJlZSBvcGVyYXRpb25zCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlYWRlcls0Nl0ucHk6IGFkZGVkIHNvbWUKLQkgIHhtbFJlYWRlciBleGFtcGxlL3JlZ3Jlc3Npb24gdGVzdHMKLQkqIHJlc3VsdC9yZWxheG5nL3R1dG9yKi5lcnI6IHVwZGF0ZWQgdGhlIG91dHB1dCBvZiBhIG51bWJlciBvZiB0ZXN0cwotCi1UaHUgQXByIDE3IDExOjM1OjM3IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogdmFsZ3JpbmQgcG9pbnRlZCBvdXQgYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBlcnJvci4KLQotVGh1IEFwciAxNyAxMTowNjoyOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmggcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oCi0JICB4bWxyZWFkZXIuYzogYXVnbmVtdGluZyB0aGUgQVBJcywgY2xlYW51cHMuCi0JKiBwYXJzZXIuYzogY2xlYW51cCBidWcgIzExMTAwNQotCSogeG1sSU8uYzogYWRkZWQgc29tZSBtaXNzaW5nIGNvbW1lbnRzCi0KLVdlZCBBcHIgMTYgMTc6NDY6NTAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHhtbGxpbnQuYzogbW9yZSB3b3JrIG9uIFJlbGF4Tkcgc3RyZWFtaW5nIHZhbGlkYXRpb24KLQkgIHRyeWluZyB0byBpbXByb3ZlIHRoZSBzdWJzZXQgY29tcGlsZWQsIGFuZCBtb3JlIHRlc3RpbmcuCi0JKiBkb2MvZG93bmxvYWRzLmh0bWwgZG9jL3htbC5odG1sIGRvYy94bWxtZW0uaHRtbDogc29tZSB1cGRhdGVzIG9uIHRoZQotCSAgZG9jdW1lbnRhdGlvbgotCSogdGVzdC9yZWxheG5nL3R1dG9yMTFfMV8zLnhtbDogZml4ZXMgdGhlIERURCBwYXRoCi0JKiByZXN1bHQvcmVsYXhuZy8qLmVycjogZml4IHNvbWUgb2YgdGhlIG91dHB1dHMKLQotV2VkIEFwciAxNiAwMToyODoxNSBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmMgeG1scmVhZGVyLmMgeG1sbGludC5jIGluY2x1ZGUvbGlieG1sL3JlbGF4bmcuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IGltcGxlbWVudGVkIHN0cmVhbWluZyBvZgotCSAgUmVsYXhORyAod2hlbiBwb3NzaWJsZSkgb24gdG9wIG9mIHRoZSB4bWxSZWFkZXIgaW50ZXJmYWNlLAotCSAgcHJvdmlkZWQgaXQgYXMgeG1sbGludCAtLXN0cmVhbSAtLXJlbGF4bmcgLnJuZyAueG1sCi0JICBUaGlzIHNlZW1zIHRvIG1vc3RseSB3b3JrLgotCSogTWFrZWZpbGUuYW06IHVwZGF0ZWQgdG8gdGVzdCBSZWxheE5HIHN0cmVhbWluZwotCi1Nb24gQXByIDE0IDE4OjA4OjMzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYyBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmg6IGludGVncmF0ZWQgdGhlIHJlZ2V4cAotCSAgYmFzZWQgdmFsaWRpdHkgY2hlY2tpbmcgb2YgZnJhZ21lbnRzIG9mIHRoZSBkb2N1bWVudCBmb3IKLQkgIHdoaWNoIHRoZSBSTkcgY2FuIGJlIGNvbXBpbGVkIHRvIHJlZ2V4cHMuIFdvcmtzIG9uIGFsbCByZWdyZXNzaW9uCi0JICB0ZXN0cywgb25seSBmaXggbmVlZGVkIGlzIHJlbGF0ZWQgdG8gZXJyb3IgbWVzc2FnZXMuCi0KLVN1biBBcHIgMTMgMjE6NTE6MDAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHhtbHJlZ2V4cC5jIGluY2x1ZGUvbGlieG1sL3htbGF1dG9tYXRhLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbHJlZ2V4cC5oOiBTdGFydGluZyB3b3JrIHByZWNvbXBpbGluZwotCSAgcGFydHMgb2YgUmVsYXhORyBzY2hlbWFzLiBOb3QgcGx1Z2dlZCBvbnRvIHZhbGlkaXR5IGNoZWNraW5nCi0JICB5ZXQsIGp1c3QgdGhlIHJlZ2V4cCBidWlsZGluZyBwYXJ0LiBOZWVkZWQgdG8gZXh0ZW5kIHNvbWUKLQkgIG9mIHRoZSBhdXRvbWF0YSBhbmQgcmVnZXhwIEFQSXMuCi0KLUZyaSBBcHIgMTEgMjE6MzY6MjEgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oOiBtYWtlIHN1cmUKLQkgIHhtbGxpbnQgLS1zdHJlYW0gYW5kIHhtbGxpbnQgLS1zdHJlYW0gLS12YWxpZCByZXR1cm5zIGVycm9ycwotCSAgY29kZSBhcHByb3ByaWF0ZWx5Ci0KLUZyaSBBcHIgMTEgMTA6NTk6MjQgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IEFkZGVkIHRoZSBFeHBhbmQoKQotCSAgYW5kIE5leHQoKSBvcGVyYXRpb24gdG8gd29yayBvbiBzdWJ0cmVlcyB3aXRoaW4gdGhlIHJlYWRlcgotCSAgZnJhbWV3b3JrLgotCSogZG9jL2xpYnhtbDItYXBpLnhtbCBweXRob24vbGlieG1sMmNsYXNzLnR4dDogcmVzdWx0aW5nIHVwZGF0ZXMKLQkqIHB5dGhvbi90ZXN0cy9yZWFkZXI1LnB5OiBhZGRlZCBhbiBleGFtcGxlIGZvciB0aG9zZSBuZXcKLQkgIGZ1bmN0aW9ucyBvZiB0aGUgcmVhZGVyLgotCi1UaHUgQXByIDEwIDIzOjM4OjEzIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmM6IHBhdGNoIGZyb20gVmFzaWx5IFRjaGVrYWxraW4gdG8gZml4ICMxMDk4NjUKLQotVGh1IEFwciAxMCAxNTozMjo0NCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogZml4aW5nIEhhc1ZhbHVlIGZvciBuYW1lc3BhY2UgYXMgcmFpc2VkIGJ5IAotCSAgRGVueXMgRHVjaGllcgotCi1XZWQgQXByICA5IDE0OjA3OjE4IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC9IVE1McGFyc2VyLmg6ICBleHBvcnRlZAotCSAgaHRtbENyZWF0ZU1lbW9yeVBhcnNlckN0eHQoKSBpdCB3YXMgc3RhdGljCi0KLVdlZCBBcHIgIDkgMTM6MjE6NDggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jIHhtbHNjaGVtYXN0eXBlcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDoKLQkgIHVwZGF0ZSBmcm9tIENoYXJsZXMgQm96ZW1hbiBmb3IgZGF0ZSBhbmQgZHVyYXRpb24gdHlwZXMKLQkqIHRlc3Qvc2NoZW1hcy9kYXRlXzAuKiB0ZXN0L3NjaGVtYXMvZHVyXzAuKgotCSAgcmVzdWx0L3NjaGVtYXMvZGF0ZV8wLiogcmVzdWx0L3NjaGVtYXMvZHVyXzAuKjogdXBkYXRlZCB0b28KLQotTW9uIEFwciAgNyAxMjoxOToyNiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgdmFsaWQuYyB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3RyZWUuaCBpbmNsdWRlL2xpYnhtbC92YWxpZC5oOgotCSAgZml4aW5nIGJ1ZyAjMTA3MTI5LCByZW1vdmluZyBleGNlc3NpdmUgYWxsb2NhdGlvbiBhbmQgY2FsbHMKLQkgIHRvICpwcmludGYgaW4gdGhlIGNvZGUgdG8gYnVpbGQgUU5hbWUgc3RyaW5ncy4KLQotU2F0IEFwciAgNSAxMTo0MTozNiBDRVNUIDIwMDMgSWdvZSBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogd2luMzIvbGlieG1sMi5kZWYuc3JjOiBmaXhlZCBjb25kaXRpb25hbCBleHBvcnRzLCByZXBvcnRlZCBieQotCSAgTHVrZSBNdXJyYXkuCi0KLUZyaSBBcHIgIDQgMTg6MDg6MDAgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGEgcG9zc2libGUgcHJvYmxlbSB3aXRoIHhtbFJlY292ZXJNZW1vcnkoKQotCi1UaHUgQXByICAzIDE3OjI0OjQ0IENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyaW8uYyB0cmlvLmggdHJpb2RlZi5oIHRyaW9uYW4uYyB0cmlvbmFuLmggdHJpb3AuaCB0cmlvc3RyLmMKLQkgIHRyaW9zdHIuaDogQmpvcm4gc2VudCBhbiB1cGRhdGUgZm9yIHRoZSBUUklPIHBvcnRhYmlsaXR5IGxheWVyLgotCi1UdWUgQXByICAxIDIxOjU3OjI2IENFU1QgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IGV4cG9ydGVkIG5ldyBmdW5jdGlvbnMKLQotVHVlIEFwciAgMSAxMzowOTo0NiBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gTkVXUzogcHJlcGFyaW5nIHJlbGVhc2UgMi41LjYKLQkqIGRvYy8qOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2NzCi0KLVR1ZSBBcHIgIDEgMTE6NTI6MTUgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGZpeGVkIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2VzcyBwb2ludGVkIGJ5IHZhbGdyaW5kCi0JICBvbiBDMTROdGVzdHMKLQotVHVlIEFwciAgMSAwMDoxMjoyOCBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG9uZSBtb3JlIGZpeHVwIG9mIGVycm9yIG1lc3NhZ2UgcmVwb3J0aW5nCi0KLU1vbiBNYXIgMzEgMTg6MzY6MzIgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBtb3JlIHdvcmsgb24gYnVnICMxMDkyMjUsIGFuZCBmaXhlZCBhbiB1bmluaXRpYWxpemVkCi0JICB2YXJpYWJsZSBwb2ludGVkIG91dCBieSB2YWxncmluZAotCi1Nb24gTWFyIDMxIDE4OjA1OjIyIENFU1QgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogdHJ5IHRvIHdvcmsgb24gYnVnICMxMDkyMjUgYW5kIHByb3ZpZGUgYmV0dGVyCi0JICBlcnJvciByZXBvcnRzLgotCSogcmVzdWx0L3JlbGF4bmcvKiA6IHRoaXMgY2hhbmdlIHRoZSBvdXRwdXQgb2YgYSBudW1iZXIgb2YgdGVzdHMKLQkqIHhpbmNsdWRlLmM6IGZpeGluZyB0aGUgcGFyc2VkIGVudGl0eSByZWRlZmluaXRpb24gcHJvYmxlbQotCSAgcmFpc2VkIG9uIHRoZSBsaXN0LgotCSogdGVzdC9zY2hlbWFzL2RhdGVfMC54c2Q6IHVwZGF0ZWQgdGhlIGRhdGUgdGVzdCBjLmYuIEUyLTEyCi0KLU1vbiBNYXIgMzEgMTM6MTk6MDQgQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGZpeGVkIGRhdGUgY29tcGFyaXNvbiB0byBoYW5kbGUgdGhlIHR6bwotCSAgVGhlIG9ubHkgZmFpbHVyZXMgbGVmdCBhcmUgZGlzYWdyZWVtZW50cyBvbiBOb3RhdGlvbnMgYW5kCi0JICAnKzEnIG5vdCBiZWluZyBhbGxvd2VkIGZvciB1bG9uZywgdWludCwgdXNob3J0IGFuZCB1Ynl0ZS4KLQotTW9uIE1hciAzMSAxMjoxMTo0NyBDRVNUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogZml4ZWQgZ01vbnRoIHBhcnNpbmcgcm91dGluZSBhY2NvcmRpbmdseQotCSAgdG8gdGhlIFhNTCBTY2hlbWFzIGVycmF0YQotCSAgaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNS94bWxzY2hlbWEtZXJyYXRhI2UyLTEyCi0KLVN1biBNYXIgMzAgMjM6MDQ6MTggQ0VTVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHhtbHNjaGVtYXN0eXBlcy5jOiBtb3JlIHdvcmsgb24gWE1MIFNjaGVtYXMgZGF0YXR5cGVzCi0JICBhbmQgZmFjZXRzIHN1cHBvcnQuIEN1cnJlbnRseSBvbmx5IHNjaGVtYXMgd2l0aCBiaW5IZXggb3IKLQkgIGJhc2U2NCBkb24ndCBjb21waWxlLiBBIGZldyBlcnJvciBsZWZ0IGluIHRoZSB0ZXN0IHN1aXRlOgotCSAgZm91bmQgMTAzNSB0ZXN0IGluc3RhbmNlczogOTE5IHN1Y2Nlc3MgMjMgZmFpbHVyZXMKLQkgIG1vc3QgYXJlIGdkYXRlIG9yIGdkYXRleWVhciBmYWlsaW5nIGNoZWNrLCBhbmQgYSBmZXcgY2FzZXMgd2hlcmUKLQkgIEphbWVzIGNsYXJrIHRlc3RzIHJlc3VsdHMgYXJlIHN0cmFuZ2UuCi0JKiB2YWxpZC5jOiBhbGxvdyB0byByZXVzZSB0aGUgTm90YXRpb24gY2hlY2tpbmcgcm91dGluZSB3aXRob3V0Ci0JICBoYXZpbmcgYSB2YWxpZGF0aW9uIGNvbnRleHQuCi0JKiBTQVguYzogcmVtb3ZlZCBhICNpZiAwCi0KLVNhdCBNYXIgMjkgMTc6MzU6MDUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBmb3Jnb3QgdG8gYXBwbHkgb25lIGNoZWNrIGZyb20gIzEwNjkzMSBwYXRjaAotCSogeG1sc2NoZW1hc3R5cGVzLmM6IG1vcmUgd29yayBvbiBYTUwgU2NoZW1hcyBkYXRhdHlwZXMKLQotU2F0IE1hciAyOSAxMTo0OToyNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYyBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmggeG1sc2NoZW1hc3R5cGVzLmM6IG1vcmUgd29yawotCSAgb24gY2xlYW5pbmcgdXAgWE1MIFNjaGVtYXMgZGF0YXR5cGVzIGJhc2VkIG9uIEphbWVzIENsYXJrIHRlc3RzCi0JICB0ZXN0L3hzZHRlc3QveHNkdGVzdC54bWwKLQotRnJpIE1hciAyOCAxNDoyNDowOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogaW1wbGVtZW50ZWQgY29tcGFyaXNvbnMgZm9yIFNjaGVtYXMgdmFsdWVzLgotCSogeG1sc2NoZW1hc3R5cGVzLmMgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmg6IGZpeGVkCi0JICBzb21lIGJ1Z3MgaW4gZHVyYXRpb24gaGFuZGxpbmcsIGNvbXBhcmlzb25zIGZvciBkdXJhdGlvbnMKLQkgIGFuZCBkZWNpbWFscywgcmVtb3ZlZCBhbGwgbWVtb3J5IGxlYWtzIHBvaW50ZWQgb3V0IGJ5IEphbWVzCi0JICB0ZXN0c3VpdGUuIEN1cnJlbnQgc3RhdHVzIGlzIG5vdwotCSAgZm91bmQgMjM4IHRlc3Qgc2NoZW1hczogMTk3IHN1Y2Nlc3MgNDEgZmFpbHVyZXMKLQkgIGZvdW5kIDEwMzUgdGVzdCBpbnN0YW5jZXM6IDgwMyBzdWNjZXNzIDEzMCBmYWlsdXJlcwotCi1GcmkgTWFyIDI4IDAwOjQxOjU1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDogZml4ZWQgYnVncyBhbmQgbWVtb3J5Ci0JICBsZWFrcyBpbiB0aGUgVzNDIFhNTCBTY2hlbWFzIGNvZGUKLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBpbXBsZW1lbnRlZCBub25Qb3NpdGl2ZUludGVnZXIKLQkqIHRlc3Qvc2NoZW1hcy9sZW5ndGgyXzAueHNkIHJlc3VsdC9zY2hlbWFzL2xlbmd0aDJfMF8wLmVycjoKLQkgIGZpeGVkIHRoZSB0ZXN0IGFuZCByZXN1bHQuCi0KLVRodSBNYXIgMjcgMjI6MjM6MDcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgdHJlZS5jOiB0d28gcGF0Y2hlcyBmcm9tIEphbWVzIEJ1cnNhIG9uIHRoZSBIVE1MCi0JICBwYXJzZXIgYW5kIGEgdHlwbwotCSogeG1sc2NoZW1hc3R5cGVzLmM6IHJlaW5kZW50aW5nLCBmaXhpbmcgYSBtZW1vcnkgYWNjZXNzCi0JICBwcm9ibGVtIHdpdGggZGF0ZXMuCi0KLVRodSBNYXIgMjcgMTU6NTM6MzUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogZml4aW5nICMxMDkyMjcgcHJvdmlkaW5nIG1vcmUgY29udGV4dCBpbiBjYXNlIG9mIAotCSAgc3RhcnQvZW5kIHRhZyBtaXNtYXRjaAotCSogcHl0aG9uL3Rlc3RzL2N0eHRlcnJvci5weSBweXRob24vdGVzdHMvcmVhZGVyZXJyLnB5OiB1cGRhdGUgdGhlCi0JICB0ZXN0cyBhY2NvcmRpbmdseQotCi1UaHUgTWFyIDI3IDE1OjIyOjQxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogc2hvdWxkIGZpeCAjMTA5MzI3IGVycm9ycyBvbiBtZW1vcnkgYWNjZXNzZXMKLQotVGh1IE1hciAyNyAxNTowNjoxMyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmM6IEZpeGVkIHJlb3BlbmluZyBvZiAjNzg2NjIgPGZvcm0gYWN0aW9uPSIuLi4iPgotCSAgaXMgYW4gVVJJIHJlZmVyZW5jZQotCi1XZWQgTWFyIDI2IDIyOjM4OjM5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogZml4ZWQgYnVnICMxMDkxNjAgb24gbm9uLUFTQ0lJIElEcwotCi1XZWQgTWFyIDI2IDE3OjMwOjM3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IE5vcm0gc3VnZ2VzdGVkIGEgbmljZXIgZXJyb3IgbWVzc2FnZSBmb3IgeG1sOnNwYWNlIHZhbHVlcwotCSAgZXJyb3JzCi0KLVdlZCBNYXIgMjYgMDE6MzQ6MTkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmg6IGZpcnN0IHBhcnQgb2YgdGhlIGZpeCB0bwotCSAgcGVyZm9ybWFuY2UgYnVnICMxMDg5MDUsIGFkZHMgeG1sWFBhdGhPcmRlckRvY0VsZW1zKCkgcHJvdmlkaW5nCi0JICBkb2N1bWVudCBvcmRlciBmb3Igbm9kZXMuCi0JKiBweXRob24vbGlieG1sLmM6IFB5dGhvbiBtYXkgcmVxdWlyZSBUUklPIGFzIEFsYmVydCBDaGluIHBvaW50ZWQgb3V0Ci0KLVR1ZSBNYXIgMjUgMTY6MDc6MDAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogcmVtb3ZpbmcgYSB3YXJuaW5nIHdpdGggU3VuIGNvbXBpbGVyCi0JICBidWcgIzEwOTE1NAotCi1UdWUgTWFyIDI1IDA3OjAyOjU2IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50LnhtbAotCSogZG9jL3htbGxpbnQuMQotCXVwZGF0ZSB4bWxsaW50IG1hbiBwYWdlIHdpdGggLS1yZWxheG5nIG9wdGlvbgotCi1UdWUgTWFyIDI1IDEyOjA3OjAzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL3NldHVwLnB5LmluIDogd2FzIG1pc3NpbmcgImRydl9saWJ4bWwyLnB5IgotCi1Nb24gTWFyIDI0IDE5OjM4OjA1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jIHhwYXRoLmM6IHNvbWUgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBuZXcgd2F5IG9mIAotCSAgaGFuZGxpbmcgUmVzdWx0IFZhbHVlIFRyZWUsIGJlZm9yZSAyLjUuNQotCi1Nb24gTWFyIDI0IDE2OjM2OjIzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIE5FV1M6IHByZXBhcmluZyByZWxlYXNlIDIuNS41Ci0JKiBkb2MvKiA6IHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYW5kIHJlZ2VuZXJhdGVkIGl0LgotCi1Nb24gTWFyIDI0IDE0OjU2OjAxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogZml4ZWQgc29tZSBwcm9ibGVtcyByZWxhdGVkIHRvICM3NTgxMyBhYm91dCBoYW5kbGluZwotCSAgb2YgUmVzdWx0IFZhbHVlIFRyZWVzCi0KLVN1biBNYXIgMjMgMjI6NTc6MjAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogYXBwbGllZCBhIHNldCBvZiBwYXRjaGVzIGZyb20gTG9yZW56byBWaWFsaSBjb3JyZWN0aW5nCi0JICBVUkkgcGFyc2luZyBlcnJvcnMuCi0KLVN1biBNYXIgMjMgMjI6MDA6MTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogdmFsaWRpdHkgc3RhdHVzIHdhcyBub3QgcGFzc2VkIGJhY2sgd2hlbiB2YWxpZGF0aW5nIGluCi0JICBlbnRpdGllcywgYnV0IHJhaXNlZCBieSBPbGl2ZXIgRmlzY2hlcgotCi1TdW4gTWFyIDIzIDIxOjMwOjUwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogYXZvaWQgZXNjYXBpbmcgJywnIGluIFVSSXMKLQotU3VuIE1hciAyMyAxMjo1NzowMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhpbmcgYnVnICMxMDg5NzYgZ2V0IHRoZSBJRC9SRUZzIHRvIHJlZmVyZW5jZSAKLQkgIHRoZSBJRCBpbiB0aGUgZG9jdW1lbnQgY29udGVudCBhbmQgbm90IGluIHRoZSBlbnRpdHkgY29weQotCSogU0FYLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IG1vcmUgY2hlY2tpbmcgb2YgdGhlIElEL1JFRgotCSAgc3R1ZmYsIGJldHRlciBzb2x1dGlvbiBmb3IgIzEwNzIwOAotCSogeG1scmVnZXhwLmM6IHJlbW92ZWQgYSBkaXJlY3QgcHJpbnRmLCBkb2hoaAotCSogeG1scmVhZGVyLmM6IGZpeGVkIGEgYnVnIG9uIHN0cmVhbWluZyB2YWxpZGF0aW9uIG9mIGVtcHR5IAotCSAgZWxlbWVudHMgaW4gZW50aXRpZXMKLQkqIHJlc3VsdC9WQy9FbGVtZW50VmFsaWQ4IHRlc3QvVkNNL3YyMC54bWwgcmVzdWx0L3ZhbGlkL3hodG1sMS54aHRtbDoKLQkgIGNsZWFudXAgb2YgdGhlIHZhbGlkYXRpb24gdGVzdHMKLQkqIHRlc3QvdmFsaWQvaWQqIHRlc3QvdmFsaWQvZHRkcy9kZXN0Zm9vLmVudCByZXN1bHQvdmFsaWQvaWQqOgotCSAgYWRkZWQgbW9yZSBJRC9JRFJFRiB0ZXN0cyB0byB0aGUgc3VpdGUKLQotU2F0IE1hciAyMiAyMzozODowOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBmaXhlZCAjMTA3MDQzIHJlbW92aW5nIDIgd2FybmluZ3Mgd2l0aCBTdW4gT25lCi0JICBjb21waWxlci4KLQotU2F0IE1hciAyMiAxODo1MDo0NSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogdmFsZ3JpbmQnZWQgYW5kIGNsZWFuZWQgdXAgYSBjb3VwbGUgb2YgbWVtb3J5IGlzc3Vlcy4KLQotU2F0IE1hciAyMiAxNjoxNTo1MCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jOiBmaXggYnVnICMxMDcyMDggYXZvaWQgZmFsc2UgZHVwbGljYXRlcyB3aGVuIElEL1JFRnMgYXJlCi0JICBkZWZpbmVkIGluIGVudGl0aWVzIGNvbnRlbnQKLQotU2F0IE1hciAyMiAxNTo1MzoyNyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jOiBGaXhlZCB2YWxpZGF0aW9uIGJ1ZyAjMTA4ODU4IG9uIG5hbWVzcGFjZSBuYW1lcyB1c2luZwotCSAgZW50aXRpZXMgYW5kIHJlcG9ydGVkIGJ5IEJyZW50IEhlbmRyaWNrcwotCSogeG1sbGludC5jOiByZXBvcnQgeG1sVGV4dFJlYWRlckhhc1ZhbHVlKCkgcmVzdWx0IGluIC0tc3RyZWFtCi0JICAtLWRlYnVnIG91dHB1dC4KLQotU2F0IE1hciAyMiAxMzozMjozOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBmaXhlZCBidWcgIzEwODgwMSByZXBvcnRlZCBieSBNYWxjb2xtIFRyZWRpbm5pY2sKLQkgIGFib3V0IHRoZSBEb2NUeXBlIG5vZGUgbm90IGJlaW5nIHJlcG9ydGVkIHNvbWV0aW1lcy4KLQkqIHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IGFkZGVkIHRvIHRlc3QgdG8gdGhlIHJlZ3Jlc3Npb24gY2hlY2tzCi0KLVNhdCBNYXIgMjIgMDE6NTc6NDAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogZml4ZWQgYnVnICMxMDg1NDYgb24gbG9uZyBDREFUQSAob3IgdGV4dCBub2RlcykKLQkgIHJlcG9ydGVkIGJ5IEVkZCBEdW1iaWxsCi0KLVNhdCBNYXIgMjMgMDE6MDA6MjQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmMgcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmM6IHBhdGNoIGZyb20KLQkgIGpvaGFuQGV2ZW5odWlzLm5sIGZvciAjMTA3OTM3IGZpeGluZyBzb21lIGxpbmUgY291bnRpbmcKLQkgIHByb2JsZW1zLCBhbmQgc29tZSBvdGhlciBjbGVhbnVwcy4KLQkqIHJlc3VsdC9IVE1MLzogdGhpcyByZXN1bHQgaW4gc29tZSBsaW5lIG51bWJlciBjaGFuZ2VzCi0KLUZyaSBNYXIgMjEgMjI6MTk6MTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gTWFrZWZpbGUuYW06IGZpeGVkIFJlZCBIYXQgYnVnICM4NjExOCB1c2UgbGlieG1sMi5zcGVjCi0JICBpbnN0ZWFkIG9mIGxpYnhtbC5zcGVjCi0JKiByZWxheG5nLmM6IGZpeGVkIHNvbWUgb2YgdGhlIGVycm9yIHJlcG9ydGluZyBleGNlc3NpdmUKLQkgIHZlcmJvc2l0eQotCSogY2F0YWxvZy5jIGRlYnVnWE1MLmMgdmFsaWQuYyB4bWxyZWFkZXIuYyB4bWxzY2hlbWFzLmMgeHBhdGguYwotCSAgeG1sc2NoZW1hc3R5cGVzLmM6IHJlbW92ZWQgc29tZSB3YXJuaW5ncyBmcm9tIGdjYwotCSogZG9jL2xpYnhtbDItYXBpLnhtbDogcmVidWlsdAotCi1GcmkgTWFyIDIxIDE3OjI1OjIzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBhbm90aGVyIG9wdGltaXphdGlvbiwgZm9yIGNob2ljZSB0aGlzIHRpbWUKLQkqIHJlc3VsdC9yZWxheG5nL3NwZWMxKiByZXN1bHQvcmVsYXhuZy90dXRvcjEyXzEqIAotCSAgcmVzdWx0L3JlbGF4bmcvdHV0b3IzXzc6IGNsZWFudXBzLgotCi1GcmkgTWFyIDIxIDEzOjQxOjIzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCB4bWxSZWxheE5HTm9kZU1hdGNoZXNMaXN0Ci0JKiB0ZXN0L3JlbGF4bmcvdGVzdHN1aXRlLnhtbDogYXVnbWVudGVkIHRoZSB0ZXN0IHN1aXRlCi0JKiByZXN1bHQvcmVsYXhuZy9zcGVjMSogcmVzdWx0L3JlbGF4bmcvdHV0b3IxMl8xKjogdGhpcyBmaXhlcwotCSAgc29tZSBzY2hlbWFzIHZhbGlkYXRpb24gdGVzdHMgaW4gdGhlIHByZXNlbmNlIG9mIGZvcmVpZ24gCi0JICBuYW1lc3BhY2VzLgotCi1GcmkgTWFyIDIxIDAyOjIzOjM0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBhZGRlZCBhbm90aGVyIGludGVybGVhdmUgc3BlZWR1cC4KLQotVGh1IE1hciAyMCAxNzoyMjowMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBhZGRlZCBpbnRlZ2VyIGFuZCBmaXhlZCBvbmUgb2YgdGhlCi0JICBJRFJFRlMgcmVncmVzc2lvbiB0ZXN0cyBwYm0KLQkqIHJlc3VsdC9yZWxheG5nL2RvY2Jvb2tfMC5lcnI6IHVwZGF0ZWQKLQotV2VkIE1hciAxOSAyMTo1ODo0NyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmMgeG1sc2NoZW1hc3R5cGVzLmM6IGF0dGVtcHQgdG8gY29wZSB3aXRoIElEL0lEUkVGKFMpCi0JICBkZWNsYXJlZCBib3RoIGluIHRoZSBEVEQgYW5kIGluIHRoZSBTY2hlbWFzIDxncmluLz4KLQkqIHJlbGF4bmcuYzogbW9yZSBkZWJ1ZywgYWRkZWQgYSBiaWcgb3B0aW1pemF0aW9uIGZvciA8bWl4ZWQ+Ci0JKiB0ZXN0L3JlbGF4bmcvdGVzdHN1aXRlLnhtbDogYXVnbWVudGVkIHRoZSB0ZXN0c3VpdGUKLQkqIHRlc3QvcmVsYXhuZy8gcmVzdWx0L3JlbGF4bmc6IGFkZGVkIHRoZSBSZWxheE5HIHNwZWMgYW5kIGEgCi0JICBEb2NCb29rIGV4YW1wbGUgdG8gdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQotV2VkIE1hciAxOSAxMTozNDoxMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhzZGRhdGEtdGVzdC1zdWl0ZS5weTogY29zbWV0aWMgY2hhbmdlIGZvciBvdXRwdXQKLQkqIHJlbGF4bmcuYzogdHJ5IHRvIG1pbmltaXplIGNhbGxzIHRvIG1hbGxvYy9mcmVlIGZvciBzdGF0ZXMuCi0KLVR1ZSBNYXIgMTggMTc6NTA6MzEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHJlbW92ZWQgYSB3YXJuaW5nCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogbW9yZSBjbGVhbnVwLCBhZGRlZCBFTlRJVFkgYW5kIEVOVElUSUVTCi0JICBzdXBwb3J0Ci0JKiBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUucHkgY2hlY2steHNkZGF0YS10ZXN0LXN1aXRlLnB5OgotCSAgY2xlYW51cC9pbXByb3ZlbWVudHMgb2YgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgYmF0Y2gKLQkqIHRlc3QvcmVsYXhuZy90ZXN0c3VpdGUueG1sOiBhdWdtZW50ZWQgbGlieG1sMiBvd24gdGVzdHN1aXRlCi0KLVR1ZSBNYXIgMTggMTI6MzY6MjIgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGZpeGVkIGVycm9yIG1zZyBjbGVhbnVwIGRlYWxsb2NhdGlvbgotCSogeG1sc2NoZW1hc3R5cGVzLmM6IGFkZGVkIGEgZnVuY3Rpb24gdG8gaGFuZGxlIGxpc3RzIG9mCi0JICBhdG9taWMgdHlwZXMsIGFkZGVkIHN1cHBvcnQgZm9yIElEUkVGUwotCi1UdWUgTWFyIDE4IDAxOjI4OjE1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHZhbGlkLmMgeG1sc2NoZW1hc3R5cGVzLmM6IGFkZGVkIERhdGF0eXBlIElECi0JICBhbmQgSURSRUYsIHVzYWJsZSBmcm9tIFJlbGF4Tkcgbm93Ci0JKiBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzdHlwZXMuaDogbmVlZCB0byBhZGQgYSBuZXcgaW50ZXJmYWNlCi0JICBiZWNhdXNlIHRoZSB2YWxpZGF0aW9uIG1vZGlmaWVzIHRoZSBpbmZvc2V0Ci0JKiB0ZXN0L3JlbGF4bmcvdGVzdHN1aXRlLnhtbDogZXh0ZW5kZWQgdGhlIHRlc3RzdWl0ZQotCi1Nb24gTWFyIDE3IDE2OjM0OjA3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBmaXhlZCB0aGUgbGFzdCBjb3JlIFJlbGF4TkcgYnVnIGtub3duICMxMDcwODMsCi0JICBzaGVtYXMgZGF0YXR5cGUgSUQvSURSRUYgc3VwcG9ydCBzdGlsbCBtaXNzaW5nIHRob3VnaC4KLQkqIHhtbHJlYWRlci5jOiBmaXggYSBjcmFzaGluZyBidWcgd2l0aCBwcmVmaXggcmFpc2VkIGJ5Ci0JICBNZXJpam4gQnJvZXJlbgotCSogdGVzdC9yZWxheG5nL3Rlc3RzdWl0ZS54bWw6IGF1Z21lbnRlZCB0aGUgdGVzdHN1aXRlIHdpdGgKLQkgIGNvbXBsZXggaW5oZXJpdGFuY2UgdGVzdHMKLQotU3VuIE1hciAxNiAxODo0NTo1MCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogc3dpdGNoZWQgYmFjayB0byB0aGUgcHJldmlvdXMgUmVsYXgtTkcgY29kZSBiYXNlLAotCSAgdGhlIGRlcml2YXRpb24gYWxnb3JpdGhtIG5lZWQgc2V2ZXJlIGNvbnN0cmFpbmluZyBjb2RlIHRvIGF2b2lkCi0JICBjb21iaW5hdG9yaWFsIGV4cGxvc2lvbi4gRml4ZWQgdGhlIHByb2JsZW0gd2l0aCBTZWJhc3RpYW4gUmFodHoKLQkgIFRFSSBiYXNlZCBleGFtcGxlIGFuZCBvdGhlciBidWdzCi0JKiByZXN1bHQvcmVsYXhuZy8qZXJyOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0JKiB0ZXN0L3JlbGF4bmcvdGVzdHN1aXRlLnhtbDogc3RhcnRlZCBhIG5ldyB0ZXN0IHN1aXRlIAotCi1TYXQgTWFyIDE1IDIyOjI2OjQ2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3JlbGF4bmcuaDogQWZ0ZXIgY29taW5nIHRvIHRoZSBjb25jbHVzaW9uCi0JICB0aGF0IHRoZSBvcmlnaW5hbCBSZWxheE5HIHZhbGlkYXRpb24gY29kZSB3YXMgdW4tZml4ZWFibGUsIGl0IGdvdAotCSAgcmV3cml0dGVuIHRvIHVzZSB0aGUgZGVyaXZhdGlvbiBhbGdvcml0aG0gZnJvbSBKYW1lcyBDbGFyayBhbmQKLQkgIHJlZGVidWdnZWQgaXQgKG5lYXJseSkgZnJvbSBzY3JhdGNoOgotCSAgZm91bmQgMzczIHRlc3Qgc2NoZW1hczogMzcyIHN1Y2Nlc3MgMSBmYWlsdXJlcwotCSAgZm91bmQgNTI5IHRlc3QgaW5zdGFuY2VzOiA1Mjkgc3VjY2VzcyAwIGZhaWx1cmVzCi0KLVR1ZSBNYXIgMTEgMTI6MDg6MjMgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYyBwYXJzZXIuYzogZml4IHNvbWUgcmVjdXJzaW9uIHByb2JsZW1zIGludHJvZHVjZWQgaW4gdGhlCi0JICBsYXN0IHJlbGVhc2UuCi0JKiByZWxheG5nLmM6IG1vcmUgZGVidWdnaW5nIG9mIHRoZSBSTkcgdmFsaWRhdGlvbiBlbmdpbmUsIHN0aWxsCi0JICBwcm9ibGVtcyB0aG91Z2guCi0KLU1vbiBNYXIgMTAgMTQ6MTA6NDcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogc3RvcCBnZW5lcmF0aW5nIHdyb25nIHJlc3VsdCBmaWxlIHdpdGggKiBpbiBuYW1lCi0JKiByZWxheG5nLmM6IGZpeGluZyB0aGUgaW5jbHVkZSBidWcgcmFpc2VkIGJ5IFNlYmFzdGlhbiBSYWh0egotCSogcmVzdWx0L3JlbGF4bmcvZGVtbyogdGVzdC9yZWxheG5nL2RlbW86IGFkZGVkIHRoZSB0ZXN0cyBmcm9tCi0JICBTZWJhc3RpYW4gcmVwcm9kdWNpbmcgdGhlIHByb2JsZW0uCi0KLVN1biBNYXIgIDkgMTg6MDI6MzEgTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGxpbnQuMTogcmVnZW5lcmF0aW5nIG1hbiBwYWdlIGZyb20geG1sbGludC54bWwgdG8gcGljawotCSAgdXAgQWxla3NleSdzIGNoYW5nZQotCi1TdW4gTWFyICA5IDEzOjUzOjE2IDIwMDMgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiB4bWxsaW50LmMgZG9jL3htbGxpbnQueG1sOiB1c2UgJFhNTExJTlRfSU5ERU5UIGVudmlyb25tZW50Ci0JdmFyaWFibGUgdG8gY29udHJvbCB0aGUgaW5kZW50YXRpb24gZm9yIHRoZSB4bWxsaW50ICItLWZvcm1hdCIgCi0Jb3B0aW9uCi0KLVNhdCBNYXIgIDggMTQ6Mjc6NDMgQ0VUIDIwMDMgSWdvciBabGF0a292aWMgPGlnb3JAemxhdGtvdmljLmNvbT4KLQotCSogZW5jb2RpbmcuYzogYXBwbGllZCBHZW5uYWR5J3MgcGF0Y2ggYWdhaW5zdCBidWZmZXIgb3ZlcnJ1bgotCi1GcmkgTWFyICA3IDE5OjI5OjQwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdC94c2R0ZXN0L3hzZHRlc3QueG1sIHVyaS5jOiBhZnRlciBhbmQgZXhjaGFuZ2Ugd2l0aCBKYW1lcwotCSAgQ2xhcmsgaXQgYXBwZWFyZWQgSSBoYWQgYnVnIGluIFVSSSBwYXJzaW5nIGNvZGUgLi4uCi0JKiByZWxheG5nLmMgaW5jbHVkZS9saWJ4bWwvcmVsYXhuZy5oOiBjb21wbGV0ZWx5IHJldmFtcGVkIGVycm9yCi0JICByZXBvcnRpbmcgdG8gbm90IGxvb3NlIG1lc3NhZ2UgZnJvbSBvcHRpb25hbCBwYXJ0cy4KLQkqIHhtbGxpbnQuYzogYWRkZWQgdGltaW5nIGZvciBSTkcgdmFsaWRhdGlvbiBzdGVwcwotCSogcmVzdWx0L3JlbGF4bmcvKjogdXBkYXRlZCB0aGUgcmVzdWx0LCBhbGwgZXJyb3IgbWVzc2FnZXMgY2hhbmdlZAotCi1GcmkgTWFyICA3IDE1OjE4OjMyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogZml4IGJ1ZyAjMTA3ODA0LCB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRvY3VtZW50IG9yZGVyCi0JICBjb21wdXRhdGlvbiB3YXMgZmFpbGluZyBvbiBhdHRyaWJ1dGVzLgotCi1UaHUgTWFyICA2IDIyOjM1OjUwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZml4IGJ1ZyAjMTA3NzY0ICwgcG9zc2liaWxpdHkgb2YgYnVmZmVyIG92ZXJmbG93Ci0JICBpbiB4bWxWYWxpZERlYnVnKCkKLQotV2VkIE1hciAgNSAxNzo0MTozNyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYyBpbmNsdWRlL2xpYnhtbC9uYW5vZnRwLmg6IGFkZGluZyB4bWxOYW5vRlRQRGVsZSgpCi0JICBmcm9tIFBoaWxpcHAgRHVua2VsCi0KLVdlZCBNYXIgIDUgMTA6NTc6MDkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZS5jOiBtYWRlIHBvd3RlbiBhcnJheSBzdGF0aWMgaXQgc2hvdWxkIG5vdCBiZSBleHBvcnRlZAotCSogSFRNTHBhcnNlci5jOiBmaXggYnVnICMxMDczNjEgYnkgcmV1c2luZyB0aGUgY29kZSBmcm9tIHRoZSBYTUwgCi0JICBwYXJzZXIgZnVuY3Rpb24uCi0JKiB0ZXN0SFRNTC5jOiBnZXQgcmlkIG9mIHZhbGdyaW5kIG1lc3NhZ2VzIG9uIHRoZSBIVE1MIFNBWCB0ZXN0cwotCi1GcmkgRmViIDI4IDAwOjIzOjAwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBmaXhlZCBhIG5vZGUgZHVtcCBjcmFzaCBvbiBhdHRyaWJ1dGVzCi0JKiB0ZXN0L3hzZHRlc3QveHNkdGVzdC54bWwgdGVzdC94c2R0ZXN0L3hzZHRlc3QueHNsOiBmaXhlZAotCSAgYW4gVVJJIHRlc3QgYnVnIGFuZCBnZXQgYmV0dGVyIG91dHB1dC4KLQotVGh1IEZlYiAyNyAyMjoyODo0MCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhzZGRhdGEtdGVzdC1zdWl0ZS5weTogZ2l2ZSBtb3JlIGluZm9zCi0JKiByZWxheG5nLmM6IGZpeCBhIGJ1ZyByZXBvcnRlZCBieSBTZWJhc3RpYW4gUmFodHogYW5kCi0JICBSRUYtPkRFRiBpbiBhdHRyaWJ1dGUgdmFsdWVzLgotCi1UaHUgRmViIDI3IDIxOjA5OjMyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2hlY2steHNkZGF0YS10ZXN0LXN1aXRlLnB5IHRlc3QveHNkdGVzdC94c2R0ZXN0LnhtbAotCSAgdGVzdC94c2R0ZXN0L3hzZHRlc3QueHNsOiBpbXBvcnQgb2YgdGhlIFhTRCBEYXRhdHlwZQotCSAgcmVncmVzc2lvbiB0ZXN0cyBmcm9tIEphbWVzIENsYXJrLgotCi1UaHUgRmViIDI3IDE4OjQwOjA0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYwotCSAgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmg6IGFkZGVkIHBhcmFtIHN1cHBvcnQgZm9yIHJlbGF4bmcKLQkgIHR5cGUgY2hlY2tpbmcsIHN0YXJ0ZWQgdG8gaW5jcmVtZW50IHRoZSBwb29sIG9mIHNpbXBsZSB0eXBlcwotCSAgcmVnaXN0ZXJlZCwgc3RpbGwgbXVjaCB3b3JrIHRvIGJlIGRvbmUgb24gc2ltcGxlIHR5cGVzIGFuZAotCSAgZmFjZXRzIGNoZWNraW5ncy4KLQotV2VkIEZlYiAyNiAxNjo0NTozOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IGZpeGVzIGFnYWluIG9uZSBvZiB0aGUgcHJvYmxlbSByYWlzZWQgYnkKLQkgIEphbWVzIENsYXJrIGluICMxMDY3ODgKLQotV2VkIEZlYiAyNiAxNTo0Njo0OCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogRml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbSByYWlzZWQgYnkgSmFtZXMgQ2xhcmsKLQkgIGluIGJ1ZyAjMTA3MDgzLCB0aGUgc3VwcG9ydCBmb3IgSUQvSURSRUYvSURSRUZTIGF0IHRoZSBXWFMKLQkgIGRhdGF0eXBlIGxldmVsIHN0aWxsIG5vdCBmaXhlZCB0aG91Z2guCi0KLU1vbiBGZWIgMjQgMjE6MDk6MTkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyByZWxlYXNlIDIuNS40Ci0JKiBkb2MvKjogdXBkYXRlZCBhbmQgcmVidWlsdCB0aGUgZG9jcwotCSogcmVsYXhuZy5jOiByZW1vdmVkIHdhcm5pbmdzCi0JKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0KLU1vbiBGZWIgMjQgMjA6NTM6MTcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBmaXhlcyBhIERURCByZWdleHAgZ2VuZXJhdGlvbiBwcm9ibGVtLgotCi1Nb24gRmViIDI0IDIwOjEyOjU3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVzIGJ1ZyAjMTA1OTk4IGFib3V0IGZhbHNlIGRldGVjdGlvbiBvZgotCSAgYXR0cmlidXRlIGNvbnN1bXB0aW9uIGxvb3AuCi0KLU1vbiBGZWIgMjQgMTk6MTQ6NTcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBGaXhlcyBidWcgIzEwNjkzMSBpbiBYSW5jbHVkZSBlbnRpdGllcyBtZXJnaW5nLgotCi1Nb24gRmViIDI0IDE4OjUwOjM1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGZpeGVkIGJ1ZyAjMTA1OTkyCi0KLU1vbiBGZWIgMjQgMTg6MTQ6MTYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGVkIHhtbFNldFByb3AgYW5kIGFsLiB3aGVuIHRoZSBub2RlIHBhc3NlZCBpcyBub3QgYW4KLQkgIGVsZW1lbnQuCi0JKiByZWxheG5nLmM6IGZpeGVkIGJ1Z3MgNy4zICh0aG91Z2ggbm90IGNvbXBsZXRlKSBhbmQgbWVtb3J5IGxlYWtzCi0JICBmb3VuZCAzNzMgdGVzdCBzY2hlbWFzOiAzNjkgc3VjY2VzcyA0IGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUyNSBzdWNjZXNzIDQgZmFpbHVyZXMKLQkqIGNoZWNrLXJlbGF4bmctdGVzdC1zdWl0ZS5weTogYWRkZWQgbWVtb3J5IGRlYnVnIHJlcG9ydGluZwotCi1Nb24gRmViIDI0IDEyOjQxOjU0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmMgcGFyc2VyLmM6IHNvbWUgd2FybmluZyByZW1vdmFsIG9uIElnb3IncyBwYXRjaAotCSogdHJlZS5jOiBzZWVtcyBJIG1lc3NlZCB1cCB3aXRoICMxMDY3ODggZml4Ci0JKiBweXRob24vbGlieG1sLmM6IGZpeGVkIHNvbWUgYmFzZSBwcm9ibGVtcyB3aGVuIFB5dGhvbiBwcm92aWRlcwotCSAgdGhlIHJlc29sdmVyLgotCSogcmVsYXhuZy5jOiBmaXhlZCB0aGUgaW50ZXJsZWF2ZSBhbGdvcml0aG0gCi0JICBmb3VuZCAzNzMgdGVzdCBzY2hlbWFzOiAzNjQgc3VjY2VzcyA5IGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUyNSBzdWNjZXNzIDQgZmFpbHVyZXMKLQkgIHRoZSByZXN1bHRpbmcgZmFpbHVyZXMgYXJlIGJ1ZyBpbiB0aGUgYWxnb3JpdGhtIGZyb20gNy4zIGFuZAotCSAgbGFjayBvZiBzdXBwb3J0IGZvciBwYXJhbXMKLQotU3VuIEZlYiAyMyAxNDo0OTozOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBhbm90aGVyIGZpeCBmb3Igbm9kZWluZm8gaW4gZW50aXRpZXMgcHJvYmxlbQotCSogdHJlZS5jIGVudGl0aWVzLmM6IGZpeGVkIGJ1ZyAjMTA2Nzg4IGZyb20gSmFtZXMgQ2xhcmsKLQkgIHNvbWUgc3BhY2VzIG5lZWQgdG8gYmUgc2VyaWFsaXplZCBhcyBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLQotU2F0IEZlYiAyMiAxODoyODoxNiBDRVQgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBwYXJzZXIuYyB1cmkuYzogZml4ZWQgdGhlIGJ1ZyBJIGludHJvZHVjZWQgaW4gdGhlIHBhdGgKLQkgIGhhbmRsaW5nLCByZXBvcnRlZCBieSBTZWJhc3RpYW4gQmVyZ21hbm4KLQotU2F0IEZlYiAyMiAwMDoxOTo0OCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhpbmcgc29tZSBub2RlaW5mbyBpbiBlbnRpdGllcyBwcm9ibGVtIHJhaXNlZAotCSAgYnkgR2xlbm4gVy4gQmFjaAotCSogcmVsYXhuZy5jOiBpbXBsZW1lbnRlZCB0aGUgZmlyc3Qgc2VjdGlvbiA3LjMgY2hlY2sKLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotRnJpIEZlYiAyMSAxODoxMjoxOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogZml4ZWQgc29tZSBwcm9ibGVtcyBpbiB0aGUgcHJldmlvdXMgY29tbWl0Ci0JICBhbmQgZmluaXNoZWQgaW1wbGVtZW50aW5nIDQuMTYgcnVsZXMgY2hlY2tpbmcKLQkgIGZvdW5kIDM3MyB0ZXN0IHNjaGVtYXM6IDM1MyBzdWNjZXNzIDIwIGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUxOSBzdWNjZXNzIDYgZmFpbHVyZXMKLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotRnJpIEZlYiAyMSAxNjozNzozOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogaW1wbGVtZW50ZWQgY2hlY2tzIGZyb20gc2VjdGlvbiA3LjIKLQotVGh1IEZlYiAyMCAxNjowMDozMSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogaW1wbGVtZW50ZWQgdGhlIGNoZWNrcyBmcm9tIHNlY3Rpb24gNy4xLCBmaXhlZAotCSAgc29tZSBvZiB0aGUgNC4yMCBhbmQgNC4yMSBwcm9ibGVtcy4KLQkgIGZvdW5kIDM3MyB0ZXN0IHNjaGVtYXM6IDMzOCBzdWNjZXNzIDM1IGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUxOSBzdWNjZXNzIDYgZmFpbHVyZXMKLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotVGh1IEZlYiAyMCAwMTowOToyNCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogaW1wbGVtZW50ZWQgdGhlIDQuMjAgYW5kIDQuMjEgc2ltcGxpZmljYXRpb24gcnVsZXMuCi0JKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0KLVdlZCBGZWIgMTkgMTg6MzA6MzAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG1vcmUgYnVnZml4ZXMKLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotV2VkIEZlYiAxOSAxNTozOTo1NiBDRVQgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiBET0NCcGFyc2VyLmM6IG9ic29sZXRlZCB4bWxOb3JtYWxpemVXaW5kb3dzUGF0aAotCSogSFRNTHBhcnNlci5jOiBvYnNvbGV0ZWQgeG1sTm9ybWFsaXplV2luZG93c1BhdGgKLQkqIFNBWC5jOiBlbnN1cmVkIHhtbERvYy5VUkwgaXMgYWx3YXlzIGNhbm9uaWMKLQkqIHBhcnNlci5jOiBvYnNvbGV0ZWQgeG1sTm9ybWFsaXplV2luZG93c1BhdGgKLQkqIHVyaS5jIGluY2x1ZGUvbGlieG1sL3VyaS5oOiBpbnRyb2R1Y2VkIHhtbENhbm9uaWNQYXRoCi0JKiB4bWxJTy5jIGluY2x1ZGUvbGlieG1sL3htbElPLmg6IG9ic29sZXRlZCB4bWxOb3JtYWxpemVXaW5kb3dzUGF0aAotCSogd2luMzIvbGlieG1sMi5kZWYuc3JjOiBhZGRlZCBmZXcgZXhwb3J0cwotCi1XZWQgRmViIDE5IDE0OjI2OjUxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluOiBwYXRjaGVkIHRvIGhhdmUgc2hhcmVkIGxpYnJhcmllcwotCSAgZm9yIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzIGFuZCBzdGF0aWMgYmluYXJpZXMgZm9yIGdkYiBkZWJ1ZwotCSAgaW4gbXkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQKLQkqIHJlbGF4bmcuYzogbW9yZSBidWdmaXhlcyAKLQkgIGZvdW5kIDM3MyB0ZXN0IHNjaGVtYXM6IDI5NiBzdWNjZXNzIDc3IGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUxNiBzdWNjZXNzIDggZmFpbHVyZXMKLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotV2VkIEZlYiAxOSAwMToxNzo0OCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogZ3Vlc3Mgd2hhdCAhIFJlbGF4LU5HIGJ1Z2ZpeGluZywgd2hhdCBhIHN1cnByaXplLi4uCi0KLVR1ZSBGZWIgMTggMjI6MDk6NTAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogZmxvYXQvZG91YmxlIGNoZWNrIGJ1Z2ZpeAotCSogdHJlZS5jIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogZXhwb3J0ZWQgYSBmdW5jdGlvbiBmb3IgTk1UT0tFTgotCSAgdmFsaWRhdGlvbgotCSogeG1scmVhZGVyLmM6IGFkZCBhIFRPRE8gZm9yIEpvZHkKLQkqIHJlbGF4bmcuYzogYnVnZml4IGJ1Z2ZpeCBidWdmaXgKLQkgIGZvdW5kIDM3MyB0ZXN0IHNjaGVtYXM6IDMwMCBzdWNjZXNzIDczIGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDUwNyBzdWNjZXNzIDEwIGZhaWx1cmVzCi0JKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0KLVR1ZSBGZWIgMTggMDA6MzM6MTcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmMgY2hlY2stcmVsYXhuZy10ZXN0LXN1aXRlLnB5OiBtb3JlIFJlbGF4TkcgYnVnIGh1bnRpbmcKLQotTW9uIEZlYiAxNyAxODoyMzozMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYyBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUucHk6IG1vcmUgd29yayBvbiB0aGUKLQkgIFJlbGF4TkcgaW1wbGVtZW50YXRpb24gY29uZm9ybWFuY2UgdGVzdGluZy4KLQkgIGZvdW5kIDM3MyB0ZXN0IHNjaGVtYXM6IDI4NCBzdWNjZXNzIDg5IGZhaWx1cmVzCi0JICBmb3VuZCA1MjkgdGVzdCBpbnN0YW5jZXM6IDQ0OCBzdWNjZXNzIDQ3IGZhaWx1cmVzCi0JKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0KLVN1biBGZWIgMTYgMTY6NDg6MzggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBDaGFuZ2VMb2cgdHJlZS5jIGRvYy9saWJ4bWwtZG9jLmVsIGRvYy9saWJ4bWwyLWFwaS54bWw6IGFwcGxpZWQKLQkgIGEgcGF0Y2ggZnJvbSBLamFydGFuIE1hcmFhcyB0byBmaXggc29tZSB0eXBvcwotCi1TdW4gRmViIDE2IDE2OjQwOjUyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBtb3JlIGJ1Zy1odW50aW5nCi0JKiB0ZXN0UmVsYXguYyBpbmNsdWRlL2xpYnhtbC9yZWxheG5nLmg6IGFkZGVkIC0tdHJlZSB0byBkdW1wIHRoZQotCSAgaW50ZXJtZWRpYXRlIHJuZyB0cmVlCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5OiBwYXRjaCBmcm9tIFN0ZXBoYW5lIEJpZG91bCB0byBmaXggdGhlIGdlbmVyYXRvcgotCSAgb24gcHl0aG9uIDwgMi4yCi0KLUZyaSBGZWIgMTQgMTc6NDk6MjYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaGVjay1yZWxheG5nLXRlc3Qtc3VpdGUucHkgcmVsYXhuZy5jOiBtb3JlIHRlc3Rpbmcgb24gdGhlCi0JICBSZWxheC1ORyBmcm9udCwgY2xlYW5pbmcgdXAgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZmFpbHVyZXMKLQkgIGN1cnJlbnQgc3RhdGUgYW5kIEkgZm9yZ290IHN1cHBvcnQgZm9yICJtaXhlZCI6Ci0JICBmb3VuZCAzNzMgdGVzdCBzY2hlbWFzOiAyODAgc3VjY2VzcyA5MyBmYWlsdXJlcwotCSAgZm91bmQgNTI5IHRlc3QgaW5zdGFuY2VzOiA0MDEgc3VjY2VzcyA2OCBmYWlsdXJlcwotCSogdHJlZS5jIGluY2x1ZGUvbGlieG1sL3RyZWUuaCB4bWxzY2hlbWFzdHlwZXMuYzogZmluaXNoZWQgYW5kCi0JICBtb3ZlZCB0aGUgTmFtZSwgTkNOYW1lIGFuZCBRTmFtZSB2YWxpZGF0aW9uIHJvdXRpbmUgaW4gdHJlZS5jCi0JKiB1cmkuYzogZml4ZWQgaGFuZGxpbmcgb2YgVVJJIGVuZGluZyB1cCB3aXRoICMsIGkuZS4gaGF2aW5nCi0JICBhbiBlbXB0eSBmcmFnbWVudCBJRC4KLQkqIHJlc3VsdC9yZWxheG5nLyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMKLQotVGh1IEZlYiAxMyAxNjo0OToyNCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhpbmNsdWRlLXRlc3Qtc3VpdGUucHk6IGltcHJvdmVkIHRoZSBzY3JpcHQgYWNjb3JkaW5nbHkKLQkgIHRvIHRoZSBYSW5jbHVkZSByZWdyZXNzaW9uIHRlc3RzIHVwZGF0ZXMKLQkqIHhwb2ludGVyLmM6IEltcGxlbWVudGVkIFhQb2ludGVyIGVsZW1lbnQoKSBTY2hlbWUgVzNDIFBSIG9mIDEzCi0JICBOb3ZlbWJlciAyMDAyCi0JKiByZXN1bHQvWFBhdGgveHB0ci9jaGFwdGVyc2NoaWxkc2VxIHJlc3VsdC9YUGF0aC94cHRyL3ZpZGNoaWxkc2VxCi0JICB0ZXN0L1hQYXRoL3hwdHIvY2hhcHRlcnNjaGlsZHNlcSB0ZXN0L1hQYXRoL3hwdHIvdmlkY2hpbGRzZXE6Ci0JICBhdWdtZW50ZWQgdGhlIFhwb2ludGVyIHRlc3RzdWl0ZSBmb3IgdGhlIGVsZW1lbnQoKSBzY2hlbWUKLQotVGh1IEZlYiAxMyAxMjowMDozMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmcuYzogYWRkZWQgVE9ETyBmb3IgdGhlIERURCBjb21wYXRpYmlsaXR5IHNwZWMKLQkqIHhpbmNsdWRlLmM6IG1vcmUgYnVnIGZpeGVzIGRyaXZlbiBieSB0aGUgdGVzdHN1aXRlIAotCi1UdWUgRmViIDExIDE5OjAxOjAyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2hlY2steGluY2x1ZGUtdGVzdC1zdWl0ZS5weSB4aW5jbHVkZS5jOiBXb3JrIG9uIHRoZSBXM0MvTklTVAotCSAgcmVncmVzc2lvbiB0ZXN0cyBmb3IgWEluY2x1ZGUsIGltcHJvdmVkIHRoZSBzY3JpcHQsIGltcHJvdmluZwotCSAgWEluY2x1ZGUgZXJyb3IgcmVwb3J0aW5nIG1lY2hhbmlzbQotCi1Nb24gRmViIDEwIDE3OjE5OjE0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBkb2MvKiBjb25maWd1cmUuaW46IHByZXBhcmluZyByZWxlYXNlIDIuNS4zCi0KLU1vbiBGZWIgMTAgMTc6MTE6MjIgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHRyeWluZyB0byBmaXggIzEwNDkzNCBhYm91dCBzb21lIFhIVE1MMSBzZXJpYWxpemF0aW9uCi0JICBpc3N1ZXMuCi0KLU1vbiBGZWIgMTAgMTY6NDE6MTMgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jIHhtbElPLmM6IGZpeGluZyBidWcgIzEwNDY0NiBhYm91dCBpY29udiBiYXNlZAotCSAgZW5jb2RpbmcgY29udmVyc2lvbiB3aGVuIHRoZSBpbnB1dCBidWZmZXIgc3RvcHMgaW4gdGhlCi0JICBtaWRkbGUgb2YgYSBtdWx0aWJ5dGUgY2hhcgotCi1Nb24gRmViIDEwIDE1OjI0OjQ3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdC9yZWxheG5nL09BU0lTL3NwZWN0ZXN0LnhtbDogT0FTSVMgUmVsYXhORyB0ZXN0c3VpdGUKLQkqIGNoZWNrLXJlbGF4bmctdGVzdC1zdWl0ZS5weTogcHl0aG9uIHNjcmlwdCB0byBydW4gcmVncmVzc2lvbgotCSAgYWdhaW5zdCBPQVNJUyBSZWxheE5HIHRlc3RzdWl0ZQotCSogcmVsYXhuZy5jOiBzb21lIGNsZWFudXAgdHdlYWtzCi0JKiBIVE1McGFyc2VyLmMgZ2xvYmFscy5jOiBjbGVhbnVwcyBpbiBjb21tZW50cwotCSogZG9jL2xpYnhtbDItYXBpLnhtbDogdXBkYXRlZCB0aGUgQVBJCi0JKiByZXN1bHQvcmVsYXhuZy8qOiBlcnJvcnMgbW92ZWQgZmlsZXMsIHNvIGxhcmdlIGRpZmZzIGJ1dAotCSAgbm8gY2hhbmdlcyBhdCB0aGUgc2VtYW50aWMgbGV2ZWwuCi0KLU1vbiBGZWIgMTAgMDE6MDA6MzEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGluZyAjMTA1Njc4IHByb2JsZW0gd2hlbiBkdW1waW5nIGEgbmFtZXNwYWNlIG5vZGUuCi0KLU1vbiBGZWIgMTAgMDA6MzA6MDEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBkb2MgY29tbWVudCBwcm9ibGVtcwotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sX3dyYXAuaCBweXRob24vdHlwZXMuYzogYWRkaW5nCi0JICBSZWxheE5HIHdyYXBwZXJzCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlbGF4bmcucHk6IGFkZGVkIGEgc3BlY2lmaWMKLQkgIHRlc3Qgb2YgdGhvc2UgZWFybHkgUHl0aG9uIFJlbGF4TkcgYmluZGluZ3MKLQotU3VuIEZlYiAgOSAxNToxODo0MyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5zcGVjLmluOiBmaXhlcyBhIGxpYnRvb2wgcHJvYmxlbSBvbiBBTUQgNjRiaXRzIGJ1aWxkcwotCSogcmVsYXhuZy5jOiBmb3VuZCB0aGUgdmFsaWRhdGlvbiBwcm9ibGVtIEkgaGFkIHdpdGggaW50ZXJsZWF2ZQotCSAgd2hlbiBub3QgY292ZXJpbmcgYWxsIHJlbWFpbmluZyBzaWJsaW5ncwotCSogTWFrZWZpbGUuYW0gdGVzdC5yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkIHRoZQotCSAgdGVzdHN1aXRlIGFuZCBjaGVjayB0aGUgUk5HIHNjaGVtYXMgYWdhaW5zdCB0aGUgUk5HIHNjaGVtYXMKLQkgIGdpdmVuIGluIGFwcGVuZGl4IEEKLQotU2F0IEZlYiAgOCAxODo1NTo0MyBDRVQgMjAwMyBJZ29yIFpsYXRrb3ZpYyA8aWdvckB6bGF0a292aWMuY29tPgotCi0JKiB3aW4zMi9NYWtlZmlsZS5tc3ZjOiB1cGRhdGVzIGZvciBSZWxheE5HCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndzogdXBkYXRlcyBmb3IgUmVsYXhORwotCSogd2luMzIvbGlieG1sMi5kZWYuc3JjOiBhZGRlZCBSZWxheE5HIGV4cG9ydHMKLQotRnJpIEZlYiAgNyAxNDowMDo1MyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhpbmNsdWRlLmM6IGFwcGxpZWQgYW5vdGhlciBidWcgZml4IGZyb20gU2VhbiBDaGl0dGVuZGVuCi0KLUZyaSBGZWIgIDcgMTM6MzQ6MDggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4geG1sbGludC5jOiBJIGYuLi5lZCB1cCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCi0JICBvZiBzY2hlbWFzIGFuZCAtLXJlbGF4bmcgb3B0aW9uIGRpc3BsYXkgaW4geG1sbGludCwgcG9pbnRlZCBieQotCSAgTW9ydXMgV2FsdGVyLgotCSogeGxpbmsuYzogU2VhbiBDaGl0dGVuZGVuIHBvaW50ZWQgYSBjb3VwbGUgb2YgZXJyb3JzIGluIHRoZSBYTGluawotCSAgZGV0ZWN0aW9uIG1vZHVsZSwgZml4ZXMgYnVnICMxMDUzNzQuCi0KLUZyaSBGZWIgIDcgMDE6NDM6MzggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogYWRkZWQgdGhlIGJvb2xlYW4gYmFzZSB0eXBlLgotCi1UaHUgRmViICA2IDEwOjIzOjUyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hc3R5cGVzLmM6IHN0YXJ0ZWQgaW1wbGVtZW50aW5nIHNvbWUgb2YgdGhlIG1pc3NpbmcKLQkgIGRlZmF1bHQgc2ltcGxlIHR5cGVzCi0JKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIHRoZSByZXN1bHRzCi0KLVdlZCBGZWIgIDUgMTU6Mjg6MDQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBORVdTIGRvYy8qOiB1cGRhdGVkIHRoZSBkb2NzLCByZWFkeSBmb3IgMi41LjIgcmVsZWFzZQotCi1XZWQgRmViICA1IDE0OjE1OjU5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIHRyZWUuYyB4bWxJTy5jOiBjb21tZW50cyBjbGVhbnVwcwotCSogTWFrZWZpbGUuYW06IHVzZSB4bWxsaW50IGZvciBkb2luZyB0aGUgUmVsYXhORyB0ZXN0cwotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgMi41LjIgbWFkZSBzY2hlbWFzIHN1cHBvcnQgZGVmYXVsdCB0bwotCSAgb24gaW5zdGVhZCBvZiBvZmYKLQkqIHJlbGF4bmcuYzogcmVtb3ZlZCB0aGUgdmVyYm9zaXR5Ci0JKiB4bWxsaW50LmM6IGFkZGVkIC0tcmVsYXhuZyBvcHRpb24KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbF93cmFwLmg6IHByZXBhcmVkIHRoZSBpbnRlZ3JhdGlvbgotCSAgb2YgdGhlIG5ldyBSZWxheE5HIG1vZHVsZSBhbmQgc2NoZW1hcwotCSogcmVzdWx0L3JlbGF4bmcvKjogbGVzcyB2ZXJib3NlIG91dHB1dAotCi1XZWQgRmViICA1IDEyOjAwOjM2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZG8gbm90IHJ1biBjb250ZW50IG1vZGVsIHZhbGlkYXRpb24gaWYgdGhlCi0JICBjb250ZW50IGlzIG5vdCBkZXRlcm1pbmlzdAotCi1XZWQgRmViICA1IDExOjQzOjU4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGFkZGVkIHRoZSByZWRlZmluaXRpb24gb2YgbmFtZXNwYWNlZCBhdHRyaWJ1dGUKLQkgIGNoZWNrIHRoYXQgd2FzIG1pc3NpbmcgYXMgRmFicmljZSBEZXNy6SBwb2ludGVkIG91dC4KLQotV2VkIEZlYiAgNSAxMTowOToyOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC9IVE1McGFyc2VyLmg6IGFwcGxpZWQgSFRNTAotCSAgaW1wcm92ZW1lbnRzIGZyb20gTmljayBLZXcsIGFsbG93aW5nIHRvIGRvIG1vcmUgY2hlY2tpbmcKLQkgIHRvIEhUTUwgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMuCi0KLVR1ZSBGZWIgIDQgMjM6NDc6MDYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBmaXhpbmcgYnVnICMxMDUxMzcgYWJvdXQgZW50aXRpZXMgZGVjbGFyYXRpb24KLQkgIG5lZWRpbmcgdG8gYmUgY29waWVkIHRvIHRoZSBpbmNsdWRpbmcgZG9jdW1lbnQuCi0KLVR1ZSBGZWIgIDQgMjA6MjY6MjIgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IGZpeGVkIGJ1ZyAjMTA0ODE3IHdpdGggZGVsZWdhdGVVUkkKLQkqIHhwYXRoLmM6IGZpeGluZyBidWdzICMxMDQxMjMgYW5kICMxMDQxMjUKLQotVHVlIEZlYiAgNCAxNzoxMjo1NiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB2YWxpZC5jIHhtbHJlYWRlci5jIHB5dGhvbi9saWJ4bWxfd3JhcC5oIAotCSAgcHl0aG9uL3R5cGVzLmM6IGZpeGluZyAjMTA0MDk2IHRvIGNvbXBpbGUgd2l0aG91dCByZWdleHBzCi0KLVR1ZSBGZWIgIDQgMTY6MzE6NTUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBmaXhpbmcgYnVnICMxMDM5NjkgZm9yZ290IHRvIGFkZCBhbiBlcHNpbG9uIHRyYW5zaXRpb24KLQkgIHdoZW4gYnVpbGRpbmcgdGhlIGF1dG9tYXRhIGZvciBlbGVtKgotCi1UdWUgRmViICA0IDE2OjIxOjA3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQXJuZSBkZSBCcnVpam4gZml4aW5nIAotCSAgYnVnICMxMDM4MjcKLQotVHVlIEZlYiAgNCAxNjoxNzowOSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogdXBkYXRpbmcgYSBjb21tZW50LCBmaXhpbmcgIzEwMzc3NgotCi1UdWUgRmViICA0IDE2OjA1OjUzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGluZyBidWcgMTA1MDQ5IGZvciB2YWxpZGl0eSBjaGVja2luZyBvZiBjb250ZW50Ci0JICB3aXRoaW4gcmVjdXJzaXZlIGVudGl0aWVzLgotCi1UdWUgRmViICA0IDE1OjQwOjU0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiB0cnkgdG8gZml4ICMgMTA1MDQ5Ci0JKiByZWxheG5nLmMgeG1sc2NoZW1hc3R5cGVzLmM6IGEgY291cGxlIG9mIGNoYW5nZXMgYW5kIGV4dGVuc2lvbnMKLQkqIHRyZWUuYzogdXBkYXRlZCBhIGZ1bmN0aW9uIGNvbW1lbnQKLQotVHVlIEZlYiAgNCAwMDoyMDo1OCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmc6IG1vcmUgd29yayBvbiBncmFtbWFycyBhbmQgcmVmcy9kZWZzCi0JKiB0ZXN0L3JlbGF4bmcvKiByZXN1bHQvcmVsYXhuZy8qOiBhdWdtZW50ZWQvdXBkYXRlZCB0aGUKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIEZlYiAgMyAxNDoxNjo1OSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmc6IG1vcmUgd29yayBvbiBuYW1lIGNsYXNzZXMsIGV4Y2VwdCBzdXBwb3J0Ci0JKiB0ZXN0L3JlbGF4bmcvKiByZXN1bHQvcmVsYXhuZy8qOiBhdWdtZW50ZWQvdXBkYXRlZCB0aGUKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIEZlYiAgMyAxMTo1NjowNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmc6IG1vcmUgd29yayBvbiBuYW1lIGNsYXNzZXMsIHRoZSAidmFsaWRhdGUgYWxsIiBzY2hlbWFzCi0JICBzZWVtcyB0byB3b3JrIG5vdy4KLQkqIHRlc3QvcmVsYXhuZy8qIHJlc3VsdC9yZWxheG5nLyo6IGF1Z21lbnRlZC91cGRhdGVkIHRoZQotCSAgcmVncmVzc2lvbiB0ZXN0cwotCi1Nb24gRmViICAzIDA5OjUwOjI2IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiByZW1vdmVkIGFuIHVucHJvdGVkdGVkIGRlYnVnIG1lc3NhZ2UgQWxla3NpIFN1aG9uZW4KLQkqIHBhcnNlci5jOiBwdXQgYSBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGRvY3VtZW50IGRlcHRoLCBiYXNpY2FsbHkKLQkgIHRyeWluZyB0byBhdm9pZCBhbm90aGVyIGtpbmQgb2YgRG9TIGF0dGFjay4KLQkqIHJlbGF4bmcuYzogc29tZSBjb2RlIHcuci50LiBuYW1lQ2xhc3NlcwotCi1TdW4gRmViICAyIDE3OjAxOjQzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogY2hlY2sgYWxsIHRoZSBuYW1lc3BhY2Ugc3VwcG9ydAotCSAgd2FzIGFjdHVhbGx5IGNvcnJlY3QgYmFzZWQgb24gdHV0b3JpYWwgc2VjdGlvbiAxMC4KLQotU3VuIEZlYiAgMiAxNTozMzozOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmc6IGluY2x1ZGUgc2VlbXMgdG8gd29yayBva2F5IG5vdwotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkL3VwZGF0ZWQgdGhlCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVNhdCBGZWIgIDEgMTk6NDQ6NTggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGEgYml0IG9mIHdvcmsgZG9uZSBpbiB0aGUgdHJhaW4gYmFjay4KLQkqIHRlc3QvcmVsYXhuZy8qOiBhZGRlZCBvbmUgb2YgdGhlIGluY2x1ZGUgdGVzdHMKLQotVGh1IEphbiAzMCAxNDowNjo1NSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHJlbGF4bmc6IG1vcmUgd29yayBkb25lIGluIHRoZSB0cmFpbgotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkL3VwZGF0ZWQgdGhlCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVdlZCBKYW4gMjkgMjM6NDQ6NTggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IGRlYnVnZ2luZyBvZiBleHRlcm5hbFJlZgotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkL3VwZGF0ZWQgdGhlCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVdlZCBKYW4gMjkgMjI6MDY6MDQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG1vcmUgd29yayBvbiBSZWxheC1ORywgaW1wbGVtZW50aW5nIGV4dGVybmFsUmVmCi0JKiB0ZXN0L3JlbGF4bmcvKiByZXN1bHQvcmVsYXhuZy8qOiBhdWdtZW50ZWQvdXBkYXRlZCB0aGUgCi0JICByZWdyZXNzaW9uIHRlc3RzCi0JKiBNYWtlZmlsZS5hbTogY2xlYW51cCB0byBSZWxheHRlc3RzIHRhcmdldAotCi1XZWQgSmFuIDI5IDAwOjA4OjM4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBtb3JlIHdvcmsgb24gUmVsYXgtTkcsIGltcGxlbWVudGluZyBpbnRlcmxlYXZlCi0JKiB0ZXN0L3JlbGF4bmcvKiByZXN1bHQvcmVsYXhuZy8qOiBhdWdtZW50ZWQvdXBkYXRlZCB0aGUgCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVR1ZSBKYW4gMjggMjE6NTY6NDkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG1vcmUgd29yayBvbiBSZWxheC1ORywgaW1wbGVtZW50aW5nIGludGVybGVhdmUKLQkqIHRlc3QvcmVsYXhuZy8qIHJlc3VsdC9yZWxheG5nLyo6IGF1Z21lbnRlZC91cGRhdGVkIHRoZSAKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIEphbiAyNyAwNzozNToyOSBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvdHV0b3JpYWwvY3VzdG9tZm8ueHNsCi0JKiBkb2MvdHV0b3JpYWwvY3VzdG9taHRtbC54c2wKLQlhZGRpbmcgc3R5bGVzaGVldCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGdlbmVyYXRlIGZvCi0JZm9yIHBkZiBhbmQgaHRtbAotCi1Nb24gSmFuIDI3IDEzOjI5OjQzIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBtb3JlIHdvcmsgb24gUmVsYXgtTkcKLQkqIHRlc3QvcmVsYXhuZy8qIHJlc3VsdC9yZWxheG5nLyo6IGF1Z21lbnRlZC91cGRhdGVkIHRoZSAKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBhZGRlZCBhIG51bWJlciBvZiBiYXNlIHR5cGUgZGVmaW5pdGlvbiBidXQgbm90Ci0JICB0aGUgYXNzb2NpYXRlZCBjaGVja3MsIHRob3NlIGFyZSBzdGlsbCBUT0RPcwotCi1TdW4gSmFuIDI2IDE3OjM3OjA2IE1TVCAyMDAzIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQlpbiBkb2NzL3R1dG9yaWFsOgotCSogYXBhLmh0bWwKLQkqIGFwYi5odG1sCi0JKiBhcGMuaHRtbAotCSogYXBkLmh0bWwKLQkqIGFwZS5odG1sCi0JKiBhcGYuaHRtbAotCSogYXBnLmh0bWwKLQkqIGFyMDFzMDIuaHRtbAotCSogYXIwMXMwMy5odG1sCi0JKiBhcjAxczA0Lmh0bWwKLQkqIGFyMDFzMDUuaHRtbAotCSogYXIwMXMwNi5odG1sCi0JKiBhcjAxczA3Lmh0bWwKLQkqIGFyMDFzMDguaHRtbAotCSogaW5kZXguaHRtbAotCSogeG1sdHV0b3JpYWwucGRmCi0JKiB4bWx0dXRvcmlhbC54bWwKLQlhZGQgaW5kZXggdG8gdHV0b3JpYWwKLQotU3VuIEphbiAyNiAxNzowMjoyOSBNU1QgMjAwMyBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MveG1sY2F0YWxvZy4xCi0JKiBkb2MveG1sY2F0YWxvZ19tYW4uaHRtbAotCSogZG9jL3htbGNhdGFsb2dfbWFuLnhtbAotCWJlbGF0ZWRseSBmaXhpbmcgYnVnICM5MzYyMiAoYWRkcyByZXdyaXRlVVJJIHR5cGUgdG8KLQkiLS1hZGQiIG9wdGlvbiBpbiB4bWxjYXRhbG9nIG1hbiBwYWdlCi0KLVN1biBKYW4gMjYgMjA6NDc6MjYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxjYXRhbG9nLmMgeG1sbGludC5jOiBhcHBsaWVkIHBhdGNoIGZvciBOZXRCU0QgYnkKLQkgIEp1bGlvIE1lcmlubywgY2xvc2luZyAjMTA0NDc1Ci0KLVN1biBKYW4gMjYgMjA6Mzg6NDMgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG1vcmUgd29yayBvbiBSZWxheC1ORwotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkL3VwZGF0ZWQgdGhlIAotCSAgcmVncmVzc2lvbiB0ZXN0cwotCi1TdW4gSmFuIDI2IDAxOjQ5OjU4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcmVsYXhuZy5jOiBtb3JlIHdvcmsgb24gUmVsYXgtTkcKLQkqIHRlc3QvcmVsYXhuZy8qIHJlc3VsdC9yZWxheG5nLyo6IGF1Z21lbnRlZC91cGRhdGVkIHRoZSAKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotU2F0IEphbiAyNSAxODo1OTo1NCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFJFQURNRTogdXBkYXRlZCB0aGUgcG9saWN5IG9uIHByaXZhdGUgbWFpbCBhbnN3ZXJzCi0JKiByZWxheG5nLmM6IG1vcmUgd29yayBvbiBSZWxheC1ORwotCSogdGVzdC9yZWxheG5nLyogcmVzdWx0L3JlbGF4bmcvKjogYXVnbWVudGVkL3VwZGF0ZWQgdGhlIAotCSAgcmVncmVzc2lvbiB0ZXN0cwotCi1GcmkgSmFuIDI0IDE1OjEyOjQ0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZXJyb3IuYyBwYXJzZXIuYyB0cmVlLmM6IGFwcGxpZWQgYSBkb2N1bWVudGF0aW9uIHBhdGNoIGZyb20KLQkgIFN0ZWZhbiBLb3N0Ci0KLUZyaSBKYW4gMjQgMDI6MDA6NTAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZWxheG5nLmM6IG1vcmUgd29yayBvbiBSZWxheC1ORwotCSogZG9jLyo6IHJlZ2VuZXJhdGVkIHRoZSBkb2NzCi0JKiB0ZXN0L3JlbGF4bmcvKiByZXN1bHQvcmVsYXhuZy8qOiB1cGRhdGVkIGFuZCBhdWdtZW50ZWQgdGhlCi0JICBSZWxheC1ORyByZWdyZXNzaW9uIHRlc3RzIGFuZCByZXN1bHRzCi0KLVRodSBKYW4gMjMgMTk6MjY6MjAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW4gcmVsYXhuZy5jIGluY2x1ZGUvbGlieG1sL3JlbGF4bmcuaDoKLQkgIEZpcnN0IGNvbW1pdCBvZiB0aGUgbmV3IFJlbGF4LU5HIHZhbGlkYXRpb24gY29kZSwgbm90IGdlbmVyYWxseQotCSAgdXNlZnVsIHlldC4KLQkqIHRlc3QvcmVsYXhuZy8qIHJlc3VsdC9yZWxheG5nLyo6IGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlZ3Jlc3Npb24KLQkgIHRlc3RzCi0KLVRodSBKYW4gMjMgMTk6MjI6NTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IG1pbmltaXplZCB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgR2V0Q29udGVudAotCSAgYW5kIGEgYml0IG9mIGNsZWFudXAuCi0KLVRodSBKYW4gMjMgMTc6NDE6MzcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5OiBzZWVtcyB0aGVyZSBpcyBubyBnb29kIHJlYXNvbnMgdG8KLQkgIG5vdCBnZW5lcmF0ZSBiaW5kaW5ncyBmb3IgWFBvaW50ZXIKLQotVHVlIEphbiAyMSAxMzoxOTozNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIGRvYy9hcGlidWlsZC5weTogYXBwbGllZCBhIG5ldyBwYXRjaCBmcm9tCi0JICBTdOlwaGFuZSBCaWRvdWwgZm9yIGNsZWFudXBzCi0JKiBkb2MvbGlieG1sMi1hcGkueG1sOiByZWJ1aWx0IHRoZSBBUEkgZGVzY3JpcHRpb24gd2l0aAotCSAgbmV3IGVudHJ5IHBvaW50cwotCi1Nb24gSmFuIDIwIDIzOjI1OjAwIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgcHl0aG9uL2Rydl9saWJ4bWwyLnB5IHB5dGhvbi9nZW5lcmF0b3IucHkKLQkgIHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5IHB5dGhvbi9saWJ4bWxfd3JhcC5oCi0JICBweXRob24vdHlwZXMuYzogcGF0Y2ggZnJvbSBTdOlwaGFuZSBCaWRvdWwgZm9yIGJldHRlciBwZXIKLQkgIGNvbnRleHQgZXJyb3IgbWVzc2FnZSBBUElzCi0JKiBweXRob24vdGVzdHMvY3R4dGVycm9yLnB5IHB5dGhvbi90ZXN0cy9yZWFkZXJlcnIucHk6Ci0JICB1cGRhdGUgb2YgdGhlIHRlc3RzCi0KLVN1biBKYW4gMTkgMTc6MDk6MjggTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL2d1aWRlbGluZXMuaHRtbAotCWdyYW1tYXIgYW5kIHNwZWxsaW5nIGNsZWFudXAKLQotRnJpIEphbiAxNyAwMDozMTozMCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oIHB5dGhvbi9nZW5lcmF0b3IucHkKLQkgIHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5IHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogYXBwbGllZAotCSAgYSBwYXRjaCBmcm9tIFN06XBoYW5lIEJpZG91bCB0byBhbGxvdyBwZXIgWE1MdGV4dFJlYWRlciBlcnJvcgotCSAgYW5kIHdhcm5pbmcgaGFuZGxpbmcKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvcmVhZGVyZXJyLnB5OiBhZGRpbmcgdGhlCi0JICBzcGVjaWZpYyByZWdyZXNzaW9uIHRlc3QKLQotVHVlIEphbiAxNCAxNzowMDowOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IEFsZXhleSBFZmltb3YgcG9pbnRlZCBvdXQgdGhhdCBjb25jYXQoJ2EnLCAnYicsICkKLQkgIHNob3VsZCByYWlzZSBhIHN5bnRheCBlcnJvcgotCi1UdWUgSmFuIDE0IDE1OjM5OjE0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBjbGVhbnVwIHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsCi0KLVR1ZSBKYW4gMTQgMTQ6NDE6MTggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jOiBmaXhpbmcgYnVnICMxMDMxMDAgd2l0aCBhIGR1bW15IFVURjhUb1VURjggY29weQotCi1UdWUgSmFuIDE0IDEyOjQwOjI5IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbC5weQotCSAgcHl0aG9uL2xpYnhtbF93cmFwLmggcHl0aG9uL3R5cGVzLmM6IGFwcGxpZWQgYW5kIGZpeGVkIGEgcGF0Y2gKLQkgIGZyb20gU3TpcGhhbmUgQmlkb3VsIHRvIHByb3ZpZGUgcGVyIHBhcnNlciBlcnJvciBoYW5kbGVycyBhdCB0aGUKLQkgIFB5dGhvbiBsZXZlbC4KLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvY3R4dGVycm9yLnB5OiBhZGRlZCBhCi0JICByZWdyZXNzaW9uIHRlc3QgZm9yIGl0LgotCi1UdWUgSmFuIDE0IDAxOjE1OjA0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmM6IGZpeGVkIHRoZSBzdHJlYW1pbmcgcHJvcGVydHkgb2YgdGhlIHJlYWRlciwKLQkgIGl0IHdhcyBnZW5lcmF0aW5nIHRyZWUgZmFzdGVyIHRoYW4gY29uc3VtaW5nIGl0LiBQb2ludGVkIG91dAotCSAgYnkgTmF0ZSBNeWVycwotCSogdHJlZS5jOiBmaXhlZCBhIGJ1ZyBpbiB4bWxTYXZlRm9ybWF0RmlsZUVuYyBpZiBwYXNzZWQgYSBOVUxMIGRvYwotCi1TdW4gSmFuIDEyIDIyOjE4OjAyIENFVCAyMDAzIElnb3IgWmxhdGtvdmljIDxpZ29yQHN0dWQuZmgtZnJhbmtmdXJ0LmRlPgotCi0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IGFkZGVkIG1vcmUgeG1scmVhZGVyIGFuZCBvdGhlciBleHBvcnRzCi0KLUZyaSBKYW4gMTAgMTg6MDQ6MzIgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXggdG8gdGhlIFhQYXRoIGltcGxlbWVudGF0aW9uIGZvciBwYXJlbnQgYW5kCi0JICBhbmNlc3RvcnMgYXhpcyB3aGVuIG9wZXJhdGluZyBvbiBhIFJlc3VsdCBWYWx1ZSBUcmVlLgotCSAgRml4ZXMgYnVnICMxMDAyNzEKLQotRnJpIEphbiAxMCAxNzowNzowMSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHhtbElPLmM6IHBhdGNoIGZyb20gU3RlZmFubyBaYWNjaGlyb2xpCi0JICB0byBmaXggc29tZSBVUkkvZmlsZSBlc2NhcGluZyBwcm9ibGVtcwotCi1GcmkgSmFuIDEwIDE2OjIwOjM0IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weTogZml4ZWQgYSBidWcgcmFpc2VkIGJ5IFJheW1vbmQgV2lrZXIsIAotCSAgZG9jU2V0Um9vdEVsZW1lbnQoKSBzaG91bGQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUKLQkgIHJldHVybiBpcyBOb25lCi0KLUZyaSBKYW4gMTAgMTQ6MTM6MDMgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vbGlieG1sLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbDoKLQkgIGZpeGVkIGJ1ZyAjMTAyMTgxIGJ5IGFwcGx5aW5nIHRoZSBzdWdnZXN0ZWQgY2hhbmdlIGFuZCBmaXhpbmcKLQkgIHRoZSBnZW5lcmF0aW9uL3JlZ2lzdHJhdGlvbiBwcm9ibGVtLgotCi1GcmkgSmFuIDEwIDEzOjQ3OjU1IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBmaXhlZCBidWcgIzEwMjk2MCBieSByZXVzaW5nIHRoZSBYTUwgbmFtZSBwYXJzaW5nCi0JICByb3V0aW5lcy4KLQotRnJpIEphbiAxMCAwMDoxNjo0OSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBvbmUgbW9yZSBJc0VtcHR5RWxlbWVudCBjcmF6eW5lc3MsIHRoYXQgdGltZSBpbgotCSAgZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzIGlmIHN1YnN0aXR1dGlvbiBpcyBhc2tlZC4KLQkqIHB5dGhvbi90ZXN0cy9yZWFkZXIzLnB5OiBhZGRlZCBhIHNwZWNpZmljIHRlc3QuCi0KLVRodSBKYW4gIDkgMjI6MzU6MzEgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZHJ2X2xpYnhtbDIucHk6IHVwZGF0ZSBmcm9tIFN06XBoYW5lIEJpZG91bDogcHl0aG9uIDIuMQotCSAgc3VwcG9ydCBhbmQgaW1wcm92ZWQgZXJyb3IgaGFuZGxlciByZWdpc3RyYXRpb24KLQotVGh1IEphbiAgOSAxNDoxNjozOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmMgdHJlZS5jOiBmaXhlcyAjMTAyOTIwIGFib3V0IG5hbWVzcGFjZSBoYW5kbGluZyBpbgotCSAgSFRNTCBvdXRwdXQgYW5kIHNlY3Rpb24gMTYuMiAiSFRNTCBPdXRwdXQgTWV0aG9kIiBvZiBYU0xULTEuMAotCSogUkVBRE1FOiBmaXhlZCBhIGxpbmsKLQotV2VkIEphbiAgOCAxODozMjoyNSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBkb2MvKiBORVdTOiBwcmVwYXJpbmcgMi41LjEgcmVsZWFzZQotCSogU0FYLmMgcGFyc2VyLmM6IGZpeGluZyBYbWxUZXh0UmVhZGVyIGJ1ZwotCi1XZWQgSmFuICA4IDAwOjEzOjAxIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGZ1Y2ssIEkgaW50cm9kdWNlZCBhIG1lbW9yeSBsZWFrIG9uIGV4dGVybmFsIHBhcnNlZAotCSAgZW50aXRpZXMgaW4gMi41LjAgOi0oCi0KLVR1ZSBKYW4gIDcgMTI6MTI6NDUgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IGFub3RoZXIgZml4IG5lZWRlZCBhcyBwb2ludGVkIGJ5IENocmlzdG9waGUgTWVybGV0Ci0JICBmb3IgLS1zdHJlYW0gLS1kZWJ1ZyBpZiBjb21waWxlZCB3aXRob3V0IGRlYnVnIHN1cHBvcnQuCi0KLU1vbiBKYW4gIDYgMjA6NTM6MDggTVNUIDIwMDMgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGxpbnQueG1sCi0JKiBkb2MveG1sbGludC4xOgotCXVwZGF0ZSBtYW4gcGFnZSB3aXRoIC0tc3RyZWFtIGFuZCAtLWNoa3JlZ2lzdGVyCi0KLVR1ZSBKYW4gIDcgMDE6MTc6MjYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWxzLmM6IGZpeGVkIC0td2l0aC10aHJlYWRzIGNvbXBpbGUKLQkqIHhtbGxpbnQuYzogZml4ZWQgLS13aXRob3V0LWRlYnVnIGNvbXBpbGUKLQkqIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaDogY2xlYW51cAotCSogaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oOiBhZGQgYSBtaXNzaW5nIGluY2x1ZGUKLQotTW9uIEphbiAgNiAxNDowNjowNyBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBORVdTOiBwcmVwYXJpbmcgMi41LjAgcmVsZWFzZQotCSogU0FYLmM6IG9ubHkgd2FybiBpbiBwZWRhbnRpYyBtb2RlIGFib3V0IG5hbWVzcGFjZSBuYW1lIAotCSAgYnJva2VuZXNzCi0JKiBnbG9iYWxzLmM6IGZpeCBhIGRvYyBnZW5lcmF0aW9uIHByb2JsZW0KLQkqIHVyaS5jOiBmaXggIzEwMTUyMAotCSogZG9jLyo6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvYyBmb3IgdGhlIHJlbGVhc2UsIGluY2x1ZHVkaW5nCi0JICBzdHlsZXNoZWV0IHVwZGF0ZQotCSogcHl0aG9uL01ha2VmaWxlLmFtOiBmaXggYSBmaWxlbmFtZSBidWcKLQotTW9uIEphbiAgNiAxMjowNToxMiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy90dXRvcmlhbC8qIDogZml4ZWQgIzEwMTg5NCBpZiBkb2MgPT0gTlVMTCB4bWxGcmVlRG9jIAotCSAgc2hvdWxkIG5vdCBiZSBjYWxsZWQuCi0KLU1vbiBKYW4gIDYgMTE6NTk6MDkgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwtMi4wLnBjLmluOiBhcHBsaWVkIHRoZSBwYXRjaCB0byBmaXggIzEwMTg5NAotCi1TdW4gSmFuICA1IDIzOjM1OjQ3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jIDogYXBwbGllZCBwYXRjaCBmcm9tIEx1a2FzIFNjaHJvZWRlciBmb3IgcmVnaXN0ZXIgY2FsbGJhY2tzCi0JKiB2YWxpZC5jOiBtb2RpZmllZCBwYXRjaCBmcm9tIEx1a2FzIFNjaHJvZWRlciB0byB0ZXN0Ci0JICByZWdpc3RlciBjYWxsYmFja3Mgd2l0aCAtLWNoa3JlZ2lzdGVyCi0KLVN1biBKYW4gIDUgMDI6MjM6MjAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYzogc2VyaW91c2x5IGNoYW5nZWQgdGhlIHdheSBkYXRhIGFyZSBwdXNoZWQgdG8KLQkgIHRoZSB1bmRlcmx5aW5nIHBhcnNlciwgZ28gYnkgYmxvY2sgb2YgNTEyIGJ5dGVzIGluc3RlYWQgb2YKLQkgIHRyeW5nIHRvIGRldGVjdCB0YWcgYm91bmRhcmllcyBhdCB0aGF0IGxldmVsLiBDaGFuZ2VkIHRoZQotCSAgd2F5IGVtcHR5IGVsZW1lbnQgYXJlIGRldGVjdGVkIGFuZCB0YWdnZWQuCi0JKiBweXRob24vdGVzdHMvcmVhZGVyLnB5IHB5dGhvbi90ZXN0cy9yZWFkZXIyLnB5Ci0JICBweXRob24vdGVzdHMvcmVhZGVyMy5weTogc21hbGwgY2hhbmdlcyBtb3N0bHkgZHVlIHRvIGNvbnRleHQKLQkgIHJlcG9ydGluZyBiZWluZyBkaWZmZXJlbnQgYW5kIERURCBub2RlIGJlaW5nIHJlcG9ydGVkLiBTb21lCi0JICBlcnJvcnMgcHJldmlvdXNseSB1bmRldGVjdGVkIGFyZSBub3cgY2F1Z2h0IGFuZCBmaXhlZC4KLQkqIGRvYy94bWxyZWFkZXIuaHRtbDogZmxhZ2dlZCBsYXN0IHNlY3Rpb24gYXMgVE9ETwotCi1TYXQgSmFuICA0IDIwOjQwOjI4IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5weTogaW50ZWdyYXRlZCB0aGUgUHl0aG9uIDIuMiBvcHRpbWl6YXRpb25zCi0JICBmcm9tIEhhbm51IEtyb3NpbmcsIHdoaWxlIG1haW50YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aCAKLQkgIDEuNSBhbmQgMi4xCi0KLVNhdCBKYW4gIDQgMTc6MzM6MTcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IGEgYml0IG9mIGNsZWFudXAKLQkqIHhtbHJlYWRlci5jOiBzbWFsbCBmaXgKLQkqIGRvYy94bWxyZWFkZXIuaHRtbDogbW9yZSB3b3JrIG9uIHRoZSBYbWxUZXh0UmVhZGVyIHR1dG9yaWFsCi0JKiBweXRob24vbGlieG1sLnB5OiBhIGZldyBmaXhlcyBwb2ludGVkIG91dCBieSBIYW5udSBLcm9zaW5nCi0KLVNhdCBKYW4gIDQgMTM6NDY6MTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vc2V0dXAucHkuaW46IHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIHRvIGluY2x1ZGUKLQkgIGRydl9saWJ4bWwyLnB5IGluIHNldHVwLnB5Ci0KLVNhdCBKYW4gIDQgMDE6NDM6MDYgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1scmVhZGVyLmh0bWw6IHN0YXJ0aW5nIGRvY3VtZW50aW5nIHRoZSBuZXcgWG1sVGV4dFJlYWRlcgotCSAgaW50ZXJmYWNlLgotCi1GcmkgSmFuICAzIDE3OjE4OjMyIENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhZGRlZCB0aGUgLS1zdHJlYW0gZmxhZyB0byB1c2UgdGhlIFRleHRSZWFkZXIgQVBJCi0JKiB4bWxyZWFkZXIuYzogc21hbGwgcGVyZm9ybWFuY2UgdHdlYWsKLQotRnJpIEphbiAgMyAxMzo1MDo1NSBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXIycHk6IG9rYXkgdGhlIERURCB2YWxpZGF0aW9uCi0JICBjb2RlIG9uIHRvcCBvZiB0aGUgWE1MVGV4dFBhcnNlciBBUEkgc2hvdWxkIGJlIHNvbGlkIG5vdy4KLQotRnJpIEphbiAgMyAwMjoxNzoxOCBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXIycHk6IEZpeGluZyBzb21lIG1vcmUgbWVzcwotCSAgd2l0aCB2YWxpZGF0aW9uIGFuZCByZWN1cnNpdmUgZW50aXRpZXMgd2hpbGUgdXNpbmcgdGhlCi0JICByZWFkZXIgaW50ZXJmYWNlLCBpdCdzIGdldHRpbmcgYSBiaXQgbWVzc3kuLi4KLQotVGh1IEphbiAgMiAxNToxNToyNiBDRVQgMjAwMyBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IGFub3RoZXIgY291cGxlIG9mIHByb2JsZW0KLQkgIHJlbGF0ZWQgdG8gSXNFbXB0eUVsZW1lbnQgcmVwb3J0ZWQgYnkgU3TpcGhhbmUgQmlkb3VsIG5lZWRlZCAKLQkgIHNvbWUgZml4ZXMuCi0KLVRodSBKYW4gIDIgMTM6NTc6MDcgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbiBweXRob24vTWFrZWZpbGUuYW0gcHl0aG9uL2Rydl9saWJ4bWwyLnB5OgotCSAgaW50ZWdyYXRlZCBkcnZfbGlieG1sMi5weSBQeXRob24geG1sLnNheCBkcml2ZXIgZnJvbSBTdOlwaGFuZSBCaWRvdWwKLQkgIGJhc2VkIG9uIHRoZSBweXRob24gWG1sVGV4dFJlYWRlciBpbnRlcmZhY2UuCi0KLVdlZCBKYW4gIDEgMjI6MDU6NDAgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGJhY2tpbmcgb3V0IG9uZSBjaGFuZ2UgaW4gdGhlIGxhc3QgcGF0Y2ggd2hpY2ggYnJva2UgdGhlCi0JICByZWdyZXNzaW9uIHRlc3RzCi0KLVdlZCBKYW4gIDEgMjE6NTc6MjggQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWwuZGF0YSBnbG9iYWxzLmMgdHJlZS5jIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaDogYXBwbGllZAotCSAgYW4gb2xkIHBhdGNoIGZyb20gTHVrYXMgU2Nocm9lZGVyIHRvIHRyYWNrIG5vZGUgY3JlYXRpb24gYW5kCi0JICBkZXN0cnVjdGlvbi4gUHJvYmFibHkgbWlzc2luZyBhIGxvdCBvZiByZWZlcmVuY2VzIGF0IHRoZSBtb21lbnQKLQkgIGFuZCBub3QgdXNhYmxlIHJlbGlhYmx5LgotCi1XZWQgSmFuICAxIDIwOjEyOjA3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTkVXUyBkb2MvTWFrZWZpbGUuYW0gZG9jL25ld3MueHNsOiBnZW5lcmF0ZSB0aGUgTkVXUyBmaWxlCi0JICBmcm9tIGRvYy9uZXdzLmh0bWwgYW5kIGEgc3R5bGVzaGVldAotCi1XZWQgSmFuICAxIDE2OjA5OjU3IENFVCAyMDAzIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogZml4ZWQgYW5vdGhlciBjb3VwbGUgb2YKLQkgIHhtbHJlYWRlciBidWdzIHJlcG9ydGVkIGJ5IFN06XBoYW5lIEJpZG91bCBhbmQgYWRkZWQgdGVzdHMuCi0KLVdlZCBKYW4gIDEgMTU6NDI6NTQgQ0VUIDIwMDMgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYyBweXRob24vdGVzdHMvcmVhZGVyMi5weTogZml4ZWQgYW5vdGhlciB2YWxpZGl0eQotCSAgY2hlY2tpbmcgaW4gZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzIHJhaXNlZCBieSBTdOlwaGFuZSBCaWRvdWwKLQkgIGFuZCBhZGRlZCBhIHNwZWNpZmljIHJlZ3Jlc3Npb24gdGVzdC4KLQkqIHB5dGhvbi90ZXN0cy9yZWFkZXIzLnB5OiBjbGVhbnVwCi0KLVR1ZSBEZWMgMzEgMTU6NDQ6MDIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYyBweXRob24vdGVzdHMvcmVhZGVyMi5weTogZml4ZWQgYSBwcm9ibGVtIHdpdGgKLQkgIHZhbGlkYXRpb24gd2l0aGluIGVudGl0aWVzIHBvaW50ZWQgYnkgU3TpcGhhbmUgQmlkb3VsLCBhdWdtZW50ZWQKLQkgIHRoZSB0ZXN0cyB0byBjYXRjaCB0aG9zZS4KLQotVHVlIERlYyAzMSAxMjoxNTozNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHk6IG1vZGlmaWVkIHRoZSBnZW5lcmF0b3IgdG8gYWxsb3cga2VlcGluZwotCSAgY2xhc3MgcmVmZXJlbmNlcyB3aGVuIGNyZWF0aW5nIG5ldyBjbGFzc2VzLCBuZWVkZWQgdG8gZml4IGEgYnVnCi0JICBwb2ludGVkIGJ5IFN06XBoYW5lIEJpZG91bCB3aGVyZSB0aGUgaW5wdXQgYnVmZmVyIG9mIHRoZQotCSAgeG1sVGV4dFJlYWRlciBpbnN0YW5jZSBnZXRzIGRlc3Ryb3llZCBpZiB0aGUgcHl0aG9uIHdyYXBwZXIgZm9yCi0JICB0aGUgaW5wdXQgaXMgbm90IHJlZmVyZW5jZWQgYW55bW9yZS4KLQotTW9uIERlYyAzMCAxOTozOTozNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IGZpeGVkIGFub3RoZXIgcGFpciBvZiBwcm9ibGVtCi0JICBwb2ludGVkIGJ5IFN06XBoYW5lIEJpZG91bDogZGVwdGggc3RhcnQgYXQgMCBhbmQgYSBwYXJzZSBwcm9ibGVtLgotCi1Nb24gRGVjIDMwIDEzOjM2OjUwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogZml4ZWQgYW5vdGhlciBwcm9ibGVtCi0JICBwb2ludGVkIGJ5IFN06XBoYW5lIEJpZG91bAotCi1Nb24gRGVjIDMwIDEyOjM5OjU1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogZml4ZWQgYSBsaW1pdCBjYXNlIHByb2JsZW0KLQkgIHdpdGggIjxhLz4iCi0KLU1vbiBEZWMgMzAgMTE6NTM6NDQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYzogd2FybiBvbiB4bWxuczpwcmVmaXg9ImZvbyIKLQkqIHhtbHJlYWRlci5jIHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IGZpeGVkIGEgY291cGxlIG9mIHByb2JsZW0KLQkgIGZvciBuYW1lc3BhY2UgYXR0cmlidXRlcyBoYW5kbGluZy4KLQotTW9uIERlYyAzMCAwMDo1OTowNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmMgcGFyc2VyLmMgdHJlZS5jIGluY2x1ZGUvbGlieG1sL2VudGl0aWVzLmg6IEZpeGVkCi0JICBhIHJlYWxseSBuYXN0eSBwcm9ibGVtIHJhaXNlZCBieSBhIERvY0Jvb2sgWFNMVCB0cmFuc2Zvcm0KLQkgIHByb3ZpZGVkIGJ5IFNlYmFzdGlhbiBCZXJnbWFubgotCi1TdW4gRGVjIDI5IDEyOjEzOjE4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogZml4ZWQgYSBidWcgcG9pbnRlZCBvdXQKLQkgIGJ5IFN06XBoYW5lIEJpZG91bCBhbmQgaW50ZWdyYXRlZCBpdCBpbnRvIHRoZSB0ZXN0cwotCi1TYXQgRGVjIDI4IDIzOjQ5OjEyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmggZG9jL2xpYnhtbDItYXBpLnhtbDoKLQkgIGV4dGVuZGVkIHRoZSBYbWxUZXh0UmVhZGVyIEFQSSBhIGJpdCwgYWRkZGluZyBhY2Nlc3NvcnMgZm9yCi0JICB0aGUgY3VycmVudCBkb2MgYW5kIG5vZGUsIGFuZCBhbiBlbnRpdHkgc3Vic3RpdHV0aW9uIG1vZGUgZm9yCi0JICB0aGUgcGFyc2VyLgotCSogcHl0aG9uL2xpYnhtbC5weSBweXRob24vbGlieG1sMmNsYXNzLnR4dDogcmVsYXRlZCB1cGRhdGVzCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlYWRlci5weSAKLQkgIHB5dGhvbi90ZXN0cy9yZWFkZXIyLnB5IHB5dGhvbi90ZXN0cy9yZWFkZXIzLnB5OiB1cGRhdGVkIGEgYml0Ci0JICB0aGUgb2xkIHRlc3RzIGFuZCBhZGRlZCBhIG5ldyBvbmUgdG8gdGVzdCB0aGUgZW50aXRpZXMgaGFuZGxpbmcKLQotU2F0IERlYyAyOCAyMjoxMTo1NyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgCi0JICBweXRob24vdGVzdHMvcmVhZGVyLnB5IHB5dGhvbi90ZXN0cy9yZWFkZXIyLnB5OiBjaGFuZ2VkIHRoZQotCSAgZ2VuZXJhdG9yIHRvIHByb3ZpZGUgY2FzaW5nIGZvciB0aGUgWG1sVGV4dFJlYWRlciBzaW1pbGFyIHRvCi0JICBDIyBzbyB0aGF0IGV4YW1wbGVzIGFuZCBkb2N1bWVudGF0aW9uIGFyZSBtb3JlIGRpcmVjdGx5IHRyYW5zcG9zYWJsZS4KLQkgIEZpeGVkIHRoZSBjb3VwbGUgb2YgdGVzdHMgaW4gdGhlIHN1aXRlLgotCi1TYXQgRGVjIDI4IDE1OjU1OjMyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2d1aWRlbGluZXMuaHRtbDogYWRkZWQgYSBkb2N1bWVudCBvbiBndWlsZGVsaW5lIGZvcgotCSAgcHVibGlzaGluZyBhbmQgZGVwbG95aW5nIFhNTAotCi1GcmkgRGVjIDI3IDIwOjM1OjE1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYyB4bWxyZWFkZXIuYzogZmluYWwgdG91Y2ggcnVubmluZyBEVEQgdmFsaWRhdGlvbgotCSAgb24gdGhlIFhtbFRleHRSZWFkZXIKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvcmVhZGVyMi5weTogYWRkZWQgYQotCSAgc3BlY2lmaWMgcnVuIGJhc2VkIG9uIHRoZSBleGFtcGxlcyBmcm9tIHRlc3QvdmFsaWQvKi54bWwKLQotRnJpIERlYyAyNyAxNToxNzoyMCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwucHk6IGFkZGVkIGEgZmV3IHByZWRlZmluZWQgeG1sVGV4dFJlYWRlciBwYXJzZXIKLQkgIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgotCi1GcmkgRGVjIDI3IDEyOjU3OjIyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbF93cmFwLmg6IHRyeWluZyB0byBmaXggIzEwMjAzNwotCi1GcmkgRGVjIDI3IDEyOjE4OjE0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGZpeGluZyBidWcgIzk1Mjk2LCB3aGVuIHRoZSBwcmVkZWZpbmVkIGVudGl0aWVzCi0JICBhcmUgcmVkZWZpbmVkIGluIHRoZSBEVEQgdGhlIGRlZmF1bHQgb25lIG11c3QgYmUgdXNlZAotCSAgaW5zdGVhZCBhbnl3YXkuCi0KLVdlZCBEZWMgMjUgMTk6MjI6MDYgTVNUIDIwMDIgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGxpbnQueG1sCi0JKiBkb2MveG1sbGludC4xCi0JQWRkIGRpc2N1c3Npb24gb2YgWE1MX0RFQlVHX0NBVEFMT0cgdG8geG1sbGludCBtYW4KLQlwYWdlIC0gYnVnICMxMDA5MDcKLQotTW9uIERlYyAyMyAxNjo1NDoyMiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jOiBGaXhlZCB0aGUgZW1wdHkgbm9kZSBkZXRlY3Rpb24gdG8gYXZvaWQgcmVwb3J0aW5nCi0JICBhbiBpbmV4aXN0YW50IGNsb3NlIHRhZy4KLQotTW9uIERlYyAyMyAxNTo0MjoyNCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYyBweXRob24vc2V0dXAucHkuaW46IHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsCi0JICBmb3IgUHl0aG9uIDIuMQotCi1TdW4gRGVjIDIyIDExOjI0OjA2IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdGVzdEMxNE4uYyB2bXMvY29uZmlnLnZtczogYXBwbGllZCBDcmFpZyBBLiBCZXJyeSBwYXRjaGVzIGZvciBWTVMKLQotRnJpIERlYyAyMCAxMToyNzo0OSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9saWJ4bWwyLWFwaS54bWwgcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogb25lIHJlYWxseSBuZWVkCi0JICB0byBwcm92aWRlIHRoZSBiYXNlIFVSSSBpbmZvcm1hdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVhZGVyIHBhcnNlcgotCSAgZnJvbSBhbiBpbnB1dCBzdHJlYW0uIFVwZGF0ZWQgdGhlIEFQSSBhbmQgdGhlIGV4YW1wbGUgdXNpbmcgaXQuCi0KLUZyaSBEZWMgMjAgMDE6MTE6MzAgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0UmVhZGVyLmMgeG1scmVhZGVyLmMgdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmgKLQkgIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmggaW5jbHVkZS9saWJ4bWwveG1scmVhZGVyLmg6IHdvcmtpbmcgb24KLQkgIERURCB2YWxpZGF0aW9uIG9uIHRvcCBvZiB4bWwgcmVhZGVyIGludGVyZmFjZXMuIEFsbG93cyB0bwotCSAgdmFsaWRhdGUgYXJiaXRyYXJ5IGxhcmdlIGluc3RhbmNlcy4gVGhpcyByZXF1aXJlZCBzb21lIGV4dGVuc2lvbnMKLQkgIHRvIHRoZSB2YWxpZCBtb2R1bGUgaW50ZXJmYWNlIGFuZCBhdWdtZW50aW5nIHRoZSBzaXplIG9mIHhtbElECi0JICBhbmQgeG1sUmVmIHN0cnVjdHMgYSBiaXQuCi0JKiB1cmkuYyB4bWxyZWdleHAuYzogc2ltcGxlIGNsZWFudXAuCi0KLVdlZCBEZWMgMTggMTU6NTE6MjIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWFkZXIuYyBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaCBkb2MvbGlieG1sMi1hcGkueG1sOiBtb3JlCi0JICB3b3JrIG9uIHRoZSB4bWwgcmVhZGVyIGludGVyZmFjZXMuCi0JKiBBVVRIT1JTIE1BSU5UQUlORVJTIGRvYy8qIHdpbjMyLyo6IHVwZGF0ZWQgSWdvcidzIG1haWwgYW5kIHRoZQotCSAgV2ViIHBhZ2UgZm9yIHRoZSBXaW5kb3dzIGJpbmFyaWVzLgotCi1UdWUgRGVjIDE3IDE5OjMxOjA3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogYXBwbGllZCBhIHBhdGNoIGZvciBWTVMgZm9sbG93aW5nIHRoZSByZXBvcnQgYnkKLQkgIE5pZ2VsIEhhbGwKLQotVHVlIERlYyAxNyAxMToyOTo0MSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiB0aGUgcGFyc2VTdGFydFRhZyBidWcgZml4IHdhc24ndCBjb21wbGV0ZS4KLQotTW9uIERlYyAxNiAyMzowMDowNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBWeWFjaGVzbGF2IFBpbmR5dXJhIG1hbmFnZWQgdG8gdHJpZ2dlciBhIGJ1ZyBpbgotCSAgcGFyc2VTdGFydFRhZywgZml4aW5nIGl0LgotCSogdGVzdC9hdHQ0IHJlc3VsdC9hdHQ0IHJlc3VsdC9ub2VudC9hdHQ0OiBhZGRpbmcgdGhlIHRlc3QKLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oIGRvYy9saWJ4bWwyLWFwaS54bWw6IGFkZGVkCi0JICBtb3JlIG1ldGhvZHMgdG8gWG1sVGV4dFJlYWRlci4KLQotTW9uIERlYyAxNiAxOTozMToxNiBDRVQgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogd2luMzIvbGlieG1sMi5kZWYuc3JjOiBhZGRlZCBtb3JlIHhtbCByZWFkZXIgZXhwb3J0cwotCSogd2luMzIvTWFrZWZpbGUubXN2YyB3aW4zMi9NYWtlZmlsZS5taW5ndzogYWRkZWQgeG1sIHJlYWRlciBpbnRlcmZhY2UKLQkgIHRvIHRoZSBidWlsZAotCi1Nb24gRGVjIDE2IDA2OjM2OjU0IE1TVCAyMDAyIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWwKLQlwbHVzIGdlbmVyYXRlZCBodG1sIGFuZCBwZGYKLQlVcGRhdGluZyB0dXRvcmlhbCBhZ2FpbiBiYXNlZCBvbiBmdXJ0aGVyIGNvbW1lbnRzIGZyb20gTmlyYWoKLQlUb2xpYSBvbiB0aGUgbGFzdCBpdGVyYXRpb24KLQotU3VuIERlYyAxNSAyMToyNzozMCBNU1QgMjAwMiBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvdHV0b3JpYWwveG1sdHV0b3JpYWwueG1sCi0JKiBkb2MvdHV0b3JpYWwvaW5jbHVkZWtleXdvcmQuYwotCSogZG9jL3R1dG9yaWFsL2luY2x1ZGVnZXRhdHRyaWJ1dGUuYwotCXBsdXMgZ2VuZXJhdGVkIGh0bWwgYW5kIHBkZgotCUFkZGluZyBmaXggZnJvbSBOaXJhaiBUb2xpYSB0byB0dXRvcmlhbCB0byBwcm9wZXJseSBmcmVlIG1lbW9yeS4KLQotTW9uIERlYyAxNiAwMDozNDoyNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL3htbHJlYWRlci5oIGRvYy9saWJ4bWwyLWFwaS54bWw6IGFkZGVkCi0JICBtb3JlIG1ldGhvZHMgb2YgWG1sVGV4dFJlYWRlci4KLQkqIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0IHB5dGhvbi90ZXN0cy9yZWFkZXIucHk6IHRoaXMgaW5jcmVhc2VkIHRoZQotCSAgbWV0aG9kcyBpbiB0aGUgYm5kaW5ncywgYXVnbWVudGVkIHRoZSB0ZXN0IHRvIGNoZWNrIHRob3NlIG5ldwotCSAgZnVuY3Rpb25zLgotCi1TYXQgRGVjIDE0IDIzOjU3OjM5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVhZGVyLmMgZG9jL2xpYnhtbDItYXBpLnhtbDogYWRkZWQgdGhlIGNsb3NlIGFuZCBnZXRhdHRyaWJ1dGUKLQkgIG1ldGhvZHMgb2YgWG1sVGV4dFJlYWRlci4KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbF93cmFwLmggcHl0aG9uL3R5cGVzLmMgCi0JICBweXRob24vbGlieG1sMmNsYXNzLnR4dDogYWRkZWQgdGhlIHJlYWRlciB0byB0aGUgUHl0aG9uIGJpbmRpbmdzCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlYWRlci5weTogYWRkZWQgYSBzcGVjaWZpYwotCSAgdGVzdCBmb3IgdGhlIFB5dGhvbiBiaW5kaW5ncyBvZiB0aGUgUmVhZGVyIEFQSXMKLQkqIHBhcnNlci5jOiBzbWFsbCBjbGVhbnVwLgotCi1GcmkgRGVjIDEzIDExOjM5OjQ0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogZmFsbGJhY2sgd2FzIG9ubHkgY29weWluZyB0aGUgZmlyc3QgY2hpbGQgbm90IHRoZQotCSAgZnVsbCBjaGlsZCBsaXN0IG9mIHRoZSBmYWxsYmFjayBlbGVtZW50LCBjbG9zZXMgIzg5Njg0IGFzIHJlb3BlbmVkCi0JICBieSBCZXJuZCBLdWVtbWVybGVuCi0KLVRodSBEZWMgMTIgMTM6MzQ6NTkgQ0VUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogZXhwb3J0ZWQgaHRtbE5vZGVEdW1wT3V0cHV0Ci0KLVRodSBEZWMgMTIgMTA6NTk6MTEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyByZWxlYXNlIG9mIDIuNC4zMAotCSogZG9jL2FwaWJ1aWxkLnB5IGRvYy9saWJ4bWwyLWFwaS54bWw6IGZpeHVwcyB0byB0aGUgYXBpIGJ1aWxkZXIsCi0JICBnaXZlcyBlbnVtIHZhbHVlcywgZml4IGZ1bmN0eXBlIHJldHVybiB0eXBlLCBwdXQgYmFjayBmaWVsZHMgaW4KLQkgIHN0cnVjdHMgCi0JKiBkb2MvKjogdXBkYXRlZCB0aGUgZG9jcyByZWJ1aWx0Ci0KLVRodSBEZWMgMTIgMDE6MDk6MzQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1MdHJlZS5jIGluY2x1ZGUvbGlieG1sL0hUTUx0cmVlLmg6IHBhdGNoIGZyb20gTWFyayBWYWtvYwotCSAgYWJvdXQgaHRtbE5vZGVEdW1wT3V0cHV0IGxvY2F0aW9uLgotCSogeHBhdGguYzogcmVtb3ZlZCBhbiB1bmRlZmluZWQgZnVuY3Rpb24gc2lnbmF0dXJlCi0JKiBkb2MvYXBpYnVpbGQucHkgZG9jL2xpYnhtbDItYXBpLnhtbDogdGhlIHNjcmlwdCB3YXMgZXhwb3J0aW5nCi0JICB0b28gbWFueSBzeW1ib2xzIGluIHRoZSBBUEkgYnJlYWtpbmcgdGhlIHB5dGhvbiBiaW5kaW5ncy4KLQkgIFVwZGF0ZWQgd2l0aCB0aGUgbGlieHNsdC9saWJleHNsdCBjaGFuZ2VzLgotCi1XZWQgRGVjIDExIDIwOjI2OjE1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgcmVsZWFzZSBvZiAyLjQuMjkKLQkqIGRvYy8qOiByZWJ1aWx0IHRoZSBkb2NzIGFuZCBBUEkKLQkqIHhtbHJlYWRlci5jOiBhIGZldyBtb3JlIGZpeGVzIGZvciB0aGUgWG1sVGV4dFJlYWRlciBBUEkKLQotV2VkIERlYyAxMSAxODowMToxNSBDRVQgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oOiBhcHBsaWVkIG1pbmd3IHBhdGNoIGZyb20gTWFnbnVzIEhlbm9jaAotCi1XZWQgRGVjIDExIDE2OjU4OjQ4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2F0YWxvZy5jIGRvYy9saWJ4bWwyLWFwaS54bWw6IGEgYml0IG1vcmUgY2xlYW51cAotCi1XZWQgRGVjIDExIDE0OjU0OjQ3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2FwaWJ1aWxkLnB5IGRvYy9saWJ4bWwyLWFwaS54bWwgZG9jL01ha2VmaWxlLmFtOiBuZXcgQVBJCi0JICBidWlsZGluZyBQeXRob24gc2NyaXB0LCBkb2VzIHRoZSBDIHBhcnNpbmcgZGlyZWN0bHksIGdlbmVyYXRlcwotCSAgYSBiZXR0ZXIgQVBJIGRlc2NyaXB0aW9uIGluY2x1ZGluZyBzdHJ1Y3R1cmUgZmllZHMgZGVmcyBhbmQKLQkgIGVudW1zLiBTdGlsbCBhIGNvdXBsZSBvZiBidWdzLCBidXQgZ29vZCBlbm91Z2ggZm9yIHRoZSBweXRob24KLQkgIHdyYXBwZXJzIG5vdy4KLQkqIERPQ0JwYXJzZXIuYyBTQVguYyBuYW5vaHR0cC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRyZWUuYwotCSAgdmFsaWQuYyB4bWxJTy5jIHhtbG1lbW9yeS5jIHhtbHJlYWRlci5jIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYwotCSAgaW5jbHVkZS9saWJ4bWwvc2NoZW1hc0ludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogbW9yZQotCSAgY2xlYW51cCBiYXNlZCBvbiB0aGUgcHl0aG9uIGFuYWx5c2lzIHNjcmlwdCByZXBvcnRzLgotCSogbGlieG1sLnNwZWMuaW46IG1ha2Ugc3VyZSB0aGUgQVBJIFhNTCBkZXNjcmlwdGlvbiBpcyBwYXJ0IG9mIHRoZQotCSAgZGV2ZWwgcGFja2FnZS4KLQotVHVlIERlYyAxMCAxNjoxNjozNCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIERPQ0JwYXJzZXIuYyBIVE1McGFyc2VyLmMgYzE0bi5jIGRlYnVnWE1MLmMgZW5jb2RpbmcuYyBoYXNoLmMKLQkgIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRlc3RDMTROLmMKLQkgIHRlc3REb2Nib29rLmMgdGhyZWFkcy5jIHRyZWUuYyB2YWxpZC5jIHhtbElPLmMgeG1sbGludC5jIHhtbG1lbW9yeS5jCi0JICB4bWxyZWFkZXIuYyB4bWxyZWdleHAuYyB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmMgeHBhdGguYzoKLQkgIGNvZGUgY2xlYW51cCwgZXNwZWNpYWxseSB0aGUgZnVuY3Rpb24gY29tbWVudHMuCi0JKiB0cmVlLmM6IGZpeGVkIGEgc21hbGwgYnVnIHdoZW4gZnJlZWluZyBub2RlcyB3aGljaCBhcmUgWEluY2x1ZGUgb25lcy4KLQotTW9uIERlYyAgOSAxNTowODoxNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHhtbHJlYWRlci5jIGluY2x1ZGUvbGlieG1sL01ha2VmaWxlLmFtCi0JICBpbmNsdWRlL2xpYnhtbC94bWxyZWFkZXIuaDogIEFkZGluZyBhIG5ldyBzZXQgb2YgQVBJcyBiYXNlZCBvbgotCSAgdGhlIEMjIFRleHRYbWxSZWFkZXIgQVBJIGJ1dCBjb252ZXJ0ZWQgdG8gQy4gQWxsb3cgdG8gcGFyc2UKLQkgIGluIGNvbnN0YW50IG1lbW9yeSB1c2FnZSwgZmFyIHNpbXBsZXIgdG8gcHJvZ3JhbSBhbmQgZXhwbGFpbgotCSAgdGhhbiB0aGUgU0FYIGxpa2UgQVBJcywgdW5maW5pc2hlZCBidXQgd29ya2luZy4KLQkqIHRlc3RSZWFkZXIuYzogdGVzdCBwcm9ncmFtCi0KLVN1biBEZWMgIDggMTg6MzY6MDEgQ0VUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogYXBwbGllZCBZQUxEU1AgZnJvbSBNYXJrIFZha29jCi0KLVdlZCBEZWMgIDQgMTY6MDg6NDkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IENoaXAgdHVybmVyIGluZGljYXRlZCB0aGF0IFhIVE1MMSBzZXJpYWxpemF0aW9uCi0JICBydWxlIGZvciBzdHlsZSBhY3R1YWxseSBicmVhayBvbiBib3RoIElFIGFuZCBNb3ppbGxhLCAKLQkgIHRyeSB0byBhdm9pZCB0aGUgcnVsZSBpZiBlc2NhcGluZyBhaW4ndCBuZWNlc3NhcnkKLQotV2VkIERlYyAgNCAxMjo0MzoyOCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbmh0dHAuYzogaGFuZGxlIEhUVFAgVVJMIGVzY2FwaW5nLCBwcm9ibGVtIHJlcG9ydGVkIGJ5Ci0JICBHbGVuIE5ha2FtdXJhIGFuZCBTdGVmYW5vIFphY2NoaXJvbGkKLQotU2F0IE5vdiAzMCAxMjoxOToxNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIERPQ0JwYXJzZXIuYyBIVE1McGFyc2VyLmMgcGFyc2VyLmMgdmFsaWQuYyB4cGF0aC5jOiBjb2RlIGNsZWFudXAKLQotVGh1IE5vdiAyOCAxMjo1MzoyMiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHVyaS5jOiBKb2hhbm4gUmljaGFyZCBwb2ludGVkIG91dCBzb21lIFhQb2ludGVyIHByb2JsZW1zIGZvcgotCSAgVVJOIGJhc2VkIFVSSSByZWZlcmVuY2VzIGluIFhJbmNsdWRlLiBNb2RpZmllZCB0aGUgVVJJIHBhcnNpbmcKLQkgIGFuZCBzYXZpbmcgcm91dGluZXMgdG8gYWxsb3cgY29ycmVjdCBwYXJzaW5nIGFuZCBzYXZpbmcgb2YgCi0JICBYUG9pbnRlcnMsIGVzcGVjaWFsbHkgd2hlbiBhdHRhY2hlZCB0byAib3BhcXVlIiBzY2hlbWUgYWNjb3JkaW5nbHkKLQkgIHRvIFJGQyAyMzk2Ci0KLVdlZCBOb3YgMjcgMjA6MzY6MDggQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1MdHJlZS5jIGluY2x1ZGUvbGlieG1sL0hUTUx0cmVlLmg6IGFwcGxpZWQgdGhlIHNhbWUga2luZAotCSAgb2YgcmVmYWN0b3JpbmcgdG8gdGhlIEhUTUwgc2F2aW5nIGNvZGUuCi0JKiBkb2MvbGlieG1sMi0qLnhtbCBkb2MvQVBJKi5odG1sOiBzbGlnaHQgQVBJIGNoYW5nZXMgZ290IHJlZmxlY3RlZAotCSAgaW4gdGhlIGRvYy4KLQotV2VkIE5vdiAyNyAxMjo0MDoxNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IHJlZmFjdG9yZWQgdGhlIFhNTCBkdW1wIG9mIGEgbm9kZQotCSAgdG8gYSBidWZmZXIgQVBJIHRvIHJldXNlIHRoZSBnZW5lcmljIGR1bXAgdG8gYW4gT3V0cHV0SU8gbGF5ZXIsCi0JICB0aGlzIHJlZHVjZXMgY29kZSwgZml4ZXMgeG1sTm9kZUR1bXAoKSBmb3IgWEhUTUwsIGFsc28gbWFkZQotCSAgeG1sTm9kZUR1bXAoKSBub3cgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZSB3cml0dGVuLgotCi1XZWQgTm92IDI3IDA5OjAwOjAwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL3NldHVwLnB5LmluOiBhbm90aGVyIHBhdGNoIGZyb20gU3TpcGhhbmUgQmlkb3VsIGZvciAKLQkgIFB5dGhvbiBiaW5kaW5ncyBvbiBXaW5kb3dzCi0JKiBkb2MvcGFyc2VkZWNsLnB5OiBzbWFsbCBjbGVhbnVwCi0KLU1vbiBOb3YgMjUgMTc6Mjg6NTMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbiBjb25maWd1cmUuaW46IGFkZCBhIGxpbmUgaW4gJWNoYW5nZWxvZyBmb3IgcmVsZWFzZXMKLQotTW9uIE5vdiAyNSAxNDoxODoyNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBwYXRjaCBmcm9tIE1hcmN1cyBDbGFya2UgZml4aW5nIGEgcHJvYmxlbSBpbiBlbnRpdGllcwotCSAgcGFyc2luZyB0aGF0IHdhcyBkZXRlY3RlZCBpbiBLRGUgZG9jdW1lbnRhdGlvbnMgZW52aXJvbm1lbnQuCi0KLU1vbiBOb3YgMjQgMTQ6MTM6MjEgQ0VUIDIwMDIgRVJESSBHZXJnbyA8Y2FjdHVzQGNhY3R1cy5ydWxlei5vcmc+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYyAobGlieG1sX3ByZXYpOiBSZXR1cm4gdGhlIHByZXZpb3VzIGFzIG9wcG9zZWQgdG8KLQl0aGUgbmV4dCBub2RlIChJIGd1ZXNzIHRoaXMgaXMgdGhlIHJlc3VsdCBvZiBzb21lIGN1dCAmIHBhc3RlIHByb2dyYW1taW5nOikKLQotU2F0IE5vdiAyMyAxNzoyMjoyMiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9NYWtlZmlsZS5hbTogSmFuIFJhZmFqIHBvaW50ZWQgYSBidWcgaW4gdGhlIE1ha2VmaWxlLgotCi1TYXQgTm92IDIzIDEyOjIxOjI0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL3NldHVwLnB5LmluOiB0cnlpbmcKLQkgIHRvIGZpeCB0aGUgUHl0aG9uIGJpbmRpbmdzIGJ1aWxkIG9uIFdpbmRvd3MgKFN06XBoYW5lIEJpZG91bCkKLQotRnJpIE5vdiAyMiAyMjo0MTozNCBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL2NvbmZpZ3VyZS5qczogYWRkZWQgb3B0aW9uIGZvciBweXRob24gYmluZGluZ3MKLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogYWRkZWQgbW9yZSBleHBvcnRzCi0KLUZyaSBOb3YgMjIgMTg6NTA6MzQgQ0VUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1pbmd3OiBmaXhlZCB1bnJlc29sdmVkIHN5bWJvbHMgd2hlbiBsaW5raW5nIHdpdGgKLQkgIHB0aHJlYWRzCi0JKiB3aW4zMi93aW5jZS8qOiBhcHBsaWVkIHVwZGF0ZXMgdG8gV2luZG93cyBDRSBwb3J0IGZyb20gSmF2aWVyCi0KLUZyaSBOb3YgMjIgMTU6NTE6MjIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyAyLjQuMjgKLQkqIGxpYnhtbC5zcGVjLmluIGRvYy9NYWtlZmlsZS5hbTogc29tZSBjbGVhbnVwCi0JKiBkb2MvKjogdXBkYXRlZCB0aGUgbmV3cyBhbmQgcmVnZW5lcmF0ZWQuCi0KLUZyaSBOb3YgMjIgMTQ6MTU6MTQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpbmFsIHRvdWNoIGF0IGNsb3NpbmcgIzg3MjM1IDwvcD4gZW5kIHRhZ3MKLQkgIG5lZWQgdG8gYmUgZ2VuZXJhdGVkLgotCSogcmVzdWx0L0hUTUwvY2ZfMTI4Lmh0bWwgcmVzdWx0L0hUTUwvdGVzdDIuaHRtbCByZXN1bHQvSFRNTC90ZXN0My5odG1sOgotCSAgdGhpcyBjaGFuZ2Ugc2xpZ2h0bHkgdGhlIG91dHB1dCBvZiBhIGZldyB0ZXN0cwotCSogZG9jLyo6IHJlZ2VuZXJhdGVkCi0KLUZyaSBOb3YgMjIgMTM6MjY6MTkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogZml4aW5nIGJ1ZyAjOTkxOTAgd2hlbiBVVEY4IGRvY3VtZW50IGFyZQotCSAgcGFyc2VkIHVzaW5nIHRoZSBwcm9ncmVzc2l2ZSBwYXJzZXIgYW5kIHRoZSBlbmQgb2YgdGhlIGNodW5rCi0JICBpcyBpbiB0aGUgbWlkZGxlIG9mIGFuIFVURjggbXVsdGlieXRlIGNoYXJhY3Rlci4KLQotRnJpIE5vdiAyMiAxMzoxMzowMCBIS1QgMjAwMiBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogdGhyZWFkcy5jOiBmaXhlZCBpbml0aWFsaXphdGlvbiBwcm9ibGVtIGluIHhtbE5ld0dsb2JhbFN0YXRlCi0JICB3aGljaCB3YXMgY2F1c2luZyBjcmFzaC4KLQkqIGdsb2JhbHMuYzogcmVtb3ZlZCBkdXBsaWNhdGUgY2FsbCB0byBpbml0eG1sRGVmYXVsdFNBWEhhbmRsZXIKLQkgIGluIHhtbEluaXRpYWxpemVHbG9iYWxTdGF0ZS4KLQkqIHBhcnNlckludGVybmFscy5jOiBjbGVhbmVkIHVwIGN0eHQtPnNheCBpbml0aWFsaXNhdGlvbi4KLQotVGh1IE5vdiAyMSAxNTowNTo0NSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IG1vZGlmaWVkIHRoZSBleGlzdGluZyBBUElzCi0JICB0byBoYW5kbGUgWEhUTUwxIHNlcmlhbGl6YXRpb24gcnVsZXMgYXV0b21hdGljYWxseSwgYWxzbyBhZGQKLQkgIHhtbElzWEhUTUwoKSB0byBsaWJ4bWwyIEFQSS4gU29tZSB0d2Vha2luZyB0byBtYWtlIHN1cmUKLQkgIGxpYnhzbHQgc2VyaWFsaXphdGlvbiB1c2VzIGl0IHdoZW4gbmVlZGVkIHdpdGhvdXQgY2hhbmdpbmcKLQkgIHRoZSBsaWJyYXJ5IEFQSS4KLQkqIHRlc3QveGh0bWwxIHJlc3VsdC9ub2VudC94aHRtbDEgcmVzdWx0L3ZhbGlkL3hodG1sMS54aHRtbAotCSAgcmVzdWx0L3hodG1sMTogYWRkZWQgYSBuZXcgdGVzdCBzcGVjaWZpY2FsbHkgZm9yIHhodG1sMSBvdXRwdXQKLQkgIGFuZCB1cGRhdGVkIHRoZSByZXN1bHQgb2Ygb25lIFhIVE1MMSB0ZXN0Ci0KLVdlZCBOb3YgMjAgMTQ6MjQ6NTYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jIHBhcnNlckludGVybmFscy5jIGVuY29kaW5nLmM6IGZpeGVkICM5OTA4MgotCSAgZm9yIHhpOmluY2x1ZGUgZW5jb2Rpbmc9Ii4uLiIgc3VwcG9ydCBvbiB0ZXh0IGluY2x1ZGVzLgotCSogcmVzdWx0L1hJbmNsdWRlL3RzdGVuY29kaW5nLnhtbCB0ZXN0L1hJbmNsdWRlL2RvY3MvdHN0ZW5jb2RpbmcueG1sCi0JICB0ZXN0L1hJbmNsdWRlL2VudHMvaXNvbGF0aW4udHh0IDogYWRkZWQgYSBzcGVjaWZpYyByZWdyZXNzaW9uIHRlc3QKLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQ6IGZpeGVkIHRoZSBnZW5lcmF0b3IKLQkgIHRoZSBuZXcgc2V0IG9mIGNvbW1lbnRzIGdlbmVyYXRlZCBmb3IgZG9jL2xpYnhtbDItYXBpLnhtbCB3ZXJlCi0JICBicmVha2luZyB0aGUgcHl0aG9uIGdlbmVyYXRpb24uCi0KLVR1ZSBOb3YgMTkgMjM6MjU6NDcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvTWFrZWZpbGUuYW06IHJlcGFpciBzb21lIHByb2JsZW0gaWYgZ3RrLWRvYyBmYWlsIG9yIHN1Y2gKLQkqIGNvbmZpZ3VyZS5pbjogcGF0Y2ggZm9yIFNvbGFyaXMgb24gbmV3IGF1dG9jb25mIGNsb3NlcyAjOTg4ODAgCi0JKiBkb2MvcGFyc2VkZWNsLnB5OiByZXBhaXIgdGhlIGZyaWdnaW5nIEFQSSBidWlsZGluZyBzY3JpcHQsCi0JICBkaWQgSSBzYXkgdGhhdCBweXRob24geG1sbGliIHN1Y2tzID8KLQkqIGRvYy9saWJ4bWwyLWFwaS54bWwgZG9jL2xpYnhtbDItcmVmcy54bWw6IHJlZ2VuZXJhdGVkLCByZW9yZGVyaW5nCi0JICBhbmQgc29tZSBjb21tZW50IGFyZSBubyBtb3JlIHRydW5jYXRlZC4KLQotVHVlIE5vdiAxOSAwOTowOTowNCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBNYXJ0aW4gU3RvaWxvdiBwb2ludGVkIG91dCBhIHBvdGVudGlhbCBsZWFrIGluCi0JICB4bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0Ci0KLU1vbiBOb3YgMTggMTY6MDU6NTEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIGJ1ZyAjOTg4NzkgYSBjb3JuZXIgY2FzZSB3aGVuIDAgaXMKLQkgIGluY2x1ZGVkIGluIEhUTUwgZG9jdW1lbnRzIGFuZCB1c2luZyB0aGUgcHVzaCBwYXJzZXIuCi0KLU1vbiBOb3YgMTggMDA6MTE6MjQgQ0VUIDIwMDIgRVJESSBHZXJnbyA8Y2FjdHVzQGNhY3R1cy5ydWxlei5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbiAoUFlUSE9OX1NJVEVfUEFDS0FHRVMpOiBJZiAtLXdpdGgtcHl0aG9uIGlzCi0JICBzcGVjaWZpZWQsIGxvb2sgZm9yIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgbm90IGp1c3QgaW4gdGhlCi0JICBzcGVjaWZpZWQgcm9vdCBidXQgYWxzbyBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLiBGaXhlcyAjOTg4MjUKLQotU3VuIE5vdiAxNyAyMzozNjowNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9saWJ4bWwuYzogZml4aW5nIGJ1ZyAjOTg3OTIgLCBub2RlIG1heSBoYXZlIG5vIGRvYwotCSAgYW5kIGRlcmVmZXJlbmNpbmcgd2l0aG91dCBjaGVja2luZyBhaW4ndCBnb29kIC4uLgotCi1TdW4gTm92IDE3IDEwOjI1OjQzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgcmVsZWFzZSAyLjQuMjcKLQkqIGRvYy8qIDogdXBkYXRlZCBhbmQgcmVidWlsdCB0aGUgZG9jcwotCSogZG9jL01ha2VmaWxlLmFtIGxpYnhtbC5zcGVjLmluOiB0cnkgdG8gbWFrZSBzdXJlIHRoZSB0dXRvcmlhbAotCSAgYW5kIGFsbCB0aGUgZG9jcyBhcmUgYWN0dWFsbHkgcGFja2FnZWQgYW5kIGluIHRoZSBmaW5hbCBSUE1zCi0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogcmVzdG9yZQotCSAgeG1sbGludCAtLXJlY292ZXIgZmVhdHVyZS4KLQotU2F0IE5vdiAxNiAxNjozMDoyNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIHhwYXRoLmM6IGZpeGluZyAjOTY5MjUgd2ljaCB3YXMgYWxzbyBkZXBlbmRlbnQgb24gdGhlCi0JICBwcm9jZXNzaW5nIG9mIHBhcnNlZCBlbnRpdGllcywgYW5kIFhQYXRoIGNvbXB1dGF0aW9uIG9uIHN1c3RpdHVlZAotCSAgZW50aXRpZXMuCi0JKiB0ZXN0WFBhdGguYzogbWFrZSBzdXJlIGVudGl0aWVzIGFyZSBzdWJzdGl0dWVkLgotCi1GcmkgTm92IDE1IDE2OjIyOjU0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkICM5NjU5NCwgd2hpY2ggd2FzIHRvdGFsbHkgZGVwZW5kZW50IG9uIHRoZSAKLQkgIHByb2Nlc3Npbmcgb2YgaW50ZXJuYWwgcGFyc2VkIGVudGl0aWVzLCB3aGljaCBoYWQgdG8gYmUgY2hhbmdlZC4KLQotRnJpIE5vdiAxNSAxMjoxNjowNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHB5dGhvbi9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvTWFrZWZpbGUuYW06Ci0JICB0cnlpbmcgdG8gZml4IGJ1ZyAjOTg1MTcgYWJvdXQgYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUKLQkqIGRvYy94bWwuaHRtbCBkb2MvRkFRLmh0bWw6IGZpeGVkIHRoZSBsaW5rIHRvIGxpYmljb252ICM5NDU4NQotCi1UaHUgTm92IDE0IDE4OjQxOjU1IENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oOiBjbGVhbnVwCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndzogaW50ZWdyYXRlZCBtaW5ndyBpbiBKU2NyaXB0IGNvbmZpZ3VyZQotCSogd2luMzIvTWFrZWZpbGUubXN2YzogbW9kaWZpZWQgdG8gYWxsb3cgbWluZ3cgY29leGlzdGVuY2UKLQkqIHdpbjMyL2NvbmZpZ3VyZS5qczogaW50ZWdyYXRlZCBtaW5ndwotCSogd2luMzIvUmVhZG1lLnR4dDogY2xlYW51cAotCi1UdWUgTm92IDEyIDIyOjA2OjQ1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBzdHJlbmd0aGVuIHRoZSBndWFyZCBpbiB0aGUgUG9wIG1hY3JvcywKLQkgIGxpa2UgaW4gdGhlIFhNTCBwYXJzZXIsIGNsb3NlcyBidWcgIzk3MzE1Ci0KLVR1ZSBOb3YgMTIgMjE6NTY6MzkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogZml4ZWQgYnVnICM5ODMzOCAsIGZhdGFsRXJyb3IgU0FYCi0JICBjYWxsYmFjayBpcyBuZXZlciB1c2VkLgotCi1UdWUgTm92IDEyIDEzOjMyOjUwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VySW50ZXJuYWxzLmM6IGZpeGVkIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU0FYIHN0cnVjdHVyZQotCSAgd2hpY2ggd2FzIGJyZWFraW5nIHhzbHRwcm9jCi0JKiB4cGF0aC5jOiBwYXRjaCBmcm9tIFBldHIgUGFqYXMgZm9yIENEQVRBIG5vZGVzCi0JKiB0cmVlLmM6IHBhdGNoIGZyb20gUGV0ciBQYWphcyBpbXByb3ZpbmcgeG1sR2V0Tm9kZVBhdGgoKQotCSogcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IHBhdGNoIGZyb20gUGV0ZXIgSm9uZXMKLQkgIHJlbW92aW5nIGEgbGVhayBpbiB4bWxTQVhQYXJzZU1lbW9yeSgpIGFuZCBhZGRpbmcgdGhlCi0JICBmdW5jdGlvbiB4bWxTQVhQYXJzZU1lbW9yeVdpdGhEYXRhKCkKLQotTW9uIE5vdiAxMSAyMDo0NzowMyBNU1QgMjAwMiBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JYWRkaW5nIHBkZiBvZiB0dXRvcmlhbCwgY2hhbmdpbmcgd2ViIHBhZ2UgdG8gbGluayB0byBpdAotCSogZG9jL3R1dG9yaWFsL3htbHR1dG9yaWFsLnBkZgotCSogZG9jL3htbC5odG1sCi0JKiBkb2MvZG9jcy5odG1sCi0KLVN1biBOb3YgMTAgMjA6NDg6NTcgTVNUIDIwMDIgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3R1dG9yaWFsL2FyMDFzMDguaHRtbAotCWFkZGluZyBmaWxlIHdoYXQgSSBmb3Jnb3QgZm9yIHR1dG9yaWFsCi0KLVN1biBOb3YgMTAgMjA6MzM6MTMgTVNUIDIwMDIgSm9obiBGbGVjayAgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQlBZGRpbmcgZW5jb2RpbmcgZGlzY3Vzc2lvbiB0byB0dXRvcmlhbAotCUFkZGVkOgotCSogZG9jL3R1dG9yaWFsL2ltYWdlcy8qLnBuZzogRG9jQm9vayBhZG1vbml0aW9uIGltYWdlIGZpbGVzCi0JKiBkb2MvdHV0b3JpYWwvYXBmLmh0bWwsIGFwZy5odG1sOiBuZXcgZ2VuZXJhdGVkIGh0bWwKLQkqIGRvYy90dXRvcmlhbC9pbmNsdWRlY29udmVydC5jOiBjb252ZXJzaW9uIGNvZGUgZW50aXR5IGZpbGUKLQljaGFuZ2VkOgotCSogZG9jL3R1dG9yaWFsL3htbHR1dG9yaWFsLnhtbDogRG9jQm9vayBvcmlnaW5hbAotCSogZG9jL3R1dG9yaWFsLyouaHRtbDogZ2VuZXJhdGVkIGh0bWwKLQotRnJpIE5vdiAgOCAxNzo1OTozMiBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIGluY2x1ZGUvbGlieG1sLyouaDogcmV0aXJlZCB4bWx3aW4zMnZlcnNpb24uaAotCSogZG9jL01ha2VmaWxlLmFtOiByZXRpcmVkIHhtbHdpbjMydmVyc2lvbi5oCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IHJldGlyZWQgeG1sd2luMzJ2ZXJzaW9uLmgKLQotRnJpIE5vdiAgOCAxNjo1NTo0NyBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogZXhwb3J0ZWQgYWRkaXRpb25hbCBzeW1ib2xzCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogZXhwb3J0ZWQgdGhlIHJlc3Qgb2YgdGhlIHhtbE1lbSogCi0JICBzaXN0ZXJob29kCi0KLUZyaSBOb3YgIDggMTY6MDg6MTMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBnbG9iYWxzLmM6IGZpeGVkIGEgdHlwbyBwb2ludGVkIG91dCBieSBJZ29yCi0JKiB4cGF0aC5jOiB0cnkgdG8gc3BlZWQgdXAgbm9kZSBjb21wYXJlIHVzaW5nIGxpbmUgbnVtYmVycwotCSAgaWYgYXZhaWxhYmxlLgotCi1UaHUgTm92ICA3IDE1OjE2OjAyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBtYWtlIHhtbEZyZWVOb2RlKCkgaGFuZGxlIGF0dHJpYnV0ZXMgY29ycmVjdGx5LgotCi1XZWQgTm92ICA2IDIzOjUxOjExIENFVCAyMDAyIElnb3IgWmxhdGtvdmljIDxpZ29yQHN0dWQuZmgtZnJhbmtmdXJ0LmRlPgotCi0JKiBjYXRhbG9nLmM6IGNvbXBsZXRlZCB0aGUgIzk2OTYzIGZpeCwgYXMgcmVwb3J0ZWQgYnkgS2FybAotCSAgRWljaHdhbGRlcgotCi1XZWQgTm92ICA2IDE2OjQ4OjQ0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBvaW50ZXIuYzogdHJpZWQgdG8gZml4IGJ1ZyAjOTc4NTIgcmVwb3J0ZWQgYnkgTmljb2xhcyBOb2Zma2UKLQotU3VuIE5vdiAgMyAxMDo0Mzo0NCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBzd2l0Y2hlZCB0aGUgb3JkZXIgb2YgYSBjb3VwbGUgb2YgaW5jbHVkZXMKLQkgIHRvIGZpeCBidWdzICM5NzEwMAotCi1UaHUgT2N0IDMxIDE3OjExOjQ2IENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogY2F0YWxvZy5jOiBmaXhlZCBidWcgIzk2OTYzLCByZXZlcnRlZCB0byB0aGUgb2xkIGJlaGF2aW91ciBvZgotCSAgeG1sTG9hZENhdGFsb2dzIHRoYXQgdXNlZCB0byBzZXBhcmF0ZSBkaXJlY3RvcmllcyB3aXRoIGEgJzonLgotCi1UaHUgT2N0IDMxIDE2OjU1OjIxIENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogdGhyZWFkcy5jOiBpbXByb3ZlbWVudHMgdG8gdGhlIFdpbmRvd3Mtc2lkZSBvZiB0aHJlYWQgaGFuZGxpbmcKLQkqIHRlc3RUaHJlYWRzLmM6IGNvbmRpdGlvbmFsbHkgZXhjbHVkZWQgdW5pc3RkLmgKLQkqIHRlc3RUaHJhZHNXaW4zMi5jOiBicm9rZSBvdmVybG9uZyBsaW5lcwotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oOiBhZGFwdGVkIHRocmVhZC1yZWxhdGVkIG1hY3JvcyB0byB0aGUgbmV3Ci0JICBzY2hlbWUgYW5kIGZvciBwdGhyZWFkcyBvbiBXaW5kb3dzCi0JKiB3aW4zMi9NYWtlZmlsZS5tc3ZjOiBpbnRyb2R1Y2VkIGEgbW9yZSBmbGV4aWJsZSB0aHJlYWQgYnVpbGQsIAotCSAgYWRkZWQgdGVzdFRocmVhZHNbV2luMzJdLmMgdG8gdGhlIGJ1aWxkCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGludHJvZHVjZWQgYSBtb3JlIGZsZXhpYmxlIHRocmVhZCBjb25maWcKLQotMjAwMi0xMC0zMSAgSm9obiBGbGVjayAgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWwuaHRtbCAoYW5kLCBieSBpbXBsaWNhdGlvbiwgRkFRLmh0bWwpCi0JYWRkZWQgVVRGLTggY29udmVyc2Fpb24gRkFRIGZyb20gTWFyY3VzIExhYmliIElza2FuZGVyCi0KLVR1ZSBPY3QgMjkgMTg6MzI6MzMgQ0VUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcmVtb3ZlZCB4bWx3aW4zMnZlcnNpb24uaAotCSogaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06IHJlbW92ZWQgeG1sd2luMzJ2ZXJzaW9uLmgKLQotTW9uIE9jdCAyOCAxNDowMToyOSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogYXBwbGllZCBwYXRjaCBmcm9tIEJyaWFuIFN0YWZmb3JkIHRvIGZpeCBhIGJ1ZwotCSAgaW4geG1sUmVjb25jaWxpYXRlTnMoKQotCi1Nb24gT2N0IDI4IDEzOjUxOjU1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQ2hyaXN0aWFuIEdsYWhuIHRvIGFsbG93Ci0JICB4bWxOZXdDaGlsZCgpIG9uIGRvY3VtZW50IGZyYWdtZW50IG5vZGVzCi0KLVNhdCBPY3QgMjYgMTU6Mjc6MDAgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IENocmlzdGlhbiBHbGFobiBmb3VuZCBhIHByb2JsZW0gd2l0aCBhIHJlY2VudAotCSAgcGF0Y2ggdG8geG1sUGFyc2VCYWxhbmNlZENodW5rTWVtb3J5UmVjb3ZlcigpCi0JKiB4bWxzY2hlbWFzLmM6IENoYXJsZXMgQm96ZW1hbiBmaXhlZCBzb21lIFNjaGVtYXMgdmFsaWRhdGlvbgotCSAgcHJvYmxlbXMKLQkqIHJlc3VsdC9zY2hlbWFzL2VsZW0qIHJlc3VsdC9zY2hlbWFzL3NlcSogdGVzdC9zY2hlbWFzLmVsZW0qCi0JICB0ZXN0L3NjaGVtYXMvc2VxKjogYWRkZWQgdGhlIHRlc3QgY2FzZXMgZnJvbSBDaGFybGVzCi0KLVdlZCBPY3QgMjMgMTY6NDI6MjkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlnLmguaW4gbGlieG1sLnNwZWMuaW4gZG9jL01ha2VmaWxlLmFtOgotCSAgc2VyaW91cyBjbGVhbnVwIG9mIHRoZSBzcGVjIGZpbGUgYW5kIGFzc29jaWF0ZWQgY2hhbmdlcwotCSAgaW4gdGhlIE1ha2VmaWxlcy4KLQkqIHZhbGlkLmM6IHRyeSB0byByZW1vdmUgc29tZSB3YXJuaW5ncyBvbiB4ODZfNjQKLQotV2VkIE9jdCAyMyAxMDo1Mzo0MiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL01ha2VmaWxlLmFtOiBhZGRlZCB3aW5zb2NrY29tcGF0LmggdG8gRVhUUkFfRElTVCB0bwotCSAgZml4IGJ1ZyAjOTY1ODYKLQotVHVlIE9jdCAyMiAyMToxMzowNiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IE1pa2hhaWwgU29ncmluZSBwb2ludGVkIG91dCBhIGJ1ZyBpbiBIVE1MCi0JICBwYXJzaW5nLCBhcHBsaWVkIGhpcyBwYXRjaAotCSogcmVzdWx0L0hUTUwvYXR0cmVudHMuaHRtbCByZXN1bHQvSFRNTC9hdHRyZW50cy5odG1sLmVycgotCSAgcmVzdWx0L0hUTUwvYXR0cmVudHMuaHRtbC5zYXggdGVzdC9IVE1ML2F0dHJlbnRzLmh0bWw6Ci0JICBhZGRlZCB0aGUgdGVzdCBhbmQgcmVzdWx0IGNhc2UgcHJvdmlkZWQgYnkgTWlraGFpbCBTb2dyaW5lCi0KLVR1ZSBPY3QgMjIgMTk6MzM6MjAgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdm1zL2J1aWxkX2xpYnhtbC5jb20gdm1zL2NvbmZpZy52bXMgdm1zL3JlYWRtZS52bXMKLQkgIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oCi0JICBpbmNsdWRlL2xpYnhtbC90cmVlLmggaW5jbHVkZS9saWJ4bWwveG1sSU8uaAotCSAgSFRNTHBhcnNlci5jIGNhdGFsb2cuYyBkZWJ1Z1hNTC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jCi0JICB0cmVlLmMgdHJpb2RlZi5oIHRyaW9uYW4uYyB1cmkuYyB4bWxJTy5jIHhwYXRoLmM6Ci0JICBBcHBsaWVkIHRoZSBWTVMgdXBkYXRlIHBhdGNoIGZyb20gQ3JhaWcgQS4gQmVycnkKLQkqIGRvYy8qLmh0bWw6IHVwZGF0ZQotCi1UdWUgT2N0IDIyIDE2OjI3OjMxIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL2VuY29kaW5nLmggZW5jb2RpbmcuYzogbWFkZSB4bWxHZXRVVEY4Q2hhciBwdWJsaWMKLQotVHVlIE9jdCAyMiAxNjoyNToxOCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhZGRpbmcgYSBncmVwIGNvbW1hbmQgdG8gLS1zaGVsbCBpbiB4bWxsaW50Ci0JICBmb3IgVC5WLiBSYW1hbgotCi1UdWUgT2N0IDIyIDE2OjIzOjU3IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGNhdGFsb2cuYzogdHJpZWQgdG8gZml4IHNvbWUgb2YgdGhlIHByb2JsZW0gd2l0aCAtLXNnbWwKLQotTW9uIE9jdCAyMSAwOTo1NzoxMCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogdHJpZWQgdG8gZml4IGJ1ZyAjOTE1MDAgd2hlcmUgZG9jLT5jaGlsZHJlbiBtYXkKLQkgIGJlIG92ZXJyaWRlbiBieSBhIGNhbGwgdG8geG1sUGFyc2VCYWxhbmNlZENodW5rTWVtb3J5KCkKLQotTW9uIE9jdCAyMSAwOTowNDozMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IHRyaWVkIHRvIGZpeCBidWcgIzkwOTQ1IHcuci50LiBwYXJzaW5nIG9mIHN5c3RlbQotCSAgaWRlbnRpZmllcnMgaW4gU0dNTCBjYXRhbG9ncyBjb250YWluaW5nICcmJwotCi1TdW4gT2N0IDIwIDIzOjMxOjQ3IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi90eXBlcy5jOiBmaXhlZCBidWdzIHdoZW4gcGFzc2luZyByZXN1bHQgdmFsdWUgdHJlZQotCSAgdG8gUHl0aG9uIGZ1bmN0aW9ucy4KLQotRnJpIE9jdCAxOCAxMzoxODo1MyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyB0aGUgcmVsZWFzZSBvZiAyLjQuMjYKLQkqIGRvYy8qOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2N1bWVudGF0aW9uCi0KLVdlZCBPY3QgMTYgMjA6MDE6NDYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGEgWE1MIE5hbWVzcGFjZSBjb21wbGlhbmNlIGJ1ZyByZXBvcnRlZCBieQotCSAgQWxleGFuZGVyIEdyaW1hbG92c2t5Ci0KLVdlZCBPY3QgMTYgMTc6MTg6NDIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogZml4ZWQgc2VyaWFsaXphdGlvbiBvZiBzY3JpcHQgYW5kIHN0eWxlIHdoZW4KLQkgIHRoZXkgYXJlIG5vdCBsb3dlcmNhc2UgKGkuZS4gYWRkZWQgdXNpbmcgdGhlIEFQSSB0byB0aGUgdHJlZSkuCi0KLVdlZCBPY3QgMTYgMTY6MzE6MDUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogbWFrZSB4bWxWYWxpZGF0ZURvY3VtZW50IGVtaXQgYSB3YXJuaW5nIG1zZyBpZiB0aGVyZQotCSAgaXMgbm8gRFRELCBwb2ludGVkIGJ5IENocmlzdGlhbiBHbGFobgotCi1XZWQgT2N0IDE2IDE2OjA1OjM4IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYzogZml4ZWQgdGhlIHZhbGlkYXRpb24gb2Ygc2VxdWVuY2VzCi0JICBjb250ZW50IG1vZGVsIHdoZW4gc29tZSBvZiB0aGUgYmxvY2tzIGhhdmUgbWluIG9yIG1heCwgYW5kIGEgY291cGxlCi0JICBvZiBidWdzIGZvdW5kIGluIHRoZSBwcm9jZXNzLgotCSogcmVzdWx0L3NjaGVtYXMvbGlzdDAqIHRlc3Qvc2NoZW1hcy9saXN0MCo6IGFkZGVkIHNvbWUgc3BlY2lmaWMKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotVHVlIE9jdCAxNSAxMjo0MTowMSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBSRUFETUU6IHVwZGF0ZWQgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb25zCi0KLVR1ZSBPY3QgMTUgMTA6MzU6NTcgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IHVzZSB0ZXN0IC1mIGluc3RlYWQgb2YgdGVzdCAtZSBzaW5jZSBTb2xhcmlzIC9iaW4vc2gKLQkgIG1pc3NlcyBpdCwgcmVwb3J0ZWQgYnkgUGV0ZXIgQnJheS4KLQotTW9uIE9jdCAxNCAxNzozNzozMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGludmVzdGlnYXRpbmcgeG1sTm9kZUdldENvbnRlbnQoKSBvbiBuYW1lc3BhY2Ugbm9kZXMKLQkgIGFuZCByZW1vdmVkIGEgZmV3IHdhcm5pbmdzCi0KLU1vbiBPY3QgMTQgMTM6MTI6NTUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IENocmlzdGlhbiBHbGFobiBmb3VuZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgcHVzaCBwYXJzZXIuCi0JKiB4bWxJTy5jIGluY2x1ZGUvbGlieG1sL3htbElPLmg6IGNsZWFuZWQgdXAgYW5kIG1hZGUgeG1sQ2hlY2tGaWxlbmFtZQotCSAgcHVibGljCi0KLVdlZCBPY3QgIDkgMjM6MTE6MDIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDogYWRkZWQKLQkgIHhtbFNjaGVtYU5ld01lbVBhcnNlckN0eHQgdG8gcGFyc2UgYSBzY2hlbWFzIGZyb20gYSBtZW1vcnkgYXJlYQotCSogdGVzdFNjaGVtYXMuYzogYWRkZWQgLS1tZW1vcnkgdG8gdGVzdCB0aGUgbmV3IGludGVyZmFjZQotCi1XZWQgT2N0ICA5IDE2OjIyOjU0IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9pbmRleC5weSBkb2Mvc2VhcmNoLnBocDogaW50ZWdyYXRlZCB0aGUgWFNMVCBpbmRleGluZywKLQkgIGEgZmV3IGZpeGVkIGluIHRoZSBpbmRleGVyLCBhZGRlZCBhIHNjb3BlIHNlbGVjdGlvbiBhdCB0aGUKLQkgIHNlYXJjaCBsZXZlbC4KLQotV2VkIE9jdCAgOSAxMjoxODozNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBKb2UgTWFyY3VzIENsYXJrZSByZXBvcnRlZCBhIHNlZ2ZhdWx0IG9uIEZCc2QgCi0JICB0aGlzIHdhcyBkdWUgdG8gdW5pbml0aWFsaXplZCBwYXJ0cyBvZiB0aGUgdmFsaWRhdGlvbiBjb250ZXh0Ci0KLVR1ZSBPY3QgIDggMjM6MjQ6MjAgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYzogYXBwbGllZCBwYXRjaCBmcm9tIE1hcmsgVmFrb2MgZXhjZXB0IHRoZSBBUEkKLQkgIGNoYW5nZSwgcHJlc2VydmVkIGl0LgotCSogZG9jLyo6IHVwZGF0ZWQgdGhlIGRvY3MgdG8gcG9pbnQgdG8gdGhlIHNlYXJjaCBlbmdpbmUgZm9yCi0JICBpbmZvcm1hdGlvbiBsb29rdXAgb3IgYmVmb3JlIGJ1Zy9oZWxwIHJlcG9ydHMuCi0KLVR1ZSBPY3QgIDggMTg6NTM6MzEgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2luZGV4LnB5IGRvYy9zZWFyY2gucGhwOiBhZGRlZCBtYWlsaW5nLWxpc3QgYXJjaGl2ZXMKLQkgIGluZGV4aW5nIGFuZCBsb29rdXAKLQotVHVlIE9jdCAgOCAxMDoyNTowNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHBhdGNoIGZyb20gTWFyayBWYWtvYyB0byBmaXggeG1sTm9kZUdldFBhdGgoKQotCi1Nb24gT2N0ICA3IDEzOjEyOjAzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9pbmRleC5weTogaW1wcm92ZWQgSFRNTCBpbmRleGluZwotCSogZG9jL3NlYXJjaC5waHA6IG1ha2UgdGhlIHF1ZXJpZXMgYWxzbyBsb29rdXAgdGhlIEhUTUwgYmFzZWQgaW5kZXhlcwotCi1TdW4gT2N0ICA2IDIzOjUwOjI5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9pbmRleC5weTogYWRkZWQgSFRNTCBwYWdlIGluZGV4aW5nIAotCi1GcmkgT2N0ICA0IDE1OjMzOjU1IENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogeG1sSU8uYzogZXh0ZW5kZWQgV2luZG93cyBwYXRoIG5vcm1hbGlzYXRpb24gdG8gZml4IHRoZSBiYXNlCi0JICBwcm9ibGVtIGluIGxpYnhzbHQuCi0JKiBjYXRhbG9nLmM6IGZpeGVkIGxpc3QgaGFuZGxpbmcgaW4gWE1MX0NBVEFMT0dfRklMRVMKLQotRnJpIE9jdCAgNCAxMzo0MzowMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiB0eXBvL2J1ZyBmb3VuZCBieSBDaHJpc3RpYW4gR2xhaG4KLQotU3VuIFNlcCAyOSAxOTo0NDoxMCBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHhtbElPLmM6IGFwcGxpZWQgV2luZG93cyBDRSBwYXRjaCBmcm9tIEphdmllci4KLQkqIHdpbjMyL3dpbmNlOiBuZXcgZGlyZWN0b3J5LCBjb250YWlucyBzdXBwb3J0IGZvciB0aGUgUG9ja2V0UEMKLQkgIHdpdGggV2luZG93cyBDRSBmcm9tIEphdmllci4KLQkqIGluY2x1ZGUvd2luMzJjb25maWcuaDogcmVvcmdhbmlzZWQsIHJlbW92ZWQgZHVwbGljYXRlIAotCSAgZGVmaW5pdGlvbnMgYW5kIGFwcGxpZWQgV2luQ0UgcGF0Y2ggZnJvbSBKYXZpZXIuCi0JKiBpbmNsdWRlL3dzb2NrY29tcGF0Lmg6IG5ldyBmaWxlLCBub3cgY29udGFpbnMgV2luU29jawotCSAgY29tcGF0aWJpbGl0eSBtYWNyb3MuCi0JKiB3aW4zMi9NYWtlZmlsZS5tc3ZjOiBpbnRyb2R1Y2VkIGRvdWJsZS1ydW4gY29tcGlsYXRpb24uCi0KLVRodSBTZXAgMjYgMTk6NDg6MDYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oOiBwcmVwYXJpbmcgcmVsZWFzZQotCSAgb2YgMi40LjI1Ci0JKiBkb2MvKjogdXBkYXRlZCBhbmQgcmVnZW5lcmF0ZWQgdGVoIGRvY3MgYW5kIHdlYiBwYWdlcy4KLQotVGh1IFNlcCAyNiAxNzozMzo0NiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYyB2YWxpZC5jIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmg6IGZpeGVkIGJ1ZyAjOTI1MTggdmFsaWRhdGlvbgotCSAgZXJyb3Igd2VyZSBub3QgY292ZXJpbmcgbmFtZXNwYWNlIGRlY2xhcmF0aW9ucy4KLQkqIHJlc3VsdC92YWxpZC9kaWEueG1sIHRlc3QvdmFsaWQvZGlhLnhtbDogdGhlIHRlc3Qgd2Fzbid0IHZhbGlkLAotCSAgaXQgd2FzIG1pc3NpbmcgdGhlIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbiBmb3IgdGhlIG5hbWVzcGFjZQotCSogcmVzdWx0L1ZDL05TMzogdGhlIGZpeCBub3cgcmVwb3J0IGJyZWFrYWdlcyBpbiB0aGF0IHRlc3QKLQotVGh1IFNlcCAyNiAxNDozOTowNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1MdHJlZS5jOiBmaXhpbmcgYnVnICM5NDI0MSBvbiBIVE1MIGJvb2xlYW4gYXR0cmlidXRlcwotCi1UaHUgU2VwIDI2IDE0OjI1OjMzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qOiBhZGRlZCB0aGUgMyBuZXcgbW9kdWxlcyB4bWxyZWdleHAgeG1sYXV0b21hdGEgYW5kIHhtbHVuaWNvZGUKLQkgIGFuZCByZWdlbmVyYXRlZCB0aGUgZG9jcyBhbmQgd2ViIHNpdGUKLQotVGh1IFNlcCAyNiAxMTo0NTo0MiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jIHhtbHNjaGVtYXMuYyB4bWxzY2hlbWFzdHlwZXMuYyB4cGF0aC5jOiBtYWtlIHN1cmUKLQkgIEFUVFJJQlVURV9VTlVTRUQgaXMgYWx3YXlzIHB1dCBhZnRlciB0aGUgYXR0cmlidXRlIGRlY2xhcmF0aW9uLAotCSAgbm90IGJlZm9yZQotCi1UaHUgU2VwIDI2IDExOjMzOjI4IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQ6IGZpeGVkIGEgc3R1cGlkIGVycm9yCi0JICBicmVha2luZyB0aGUgcHl0aG9uIEFQSQotCi1UaHUgU2VwIDI2IDAwOjMxOjQ2IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyaW8uYyB0cmlvLmggdHJpb2RlZi5oIHRyaW9uYW4uYyB0cmlvbmFuLmggdHJpb3AuaAotCSAgdHJpb3N0ci5jIHRyaW9zdHIuaDogYXBwbGllZCBhIHRyaW8gdXBkYXRlIHBhdGNoIGZyb20gCi0JICBCam9ybiBSZWVzZSB3aGljaCBzaG91bGQgd29yayB3aXRoIE1pbkdXCi0KLVRodSBTZXAgMjYgMDA6MjE6MTggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBpbXByb3Zpbmcgc29tZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzCi0JKiB4bWxyZWdleHAuYzogZm91bmQgYW5kIGZpeGVkIGEgbWVtIGxlYWsgd2l0aCBweXRob24gcmVncmVzc2lvbiB0ZXN0cwotCSogZG9jLyo6IHJlYnVpbHQgdGhlIGRvYyBhbmQgdGhlIEFQSSBYTUwgZmlsZSBpbmNsdWRpbmcgdGhlIAotCSAgeG1scmVnZXhwLmggeG1sYXV0b21hdGEuaCBhbmQgeG1sdW5pY29kZS5oIGhlYWRlcnMKLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgcHl0aG9uL2xpYnhtbF93cmFwLmgKLQkgIHB5dGhvbi90eXBlcy5jOiBhZGRlZCBhY2Nlc3MgdG8gdGhlIFhNTCBTY2hlbWFzIHJlZ2V4cHMgZnJvbQotCSAgcHl0aG9uCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3JlZ2V4cC5weTogYWRkZWQgYSAKLQkgIHNpbXBsZSByZWdleHAgYmluZGluZ3MgdGVzdAotCi1UdWUgU2VwIDI0IDA4OjEwOjQ4IE1EVCAyMDAyIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWwuaHRtbDoKLQkgIGZpeGluZyBmdHAgbGlua3MgLSB0aGFua3MgdG8gVml0YWx5IE9zdGFuaW4KLQotVHVlIFNlcCAyNCAxNjowODoxNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxyZWdleHAuYzogZml4ZWQgdGhlIGRhdGEgY2FsbGJhY2sgb24gdHJhbnNpdGlvbiBmdW5jdGlvbmFsaXR5Ci0JICB3aGljaCB3YXMgYnJva2VuIHdoZW4gdXNpbmcgdGhlIGNvbXBhY3QgZm9ybQotCSogcmVzdWx0L3NjaGVtYXMvKjogdXBkYXRlZCB0aGUgcmVzdWx0cywgbGVzcyB2ZXJib3NlLCBhbGwgdGVzdHMKLQkgIHBhc3MgbGlrZSBiZWZvcmUKLQkqIERPQ0JwYXJzZXIuYyB0ZXN0QXV0b21hdGEuYyB0ZXN0QzE0Ti5jIHRlc3RTY2hlbWFzLmMgdGVzdFRocmVhZHMuYwotCSAgdGVzdFhQYXRoLmMgdmFsaWQuYyB4aW5jbHVkZS5jIHhtbGxpbnQuYyB4bWxyZWdleHAuYyB4bWxzY2hlbWFzLmMKLQkgIHhtbHNjaGVtYXN0eXBlcy5jIHhwYXRoLmMgcHl0aG9uL2xpYnhtbC5jOiByZW1vdmVkIGEgYnVuY2ggb2YKLQkgIGFubm95aW5nIHdhcm5pbmdzCi0JKiB4cGF0aC5jOiB0cnkgdG8gcHJvdmlkZSBiZXR0ZXIgZXJyb3IgcmVwb3J0IHdoZW4gcG9zc2libGUKLQotU2F0IFNlcCAyMSAxNDo1NjozNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogZml4ZWQgYSBicmVha2FnZSByYWlzZWQgYnkgSmFjb2IKLQotRnJpIFNlcCAyMCAyMDowODoxOCBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIGluY2x1ZGUvd2luMzJjb25maWcuaDogYWRkZWQgSEFWRV9FUlJOT19IIGRlZmluaXRpb24gZm9yIHBhcnRzCi0JICB3aGljaCBkb24ndCB1c2Ugc29ja2V0cwotCi1GcmkgU2VwIDIwIDE4OjQwOjUwIENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogd2luMzIvTWFrZWZpbGUubXN2YzogYXBwbGllZCB6bGliIHBhdGNoIGZyb20gRGFuaWVsIEdlaHJpZ2VyCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGFwcGxpZWQgemxpYiBwYXRjaCBmcm9tIERhbmllbCBHZWhyaWdlcgotCi1GcmkgU2VwIDIwIDE1OjQwOjE0IENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogd2luMzIvY29uZmlndXJlLmpzOiBhcHBsaWVkIHRoZSBwYXRjaCBmcm9tIE1hcmsgVmFrb2MgZm9yIAotCSAgcmVnZXhwIHN1cHBvcnQKLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogYXBwbGllZCB0aGUgcGF0Y2ggZnJvbSBNYXJrIFZha29jCi0JICBmb3IgcmVnZXhwIHN1cHBvcnQKLQotRnJpIFNlcCAyMCAxNTozNTozMyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogYXMgcG9pbnRlZCBieSBJZ29yIEZsb2F0IGFuZCBEb3VibGUKLQkgIHBhcnNpbmcgYWluJ3QgZmluaXNoZWQgeWV0Ci0KLUZyaSBTZXAgMjAgMTQ6MDA6MTYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluOiB0cnlpbmcgdG8gZml4ICM4ODQxMiBieSBieXBhc3NpbmcKLQkgIGFsbCB0aGUgcHl0aG9uIHN1YmRpciBpZiBweXRob24gYWluJ3QgZGV0ZWN0ZWQKLQotVGh1IFNlcCAxOSAyMTo0Njo1MyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluOgotCSAgbWFkZSBjb25maWd1cmluZyB3aXRoIHJlZ2V4cHMvYXV0b21hdGEvdW5pY29kZSB0aGUgZGVmYXVsdAotCSAgYnV0IHdpdGhvdXQgc2NoZW1hcyBBVE0KLQkqIHRlc3RSZWdleHAuYyB2YWxpZC5jIHhtbHJlZ2V4cC5jIGluY2x1ZGUvbGlieG1sL3htbHJlZ2V4cC5oOgotCSAgZml4ZWQgdGhlIHJlZ2V4cCBiYXNlZCBEVEQgdmFsaWRhdGlvbiBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5Ci0JICBwcm9ibGVtIGJ5IHN3aXRjaGluZyB0byBhIGNvbXBhY3QgZm9ybSBmb3IgZGV0ZXJtaW5pc3QgcmVnZXhwcwotCSAgYW5kIGRldGVjdGluZyB0aGUgZGV0ZXJtaW5pc20gcHJvcGVydHkgaW4gdGhlIHByb2Nlc3MuIFNlZW1zCi0JICBhcyBmYXN0IGFzIHRoZSBvbGQgRFREIHZhbGlkYXRpb24gc3BlY2lmaWMgZW5naW5lIDotKSBkZXNwaXRlCi0JICB0aGUgcmVnZXhwIGJ1aWx0IGFuZCBjb21wYWN0aW9uIHByb2Nlc3MuCi0KLVdlZCBTZXAgMTggMTg6Mjc6MjYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZGV0ZXJtaW5pc20gaXMgZGVidWdnZWQsIG5ldyBEVEQgY2hlY2tpbmcgY29kZSBub3cgd29ya3MKLQkgIGJ1dCB4bWxGQUNvbXB1dGVzRGV0ZXJtaW5pc20gdGFrZXMgZmFyIHRvbyBtdWNoIENQVSBhbmQgdGhlIHdob2xlCi0JICBzZXQgdXN1ZXMgdG9vIG11Y2ggbWVtb3J5IHRvIGJlIHJlYWxseSB1c2FibGUgYXMtaXMKLQotV2VkIFNlcCAxOCAwMDo1NDozMCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGVkIGFub3RoZXIgc3R1cGlkIGJ1ZyBpbiB4bWxHZXROb2RlUGF0aCgpCi0JKiB4bWxsaW50LmM6IC0tdmVyc2lvbiBub3cgcmVwb3J0IHRoZSBvcHRpb25zIGNvbXBpbGVkIGluCi0KLVR1ZSBTZXAgMTcgMjM6NDg6MDcgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiBzbWFsbCBjbGVhbnVwCi0JKiB2YWxpZC5jIHhtbHJlZ2V4cC5jOiBzd2l0Y2hlZCBEVEQgdmFsaWRhdGlvbiB0byB1c2Ugb25seSByZWdleHAKLQkgIHdoZW4gY29uZmlndXJlZCB3aXRoIHRoZW0uIEEgYml0IG9mIGRlYnVnZ2luZyBhcm91bmQgdGhlIGRldGVybWluaXNtCi0JICBjaGVja3MgaXMgc3RpbGwgbmVlZGVkCi0KLVR1ZSBTZXAgMTcgMjE6MjI6MjUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbF93cmFwLmg6IHN0dXBpZCBidWcgZm91bmQgYnkgbWF0dGFtQG5ldGNvdXJyaWVyLmNvbQotCi1UdWUgU2VwIDE3IDE5OjU4OjI2IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmM6IHNtYWxsIHBvcnRhYmlsaXR5IGdsaXRjaCBmaXhlZC4KLQotTW9uIFNlcCAxNyAxMjozODowOCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogaW5jb21wbGV0ZSBzdGVwcyBmb3IgcmVhbC9kb3VibGUgc3VwcG9ydAotCSogdGVzdEF1dG9tYXRhLmMgaW5jbHVkZS9saWJ4bWwveG1sYXV0b21hdGEuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1scmVnZXhwLmg6IGF2b2lkaW5nIGEgY29tcGlsYXRpb24gcHJvYmxlbQotCSogdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC92YWxpZC5oOiBzdGFydGluZyB0aGUgd29yayB0b3dhcmQgdXNpbmcKLQkgIHRoZSByZWdleHBzIGZvciBhY3R1YWwgRFREIHZhbGlkYXRpb24KLQotRnJpIFNlcCAxMyAxNjo0NjoxNCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBoYXNoLmM6IGNvc21ldGljIGNsZWFudXAKLQkqIHZhbGlkLmMgaW5jbHVkZS9saWJ4bWwvdHJlZS5oIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmg6IHN0YXJ0ZWQgCi0JICBpbnRlZ3JhdGluZyBhIERURCB2YWxpZGF0aW9uIGxheWVyIGJhc2VkIG9uIHRoZSByZWdleHBzCi0KLVRodSBTZXAgMTIgMTg6MDE6MjkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmMgeG1sc2NoZW1hcy5jOiBmaXhlZCBhIGJ1ZyByZXBvcnRlZCBieSBKZWZmIEdvZmYsCi0JICB0aGUgZGV0ZXJtaW5pc20gd2FzIHRlc3RlZCBiZWZvcmUgZWxpbWluYXRpbmcgdGhlIGVwc2lsb24KLQkgIHRyYW5zaXRpb25zIDotKAotCi1UaHUgU2VwIDEyIDE2OjU3OjQ1IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwucHkKLQkgIHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0Ci0JICBweXRob24vbGlieG1sX3dyYXAuaCBweXRob24vdHlwZXMuYzogdXBkYXRlZCB0aGUgcHl0aG9uCi0JICBiaW5kaW5ncywgYWRkZWQgY29kZSBmb3IgZWFzaWVyIEZpbGUgSS9PLCBhbmQgdGhlIGFiaWxpdHkgdG8KLQkgIGRlZmluZSBhIHJlc29sdmVyIGZyb20gUHl0aG9uIGZpeGluZyBidWcgIzkxNjM1Ci0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL2luYnVmLnB5Ci0JICBweXRob24vdGVzdHMvb3V0YnVmLnB5IHB5dGhvbi90ZXN0cy9wdXNoU0FYaHRtbC5weQotCSAgcHl0aG9uL3Rlc3RzL3Jlc29sdmVyLnB5IHB5dGhvbi90ZXN0cy9zZXJpYWxpemUucHk6IHVwZGF0ZWQKLQkgIGFuZCBhdWdtZW50ZWQgdGhlIHNldCBvZiBQeXRob24gdGVzdHMuCi0KLVR1ZSBTZXAgMTAgMjE6MDU6MjggQ0VTVCAyMDAyIElnb3IgWmxhdGtvdmljIDxpZ29yQHN0dWQuZmgtZnJhbmtmdXJ0LmRlPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IGFkZGVkIG1vcmUgcmVhZG1lIGluZm8gZm9yIHRoZSBiaW5hcnkKLQkgIHBhY2thZ2UuCi0KLVR1ZSBTZXAgMTAgMTQ6MTU6MTggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogZml4ZWQgYSBzdHVwaWQgb3V0IG9mIGJvdW5kIGFycmF5IGVycm9yCi0KLVR1ZSBTZXAgMTAgMTM6MDk6MTQgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sSU8uaCB4bWxJTy5jIHBhcnNlci5jIEhUTUxwYXJzZXIuYyBET0NCcGFyc2VyLmM6Ci0JICBtZXNzaW5nIGFyb3VuZCB3aXRoIHN1cHBvcnQgZm9yIFdpbmRvd3MgcGF0aCwgY2xlYW51cHMsCi0JICB0cnlpbmcgdG8gaWRlbnRpZnkgYW5kIGZpeCB0aGUgdmFyaW91cyBjb2RlIHBhdGggdG8gdGhlCi0JICBmaWxlbmFtZSBhY2Nlc3MuIEFkZGVkIHhtbE5vcm1hbGl6ZVdpbmRvd3NQYXRoKCkKLQotVGh1IFNlcCAgNSAxNjoxOToxOCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlcnJvci5jIHZhbGlkLmM6IHdvcmtpbmcgb24gYmV0dGVyIGVycm9yIHJlcG9ydGluZyBvZiB2YWxpZGl0eQotCSAgZXJyb3JzLCBlc3BlY2lhbGx5IHByb3ZpZGluZyBhbiBhY2N1cmF0ZSBjb250ZXh0LgotCSogcmVzdWx0L3ZhbGlkL3hsaW5rLnhtbC5lcnIgcmVzdWx0L3ZhbGlkL3Jzcy54bWwuZXJyOiBiZXR0ZXIKLQkgIGVycm9yIHJlcG9ydHMgaW4gdGhvc2UgY2FzZXMuCi0KLVRodSBTZXAgIDUgMTM6Mjk6NDcgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogRE9DQnBhcnNlci5jIEhUTUxwYXJzZXIuYyBjMTRuLmMgZW50aXRpZXMuYyBsaXN0LmMKLQkgIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHhtbElPLmM6IGdldCByaWQgb2YgYWxsIHRoZSAKLQkgIHBlcnJvcigpIGNhbGxzIG1hZGUgaW4gdGhlIGxpYnJhcnkgZXhlY3V0aW9uIHBhdGhzLiBUaGlzCi0JICBzaG91bGQgZml4IGJvdGggIzkyMDU5IGFuZCAjOTIzODUKLQotVGh1IFNlcCAgNSAxMzoxMzoxNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IG1lbW9yeSBsZWFrIHJlcG9ydGluZyB3YXMgYnJva2VuIGFmdGVyIGEgY2hhbmdlCi0JICBvZiB0aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCB1c2VkIHRvIGFjdGl2YXRlIGl0LgotCi1UaHUgU2VwICA1IDEzOjEwOjU3IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogdHJ5IHRvIG1ha2UgdGhlIGNvcHkgZnVuY3Rpb24gd29yayBmb3Igbm9kZSBvZgotCSAgdHlwZSBYTUxfRE9DVU1FTlRfRlJBR19OT0RFLCB0aGV5IGFyZSBvbmx5IGNyZWF0ZWQgYnkgdGhlCi0JICBET00gbGF5ZXJzIHRob3VnaCwgbm90IGxpYnhtbDIgaXRzZWxmLgotCi1UaHUgU2VwICA1IDEyOjU3OjM4IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IHRyeSB0byBwcm92aWRlIGZpbGUgYW5kIGxpbmUgaW5mb3JtYXRpb25zLCBub3QgYWxsCi0JICBtZXNzYWdlcyBhcmUgY292ZXJlZCwgYnV0IGl0J3MgYSAoZ29vZCkgc3RhcnQKLQotVGh1IFNlcCAgNSAxMjo0OTozNSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiByZWltcGxlbWVudGVkIGEgbGFyZ2UgcGFydCBvZiB0aGUgWEluY2x1ZGUKLQkgIHByb2Nlc3NvciwgdHJ5aW5nIHRvIG1pbmltaXplIHJlc291cmNlcyB1c2VkLCBKYW1lcyBIZW5zdHJpZGdlCi0JICBwcm92aWRlZCBhIGh1Z2UgdGVzdCBjYXNlIHdoaWNoIHdhcyBleGhpYml0aW5nIHNldmVyZSBtZW1vcnkKLQkgIGNvbnN1bXB0aW9uIHByb2JsZW1zLgotCi1UaHUgU2VwICA1IDEwOjA3OjEzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbTogYXBwbGllZCBwYXRjaCBmcm9tIENocmlzdG9waGUgTWVybGV0IHRvCi0JICByZWVzdGFibGlzaCBERVNURElSCi0KLVdlZCBTZXAgIDQgMTQ6MTM6MzQgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW46IGZpeGVzIGxpYmFyeSBwYXRoIGZvciB4ODZfNjQgQU1ECi0KLVR1ZSBTZXAgIDMgMjE6MTQ6MTkgTURUIDIwMDIgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3R1dG9yaWFsL2luY2x1ZGVrZXl3b3JkLmMKLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWw6Ci0JKHBsdXMgcmVzdWx0aW5nIGdlbmVyYXRlZCBodG1sIGZpbGVzKQotCWZpeGluZyBvbmUgc3BvdCBJIG1pc3NlZCBpbiB0aGUgdHV0b3JpYWwgd2hlcmUgSSBoYWRuJ3QgZnJlZWQKLQltZW1vcnkgcHJvcGVybHkKLQotU2F0IEF1ZyAzMSAxOTozMToxNyBNRFQgMjAwMiBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MvdHV0b3JpYWwvaW5jbHVkZWFkZGF0dHJpYnV0ZS5jCi0JKiBkb2MvdHV0b3JpYWwvaW5jbHVkZWFkZGtleXdvcmQuYwotCSogZG9jL3R1dG9yaWFsL2luY2x1ZGVnZXRhdHRyaWJ1dGUuYwotCSogZG9jL3R1dG9yaWFsL2luY2x1ZGVrZXl3b3JkLmMKLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWwKLQkqIGRvYy90dXRvcmlhbC8qLmh0bWw6Ci0JdXBkYXRlIHR1dG9yaWFsIHRvIHByb3Blcmx5IGZyZWUgbWVtb3J5ICh0aGFua3MgdG8gQ2hyaXN0b3BoZXIKLQlSLiBIYXJyaXMgZm9yIHBvaW50aW5nIG91dCB0aGF0IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSkKLQkqIGRvYy90dXRvcmlhbC9pbWFnZXMvY2FsbG91dHMvKi5wbmc6Ci0JYWRkZWQgaW1hZ2UgZmlsZXMgc28gdGhlIGNhbGxvdXRzIGFyZSBncmFwaGljYWwsIG1ha2luZyBpdAotCWVhc2llciB0byByZWFkICggdXNlICItLXBhcmFtIGNhbGxvdXQuZ3JhcGhpY3MgMSIgdG8gZ2VuZXJhdGUKLQlodG1sIHdpdGggZ3JhcGhpY2FsIGNhbGxvdXRzKQotCi1XZWQgQXVnIDI4IDEzOjQ0OjU0IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9MaWJ4bWwyLUxvZ28tMTgweDE2OC5naWYgZG9jL0xpYnhtbDItTG9nby05MHgzNC5naWY6Ci0JICBuaWNlIGxvZ29zIGdlbmVyYXRlZCBieSBNYXJjIExpeWFuYWdlCi0JKiBkb2Mvc2l0ZS54c2wgKi5odG1sOiBjaGFuZ2VkIHRoZSBzdHlsZXNoZWV0IHRvIHNob3cgdGhlIG5ldwotCSAgbG9nbyBhbmQgcmVnZW5lcmF0ZWQgdGhlIHBhZ2VzCi0KLVN1biBBdWcgMjUgMTY6Mzg6MDUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogaGFuZGxlIFdpbmRvd3Mgc2VwZWNpZmljIGZpbGU6Ly9sb2NhbGhvc3QvIHNlbWFudGljIC4uLgotCi1UaHUgQXVnIDIyIDIyOjAzOjE5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHBvc3NpYmxlIG1lbSBsZWFrIHBhdGNoIGZyb20gSmFzb24gQWRhbXMKLQotVGh1IEF1ZyAyMiAxNzoyNzozMCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBpbnRlZ3JhdGVkIHhmOmVzY2FwZS11cmkoKSBmcm9tIFdlc2xleSBUZXJwc3RyYQotCSAgaW4gdGhlIFhRdWVyeSBuYW1lc3BhY2UKLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNC4yNAotCSogZG9jLyouaHRtbDogdXBkYXRlZCB0aGUgd2ViIHBhZ2VzCi0KLVRodSBBdWcgMjIgMTY6MTk6NDIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weTogY2xvc2luZyBidWcgIzg1MjU4IGJ5IGdlbmVyYXRpbmcgY29uZGl0aW9uYWwKLQkgIGNvbXBpbGUgY2hlY2sgdG8gYXZvaWQgbGlua2luZyB0byByb3V0aW5lcyBub3QgY29uZmlndXJlZCBpbi4KLQotMjAwMi0wOC0yMiAgSGF2b2MgUGVubmluZ3RvbiAgPGhwQHBvYm94LmNvbT4KLQotCSogYXV0b2dlbi5zaDogdXBkYXRlIGVycm9yIG1lc3NhZ2UgZm9yIG1pc3NpbmcgYXV0b21ha2UKLQotVGh1IEF1ZyAyMiAxMTo0NTo1MCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW06IHR5cG8gaW4gdGFyZ2V0IG5hbWUgcmVzdWx0ZWQgaW4gbGlieG1sMi5weQotCSAgdG8gbm90IGJlIHJlYnVpbHQuIGZpeGVkIERFU1RESVIgc2ltaWxhcnkgdG8gdGhlIGxpYnhzbHQgb25lLgotCi1UaHUgQXVnIDIyIDA5OjE1OjAwIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL3dpbjMyL01ha2VmaWxlLm1pbmd3OiB1cGRhdGVkIHdpdGggdmVyc2lvbiBmcm9tIAotCSAgRWxpemFiZXRoIEJhcmhhbSBhdCBodHRwOi8vc29nZ3l0cm91c2Vycy5uZXQvcmVwb3NpdG9yeS8KLQotVHVlIEF1ZyAyMCAxNjo0MDo0OCBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1zdmM6IGFkZGVkIHRoZSBwcmVmaXggbG9jYXRpb24gdG8gdGhlIGluY2x1ZGUKLQlhbmQgbGliIHNlYXJjaCBwYXRoLgotCi0yMDAyLTA4LTE4ICBIYXZvYyBQZW5uaW5ndG9uICA8aHBAcG9ib3guY29tPgotCi0JKiBhdXRvZ2VuLnNoOiBoYXJkY29kZSBhY2xvY2FsLTEuNC9hdXRvbWFrZS0xLjQgc28gdGhhdCB1c2VycyB3aXRoCi0JYm90aCBhdXRvbWFrZSAxLjYgYW5kIDEuNCBpbnN0YWxsZWQgZ2V0IHRoZSByaWdodCBhdXRvbWFrZS4gTWVhbnMKLQljb21waWxhdGlvbiBmcm9tIENWUyB3aWxsIG5vdyByZXF1aXJlIHRoZSBsYXRlc3QgYXV0b21ha2UgMS40Ci0JcmVsZWFzZSwgb3IgbWFudWFsbHkgY3JlYXRpbmcgc3ltbGlua3MgY2FsbGVkICJhdXRvbWFrZS0xLjQiIGFuZAotCSJhY2xvY2FsLTEuNCIKLQotV2VkIEF1ZyAxNCAxODo1NDoxOSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gcHl0aG9uL01ha2VmaWxlLmFtOiBtb3JlIEFNRCA2NCBpbmR1Y2VkIGNoYW5nZXMgZnJvbQotCSAgRnJlZGVyaWMgQ3JvemF0Ci0KLVdlZCBBdWcgMTQgMTY6NDM6NTMgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeGluY2x1ZGUuYzogb29wcyBJIHdhcyBtaXNzaW5nIHRoZSB4bWw6YmFzZSBmaXh1cCB0b28KLQkqIHJlc3VsdC9YSW5jbHVkZS8qLnhtbDogdGhpcyBhZGRzIHhtbDpiYXNlIGF0dHJpYnV0ZXMgdG8gbW9zdAotCSAgcmVzdWx0cyBvZiB0aGUgdGVzdHMKLQotV2VkIEF1ZyAxNCAxNjowNTozNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4aW5jbHVkZS5jOiBxdWljayBidXQgYXBwYXJlbnRseSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mCi0JICB4aTpmYWxsYmFjaywgc2hvdWxkIGNsb3NlIGJ1ZyAjODk2ODQKLQkqIE1ha2VmaWxlLmFtIHRlc3QvWEluY2x1ZGUvZG9jcy9mYWxsYmFjay54bWwgCi0JICByZXN1bHQvWEluY2x1ZGUvZmFsbGJhY2sueG1sOiBhZGRlZCBhIGJhc2ljIHRlc3QgZm9yIGZhbGxiYWNrLAotCSAgYW5kIHJ1biB3aXRoIC0tbm93YXJuaW5nIHRvIGF2b2lkIGEgc3B1cmlvdXMgd2FybmluZwotCSogY29uZmlndXJlLmluOiBhcHBsaWVkIHBhdGNoIGZyb20gRnJlZGVyaWMgQ3JvemF0IGZvciBweXRob24KLQkgIGJpbmRpbmdzIG9uIEFNRCA2NGJpdHMgbWFjaGluZXMuCi0KLVdlZCBBdWcgMTQgMTA6NDc6NDYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHhtbFNBWFVzZXJQYXJzZU1lbW9yeSgpIHJlYWxseSBvdWdodCB0byBmYWlsIGlmCi0JICB0aGUgY2FsbGVyIGRvbid0IHBhc3MgYSBTQVggY2FsbGJhY2sgYmxvY2suCi0KLVdlZCBBdWcgMTQgMTA6Mjk6MDIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBhcHBsaWVkIHRoZSBzYW1lIGZpeCBmb3IgdGhlIFhNTC0xLjAgbmFtZXNwYWNlIHRvCi0JICB4bWxTZWFyY2hOc0J5SHJlZigpIGFzIHdhcyBkb25lIGZvciB4bWxTZWFyY2hOcygpCi0KLU1vbiBBdWcgMTIgMTY6NTI6MDggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLjM6IHNtYWxsIGNsZWFudXAgb2YgdGhlIG1hbiBwYWdlCi0JKiBIVE1MdHJlZS5jOiBmaXhlZCBhIHBvdGVudGlhbCBwcm9ibGVtIHJhaXNlZCBieSBQZXRyIFZhbmRyb3ZlYwotCSAgd2hlbiBzZXJpYWxpemluZyBIUkVGIGF0dHJpYnV0ZXMgZ2VuZXJhdGVkIGJ5IFhTTFQuCi0KLU1vbiBBdWcgMTIgMTU6MjQ6MDUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYyBpbmNsdWRlL2xpYnhtbC9IVE1MdHJlZS5oOiBpbnRlZ3JhdGVkIGEgY2xlYW5lZCB1cAotCSAgdmVyc2lvbiBvZiBNYXJjIExpeWFuYWdlJyBwYXRjaCBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzIGluIEhUTUwKLQkgIG91dHB1dAotCi1Nb24gQXVnIDEyIDE0OjExOjU5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi90ZXN0cy9zZXJpYWxpemUucHk6IGZpeGVkIHRoZSB0ZXN0IHJlc3VsdHMsIGluZGVudGluZwotCSAgYmVoYXZpb3VyIGNoYW5nZWQgc2xpZ2h0bHkKLQotVGh1IEF1ZyAgOCAxMTowMDoyNiAyMDAyICBBbGVrc2V5IFNhbmluICA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogd2luMzIvZHNwL2xpYnhtbDIuZGVmLnNyYyB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IGFkZGVkCi0JbmV3IGMxNG4gZnVuY3Rpb24gdG8gV2luZG93cyBkZWYgZmlsZXMKLQotRnJpIEF1ZyAgMiAxNjo0Njo0NiAyMDAyICBBbGVrc2V5IFNhbmluICA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogYzE0bi5jOiBmaXhlZCBhIG1lbW9yeSBsZWFrIGluIGMxNG4gY29kZQotCi1TYXQgQXVnICAzIDAwOjE1OjA2IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBhZGRpbmcgYSBuZXcgQVBJIGZvciBDaHJpc3RpYW4KLQkgIEdsYWhuOiB4bWxQYXJzZUJhbGFuY2VkQ2h1bmtNZW1vcnlSZWNvdmVyCi0JKiB2YWxpZC5jOiBwYXRjaCBmcm9tIFJpY2sgSm9uZXMgZm9yIHNvbWUgZ3JhbW1hciBjbGVhbnVwIGluCi0JICB2YWxpZGF0aW9uIG1lc3NhZ2VzCi0JKiByZXN1bHQvVkMvKiByZXN1bHQvdmFsaWQvKjogdGhpcyBzbGlnaHRseSBjaGFuZ2Ugc29tZSBvZiB0aGUKLQkgIHJlZ3Jlc3Npb24gdGVzdHMgb3V0cHV0cwotCi1UaHUgQXVnICAxIDE0OjUwOjI4IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogdHJ5aW5nIHRvIGZpeCBhIHByb2JsZW0gaW4gbmFtZXNwYWNlZCBhdHRyaWJ1dGUgaGFuZGxpbmcKLQkgIHJhaXNlZCBieSBDaHJpc3RpYW4gR2xhaG4KLQotVGh1IEF1ZyAgMSAxMjoxNzozMCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jIGluY2x1ZGUvbGlieG1sL2VuY29kaW5nLmg6IE9wZW5pbmcgdGhlIGludGVyZmFjZQotCSAgeG1sTmV3Q2hhckVuY29kaW5nSGFuZGxlciBhcyByZXF1ZXN0ZWQgaW4gIzg5NDE1Ci0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9zZXR1cC5weS5pbjogYXBwbGllZCBjbGVhbnVwCi0JICBwYXRjaGVzIGZyb20gTWFyYy1BbmRyZSBMZW1idXJnCi0JKiB0cmVlLmM6IGZpeGluZyBidWcgIzg5MzMyIG9uIGEgc3BlY2lmaWMgY2FzZSBvZiBsb29zaW5nIAotCSAgdGhlIFhNTC0xLjAgbmFtZXNwYWNlIG9uIHhtbDp4eHggYXR0cmlidXRlcwotCi1XZWQgSnVsIDMxIDIzOjI3OjQyIDIwMDIgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBjMTRuLmMgaW5jbHVkZS9saWJ4bWwvYzE0bi5oOiBmaXhlZCBvbmUgbW9yZSBjMTRuICsgbmFtZXNwYWNlcwotCWNvcm5lciBjYXNlIGZyb20gbmV3IE1lcmxpbidzIHRlc3Qgc3VpdGUgYW5kIGFkZGVkIGEgY2FsbGJhY2sKLQl0aGF0IHdpbGwgYmUgdXNlZCB0byBpbXByb3ZlIHhtbHNlYyBwZXJmb3JtYW5jZQotCi1Nb24gSnVsIDI5IDE4OjIyOjAwIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmM6IHRyeWluZyB0byBmaXggdGhlIDxzdHlsZT4gZXNjYXBpbmcgcHJvYmxlbSBpbgotCSAgSFRNTCBzZXJpYWxpemF0aW9uIGJ1ZyAjODkzNDIKLQotVGh1IEp1bCAyNSAwMTozMzo0NyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sLmh0bWwgZG9jLyouaHRtbDogYXBwbGllZCBzeW50YXggcGF0Y2ggZnJvbSBSaWNrIEpvbmVzCi0JICBhbmQgcmVidWlsdCB0aGUgd2ViIHNpdGUuCi0KLU1vbiBKdWwgMjIgMTE6MDQ6NDggUERUIDIwMDIgIEFsZWtzZXkgU2FuaW4gPGFsZWtzZXlAYWxla3NleS5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogYWRkZWQgX3ByaXZhdGUgbWVtYmVyIHRvIHhtbE5zIHN0cnVjdAotCi1TdW4gSnVsIDIxIDE3OjQ4OjQ3IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4aW5nIGJ1ZyAjODQ4NzYgYmFzZWQgb24gdGhlIHhtbCB3b3JraW5nCi0JICBjb2RlLgotCi1TdW4gSnVsIDIxIDE5OjE1OjAwIEhLVCAyMDAyIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW06IGVuaGFuY2VkIHRvIGZpeCBidWcgNzIwMTIgKGVycm9ycwotCSAgd2hlbiB1c2luZyAnLWpYJyBtYWtlIHBhcmFtZXRlcikKLQotRnJpIEp1bCAxOSAxNjozNTowMCBIS1QgMjAwMiBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogeHBhdGguYzogc21hbGwgYWRkaXRpb25hbCBlbmhhbmNlbWVudCBmb3IgYm9vbGVhbnMKLQkgIGNvbXBhcmVkIHRvIG5vZGVzZXRzCi0KLVdlZCBKdWwgMTcgMTk6NDg6MTQgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogY2hhbmdlZCB0aGUgb3JkZXIgb2YgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uCi0JICBhdHRyaWJ1dGVzIGluIHRoZSBtZXRhIHRhZ3MgZHVlIHRvIGEgYnVnIGluIElFL01hYwotCi1GcmkgSnVsIDEyIDA4OjQ1OjAwIEhLVCAyMDAyIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBlbmhhbmNlZCBoYW5kbGluZyBvZiBib29sZWFucyAoZXNwZWNpYWxseSAnPScKLQkgIGFuZCAnIT0nIGZvciBub2Rlc2V0cykgLSBmaXhlcyBidWcgODUyNTYuICBBZGRlZCBuZXcKLQkgIHJvdXRpbmUgeG1sWFBhdGhOb3RFcXVhbFZhbHVlcyBmb3IgbW9yZSBwcm9wZXIgaGFuZGxpbmcKLQkgIG9mICchPScgd2hlbiBub2Rlc2V0cyBhcmUgaW52b2x2ZWQuCi0KLVRodSBKdWwgMTEgMjE6NDU6NTIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL01ha2VmaWxlLmFtOiBmaXhpbmcgUmVkIEhhdCBidWcgIzY4NjE0IGJ5IGFkZGluZyB0aGUKLQkgIGRvYy94bWxjYXRhbG9nX21hbi54bWwgdG8gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24KLQotV2VkIEp1bCAxMCAyMToyNjoxMyBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1zdmM6IEFkZGVkIGEgY29weSAqLnBkYiB0byBpbnN0YWxsLCBmZXcgaGF2ZQotCSAgYXNrZWQgZm9yIHRoaXMuCi0KLVNhdCBKdWwgIDYgMjE6NTU6NTkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgMi40LjIzCi0JKiBkb2MvKjogcmVidWlsdCB0aGUgZG9jcwotCi1TYXQgSnVsICA2IDIxOjExOjIwIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhpbmcgYnVnICM4NDE2OSBieSBmaXhpbmcgdGhlCi0JICBjb21tZW50IG9mIHhtbENyZWF0ZVB1c2hQYXJzZXJDdHh0IHRvIGRlc2NyaWJlIHRoZSAKLQkgIGVuY29kaW5nIGRldGVjdGlvbiBwYXJhbWV0ZXJzIGJldHRlci4KLQotU2F0IEp1bCAgNiAxOTo0NDo1NiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jOiBmaXhpbmcgYnVnICM3OTMzMSBpbiBvbmUgcGF0aCB0aGUgbG9va3VwIGZvcgotCSAgSUQgYXR0cmlidXRlcyBvbiBhIG5hbWVzcGFjZWQgbm9kZSB3YXNuJ3QgaGFuZGxlZCBjb3JyZWN0bHkgOi1cCi0KLUZyaSBKdWwgIDUgMjA6MDc6NDMgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jOiB0cnlpbmcgdG8gZml4IDg3MjM1IGFib3V0IGRpc2NhcmRlZCB3aGl0ZQotCSAgc3BhY2VzIGluIHRoZSBIVE1MIHBhcnNlci4KLQkqIHJlc3VsdC9IVE1MLyo6IHRoaXMgY2hhbmdlcyB0aGUgb3V0cHV0IG9mIGEgbnVtYmVyIG9mIEhUTUwKLQkgIHJlZ3Jlc3Npb24gdGVzdHMKLQotTW9uIEp1bCAgMSAyMzoyMzo0MSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gUmljaGFyZCBKaW5rcyBmb3IgdGhlIG5hbWVzcGFjZQotCSAgYXhpcyArIGZpeGVkIGEgbWVtb3J5IGVycm9yLgotCSogcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmM6IGFwcGxpZWQgcGF0Y2hlcyBmcm9tIFBldGVyIEphY29iaQotCSAgcmVtb3ZpbmcgY3R4dC0+dG9rZW4gZm9yIGdvb2QuCi0JKiB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmM6IGZpeGVkIGEgZmV3IG1lbW9yeSBsZWFrcwotCSAgcG9wcGVkIG91dCBieSB0aGUgcmVncmVzc2lvbiB0ZXN0cy4KLQkqIE1ha2VmaWxlLmFtOiBwYXRjaCBmb3IgdGhyZWFkcyBtYWtlZmlsZSBmcm9tIEdhcnkgUGVubmluZ3RvbgotCi1GcmkgSnVuIDI4IDE5OjM4OjAwIEhLVCAyMDAyIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiB4cGF0aC5jOiBlbmhhbmNlZCBiZWhhdmlvdXIgb2YgcG9zaXRpb24oKSBhZnRlciB1c2FnZSBvZgotCSAgZXhwcmVzc2lvbnMgaW52b2x2aW5nIHByZWNlZGluZy1zaWJsaW5nIChldCBhbCkuCi0KLVR1ZSBKdW4gMTggMDk6NTg6NDggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaGFzaC5jOiBhcHBsaWVkIGEgcGF0Y2ggZnJvbSBQZXRlciBKYWNvYmkgdG8gc29sdmUgYSBwcm9ibGVtCi0JICB3aGVuIGNvbXBpbGluZyB3aXRoIHRoZSBXYXRjb20gQyBvbiBXaW4zMiAKLQkqIHJlc3VsdC9zY2hlbWFzLyouZXJyOiB0aGUgY2hhbmdlIG9mIGhhc2hpbmcgYWxnbyBnZW5lcmF0ZWQKLQkgIHBlcm11dGF0aW9ucyBpbiB0aGUgb3V0cHV0Ci0KLU1vbiBKdW4gMTcgMTk6MDI6NDkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaGFzaC5jOiBhcHBsaWVkIHBhdGNoIGZyb20gU2FuZGVyIFZlc2lrIGltcHJvdmluZyB0aGUgcXVhbGl0eSBvZgotCSAgdGhlIGhhc2ggZnVuY3Rpb24uCi0KLTIwMDItMDYtMTQgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBET0NCcGFyc2VyLmMgSFRNTHBhcnNlci5jIGRlYnVnWE1MLmMgZW5jb2RpbmcuYwotCW5hbm9mdHAuYyBuYW5vaHR0cC5jIHBhcnNlci5jIHRyZWUuYyB1cmkuYyB4bWxJTy5jCi0JeG1sbGludC5jIHhwYXRoLmM6IHJlcGxhY2VkIHNwcmludGYoKSB3aXRoIHNucHJpbnRmKCkKLQl0byBwcmV2ZW50IHBvc3NpYmxlIGJ1ZmZlciBvdmVyZmxvdyAodGhlIGJ1ZyB3YXMgcG9pbnRlZAotCW91dCBieSBBbmp1IFByZW1hY2hhbmRyYW4pIAotCi1UaHUgSnVuIDEzIDE3OjMwOjI1IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiByZW1vdmVkIGFuIHVuaW5pdGlhbGl6ZWQgZGF0YSBlcnJvciBwb3BwZWQgYnkgdmFsZ3JpbmQKLQkgIG9uIFBFIHJlZmVyZW5jZXMKLQotV2VkIEp1biAxMiAyMTozODo0NiBNRFQgMjAwMiBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MveG1sLmh0bWwKLQlhZGRpbmcgdHV0b3JpYWwgcmVmZXJlbmNlIHRvIHRoZSB3ZWIgcGFnZQotCi1XZWQgSnVuIDEyIDIxOjI2OjA4IE1EVCAyMDAyIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy90dXRvcmlhbC94bWx0dXRvcmlhbC54bWwKLQkqIGRvYy90dXRvcmlhbC9hcjAxczA3Lmh0bWwKLQkqIGRvYy90dXRvcmlhbC9hcGUuaHRtbAotCSogZG9jL3R1dG9yaWFsL2luY2x1ZGVnZXRhdHRyaWJ1dGUuYwotCWFkZGluZyBzZWN0aW9uIHRvIHR1dG9yaWFsIGFib3V0IHJldHJpZXZpbmcgYW4gYXR0cmlidXRlCi0JdmFsdWUKLQotVHVlIEp1biAxMSAxMjowNzowNCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogYXBwbGllZCBhIGNvdXBsZSBvZiBwYXRjaGVzIGZyb20gUGV0ZXIgSmFjb2JpIHRvIHN0YXJ0Ci0JICB0byBnZXQgcmlkIG9mIGN0eHQtPnRva2VuLCB3aXRoIGEgcG9zc2libGUgc2lnbmlmaWNhbnQgc3BlZWQKLQkgIGltcHJvdmVtZW50IHRvIGJlIGdhaW5lZCBvbmNlIGRvbmUuIEJldHRlciBjb21wbGlhbmNlIHdpdGggUEUKLQkgIHJlZmVyZW5jZXMgY29uc3RydWN0cyBpbiBEVERzIHRvby4KLQkqIHRlc3QvdmFsaWQvdFswLTldKiByZXN1bHQvdmFsaWQvdFswLTldKjogYWRkZWQgYSBzZXQgb2YgdGVzdHMKLQkgIGZyb20gUGV0ZXIgdG9vCi0KLVR1ZSBKdW4gMTEgMDk6MjU6MTIgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IEJhYmFrIFZhaGVkaXBvdXItS3VuemUgcmVwb3J0ZWQgdGhhdCBvcGVuVGFnIGluIAotCSAgeG1sUGFyc2VFbGVtZW50IHdhcyBsaWtlbHkgdG8gaGF2ZSBiZWVuIGRlYWxsb2NhdGVkIGF0IHRoZQotCSAgdGltZSBvZiB0aGUgcmVwb3J0LCBwb3NzaWJseSBsZWFkaW5nIHRvIHNlZ2ZhdWx0LiBKdXN0IHJlcG9ydAotCSAgdGhlIHRhZyBuYW1lIG5vdy4KLQotTW9uIEp1biAxMCAxODowMDowMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBwYXRjaCBmcm9tIFJpY2hhcmQgSmlua3MgZm9yIFhQYXRoIHN1YnN0cmluZygpIGZ1bmN0aW9uCi0JKiByZXN1bHQvWFBhdGgvZXhwci9zdHJpbmdzIHRlc3QvWFBhdGgvZXhwci9zdHJpbmdzOiBuZXcgc2V0IG9mIHRlc3RzCi0KLTIwMDItMDYtMDYgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiB4bWxJTy5jOiBwYXRjaCBmcm9tIFJhY2hlbCBIZXN0aWxvdyB0byBmaXggYnVnICM4NDM0MAotCi1XZWQgSnVuICA1IDE5OjE0OjQ5IE1EVCAyMDAyIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqZG9jL0ZBUS5odG1sCi0JZml4aW5nIHR5cG9zIGluIEZBUSwgdGhhbmtzIHRvIFJvYmVydCBGdW5uZWxsIGZvciB0aGUKLQllZGl0aW5nIGhlbHAKLQotV2VkIEp1biAgNSAxNDo1MDoyNCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBORVdTOiBnb3QgY29tcGxhaW50cyBmcm9tIHJwbWxpbnQgdGhhdCBpdCB3YXMgZW1wdHkKLQotVHVlIEp1biAgNCAwOTowOToxOCBNRFQgMjAwMiBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBhZGRlZCBkb2MvdHV0b3JpYWwsIGluY2x1ZGluZzoKLQlhcGEuaHRtbAotCWFwYi5odG1sCi0JYXBjLmh0bWwKLQlhcGQuaHRtbAotCWFyMDFzMDIuaHRtbAotCWFyMDFzMDMuaHRtbAotCWFyMDFzMDQuaHRtbAotCWFyMDFzMDUuaHRtbAotCWFyMDFzMDYuaHRtbAotCWluY2x1ZGVhZGRhdHRyaWJ1dGUuYwotCWluY2x1ZGVhZGRrZXl3b3JkLmMKLQlpbmNsdWRla2V5d29yZC5jCi0JaW5jbHVkZXN0b3J5LnhtbAotCWluZGV4Lmh0bWwKLQl4bWx0dXRvcmlhbC54bWwKLQlsaWJ4bWwgdHV0b3JpYWwsIGluY2x1ZGluZyBnZW5lcmF0ZWQgaHRtbAotCi1Nb24gSnVuICAzIDIxOjIxOjI2IDIwMDIgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiByZXN1bHQvYzE0bi9leGMtd2l0aG91dC1jb21tZW50cy9tZXJsaW4tYzE0bi10d28tKgotCSAgcmVzdWx0L2MxNG4vd2l0aG91dC1jb21tZW50cy9tZXJsaW4tYzE0bi10d28tKgotCSAgdGVzdC9jMTRuL2V4Yy13aXRob3V0LWNvbW1lbnRzL21lcmxpbi1jMTRuLXR3by0qCi0JICB0ZXN0L2MxNG4vd2l0aG91dC1jb21tZW50cy9tZXJsaW4tYzE0bi10d28tKgotCSAgdGVzdEMxNE4uYyBNYWtlZmlsZS5hbTogYWRkZWQgbWVybGluLWMxNG4tdHdvLnRhci5neiB0ZXN0cyBmb3IgCi0JYzE0bi9leGMtYzE0biBhbmQgc2xpZ2h0bHkgbW9kaWZpZWQgdGVzdCBzY3JpcHQgdG8gaGFuZGxlCi0JdGhlc2UgdGVzdCBjYXNlcwotCSogYzE0bi5jOiBmaXhlZCBidWdzIGZvciBjb21wbGljYXRlZCBub2RlcyBzZXQgKG5hbWVzcGFjZQotCXdpdGhvdXQgbm9kZSBhbmQgb3RoZXJzIGZyb20gbWVybGluLWMxNG4tdHdvLnRhci5neikKLQkqIGluY2x1ZGUvbGlieG1sL3hwYXRoSW50ZXJuYWxzLmggd2luMzIvZHNwL2xpYnhtbDIuZGVmLnNyYwotCXdpbjMyL2xpYnhtbDIuZGVmLnNyYzogIm9wZW5lZCIgeG1sWFBhdGhOb2RlU2V0RnJlZU5zKCkgZnVuY3Rpb24KLQlmb3IgeG1sc2VjIHBlcmZvcm1hbmNlIHBhdGNoCi0JKiB4cGF0aC5jOiBmaXhlZCBzZWxmOjpub2RlKCkgZm9yIG5hbWVzcGFjZXMgYW5kIGF0dHJpYnV0ZXMKLQotTW9uIEp1biAwMyAwMDowNDoyMSAyMDAyIENoZW1hIENlbG9yaW8gPGNoZW1hQHhpbWlhbi5jb20+Ci0KLQkqIHRyZWUuaDogYWRkZWQgeG1sRG9jRm9ybWF0RHVtcCB3aGljaCBpcyBqdXN0IGFzIHhtbERvY0R1bXAKLQkgIGJ1dCB3aXRoIHRoZSBmb3JtYXQgcGFyYW1ldGVyCi0JKiB0cmVlLmM6IG1hZGUgeG1sRG9jRHVtcCBhIHdyYXBwZXIgYXJyb3VuZCB4bWxEb2NGb3JtYXREdW1wCi0KLUZyaSBNYXkgMzEgMTI6MTY6NDggMjAwMiAgQWxla3NleSBTYW5pbiAgPGFsZWtzZXlAYWxla3NleS5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiB1cGRhdGVkIGMxNG4gdGVzdHMgc3VpdGUKLQkqIGMxNG4uYzogcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZm9yIHByZXZpb3VzIGMxNG4gcGF0Y2gKLQotRnJpIE1heSAzMSAxMTo0NzoxMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogYW5vdGhlciBwZXJvZm9ybWFuY2UgcGF0Y2ggZnJvbSBQZXRlciBKYWNvYmksIHRoYXQKLQkgIHRpbWUgb24gcGFyc2luZyBhdHRyaWJ1dGUgdmFsdWVzLgotCi1UaHUgTWF5IDMwIDIzOjM0OjI3IDIwMDIgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBNYWtlZmlsZS5hbSByZXN1bHQvYzE0bi8qIHRlc3QvYzE0bi8qOiBDMTROIHRlc3RzIGludGVncmF0ZWQKLQlpbnRvIExpYlhNTDIgdGVzdCBzdWl0ZQotCi1UaHUgTWF5IDMwIDIxOjIzOjA2IDIwMDIgIEFsZWtzZXkgU2FuaW4gIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCi0JKiBjMTRuLmM6IHByb3BhZ2F0aW5nIHhwYXRoIGFuY2Vzc3RvcnMgbm9kZSBmaXggdG8gYzE0bgotCXBsdXMgc21hbGwgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgdG8gcmVkdWNlIG51bWJlciBvZgotCW1hbGxvY3MKLQkqIHhwYXRoLmM6IGZpeGVkIGFuY2VzdG9ycyBheGlzIHByb2Nlc3NpbmcgZm9yIG5hbWVzcGFjZSBub2RlcwotCi1XZWQgTWF5IDI5IDEwOjIxOjM5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jIHBhcnNlci5jIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IHBlcmZvcm1hbmNlIHBhdGNoIGZyb20KLQkgIFBldGVyIEphY29iaQotCi1Nb24gTWF5IDI3IDIzOjE4OjMzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNC4yMgotCi1Nb24gTWF5IDI3IDE2OjQ0OjA0IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyB3aW4zMi9saWJ4bWwyLmRlZi5zcmMgd2luMzIvZHNwL2xpYnhtbDIuZGVmLnNyYwotCSAgaW5jbHVkZS9saWJ4bWwvSFRNTHBhcnNlci5oOiBmaXhpbmcgIzc5MzM0IG1ha2luZyBodG1sUGFyc2VEb2N1bWVudAotCSAgYSBwdWJsaWMgZW50cnkgcG9pbnQuCi0JKiBkb2MvKjogcmVidWlsdCB0aGUgQVBJIGFuZCBkb2NzCi0KLU1vbiBNYXkgMjcgMTQ6MTY6MjggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogcGF0Y2ggZnJvbSBSaWNoYXJkIEppbmtzIHRvIGZpeCBhIHByb2JsZW0gaW50cm9kdWNlZAotCSAgaW4gdGhlIHByZXZpb3VzIHBhdGNoIGFuZCBwb2ludGVkIGJ5IE5vcm0KLQotRnJpIE1heSAyNCAxMzoxMDoyMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbjogZml4aW5nIGJ1ZyAjODExMTIKLQotRnJpIE1heSAyNCAxMzowMzoyNCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogZml4aW5nIGJ1ZyAjODI4NDgKLQotRnJpIE1heSAyNCAwOTo1NDo0OSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiByZXN1bHQvY2F0YWxvZ3MvbXljYXRhbG9nLmZ1bGw6IEFsZWtzZXkncyBjb21taXQgY2hhbmdlZCB0aGUKLQkgIG91dHB1dCBvZiBvbmUgY2F0YWxvZyB0ZXN0Ci0KLUZyaSAyNCBNYXkgMjAwMiAxMjoxNzo0NSBBTSBQRFQgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogZ2xvYmFsLmRhdGEgZ2xvYmFscy5jIHRyZWUuYyBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggCi0Jd2luMzIvbGlieG1sMi5kZWYuc3JjIHdpbjMyL2RzcC9saWJ4bWwyLmRlZi5zcmM6IGNoYW5nZWQKLQlkZWZhdWx0IHZhbHVlIGZvciBnbG9iYWwgcGFyYW1ldGVyIHhtbEluZGVudFRyZWVPdXRwdXQgdG8gMSBhbmQKLQlpbnRyb2R1Y2VkIG5ldyBnbG9iYWwgcGFyYW1ldGVyIHhtbFRyZWVJbmRlbnRTdHJpbmcgKHRoZSBzdHJpbmcKLQl1c2VkIHRvIGRvIG9uZS1sZXZlbCBpbmRlbnQpIHdpdGggZGVmYXVsdCB2YWx1ZSAiICAiIChhcyBpdCB3YXMKLQlpbiB0cmVlLmMpCi0KLVRodSBNYXkgMjMgMTM6NTU6NTcgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IE1lcmlqbiBCcm9lcmVuIHBvaW50ZWQgb3V0IGEgcHJvYmxlbSB3aGVuIGNvbXBpbGluZwotCSAgd2l0aCB0cmlvIGFuZCBzY2hlbWFzLgotCi1XZWQgTWF5IDIyIDExOjU3OjQ5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHBhdGNoIGZyb20gUmljaGFyZCBKaW5rcyB0byBmaXggdGhlIHByb2JsZW0gcmFpc2VkIGluCi0JICBodHRwOi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMveG1sLzIwMDItQXByaWwvbXNnMDAyNDYuaHRtCi0KLVdlZCBNYXkgMjIgMDg6Mzg6MTkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jOiBhIGJpdCBvZiB3b3JrIG9uIGltcG9ydC4KLQkqIHhtbHNjaGVtYXN0eXBlcy5jOiBDaGFybGVzIEJvemVtYW4gcHJvdmlkZWQgYSBjb21wYXJlIGZ1bmN0aW9uCi0JICBmb3IgZGF0ZS90aW1lIHR5cGVzIHNvIG1pbi9tYXggZmFjZXQgcmVzdHJpY3Rpb25zIHNob3VsZCB3b3JrLAotCSAgaW5kZXRlcm1pbmF0ZSBjb21wYXJpc29ucyByZXR1cm4gYW4gZXJyb3IgaW5zdGVhZCBvZiBlcXVhbC4KLQkqIHRlc3Qvc2NoZW1hcy9kYXRlXzAqIHJlc3VsdC9zY2hlbWFzL2RhdGVfMF8wOiBzcGVjaWZpYyB0ZXN0Ci0JICBmcm9tIENoYXJsZXMgQm96ZW1hbiB0b28KLQotU2F0IE1heSAxOCAwOTo1NDoxMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuMyBkb2MvYnVpbGREb2NCb29rQ2F0YWxvZzogYXBwbHkgYSBjb3VwbGUgb2YgcGF0Y2hlcwotCSAgZnJvbSBDaHJpc3RpYW4gQ29ybmVsc3NlbiBmaXhpbmcgdGhlIG1hbiBwYWdlcyBhbmQgdGhlIENhdGFsb2cKLQkgIGJ1aWxkaW5nIHNjcmlwdC4KLQkqIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmg6IG5vdGhpbmcgbmV3IHlldAotCSAgbmV4dCBzdGVwIGlzIDx4czppbXBvcnQ+IEkgbm93IGhhdmUgYSByZWFzb25hYmxlIHVuZGVyc3RhbmRpbmcKLQkgIG9mIGhvdyBpdCB3b3Jrcy4KLQotVGh1IE1heSAxNiAxMDo0MzoyNiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBhcHBsaWVkIGEgc21hbGwgYnVmZmVyIHBlcmZvcm1hbmNlIHBhdGNoIGZyb20gR2FyeSBQZW5uaW5ndG9uCi0KLVdlZCBNYXkgMTUgMDA6MjU6MzQgQ0VTVCAyMDAyIElnb3IgWmxhdGtvdmljIDxpZ29yQHN0dWQuZmgtZnJhbmtmdXJ0LmRlPgotCi0JKiB3aW4zMi9saWJ4bWwyLmRlZi5zcmM6IGV4cG9ydGVkIHhtbFhQYXRoTm9kZVNldEFkZE5zKCkKLQotVHVlIE1heSAxNCAxMzowMDo0OCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhpbmcgYW4gWFBhdGggZnVuY3Rpb24gZXZhbHV0YXRpb24gYnVnIHBvaW50ZWQgb3V0Ci0JICBieSBBbGV4ZXkgRWZpbW92IHdoZXJlIHRoZSBjb250ZXh0IHdhcyBsb3N0IHdoZW4gZXZhbHVhdGluZwotCSAgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cwotCi1Nb24gMTMgTWF5IDIwMDIgMTE6Mzc6MzkgUE0gUERUIEFsZWtzZXkgU2FuaW4gPGFsZWtzZXlAYWxla3NleS5jb20+Ci0KLQkqIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwveHBhdGhJbnRlcm5hbHMuaDogbWFrZWQgeG1sWFBhdGhOb2RlU2V0QWRkTnMoKSAKLQkgIGZ1bmN0aW9uIHB1YmxpYyBmb3IgWE1MU2VjIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMKLQotTW9uIE1heSAxMyAxMjozMjoyMiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0IDogZml4ZWQgYSBwcm9ibGVtCi0JICB3aXRoIHRoZSBIVE1MIHBhcnNlciBwb2ludGVkIGJ5IEdhcnkgQmVuc29uCi0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3B1c2hTQVhodG1sLnB5OiBzZGRpbmcgdGhlCi0JICBleGFtcGxlCi0KLVRodSAwOSBNYXkgMjAwMiAxMToxOTowMCBBTSBQRFQgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQkqIHBhcnNlci5jOiBmaXhlZCBidWcgIzgxMTU5IChtZW1vcnkgZ3Jvd3RoIGluIFNBWCkKLQotVHVlIDA3IE1heSAyMDAyIDA5OjIwOjIxIEFNIFBEVCBBbGVrc2V5IFNhbmluIDxhbGVrc2V5QGFsZWtzZXkuY29tPgotCSogeHBhdGguYzogZml4ZWQgYnVnICM3ODg1OCAodGhlIHJlYWwgZml4KQotCi1TYXQgMDQgTWF5IDIwMDIgMTE6NTY6MzEgUE0gUERUIEFsZWtzZXkgU2FuaW4gPGFsZWtzZXlAYWxla3NleS5jb20+Ci0JKiB4cGF0aC5jOiBmaXhlZCBidWcgIzc4ODU4IChxdWljayBhbmQgZHVydHkgZml4IHRvIGhpZGUgdGhlIHByb2JsZW0pCi0KLVN1biBNYXkgIDUgMDg6NTc6MDggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBtb2RpZmllZCB4bWxOb2RlU2V0QmFzZSB0byBhbGxvdyBjaGFuZ2luZyB0aGUKLQkgIGJhc2Ugb2YgYSBkb2N1bWVudC4KLQotRnJpIE1heSAgMyAwOToyMDo0MSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzdHlwZXMuYzogcGF0Y2ggQ2hhcmxlcyBCb3plbWFuIGZvciB2YWxpZGF0aW9uIG9mCi0JICBhbGwgdGhlIGRhdGUsIHRpbWUsIGFuZCBkdXJhdGlvbiB0eXBlcwotCSogdGVzdC9zY2hlbWFzL2R1cl8wKiByZXN1bHQvc2NoZW1hcy9kdXJfMCo6IGFzc29jaWF0ZWQgdGVzdHMKLQkqIGNvbmZpZ3VyZS5pbjogZml4ZWQgYW4gZXJyb3IgcG9pbnRlZCBieSBhbiB1c2VyCi0JKiB4bWwyLWNvbmZpZy5pbjogZml4ZWQgYW4gZXJyb3IgcG9pbnRlZCBieSBhbiB1c2VyCi0KLVdlZCAwMSBNYXkgMjAwMiAxMToyOToyNyBBTSBQRFQgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sSU8uaCB3aW4zMi9kc3AvbGlieG1sMi5kZWYuc3JjCi0Jd2luMzIvbGlieG1sMi5kZWYuc3JjIHhtbElPLmM6IGV4cG9ydGVkIGRlZmF1bHQKLQknZmlsZTonLCAnaHR0cDonIGFuZCAnZnRwOicgcHJvdG9jb2xzIGlucHV0IGhhbmRsZXJzIAotCWFuZCBtYWtlZCBwcm90b2NvbHMgY29tcGFyaXNzb24gY2FzZSBpbnNlbnNpdGl2ZQotCi1UdWUgQXByIDMwIDE2OjI5OjA1IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogTmV2ZW4gSGFzIGRldGVjdGVkIGEgdHlwbwotCi1UdWUgQXByIDMwIDA4OjQ4OjExIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEFVVEhPUlMgSEFDS0lORzogYWRkZWQgQWxla3NleSBTYW5pbiA8YWxla3NleUBhbGVrc2V5LmNvbT4KLQkgIGFzIG9uZSBvZiB0aGUgcGVyc29ucyBhbGxvd2VkIHRvIGNvbW1pdCBkaXJlY3RseSB0byB0aGUKLQkgIG1vZHVsZS4KLQotTW9uIEFwciAyOSAxNzo0ODoyNiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6IHByZXBhcmluZyAyLjQuMjEKLQkqIHZhbGlkLmM6IHJhaXNlZCBhIHRvbyBsb3cgbGltaXQKLQkqIGRvYy8qOiByZWJ1aWx0IHRoZSBkb2NzIAotCi1XZWQgQXByIDI0IDEzOjQxOjAzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3QvWFBhdGgvZXhwci9mbG9hdHMgdGVzdC9YUGF0aC9leHByL2Z1bmN0aW9ucwotCSAgcmVzdWx0L1hQYXRoL2V4cHIvZmxvYXRzIHJlc3VsdC9YUGF0aC9leHByL2Z1bmN0aW9ucwotCSAgeHBhdGguYzogYW5vdGhlciBYUGF0aCBjb25mb3JtYW5jZSBwYXRjaCBmcm9tIFJpY2hhcmQgSmlua3MKLQotVHVlIEFwciAyMyAxOTo1MDo0MCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxzY2hlbWFzLmM6IGZpeGVkIHZhbGlkYXRpb24gb2YgYXR0cmlidXRlIGdyb3Vwcy4KLQkqIHRlc3Qvc2NoZW1hcyByZXN1bHQvc2NoZW1hczogYWRkZWQgYW4gZXhhbXBsZSBmcm9tIHRoZSBwcmltZXIKLQotVHVlIEFwciAyMyAwOToxMTozNyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmM6IG1vcmUgd29yayBvbiBTY2hlbWFzCi0JKiB0ZXN0L3NjaGVtYXMgcmVzdWx0L3NjaGVtYXM6IHVwZGF0ZWQgdGhlIHRlc3QgbGlzdAotCi1Nb24gQXByIDIyIDE3OjU5OjE0IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFRPRE86IHVwZGF0ZWQgYSBiaXQKLQkqIHBhcnNlci5jOiBtYWRlIGEgY29tbWVudCBtb3JlIHNwZWNpZmljCi0JKiB4bWxyZWdleHAuYyB4bWxzY2hlbWFzLmMgeG1sc2NoZW1hc3R5cGVzLmM6IG1vcmUgd29yayBvbiB0aGUKLQkgIFNjaGVtYXMgY29uZm9ybWFuY2UuCi0JKiB0ZXN0L3NjaGVtYXMgcmVzdWx0L3NjaGVtYXM6IHVwZGF0ZWQgdGhlIHRlc3QgbGlzdAotCi1TYXQgQXByIDIwIDE5OjM2OjM5IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxhdXRvbWF0YS5oOgotCSAgaW1wbGVtZW50aW5nIHhzOmFsbCB3aXRoIG1pbk9jY3VycyA9IDAKLQkqIHRlcy9zY2hlbWFzLyogcmVzdWx0L3NjaGVtYXMvKjogYWRkZWQgbW9yZSB0ZXN0cyBjb3ZlcmluZwotCSAgeHM6YWxsCi0KLVNhdCBBcHIgMjAgMDk6MjI6NTAgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1scmVnZXhwLmM6IGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbGwgcGFydGljbGUsIHRoaXMKLQkgIG1heSBuZWVkIHRvIGJlIHJldmlzaXRlZCBmb3IgY2FzZSB3aGVyZSBub3QgYWxsIHRyYW5zaXRpb25zCi0JICBtdXN0IGJlIGNyb3NzZWQuCi0KLUZyaSBBcHIgMTkgMTg6MjY6MDQgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBhbm90aGVyIGVudGl0eSBwcm9jZXNzaW5nIHVwZGF0ZSBmcm9tIE1hcmt1cyBIZW5rZQotCi1GcmkgQXByIDE5IDE3OjE0OjI0IENFU1QgMjAwMiBCam9ybiBSZWVzZSA8YnJlZXNlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotCSogdHJpb25hbi5jOiBmaXhlZCBjcmFzaCBvbiBPU0YvMQotCi1GcmkgQXByIDE5IDA5OjAwOjU2IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHNjaGVtYXMuYzogbW9yZSBTY2hlbWFzIHdvcmsKLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkIG1vcmUgdGVzdHMgY29taW5nCi0JICBmcm9tIHRoZSBzcGVjLgotCi1UaHUgQXByIDE4IDIzOjAwOjAyIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGMxNG4uYzogcGF0Y2ggZnJvbSBBbGVrc2V5IFNhbmluIHJlZmxlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlCi0JICBFeGNDMTROIHNwZWNpZmljYXRpb24KLQotVGh1IEFwciAxOCAxODozODozMCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHBhdGNoIGZyb20gTWFya3VzIEhlbmtlLCBmaXggZm9yIHJlY3Vyc2l2ZSBlbnRpdGllcy4KLQotVGh1IEFwciAxOCAxNzo0OToyNCBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXggYSBwcm9ibGVtIHdpdGggc3RyaW5nKCkgb24gYSBkb2N1bWVudCBub2RlLgotCi1UaHUgQXByIDE4IDE2OjQwOjQyIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIHhtbHNjaGVtYXMuYzogbW9yZSBTY2hlbWFzIHdvcmsKLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkIG1vcmUgdGVzdHMgY29taW5nCi0JICBmcm9tIHRoZSBzcGVjLgotCi1UaHUgQXByIDE4IDEzOjUyOjUyIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmM6IGZpeGVkICYgc2VyaWFsaXphdGlvbiBidWcgaW50cm9kdWNlZCBpbiAyLjQuMjAKLQkqIHJlc3VsdC9IVE1MLyo6IHRoaXMgY2hhbmdlcyBhIGZldyB0aGluZ3MgaW4gdGhlIHJlc3VsdHMKLQotV2VkIEFwciAxNyAyMDozNDozNyBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGlnb3JAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaDogZWxpbWluYXRlZCAnZGVjbGFyYXRpb24gZGlmZmVyZW50IHRoYW4KLQkgcHJvdG90eXBlJyB3YXJuaW5nCi0JKiBpbmNsdWRlL3dpbjMyY29uZmlnLmg6ICJyZXNvbHZlZCIgY29uZmxpY3RzIHdpdGggZXJybm8uaAotCi1XZWQgQXByIDE3IDE4OjI2OjA3IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbHJlZ2V4cC5jIHhtbHNjaGVtYXMuYyBpbmNsdWRlL2xpYnhtbC94bWxhdXRvbWF0YS5oOiBtb3JlIHdvcmsKLQkgIG9uIHRoZSBhdXRvbWF0YSBpbnRlcmZhY2VzIGFuZCBkZWJ1ZyBvZiBjb3VudGVkIGNob2ljZXMKLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyo6IGFkZGVkIGEgbnVtYmVyIG9mIHRlc3RzCi0KLVdlZCBBcHIgMTcgMTE6MDM6MDMgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sc2NoZW1hcy5jIHhtbHNjaGVtYXN0eXBlcy5jIGluY2x1ZGUvbGlieG1sL3htbHNjaGVtYXMuaDoKLQkgIGEgYml0IG9mIHdvcmsgb24gU2NoZW1hcwotCSogdGVzdFNjaGVtYXMuYzogdHJ5IHRvIG1ha2UgaXQgbW9yZSB1c2VmdWwKLQkqIHRlc3Qvc2NoZW1hcy8qIHJlc3VsdC9zY2hlbWFzLyogTWFrZWZpbGUuYW06IGNoYW5nZWQgdGhlCi0JICBTY2hlbWFzIHJlZ3Jlc3Npb24gdGVzdCBwcm9jZWR1cmUsIHN0YXJ0ZWQgYWRkaW5nIGEgZmV3IHNhbXBsZXMKLQotVHVlIEFwciAxNiAxOTo1MjowMSBDRVNUIDIwMDIgSWdvciBabGF0a292aWMgPGl6bGF0a292aWNAc3R1ZC5maC1mcmFua2Z1cnQuZGU+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL2VuY29kaW5nLmg6IFBhdGNoIGZvciB0aGUgQm9ybGFuZCBDKysgYnVpbGRlcgotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBQYXRjaCBmb3IgdGhlIEJvcmxhbmQgQysrIGJ1aWxkZXIKLQkqIHRocmVhZHMuYzogUGF0Y2ggZm9yIHRoZSBCb3JsYW5kIEMrKyBidWlsZGVyCi0JKiB3aW4zMi9iY2I1OiBOZXcgZGlyZWN0b3J5IGZvciB0aGUgQm9ybGFuZCBDKysgYnVpbGRlcgotCSBwcm9qZWN0IGZpbGVzICAgICAgIAotCi1UdWUgQXByIDE2IDE5OjQ2OjU1IENFU1QgMjAwMiBJZ29yIFpsYXRrb3ZpYyA8aXpsYXRrb3ZpY0BzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotCSogd2luMzIvTWFrZWZpbGUubXN2YzogVXBkYXRlIGZvciBYTUwgU2NoZW1hIHN1cHBvcnQKLQkqIHdpbjMyL2NvbmZpZ3VyZS5qczogVXBkYXRlIGZvciBYTUwgU2NoZW1hIHN1cHBvcnQKLQkqIHdpbjMyL2xpYnhtbDIuZGVmLnNyYzogVXBkYXRlIGZvciBYTUwgU2NoZW1hIHN1cHBvcnQKLQotVHVlIEFwciAxNiAxNzo0Njo0MyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBUT0RPX1NDSEVNQVMgY29uZmlndXJlLmluIGdlblVuaWNvZGUucHkgdGVzdEF1dG9tYXRhLmMKLQkgdGVzdFJlZ2V4cC5jIHRlc3RTY2hlbWFzLmMgeG1scmVnZXhwLmMgeG1sc2NoZW1hcy5jIHhtbHNjaGVtYXN0eXBlcy5jCi0JIHhtbHVuaWNvZGUuYyBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbQotCSBpbmNsdWRlL2xpYnhtbC9zY2hlbWFzSW50ZXJuYWxzLmggaW5jbHVkZS9saWJ4bWwveG1sYXV0b21hdGEuaAotCSBpbmNsdWRlL2xpYnhtbC94bWxyZWdleHAuaCBpbmNsdWRlL2xpYnhtbC94bWxzY2hlbWFzLmgKLQkgaW5jbHVkZS9saWJ4bWwveG1sc2NoZW1hc3R5cGVzLmggaW5jbHVkZS9saWJ4bWwveG1sdW5pY29kZS5oCi0JIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbiA6IG1lcmdlZCB0aGUgY3VycmVudCBzdGF0ZSBvZgotCSBYTUwgU2NoZW1hcyBpbXBsZW1lbnRhdGlvbiwgaXQgaXMgbm90IGNvbmZpZ3VyZWQgaW4gYnkgZGVmYXVsdCwKLQkgYSBzcGVjaWZpYyAtLXNjaGVtYXMgY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZC4KLQkqIHRlc3QvYXV0b21hdGEgdGVzdC9yZWdleHAgdGVzdC9zY2hlbWFzIE1ha2VmaWxlLmFtCi0JICByZXN1bHQvYXV0b21hdGEgcmVzdWx0L3JlZ2V4cCByZXN1bHQvc2NoZW1hczoKLQkgIG1lcmdlZCBhdXRvbWF0YS9yZWdleHAvc2NoZW1hcyByZWdyZXNzaW9uIHRlc3RzCi0KLVR1ZSBBcHIgMTYgMDk6NDg6NDQgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogR2FyeSBmb3VuZCBhIGNvbXBpbGUgdGltZSBwcm9ibGVtLCBmaXhlcyAjNzg4MjMKLQotTW9uIEFwciAxNSAxOToxMTozNiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHJlbGVhc2Ugb2YgMi40LjIwCi0JKiBkb2MvKjogdXBkYXRlZCBhbmQgcmVidWlsdCB0aGUgZG9jcwotCi1Nb24gQXByIDE1IDE0OjU1OjUzIENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbTogcGF0Y2ggZnJvbSBDcmlzdGlhbiBHYWZ0b24gdG8gYnVpbGQgb24KLQkgIFJlZCBIYXQgNi4yLCBzaG91bGQgYWxzbyBmaXggIzc1Nzc5Ci0KLU1vbiBBcHIgMTUgMTI6MTQ6NDkgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZmlyc3QgcGFydCBvZiBmaXhpbmcgIzc4NzI5Ci0KLVN1biBBcHIgMTQgMjM6NDQ6NTggQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYyB1cmkuYzogZml4aW5nIGJ1ZyAjNzg2NjIgaS5lLiBhZGQgcHJvcGVyCi0JICBlc2NhcGluZyBvZiBVUkkgd2hlbiBzYXZpbmcgSFRNTCBmaWxlcy4KLQkqIHJlc3VsdC9IVE1MLyo6IHRoaXMgaW1wYWN0ZWQgc29tZSB0ZXN0cwotCi1TdW4gQXByIDE0IDE0OjU1OjE1IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogdHJ5aW5nIHRvIGZpeCAjNzc0NDEKLQotRnJpIEFwciAxMiAyMzowMjoxNiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxJTy5oOiBIYWxsc2tpIGNvbXBsYWluZWQgaXQgY291bGQgbm90IGJlCi0JICBpbmNsdWRlZCBieSBpdHNlbGYuCi0KLVRodSBBcHIgMTEgMTA6MjM6MzYgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBhcHBsaWVkIGFuIElFRUUgZmxhZyBwYXRjaCBmb3IgT1NGLzEgIzc3ODI1Ci0KLVdlZCBBcHIgMTAgMjM6MzE6MzQgQ0VTVCAyMDAyIElnb3IgWmxhdGtvdmljIDxpZ29yQHN0dWQuZmgtZnJhbmtmdXJ0LmRlPgotCi0JKiB3aW4zMi9jb25maWd1cmUuanM6IHBhdGNoIGZyb20gTmlsbyBmb3IgdGhlIGMxNG4gb3B0aW9uCi0JKiB3aW4zMi9NYWtlZmlsZS5tc3ZjOiBmaXhlZCBsaWJ4bWwyLmRlZiBnZW5lcmF0aW9uIHdpdGggdGhyZWFkcwotCi1XZWQgQXByIDEwIDIxOjI0OjE2IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmguaW46IFNpbHZhbiBNaW5naGV0dGkKLQkgIHBvaW50ZWQgZXJyb25lb3VzIHVzZSBvZiBMSUJYTUxfVEhSRUFEU19FTkFCTEVEIGluc3RlYWQgb2YKLQkgICBMSUJYTUxfVEhSRUFEX0VOQUJMRUQKLQotV2VkIEFwciAxMCAxODoxMjo1MiBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBhbm90aGVyIHBhdGNoIGZyb20gUmljaGFyZCBKaW5rcyBmb3Igc3Vic3RyaW5nIGNvbmZvcm1hbmNlCi0JKiB0ZXN0L1hQYXRoL2V4cHIvZmxvYXRzIHRlc3QvWFBhdGgvZXhwci9zdHJpbmdzCi0JICByZXN1bHQvWFBhdGgvZXhwci9mbG9hdHMgcmVzdWx0L1hQYXRoL2V4cHIvc3RyaW5nczogdXBkYXRlIG9mIHRoZQotCSAgdGVzdCBzdWl0ZSB0byBjaGVjayB0aG9zZS4KLQotV2VkIEFwciAxMCAxMzoyOTo0OSBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBwYXRjaCBmcm9tIFJpY2hhcmQgSmlua3MgZm9yIC54IGZsb2F0IHBhcnNpbmcuCi0KLVR1ZSBBcHIgIDkgMTg6MDk6MzEgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHBhdGNoIGZyb20gTWFya3VzIEhlbmtlIHdoZW4gYW4gZW5jb2RpbmcgYWluJ3QgcmVjb2duaXplZAotCi1UdWUgQXByICA5IDE1OjQ3OjE0IENFU1QgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5tNDogZ290IGEgcmVwb3J0IHRoYXQgI2luY2x1ZGUgPHN0cmluZy5oPiB3YXMgbmVlZGVkCi0KLVR1ZSBBcHIgIDkgMTE6NTE6MjUgQ0VTVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhcHBsaWVkIGEgZml4IGZyb20gQW50aG9ueSBKb25lcyBmb3IgLW8gLy0tb3V0cHV0Ci0KLVR1ZSBBcHIgIDIgMjA6Mjc6MTEgTVNUIDIwMDIgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL2V4YW1wbGUuaHRtbDogZml4aW5nIHR5cG8KLQotTW9uIEFwciAgMSAxMDowMjo1NyBDRVNUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBhIGJ1ZyBpbiB0aGUgbm9kZXNldCB0byBib29sZWFuIGNvbXBhcmlzb24gY29kZQotCSAgcG9pbnRlZCBvdXQgYnkgTWVsdnluIFNvcGFjdWEuCi0KLUZyaSBNYXIgMjkgMjM6NDE6NTMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwubTQ6IEZy6WTpcmljIENyb3phdCBnYXZlIGEgcGF0Y2ggcmVsYXRlZCB0byB0aGUgY2hhbmdlCi0JICBvZiBJbmNsdWRlIHBhdGhzIGJyZWFraW5nIHRoZSBsaWJ4bWwubTQKLQotRnJpIE1hciAyOSAxODoyNTo1NCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IEZpeCBidWcgIzc2OTI3IGZvcmdvdCB0byBzYXZlIHNvbWUgY29udGV4dAotCSAgd2hlbiBldmFsdWF0aW5nIGJpbmFyeSBleHByZXNzaW9ucwotCi1UaHUgTWFyIDI4IDE5OjIyOjQ4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBmaXhlZCBjb25maWd1cmUgZm9yIE1QRS9pWCBmcm9tIE1hcmt1cyBIZW5rZQotCSogeG1sbWVtb3J5LmM6IGZpeGVkIGluaXRpYWxpemF0aW9uIHByb2JsZW1zCi0JKiB4cGF0aC5jOiBhbm90aGVyIHNldCBvZiBwYXRjaGVzIGZyb20gUmljaGFyZCBKaW5rcyB0aGlzCi0JICBmaXhlcyAibWFrZSBYUGF0aHRlc3RzIiBvbiBsaW51eAotCi1XZWQgTWFyIDI3IDE3OjA5OjQzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJpb25hbi5jIHRyaW9uYW4uaCB4cGF0aC5jOiBtb3JlIHBhdGNoZXMgZnJvbSBSaWNoYXJkIEppbmtzCi0JKiB0ZXN0L1hQYXRoL2V4cHIvY29tcGFyZSB0ZXN0L1hQYXRoL2V4cHIvZXF1YWxpdHkKLQkgIHRlc3QvWFBhdGgvZXhwci9mbG9hdHMgdGVzdC9YUGF0aC9leHByL2Z1bmN0aW9ucwotCSAgdGVzdC9YUGF0aC9leHByL3N0cmluZ3MgcmVzdWx0L1hQYXRoL2V4cHIvY29tcGFyZQotCSAgcmVzdWx0L1hQYXRoL2V4cHIvZXF1YWxpdHkgcmVzdWx0L1hQYXRoL2V4cHIvZmxvYXRzCi0JICByZXN1bHQvWFBhdGgvZXhwci9mdW5jdGlvbnMgcmVzdWx0L1hQYXRoL2V4cHIvc3RyaW5nczogVXBkYXRlZAotCSAgdGVzdHMgdGhvdWdoIHRoZXkgc2hvdyBhIGRpdmVyZ2VuY2Ugb24gTGludXgKLQotV2VkIE1hciAyNyAxMDowNjo1MyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmMgdHJpb25hbi5jOiBwcmV2aW91cyBjb21taXQgYWxzbyBpbmNsdWRlZCBwYXRjaGVzCi0JICBmcm9tIFJpY2hhcmQgSmlua3Mgb24gc29tZSBJRUVFIHN1cHBvcnQgY29ybmVyIGNhc2UKLQotV2VkIE1hciAyNyAxMDowMzoxMSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEFVVEhPUlMgSEFDS0lORzogQWRkZWQgSWdvciBabGF0a292aWMgYXMgb2ZmaWNpYWwgbWFpbnRhaW5lcgotCSogcHl0aG9uL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbTogQWxiZXJ0IENoaW4gcG9pbnRlZAotCSAgdGhhdCAkKGRhdGFkaXIpIHNob3VsZCBiZSB1c2VkIGZvciBkb2NzCi0KLVR1ZSBNYXIgMjYgMTM6NDM6MTYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBUaG9tYXMgU3RlaW5ib3JuIHBvaW50ZWQgb3V0ICM3NjQwNCB0aGF0IGxpYnhtbDIKLQkgIGNvdWxkIGxlYWsgZmlsZWRlc2NyaXB0b3JzCi0KLVR1ZSBNYXIgMjYgMDg6NTU6NTMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gbmFub2h0dHAuYzogYXBwbGllZCBwYXRjaCBmcm9tIEFsbGFuIENsYXJrIGZvcgotCSAgVW5peFdhcmUvT3BlblNlcnZlcgotCi1Nb24gTWFyIDI1IDE3OjQ1OjQ0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgMi40LjE5Ci0JKiBkb2MvKjogcmVidWlsdCB0aGUgZG9jcwotCi1Nb24gTWFyIDI1IDE3OjM0OjA2IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbmFub2h0dHAuYzogZml4aW5nICM3NjA0MywgZ290IGZlZCB1cCB3aXRoIG5vbi1wb3J0YWJpbGl0eQotCSAgb2YgdGhhdCBwaWVjZSBvZiBjb2RlLgotCi1Nb24gTWFyIDI1IDEzOjA4OjIxIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYyBTQVguYzogTmV2ZXIgY29tbWl0IHdpdGhvdXQgcnVubmluZyAibWFrZSB0ZXN0cyIgOi0oCi0JICBmaXggYSBjb3VwbGUgb2Ygc3R1cGlkaXRpZXMgaW4gdGhlIHByZXZpb3VzIGNvbW1pdAotCSogcmVzdWx0Lyo6IGEgZmV3IGNoYW5nZXMgaW4gc29tZSBhdHRyaWJ1dGUgb3JkZXIgcmVzdWx0IG9mIHByZXZpb3VzCi0JICBjb21taXQuCi0KLU1vbiBNYXIgMjUgMTE6NDY6MDUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2YWxpZC5jIFNBWC5jOiBmaXhlZCBidWcgIzc2MTY4LCBhdHRyaWJ1dGUgcmVkZWNsYXJlZCBpbgotCSAgdGhlIGludGVybmFsIHN1YnNldCBzaG91bGQgbm90IHJhaXNlIGR1cGxpY2F0ZSBJRCBlcnJvcnMsCi0JICBhbHNvIHRoZXJlIHdhcyBhIHNtYWxsIGJ1ZyBpbiBjb25qdW5jdGlvbiB0byBuYW1lc3BhY2UKLQkgIGRlY2xhcmF0aW9ucyBkZWZhdWx0ZWQgYW5kIHhtbDp4eHggYXR0cmlidXRlcyBEVEQgZGVmaW5pdGlvbnMuCi0KLUZyaSBNYXIgMjIgMTU6MTM6NDkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBSaWNoYXJkIEppbmtzIGFsc28gcmFpc2VkIHNvbWUgcm91bmRpbmcgcHJvYmxlbXMKLQkgIHRoaXMgdHJpZXMgdG8gZml4IHRoZW0KLQotRnJpIE1hciAyMiAxMzoyMjowOSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IFJpY2hhcmQgSmlua3Mgc3BvdHRlZCBhbiBpbmNvaGVyZW50IG1lbW9yeSBhbGxvY2F0aW9uCi0JICBiZWhhdmlvdXIgaW4geG1sWFBhdGhDYXN0VG9TdHJpbmcoKQotCi1UaHUgTWFyIDIxIDE0OjI1OjI5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogZml4ZWQgYSBidWcgaW4gdGhlIElTTy1MYXRpbiAxIHRvIFVURjggZW5jb2RlcgotCSAgcmFpc2VkIGJ5IE1vcnVzIFdhbHRlcgotCi1UaHUgTWFyIDIxIDE0OjA3OjEzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sY2F0YWxvZy5jIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbjogYXBwbGllZCAyIGZpeHVwcwotCSAgZnJvbSBJZ29yCi0KLVRodSBNYXIgMjEgMTM6MzA6MDYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhpbmcgIzc1NjE5LCByZWxhdGVkIHRvIGEgcHJvYmxlbSB3aGVuIHRyeWluZwotCSAgdG8gZXZhbHVhdGUgY29uZGl0aW9uIHdoZW4gdGhlIGN1cnJlbnQgbm9kZSBzZXQgcmVzdWx0aW5nCi0JICBmcm9tIHRoYXQgc3ViLXN0ZXAgZXZhbHVhdGlvbiBpcyBlbXB0eS4gQWxzbyBmaXhlcyAyIHBvdGVudGlhbAotCSAgcHJvYmxlbSB3aXRoIHByZXZpb3VzLXNpYmxpbmcgYW5kIG5leHQtc2libGluZ3MgYXhpcy4KLQotVGh1IE1hciAyMSAwOTowMzo1OSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGMxNG4uYzogcGF0Y2ggZnJvbSBNYXJrIFZha29jIHRvIGJ1aWxkIEMxNE4gaWYgRG9jQm9vayBhbmQKLQkgIEhUTUwgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZCBpbi4KLQotV2VkIE1hciAyMCAyMjo0Mjo0MiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyBlcnJvci5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRyZWUuYyB4bWxJTy5jCi0JICBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IGRvaGggSSByZWFsbHkgZGlkbid0IGludGVuZGVkIHRvIGNvbW1pdAotCSAgdGhpcyB0ZXN0IHZlcnNpb24gOi0oCi0KLVdlZCBNYXIgMjAgMjA6MjA6NTcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0U0FYLmM6IEkgd2FudGVkIHRvIHNlZSB0aGUgcmVhbCBzcGVlZCBhdCB0aGUgU0FYIGludGVyZmFjZQotCSAgYWZ0ZXIgYSBsaXR0bGUgdG9vIG1hbnkgWGltaWFuZXIgc3RhcnRlZCBjb21wbGFpbmluZyBhYm91dCB0aGUKLQkgIHBhcnNlciBzcGVlZC4KLQkgIGFkZGVkIGEgLS1xdWlldCBvcHRpb246Ci0JICBwYXBoaW86fi9YTUwgLT4gbHMgLWwgZGIxMDAwMDAueG1sIAotCSAgLXJ3LXJ3LXItLSAgICAxIHZlaWxsYXJkIHd3dyAgICAgIDIwMTgyMDQwIE1hciAyMCAxMDozMCBkYjEwMDAwMC54bWwKLQkgIHBhcGhpbzp+L1hNTCAtPiB0aW1lIC4vdGVzdFNBWCAtLXF1aWV0IGRiMTAwMDAwLnhtbCAKLQkgIDMyMDAwMDYgY2FsbGJhY2tzIGdlbmVyYXRlZAotCSAgcmVhbAkwbTEuMjcwcwotCSAgV2hpY2ggbWVhbnMgMTZNQnl0ZXMvcyBhbmQgM01jYWxsYmFjay9zCi0KLVR1ZSBNYXIgMTkgMTk6MzM6NTcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiB2YWxncmluZCBzcG90dGVkIGFub3RoZXIgZXJyb3IgdGhhdCB0aW1lIHdoZW4gcnVubmluZwotCSAgb24gbGlieHNsdCByZWdyZXNzaW9uIHRlc3RzCi0KLVR1ZSBNYXIgMTkgMTU6MjQ6NDkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogYWRkaW5nICJtYWtlIHZhbGdyaW5kIiBydW5uaW5nIHRoZSBmdWxsIHJlZ3Jlc3Npb24KLQkgIHRlc3RzIChleGNlcHQgcHl0aG9uIG9uZXMpIHVuZGVyIFZhbGdyaW5kICh1c2luZyB2YWxncmluZCAtcQotCSAgd2hpY2ggd2FzIGtpbmRseSBhZGRlZCBieSB0aGUgYXV0aG9yKS4KLQkqIHZhbGlkLmM6IHN0dXBpZCBidWcgcGlucG9pbnRlZCBieSBWYWxncmluZCwgdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQkgIHBhc3NlcyBjbGVhbmx5IG5vdyBleGNlcHQgYW4gb2JjdXJlIGZsb2F0aW5nIHBvaW50IGluaXRpYWxpemF0aW9uCi0JICByYWlzZWQgaW4gbG9nMTAoKSBpbiBvbmUgWFBhdGggcmVncmVzc2lvbiB0ZXN0ID8/PwotCSogdHJlZS5jOiBlZGl0ZWQgc29tZSBjb21tZW50cyB0byBjbG9zZSAjNzUyNDQKLQotVHVlIE1hciAxOSAxMjoxNToyMCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHByZXR0eSBpbnNhbmUgdGhpbmcsIHRoZSB4bWxYUGF0aEZvcm1hdE51bWJlcigpCi0JICB3YXMgbm90IHNlcmlhbGl6aW5nIDEgYXMgIjEiIGlmIExDX0FMTD1zdl9TRSA6LSggYW5kIGluIHRoZQotCSAgY29udGV4dCBvZiBTY3JvbGxLZWVwZXIsIG1hZGUgc3VyZSB0aGF0IGlmIHRoZSBudW1iZXIgaXMKLQkgIGFuIGludGVnZXIsIHRoZSBzZXJpYWxpemF0aW9uIGZvbGxvd3MgdGhlIGRlc2NyaXB0aW9uIGF0Ci0JICBodHRwOi8vd3d3LnczLm9yZy9UUi94cGF0aCNzZWN0aW9uLVN0cmluZy1GdW5jdGlvbnMKLQotTW9uIE1hciAxOCAxOToxODoxMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNC4xOAotCSogZG9jLyo6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIHdlYiBzaXRlCi0JKiAqLmMgbGlieG1sLmg6IGltcGxlbWVudCB0aGUgbmV3IElOX0xJQlhNTCBzY2hlbWUgZGlzY3Vzc2VkIHdpdGgKLQkgIHRoZSBXaW5kb3dzIGFuZCBDeWd3aW4gbWFpbnRhaW5lcnMuCi0JKiBwYXJzZXIuYzogaHVtbSwgY2hhbmdlZCB0aGUgd2F5IHRoZSBTQVggcGFyc2VyIHdvcmsgd2hlbgotCSAgeG1sU3Vic3RpdHV0ZUVudGl0aWVzRGVmYXVsdCgxKSBpcyBzZXQsIGl0IHdpbGwgdGhlbiAKLQkgIGRvIHRoZSBlbnRpdHkgcmVnaXN0cmF0aW9uIGFuZCBsb2FkaW5nIGJ5IGl0c2VsZiBpbiBjYXNlIHRoZQotCSAgdXNlciBwcm92aWRlZCBTQVggZ2V0RW50aXR5KCkgcmV0dXJucyBOVUxMLgotCSogdGVzdFNBWC5jOiBhZGRlZCAtLW5vZW50IHRvIHRlc3QgdGhlIGJlaGF2aW91ci4KLQotTW9uIE1hciAxOCAxMjo0NDoyMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBXaWxmcmllZCBUZWlrZW4gcHJvdmlkZWQgYSBoYWNraXNoIGJ1dCB3b3JraW5nCi0JICB3YXkgdG8gZ2V0IGNvbnRleHQgcmVwb3J0ZWQgYmFjayBvbiBlbnRpdGllcyB3aGVuIHBhcnNpbmcKLQkgIHdpdGggU0FYIGFuZCB3aXRob3V0IGJyZWFraW5nIHRoZSBET00gYnVpbGQuCi0KLVN1biBNYXIgMTcgMTE6MzE6NTUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjMTRuLmM6IGFwcGxpZWQgYSBuZXcgcGF0Y2ggZnJvbSBBbGVrc2V5IFNhbmluCi0JKiBkb2Mvc2l0ZS54c2wgZG9jL3htbC5odG1sIGRvYy8qLmh0bWw6IHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24KLQkgIHRvIHJlZmVyZW5jZSBBbGVrc2V5IGltcGxlbWVudGF0aW9uIG9mIFhNTCBkaWdpdGFsIFNpZ25hdHVyZXMKLQotU2F0IE1hciAxNiAyMzowMTo0MiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHNtYWxsIGZpeCB0byBhdm9pZCBwb3RlbnRpYWwgcHJvYmxlbSBkdWUgdG8KLQkgIG9yZGVyaW5nIG9mIGZyZWVpbmcgZGF0YQotCSogcHl0aG9uL01ha2VmaWxlLmFtOiBwZW9wbGUgd2VyZSBjb21wbGFpbmluZyBhYm91dCAKLQkgIHRoZSBnZW5lcmF0ZWQgZmlsZSBpbiBweXRob24gZGlyIG5vdCBiZWluZyBidWlsdAotCi1GcmkgTWFyIDE1IDIzOjIxOjQwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW4gcHl0aG9uL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotCSAgcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL3R5cGVzLmM6IENsZWFudXAKLQkgIG9mIHRoZSBweXRob24gTWFrZWZpbGVzIGJhc2VkIG9uIEphY29iIGFuZCBKYW1lcyBmZWVkYmFjaywKLQkgIGZpeGVkIHRoZSBzcGVjIGZpbGUgYWNjb3JkaW5nbHksIGZpeGVkIHRoZSBudW1iZXIgb2Ygd2FybmluZwotCSAgdGhhdCBwYXNzaW5nIG15IHBlZGFudGljIENGTEFHUyB3YXMgZ2VuZXJhdGluZy4gQ29uY2x1c2lvbgotCSAgaXMgdGhhdCBQeXRob24gaW5jbHVkZXMgYXJlIHJlYWwgY3JhcC4KLQotRnJpIE1hciAxNSAxOTo0MToyNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZSxpbjogaXQgd2FzIHJlcG9ydGVkIHF1aXRlIGEgZmV3IHRpbWVzIHRoYXQKLQkgIHhtbDItY29uZmlnIC0tY2ZsYWdzIHNob3VsZCBub3Qgb3V0cHV0Ci0JICAtSSRpbmNsdWRlcHJlZml4L2xpYnhtbDIvbGlieG1sIGJlY2F1c2UgbGlieG1sMiBoZWFkZXIgbmFtZXMKLQkgIGNsYXNoZXMgd2l0aCBleGlzdGluZyBuYW1lcyBsaWtlIGxpc3QuaCBmcm9tIEMrKyBzdGwuCi0JICBJbmNsdWRlcyBzaG91bGQgYmUgI2luY2x1ZGU8bGlieG1sL3h4eC5oPiBzbyAuLi4KLQotRnJpIE1hciAxNSAxMDo0MTo1MCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGMxNG4uYzogYW5vdGhlciBwYXRjaCBmcm9tIEFsZWtzZXkgU2FuaW4KLQotRnJpIE1hciAxNSAwODo1NTo1NSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGMxNG4uYzogYXBwbGllZCBwYXRjaCBmcm9tIEFsZWtzZXkgU2FuaW4gZml4aW5nIGEgcHJvYmxlbSBpbiB0aGUKLQkgIGNhbm9uaWNhbGl6YXRpb24gYWxnb3JpdGhtCi0JKiBkb2MveG1sLmh0bWwgZG9jL2luZGV4Lmh0bWw6IGFkZGVkIHRoZSBDMTROIHJlZmVyZW5jZXMgb24gdGhlIAotCSAgaW5kZXggcGFnZS4KLQotMjAwMi0wMy0xMyAgamFjb2IgYmVya21hbiAgPGphY29iQHhpbWlhbi5jb20+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbTogcmVtb3ZlIExEQUREIGFuZCBDRkxBR1MgYXMgdGhpcyBpcyBicm9rZW4KLQl1c2FnZSwgcmVkdW5kYW50LCBhbmQgZ2NjIHNwZWNpZmljCi0KLVdlZCBNYXIgMTMgMTE6MDA6NTkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBzcGVlZHVwIHNvbWUgbm9kZSBzZWxlY3Rpb24gb3BlcmF0aW9ucywgdGhpcyBjYW4KLQkgIGhhdmUgYSBzaWduaWZpY2FudCBpbXBhY3Qgb24gRG9jQm9vayBOb3JtJ3Mgc3R5bGVzaGVldHMKLQkqIG5hbm9odHRwLmM6IHNvbWVvbmUgcmVwb3J0ZWQgdGhhdCBTT0NLTEVOX1QgbWF5IG5vdCBiZSBkZWZpbmVkCi0JICBtYWtlIHN1cmUgaXQncyBhbHdheXMgdGhlIGNhc2UKLQkqIGRlYnVnWE1MLmM6IGRpc3Rpbmd1aXNoIENEQVRBIGFuZCBjb21tZW50cyBpbiBscyBvcGVyYXRpb25zCi0KLVR1ZSBNYXIgMTIgMTk6NDU6MjQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC8qLmg6IEhlaWtvIFcuIFJ1cHAgZml4ZWQgYSBsb3Qgb2YgY29tbWVudHMKLQkgIHRvIGdlbmVyYXRlIGJldHRlciBBUEkgZGVzY3JpcHRpb25zIGV0Yy4uLgotCi1Nb24gTWFyIDExIDEwOjEwOjMwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogYzE0bi5jOiBGaXhpbmcgIzc0MTg2LCBtYWRlIHN1cmUgYWxsIGJvb2xlYW4gZXhwcmVzc2lvbnMKLQkgIGdldCBmdWxseSBwYXJlbnRoZXNpemVkLCByYW4gaW5kZW50IG9uIHRoZSBvdXRwdXQKLQkqIGNvbmZpZ3VyZS5pbiBIVE1MdHJlZS5jIFNBWC5jIGMxNG4uYyBkZWJ1Z1hNTC5jIHRyZWUuYyB4cG9pbnRlci5jCi0JICBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IGFsc28gIzc0MTg2IHJlbGF0ZWQsIHJlbW92ZWQgdGhlCi0JICAtLXdpdGgtYnVmZmVycyBvcHRpb24sIGFuZCBhbGwgdGhlIHByZXByb2Nlc3NvciBjb25kaXRpb25hbAotCSAgc2VjdGlvbnMgdGhhdCB3ZXJlIHJlc3VsdGluZyBmcm9tIGl0LgotCi1TdW4gTWFyIDEwIDE3OjQ3OjU4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogYXBwbGllZCBwYXRjaCBmcm9tIERvZGppIFNla2V0ZWxpIGZpeGluZyBhbgotCSAgdW5pbml0YWlsaXplZCB2YXJpYWJsZSBpbiB4bWxWYWxpZEdldFZhbGlkRWxlbWVudHMoKQotCi1TYXQgTWFyICA5IDE1OjEwOjQ5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogYzE0bi5jOiBmaXhlZCBhIGZldyBjb21tZW50cwotCSogZG9jLyouaHRtbCBkb2MvKi8qLmh0bWw6IHJlZ2VuZXJhdGVkIHRoZSBkb2NzIGFuZCBhZGRlZAotCSAgdGhlIEMxNE4gQVBJCi0JKiBkb2MvYXBpLnhzbCBkb2MvZ25vbWUteG1sLnNnbWw6IGZpeHVwcyBhbmQgYWRkZWQgSURzCi0KLVNhdCBNYXIgIDkgMTE6MTY6MTEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjaGVjay14bWwtdGVzdC1zdWl0ZS5weTogZml4IHRvIGFkYXB0IHZhcmFpYXRpb25zIGluIHRoZQotCSAgYmluZGluZ3MKLQkqIGNvbmZpZ3VyZS5pbiBweXRob24vc2V0dXAucHkgcHl0aG9uL3NldHVwLnB5LmluOiBmaXhlZCB0bwotCSAgaGF2ZSB0aGUgdmVyc2lvbiBvZiB0aGUgcHl0aG9uIHNjcmlwdHMgYXV0b21hdGljYWxseSB1cGRhdGVkCi0KLUZyaSBNYXIgIDggMTY6NDU6NTUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGVkIGEgYnVnIG5ld2x5IGludHJvZHVjZWQgYW5kIHBvaW50ZWQgYnkgVXdlIEZlY2huZXIKLQkgIGluIHhtbENvcHlQcm9wKCkKLQotRnJpIE1hciAgOCAxNTo0OToxMCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNC4xNyByZWxlYXNlCi0JKiBkb2MvKjogdXBkYXRlZCBhbmQgcmVidWlsdCB0aGUgZG9jcwotCSogeHBhdGguYzogZml4ZWQgYSBjb21tZW50Ci0JKiBweXRob24vbGlieG1sLmM6IGZpeGVkIGEgcG9zc2libGUgcmVlbnRyYW5jeSBwcm9ibGVtCi0KLVRodSBNYXIgIDcgMjM6MTk6MjggQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9hdHRyaWJzLnB5OgotCSAgZml4ZWQgeG1sSGFzTnNQcm9wKCkgYnVncyBmb3IgZGVmYXVsdGVkIGZyb20gRFREIGF0dHJpYnMsCi0JICBhZGRlZCBhIHNwZWNpZmljIHJlZ3Jlc3Npb24gdGVzdAotCSogcHl0aG9uL2dlbmVyYXRvci5weTogeG1sSGFzTnNQcm9wKCkgYW5kIHhtbEhhc1Byb3AoKSBzaGFsbAotCSAgbm90IHJhaXNlIGV4Y2VwdGlvbnMgd2hlbiBmYWlsaW5nIHRvIGZpbmQgdGhlIGF0dHJpYnV0ZS4KLQotVGh1IE1hciAgNyAxNjoxMTozNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWxsaW50LmM6IG93ZW4gcG9pbnRlZCBvdXQgYSBwcm9ibGVtIHdpdGggdGhlCi0JICBmdG1lIGZpeCwgZ2V0dGltZW9mZGF5KCkgd2FzIG5vdCBkZXRlY3RlZCBieSBjb25maWd1cmUgYW5kCi0JICB0aGUgZnRpbWUgaGVhZGVyIHdhc24ndCBpbmNsdWRlZCwgZG9oaGgKLQotVGh1IE1hciAgNyAxMjoxOTozNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiB4bWxsaW50LmM6IHRyeWluZyB0byBmaXggIzcxNDU3IGZvciB0aW1pbmcKLQkgIHByZWNpc2lvbiB3aGVuIGdldHRpbWVvZmRheSgpIGlzIG5vdCBhdmFpbGJsZSBidXQgZnRpbWUoKSBpcwotCi1UaHUgTWFyICA3IDExOjI0OjAyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW4gZG9jL01ha2VmaWxlLmFtOiBGaXhlZCAjNzM0MDggbWlzc2luZyBpbWFnZXMKLQkgIGFyZSBub3cgY29waWVkIG9uIGluc3RhbGwgYW5kIHBhcnQgb2YgdGhlIC1kZXZlbCBSUE0KLQotVGh1IE1hciAgNyAwOTozNDoxNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IHRyeWluZyB0byBhdm9pZCBidWcgIzcyMTUwIHdoaWNoIHdhcyBhcHBhcmVudGx5Ci0JICBjYXVzZWQgYnkgYSBnY2MgYnVnIChvciBhIHByb2Nlc3NvciBwcm9ibGVtKSBhcyBkZXRhaWxlZAotCSAgYXQgaHR0cDovL3ZlaWxsYXJkLmNvbS9nY2MuYnVnCi0KLVRodSBNYXIgIDcgMDE6MDI6MzcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9jdXRucGFzdGUucHk6Ci0JICBmaXhlZCB4bWxSZWNvbmNpbGlhdGVOcygpLCBhZGRlZCBhIFB5dGhvbiB0ZXN0L2V4YW1wbGUgZm9yCi0JICBpbnRlci1kb2N1bWVudCBjdXQnbiBwYXN0ZQotCSogcHl0aG9uL2xpYnhtbC5weTogZml4ZWQgbm9kZS5kb2Mgb24gZG9jdW1lbnQgbm9kZXMgYW5kIGFkZGVkCi0JICB4cGF0aEV2YWwoKSBvbnRvIG5vZGUgb2JqZWN0cwotCi1XZWQgTWFyICA2IDIyOjM4OjAzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYzogZml4ZWQgc29tZSBodG1sU2V0TWV0YUVuY29kaW5nKCkgcHJvYmxlbXMKLQkqIHB5dGhvbi9saWJ4bWwuYyBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3NlcmlhbGl6ZS5weToKLQkgIGZpeHVwIGFuZCBpbnRlZ3JhdGVkIHRlc3RzIGZvciB0aGUgc2VyaWFsaXphdGlvbiBzdHVmZgotCi1XZWQgTWFyICA2IDE5OjQwOjU3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gbGlieG1sLjMgbGlieG1sLjQgbGlieG1sLnNwZWMuaW46IEZpeGVkIGJ1ZyAjNzI1NzAKLQkgIG1vdmVkIHRoZSBsaWJ4bWwgbWFuIHBhZ2UgdG8gc2VjdGlvbiAzCi0KLVdlZCBNYXIgIDYgMTg6MzQ6MDcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeCBidWcgIzcyNDkwCi0JKiBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbC5weTogYWRkZWQgbWV0aG9kcyBzZXJpYWxpemUoKQotCSAgYW5kIHNhdmVUbygpIHRvIGFsbCBub2RlIGVsZW1lbnRzLgotCi1UdWUgTWFyICA1IDIxOjI3OjAzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogY2xvc2VkICM3MzQzMCwgZG9uJ3QgcmVhZCBmcm9tIGFuIGlucHV0IHNvdXJjZQotCSAgd2hpY2ggaW5kaWNhdGVkIGFuIGVuZC1vZi1maWxlIG9yIGFuIGVycm9yLgotCi1UdWUgTWFyICA1IDE2OjMzOjQyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IG1ha2Ugc3VyZSBTQVggZW5kRG9jdW1lbnQgaXMgYWx3YXlzIGNhbGxlZCBhcwotCSAgdGhpcyBjb3VsZCByZXN1bHQgaW4gYSBQeXRob24gbWVtb3J5IGxlYWsgb3RoZXJ3aXNlIChpdCdzCi0JICB1c2VkIHRvIGRlY3JlbWVudCByZWYtY291bnRpbmcpCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5Ci0JICBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbCBweXRob24vbGlieG1sMmNsYXNzLnR4dAotCSAgcHl0aG9uL3Rlc3RzL2Vycm9yLnB5IHB5dGhvbi90ZXN0cy94cGF0aC5weTogaW1wbGVtZW50ZWQKLQkgIHRoZSBzdWdnZXN0aW9ucyBtYWRlIGJ5IEdhcnkgQmVuc29uIGFuZCBleHRlbmRlZCB0aGUgdGVzdHMKLQkgIHRvIG1hdGNoIGl0LgotCi1UdWUgTWFyICA1IDEwOjM1OjI0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weTogYXBwbGllZCBwYXRjaCBmaXhpbmcgIzczNDUwCi0KLU1vbiBNYXIgIDQgMTc6NTk6MjkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhpbmcgIzYxMjkwICJuYW1lc3BhY2Ugbm9kZXMgaGF2ZSBubyBwYXJlbnQiCi0JICBsb25nIHN0YW5kaW5nIGRpdmVyZ2VuY2UgZnJvbSB0aGUgWFBhdGggUkVDLiBOb2RlU2V0cwotCSAgc2ltcGx5IGhvbGQgYSBjb3B5IG9mIG5hbWVzcGFjZSBub2RlcyBhbmQgdGhvc2Ugbm9kZSAtPm5leHQKLQkgIHBvaW50cyB0byB0aGUgcGFyZW50ICh3aGljaCBtYXkgbm90IGJlIHRoZSBub2RlIGNhcnJ5aW5nIHRoZQotCSAgZGVmaW5pdGlvbikuCi0JKiBpbmNsdWRlL2xpYnhtbC94cGF0aC5oOiBmbGFnZ2VkIGJ1dCBkaWRuJ3QgYWRkZWQgYSBwb3NzaWJsZQotCSAgc3BlZWR1cAotCSogRE9DQnBhcnNlci5jIEhUTUxwYXJzZXIuYzogcmVtb3ZlZCBzb21lIHdhcm5pbmdzIGZyb20gcHVzaAotCSAgcGFyc2VyIGR1ZSB0byBuZXcgc3RhdGUgYmVpbmcgYWRkZWQuCi0JKiB0cmVlLmM6IG5ldyBmaXggZnJvbSBCb3JpcyBFcmRtYW5uCi0JKiBjb25maWd1cmUuaW4gYzE0bi5jIGluY2x1ZGUvbGlieG1sL2MxNG4uaCB0ZXN0QzE0Ti5jOiBhZGRlZAotCSAgdGhlIFhNTCBDYW5vbmFsaXphdGlvbiBzdXBwb3J0IGZyb20gQWxla3NleSBTYW5pbgotCi1TdW4gTWFyICAzIDE1OjEyOjQyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBwYXRjaCBmcm9tIEJvcmlzIEVyZG1hbm4gZml4aW5nIHNvbWUgbmFtZXNwYWNlIG9kaXRpZXMKLQkgIHdpdGggeG1sQ29weU5vZGUoKQotCi1TYXQgTWFyICAyIDEwOjMzOjA0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSU8uYzogZml4IGJ1ZyAjNzI3MDYgd2hlbiBsb2FkaW5nIGEgTlVMTCBlbnRpdHkKLQotRnJpIE1hciAgMSAxNzoxNDo0MiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jOiBGaXhlZCAjNzIzNDYsIGFib3V0IGhhbmRsaW5nIG9mIHhtbG5zOmZvbz0iIiwgdGhpcyBjb3VsZAotCSAgYWN0dWFsbHkgY2hhbmdlIGluIGEgZnV0dXJlIFhNTCBOYW1lc3BhY2UgcmV2aXNpb24uCi0KLUZyaSBNYXIgIDEgMTc6MTI6MTUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vdHlwZXMuYyBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL3hwYXRocmV0LnB5OgotCSAgYWRkZWQgdGhlIHBvc3NpYmlsaXR5IG9mIHJldHVybmluZyBub2Rlc2V0cyBmcm9tIFhQYXRoIGV4dGVuc2lvbgotCSAgZnVuY3Rpb25zIHdyaXR0ZW4gaW4gUHl0aG9uCi0KLUZyaSBNYXIgIDEgMTM6NTY6MTIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vKjogY29tbWl0aW5nIHNvbWUgUHl0aG9uIGJpbmRpbmdzIHdvcmsgZG9uZSB3aGlsZSB0cmF2ZWxsaW5nCi0KLUZyaSBNYXIgIDEgMTA6MTE6MTUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IGNsb3NlICM3MjY2MyBhbmQgIzcyNjU4LCBkb24ndCBtZW1kdW1wIHVubGVzcyBjb21waWxlZAotCSAgZXhwbGljaXRlbHkgd2l0aCBtZW1vcnkgZGVidWdnaW5nIHN3aXRjaGVkIG9uCi0KLVNhdCBGZWIgMjMgMTE6MDg6MDkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbAotCSAgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgcHl0aG9uL2xpYnhtbF93cmFwLmggcHl0aG9uL3R5cGVzLmM6Ci0JICBBZGRlZCB3cmFwcGVyIGZvciB0aGUgeG1sVVJJUHRyIHR5cGUsIHByb3ZpZGVkIGFjY2Vzc29ycywgZml4ZWQKLQkgIHRoZSBhY2Nlc3NvciBnZW5lcmF0b3IgZm9yIHN0cmluZ3MKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvdHN0VVJJLnB5OiBhZGRlZCBhIHNwZWNpZmljCi0JICByZWdyZXNzaW9uIHRlc3QuCi0KLUZyaSBGZWIgMjIgMjM6NDQ6NTcgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vUkVBRE1FIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9zZXR1cC5weToKLQkgIGFkZGVkIHRoZSAndXN1YWwnIHNldHVwLnB5IHRvIGFsbG93IGJ1aWxkaW5nIGEgbGlieG1sMi1weXRob24KLQkgIG1vZHVsZSBiYXNlZCBvbiB0aGUgc2FtZSBjb2RlLiBUaGUgaW5pdGlhbGl6YXRpb24gaXMgaG93ZXZlcgotCSAgZGlmZmVyZW50IHRoZSAyIC5zbyBmaWxlcyBmbyBsaWJ4bWwyIGFuZCBsaWJ4c2x0IGFyZSBpZGVudGljYWwgYW5kCi0JICB0aGV5IGVudHJ5IHBvaW50IGluaXRpYWxpemUgYm90aCBsaWJyYXJpZXMuIHRoaXMgaXMgZG9uZSB0byBhdm9pZAotCSAgc29tZSBwb3NzaWJsZSBuYXN0eSBwcm9ibGVtIHNpbmNlIHRoZSBQeXRob24gZG9uJ3QgbWVyZ2UgdGhlIG1hcHMKLQkgIG9mIGFsbCBzaGFyZWQgbW9kdWxlcy4KLQotV2VkIEZlYiAyMCAyMzoxNjowOCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jOiBmaXhlZCBhIHB1c2gvZW5jb2RpbmcgYnVnIHJlcG9ydGVkIGJ5IE1pY2hhZWwKLQkgIG9uIGxpYnJzdmcKLQotV2VkIEZlYiAyMCAxOTo1NDowNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oOiBmaXhlcyBhIG1pc3BsYWNlZCAjZW5kaWYKLQotV2VkIEZlYiAyMCAxNzo0Nzo1NSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlci5jIHZhbGlkLmM6IGZvdW5kIGFuZCBmaXhlZCBhIGNvdXBsZSBvZiBhbGxvY2F0aW9uIGJ1Z3MKLQotV2VkIEZlYiAyMCAxNTozNjowMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy94bWwuaHRtbCBkb2MvcHl0aG9uLmh0bWwgZG9jLyo6IGFkZGVkIGEgUHl0aG9uIGFuZCBiaW5kaW5nCi0JICBwYWdlIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFB5dGhvbiBiaW5kaW5ncyBhbmQgCi0JICBnaXZpbmcgcG9pbnRlcnMgdG8gdGhlIG90aGVyIGxhbmd1YWdlcyB3cmFwcGVycy4KLQotV2VkIEZlYiAyMCAxMToxNjoxNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDogcHJlcGFyaW5nIDIuNC4xNgotCSogZG9jLyogcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQ6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvY3MsCi0JICByZWJ1aWx0IHRoZSBBUEkgYW5kIHdlYiBzaXRlCi0JKiB4cGF0aC5jOiBmaXhlZCAjNzE5NzggcG9ydGFiaWxpdHkgYnVncwotCi1UdWUgRmViIDE5IDIyOjQ5OjM2IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IG9vcHMgYnJva2UgYXV0b21hdGljIGRlZmF1bHRpbmcgb2YgbmFtZXNwYWNlcyBhdHRyaWJ1dGVzLgotCi1UdWUgRmViIDE5IDIyOjAxOjM1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VySW50ZXJuYWxzLmggcGFyc2VyLmM6IGhhZCB0byBjaGFuZ2UKLQkgIDIgaW50ZXJuYWwgcGFyc2luZyBBUEkgd2hlbiBwcm9jZXNzaW5nIGRvY3VtZW50IGNvbnRlbnQKLQkgIHRvIGNoZWNrIHRoZSBzdGFydCBhbmQgZW5kIG9mIGVsZW1lbnQgY29udGVudCBhcmUgZGVmaW5lZAotCSAgaW4gdGhlIHNhbWUgZW50aXR5Ci0JKiB2YWxpZC5jIGluY2x1ZGUvbGlieG1sL3ZhbGlkLmg6IGF0dHJpYnV0ZSBub3JtYWxpemF0aW9uIGNhbgotCSAgZ2VuZXJhdGUgYSB2YWxpZGl0eSBlcnJvciBhZGRlZCB4bWxWYWxpZEN0eHROb3JtYWxpemVBdHRyaWJ1dGVWYWx1ZSgpCi0JICB3aXRoIHRoZSBjb250ZXh0IHRvIHJlcG9ydCBpdC4KLQkqIFNBWC5jOiBmaXhlZCB0aGUgbGFzdCBrbm93biBidWdzLCBjcmF6eSB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzCi0JICB3aGVuIGEgZG9jdW1lbnQgaXMgc3RhbmRhbG9uZSBzZWVtcyBjb3JyZWN0bHkgaGFuZGxlZC4gVGhlcmUKLQkgIGlzIGEgY291cGxlIG9mIG9wZW4gaXNzdWVzIGxlZnQgd2hpY2ggbmVlZCBjb25zaWRlcmF0aW9uIGVzcGVjaWFsbHkKLQkgIFBFOTMgb24gZXh0ZXJuYWwgdW5wYXJzZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgc3RhdHVzLiAKLQkgIFJhbiAxODE5IHRlc3RzOiAxODE3IHN1Y2VlZGVkLCAyIGZhaWxlZCBhbmQgMCBnZW5lcmF0ZWQgYW4gZXJyb3IgaW4gOC4yNiBzLgotCSAgVGhlIDIgdGVzdHMgbGVmdCBmYWlsaW5nIGFyZSBhY3R1YWxseSBpbiBlcnJvci4gQ2xlYW51cCBkb25lLgotCi1UdWUgRmViIDE5IDE1OjE3OjAyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogaW1wbGVtZW50ZWQgRTU5IHNwYWNlcyBpbiBDREFUQSBkb2VzIG5vdCBtYXRjaCB0aGUKLQkgIG5vbnRlcm1pbmFsIFMKLQotVHVlIEZlYiAxOSAxNDo0NDo1MyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jIHBhcnNlci5jIHZhbGlkLmM6IG1vcmUgdmFsaWRhdGlvbiB0ZXN0IGZpeHVwcwotCSogY2hlY2steG1sLXRlc3Qtc3VpdGUucHk6IGFkZGVkIGR1cmF0aW9uIGluZm8gZm9yIHRoZSB0ZXN0cwotCi1Nb24gRmViIDE4IDIzOjI1OjA4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgdmFsaWQuYzogYSBjb3VwbGUgb2YgZXJyb3JzIHdlcmUgcmVwb3J0ZWQgYnV0IG5vdAotCSAgc2F2ZWQgYmFjayBhcyBzdWNoIGluIHRoZSBwYXJzaW5nIGNvbnRleHQuIERvd24gdG8gMSUgZmFpbHVyZSByYXRlCi0JICBSYW4gMTgxOSB0ZXN0czogMTgwMSBzdWNlZWRlZCwgMTggZmFpbGVkIGFuZCAwIGdlbmVyYXRlZCBhbiBlcnJvcgotCi1Nb24gRmViIDE4IDIwOjE2OjE1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sSW50ZXJuYWxkLmM6IGlzRXh0ZW5kZXIgd2FzIG1pc3NpbmcgYSBjaGFyIAotCSogcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6ICUgYXJlIGFjY2VwdGFibGUgaW4gdGhlCi0JICBpbnRlcm5hbCBzdWJzZXQgaWYgd2l0aGluIGEgUFVCTElDIElECi0KLU1vbiBGZWIgMTggMTk6Mjc6MzIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYyBwYXJzZXJJbnRlcm5hbHMuYyB2YWxpZC5jOiBtb3JlIHdvcmsgb24gdGhlIGNvbmZvcm1hbmNlCi0JICBzdWl0ZS4gVG9vayB0aGUgc3RlcCB0byBmaW5hbGx5IGJsb2NrIGRvY3VtZW50cyB3aXRoIGVuY29kaW5nCi0JICBlcnJvcnMuIEl0J3MgYSBmYXRhbCBlcnJvciBwZXIgdGhlIHNwZWMsIHBlb3BsZSBzaG91bGQgaGF2ZSBmaXhlZAotCSAgdGhlaXIgZG9jdW1lbnRzIGJ5IG5vdy4KLQotTW9uIEZlYiAxOCAxNTozMDoxNCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhtbC10ZXN0LXN1aXRlLnB5OiBmaXhlZCB0aGUgdGVzdCBzY3JpcHQgYWZ0ZXIgc29tZSBkaXNjdXNzaW9uCi0JICBvbiB0aGUgc2VtYW50aWMgb2YgVFlQRT0iZXJyb3IiCi0JKiBNYWtlZmlsZS5hbTogYWRkZWQgdGhlIHNjcmlwdCB0byB0aGUgZGlzdHJpYgotCi1Nb24gRmViIDE4IDEyOjE3OjQxIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmMgZW50aXRpZXMuYzogZml4ZWQgYSBjb3VwbGUgb2YgY29uZm9ybWFuY2VzIGlzc3VlcyBkZWVwCi0JICBpbnRvIHRoZSB2YWxpZGF0aW9uIGNvZGUgKHN0YW5kYWxvbmUgYW5kIHVuZGVjbGFyZWQgTm90YXRpb25zKQotCi1Nb24gRmViIDE4IDAwOjE3OjI0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkICM3MTc0MSBzdXBpZCB0eXBvIGFuIGEgYnVnIGFib3V0IGVuY29kaW5nIHBhcnNpbmcKLQkgIHN0YXllZCB0aGVyZSBmb3IgeWVhcnMgIQotCi1Nb24gRmViIDE4IDAwOjA2OjQyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYyBTQVguYzogZml4ZWQgIzcxNzQwIE5vdGF0aW9uRGVjbCB3aXRoIGEgcmVxdWlyZWQgZmllbGQKLQkgIG1pc3NpbmcKLQotU3VuIEZlYiAxNyAyMzo0NTo0MCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNoZWNrLXhtbC10ZXN0LXN1aXRlLnB5OiBpbXByb3ZlZCB0aGUgYmVoYXZpb3VyIGEgYml0IGFzCi0JICB3ZWxsIGFzIHRoZSBsb2dzCi0JKiBwYXJzZXIuYyB2YWxpZC5jIFNBWC5jOiBmaXhlZCBhIGZldyBtb3JlIGJ1Z3MgCi0JICAiUmFuIDE4MTkgdGVzdHM6IDE3Nzggc3VjZWVkZWQsIDQxIGZhaWxlZCwgYW5kIDAgZ2VuZXJhdGVkIGFuIGVycm9yIgotCi1TdW4gRmViIDE3IDIwOjQxOjM3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2hlY2steG1sLXRlc3Qtc3VpdGUucHk6IHB5dGhvbiBzY3JpcHQgdG8gcnVuIHJlZ3Jlc3Npb24gdGVzdHMKLQkgIGFnYWluc3QgdGhlIFhNTCBUZXN0IHN1aXRlIG9mIFczQy9PQVNpcwotCSogU0FYLmM6IGZpeGVkIGEgdmFsaWRhdGlvbiBidWcKLQkqIHBhcnNlci5jOiBmaXhlZCAzIGVycm9ycyBwb2ludGVkIGJ5IHRoZSB0ZXN0IHN1aXRlCi0JKiBkb2MvYnVpbGREb2NCb29rQ2F0YWxvZzogZml4ZWQgYSB0eXBvIHBvaW50ZWQgYnkgZHJha2UKLQkqIHB5dGhvbi9NYWtlZmlsZS5hbTogZml4ZWQgYSBkZXBlbmRlbmR5Ci0KLUZyaSBGZWIgMTUgMjE6NDc6MTMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxtZW1vcnkuYzogYXZvaWQgYSB3YXJuaW5nIGJ1ZyAjNzE1OTQKLQotV2VkIEZlYiAxMyAyMjoxMzozMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1lbW9yeS5jOiBKZXNzZSBQZXJyeSBwcm92aWRlZCBhIHBhdGNoIHRvIHJlbW92ZSBhIGZldwotCSAgd2FybmluZyBvbiBhbHBoYS9UcnU2NAotCi1XZWQgRmViIDEzIDE0OjMwOjQ5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvZW50aXRpZXMuaDogZml4aW5nIGEgY29tbWVudAotCSogdmFsaWQuYzogZml4aW5nIHNvbWUgdHJvdWJsZXMgd2l0aCB2YWxpZGl0eSBjaGVjayBvbiBuYW1lc3BhY2VzCi0JKiByZXN1bHQvVkMvTlMzIHRlc3QvVkMvTlMzOiBhZGRlZCBhIHNwZWNpZmljIHJlZ3Jlc3Npb24gdGVzdAotCi1XZWQgRmViIDEzIDE0OjA1OjI0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBGaXhpbmcgIzcxMzQyIHNlcmlhbGl6aW5nICdcbicgaW4gYXR0cmlidXRlIHZhbHVlcwotCSogcmVzdWx0L25vZW50L2F0dDMgcmVzdWx0L2F0dDMgdGVzdC9hdHQzOiBhZGRlZCBhIHNwZWNpZmljCi0JICB0ZXN0LgotCi1UdWUgRmViIDEyIDE0OjQ1OjMyIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jOiBjb3VwbGUgb2YgYnVnIGZpeGVzCi0KLU1vbiBGZWIgMTEgMTk6NDE6MjkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vKi5weTogcmVtb3ZlZCB0YWJzIGFuZCB1c2VkIHNwYWNlcy4KLQotTW9uIEZlYiAxMSAxOToyNTo0NCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDogcHJlcGFyaW5nIDIuNC4xNQotCSogZG9jL25ld3MuaHRtbCBkb2MveG1sLmh0bWwgZG9jL3htbGlvLmh0bWw6IHJlYnVpbHQgc29tZSBkb2NzCi0KLU1vbiBGZWIgMTEgMTQ6NTM6MjQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sY2F0YWxvZ19tYW4ueG1sOiB0cnlpbmcgdG8gY2xvc2UgUmVkIEhhdCBidWcgIzU4NzA3Ci0JICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU4NzA3Ci0KLU1vbiBGZWIgMTEgMDk6NTM6MDIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9lbmNvZGluZy5oIGluY2x1ZGUvbGlieG1sL2VudGl0aWVzLmgKLQkgIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaAotCSAgaW5jbHVkZS9saWJ4bWwvdGhyZWFkcy5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5Lmg6IHRyeWluZyB0byBmaXggdGhlIGluY2x1ZGUgbWVzcwotCi1Nb24gRmViIDExIDA4OjUzOjMzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5Lmg6IHJldmVydGVkIHBhcnQgb2YgdGhlIHByZXZpb3VzCi0JICBhdHRlbXB0IHRvIHByb3ZpZGUgIzY5NjU1LCB0aGlzIHdhcyBicmVha2luZyB0aGUgYnVpbGQuCi0KLVN1biBGZWIgMTAgMTQ6MTM6MzQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1MdHJlZS5jIE1ha2VmaWxlLmFtIGJ1aWxkX2dsb2IucHkgY29uZmlndXJlLmluIGRlYnVnWE1MLmMKLQkgIGdsb2JhbHMuYyBwYXJzZXIuYyB0aHJlYWRzLmMgdHJlZS5jIHZhbGlkLmMgeG1sbWVtb3J5LmMKLQkgIHhwYXRoLmMgeHBvaW50ZXIuYyBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmgKLQkgIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5LmggaW5jbHVkZS9saWJ4bWwveHBhdGhJbnRlcm5hbHMuaDoKLQkgIFRlbnRhdGl2ZWx5IGZpeGVkICM2OTY1NSAsIG1ha2UgY29tcGlsaW5nIHdpdGggLVdyZWR1bmRhbnQtZGVjbHMKLQkgIGNsZWFuLgotCSogcHl0aG9uL2xpYnhtbC5jOiBmaXhlZCBhIHdhcm5pbmcuCi0KLVN1biBGZWIgMTAgMTI6MDI6NTkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgdmFsaWQuYyB4aW5jbHVkZS5jOiBmaXggIzY4ODgyLCBjbGVhbnVwIHRoZSBYSW5jbHVkZQotCSAgY29weWluZyBvZiBub2RlLCBtZXJnZSBiYWNrIElEcyBpbiB0aGUgdGFyZ2V0IGRvY3VtZW50LgotCSogcmVzdWx0L1hJbmNsdWRlL2RvY2lkcy54bWwgdGVzdC9YSW5jbHVkZS9kb2NzL2RvY2lkcy54bWwKLQkgIHRlc3QvWEluY2x1ZGUvZW50cy9pZHMueG1sOiB0ZXN0IGNhc2UKLQkqIHJlc3VsdC9WQy9FbGVtZW50VmFsaWQ0OiBvdXRwdXQgY2hhbmdlZCBkdWUgdG8gYSB0eXBvIGZpeAotCi1TYXQgRmViICA5IDIzOjE1OjA0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL01ha2VmaWxlLmFtOiBzZWVtcyBzb21lIHZlcnNpb24gb2YgYXV0b21ha2UgZGlkbid0Ci0JICBnZW5lcmF0ZSB0aGUgZGVwZW5kZW5jaWVzIHJpZ2h0IGFzIEphY29iIGZvdW5kIG91dC4gQWRkCi0JICBhbiBleHRyYSBkZXBlbmRlbmN5IHJ1bGUuCi0KLVNhdCBGZWIgIDkgMTg6NTk6MjMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYyB2YWxpZC5jOiBKdXN0aW4gRmxldGNoZXIgZm91bmQgc29tZSBwYXJ0cwotCSAgb2YgdGhlIGNvZGUgbmVlZGluZyBjbGVhbnVwCi0JKiBsaWJ4bWwuc3BlYy5pbiBweXRob24vTWFrZWZpbGUuYW0gcHl0aG9uL2dlbmVyYXRvci5weQotCSAgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwucHk6IEZpeGVkIHRoZSBweXRob24gTWFrZWZpbGVzCi0JICBjb3JyZWN0ZWQgYSBidWcgc2hvd2luZyB1cCBvbiBpYTY0LCBjaGFuZ2VkIHRoZSBuYW1lIG9mIHRoZQotCSAgcHl0aG9uIGludGVybmFsIG1vZHVsZSB0b28KLQotRnJpIEZlYiAgOCAxNToxOToyOCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBhcHBsaWVkIHBhdGNoIGZyb20gQW5kcmlzIFBhdmVuaXMgZm9yIGJpbmFyeQotCSAgbmFtZSBzdWZmaXhlcwotCi1GcmkgRmViICA4IDE0OjQzOjE3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jIHdpbjMyL3dpbjMyY29uZmlnLmg6IGZpeGluZyAjNjg3NDgKLQotRnJpIEZlYiAgOCAxNDozNzowNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGluZyAjNzAxNjYKLQotRnJpIEZlYiAgOCAxNDozMToyNCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGluZyAjNzAwNzcKLQotRnJpIEZlYiAgOCAxNDoyNDowMiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIENvcHlyaWdodCBNYWtlZmlsZS5hbSBSRUFETUUgY29uZmlndXJlLmluIGxpYnhtbC5zcGVjLmluOgotCSAgQ2hhbmdlZCB0byB0aGUgTUlUIExpY2VuY2UKLQkqIGRvYy9GQVEuaHRtbCBkb2MvY2F0YWxvZy5odG1sIGRvYy9pbnRyby5odG1sIGRvYy94bWwuaHRtbAotCSAgZG9jL3htbGlvLmh0bWw6IHVwZGF0ZWQgdGhlIGRvYyBhY2NvcmRpbmdseQotCSogaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmggY29uZmlndXJlLmluOiBwcmVwYXJpbmcKLQkgIDIuNC4xNCByZWxlYXNlCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbAotCSAgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgcHl0aG9uL2xpYnhtbF93cmFwLmggcHl0aG9uL3R5cGVzLmM6Ci0JICBmaXhlZCB0aGUgY29uc3QgeG1sQ2hhciAqIHdyYXBwZXIgYW5kIGdlbmVyYXRvciwgWFBhdGggZXh0ZW5zaW9uCi0JICBmdW5jdGlvbnMgbm93IHVzZSB0aGUgY29udGV4dCBhcyBmaXJzdCBhcmd1bWVudAotCSogcHl0aG9uL3Rlc3RzL3RzdHhwYXRoLnB5IHB5dGhvbi90ZXN0cy94cGF0aC5weQotCSAgcHl0aG9uL3Rlc3RzL3hwYXRoZXh0LnB5OiBVcGRhdGVkIHRoZSB0ZXN0cyBhY2NvcmRpbmdseQotCSogdHJlZS5jOiBmaXhlZCBidWcgIzcwMDY3Ci0KLVRodSBGZWIgIDcgMTc6MzM6NTggQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogY2xlYW51cAotCSogZGVidWdYTUwuYzogYWx3YXlzIHVzZSBzdGRvdXQgaWYgb3V0cHV0IGlzIE5VTEwKLQkqIHhtbElPLmM6IGRvbid0IGNsb3NlIGZpbGVkZXNjcmlwdG9ycyBwYXNzZWQgdG8gb3V0cHV0QnVmZmVycwotCSogcHl0aG9uL01ha2VmaWxlLmFtIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQKLQkgIHB5dGhvbi9saWJ4bWxfd3JhcC5oIHB5dGhvbi90eXBlcy5jOiBhdWdtZW50ZWQgdGhlIG51bWJlciBvZiBiaW5kaW5ncwotCSAgaGFuZGxpbmcgRklMRSAqIGFuZCBYUGF0aCBjb250ZXh0cwotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtOiBhdm9pZCBhIHN0dXBpZCBwcm9ibGVtIGR1ZSB0byB0aGUKLQkgIHVzZSBvZiBURVNULgotCi1XZWQgRmViICA2IDIzOjM3OjA3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBmaXhlZCBzdHVwaWQgYnVnICM3MDczOCBmb3VuZCBieSBhbGZvbnMgaG9vZ2Vydm9yc3QKLQotV2VkIEZlYiAgNiAxNzowNDo1MSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9UT0RPIHB5dGhvbi9saWJ4bWwuYzogY2xlYW51cCB0aGUgZXh0ZW5zaW9uIGZ1bmN0aW9uIGxvb2t1cAotCSogeG1sbWVtb3J5LmMgaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5Lmg6IGFsd2F5cyBjb21waWxlIHRoZSBsaXN0Ci0KLVR1ZSBGZWIgIDUgMTc6MzM6MzAgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gcHl0aG9uL01ha2VmaWxlLmFtOiBkbyBub3QgaW5zdGFsbCBvdXRzaWRlCi0JICBvZiBwcmVmaXgKLQotTW9uIEZlYiAgNCAxNTowNTo1NSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9UT0RPIHB5dGhvbi9saWJ4bWwuYzogc3RhcnRlZCBhZGRpbmcgU0FYIGludGVyZmFjZXMKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvcHVzaFNBWC5weTogYWRkZWQgYSBiYXNpYwotCSAgU0FYIHRlc3QKLQotTW9uIEZlYiAgNCAwMToxMjo0MiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogaGFyZGVuZWQgdGhlIGFkZENoaWxkIGZ1bmN0aW9uCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sMi1weXRob24tYXBpLnhtbAotCSAgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQgcHl0aG9uL2xpYnhtbF93cmFwLmggcHl0aG9uL1RPRE86Ci0JICBhZGRlZCBhY2Nlc3NvcnMgbmVlZGVkIGZvciB4bWxOb2RlLCBhIGJpdCBtb3JlIHRlc3RpbmcgYW5kCi0JICBleHRlbnNpb24gb2YgaW50ZXJmYWNlcwotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9idWlsZC5weTogYWRkZWQgYSB0ZXN0Ci0JICBidWlsZCBmcm9tIHNjcmF0Y2gvc2F2ZS9sb2FkL2NoZWNrCi0KLVN1biBGZWIgIDMgMjE6MTA6MzkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogY2hhbmdlIGEgc21hbGwgYml0IGluIHRoZSB3YXkgdmFsaWRpZHkKLQkgIGVycm9yIG1lc3NhZ2VzIGdldCBpbml0aWFsaXplZAotCSogcHl0aG9uL1RPRE8gcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sCi0JICBweXRob24vbGlieG1sMmNsYXNzLnR4dCBweXRob24vbGlieG1sX3dyYXAuaCBweXRob24vdHlwZXMuYzoKLQkgIGFkZGVkIHNvbWUgbWVtb3J5IGRlYnVnZ2luZyB0byB0cmFjayBsZWFrcyBhdCB0aGUgbGlieG1sMiBsZXZlbAotCSogcHl0aG9uL3Rlc3RzLyoucHk6IGNoYW5nZWQgYWxsIHRlc3RzIHRvIGNoZWNrIGZvciBsZWFrcywKLQkgIHRoZXJlIGlzIGp1c3Qgb25lIGxlZnQgaW4gWFBhdGggZXh0ZW5zaW9uIHJlZ2lzdHJhdGlvbnMuCi0KLVN1biBGZWIgIDMgMTc6NTA6NDYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vVE9ETyBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sCi0JICBweXRob24vbGlieG1sMmNsYXNzLnR4dDogbW9yZSBhY2Nlc3NvciBjbGFzc2VzIGZvciB0aGUgcGFyc2VyCi0JICBjb250ZXh0LCBhbGxvdyB0byBzd2l0Y2ggb24gYW5kIGNoZWNrIHZhbGlkaXR5Ci0JKiBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gcHl0aG9uL3Rlc3RzL2Vycm9yLnB5Ci0JICBweXRob24vdGVzdHMvaW52YWxpZC54bWwgcHl0aG9uL3Rlc3RzL3ZhbGlkLnhtbAotCSAgcHl0aG9uL3Rlc3RzL3ZhbGlkYXRlLnB5OiBhdHRkZWQgbW9yZSB0ZXN0IGFuZCBhbmQgYWRkZWQgZXJyb3IucHkKLQkgIHdoaWNoIEkgZm9yZ290IHRvIGNvbW1pdCBpbiB0aGUgbGFzdCBzdGVwCi0KLVN1biBGZWIgIDMgMTY6MDM6NTUgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW0gcHl0aG9uL3R5cGVzLmM6IGNsZWFudXAKLQkqIHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5IHB5dGhvbi9saWJ4bWxfd3JhcC5oCi0JICBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sIAotCSAgcHl0aG9uL2xpYnhtbDJjbGFzcy50eHQ6IGFkZGVkIGNsYXNzIGZvciBwYXJzZXIgY29udGV4dCwgYWRkZWQKLQkgIGZpcnN0IGN1dCBmb3IgcHVzaCBtb2RlIHN1cHBvcnQuIEFkZGVkIGEgZnJhbWV3b3JrIHRvIGdlbmVyYXRlCi0JICBhY2Nlc3NvcnMgZnVuY3Rpb25zLgotCSogcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIHB5dGhvbi90ZXN0cy9wdXNoLnB5OiBhZGRlZCBhIHB1c2gKLQkgIHRlc3QKLQotU3VuIEZlYiAgMyAwMDoxNzoyNiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbSBweXRob24vVE9ETyBweXRob24vbGlieG1sLnB5OiBmaXhlZCBhIHNtYWxsCi0JICBidWcgYSBiaXQgb2YgY2xlYW51cC4KLQotU2F0IEZlYiAgMiAyMjo0NzoxMCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9NYWtlZmlsZS5hbSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbDItcHl0aG9uLWFwaS54bWwKLQkgIHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0OiBhZGRpbmcgZXJyb3IgcmVkaXJlY3Rpb25zIGFuZCBwcmVmb3JtYXQKLQkgIHRvIGEgcHl0aG9uIGhhbmRsZXIKLQkqIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBweXRob24vdGVzdHMvKi5weTogY2xlYW51cCBtYWRlIGFsbAotCSAgdGVzdHMgc2VsZiBjaGVja2luZwotCi1TYXQgRmViICAyIDEzOjE4OjU0IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwucHk6IGZpeGVkIGEgc3R1cGlkIGJ1ZyB3aGVuIHJlbmFtaW5nCi0JICBhIGZ1bmN0aW9uCi0KLVNhdCBGZWIgIDIgMTE6MjU6NTEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuc3BlYy5pbiBweXRob24vTWFrZWZpbGUuYW0gcHl0aG9uL1RPRE8gcHl0aG9uL2dlbmVyYXRvci5weQotCSAgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwyLXB5dGhvbi1hcGkueG1sCi0JICBweXRob24vbGlieG1sMmNsYXNzLnR4dDogUHJvZ3Jlc3NpbmcgdGhyb3VnaCB0aGUgVE9ET3MsIGNsYXNzCi0JICBkZXNjcmlwdGlvbiBvdXRwdXQsIGV4dHJhIFhNTCBBUEksIFJQTSBub3cgYnVpbGRzIHRoZSB3cmFwcGVycwotCSAgZm9yIGFsbCBweXRob24gaW5zdGFsbGVkIHZlcnNpb25zCi0KLVNhdCBGZWIgIDIgMTA6MTM6NTIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gbGlieG1sLnNwZWMuaW4gcHl0aG9uL01ha2VmaWxlLmFtIHB5dGhvbi9UT0RPCi0JICBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwyY2xhc3MudHh0OiBhZGRlZCBtb3JlIGluZm9ybWF0aW9ucwotCSAgaW4gdGhlIGxpYnhtbDItcHl0aG9uIHBhY2thZ2UgaW5jbHVkaW5nIGRvY3MuIFNsaWdodGx5IGNoYW5nZWQKLQkgIHRoZSBjbGFzcyBoaWVyYXJjaHkKLQkqIHB5dGhvbi90ZXN0cy8qOiBhZGRlZCBiYXNpYyByZWdyZXNzaW9uIHRlc3RzIGluZnJhc3RydWN0dXJlIHRvbwotCi1GcmkgRmViICAxIDIzOjExOjU4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGxpYnhtbC5zcGVjLmluIGV4YW1wbGUvTWFrZWZpbGUuYW0gcHl0aG9uL01ha2VmaWxlLmFtOgotCSAgYWRkZWQgbGlieG1sMi1weXRob24gYXMgcGFydCBvZiB0aGUgcGFja2FnZXMgaW5zdGFsbGVkCi0KLUZyaSBGZWIgIDEgMTg6NDg6MTkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW0gcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMKLQkgIHB5dGhvbi9saWJ4bWwucHk6IG1vcmUgd29yaywgbm93IGFibGUgdG8gZXh0ZW5kIHRoZQotCSAgWFBhdGggaW50ZXJwcmV0ZXIgd2l0aCBmdW5jdGlvbnMgd3JpdHRlbiBpbiBweXRob24uCi0KLUZyaSBGZWIgIDEgMTA6Mjg6NTEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vTWFrZWZpbGUuYW06IEphY29iIHNlbnQgYSBwYXRjaCB0byBhbGxvdyBidWlsZGluZyBmcm9tCi0JICB0YXJmaWxlLgotCi1GcmkgRmViICAxIDAwOjQwOjQ4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL01ha2VmaWxlLmFtIHB5dGhvbi9saWJ4bWwuYyBjb25maWd1cmUuaW4gTWFrZWZpbGUuYW06Ci0JICBpbnNlcnRlZCB0aGUgcHl0aG9uIHdyYXBwZXJzIGJ1aWxkLCBJIGhvcGUgdGhpcyB3b24ndCBiZSB0b28KLQkgIHVucG9ydGFibGUKLQotVGh1IEphbiAzMSAyMToyNzozNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IG1pbm9yIG9wdGltaXphdGlvbgotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbC5weQotCSAgcHl0aG9uL2xpYnhtbF93cmFwLmg6IG1vcmUgd29yayBvbiB0aGUgcHl0aG9uIGJpbmRpbmdzLAotCSAgdGhleSBub3cgc3VwcG9ydCBYUGF0aCBhbmQgdGhlcmUgaXMgbm8gZXZpZGVudCBsZWFrCi0KLVRodSBKYW4gMzEgMDA6NDg6MDYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBweXRob24vZ2VuZXJhdG9yLnB5IHB5dGhvbi9saWJ4bWwuYyBweXRob24vbGlieG1sLnB5OgotCSAgbW9yZSB3b3JrIG9uIHRoZSBweXRob24gYmluZGluZ3MgZ2VuZXJhdG9yLgotCi1XZWQgSmFuIDMwIDIxOjUxOjI2IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcHl0aG9uL2dlbmVyYXRvci5weSBweXRob24vbGlieG1sLmMgcHl0aG9uL2xpYnhtbF93cmFwLmg6Ci0JICBtb3JlIHdvcmsgb24gdGhlIHB5dGhvbiBiaW5kaW5ncy4KLQotV2VkIEphbiAzMCAxNzozNTozMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHB5dGhvbi9nZW5lcmF0b3IucHkgcHl0aG9uL2xpYnhtbC5jIHB5dGhvbi9saWJ4bWwucHkKLQkgIHB5dGhvbi9saWJ4bWxfd3JhcC5oOiBjb21taXRlZCBlYXJseSB2ZXJzaW9uIG9mIGEgcHl0aG9uIGJpbmRpbmcKLQkgIGZvciBwcml2YXRlIHVzZSBvbmx5IEFUTQotCi1TYXQgSmFuIDI2IDIyOjQxOjEzIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW50aXRpZXMuYyB0cmVlLmMgaW5jbHVkZS9saWJ4bWwvZW50aXRpZXMuaDogYXBwbGllZCBwYXRjaAotCSAgZnJvbSBBbnRob255IEpvbmVzIHRvIGltcGxlbWVudCBjb3B5IG9mIERURCBzdWJ0cmVlIHRvby4gSGFkCi0JICBqdXN0IHRvIGtlZXAgMiBmdW5jdGlvbiBwcml2YXRlIHdoaWNoIHJlYWxseSBvdWdodCB0byBiZWNvbWUKLQkgIHB1YmxpYyBvbmVzLgotCi1GcmkgSmFuIDI1IDE1OjE0OjU1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhZGRlZCBwb2ludGVycyB0byB0aGUgd2ViIHBhZ2VzIGluIHRoZSB1c2FnZSgpCi0KLVRodSBKYW4gMjQgMTc6MDQ6MDQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IG1vcmUgZml4ZXMgZnJvbSBQZXRyIEtvemVsa2EgZm9yIGF0dHJpYnV0ZSBoYW5kbGluZwotCSAgaW4gdGhlIHRyZWUgQVBJIHRvIGFsaWduIHRoZSBzZW1hbnRpYyB3aXRoIERPTS4KLQotVGh1IEphbiAyNCAxNjowMDo1MyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmMgdHJlZS5jIGVudGl0aWVzLmM6IGFub3RoZXIgc2V0IG9mIHBhdGNoZXMgZnJvbQotCSAgQW50aG9ueSBKb25lcyBmb3IgY29weSBvcGVyYXRpb25zIGNsZWFudXAgYW5kIHJvYnVzdG5lc3MKLQotV2VkIEphbiAyMyAxODo1Mzo1NSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9BUEljaHVuayouaHRtbCBkb2MvcGFyc2VkZWNsLnB5IGRvYy9hcGkueHNsOiBnZW5lcmF0ZWQKLQkgIGFuIGFscGhhYmV0aWMgaW5kZXggYmFzZWQgb24gY29tbWVudHMgY29udGVudAotCSogZG9jLyo6IHJlYnVpbHQgdGhlIHdlYiBzaXRlIHdpdGggdGhlIG5ldyByZWZlcmVuY2VzCi0KLVdlZCBKYW4gMjMgMTU6MTQ6MjIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuaDogR3JlZyBTamFhcmRlbWEgc3VnZ2VzdGVkIHRvIHVzZSBhbgotCSAgZXBvbmVudGlhbCBidWZmZXIgZ3JvdGggcG9saWN5IGluIHhtbFBhcnNlckFkZE5vZGVJbmZvKCkKLQotV2VkIEphbiAyMyAxMzozMjo0MCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy9hcGkueHNsIGRvYy9BUEljb25zdHJ1Y3RvcnMuaHRtbCBkb2MvQVBJZmlsZXMuaHRtbAotCSAgZG9jL0FQSWZ1bmN0aW9ucy5odG1sIGRvYy9BUElzeW1ib2xzLmh0bWwgZG9jL2xpYnhtbDItcmVmcy54bWwKLQkgIGRvYy9wYXJzZWRlY2wucHkgZG9jL01ha2VmaWxlLmFtOiB1cGRhdGVkIHRoZSBweXRob24gZXh0cmFjdG9yCi0JICB0byBnZW5lcmF0ZSBjcm9zcy1yZWZlcmVuY2VzLCBhbmQgYWRkZWQvdXBkYXRlZCB0aGUgc3R5bGVzaGVldHMKLQkgIHRvIGdlbmVyYXRlIGFuZCBsaW5rIEFQSSBpbmRleGVzLiBUaGUgZ2VuZXJpYyBrZXl3b3JkIGluZGV4Ci0JICBpcyBub3QgZG9uZSB5ZXQuCi0JKiBkb2MvKi5odG1sOiByZWdlbmVyYXRlZCBhbGwgdGhlIHVzdWFsIGRvY3MgdG9vCi0KLVR1ZSBKYW4gMjIgMjM6MTE6MjYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCBhbiB4cGF0aCBmdW5jdGlvbiB0byB0aGUgc2hlbGwgZm9yIFQuIFYuIFJhbWFuCi0KLVR1ZSBKYW4gMjIgMjI6NDI6MjMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBwYXRjaCBmcm9tIEFudGhvbnkgSm9uZXMgdG8gY2F0Y2ggTlVMTCBub2RlcyBpbgotCSAgZGVidWcgcm91dGluZXMuCi0KLVR1ZSBKYW4gMjIgMjI6Mzg6NDIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGFwcGx5IGFuIHBhdGNoIGZyb20gUGV0ciBLb3plbGthIGZvciB1bmxpbmsgYW5kIHJlcGxhY2UgCi0JICBzdXBwb3J0IG9mIGF0dHJpYnV0ZSBub2RlcwotCi1UdWUgSmFuIDIyIDE5OjEyOjA2IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvcGFyc2VkZWNsLnB5OiBCdWlsZCBhIG5ldyB2ZXJzaW9uCi0JICBob3BlZnVsbHkgbmVhciBjb21wbGV0ZSBhbmQgZnVsbHkgZG9jdW1lbnRlZCBvZiB0aGUgQVBJIGluIFhNTAotCSogSFRNTHRyZWUuYyBTQVguYyBkZWJ1Z1hNTC5jIGVycm9yLmMgZ2xvYmFscy5jIHBhcnNlci5jIHRyZWUuYwotCSB4bWxJTy5jIHhtbG1lbW9yeS5jIGluY2x1ZGUvbGlieG1sL2NhdGFsb2cuaCBpbmNsdWRlL2xpYnhtbC9oYXNoLmgKLQkgaW5jbHVkZS9saWJ4bWwvbGlzdC5oIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaAotCSBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaCBpbmNsdWRlL2xpYnhtbC92YWxpZC5oaQotCSBpbmNsdWRlL2xpYnhtbC94bWxJTy5oIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmhpCi0JIGluY2x1ZGUvbGlieG1sL3htbG1lbW9yeS5oIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbmkKLQkgaW5jbHVkZS9saWJ4bWwveHBhdGguaCBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oOgotCSAgQ2xlYW5lZCB1cCB0aGUgZG9jIGNvbW1lbnRzIGEgbG90IGluIHRoZSBwcm9jZXNzLCB0aGUgaW50ZXJmYWNlCi0JICBjb3ZlcmFnZSBpcyBub3cgMTAwJQotCi1UdWUgSmFuIDIyIDAwOjEyOjU4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvcGFyc2VkZWNsLnB5OiBpbXByb3ZlZCB0aGUgc2NyaXB0IHRvCi0JICBleHRyYWN0cyBjb21tZW50cyBmcm9tIHRoZSBndGstZG9jIERvY0Jvb2sgb3V0cHV0IChhIGJpdAotCSAgY29udm9sdXRlZCBidXQgc2VlbXMgdG8gd29yaykuCi0KLU1vbiBKYW4gMjEgMTg6Mjk6MTkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSBkb2MvTWFrZWZpbGUuYW0gZG9jL2xpYnhtbDItYXBpLnhtbCBkb2MvcGFyc2VkZWNsLnB5OgotCSAgYWRkZWQgYW4gWE1MIGRlc2NyaXB0aW9uIG9mIHRoZSBBUEksIG1vdmVkIHRoZSBzY3JpcHQgZ2VuZXJhdGluZwotCSAgaXQgaGVyZS4gQWRkZWQgYSAibWFrZSBhcGkiIHRhcmdldAotCi1Nb24gSmFuIDIxIDE0OjM0OjM3IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBBZGFtIExvdW5kcyBwb2ludGVkIG91dCBhIGJ1ZyBpbiB4bWxTZWFyY2hOcygpCi0KLU1vbiBKYW4gMjEgMDk6NTU6MjEgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoSW50ZXJuYWxzLmg6IHRoZSBjaGFuZ2UgbWFkZSB0bwotCSAgeG1sWFBhdGhGdW5jTG9va3VwRnVuYyB3YXMgaW5jb21wYXRpYmxlIHJvbGwgaXQgYmFjawotCi1TdW4gSmFuIDIwIDIzOjAzOjQxIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGNsZWFudXAgcGF0Y2ggZnJvbSBBbnRob255IEpvbmVzCi0JKiBkb2MvTWFrZWZpbGUuYW06IGZpeCB0aGUgaGVhZGVycyB0byBhdm9pZCBpbiBtYWtlIHNjYW4KLQkqIHBhcnNlckludGVybmFscy5jIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwvKi5oOiBjbGVhbnVwIG9mIHRoZQotCSAgaW5jbHVkZXMsICogdnMgUHRyIGFuZCBnZW5lcmFsIGNsZWFudXAKLQkqIHBhcnNlZGVjbC5weTogZmlyc3QgdmVyc2lvbiBvZiBhIHNjcmlwdCB0byBleHRyYWN0IHRoZQotCSAgbW9kdWxlIGludGVyZmFjZXMsIHRoZSBnb2FsIHdpbGwgYmUgdG8gcHJvdmlkZSAuZGVjbCBvciBYTUwKLQkgIHNwZWNpZmljYXRpb24gb2YgdGhlIGludGVyZmFjZXMgdG8gYnVpbGQgd3JhcHBlcnMuCi0KLVN1biBKYW4gMjAgMTM6Mzg6MjIgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MveG1sY2F0YWxvZ19tYW4ueG1sIHhtbGNhdGFsb2cuYzogRml4ZWQgYnVnICM2ODgzMCwgeG1sY2F0YWxvZwotCSAgbm93IHByb3ZpZGVzIHJldHVybiBjb2RlcyBpbiBjYXNlIG9mIGVycm9ycwotCi1TYXQgSmFuIDE5IDE2OjM2OjIxIENFVCAyMDAyIEJqb3JuIFJlZXNlIDxicmVlc2VAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi0JKiB0cmlvLmggdHJpby5jIHRyaW9kZWYuaCB0cmlvcC5oIHRyaW9uYW4uaCB0cmlvbmFuLmMgTWFrZWZpbGUuYW06Ci0JICBVcGdyYWRlZCB0byB0cmlvIGJhc2VsaW5lIDEuNgotCSogc3RyaW8uaCBzdHJpby5jOiBSZXBsYWNlZCBieSB0cmlvc3RyLmggYW5kIHRyaW9zdHIuYwotCi1GcmkgSmFuIDE4IDE3OjIyOjUwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2xvYmFscy5jIHhtbElPLmMgeG1sY2F0YWxvZy5jOiByZW1vdmVkIHRoZSBsYXN0IG9jY3VyZW5jZXMKLQkgIG9mIHN0cmR1cCB1c2FnZSBpbiB0aGUgY29kZQotCi1GcmkgSmFuIDE4IDEyOjQ3OjE1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgZXJyb3IuYzogS2VpdGggSXNkYWxlIGNvbXBsYWluZWQgcmlnaHRseSB0aGF0IAotCSAgeG1sSW5pdFBhcnNlcigpIGRpZCBub3QgcHJlc2VydmUgdmFsdWUgc2V0IGJ5IHhtbFNldEdlbmVyaWNFcnJvckZ1bmMKLQotVGh1IEphbiAxNyAwOTo0NDo0NCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogZml4ZWQgdGhlIGZ1bnh0aW9uIHRvIHNldCB0aGUgeG1sOiBhdHRyaWJ1dGVzCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCAic2V0YmFzZSIgdG8gdGVzdCBpdC4KLQotV2VkIEphbiAxNiAxNjozNjowOCBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogdXBkYXRlIHhtbE5vZGVTZXRDb250ZW50KCkgYW5kIHhtbE5vZGVTZXRDb250ZW50TGVuKCkKLQkgIHRvIGFsbG93IHVwZGF0aW5nIGFuIGF0dHJpYnV0ZSBjb250ZW50Ci0KLVR1ZSBKYW4gMTUgMTg6MDk6MjMgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBsaWJ4bWwuaDogdHJ5IHRvIGF2b2lkIHByb2JsZW1zIHdoZW4gY29tcGlsaW5nIG9uIFdpbmRvd3MKLQotTW9uIEphbiAxNCAxODo1NjoyNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGhhc2guYzogcGF0Y2ggZnJvbSBBbnRob255IEpvbmVzIGZvciBoYXNoLmMgYWxsb2NhdGlvbiBzaXplCi0JKiBNYWtlZmlsZS5hbTogdHJ5aW5nIHRvIHdvcmsgYXJvdW5kIFlldCBBbm90aGVyIExpYnRvb2wgTWFkbmVzcwotCSAgYW5kIGJ1aWxkIHRoZSAyLjQuMTMgcmVsZWFzZSBmaW5hbGx5IC4uLgotCi1Nb24gSmFuIDE0IDE4OjI3OjE5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oOiB1cGRhdGVkIHRvIDIuNC4xMwotCSogZG9jLyogOiB1cGRhdGUgb2YgdGhlIGRvY3VtZW50YXRpb24KLQotTW9uIEphbiAxNCAxNzo1Mzo0MSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRlYnVnWE1MLmMgdHJlZS5jOiBzb21lIGNsZWFudXAgYWZ0ZXIgYW4gdW5zdWNjZXNzZnVsIGF0dGVtcHQKLQkgIGF0IGZpeGluZyAjNjEyOTAgOi0oCi0KLVN1biBKYW4gMTMgMjE6MzA6NTQgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IGZpeGVkIHhtbFNhdmVGb3JtYXRGaWxlRW5jKCkgd2hlbiBlbmNvZGluZyA9PSBOVUxMCi0JICBGaXhlcyBidWcgIzY3MjI5Ci0KLVN1biBKYW4gMTMgMTc6MTQ6MDYgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IHRyeWluZyB0byBhdm9pZCB0cm91YmxlcyB3aGVuIGEgc3VidHJlZSBpcyBjb3BpZWQKLQkgIGFuZCBjb2FsZXNjZWQgaW4gcGFydCB3aXRoIHRoZSB0YXJnZXQgdHJlZS4gU2hvdWxkIGZpeCAKLQkgIGJ1ZyAjNjc0MDcKLQotU3VuIEphbiAxMyAxNjozNzoxNSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGZpeGVkIHZhbGlkYXRpb24gb2YgYXR0cmlidXRlcyBjb250ZW50IG9mIHR5cGUKLQkgIE5BTUUgTkFNRVMgTk1UT0tFTiBhbmQgTk1UT0tFTlMgdG8gYWNjZXB0IGludGVybmF0aW9uYWxpemVkCi0JICB2YWx1ZXMsIHZlcnkgb2xkIGJ1Zy4gRml4ZXMgIzY3NjcxCi0KLVN1biBKYW4gMTMgMTU6MDc6NDkgQ0VUIDIwMDIgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaCB0cmVlLmM6IGludGVncmF0ZWQKLQkgIGEgY291cGxlIG9mIGZpeGVzIGFuZCBhIG5ldyBBUEkgZnVuY3Rpb24geG1sU2V0RW50aXR5UmVmZXJlbmNlRnVuYygpCi0JICBmcm9tIEtlaXRoIElzZGFsZSBhbmQgZGVkaWNhdGVkIHRvIHhzbGRiZyB0aGUgWFNMVCBkZWJ1Z2dlci4KLQotU3VuIEphbiAxMyAxNDoyMzoyMSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYzogYXBwbGllZCBTZXJndWVpIE5hcm9qbnlpJ3MgcGF0Y2ggdG8gYWRkIG5hdGl2ZQotCSAgdGhyZWFkIHN1cHBvcnQgb24gdGhlIFdpbjMyIHBsYXRmb3JtCi0JKiB0ZXN0VGhyZWFkc1dpbjMyLmMgTWFrZWZpbGUuYW06IGFkZGVkIHRoZSB0ZXN0IHByb2dyYW0gYWxzbwotCSAgZnJvbSBTZXJndWVpLCBXaW4zMiBzcGVjaWZpYwotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oLmluOgotCSAgYWRkZWQgcGF0Y2ggZnJvbSBJZ29yIGZvciB0aGUgV2luZG93cyB0aHJlYWQgc3BlY2lmaWMgZGVmaW5lcy4KLQotV2VkIEphbiAgOSAxMjo1MDozOSBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IEFudGhvbnkgSm9uZXMgcG9pbnRlZCBhIGJ1ZyBpbiB4bWxDb3B5RW50aXR5KCkKLQotVHVlIEphbiAgOCAxNDoyMzoyMiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qLmh0bWwgZG9jL3NpdGUueHNsIGRvYy9NYWtlZmlsZTogcmVuYW1lZCBYTUwuaHRtbAotCSAgb3V0cHV0IHBhZ2UgaW50byBYTUxpbmZvLmh0bWwuIENsb3NlIGJ1ZyAjNjY5NTEgYW5kCi0JICByYWlzZWQgYnkgUm9iZXJ0IENvbGxpbnMgdG9vLgotCi1UdWUgSmFuICA4IDE0OjEzOjE4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZW5jb2RpbmcuYzogUGF1bCBLZW9naCBwb2ludGVkIG91dCBhIHBvc3NpYmlsaXR5IG9mIHNlZ2ZhdWx0Ci0JICBvbiByZXBldGVkIHhtbEFkZEVuY29kaW5nQWxpYXMoKSAvIHhtbENsZWFudXBFbmNvZGluZ0FsaWFzKCkuCi0JICBDbG9zZXMgYnVnICMgNjgyMzgKLQotVHVlIEphbiAgOCAxMjo0ODoyNyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGRvYy8qLmh0bWw6IHVwZGF0ZWQgdGhlIEdkb21lMiBsaW5rcwotCi1UdWUgSmFuICA4IDExOjMyOjMwIENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLmg6IEFwcGxpZWQgZm9sbG93aW5nIHBhdGNoZXMgZnJvbSBSb2JlcnQgQ29sbGlucwotCSAgYW5kIG1ha2Ugc3VyZSBJTl9MSUJYTUwgaXMgZGVmaW5lZCB3aGVuIGNvbXBpbGluZyBpdAotCS0tLS0tLS0KLQkqIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbiAoTElCWE1MX0RMTF9JTVBPUlQpOiBVc2Ugb24gQ3lnd2luCi0JICBhcyB3ZWxsIGFzIFZpc3VhbCBDLgotCSogcGFyc2VyLmMgKFhNTF9ESVJfU0VQKTogRG9uJ3QgdXNlICdcXCcgZm9yIEN5Z3dpbi4KLQkqIHBhcnNlckludGVybmFscy5jIChYTUxfRElSX1NFUCk6IERvbid0IHVzZSAnXFwnIGZvciBDeWd3aW4uCi0JKiBzdHJpby5jIChQTEFURk9STV9VTklYKTogRGVmaW5lIGZvciBDeWd3aW4uCi0JKiB0cmlvZGVmLmggKFRSSU9fUExBVEZPUk1fVU5JWCk6IERlZmluZSBmb3IgQ3lnd2luLgotCSogeG1sSU8uYyAoeG1sRmlsZU9wZW4pOiBVc2UgdW5peCBiZWhhdmlvdXIgZm9yIEN5Z3dpbi4KLQkgIFVzZSBiaW5hcnkgbW9kZSBvcGVucyBmb3IgQ3lnd2luICh4bWxGaWxlT3BlblcgeG1sUGFyc2VyR2V0RGlyZWN0b3J5Ci0JICB4bWxTeXNJREV4aXN0cyB4bWxOb05ldEV4aXN0cykuCi0JKiB4bWxsaW50LmM6IERvbid0IGluY2x1ZGUgd2luc29jazIuaCBmb3IgQ3lnd2luLgotCi1Nb24gSmFuICA3IDE3OjUyOjQ4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IEppcmthIEtvc2VrIHBvaW50ZXIgb3V0IGEgYnVnIGluIHhtbFBhcnNlVGV4dERlY2woKQotCSAgd2hlbiB0aGUgdmVyc2lvbiBpbmZvIGlzIG5vdCBwcmVzZW50LgotCi1Nb24gSmFuICA3IDAwOjAzOjU4IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBBbnRob255IEpvbmVzICBwb2ludGVkIG91dCBhIHByb2JsZW0gaW4KLQkgIHhtbFN0cmluZ0dldE5vZGVMaXN0KCkgYW5kIHByb3ZpZGVkIGEgZml4IGZvciBpdAotCi1TdW4gSmFuICA2IDEzOjQ1OjQ5IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IHBhdGNoIGZyb20gRnJhbmsgSiBGcmFua2xpbiB0byByZW1vdmUgYSBidWcgaW4KLQkgIHhtbENyZWF0ZVB1c2hQYXJzZXJDdHh0KCkgd2hlbiB0aGUgaW5pdGlhbCBidWZmZXIgcGFzc2VkCi0JICBpcyBsYXJnZS4KLQotU2F0IEphbiAgNSAxOToyNDoyMyBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyLyo6IGJpZyBjbGVhbnVwIG9mIHRoZSBXaW5kb3dzL01TVkMgcHJvamVjdCBmaWxlcwotCSAgZnJvbSBJZ29yIFpsYXRrb3ZpYwotCi1XZWQgSmFuICAyIDE0OjExOjM1IENFVCAyMDAyIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL01ha2VmaWxlLmFtOiBzaG91bGQgZml4ICM2NzY3NCBhbmQgYXZvaWQgdHJvdWJsZXMgaWYgCi0JICB4c2x0cHJvYyBpcyBub3QgYXZhaWxhYmxlIG9yIGZhaWxzIGluIHRoZSBwcmVmaXggcHJvdmlkZWQKLQotVHVlIEphbiAgMSAxNzo0ODo1NiBDRVQgMjAwMiBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbG1lbW9yeS5jOiBvbmUgbW9yZSBkb2MgcGF0Y2ggZnJvbSBDaGFybGllIEJvemVtYW4uCi0KLU1vbiBEZWMgMzEgMTc6MzU6NDAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBET0NCcGFyc2VyLmMgcGFyc2VyLmMgdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oOgotCSAgRml4ZWQgYSBmZXcgb3RoZXIgcHJvYmxlbXMgcmFpc2VkIGJ5IENoYXJsaWUgQm96ZW1hbi4KLQkqIHJlc3VsdC9WQy9FbGVtZW50VmFsaWRbNS03XTogZml4ZWQgdGhlIG91dHB1dAotCi1Nb24gRGVjIDMxIDE3OjEzOjM0IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogKi5jIGluY2x1ZGUvbGlieG1sLyouaCBkb2MvaHRtbC8qOiBhcHBsaWVkIDQyIGRvY3VtZW50YXRpb24KLQkgIHBhdGNoZXMgZnJvbSBDaGFybGllIEJvemVtYW4uIFJlZ2VuZXJhdGVkIHRoZSBIVE1MIGRvY3MuCi0KLVRodSBEZWMgMjAgMTQ6NTk6NTIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9kZWJ1Z1hNTC5oIHdpbjMyL2RzcC9saWJ4bWwyLmRlZi5zcmM6IGZpeGVzCi0JICBmb3IgV2luZG93cyBmcm9tIElnb3IKLQotVHVlIERlYyAxOCAxMjoxMzozMyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogYXBwbGllZCBKdXN0aW4gRmxldGNoZXIgcGF0Y2ggZm9yIC0tb3V0cHV0IG9yIC1vCi0KLVR1ZSBEZWMgMTggMDg6NTI6MzIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9saWJ4bWwyL2xpYnhtbDIuZGVmLnNyYzogY2xvc2UgIzY3MDE5Ci0KLVR1ZSBEZWMgMTggMDg6MDg6NTEgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxsaW50LmM6IGFwcGxpZWQgSnVzdGluIEZsZXRjaGVyIGdlbmVyaWMgdGltaW5nIHBhdGNoCi0JICBzaW1pbGFyIHRvIHRoZSBvbmUgYWxyZWFkeSBhcHBsaWVkIHRvIHhzbHRwcm9jLgotCi1Nb24gRGVjIDE3IDE2OjI5OjA4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oIHRyZWUuYzogYXBwbGllZCBkb2N1bWVudGF0aW9uIHBhdGNoZXMKLQkgIGZyb20gQ2hhcmxpZSBCb3plbWFuCi0KLVRodSBEZWMgMTMgMjE6MjQ6MTYgTVNUIDIwMDEgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSpkb2MveG1sbGludC54bWwsIHhtbGxpbnQuMSAtIGRvY3VtZW50IC0tZHJvcGR0ZAotCi1UaHUgRGVjIDEzIDIzOjE5OjUwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZml4IHRoZSB4bWxTdHJkdXAoKSB1c2VkIGluIHRoZSBwcmV2aW91cyBwYXRjaC4KLQkqIHZhbGlkLmM6IGFkZGVkIC0tZHJvcGR0ZAotCSogdHJlZS5jOiBmaXhlZCB4bWxVbmxpbmtOb2RlIHNvIGl0IGFsc28gcmVtb3ZlcyB0aGUgcmVmZXJlbmNlcwotCSAgZnJvbSB0aGUgZG9jdW1lbnQgaWYgdGhlIG5vZGUgaXMgYSBEVEQKLQotVGh1IERlYyAxMyAxNTo1NDozNSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmMgdmFsaWQuYzogY2xlYW51cCBzb21lIHN0YXRpYyBkZWNsYXJhdGlvbnMKLQotVGh1IERlYyAxMyAxNToyMzowNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogcmVtb3ZlZCBhbm90aGVyIHN0cmR1cCgpCi0JKiBkb2MvRkFROiByZW1vdmVkIHRoZSBIUC9VWCBlbnRyeQotCi1UaHUgRGVjIDEzIDA5OjQ0OjU4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZml4IGJ1ZyAjNjY4MTYgd2hlbiB2YWxpZGF0aW5nLgotCSogeG1sbGludC5jOiBkb24ndCB1c2Ugc3lzL3RpbWUuaCBpZiBjb25maWd1cmUgZGlkIG5vdCBmb3VuZCBpdAotCi1Nb24gRGVjIDEwIDIxOjM5OjU1IE1TVCAyMDAxIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvY3MveG1sbGludC4xLCB4bWxsaW50LnhtbCwgeG1sY2F0YWxvZy4xLCB4bWxjYXRhbG9nX21hbi5odG1sLAotCXhtbGNhdGFsb2dfbWFuLnhtbAotCi1Nb24gRGVjIDEwIDIyOjA2OjE2IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sbWVtb3J5Lmg6IEhpZXRhbmllbWkgSmFya2tvIHBvaW50ZWQgb3V0IHRoYXQKLQkgIHhtbEluaXRNZW1vcnkoKSB3YXMgZGVjbGFyZWQgdHdpY2UKLQotU3VuIERlYyAgOSAxNDo1OToyMyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdsb2JhbHMuYzogZG8gbm90IHJlZmVyZW5jZSBzdHJkdXAoKSAhCi0JKiBjb25maWd1cmUuaW4gbGlieG1sLTIuMC5wYy5pbjogdHJ5aW5nIHRvIGZpeCB0aGUgbGlicwotCSAgb2YgdGhlIHZhcmlvdXMgY29uZmlnIGV4dHJhY3Rpb24gbW9kdWxlcwotCi1GcmkgRGVjICA3IDE1OjIxOjMzIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluIDogcHJlcGFyaW5nIDIuNC4xMgotCSogZG9jLyogOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2NzCi0KLUZyaSBEZWMgIDcgMTI6MzI6MDAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogY2xvc2VkIGJ1ZyAjNjYxNTkKLQkqIHRlc3RVUkkuYzogYWRkZWQgLS1lc2NhcGUgb3B0aW9uCi0JKiBjb25maWd1cmUuaW46IHNvbWUgY2xlYW51cCBmb3IgeG1sMi1jb25maWcgLS1jZmxhZ3MKLQotVGh1IERlYyAgNiAxNTozMTozMCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGdsb2JhbHMuYyB0ZXN0VGhyZWFkcy5jOiByZW1vdmVkIHNvbWUgbWlzcGxhY2VkIGluY2x1ZGVzCi0JICBvZiB4bWx2ZXJzaW9uLmgKLQotVGh1IERlYyAgNiAwOTowNjowOCBFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRocmVhZHMuYzogcGF0Y2ggZnJvbSBHYXJ5IFBlbm5pbmd0b24gZml4aW5nIGEgcG9zc2libGUKLQkgIHByb2JsZW0gYXQgaW5pdGlhbGl6YXRpb24gdGltZS4KLQotV2VkIERlYyAgNSAxMzowMTozNyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBsaWJ4bWwuaCBwYXJzZXIuYyB0ZXN0VGhyZWFkcy5jIG1hY29zLzogaW50ZWdyYXRlZAotCSAgRXJpYyBMYXZpZ25lIGNvbnRyaWJ1dGlvbiB0byBidWlsZCBsaWJ4bWwyIG9uIE1hY09TIHVzaW5nCi0JICBDb2RlV2Fycmlvci4KLQotVHVlIERlYyAgNCAxNDoxMzo0NCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogYXBwbGllZCBHZWVydCBLbG9vc3Rlcm1hbidzIHBhdGNoIHRvIGZpeAotCSAgLS1yZXBlYXQgLS10aW1pbmcgb3V0cHV0Ci0KLVRodSBOb3YgMjkgMTc6MTA6MjIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogUm9iaW4gQmVyam9uIDxyb2JpbkBrbm93c2NhcGUuY29tPiBmb3VuZCBhIGNhc2UKLQkgIHdoZXJlIG5vbi13ZWxsZm9ybWVkIFhNTCBkZWNsYXJhY3Rpb25zIHdlcmUgbm90IGRldGVjdGVkLgotCi1XZWQgTm92IDI4IDE1OjQxOjQwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBvaW50ZXIuYzogZml4ZWQgYSBjb21waWxhdGlvbiBidWcgcG9pbnRlZCBieSBEYW5ueSBKYW1zaHkKLQotV2VkIE5vdiAyOCAxMDowOTo1MSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbElPLmM6IGFzIHJvYmVydCBwb2ludGVkIGFnYWluLCB4bWxJbnB1dENhbGxiYWNrSW5pdGlhbGl6ZWQKLQkgIGdldHMgcmVzZXQgYnkgeG1sQ2xlYW51cElucHV0Q2FsbGJhY2tzKCkgYW5kIHRoaXMgbWFrZXMgdGhlCi0JICBmdW5jdGlvbiB1c2VsZXNzLiBTYW1lIGZvciBvdXRwdXQuCi0KLVR1ZSBOb3YgMjcgMTc6MjI6MzYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiByb2JlcnQgcG9pbnRlZCBvdXQgYSBsb29wIGVycm9yIGluIGNhbGxiYWNrIGNsZWFudXBzCi0KLU1vbiBOb3YgMjYgMTY6NTY6MDAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmMgZGVidWdYTUwuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmggaW5jbHVkZS9saWJ4bWwvZGVidWdYTUwuaDoKLQkgIG1vdmVkIHhtbEdldExpbmVObygpIGFuZCB4bWxHZXROb2RlUGF0aCgpIGludG8gdGhlIG1haW4gdHJlZSBtb2R1bGUsCi0JICB0aGV5IGFyZSBub3QgcmVhbGx5IHRpZWQgdG8gZGVidWdnaW5nCi0KLU1vbiBOb3YgMjYgMTE6MzE6MzYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6IHByZXBhcmluZyAyLjQuMTEKLQkqIHhtbGxpbnQuYzogYmV0dGVyIC0tY2F0YWxvZ3MgZGVzY3JpcHRpb24KLQotU3VuIE5vdiAyNSAxMTozNDoyNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRyZWUuYzogZml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbXMgaW4geG1sU2V0UHJvcCgpCi0KLVRodSBOb3YgMjIgMTk6MTk6MTAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIHRyZWUuYyB4bWxJTy5jIHhtbG1lbW9yeS5jOiBzb21lIGNsZWFudXBzIHdoZW4gY2hhc2luZwotCSAgdW5hcHByb3ByaWF0ZSBzdGRvdXQgb3V0cHV0LgotCi1UaHUgTm92IDIyIDEzOjU4OjE0IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBGaXhlZCBhIGNvdXBsZSBvZiBtYWNybyBlcnJvcnMgcG9pbnRlZCBvdXQKLQkgIGJ5IERlbmlzIEJldXJpdmUsIGNsb3NlcyAjNjUxMTEKLQotVHVlIE5vdiAyMCAxMDozNDowMSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGluIGNhc2Ugb2YgY29udGVudCBtb2RlbCB2YWxpZGl0eSBlcnJvciwgZG9uJ3QKLQkgIHByaW50IGl0IGlmIHZhbGlkaXR5IHdhcm5pbmdzIHdlcmUgbm90IHJlcXVlc3RlZC4KLQotVHVlIE5vdiAyMCAwOTozMDowMiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIG5hbm9mdHAuYzogYXBwbGllZCBhIGNvdXBsZSBvZiBwYXRjaGVzIGZyb20gQnJpYW4gRCBSaXBsZXkuCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogcmVtb3ZlZCB0aGUgbGFzdCBleGl0KCkgY2FsbC4gUHJpbnQgYW4KLQkgIHVubWFza2FibGUgZXJyb3Igb24gc3RkZXJyIGluc3RlYWQgKGxpYnJhcnkgbWlzbWF0Y2ggZGV0ZWN0aW9uKQotCi1TYXQgTm92IDE3IDE3OjE2OjUxIE1TVCAyMDAxIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqIGRvYy94bWxsaW50LnhtbCwgZG9jL3htbGxpbnQuMSAtIHVwZGF0ZSB4bWxsaW50IG1hbiBwYWdlIHdpdGgKLQlzaGVsbCBpbnN0cnVjdGlvbnMgZnJvbSBIZWlrbyBSdXBwCi0KLVRodSBOb3YgMTUgMTQ6NTM6NDIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IHVzZSB0aGUgVVJMIG5vdGF0aW9uIGZpbGU6Ly8gZm9yIGRlZmF1bHQgY2F0YWxvZyBwYXRocwotCi1XZWQgTm92IDE0IDE2OjAzOjAyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBiZXR0ZXIgY29tbWVudHMgZm9yIF9wcml2YXRlIGZpZWxkcwotCSogdHJlZS5jOiByZW1vdmVkIGEgcHJvYmxlbSB3aGVuIGNvcHlpbmcgYW4gZW50aXR5IHJlZmVyZW5jZS4KLQotVHVlIE5vdiAxMyAxNjoyMzowNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZtcy8qOiB1cGRhdGVkIGluc3RydWN0aW9ucyBhbmQgZGlmZnMgZnJvbSBKb2huIEEgRm90aGVyaW5naGFtCi0KLU1vbiBOb3YgMTIgMjM6NDM6MjIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWxlcnJvci5oOiBhdm9pZCBhbiBpbmNsdWRlIHByb2JsZW0gaWYKLQkgICNpbmNsdWRlIDxsaWJ4bWwveG1sZXJyb3IuaD4gaGFwcGVucyBmaXJzdCBpbiBjb2RlCi0JICBzZWVtcyB0byBiZSB0aGUgY2FzZSBpbiBLREUgbGlicwotCi1Nb24gTm92IDEyIDIyOjMyOjQxIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogd2luMzIvZHNwLyogaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmguaW46IHVwZGF0ZQotCSAgZnJvbSBJZ29yIGZvciBXaW5kb3dzCi0KLU1vbiBOb3YgMTIgMTA6MTk6NDEgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogR2FyeSBQZW5uaW5ndG9uIHBvaW50ZWQgb3V0IGEgbWlzc2luZyBwcmVmaXgKLQotU2F0IE5vdiAxMCAxMjo1NTo0MiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDogcHJlcGFyaW5nIDIuNC4xMAotCSogZG9jLyo6IHVwZ3JhZGVkIGFuZCByZWJ1aWx0IHRoZSBkb2NzCi0KLVNhdCBOb3YgMTAgMTI6MzM6MzggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeCBjb21tZW50IGluIHNjcmlwdHMgZWxlbWVudCBwYXJzaW5nLgotCSogcmVzdWx0L0hUTUwvZG9jMyo6IHVwZGF0ZWQgdGhlIHJlc3VsdHMuCi0KLVNhdCBOb3YgMTAgMTE6MTg6MTggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogYW5vdGhlciBVUkkgYnVnIGZpeCAjNjMzMzYsIHVzaW5nIEpvZWwgWW91bmcgcGF0Y2guCi0KLVNhdCBOb3YgMTAgMTE6MDc6MjYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIGluY2x1ZGUvbGlieG1sL2RlYnVnWE1MLmg6IGFkZCB4bWxHZXROb2RlUGF0aCgpCi0JICBhIGNsZWFuZWQgdXAgdmVyc2lvbiBvZiB0aGUgUHdkIHNoZWxsIHN0cmluZyBnZW5lcmF0aW9uLgotCi1GcmkgTm92ICA5IDAwOjM0OjEzIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYyBpbmNsdWRlL2xpYnhtbC90cmVlLmg6IHRyeWluZyB0byBmaXggbmFtZXNwYWNlcyArCi0JICB2YWxpZGF0aW9uIHByb2JsZW1zIGZvciBnb29kLCBjbG9zaW5nICM2MzYxOSBpbiB0aGUgcHJvY2VzcwotCSogcmVzdWx0L3ZhbGlkL2RpYS54bWwgdGVzdC92YWxpZC9kaWEueG1sOiB0aGUgRGlhIHRlc3Qgd2FzCi0JICB3cm9uZyBpbiB0aGlzIHJlc3BlY3QsIGZpeGVkIGl0LgotCi1UaHUgTm92ICA4IDE4OjMxOjQwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBNb3J1cyBXYWx0ZXIgcGF0Y2ggdG8gYWxsb3cgLS1mb3JtYXQgYW5kIC0tZW5jb2RlCi0KLVRodSBOb3YgIDggMTQ6NTI6MTggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jOiBTdGVmYW4gS29zdCBwcm92aWRlZCBhbiBoZWxwIGNvbW1hbmQgZm9yIHRoZSBzaGVsbAotCi1XZWQgTm92ICA3IDE0OjMyOjU1IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYzogSGVpa28gUnVwcCBwb2ludGVkIHRoYXQgdGhlIHNoZWxsIHdvdWxkIGNyYXNoCi0JICBvbiBlbXB0eSBub2Rlc2V0cyByZXR1cm5zLgotCi1XZWQgTm92ICA3IDEzOjUyOjM2IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW06IFdlaXFpIEdhbyBwb2ludGVkIG91dCB0aGF0IHhtbGNhdGFsb2cKLQkgIG1pZ2ggbmVlZCB0aGUgaGlzdG9yeSBsaWJyYXJpZXMKLQotVHVlIE5vdiAgNiAyMzo0OTowOSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYyB0ZXN0L0hUTUwvbHQuaHRtbCByZXN1bHQvSFRNTC9sdC5odG1sKjoKLQkgIGhhbmRsZSB0aGUgY2FzZSBvZiA8IGluIHF1b3RlZCBhdHRyaWJ1dGVzLCBCYXN0aWFuIEtsZWluZWlkYW0KLQotVHVlIE5vdiAgNiAxNjoyMTozMyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDogcmVsZWFzaW5nIDIuNC45Ci0JICBmaXhpbmcgY2F0YWxvZyBicmVha2FnZXMKLQkqIE1ha2VmaWxlLmFtIGNhdGFsb2cuYyByZXN1bHQvY2F0YWxvZ3MvY2F0YWwgCi0JICByZXN1bHQvY2F0YWxvZ3MvbXljYXRhbG9nLiogdGVzdC9jYXRhbG9ncy9jYXRhbCo6Ci0JICBmaXhlZCBtb3JlIHByb2JsZW1zIGluIGNhdGFsb2cgc3VwcG9ydCwgYWRkZWQgbW9yZSByZWdyZXNzaW9uIHRlc3RzCi0JICBmb3IgYm90aCBYTUwgYW5kIFNHTUwgY2F0YWxvZyBoYW5kbGluZwotCi1Nb24gTm92ICA1IDIwOjI2OjQxIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZGVidWdYTUwuYzogYXBwbGllZCBhbiBpbXByb3ZlbWVudCB0byB4bWxHZXRMaW5lTm8oKSBmcm9tCi0JICBLZWl0aCBJc2RhbGUKLQotTW9uIE5vdiAgNSAxNToyMDoxNiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogZG9oaGhoIFhNTCBjYXRhbG9nIGFkZCBhbmQgcmVtb3ZlIG9wcyB3ZXJlIGJyb2tlbiB0b28uCi0JICBTaWRlIGVmZmVjdCBvZiB0aGUgcHJvZ3Jlc3NpdmUgY2F0YWxvZyBsb2FkaW5nCi0KLU1vbiBOb3YgIDUgMTI6NDA6NTQgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogY29uZmV4ZWNkaXIgYW5kIGNvbmZleGVjX0RBVEEgd2VyZSBkZWZpbmVkIHR3aWNlCi0JICBwb2ludGVkIG91dCBieSBLYXJsIEVpY2h3YWxkZXIKLQotU3VuIE5vdiAgNCAyMzoxODozNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGNhdGFsb2cuYzogYXZvaWQgdW5saW5rKCkgYW5kIHVzZSByZW1vdmUoKSBpbnN0ZWFkLgotCi1TdW4gTm92ICA0IDIzOjEyOjM4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLnNwZWMuaW46IGNsZWFudXAKLQkqIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oOiB1cGRhdGVkIHdpdGggMi40LjgKLQotU3VuIE5vdiAgNCAyMToxNzoyNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVuY29kaW5nLmMgZ2xvYmFsLmRhdGEgZ2xvYmFscy5jIHRlc3RUaHJlYWRzLmM6IGZpeCBidWcgIzYzNzUyCi0JICBvZiBjb21waWxpbmcgbGlieG1sIHdpdGggYSBub24gc3RhbmRhcmQgc2V0IG9mIG9wdGlvbnMKLQotU3VuIE5vdiAgNCAxMzoxMTo0MSBNU1QgMjAwMSBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0Ci0KLQkqIGRvYy94bWxsaW50LnhtbCwgeG1sbGludC4xIC0gdXBkYXRpbmcgeG1sbGludCBtYW4gcGFnZSB0bwotCWRvY3VtZW50IC0tc2dtbCBvcHRpb24sIGZpeGluZyBnbm9tZSBidWd6aWxsYSAjNjMzODIKLQotU3VuIE5vdiAgNCAyMDo1Njo1MyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL2NhdGFsb2cuaCBjYXRhbG9nLmM6IEZpeGVkIFNHTUwgY2F0YWxvZ3MKLQkgIGJyZWFrYWdlIG9mIDIuNC43LCBhZGRlZCBhIGNvdXBsZSBvZiByZWFsbHkgbmVlZGVkIEFQSXMKLQkgIGxpa2UgeG1sQ2F0YWxvZ0lzRW1wdHkoKSBhbmQgeG1sTmV3Q2F0YWxvZygpCi0JKiB4bWxjYXRhbG9nLmM6IHVwZGF0ZWQgLS1zZ21sIC0tbm9vdXQgdG8gYmUgYSBzdWl0YWJsZSByZXBsYWNlbWVudAotCSAgZm9yIGluc3RhbGwtY2F0YWxvZwotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgMi40LjgKLQotVGh1IE5vdiAgMSAxNToyOTozMSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUx0cmVlLmMgdHJlZS5jIGluY2x1ZGUvbGlieG1sL0hUTUx0cmVlLmgKLQkgIGluY2x1ZGUvbGlieG1sL3RyZWUuaCBpbmNsdWRlL2xpYnhtbC94bWxJTy5oOiBtb3JlIGluY2x1ZGUKLQkgIGNsZWFudXBzLCBleHBvcnQgY2xlYW5seSBvbmUgaHRtbCBvdXRwdXQgKyBmb3JtYXQgZnVuY3Rpb24uCi0KLVRodSBOb3YgIDEgMTQ6MTI6MTIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogcmVtb3ZlZCBpbml0R2VuZXJpY0Vycm9yRGVmYXVsdEZ1bmMgY2FsbCBmcm9tCi0JICB4bWxJbml0UGFyc2VyKCkgc2luY2UgaXQgY291bGQgZGVzdHJveSBwcmV2aW91cyBjYWxscyB0bwotCSAgeHNsdFNldEdlbmVyaWNFcnJvckZ1bmMoKSBlZmZlY3RzCi0KLVRodSBOb3YgIDEgMDk6Mzc6MTMgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkZWJ1Z1hNTC5jIGluY2x1ZGUvbGlieG1sL2RlYnVnWE1MLmg6IGJvb2wgY2FuIGJlIGEgcmVzZXJ2ZWQKLQkgIGtleXdvcmQuCi0KLVdlZCBPY3QgMzEgMTg6NTA6MDggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbTogY2xlYW51cAotCSogdGhyZWFkcy5jOiBjbGVhbnVwIHRvbwotCSogeG1sSU8uYyBpbmNsdWRlL2xpYnhtbC94bWxJTy5oOiBhZGRlZCB4bWxOb05ldEV4dGVybmFsRW50aXR5TG9hZGVyKCkKLQkgIGZyb20geHNsdHByb2MKLQkqIGluY2x1ZGUvbGlieG1sL3RyZWUuaCBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogdHJ5aW5nIHRvIGJyZWFrIGEKLQkgIGRlcGVuZGVuY3kgbG9vcC4KLQotVHVlIE9jdCAzMCAxODozODo1MyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogSnVzdGluIEZsZXRjaGVyIHBvaW50ZWQgb3V0IHRoYXQgeG1sUGFyc2VYTUxDYXRhbG9nCi0JICB3YXMgbm90IHVzZWQgYW55bW9yZSAhCi0KLVR1ZSBPY3QgMzAgMTM6MzM6MTMgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyAyLjQuNwotCSogTWFrZWZpbGUuYW0gZG9jL01ha2VmaWxlLmFtOiBzd2l0Y2hlZCB0byB0aGUgbGF0ZXN0IHhtbGxpbnQKLQkgIG1hbnVhbCBwYWdlIGZyb20gSm9obgotCSogZG9jLyo6IHVwZGF0ZWQgdGhlIGRvYyBhbmQgcmVidWlsdCB0aGUgZ2VuZXJhdGVkIHBhZ2VzCi0KLVR1ZSBPY3QgMzAgMTE6MzE6MTkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiBjbG9zaW5nIGJ1ZyAjNjI3MTEsIHRoZSBsaWJyYXJ5IHNob3VsZCBuZXZlcgotCSAgY2xvc2Ugc3RkaW4gb3Igc3Rkb3V0LgotCi1UdWUgT2N0IDMwIDEwOjQ2OjEyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmM6IHNlY29uZCBwYXNzIGF0IGZpeGluZyAjNjMzMzYsIHVzaW5nIEpvZWwgWW91bmcKLQkgIGZpbmFsIHBhdGNoLiBsb29rcyBva2F5LgotCi1UdWUgT2N0IDMwIDAwOjU2OjA1IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdXJpLmMgaW5jbHVkZS9saWJ4bWwvdXJpLmg6IHRyeWluZyB0byBjbGVhciAjNjMzMzYKLQkgIGFsbG93aW5nIHRoZSBlc2NhcGluZyByb3V0aW5lIHRvIHBhcnNlIHVuY29uZm9ybWFudAotCSAgVVJJLVJlZmVyZW5jZXMuCi0KLU1vbiBPY3QgMjkgMTk6MDk6NDYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB2bXMvcmVhZG1lLnZtcyB2bXMvYnVpbGRfbGlieG1sLmNvbSBuYW5vZnRwLmMgCi0JICBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW46IGEgZmV3IFZNUyB1cGRhdGVzIGZyb20KLQkgIEpvaG4gQSBGb3RoZXJpbmdoYW0KLQkqIGluY2x1ZGUvbGlieG1sL3htbElPLmggeG1sSU8uYzogYWRkZWQgeG1sQ2xlYW51cElucHV0Q2FsbGJhY2tzKCkKLQkgIGFuZCB4bWxDbGVhbnVwT3V0cHV0Q2FsbGJhY2tzKCkgZm9yIHRoZSBQZXJsIGJpbmRpbmcgcGVvcGxlLgotCi1Nb24gT2N0IDI5IDEyOjQ0OjE3IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgZ2xvYmFscy5jIERPQ0JwYXJzZXIuYyBIVE1McGFyc2VyLmMgZXJyb3IuYzoKLQkgIGFwcGx5IGZpeGVzIHRvIGNsb3NlICM2MzI3MSBhbmQgYXZvaWQgc2VnZmF1bHRzIHdoZW4KLQkgIHRoZSBlcnJvciByb3V0aW5lIGdldHMgY2FsbGJlZCBiZWZvcmUgeG1sSW5pdFBhcnNlcigpCi0JICBnZXQgY2FsbGVkLgotCSogbmFub2Z0cC5jIGVycm9yLmM6IEFwcGxpZWQgcGF0Y2hlcyBmcm9tIEp1c3RpbiBGbGV0Y2hlcgotCSAgY29ycmVjdGluZyBzb21lIHhtbEdlbmVyaWNFcnJvciBtaXN1c2VzLgotCi1TYXQgT2N0IDI3IDE0OjA0OjQ1IE1EVCAyMDAxIEpvaG4gRmxlY2sgPGpmbGVja0BpbmtzdGFpbi5uZXQ+Ci0KLQkqZG9jL3htbGxpbnQueG1sLCBkb2MveG1sbGludC4xCi0JTmV3IGFuZCBpbXByb3ZlZCBtYW4gcGFnZSBmb3IgeG1sbGludCAtIC54bWwgaXMgdGhlIG9yaWdpbmFsLCAuMQotCWlzIHRoZSBnZW5lcmF0ZWQgbWFuIHBhZ2UKLQotV2VkIE9jdCAyNCAxNDozNDoyNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2Mvc2l0ZS54c2wgZG9jLyouaHRtbCBkb2MvTWFrZWZpbGUuYW06IG5vdyBhdXRvZ2VuZXJhdGUKLQkgIHRoZSB3ZWIgc2l0ZSBmcm9tIHRoZSBtYWluIEhUTUwgZG9jdW1lbnQuCi0KLVR1ZSBPY3QgMjMgMTQ6MzI6MDQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGFuIGVycm9uZW91cyB2YWxpZGF0aW9uIGJ1ZyB3aGVuIFBFIHJlZnMKLQkgIG9jY3VycyBpbiBleHRlcm5hbCBwYXJzZWQgZW50aXRpZXMgcmVmZXJlbmNlZCBmcm9tIHRoZQotCSAgaW50ZXJuYWxzIHN1YnNldAotCSogdGVzdC92YWxpZC9pbmRleC54bWwgdGVzdC92YWxpZC9kdGRzL25pdGYtMi01LmR0ZAotCSAgdGVzdC92YWxpZC9kdGRzL05ld3NNTHYxLjAuZHRkIHJlc3VsdC92YWxpZC9pbmRleC54bWwqOgotCSAgYWRkZWQgdGhlIGFzc29jaWF0ZWQgdGVzdGNhc2UsIGl0J3MgYSBuaWNlIG9uZS4KLQkqIEhUTUxwYXJzZXIuYzogZ2VuZXJhdGUgdGhlIERURCBub2RlIGFzIEhUTUwgc3RpbGwgLi4uCi0JKiBIVE1MdHJlZS5jOiBmaXhlZCBlcnJvcnMgaW4gU2V0L0dldE1ldGFFbmNvZGluZyAKLQotTW9uIE9jdCAyMiAxNDoyMDoxNyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIGEgYnVnIGluIGh0bWxOZXdEb2MoKQotCi1Nb24gT2N0IDIyIDExOjMyOjM2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHRlc3QvdGhyZWFkcy8qOiBhZGRlZCBlbnRpdGllcyB0ZXN0aW5nIHRvIHRoZSBUaHJlYWQgdGVzdAotCSogdGVzdFRocmVhZHMuYzogbWFrZSB0aGUgdGVzdCByZWFzb25hYmxlCi0JKiBET0NCcGFyc2VyLmM6IGZpeCB0aGUgRFREIHB1YmxpYyBhbmQgc3lzdGVtIElECi0JKiB4bWxsaW50LmM6IGFkZGVkIC0tc2dtbCBmb3IgU0dNTCBEb2NCb29rIGltcG9ydGluZwotCSogTWFrZWZpbGUuYW06IGFkZGVkIERvY2J0ZXN0cyB0YXJnZXQKLQotRnJpIE9jdCAxOSAxMTo0NzoxMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBuYW5vZnRwLmM6IHVzZSBvbmx5ICJhbm9ueW1vdXNAIiBzdHJpbmcgZm9yIGFub255bW91cyBwYXNzd2RzCi0JKiB0ZXN0VGhyZWFkcy5jOiByZW1vdmVkIGJvZ3VzIGluY2x1ZGUKLQotVGh1IE9jdCAxOCAxNjo1NjoyMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyB2YWxpZC5jIHJlc3VsdC92YWxpZC9yc3MueG1sIHJlc3VsdC92YWxpZC9yc3MueG1sLmVycjoKLQkgIGZpeGVkIGEgdmVyeSBzZXJpb3VzIChsb29waW5nKSB2YWxpZGF0aW9uIGJ1ZwotCi1XZWQgT2N0IDE3IDExOjU2OjI1IEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvZ2xvYmFscy5oIGluY2x1ZGUvbGlieG1sL3RocmVhZHMuaCB0aHJlYWRzLmMKLQkgIHRlc3RUaHJlYWRzLmM6IGZhciBtb3JlIHRlc3RpbmcsIGNsZWFuaW5nIHVwIGJ1Z3MKLQkqICouYyA6IG1ha2Ugc3VyZSBnbG9iYWxzLmggaXMgYWx3YXlzIGluY2x1ZGVkLgotCi1XZWQgT2N0IDE3IDE3OjQxOjQxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIEhUTUxwYXJzZXIuYzogdHJ5IHRvIGdldCByaWQgb2YgcGFyc2VyIGxvb3BzIGZvciBnb29kLgotCi1XZWQgT2N0IDE3IDEzOjI5OjAyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogZml4ZWQgc29tZSBidWdzIGluIENGTEFHUyBwYXNzaW5nLgotCSogdGVzdC90aHJlYWRzIE1ha2VmaWxlLmFtIHRlc3RUaHJlYWRzLmM6IGFkZGVkIGEgc3BlY2lmaWMKLQkgIHRocmVhZGVkIHRlc3QgY2FzZSAocmVhbGx5IG5hc3R5LCBndWFyYW50ZWVkKS4KLQotVHVlIE9jdCAxNiAyMzowMTo0OSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IHNlcmlvdXMgY2xlYW51cCBvbiB0aGUgbWFuYWdlbWVudCBvZiB0aGUKLQkgIFhNTCBjYXRhbG9nIHRyZWUsIG1vcmUgdGVzdHMgZG9uZSwgZXNwZWNpYWxseSB3aXRoCi0JICB0aGUgY2F0YWxvZyBQSS4KLQotVHVlIE9jdCAxNiAwODo0Mzo0MyBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogYXZvaWQgYSBwcm9ibGVtIGluIGNhdGFsb2cgY2xlYW51cCBvbiBTTVAgaWYKLQkgIGNhdGFsb2dzIHdlcmUgbm90IGluaXRpYWxpemVkLgotCi1UdWUgT2N0IDE2IDE0OjMzOjE5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYyB4cGF0aC5jOiB0cnlpbmcgdG8gY2xlYW51cCB0aGUgbm90IHRocmVhZCBzYWZlCi0JICBwYXJ0cyBvZiB0aGUgbGlicmFyeS4KLQotTW9uIE9jdCAxNSAxNDozMDoxMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggY29uZmlndXJlLmluIGdsb2JhbC5kYXRhOiBtYWtlCi0JICB0aGUgYWxsb2NhdGlvbiBiZSBwZXItdGhyZWFkIGEgY29uZmlndXJlIG9wdGlvbgotCSogZW5jb2RpbmcuYyBpbmNsdWRlL2xpYnhtbC9wYXJzZXIuaDogZml4ZWQgY29tcGlsYXRpb24KLQkgIGVycm9ycwotCi1Nb24gT2N0IDE1IDEyOjQ1OjAzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBOb3JtIHJlcG9ydGVkIHRoYXQgYSBmZXcgbGluZXMKLQkgIGFkZGVkIHdlcmUgYnJlYWtpbmcgbGlieHNsdCBjb21waWxlLCByZW1vdmVkIHRoZW0gZm9yIG5vdwotCi1TdW4gT2N0IDE0IDA1OjU1OjAxIEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmMgdGhyZWFkcy5jOiBkZWJ1Z2dlZCBhbmQgZml4ZWQKLQkgIGluaXRpYWxpemF0aW9uIHByb2JsZW1zIHdoaWNoIHdlcmUgZ2l2aW5nIHRyb3VibGVzIG9uIFNNUAotCSAgYm94ZXMuCi0KLVNhdCBPY3QgMTMgMTY6MTc6MTMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06IG1pc3NpbmcgZ2xvYmFscy5oCi0KLVNhdCBPY3QgMTMgMTQ6MTU6MDAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZ2xvYmFscy5jOiBhZGRlZCBhIGNvdXBsZSBvZiBzdGFuZGFyZCBpbmNsdWRlcy4KLQotU2F0IE9jdCAxMyAxMTowODoyMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9TQVguaCBpbmNsdWRlL2xpYnhtbC9nbG9iYWxzLmggaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmgKLQkgIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL3RyZWUuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBIVE1McGFyc2VyLmMgU0FYLmMgZXJyb3IuYyBnbG9iYWxzLmMKLQkgIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jIHRlc3REb2Nib29rLmMKLQkgIHRlc3RIVE1MLmMgdGVzdFNBWC5jIHRyZWUuYyB1cmkuYyB4bGluay5jIHhtbG1lbW9yeS5jOgotCSAgQXBwbGllZCB0aGUgbGFzdCBwYXRjaGVzIGZyb20gR2FyeSwgY2xlYW51cCwgYWN0aXZhdGVkIHRocmVhZGluZwotCSAgYWxsIHVzZXIgYWNjZXNzaWJsZSBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3cgaGFuZGxlZCBpbiBnbG9iYWxzLltjaF0KLQkgIFN0aWxsIGEgYml0IHJvdWdodCBidXQgbWFrZSB0ZXN0cyBwYXNzZXMgd2l0aCBlaXRoZXIgCi0JICAtLXdpdGgtdGhyZWFkcyBkZWZpbmVkIGF0IGNvbmZpZ3VyZSB0aW1lIG9yIG5vdC4KLQkqIE1ha2VmaWxlLmFtIGV4YW1wbGUvTWFrZWZpbGUuYW06IGFkZGVkIGdsb2JhbHMuW2NoXSBhbmQgdGhyZWFkcwotCSAgbGlua2luZyBvcHRpb25zCi0KLUZyaSBPY3QgMTIgMTk6MjU6NTUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0KLQkgIGluY2x1ZGUvbGlieG1sL2dsb2JhbHMuaCBnbG9iYWxzLmMgIGluY2x1ZGUvbGlieG1sL3RocmVhZHMuaAotCSAgdGhyZWFkcy5jIGJ1aWxkX2dsb2IucHkgZ2xvYmFsLmRhdGEgeG1sY2F0YWxvZy5jIGFjY29uZmlnLmgKLQkgIGNvbmZpZ3VyZS5pbjogc3RhcnRlZCBpbnRlZ3JhdGluZyB0aGUgY29yZSBvZiB0aGUgdGhyZWFkIHN1cHBvcnQKLQkgIG5vdCBhY3RpdmF0ZWQgeWV0IGJ1dCBoYWxmIGludGVncmF0ZWQuIFRoZSBjb2RlIHNob3VsZCBzdGlsbAotCSAgY29tcGlsZSBhbmQgd29yayBhbnl3YXkuCi0KLUZyaSBPY3QgMTIgMDA6NTM6MDMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHRyZWUuYyBjYXRhbG9nLmMgZGVidWdYTUwuYyBlbnRpdGllcy5jIG5hbm9mdHAuYwotCSAgcGFyc2VyLmMgdmFsaWQuYyB4bWxtZW1vcnkuYyB4cGF0aC5jIHhwb2ludGVyLmM6IHN0YXJ0ZWQKLQkgIGludGVncmF0aW5nIHRoZSBub24tY29udHJvdmVyc2lhbCBwYXJ0cyBvZiBHYXJ5IFBlbm5pbmd0b24KLQkgIG11bHRpdGhyZWFkIHBhdGNoZXMKLQkqIGNhdGFsb2cuYzogY29ycmVjdGVkIGEgc21hbGwgYnVnIGludHJvZHVjZWQKLQotVGh1IE9jdCAxMSAyMDo1ODoxNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmMgaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oOiB2ZXJ5IHNlcmlvdXMgY2xlYW51cCwKLQkgIGlzb2xhdGluZyB1bnBvcnRhYmxlIGNvZGUgYW5kIGFzIG11Y2ggYXMgcG9zc2libGUgdGhlIGFjY2Vzc2VzCi0JICB0byB0aGUgZ2xvYmFsIHNoYXJlZCBjYXRhbG9nLiBNYXkgbmVlZCBtb3JlIHRlc3RpbmcgIQotCi1UaHUgT2N0IDExIDExOjEwOjMxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL2RlYnVnWE1MLmggZGVidWdYTUwuYyB0cmVlLmM6IGludGVncmF0aW5nCi0JICBLZWl0aCBJc2RhbGUgcGF0Y2hlcyBmb3IgdGhlIFhTTFQgZGVidWdnZXIgaW50ZXJmYWNlcy4gU29tZQotCSAgY2xlYW51cAotCi1UaHUgT2N0IDExIDA4OjQ0OjAxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL01ha2VmaWxlLm1pbmd3OiB1cGRhdGUgZnJvbSBUb2JpYXMgUGV0ZXJzIGZvciAyLjQuNQotCSogRE9DQnBhcnNlci5jOiBnZW5lcmF0ZSBsaW5lIG51YmVycyBpbiBlbGVtZW50cwotCi1XZWQgT2N0IDEwIDExOjM1OjQ1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIDIuNC42IHJlbGVhc2UKLQkqIGRvYy94bWwuaHRtbCBkb2MvaHRtbC8qOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2NzCi0JKiBpbmNsdWRlL2xpYnhtbC8qLmggKi5jOiBmaXhlZCBhIG51bWJlciBvZiB0ZWgvdGhlIHdpZGh0L3dpZHRoIHR5cG9zCi0KLU1vbiBPY3QgIDggMjA6Mzg6MjcgTURUIDIwMDEgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGNhdGFsb2dfbWFuLnhtbCwgeG1sY2F0YWxvZy4xLCB4bWxjYXRhbG9nX21hbi5odG1sCi0JYWRkaW5nIGRvY3VtZW50YXRpb24gZm9yIERWJ3Mgc3VwZXJjYXRhbG9nIHN1cHBvcnQKLQotTW9uIE9jdCAgOCAxNzowMDoxNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9jYXRhbG9nLmggY2F0YWxvZy5jIHhtbGNhdGFsb2cuYzogYWRkaW5nIFNHTUwKLQkgIHN1cGVyIGNhdGFsb2cgc3VwcG9ydCBhZGRpbmcgb25lIEFQSSBhbmQgb25lIGZsYWcgLS1zZ21sIHRvCi0JICB4bWxjYXRhbG9nCi0KLVN1biBPY3QgIDcgMTY6NDM6NTcgTURUIDIwMDEgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGNhdGFsb2dfbWFuLnhtbCwgeG1sY2F0YWxvZy4xCi0JT25lIG1vcmUgY3JhY2sgYXQKLQlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU0MzkyIAotCi1TdW4gT2N0ICA3IDE4OjQ3OjAyIENFU1QgMjAwMSBUaG9tYXMgQnJveWVyIDx0YnJveWVyQGx0Z3QubmV0PgotCi0JKiB4cGF0aC5jOiBpbXBsZW1lbnRlZCB4bWxYUGF0aE9iamVjdENvcHkgZm9yIGV4dGVybmFsIG9iamVjdHMKLQkqIGluY2x1ZGUvbGlieG1sL3hwYXRoSW50ZXJuYWxzLmg6IGFkZGVkIHhtbFhQYXRoU3RhY2tJc0V4dGVybmFsCi0KLVNhdCBPY3QgIDYgMTY6MjU6NTIgTURUIDIwMDEgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSpkb2MveG1sY2F0YWxvZ19tYW4ueG1sLCB4bWxjYXRhbG9nX21hbi5odG1sLCB4bWxjYXRhbG9nLjEKLQlmaW5pc2hpbmcgdXAgZml4IHRvCi0JaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NDM5MiwgbWFraW5nCi0JdGhlIHhtbGNhdGFsb2cgbWFuIHBhZ2UgZGlzcGxheSBtb3JlIGVsZWdhbnRseQotCi1TYXQgT2N0ICA2IDE1OjI3OjEyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogY2xvc2luZyBidWcgIzYxODMyCi0JKiBIVE1McGFyc2VyLmM6IHJlbW92ZWQgYSB3YXJuaW5nCi0KLVNhdCBPY3QgIDYgMTU6MDc6MTQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogZml4aW5nICM2MTY3MyBwYXJ0IEksIGRvIG5vdCBsb29zZSBkb2MgaW5mb3JtYXRpb24KLQkgIHdoZW4gY29weWluZyByZXN1bHQgdmFsdWUgdHJlZXMuCi0KLVNhdCBPY3QgIDYgMTE6NTg6NTggQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogdHJ5aW5nIHRvIGhhcmRlbiB0aGUgWFBhdGggaW50ZXJwcmV0ZXIKLQotRnJpIE9jdCAgNSAyMDozNzo1MSBNRFQgMjAwMSBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiBkb2MveG1sY2F0YWxvZy4xIHVwZGF0ZWQgdXNpbmcgYSBuZXcgc3R5bGVzaGVldCB0byBhZGRyZXNzLCBpbgotCXBhcnQsIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTQzOTIKLQotRnJpIE9jdCAgNSAyMzozNTowMCBIS1QgMjAwMSBXaWxsaWFtIEJyYWNrIDx3YnJhY2tAbW1tLmNvbS5oaz4KLQotCSogSFRNTHBhcnNlcjogcmVwYWlyZWQgYW5vdGhlciBsb29wIHByb2JsZW0KLQotRnJpIE9jdCAgNSAxMToxNjoyMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB1cmkuYzogYXBwbGllZCBmaXggZnJvbSBNYXRoaWFzIEhhc3NlbG1hbm4gYWJvdXQgYSBidWcgaW4gVVJJCi0JICBwYXJzaW5nLgotCSogeHBhdGguYzogZml4IGJ1ZyAjNjEyOTEgdGhlIGRlZmF1bHQgWE1MIG5hbWVzcGFjZSBub2RlIGlzCi0JICBtaXNzaW5nIGZyb20gdGhlIG5hbWVzcGFjZSBheGlzLgotCSogdHJlZS5jOiByZWZ1c2UgdG8gY3JlYXRlIG5hbWVzcGFjZXMgbm9kZXMgd2l0aCBwcmVmaXggInhtbCIKLQotVGh1IE9jdCAgNCAxNjo0Nzo0NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYzogb3VjaCBhIG5vbi1kZWZpbmVkIG5hbWVzcGFjZSBjb3VsZCBsZWFkIHRvIGEgY3Jhc2gsCi0JICBmaXhlZCAjNjEyMTUKLQotVGh1IE9jdCAgNCAxNjoyNDoyNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogY2xvc2VkIGJ1ZyAjNjEwNTQKLQotV2VkIE9jdCAgMyAxNToxOTowNCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbTogY2xvc2luZyAjNjA3MDgKLQotVHVlIE9jdCAgMiAxNTo1MjowNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9kc3AvbGlieG1sMi5kZWYuc3JjIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oIHBhcnNlci5jOgotCSAgYWRkaW5nIHhtbFNBWFBhcnNlRmlsZVdpdGhEYXRhIGZvbGxvd2luZyBNYXJjbyBTdGlwZWsgc3VnZ2VzdGlvbgotCi1UdWUgT2N0ICAyIDExOjI3OjU4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHZhbGlkLmM6IGNsb3NlIGJ1ZyAjNjE1NTAgd2hlbiB4bWw6IHdhc24ndCBjb25zaWRlcmVkIGEgbmFtZXNwYWNlCi0KLVR1ZSBPY3QgIDIgMTE6MTg6MzIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogd2luMzIvZHNwL2xpYnhtbDIuZGVmLnNyYzogSWdvciBabGF0a292aWMgcGF0Y2hlcwotCSogRE9DQnBhcnNlci5jIEhUTUxwYXJzZXIuYyBwYXJzZXIuYzogZml4ZWQgdHlwb3MKLQotTW9uIE9jdCAgMSAwOTozNDo1MSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IEp1c3RpbiBGbGV0Y2hlciBwcm92aWRlZCBjbGVhdXAgY29kZSBpbiBjYXNlCi0JICBIQVZFX1NUQVQgaXMgbm90IGRlZmluZWQKLQkqIGluY2x1ZGUvd2luMzJjb25maWcuaDogSWdvciBabGF0a292aWMgc3VnZ2VzdGVkIHRvIGhhdmUKLQkgIEhBVkVfU1RBVCBkZWZpbmVkIHRoZXJlCi0KLVNhdCBTZXAgMjkgMDA6MTU6MDAgSEtUIDIwMDEgV2lsbGlhbSBCcmFjayA8d2JyYWNrQG1tbS5jb20uaGs+Ci0KLQkqIGNhdGFsb2cuYyAtIGZpeGVkIHR5cGluZyBlcnJvciByZXBvcnRlZCBieSBNLiBCYXJyb3MKLQotU3VuIFNlcCAyMyAyMTowMjozOSBNRFQgMjAwMSBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKiB4bWxsaW50LmMgLSBmaXhpbmcgdHlwbwotCi1TYXQgU2VwIDIyIDEwOjAwOjAwIEhLVCAyMDAxIFdpbGxpYW0gQnJhY2sgPHdicmFja0BtbW0uY29tLmhrPgotCi0JKiBIVE1McGFyc2VyLmM6IHNtYWxsIGVuaGFuY2VtZW50IHRvIHByZXZlbnQgbG9vcCBvbgotCSAgdW5yZWNvZ25pemFibGUgZGF0YQotCi1GcmkgU2VwIDIxIDExOjQ1OjUzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHBhcnNlckludGVybmFscy5jOiBhcHBseWluZyBwYXRjaCBmcm9tIGJ1ZyAjNjA3NTcgdGhpcwotCSAgc2hvdWxkIGNsb3NlIGl0Ci0KLVRodSBTZXAgMjAgMTU6NTQ6MjkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY2F0YWxvZy5jIHhtbGNhdGFsb2cuYzogcmVtb3ZlZCBhIGNvdXBsZSBvZiB3YXJuaW5nCi0JKiB4cGF0aC5jOiB0cnkgdG8gc29sdmUgdGhlIGxpbmtpbmcgcHJvYmxlbSBvbiBwbGF0Zm9ybXMKLQkgIG5lZWRpbmcgdHJpbyB0byBjb21waWxlCi0KLVdlZCBTZXAgMTkgMTA6MDE6MzcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gbGlieG1sLnNwZWMuaW46IGJhY2tpbmcgdXAgbm9uLWRvY3VtZW50ZWQgY2hhbmdlcwotCSAgY29tbWl0ZWQgd2l0aG91dCByZXZpZXcgb3IgYXByb3ZhbCBieSBKZW5zIEZpbmtlIDxqZW5zQGdub21lLm9yZz4KLQkqIEhBQ0tJTkc6IG1hZGUgMTAwJSBjbGVhciB0aGF0IG5vIGNvbW1pdCBzaG91bGQgYmUgZG9uZSBkaXJlY3RseQotCi1Nb24gU2VwIDE3IDE4OjUyOjM3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogSm9lIE9ydG9uIHByb3ZpZGVkIGEgcGF0Y2ggZml4aW5nIGEgcHJvYmxlbQotCSAgd2hlbiBpY29udiBpcyBzcGVjaWZpZWQgdG8gYmUgaW4gYSBub24tc3RhbmRhcmQgZGlyZWN0b3J5Ci0JICBidXQgd2Fzbid0IGV4cG9ydGVkIGluIHhtbDItY29uZmlnIC0tY2ZsYWdzCi0KLUZyaSBTZXAgMTQgMTk6MzI6NDMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBsZXQncyBzaGlwIDIuNC41IGJlZm9yZSBnZXR0aW5nIHRvbyBtdWNoCi0JICB0cm91YmxlcyB3aXRoIDIuNC40IGVycm9ycy4KLQotRnJpIFNlcCAxNCAxMjoyNjo1OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBlbmNvZGluZy5jIGVudGl0aWVzLmM6IGRvIG5vdCBvdXRwdXQgaGV4YWRlY2ltYWwgY2hhcnJlZnMKLQkgIHdoZW4gc2VyaWFsaXppbmcgSFRNTCBzaW5jZSBzb21lIHZlcnNpb24gb2YgTmV0c2NhcGUgY2FuJ3QKLQkgIGdyb2sgaXQsIGdlbmVyYXRlIGRlY2ltYWwgb25lcy4KLQkqIHJlc3VsdC9IVE1ML2RvYzMuaHRtOiBvdXRwdXQgY2hhbmdlZCBkdWUgdG8gcHJldmlvdXMgdGVzdAotCSogcGFyc2VySW50ZXJuYWxzLmM6IHJlcGFpciB4bWxLZWVwQmxhbmtzRGVmYXVsdCgpIGJyb2tlbiBpbiAyLjQuNAotCi1UaHUgU2VwIDEzIDEzOjM0OjI3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC0yLjAucGMuaW46IGRvaGggZ2VuZXJhdGVkIHRoZSB3cm9uZyBpbmNsdWRlIHBhdGggOi0oCi0JKiBkb2MvTWFrZWZpbGUuYW0gbGlieG1sLnNwZWMuaW46IHJlLWRvaGggZm9yZ290IHRoZSBuZXcgbWFucGFnZSA6LSgKLQotV2VkIFNlcCAxMiAyMjoxNDo1NSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCVJlbGVhc2VkIDIuNC40Ci0KLQkqIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiBsaWJ4bWwuc3BlYy5pbiBpbmNsdWRlL2xpYnhtbC9NYWtlZmlsZS5hbQotCSAgbGlieG1sLTIuMC5wYy5pbjogbW92ZWQgaW5jbHVkZXMgdG8gaW5jbHVkZWRpci9saWJ4bWwyL2xpYnhtbCwKLQkgIHVwZGF0ZWQgdGhlIGNvbmZpZ3VyYXRpb24gc2NyaXB0cyBzeXN0ZW1zIGFjY29yZGluZ2x5Ci0KLVdlZCBTZXAgMTIgMjA6NDk6MzIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgZm9yIDIuNC40Ci0JKiBkb2MveG1sLmh0bWwgZG9jL2h0bWwvKjogdXBkYXRlZCBhbmQgcmVidWlsdCB0aGUgZG9jcwotCi1XZWQgU2VwIDEyIDE2OjU4OjE2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL2RzcC9saWJ4bWwyLmRlZi5zcmM6IHRyaWVkIHRvIGluY29ycG9yYXRlIGNvbW1lbnRzCi0JICBmcm9tIGJ1ZyAjNTkyMjAKLQotVHVlIFNlcCAxMSAxMToyNTozNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYyByZXN1bHQvbm9lbnQvd21sLnhtbDogZml4ZWQgYnVnICM1OTk4MSByZWxhdGVkCi0JICB0byBoYW5kbGluZyBvZiAnJicgaW4gYXR0cmlidXRlcyB3aGVuIGVudGl0aWVzIGFyZSBzdWJzdGl0dWVkCi0KLU1vbiBTZXAgMTAgMjI6MTQ6NDIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogbGlieG1sLmggaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi0JICBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaCBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjoKLQkgIFRyaWVkIHRvIGNsb3NlIGJ1ZyAjNjAxMzEKLQotTW9uIFNlcCAxMCAyMDo0NjowMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYzogZml4ZWQgYSBidWcgaW4gdGhlIEhUTUwgcGFyc2VyIGludHJvZHVjZWQgU2VwICA5Ci0KLU1vbiBTZXAgMTAgMjA6MTM6MDkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IGZpeGluZyBidWcgIzU5OTQ2IG9uIHhtbG5zPSIiCi0KLU1vbiBTZXAgMTAgMTY6Mzk6NDIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sZXJyb3IuaCBTQVguYzogZml4aW5nIGJ1ZyA1OTczMiwgc2ltcGxlCi0JICBidXQgYWxsb2NhdGVzIGEgbmV3IGVycm9yIGNvZGUuCi0KLVN1biBTZXAgIDkgMTA6MzM6MTUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBKb2huIEZsZWNrIGZpeGVkIHR5cG9zIGluIHRoZSBvcHRpb25zIG91dHB1dAotCSogcGFyc2VyLmMgU0FYLmM6IGZpeCBpZ25vcmFibGUgd2hpdGUgc3BhY2UgU0FYIHNlbGVjdGlvbgotCi1TYXQgU2VwICA4IDExOjQzOjUzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGVudGl0aWVzLmM6IFN0ZXZlIFVuZGVyd29vZCBmb3VuZCB0aGUgcG9zc2liaWxpdHkgb2YgYW4KLQkgIGluaW5pdGUgbG9vcCBpbiBjYXNlIG9mIGVycm9yLgotCi1GcmkgU2VwICA3IDExOjM1OjAwIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtOiBOZWVkICQoSUNPTlZfTElCUykgaW4gbGlieG1sMl9sYV9MSUJBREQKLQotV2VkIFNlcCAgNSAxNzo0Nzo0MyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBwYXJzZXIuYzogd2FybiBpZiB2ZXJzaW9uIGlzIG5vdCAxLjAgYnV0IGl0J3Mgbm90Ci0JICBzdHJpY3RseSBzcGVha2luZyBhbiBlcnJvciBhZnRlciBhbmFseXppbmcgdGhlIHNwZWMKLQotTW9uIFNlcCAgMyAxMDowNzowMyBNRFQgMjAwMSBKb2huIEZsZWNrIDxqZmxlY2tAaW5rc3RhaW4ubmV0PgotCi0JKmRvYy9jYXRhbG9nLmh0bWwgLSBhZGQgbGluayB0byB0aGUgaHRtbCB2ZXJzaW9uIG9mIHRoZQotCW1hbiBwYWdlLCBvdGhlciBsaW5ndWlzdGljIGNsZWFudXBzCi0KLU1vbiBTZXAgIDMgMDk6MTA6MDggTURUIDIwMDEgSm9obiBGbGVjayA8amZsZWNrQGlua3N0YWluLm5ldD4KLQotCSogZG9jL3htbGNhdGFsb2dfbWFuLnhtbCwgeG1sY2F0YWxvZ19tYW4uaHRtbCwgeG1sY2F0YWxvZy4xCi0JYWRkaW5nIGRvY3VtZW50YXRpb24gZm9yIHhtbGNhdGFsb2cuIE5vdGU6IHhtbGNhdGFsb2cuMSwgdGhlIG1hbgotCWZpbGUsIGhhcyBub3QgeWV0IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLgotCi1TYXQgU2VwICAxIDE4OjE3OjQ3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNhdGFsb2cuYzogcmVtb3ZlZCBhIGR1cGxpY2F0ZSBhZmZlY3RhdGlvbiBKdXN0aW4gRmxldGNoZXIKLQotRnJpIEF1ZyAzMSAyMjowMjoxMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0cmVlLmM6IEFybWluIFNhbmRlciBwb2ludGVkIGEgcG9zc2libGUgdGV4dCBjb2FsZXNjaW5nIAotCSAgcHJvYmxlbSwgY29tcGxldGVkIGhpcyBwYXRjaC4KLQotRnJpIEF1ZyAzMSAxODozMDoyOCBDRVNUIDIwMDEgQmpvcm4gUmVlc2UgPGJyZWVzZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLQkqIHRyaW9uYW4uYzogRml4ZWQgY29uc3QgYW5kIHZvbGF0aWxlIHJlLWRlZmluaXRpb24gcHJvYmxlbQotCi1GcmkgQXVnIDMxIDE2OjUxOjI4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC40IHBhcnNlci5jOiBkb2MgdXBkYXRlcyBmcm9tIEhlaWtvIFJ1cHAKLQkqIHBhcnNlckludGVybmFscy5jOiAyIHNhbml0eSBjaGVja3MgZnJvbSBIZWlrbyBSdXBwCi0KLVR1ZSBBdWcgMjggMjI6Mzg6NDUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdHJlZS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gQXJtaW4gU2FuZGVyIHRvIG1ha2Ugc29tZSBwb2ludGVycwotCSAgY29uc3QgaW4geG1sQ29weU5vZGUoKQotCSogaW5jbHVkZS9saWJ4bWwvdHJlZS5oOiBhZGRlZCBmaXggdG8gdGhlIGhlYWRlcgotCi1Nb24gQXVnIDI3IDE2OjI0OjQ3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhwYXRoLmM6IGh1bSwgcmVzdHJpY3QgdGhlIGludGVnZXIgdXNhZ2UgZ2NjIGJ1ZyB3b3JrYXJvdW5kCi0JICB0byBvbmx5IGdjYyBjb21waWxlcnMgc28gdGhhdCBvdGhlciBhcmNoaXRlY3R1cmUgZG9uJ3QgZ2V0Ci0JICBwZW5hbGl6ZWQgYnkgdGhpcyBsaW1pdGF0aW9uLgotCSogaW5jbHVkZS9saWJ4bWwveHBhdGguaDogc21hbGwgdHlwbyBmaXggZnJvbSBIZWlrbyBXLiBSdXBwCi0KLVN1biBBdWcgMjYgMjA6NDU6MDQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogdmFsaWQuYzogZml4ZWQgYSBXaW5kb3dzIGNvbXBpbGVyIHdhcm5pbmcgKENocmlzIFBvYmxldGUpCi0JKiB4cGF0aC5jOiBmaXggZm9yIG1vZCB3aGVuIGRpdmlkZW5kIGlzIDAgKENocmlzIFBvYmxldGUpCi0KLVNhdCBBdWcgMjUgMTU6MzA6MTcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oIGNhdGFsb2cuYyB4bWxjYXRhbG9nLmM6IGFkZGVkIGEgCi0JICAtLWNvbnZlcnQgb3B0aW9uIHRvIHhtbGNhdGFsb2cgdG8gY29udmVydCBTR01MIG9uZXMgdG8KLQkgIHRoZSBYTUwgc3ludGF4LgotCSogeG1sbGludC5jOiBzbWFsbCBjbGVhbnVwIGZvciAkU0dNTF9DQVRBTE9HX0ZJTEVTIHN1cHBvcnQuCi0KLQkyLjQuMyBnb3QgcmVsZWFzZWQgYXQgdGhhdCBwb2ludAotVGh1IEF1ZyAyMyAyMzoxNjozMiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmMgeG1sSU8uYzogc3RhcnRlZCBzb21lIHNlcmlvdXMgdGVzdGluZyBhbmQgZml4ZWQKLQkgIGEgZmV3IGJ1ZyBhbmQgb3B0bWl6YXRpb24gbmVlZHMuCi0KLVRodSBBdWcgMjMgMTc6MjY6NTggQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oOgotCSAgcHJlcGFyaW5nIGZvciBhIDIuNC4zIHJlbGVhc2UgZXZlbiBpZiBpdCBtYXkgbm90IGJlIHJlYWR5IHlldAotCSogY2F0YWxvZy5jIHBhcnNlci5jIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oOiByZWRpcmVjdGVkCi0JICBhbGwgZmlsZSBwYXJzaW5nIGxvb2t1cCB0byBnbyB0aHJvdWdoIHRoZSBlbnRpdHkgcmVzb2x2ZXIsIGFkZAotCSAgdG8gYWRkIGFuIEFQSSB0byBieXBhc3MgaXQgKG5lZWRlZCB0byBsb2FkIGNhdGFsb2dzIHRoZW1zZWx2ZXMpLAotCSAgc29tZSBjbGVhbnVwIG9uIHRoZSBjYXRhbG9nIGNvZGUgdG9vLgotCSogbmFub2Z0cC5jOiBzbWFsbCBjbGVhbnVwCi0JKiBkb2MvY2F0YWxvZy5odG1sOiBzbWFsbCB1cGRhdGUKLQotVGh1IEF1ZyAyMyAxMjoyMjoyNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IGZpeGVkIGJ1Z2kgIzU5NDA2IGluIFNHTUwgY2F0YWxvZyBwYXJzaW5nIHJlcG9ydGVkIGJ5Ci0JICBKdW4gS3VyaXlhbWEKLQotVGh1IEF1ZyAyMyAwMjo1MToyOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBkb2MvY2F0YWxvZy5odG1sOiBmaW5pc2hlZCB0aGUgY2F0YWxvZyBkb2N1bWVudGF0aW9uCi0KLVRodSBBdWcgMjMgMDE6Mzg6NDIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogZG9jL2NhdGFsb2cuaHRtbCBkb2MveG1sLmh0bWw6IGFkZGVkIGRvY3VtZW50YXRpb24gYWJvdXQKLQkgIENhdGFsb2cgc3VwcG9ydCwgbWlzc2VzIGFuIEFQSSBkZXNjcmlwdGlvbiAKLQkqIGRvYy9odG1sLyo6IHJlZXh0cmFjdGVkIHRoZSBBUEkgcGFnZXMKLQotV2VkIEF1ZyAyMiAxODoyNzo0NyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9jYXRhbG9nLmggY2F0YWxvZy5jIHhtbElPLmMgSFRNTHBhcnNlci5jOgotCSAgQWRkZWQgdGhlIHBhcnQgYWJvdXQgc2VjdGlvbiA3LjIgb24gVVJJIHJlc29sdXRpb24sCi0JICBmaXhlZCBhIHNpZGUgZWZmZWN0IGluIHRoZSBIVE1MIHBhcnNlciwgbG9vayBjb21wbGV0ZQotCSAgYW5kIHJlYWR5IHRvIHJvY2sgZXhjZXB0IHRoZSBVUkkvU3lzdGVtSUQgcGFydCEKLQotV2VkIEF1ZyAyMiAxNjoyNzowMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC9jYXRhbG9nLmggaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmgKLQkgIGluY2x1ZGUvbGlieG1sL3htbGVycm9yLmggY2F0YWxvZy5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jCi0JICB4bWxJTy5jOiBhZGRlZCBzdXBwb3J0IGFuZCBBUElzIG5lZWRlZCBmb3IgdGhlIGNhdGFsb2cgUEkKLQkqIGluY2x1ZGUvbGlieG1sL3htbElPLmg6IGNsZWFudXAKLQotV2VkIEF1ZyAyMiAwMjowMzozMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmMgcGFyc2VyLmMgeG1sSU8uYyB4bWxjYXRhbG9nLmMgeG1sbGludC5jIAotCSAgaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oOiBzdGFydHMgdG8gbG9vayBva2F5LCByZWFsbHkKLQkgIHBsdWdnZWQgdGhlIG5ldyBmcmFtZXdvcmssIGNsZWFuZWQgYSBsb3Qgb2Ygc3R1ZmYsCi0JICBhZGRlZCBzb21lIEFQSXMsIGV4Y2VwdCB0aGUgUEkncyBzdXBwb3J0IG1pc3NpbmcgdGhpcwotCSAgc2hvdWxkIGJlIG1vc3RseSBjb21wbGV0ZQotCSogcmVzdWx0L2NhdGFsb2dzLyogdGVzdC9jYXRhbG9ncy8qOiBhZGRlZCBuZXcgdGVzdCwgZW5yaWNoZWQKLQkgIHRoZSBleGlzdGluZyBvbmUgd2l0aCBVUk4gSUQgdGVzdHMKLQotVHVlIEF1ZyAyMSAxNDo1NjoxOCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBjYXRhbG9nLmM6IGZpeGVkIG5leHRDYXRhbG9nCi0JKiByZXN1bHQvY2F0YWxvZ3MvZG9jYm9vayB0ZXN0L2NhdGFsb2dzLyo6IHN0YXJ0ZWQgYWRkaW5nCi0JICBhIHNtYWxsIHJlZ3Jlc3Npb24gdGVzdAotCi1UdWUgQXVnIDIxIDEyOjUyOjM4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIE1ha2VmaWxlLmFtIGNhdGFsb2cuYyB4bWxjYXRhbG9nLmMgaW5jbHVkZS9saWJ4bWwvY2F0YWxvZy5oOgotCSAgbW9yZSB3b3JrIG9uIHRoZSBYTUwgY2F0YWxvZyBzdXBwb3J0LgotCSogcGFyc2VyLmMgaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmg6IHNtYWxsIGNsZWFudXAgc2VlbXMgdXNpbmcKLQkgIGxpc3QgYXMgYSBwdWJsaWMgcGFyYW1ldGVyIG5hbWUgY2FuIGdpdmUgcG9ydGFiaWxpdHkgdHJvdWJsZXMKLQkqIHRyaW9uYW4uYyB0cmlvbmFuLmggeHBhdGguYyBpbmNsdWRlL2xpYnhtbC90cmlvbmFuLmgKLQkgIGluY2x1ZGUvbGlieG1sL3hwYXRoLmggaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06IHJlbW92ZWQKLQkgIHRyaW9uYW4gZnJvbSB0aGUgbGlieG1sIEFQSSwgYWRkZWQgeG1sWFBhdGhJc0luZiBhbmQgeG1sWFBhdGhJc05hTgotCSAgd3JhcHBlcnMKLQotVHVlIEF1ZyAyMSAxMToxODo0NSBDRVNUIDIwMDEgQmpvcm4gUmVlc2UgPGJyZWVzZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLQkqIE1ha2VmaWxlLmFtIHRyaW8uYyB0cmlvZGVmLmggdHJpb25hbi5jIHhwYXRoLmMKLQkgIGluY2x1ZGUvbGlieG1sL01ha2VmaWxlLmFtIGluY2x1ZGUvbGlieG1sL3RyaW9uYW4uaDoKLQkgIFJlLXdvcmtlZCBOb3QtQS1OdW1iZXIgYW5kIEluZmluaXR5IHN1cHBvcnQuCi0JKiB4bWxjYXRhbG9nLmM6IGFkZGVkIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMKLQotTW9uIEF1ZyAyMCAwMjowNDoxMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBNYWtlZmlsZS5hbSB4bWxjYXRhbG9nLmMgbGlieG1sLnNwZWMuaW46IHJlbmFtaW5nIAotCSAgdGVzdENhdGFsb2cgYXMgeG1sY2F0YWxvZywgbWFraW5nIGl0IGFuIGluc3RhbGxlZCBhcHAKLQkgIGFkZGluZyBhIHNoZWxsLCBhbmQgcHJlcGFyaW5nIGl0IHRvIGJlIGEgL2V0Yy94bWwvY2F0YWxvZwotCSAgbWFuYWdlbWVudCB0b29sLCB0aG91Z2ggbm90IHJlYWR5IHlldAotCSogY2F0YWxvZy5jIGluY2x1ZGUvbGlieG1sL2NhdGFsb2cuaDogYWRkaW5nIHN1cHBvcnQgZm9yCi0JICBYTUwgQ2F0YWxvZ3MgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9jb21taXR0ZWVzL2VudGl0eS8KLQkgIG5vdCBmaW5pc2hlZCwgdGhlcmUgaXMgc29tZSBpbnRlcmVzdGluZyB0cmFkZW9mZnMgYW5kIGEKLQkgIGZldyBvcGVuIHF1ZXN0aW9ucyBsZWZ0LgotCi1TdW4gQXVnIDE5IDE0OjU5OjU2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHhtbGxpbnQuYzogZml4ZWQgYSBsaW5lIGZvcm1hdHRpbmcgcHJvYmxlbQotCi1GcmkgQXVnIDE3IDExOjM1OjMxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIFNBWC5jOiByZW1vdmVkIGEgY291cGxlIG9mIHVudXNlZCB2YXJpYWJsZSAoQWxiZXJ0IENoaW4pCi0KLUZyaSBBdWcgMTcgMDE6MjU6MjEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSFRNTHBhcnNlci5jIEhUTUx0cmVlLmMgaW5jbHVkZS9saWJ4bWwvSFRNTHBhcnNlci5oOgotCSAgdHJ5aW5nIHRvIGZpeCBzb21lIHRyb3VibGVzIHcuci50LiBmdW5jdGlvbiByZXR1cm5pbmcKLQkgIGNvbnN0IHh4eFB0ci4KLQotVGh1IEF1ZyAxNiAyMTozMzoyMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB3aW4zMi9kc3AvbGlieG1sMi5kZWYuc3JjOiBhbm90aGVyIHNldCBvZiBzeW1ib2xzIGNvbmRpdGlvbmFsbHkKLQkgIGRlZmluZWQKLQotVGh1IEF1ZyAxNiAyMTozMToxNCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cG9pbnRlci5jOiByZW1vdmVkIHVudXNlZCB2YXIKLQotVGh1IEF1ZyAxNiAxODoyNjo0MCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB0ZXN0WFBhdGguYzogYW5vdGhlciBzbWFsbCBjbGVhbnVwIGNsb3NpbmcgYnVnICM1OTExMAotCi1UaHUgQXVnIDE2IDE3OjU5OjE4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIHdpbjMyL2RzcC9saWJ4bWwyLmRlZi5zcmM6IHNtYWxsIGNsZWFudXAgY2xvc2luZyBidWcKLQkgICM1OTEwOAotCi1XZWQgQXVnIDE1IDIyOjQ2OjAxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGV4YW1wbGUvZ2pvYnJlYWQuYzogYWRkIHhtbENsZWFudXBQYXJzZXIoKSBiZWZvcmUgbGVhdmluZwotCi1XZWQgQXVnIDE1IDE0OjU3OjA4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDoKLQkgIHJlbGVhc2VkIDIuNC4yCi0KLVdlZCBBdWcgMTUgMTM6NTY6MjIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogaW5jbHVkZS9saWJ4bWwvdmFsaWQuaCBkZWJ1Z1hNTC5jIHZhbGlkLmM6IGRlcHJlY2F0ZQotCSAgdGhlIG5vbi1ib3VuZGNoZWNraW5nIFNwcmludGYgZnVuY3Rpb25zLCBhZGQgU25wcmludGYKLQkgIHRoaXMgc2hvdWxkIGNsb3NlIGJ1ZyAjNTc5ODQKLQotV2VkIEF1ZyAxNSAxMDo0NjowNyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4bWxJTy5jOiB4bWxPdXRwdXRCdWZmZXJDcmVhdGVGaWxlbmFtZSgpIGRpZG4ndCB1bmVzY2FwZWQKLQkgIFVSSXMgYmVmb3JlIGRvaW5nIHRoZSBsb29rdXBzIChwb2ludGVkIGJ5IE1hcmsgVmFrb2MpCi0KLVR1ZSBBdWcgMTQgMTg6Mzc6MjMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeHBhdGguYzogc2VyaW91cyBjaGFuZ2VzIG9uIFJlc3VsdCBWYWx1ZSBUcmVlcyBhbmQgTm9kZVNldHMKLQkgIHcuci50LiBkZWFsbG9jYXRpb24gYW5kIGNvbGxlY3Qgb3BlcmF0aW9ucy4gUHJvYmFibHkgbm90Ci0JICAxMDAlIGNsZWFuIChtZXJnZSBvZiBhbGxvY2F0ZWQgdHJlZXMgc21lbGxzIGxpa2UgYSBwcm9ibGVtKS4KLQkgIFNlZW1zIHN1ZmZpY2llbnQgdG8gY2xvc2UgIzU4OTQzCi0KLVR1ZSBBdWcgMTQgMTY6MTI6MDAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogeG1sbGludC5jOiBhZGRpbmcgYSAtLWZvcm1hdCBvcHRpb24KLQotVHVlIEF1ZyAxNCAxNDoxNjoyNCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBjb3VudCgpIHdhcyBicm9rZW4gb24gUmVzdWx0IFZhbHVlIFRyZWUKLQkqIHhtbElPLmM6IGZpeGVkIGZpbGU6Ly8vIGFjY2Vzc2VzIG9uIF9XSU4zMgotCi1Nb24gQXVnIDEzIDEzOjIyOjUzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPGRhbmllbEB2ZWlsbGFyZC5jb20+Ci0KLQkqIGxpYnhtbC5tNDogcy9MSUJYTUxfVkVSU0lPTl9OVU1CRVIvTElCWE1MX1ZFUlNJT04vIHNlZW1zIHRoZQotCSAgbWFjcm8gd2FzIHJlbmFtZWQsIHRoaXMgc2hvdWxkIGNsb3NlIGJ1ZyAjNTg2ODMKLQotTW9uIEF1ZyAxMyAxMjozMzo0MCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYzogc21hbGwgZml4IGZpeGluZyBidWcgIzU4NTM5IHJlcG9ydGVkIGJ5IGNvb2xvLCBpbgotCSAgZW50aXR5IHN1YnN0aXR1dGlvbiBtb2RlIHRleHQgYXQgdGhlIGVuZCBvZiB0aGUgZW50aXR5IG1pZ2h0Ci0JICBiZSBhZGRlZCBkdWUgdG8gdGV4dCBjb2FsZXNjaW5nLgotCSogbmFub2Z0cC5jIHBhcnNlci5jOiBzbWFsbCBjbGVhbnVwCi0KLVdlZCBBdWcgIDggMjI6NTc6MDUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogSEFDS0lORzogYWRkZWQgSm9obiBGbGVjayByaWdodCB0byBjb21taXQgaW4gdGhlIGRvYyBzdWJkaXIKLQotVHVlIEF1ZyAgNyAwMzowNTo1OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiBTQVguYyB0ZXN0WFBhdGguYyB2YWxpZC5jIHhtbGxpbnQuYyBpbmNsdWRlL2xpYnhtbC92YWxpZC5oOgotCSAgYWxsb3cgdG8gaW5oZXJpdCBhdHRyaWJ1dGVzIGZyb20gdGhlIERURCBkaXJlY3RseSBpbiB0aGUKLQkgIHRyZWUsIHRoaXMgaXMgbmVlZGVkIGZvciBYUGF0aCBhbmQgY2FuIGJlIGEgdXNlZnVsIGZlYXR1cmUuCi0JICBJbmhlcml0ZWQgbmFtZXNwYWNlcyBhcmUgYWx3YXlzIHByb3ZpZGVkIGF0IHRoZSB0cmVlIGxldmVsIG5vdwotCSogdGVzdC9kZWZhdHRyKiByZXN1bHQvZGVmYXR0ciogcmVzdWx0L25vZW50L2RlZmF0dHIqOiBhZGRlZCBhIGNvdXBsZQotCSAgb2YgdGVzdHMgZm9yIHRoaXMgZmVhdHVyZSAoWFNMVCBiZWluZyB0aGUgcHJpbWUgdXNlcikuCi0KLUZyaSBBdWcgIDMgMTQ6MDI6MjAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogRE9DQnBhcnNlci5jIE1ha2VmaWxlLmFtIG5hbm9odHRwLmMgcGFyc2VyLmMgdGVzdEhUTUwuYwotCSAgdGVzdFNBWC5jIHhtbElPLmMgeG1sbGludC5jIGluY2x1ZGUvd2luMzJjb25maWcuaAotCSAgaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oCi0JICBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbiB3aW4zMi9SRUFETUUuTVNEZXYKLQkgIHdpbjMyL2RzcC8qOiBhcHBsaWVkIFdpbjMyIEZhY2VsaWZ0IE5vLjIgcGF0Y2hlcyBmcm9tIAotCSAgSWdvciBabGF0a292aWMgZm9yIFdpbmRvd3MvTVNDCi0KLVdlZCBBdWcgIDEgMjM6MjE6MDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8ZGFuaWVsQHZlaWxsYXJkLmNvbT4KLQotCSogU0FYLmM6IHVucGFyc2VkRW50aXR5RGVjbCgpIHRoZSBVUkkgY29tcHV0YXRpb24gb2YgdGhlCi0JICBlbnRpdHkgd2Fzbid0IGRvbmUgYnJlYWtpbmcgWFNMVCB1bnBhcnNlZC1lbnRpdHktdXJpKCkKLQotV2VkIEF1ZyAgMSAxNzo0NDo1NyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxkYW5pZWxAdmVpbGxhcmQuY29tPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBhIGJ1ZyB3aGVuIHdhbGtpbmcgdGhlIGRlc2NlbmRhbnRzIGFuZAotCSAgdGhlIGN1cnJlbnQgbm9kZSBoYXMgbm8gY2hpbGRyZW4KLQkqIGRlYnVnWE1MLmM6IHNob3cgdXAgd2hlbiBhIHRleHQgbm9kZSBpcyBzdXBwb3NlZCB0byBub3QgYmUgZXNjYXBlZAotCi1XZWQgQXVnICAxIDAxOjMzOjM1IENFU1QgMjAwMSBUaG9tYXMgQnJveWVyIDx0YnJveWVyQGx0Z3QubmV0PgotCi0JKiB4cGF0aC5jOiBmaXhlZCBhIGJ1ZyBpbiB4bWxYUGF0aE5vZGVUcmFpbGluZ1NvcnRlZCAoZm9yIG5vdyBpdAotCSAgd29ya2VkIGxpa2UgdGhlIHNldDpsZWFkaW5nKCkgZnVuY3Rpb24pCi0JKiBpbmNsdWRlL2xpYnhtbC94cGF0aEludGVybmFscy5oOiBhZGRlZCB4bWxYUGF0aE5vZGVTZXRDb250YWlucwotCi1UdWUgSnVsIDMxIDE4OjI0OjM0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBuYW5vaHR0cC5jOiBwcm90ZWN0ZWQgYW4gdXNlIG9mIEVBR0FJTiwgQnJpYW4gU3RhZmZvcmQKLQotVHVlIEp1bCAzMSAxNzo0ODo0NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaW5jbHVkZS9saWJ4bWwveG1sSU8uaDogYXBwbHkgY2hhbmdlIHRvIGNsb3NlICM1ODE0MSAKLQkqIHdpbjMyL2xpYnhtbDIvKjogdXBkYXRlIG9mIHRoZSBNU0MgcHJvamVjdHMgZnJvbSBJZ29yICBabGF0a292aWMKLQotVHVlIEp1bCAzMSAxNzowOTozMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IHdoZW4gdGhlIGludGVybmFsIHN1YnNldCB1c2VzIGEgUEUsIHRoZW4gdGhlCi0JICBpbmNsdWRlZCBlbnRpdHkgY2FuIHVzZSBjb25kaXRpb25hbCBzZWN0aW9ucy4KLQotTW9uIEp1bCAzMCAxMjo1ODozOSBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmg6IGZpeGVkIGEgc2VyaW91cyBtZW1vcnkgcHJvYmxlbgotCSAgd2hlbiB3YWxraW5nIHRoZSBuYW1lc3BhY2UgYXhpcyBzaG93aW5nIHVwIGluCi0JICBsaWJ4c3QvdGVzdHMvZ2VuZXJhbC9idWctMTIKLQkqIHhtbG1lbW9yeS5jOiBhZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gdHJhY2UgYSBnaXZlbiBibG9jawotCSAgZGVmaW5lZCBieSBpdHMgYWRkcmVzcwotCi1TdW4gSnVsIDI5IDA3OjE4OjUzIEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBkb24ndCBvdmVycmlkZSBleGlzdGluZyBlbmNvZGluZyBzcGVjaWZpZWQgYmVmb3JlCi0JICBzdGFydGluZyB4bWxQYXJzZURvY3VtZW50KCkKLQotU2F0IEp1bCAyOCAxMzozMzoxMCBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaDogcmVpbnNlcnRlZCwgbmVlZGVkIGZvcgotCSAgV2luZG93cyB1c2VycyBvZiBDVlMKLQotMjAwMS0wNy0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBiZW50c3Bvb24uY29tPgotCi0JKiBlbmNvZGluZy5jOiAoeG1sSWNvbnZXcmFwcGVyKTogQWRkIGNhc3QgdG8gZml4IHdhcm5pbmcuCi0JKiB0ZXN0Q2F0YWxvZy5jOiBBZGQgaW5jbHVkZSBvZiA8bGlieG1sL3BhcnNlci5oPi4KLQotMjAwMS0wNy0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBiZW50c3Bvb24uY29tPgotCi0JKiBpbmNsdWRlL2xpYnhtbC8uY3ZzaWdub3JlOgotCSogaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6Ci0JUmVtb3ZlIHRoaXMgZmlsZSBmcm9tIENWUyBiZWNhdXNlIGl0J3MgZ2VuZXJhdGVkLgotCi1GcmkgSnVsIDI3IDEwOjAzOjU2IEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oOiBhcHBsaWVkIGNvbnN0IHBhdGNoZXMgZnJvbQotCSAgVG9tIE1vb2cgIzU4MDAyCi0KLVRodSBKdWwgMjYgMTg6NTU6NTIgQ0VTVCAyMDAxIFRob21hcyBCcm95ZXIgPHRicm95ZXJAbHRndC5uZXQ+Ci0KLQkqIHhwYXRoLmMgaW5jbHVkZS9saWJ4bWwveHBhdGh7LEludGVybmFsc30uaDogYWRkZWQgYSBmdW5jdGlvbgotCSAgbG9va3VwIGZyYW1ld29yawotCi1GcmkgSnVsIDI3IDAxOjUwOjIwIEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogZml4ZWQgeG1sQ29weU5vZGUoKSBmb3IgZG9jdW1lbnRzCi0KLVRodSBKdWwgMjYgMTI6NDA6MzUgRURUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1Z3MgIzU4MDczIHJlcG9ydGVkIGJ5IEdyZWcgU2h0aWxtYW4KLQotVGh1IEp1bCAyNiAxMTozODozNyBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZXMgYnVnICM1NzY1MiByZXBvcnRlZCBieSBNb3J1cyBXYWx0ZXIKLQotVGh1IEp1bCAyNiAxMDoyNDozNCBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBuYW5vaHR0cC5jOiBKb2huIEtyb2xsIHByb3ZpZGVkIGEgc21hbGwgZml4IHRvIHhtbE5hbm9IVFRQU2F2ZQotCi1UaHUgSnVsIDI2IDA3OjE2OjA0IEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jOiBmaXhlZCB0aGUgeG1sTGluZU51bWJlcnNEZWZhdWx0KCkKLQkgIGVycm9ycywgbGVzc29uIGRvbid0IGFkZCBuZXcgZnVuY3Rpb25zIGF0IDFhbSBiZWZvcmUgYSByZWxlYXNlCi0JKiB4cGF0aC5jOiBpbnRlZ3JhdGVkIGZpeCBmcm9tIEJqb3JuIHRvIGF2b2lkIGRpdmlkZSBieSB6ZXJvCi0JICBmcm9tIFhQYXRoIGluaXRpYWxpemF0aW9uIHdoZW4gcG9zc2libGUuCi0KLVR1ZSBKdWwgMjQgMTU6Mzk6MTEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHJlc3VsdC9zY3JpcHRzL2Jhc2UqOiByZW1vdmluZyBoaXN0b3J5L3JlYWRsaW5lIGNoYW5nZWQKLQkgIHRoaXMgc2xpZ2h0bHkKLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlci5oIFNBWC5jIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jCi0JICB4bWxsaW50LmM6IG1ha2UgZWxlbWVudCBjb250ZW50IGxpbmUgbnVtYmVyIGdlbmVyYXRpb24KLQkgIG9wdGlvbm5hbCB0byBhdm9pZCBicmVha2luZyBvbGQgYXBwcyBhZGRlZCBpbnRlcmZhY2UgdG8gc3dpdGNoCi0KLVR1ZSBKdWwgMjQgMTU6MDY6NTggQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogZ2V0IHJpZCBvZiB0aGUgcmVhZGxpbmUgYW5kIGxpYmhpc3RvcnkKLQkgIGRlcGVuZGVuY2llcyBieSBkZWZhdWx0LCByZWxlYXNlIDIuNC4xIHdpdGggSUE2NCBmaXgKLQkqIG5hbm9odHRwLmMgdHJlZS5jIHhtbElPLmMgaW5jbHVkZS9saWJ4bWwvbmFub2h0dHAuaAotCSAgaW5jbHVkZS9saWJ4bWwvdHJlZS5oIGluY2x1ZGUvbGlieG1sL3htbElPLmg6IGluY29ycG9yYXRlZAotCSAgSm9obiBLcm9sbCBmaXhlcyB0byBhbGxvdyBzYXZpbmcgdG8gSFRUUCB2aWEgUFVUIChvcgotCSAgUE9TVCBvZiBuZWVkZWQpLgotCSogZG9jL2h0bWwvKi5odG1sOiByZWdlbmVyYXRlZCB0aGUgZG9jcwotCi1TdW4gSnVsIDIyIDA1OjU2OjE2IENFU1QgMjAwMSBUaG9tYXMgQnJveWVyIDx0YnJveWVyQGx0Z3QubmV0PgotCi0JKiBoYXNoLmMgaW5jbHVkZS9saWJ4bWwvaGFzaC5oOiBhZGRlZCB4bWxIYXNoU2Nhbm5lckZ1bGwsCi0JICB4bWxIYXNoU2NhbkZ1bGwgYW5kIHhtbEhhc2hTY2FubkZ1bGwzIHRvIGdldCBwYXNzZWQgdGhlCi0JICB0aHJlZSBrZXlzIGFzIGFyZ3VtZW50cyB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KLQotVGh1IEp1bCAxOSAxNToyOToyNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluIE1ha2VmaWxlLmFtOiByZW1vdmVkIGxpYnhtbCBzb2Z0bGluayBmb3IgZ29vZAotCSogaW5jbHVkZS9saWJ4bWwvKi5oICouYyBkb2MvTWFrZWZpbGUuYW06IGNsZWFudXAgdG8gZ2V0Ci0JICAxMDAlIGNvdmVyYWdlIGJ5IGd0ay1kb2MKLQotVHVlIEp1bCAxNyAxNzozNjo0NiBFRFQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWxtZW1vcnkuYyBpbmNsdWRlL2xpYnhtbC94bWxtZW1vcnkuaDogZGVidWdnaW5nIG9uIElBNjQsCi0JICBmaXhlZCBzZXJpb3VzIHRyb3VibGVzIGR1ZSB0byBzaXplX3QgdnMuIGludCBtaXNtYXRjaAotCi1UdWUgSnVsIDE3IDE2OjA0OjM2IEVEVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIFNBWC5jIHhtbElPLmM6IGNsZWFuZWQgdXAgc29tZSB3YXJuaW5nIG9uIHRoZSBBbHBoYQotCi1Nb24gSnVsIDE2IDA2OjMyOjQ0IENFU1QgMjAwMSBUaG9tYXMgQnJveWVyIDx0YnJveWVyQGx0Z3QubmV0PgotCi0JKiBpbmNsdWRlL2xpYnhtbC94cGF0aHssSW50ZXJuYWxzfS5oIHhwYXRoLmM6IGFkZGVkIGEgbW9yZQotCSAgY29udmVuaWVudCBleHRlbnNpb24gQVBJIGZvciB2YWx1ZSBhbmQgY29udGV4dCBtYW5hZ2luZwotCSAgTm93IGhhbmRsZXMgZXh0ZXJuYWwgb2JqZWN0cyB0aHJvdWdoIHhtbFhQYXRoUG9wRXh0ZXJuYWwsCi0JICB4bWxYUGF0aFdyYXBFeHRlcm5hbCBhbmQgeG1sWFBhdGhSZXR1cm5FeHRlcm5hbC4KLQkgIEFkZGVkIGZ1bmN0aW9ucyBmb3Igc2V0cyBvcGVyYXRpb25zIChpbnRlcnNlY3Rpb24sIGV0Yy4pCi0KLU1vbiBKdWwgMTYgMjA6MDU6MjcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGluY2x1ZGUvbGlieG1sL3BhcnNlckludGVybmFscy5oIGluY2x1ZGUvbGlieG1sL0hUTUxwYXJzZXIuaAotCSAgeG1sSU8uYyB0cmVlLmMgcGFyc2VySW50ZXJuYWxzLmMgZW50aXRpZXMuYyBlbmNvZGluZy5jCi0JICBIVE1McGFyc2VyLmM6IGNsZWFudXAgb2YgZ2xvYmFsIHZhcmlhYmxlcywgbWFya2luZyBzb21lCi0JICBjb25zdCBvciBwcml2YXRlLgotCi1Nb24gSnVsIDE2IDAwOjE3OjE1IENFU1QgMjAwMSBUaG9tYXMgQnJveWVyIDx0YnJveWVyQGx0Z3QubmV0PgotCi0JKiBpbmNsdWRlL2xpYnhtbC94cGF0aC5oOiBleHBvcnRlZCB4bWxYUGF0aHtOQU4sUElORixOSU5GfQotCSAgZml4ZWQgeG1sWFBhdGhOb2RlU2V0SXRlbSB3aGVuIHBhc3NpbmcgaW5kZXg9MAotCi1TdW4gSnVsIDE1IDE3OjU4OjQ0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaC5pbjogYWRkZWQgeG1sQ2hlY2tWZXJzaW9uKCkKLQotU2F0IEp1bCAxNCAxOTozMToyMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sbGludC5jOiBmaXhlZCBjb21waWxhdGlvbiB1bmRlciBDeWd3aW4gIzU3NTAzCi0JKiBUT0RPOiB1cGRhdGUKLQotMjAwMS0wNy0xMyAgUGV0ZXIgV2lsbGlhbXMgIDxwZXRlcndAeGltaWFuLmNvbT4KLQotCSogY29uZmlnLmguaW46IGFkZCAjdW5kZWYgSEFWRV9ETEZDTl9ICi0KLQkqIGV4YW1wbGUvTWFrZWZpbGUuYW0gKElOQ0xVREVTKTogQ29tcGlsZSBmaXggd2hlbiBzcmNkaXIgIT0KLQlidWlsZGRpci4KLQotRnJpIEp1bCAxMyAxMTowOTo1NiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogd2luMzIvbGlieG1sMi9saWJ4bWwyLmRlZi5zcmM6IGFkZGVkIGEgY291cGxlIG9mIGV4cG9ydGVkIGVudHJpZXMKLQkgIHJhaXNlZCBieSAjNTczNDggYW5kICM1NzM4MQotCi1UaHUgSnVsIDEyIDIxOjIwOjE3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBET0NCcGFyc2VyLmMgSFRNTHBhcnNlci5jIEhUTUx0cmVlLmMgU0FYLmMgZGVidWdYTUwuYyBwYXJzZXIuYwotCSAgdHJlZS5jIHhwb2ludGVyLmM6IHN0b3JlIHRoZSBsaW5lIG51bWJkZXIgaW4gZWxlbWVudC0+Y29udGVudCwKLQkgIG1heSBicmVhayBzb21lIHNvZnR3YXJlLCBuZWVkIGEgY29uZmlndXJhdGlvbiBtZWNoYW5pc20KLQotMjAwMS0wNy0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBiZW50c3Bvb24uY29tPgotCi0JKiAuY3ZzaWdub3JlOgotCSogZXhhbXBsZS8uY3ZzaWdub3JlOgotCSogaW5jbHVkZS8uY3ZzaWdub3JlOgotCSogaW5jbHVkZS9saWJ4bWwvLmN2c2lnbm9yZToKLQlWYXJpb3VzIHRoaW5ncyB0aGF0IGFyZSBnZW5lcmF0ZWQgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgotCi1UdWUgSnVsIDEwIDE3OjQ3OjA5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6IHJlbGVhc2Ugb2YgMi40LjAKLQkqIGRvYy94bWwuaHRtbCBkb2MvaHRtbC8qOiAgdXBkYXRlZCB0aGUgZG9jcwotCi1Nb24gSnVsICA5IDIyOjA2OjUzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB2YWxpZC5jOiBmaXhlZCAiSW50ZXJuYWw6IE1JWEVEIHN0cnVjdCBiYWQiIHdoZW4gI0NEQVRBIGVsZW1lbnRzCi0JICB2YWxpZGF0aW9uIG9jY3VyZWQgb24gY29udGVudCB3aXRoIGVsZW1lbnQgY2hpbGQKLQotTW9uIEp1bCAgOSAxNzo1OTowOCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jOiBmaXhlZCBYTUwgQmFzZSBjb21wdXRhdGlvbiB3aGljaCB3YXMgYnJva2VuCi0JKiBkZWJ1Z1hNTC5jOiBhZGRlZCBhIGJhc2UgZnVuY3Rpb24gdG8gdGhlIHNoZWxsCi0JKiBNYWtlZmlsZS5hbSByZXN1bHQvc2NyaXB0cy8qIHRlc3Qvc2NyaXB0cy8qOiBhZGRlZCBzY3JpcHRzCi0JICBiYXNlZCByZWdyZXNzaW9uIHRlc3RzLCBhbmQgYWRkaW5nIDIgWE1MIEJhc2UgdGVzdHMKLQotTW9uIEp1bCAgOSAxMjozMTowNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jOiBzZXQgcHJvcGVydGllcyBkb2MgYW5kIGNhbGwgeG1sU2V0TGlzdERvYyBmb3IgcHJvcGVydGllcwotCSAgY29udGVudCB3aGVuIGdyYWZ0aW5nIHRoZW0gaW4gYSBkaWZmZXJlbnQgdHJlZS4KLQkqIGFjbG9jYWwubTQ6IHJlbW92ZSBmcm9tIENWUwotCi1TdW4gSnVsICA4IDIzOjA5OjA3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB3aW4zMi9saWJ4bWwyL2xpYnhtbDIuZGVmLnNyYzogYWRkZWQgc29tZSBtaXNzaW5nIGVudHJ5IHBvaW50Ci0JICBmb3IgWFBhdGggKE1hcmsgVmFrb2MpCi0KLVN1biBKdWwgIDggMjA6MzQ6MzUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhtbElPLmM6IGZpeGVkIGFuIG9sZCBidWcgcmFpc2VkIGJ5IEJlcm5oYXJkIFp3aXNjaCwgdGhlIEkvTwotCSAgbGF5ZXIgc2hvdWxkIFVSSS1VbmVzY2FwZSBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gcmVzb3VyY2VzLgotCi1TdW4gSnVsICA4IDE2OjI2OjAwIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBmaXggdGhlIG5hbWUoKSBidWcgZm9yIGVsZW1lbnRzIGluIHRoZSBkZWZhdWx0IAotCSAgbmFtZXNwYWNlIHJlcG9ydGVkIGJ5IENoYXJsaWUgQm96ZW1hbgotCi1TdW4gSnVsICA4IDE1OjExOjA1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBTQVguYyBwYXJzZXIuYyB0ZXN0WFBhdGguYyB4cGF0aC5jOiB0cnlpbmcgdG8gZml4ICM1Njk0OCwgdGhpcwotCSAgbGVkIHRvIGFuIFhQYXRoIGZpeCwgaW1wcm92ZW1lbnRzIG9mIFNBWCBpbml0aWFsaXphdGlvbiwgYW5kCi0JICBhbiBhZGRlZCBvcHRpb24gLS1ub2NkYXRhIHRvIHRlc3RYUGF0aAotCi1TYXQgSnVsICA3IDIxOjA5OjU1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBkb2MvbGlieG1sLWRvYy5lbDogRmVsaXggTmF0dGVyIHByb3ZpZGVkIGFuZXcgdmVyc2lvbiB3b3JraW5nCi0JICB3aXRoIFhFbWFjcyB0b28KLQotU2F0IEp1bCAgNyAwMjoxNjowMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaW5jbHVkZS9saWJ4bWwveHBhdGguaDogc21hbGwgY2xlYW51cAotCSogZG9jL3htbC5odG1sOiB1cGRhdGUKLQotRnJpIEp1bCAgNiAwMTo0MDoyMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW0gY29uZmlndXJlLmluIGluY2x1ZGUvbGlieG1sL3htbHdpbjMydmVyc2lvbi5oOgotCSAgcmVsZWFzZWQgMi4zLjE0Ci0KLUZyaSBKdWwgIDYgMDA6NDc6NDEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy9odG1sLyo6IHJlYnVpbHQgdGhlIGRvY3MgZm9yIHRoZSByZWxlYXNlCi0JKiBkb2MveG1sLmh0bWw6IGFkZGVkIDIuMy4xNCByZWxlYXNlLgotCi1UaHUgSnVsICA1IDIyOjAxOjMxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBhIGJ1ZyByZXBvcnRlZCBieSBTdGVwaGFuIEt1bG93IGVtcHR5IG5vZGVzZXRzCi0JICB3ZXJlIG5vdCBlcXVhbCB0byBlbXB0eSBzdHJpbmdzCi0KLVRodSBKdWwgIDUgMDA6NTI6MjUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIFNBWC5jOiBmaXhlZCBhIFVSSS1SZWZlcmVuY2UgY29tcHV0YXRpb24gcHJvYmxlbSB3aGVuIHZhbGlkYXRpbmcKLQkqIHhtbElPLmM6IHNtYWxsIGNsZWFudXAKLQotVGh1IEp1bCAgNSAwMDowNDo1OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IGltcHJvdmVkIHRoZSBkZXNjcmlwdGlvbiBvZiBhIGNvdXBsZSBvZiBpbnRlcmZhY2VzCi0JICB1cG9uIExhcnJ5IFN0YW1wZXIgc3VnZ2VzdGlvbgotCi1XZWQgSnVsICA0IDIxOjQyOjI0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBTQVguYyBlbnRpdGllcy5jIHBhcnNlci5jOiBjaGFuZ2VkIGNvbXBsZXRlbHkgdGhlIHdheSBlbnRpdGllcwotCSAgYXJlIGhhbmRsZWQgd2hlbiBydW5uaW5nIHRoZSBwYXJzZXIgaW4gZW50aXR5IHN1YnN0aXR1dGlvbiBtb2RlLgotCSAgVGhpcyBmaXhlcyBhIGJ1ZyByZXBvcnRlZCBieSBTdGVwaGFuIEt1bG93IGFuZCBuZWFybHkgZGl2aWRlcwotCSAgYnkgMyB0aGUgYW1vdW50IG9mIG1lbW9yeSByZXF1aXJlZCBieSBsaWJ4c2x0IHRvIGxvYWQgYW5kIHByb2Nlc3MKLQkgIERvY0Jvb2sgVERHLgotCi1XZWQgSnVsICA0IDE4OjAyOjU4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGluZyBhIHRvbyBlYXJseSByb290IGNsb3NpbmcgcHJvYmxlbSByYWlzZWQKLQkgIGJ5dCBQcmFzaGFudGggTmFpZHUKLQotV2VkIEp1bCAgNCAwMTo0MjowMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4ZWQgYSBtaXNzaW5nIGNvcHkgaW4geG1sWFBhdGhWYXJpYWJsZUxvb2t1cE5TKCkgCi0JICByYWlzZWQgYnkgTWFyayBWYWtvYy4KLQotVHVlIEp1bCAgMyAxODozNTo0OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZXhhbXBsZS9NYWtlZmlsZS5hbTogZml4ZWQgdGhlIGluY2x1ZGUgcGF0aCB0byBhZGQgc3JjZGlyL2luY2x1ZGUKLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbjogZml4IGZyb20gQWxiZXJ0IENoaW4gZm9yIGljb252IGRldGVjdGlvbgotCSAgYW5kIHNvbWUgY2xlYW51cAotCi1UdWUgSnVsICAzIDEwOjEyOjAzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jIGluY2x1ZGUvbGlieG1sL3hwYXRoLmggaW5jbHVkZS9saWJ4bWwveHBhdGhJbnRlcm5hbHMuaDoKLQkgIGxvdCBvZiBvcHRpbWl6YXRpb24gd29yaywgcmVzdWx0cyBpbiBzaWduaWZpY2FudCBpbXByb3ZlbWVudHMKLQkgIHdoZW4gaGFuZGxpbmcgcmVhbGx5IGNvbXBsZXggWFBhdGggcXVlcmllcy4gQWRkIGEgc21hbGwgb3B0aW1pemVyCi0JICBmb3IgdW5pb25zLCBpbXByb3ZlIFtuXSBhbmQgW2xhc3QoKV0sIGF2b2lkIHNvbWUgY29zdGx5IG9wcy4KLQotRnJpIEp1biAyOSAyMzoyNjo1NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaW5jbHVkZS9saWJ4bWwvcGFyc2VyLmggcGFyc2VyLmM6IHhtbFN0cnN0ciBhcmdzIGFyZSBib3RoIGNvbnN0Ci0JKiB4cGF0aC5jOiBzbWFsbCBjbGVhbnVwCi0JKiB4bWxHZXROc0xpc3Q6IHJlZm9ybWF0ZWQsIGZpeGVkIHByb2JsZW1zIGlmIHVzZWQgb24gRW50aXRpZXMKLQotVGh1IEp1biAyOCAxODoxOTo0NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL3htbC5odG1sOiBhZGRlZCAxLjguMTQgYW5kIDIuMy4xMyByZWxlYXNlcwotCi1UaHUgSnVuIDI4IDE4OjE2OjI4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW4gaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6IHJlbGVhc2VkIDIuMy4xMwotCSogTWFrZWZpbGUuYW0gZXhhbXBsZS9NYWtlZmlsZS5hbTogd29ya2Fyb3VuZCBhdXRvbWFrZSBnZW5lcmF0aW5nCi0JICBlcnJvbmVvdXMgZGVwcwotCi1UaHUgSnVuIDI4IDE1OjA4OjIyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBpbmNsdWRlL3dpbjMyY29uZmlnLmg6IGJ1ZyAjNTY4MDEgWW9uIERlcmVrIHByb3ZpZGVkIGEgcGF0Y2gKLQkgIHRvIHRoZSB3aW5kb3dzIGNvbmZpZyBmaWxlLgotCi1UaHUgSnVuIDI4IDE0OjUxOjQ0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cG9pbnRlci5jIGluY2x1ZGUvd2luMzJjb25maWcuaCB3aW4zMi9saWJ4bWwyL2xpYnhtbDIuZGVmLnNyYwotCSAgbGlieG1sLmggOiBZb24gRGVyZWsgcHJvdmlkZWQgYSBzZXQgb2YgY2hhbmdlcyB0byBjb21waWxlIGZyb20KLQkgIENWUyBvbiBXaW5kb3dzL01TQwotCi1UaHUgSnVuIDI4IDE0OjExOjI4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgVVRGOCBCT00gc3VwcG9ydCBpbiBwdXNoIG1vZGUKLQkqIHRlc3QvdXRmOGJvbS54bWwgcmVzdWx0L3V0Zjhib20ueG1sIHJlc3VsdC9ub2VudC91dGY4Ym9tLnhtbDoKLQkgIGFkZGVkIGEgc3BlY2lmaWMgdGVzdGNhc2UKLQotV2VkIEp1biAyNyAxODozMzoxMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW06IGFkZGVkIC0tcHVzaCByZWdyZXNzaW9uIHRlc3RzCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogdGhlIFhNTCBwYXJzZXIgc2VnZmF1bHRlZCBpbiAtLXB1c2ggbW9kZQotCi1XZWQgSnVuIDI3IDEzOjA5OjUxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IG1vdmVkIHRoZSBzeW1saW5rcyBkZXRlY3Rpb24gd2l0aGluIGEgQ1ZTCi0JICBjaGVjaywgdGhpcyBpcyBub3QgcG9ydGFibGUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBzb29uLgotCSogeHBhdGguYzogc21hbGwgY2xlYW51cC9zcGVlZHVwCi0KLVR1ZSBKdW4gMjYgMTg6MDU6MjYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBkb2MveG1sLmh0bWwgaW5jbHVkZS9saWJ4bWwveG1sd2luMzJ2ZXJzaW9uLmg6Ci0JICByZWxlYXNlIG9mIDIuMy4xMgotCSogcGFyc2VyLmM6IG1ha2UgYW4gZXJyb3IgbWVzc2FnZSBpZiB1bmtub3cgZW50aXRpZXMgaW4gYWxsIGNhc2VzCi0KLVR1ZSBKdW4gMjYgMDk6NDY6MjkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHVyaS5jOiBmaXhlZCAyIHVyaSBub3JtYWxpemF0aW9uIGJ1Z3Mgb24gJy8vJyByZWR1Y3Rpb24KLQotTW9uIEp1biAyNSAxODowNjoyMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW06IExhc3psbyBQZXRlciBwb2ludGVkIG91dCB0aGF0Ci0JICBpbmNsdWRlcyB3ZXJlIGluc3RhbGxlZCBpbiB0aGUgd3JvbmcgZGlyCi0KLU1vbiBKdW4gMjUgMTc6MDc6MzcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy9odG1sLnhtbDogd2FybiBhZ2FpbnN0IHNlbmRpbmcgY29kZSB0byBleGhpYml0IGJ1Z3MuCi0KLVN1biBKdW4gMjQgMjM6MzE6NTYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IHBhdGNoIHRvIHhtbFhQYXRoRm9ybWF0TnVtYmVyIGZvciB0aGUgb3B0aW1pemVyIG9uCi0JICBUcnU2NCBmcm9tIFRob21hcyBMZWl0bmVyCi0KLVN1biBKdW4gMjQgMTQ6MDU6NTQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEFVVEhPUlM6IGFkZGVkIFdpbGxpYW0gYW5kIEJqb3JuCi0JKiBpbmNsdWRlL2xpYnhtbC8qLmggKi5jIFJFQURNRSBkb2MvKi5odG1sIGV0Yy46IGNoYW5nZWQgb2xkIGVtYWlsIHRvCi0JICBkYW5pZWxAdmVpbGxhcmQuY29tIGhvcGVmdWxseSBJIHdvbid0IGhhdmUgdG8gZG8gdGhpcyBhZ2FpbgotCSogZG9jL01ha2VmaWxlLmFtIGRvYy9odG1sLyouaHRtbDogY2xlYW51cCBtYWtlZmlsZSwgY2hlY2tlZCB0aGF0Ci0JICBkb2NzIGNhbiBiZSByZWJ1aWx0IGNsZWFubHkgbm93Ci0JKiBpbmNsdWRlL2xpYnhtbC94bWwqdmVyc2lvbi5oKjogcmVtb3ZlZCBpbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmgKLQkgIGZyb20gQ1ZzIGl0J3MgZ2VuZXJhdGVkLCBhZGRlZCBpbmNsdWRlL2xpYnhtbC94bWx3aW4zMnZlcnNpb24uaAotCSAgYWxzbyBnZW5lcmF0ZWQgYnV0IHdoaWNoIHNob3VsZCBjaGFuZ2UgZmFyIGxlc3MgZnJlcXVlbnRseS4KLQkqIGNhdGFsb2cuYyBuYW5vZnRwLmM6IG1hZGUgc3VyZSB0byBpbmNsdWRlIGxpYnhtbC5oIG5vdAotCSAgbGlieG1sL3htbHZlcnNpb24uaCBkaXJlY3RseQotCSogaW5jbHVkZS9saWJ4bWwvKi5oOiBpbmNsdWRlIHhtbHdpbjMydmVyc2lvbi5oIGluc3RlYWQgb2YgeG1sdmVyc2lvbi5oCi0JICB3aGVuIGNvbXBpbGluZyBvbiBXSU4zMiBhbmQgTVNDCi0KLVNhdCBKdW4gMjMgMjM6NTQ6MTIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGluY2x1ZGUvTWFrZWZpbGUuYW0gaW5jbHVkZS9saWJ4bWwvTWFrZWZpbGUuYW0gY29uZmlndXJlLmluOgotCSAgZml4ZWQgbWFrZSBkaXN0Y2hlY2sgYW5kIHJlYnVpbGRpbmcgdGhlIHJwbXMKLQotU2F0IEp1biAyMyAyMDo1MDo1MyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBzaG91bGQgZmluaXNoIHRoZSBtaWdyYXRpb24gb2YgZXhwb3J0ZWQgaW5jbHVkZXMKLQkgIGludG8gYSByZWFsIGluY2x1ZGUvbGlieG1sIGluIENWUywgYXQgbGVhc3QgZm9yIENWUyB1c2Vycy4KLQkqIHJlbW92ZWQgdGhlIGV4cG9ydGVkIGhlYWRlcnMsIGFkZGVkIGluIGluY2x1ZGUvbGlieG1sIChhcyB3ZWxsCi0JICBhcyB4bWx2ZXJzaW9uLmguaW4pLgotCi1TYXQgSnVuIDIzIDIwOjM3OjE5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IGZpeGVkIHRoZSB3YXkgdG8gZGV0ZWN0IHN5bWxpbmsKLQotU2F0IEp1biAyMyAyMDozMDoxMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiB1cGRhdGVkLCBpbmNsdWRlL2xpYnhtbCBpcyBub3cgYSByZWFsIENWUyBkaXIKLQotU2F0IEp1biAyMyAxOTozNjozMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL2xpYnhtbC1kb2MuZWw6IGEgbmV3IHZlcnNpb24gb2YgbGlieG1sLWRvYy5lbC4gVGhpcyBuZXcKLQkgIHZlcnNpb24gd29ya3Mgd2l0aCBib3RoIGxpYnhtbDEgYW5kIGxpYnhtbDIgKGl0IGF1dG9kZXRlY3RzCi0JICB0aGUgcHJlZml4IG9mIHRoZSBodG1sLWZpbGVzKSBmcm9tIEZlbGl4IE5hdHRlci4KLQkqIGRvYy94bWwuaHRtbDogdXBkYXRlZCBkb2MgYWNjb3JkaW5nbHkKLQotU2F0IEp1biAyMyAxODozMDoyOCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4ZWQgdGhlIGJ1ZyBnZW5lcmF0aW5nIGEgdGVtcGxhdGUgbG9vcCBpbiBsaWJ4c2x0Ci0JICB3aGVuIHVzaW5nIGRvY2Jvb2steHNsLTEuNCwgKiBzaG91bGQgZmlsdGVyIG91dCBkb2N1bWVudCBub2RlcwotCSogSEFDS0lORzogYWRkZWQgV2lsbGlhbQotCSogVE9ETzogdXBkYXRlZAotCi1GcmkgSnVuIDIyIDE4OjAyOjM3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBkb2MvRkFRLmh0bWw6IGFkZGVkIGEgd2FybmluZyBhYm91dCBnY2MtMy4wCi0JKiBkb2MveG1sLmh0bWw6IGFkZGVkIHJlZmVyZW5jZSB0byBnZG9tZTIgYW5kIHJlbW92ZWQgYSBjb25mdXNpbmcKLQkgIHNlbnRlbmNlCi0KLUZyaSBKdW4gMjIgMTc6MDI6MTYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhtbHZlcnNpb24uaDogb2theSB0aGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGUsIGJ1dCBXaW5kb3dzCi0JICB1c2VycyBuZWVkIGl0IGFuZCB0aGV5IGNhbid0IGdlbmVyYXRlIGl0LCBhbmQgSSB3YW50IENWUwotCSAgV2luZG93cyB1c2VycyAuLi4KLQkqIHdpbjMyL2xpYnhtbDIvbGlieG1sMl9zby5kc3A6IFdpbmRvd3MgcHJvamVjdCBmaWxlIGZvciAKLQkgIHRoZSBzaGFyZWQgbGliIHZlcnNpb24gb2YgbGlieG1sMgotCSogd2luMzIvbGlieG1sMi9saWJ4bWwyLmRlZi5zcmM6IGJ1ZyAjNTY1Mjcgc2V0IG9mIGV4cG9ydGVkCi0JICByZXNvdXJjZXMgbmVlZGVkIGZvciBsaWJ4c2x0L3hzbHRwcm9jIGJ5IFlvbiBEZXJlawotCi1GcmkgSnVuIDIyIDE2OjM5OjM2IENFU1QgMjAwMSBCam9ybiBSZWVzZSA8YnJlZXNlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotCSogdHJpby5jOiBNU1ZDIGZpeCAocHJvdmlkZWQgYnkgSWdvciBabGF0a292aWMpCi0KLUZyaSBKdW4gMjIgMTI6NDI6MTYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGluY2x1ZGUvd2luMzJjb25maWcuaDogYW5vdGhlciBzbWFsbCBmaXggZm9yIEFUVFJJQlVURV9VTlVTRUQKLQotRnJpIEp1biAyMiAxMjo0MjoxNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oOiBZb24gRGVyZWsgcHJvdmlkZWQgYSBmaXJzdCBmaXgKLQkgIHRvIGJlIGFibGUgdG8gY29tcGlsZSBsaWJ4c2x0L3hzbHRwcm9jIG9uIFdpbmRvd3MKLQotRnJpIEp1biAyMiAwMDowNDozNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogYXR0ZW1wdCB0byB3b3JrIGFyb3VuZCB3aGF0IHNlZW1lZCBhIGdjYyBvcHRpbWl6ZXIKLQkgIGJ1ZyB3aGVuIGhhbmRsaW5nIGZsb2F0cyBvbiBpMzg2IGh0dHA6Ly92ZWlsbGFyZC5jb20vZ2NjLmJ1ZwotCSogdHJlZS5jIGVudGl0aWVzLmMgZW5jb2RpbmcuYzogZG9pbmcgc29tZSBjbGVhbnVwcyB3aGlsZQotCSAgY2hhc2luZyBpdAotCi1UaHUgSnVuIDIxIDEzOjEzOjM2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBNYWtlZmlsZS5hbTogY2xlYW51cCB3aGVuIC0td2l0aG91dC1kZWJ1ZyBpcyBzcGVjaWZpZWQKLQkqIHhpbmNsdWRlLmMgeHBhdGguYyB4cGF0aEludGVybmFscy5oIHhwb2ludGVyLmM6IGNsZWFudXAKLQkgIHcuci50LiAtLXdpdGhvdXQtZGVidWcgYW5kIG90aGVyIGluY2x1ZGUgcG9pbnRzCi0JKiBjYXRhbG9nLmggdGVzdENhdGFsb2cuYzogYSBiaXQgb2YgY2xlYW51cCBhbmQgcHJlcGFyZSBmb3IgWE1MCi0JICBDYXRhbG9ncwotCSogY29uZmlndXJlLmluIGVudGl0aWVzLmggdHJlZS5oIEhUTUxwYXJzZXIuYzogcmVtb3ZlZAotCSAgLS13aXRob3V0LWNvcmJhLCBtYWRlIHRoZSBfcHJpdmF0ZSBmaWVsZCBtYW5kYXRvcnkKLQotV2VkIEp1biAyMCAxOTozNzoyNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmMgZW5jb2RpbmcuYzogU2luY2UgTm90ZXBhZCBvbiBXaW4yawotCSAgb3V0cHV0cyBhIEJPTSBpbiBVVEY4LCBhbiBlcnJhdGEgaGFzIGJlZW4gaXNzdWVkIHRvIGF2b2lkIHRoZQotCSAgcHJvYmxlbSwgdGhhdCB3YXMgdGhlIG1vc3QgcmVhc29uYWJsZSBzb2x1dGlvbi4uLiBBZGQgc3VwcG9ydAotCSAgZm9yIGEgbGVhZGluZyBVVEY4IEJPTSBpbiBlbnRpdGllcy4KLQotV2VkIEp1biAyMCAxNTozODo1OSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuYzogZml4ZWQgYSBidWcgZm91bmQgd2hlbiBwb3N0IHZhbGlkYXRpbmcgYW4gZW50aXR5IHJlZgotCSogeG1sbGludC5jOiBhZGRlZCAtLWxvYWRkdGQgYW5kIHNsaWdseSBjaGFuZ2VkIC0tcG9zdHZhbGlkIHRvCi0JICBhY3RpdmF0ZSBpdCB0b28KLQotVHVlIEp1biAxOSAyMDowMzo0MCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jIHhpbmNsdWRlLmMgeHBvaW50ZXIuYzogYnVnICM1NjQwMiBleHBvc2VkIGEgbnVtYmVyIG9mCi0JICB3ZWFrbmVzcyBpbiB0aGUgbm9kZSBjb3B5IHRoZSBYUG9pbnRlciBhbmQgdGhlIFhJbmNsdWRlCi0JICBpbXBsZW1lbnRhdGlvbnMuIFNlcmlvdXMgY2xlYW51cC4KLQotVHVlIEp1biAxOSAxNDo1MDoxOCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW06IEtqYXJ0YW4gTWFyYWFzIHByb3ZpZGVkIGEgc21hbGwgcGF0Y2ggdG8KLQkgIGFkZCB4bWwyLWNvbmZpZy5pbiB0byBFWFRSQV9ESVNUCi0KLVR1ZSBKdW4gMTkgMTM6MDQ6MTAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmMgdHJlZS5jIHBhcnNlckludGVybmFscy5jIHBhcnNlci5jOiBTdGVwaGFuIEt1bG93Ci0JICBwcm92aWRlZCBhbm90aGVyIGZhaWxpbmcgY2FzZSBmb3VuZCBpbiBLREUsIHRoZSB3YXkgdGhlCi0JICBjdHh0LT52Y3R4dC5ub2RlVGFiIHdhcyBhbGxvY2F0ZWQgYW5kIGZyZWVkIGNoYW5nZWQgb3ZlcgotCSAgdGltZSBidXQgaXQgd2Fzbid0IGNvbXBsZXRlbHkgY2xlYW5lZCB1cC4gVGhpcyBzaG91bGQgZml4IGl0LgotCi1TdW4gSnVuIDE3IDE5OjU2OjMzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogU3RlcGhhbiBLdWxvdyBhbHNvIHJhaXNlZCB0aGUgZmFjdCB0aGF0IGxpbmUgbnVtYmVyCi0JICBjb3VsZCBnZXQgbWlzY291bnRlZCBtYWtpbmcgZGVidWcgaGFyZGVyLCBmaXhlZCB0aGUgcHJvYmxlbQotCSAgaW4geG1sUGFyc2VDaGFyRGF0YSgpCi0KLVN1biBKdW4gMTcgMTk6MTc6MjYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IFN0ZXBoYW4gS3Vsb3cgcG9pbnRlZCBvdXQgYSBwcm9ibGVtIHdoZW4gdmFsaWRhdGluZwotCSAgYW5kIHVzaW5nIGFuIGVtcHR5IGVudGl0eSwgZm9yZ290IGEgJ2JyZWFrJyBpbiBhIGNhc2UuCi0KLVN1biBKdW4gMTcgMTY6NDc6NDAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogZml4ZWQgeG1sSGFzTnNQcm9wKCkgYWNjb3JkaW5nbHkgdG8gYnVnICM1NTY4MwotCSogZG9jL3htbC5odG1sOiB1cGRhdGVkIHdpdGggMi4zLjExCi0KLVN1biBKdW4gMTcgMTI6MjQ6MTEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIFRPRE86IHVwZGF0ZWQgYWRkaW5nIGNsZWFudXAgb2YgZ2VuZXJhdGVkIGRvYwotCSogY29uZmlndXJlLmluOiBwcmVwYXJlZCB0byByZWxlYXNlIDIuMy4xMQotCSogeG1sbGludC5jOiBhZGRlZCAtLXZlcnNpb24gZm9yIGJ1ZyByZXBvcnRpbmcKLQkqIGRvYy9odG1sLyouaHRtbDogcmVidWlsdCB0aGUgZG9jCi0KLVNhdCBKdW4gMTYgMjM6MjM6MzMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGZpcnN0IHBhcnQgb2YgdGhlIHdvcmsgb24gc2VsZWN0aW5nIG5hbWVzcGFjZSB0bwotCSAgZml4IGJ1ZyAjNTYxMTUgCi0KLVNhdCBKdW4gMTYgMDA6MjA6NDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIE1ha2VmaWxlLmFtIGV4YW1wbGUvTWFrZWZpbGUuYW06IExhc3psbyBQRVRFUiBwcm92aWRlZCBhIGZpeAotCSAgd2hlbiB1c2luZyAtbGljb252Ci0JKiBUT0RPOiB1cGRhdGVkCi0KLUZyaSBKdW4gMTUgMDc6MDg6NTcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLltjaF06IG1vcmUgd29yayBvbiB0aGUgSFRNTCBzZXJpYWxpemF0aW9uIHJvdXRuZXMsCi0JICBjbGVhbnVwLCBlbmNvZGluZyBzdXBwb3J0LgotCi1UaHUgSnVuIDE0IDEwOjMxOjE3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBUaG9tYXMgQnJveWVyIHN1Z2dlc3RlZCBhIGJldHRlciBwYXRjaCBmb3IgdGhlIC8gYXJnCi0KLVRodSBKdW4gMTQgMDE6MDE6MzAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGJ1ZyBkZXRlY3RlZCBieSBBbmtoIHdoZW4gLyBpcyB1c2VkIGFzIGEgZnVuY3Rpb24gYXJnCi0KLVdlZCBKdW4gMTMgMjM6MDg6NDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuW2NoXSBIVE1MdHJlZS5jOiBzdG9yZWQgdGhlIGlubGluZS9ibG9jayBwcm9wZXJ0eQotCSAgb2YgZWxlbWVudCBhbmQgdXNlIGl0IHRvIGF2b2lkIG91dHB1dHRpbmcgZm9ybWF0dGluZyBzcGFjZXMgYXQKLQkgIHRoZSB3cm9uZyBwbGFjZS4gSW1wbGVtZW50ZWQgdGhlIGZvcm1hdCBwYXJhbWV0ZXIgZm9yIEhUTUwgc2F2ZS4KLQkqIHJlc3VsdC9IVE1ML2RvYzIuaHRtIHJlc3VsdC9IVE1ML2RvYzMuaHRtIHJlc3VsdC9IVE1ML2ZwNDAuaHRtCi0JICByZXN1bHQvSFRNTC9zY3JpcHQuaHRtbCByZXN1bHQvSFRNTC90ZXN0Mi5odG1sIHJlc3VsdC9IVE1ML3Rlc3QzLmh0bWwKLQkgIHJlc3VsdC9IVE1ML3dpcmVkLmh0bWw6IG9mIGNvdXJzZSB0aGlzIGltcGFjdCB0aGUgcmVzdWx0IG9mIGEKLQkgIG51bWJlciBvZiBIVE1MIHRlc3RzCi0KLVRodSBKdW4gMTQgMDk6NDk6MDkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLltjaF06IHN0YXJ0ZWQgYXVnbWVudGluZyB0aGUgSFRNTCBzYXZlIEFQSSB3aXRoCi0JICBlbmNvZGluZyBhbmQgZm9ybWF0dGluZyBwYXJhbWV0ZXJzCi0KLVdlZCBKdW4gMTMgMDk6NDQ6MTUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLmg6IGNsZWFudXAgYW5kIHN0YXJ0ZWQgZXZhbHVhdGluZyB0aGUgd29yayBuZWVkZWQgb24KLQkgIHJldmFtcGluZyB0aGUgSFRNTCBvdXRwdXQgY29kZQotCi1Nb24gSnVuIDExIDE5OjI5OjQwIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBET0NCcGFyc2VyLmM6IGhhbmRsaW5nIG9mIFBJcyBhbmQgPD9zZ21sLWRlY2xhcmF0aW9uIGluIGVudGl0aWVzLgotCi1UdWUgSnVuIDEyIDA4OjQ2OjI4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB2YWxpZC5jOiBmaXhlZCBidWcgIzU2MDQ5LCBmb3Jnb3Qgb25lIGNoZWNrIGluIHRoZQotCSAgdmFsaWRhdGlvbiByb3V0aW5lCi0KLVR1ZSBKdW4gMTIgMDg6MDk6NDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuW2NoXTogZ3JyciAuLi4gbmFtZXNwYWNlIGlzIGEgQysrIHJlc2VydmVkIGtleXdvcmQKLQotVHVlIEp1biAxMiAwNjoyOTozOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogbGlieG1sLmg6IGZpeGVkIGFuIGVycm9yIGluIGxhc3QgY29tbWl0Ci0JKiBkb2MvRkFRLmh0bWw6IGFkZGVkIGFuIGVudHJ5IGZvciBjb21waWxhdGlvbiBmcm9tIENWUwotCi1Nb24gSnVuIDExIDEwOjA3OjI5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWx2ZXJzaW9uLmguaW4gbGlieG1sLmg6IEN5Z3dpbiBwYXRjaGVzCi0JKiB0cmVlLmM6IHhtbEZyZWVOb2RlTGlzdCBwYXRjaCBzaW1pbGFyIHRvIHhtbEZyZWVOb2RlIG9uZQotCSogdHJlZS5oOiBjbGVhbnVwCi0KLVNhdCBKdW4gIDkgMTk6MTY6MDAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogcGF0Y2hlZCB4bWxGcmVlTm9kZSgpIHRvIGF2b2lkIGZyZWVpbmcoKSBhIHN0YXRpYwotCSAgbWVtb3J5IGJsb2NrIGluIGEgc3RyYW5nZSBjYXNlIHdoZXJlIGxpYnhtbCBpcyBsaW5rZWQgdHdpY2UKLQkgIGluIHRoZSBiaW5hcnkuCi0KLVNhdCBKdW4gIDkgMTg6Mzk6MDMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IChhPyAsIGI/ICwgYz8gLCAuLi4gLCB6Pykgd2FzIHN0b3JpbmcvcmVzdGF1cmluZwotCSAgc3RhdGUgZmFyIHRvbyBvZnRlbiwgc2ltcGxlIGZpeCB1c2VkIHRvIGF2b2lkIGl0LgotCi1TYXQgSnVuICA5IDE2OjEwOjM2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4aW5jbHVkZS5jOiBSYXBoYWVsIEhlcnR6b2cgaGFkIGEgdHJvdWJsZSB3aXRoIERURCBub2RlcwotCSAgYmVpbmcgcHJvY2Vzc2VkLCBhcHBsaWVkIGhpcyBwYXRjaAotCSogdHJlZS5jOiBmaXhlZCBhIGJ1ZyByYWlzZWQgaW4geG1sU3RhdGljQ29weU5vZGVMaXN0KCkKLQotU2F0IEp1biAgOSAxNTo1MDoxMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogbmFub2Z0cC5jIG5hbm9odHRwLmMgdXJpLmMgaW5jbHVkZS93aW4zMmNvbmZpZy5oOiBJZ29yICBabGF0a292aWMKLQkgIHByb3ZpZGVkIGZpeGVzIHRvIGNvbXBpbGUgb24gTVNDQyBhZ2FpbgotCSogd2luMzIvbGlieG1sMi9saWJ4bWwyLmRlZi5zcmMgd2luMzIvbGlieG1sMi9saWJ4bWwyKi5kc3A6IGhlCi0JICBhbHNvIHByb3ZpZGVkIGFuIHVwZGF0ZSBmb3IgdGhlIHByb2plY3QgZmlsZXMuCi0KLVRodSBKdW4gIDcgMjE6NTI6MTAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogYXBwbGllZCBTdGV2ZSBUaW5uZXkgcGF0Y2ggdG8geG1sTmV3TnNQcm9wIHRvIGZpeAotCSAgYnVnICM1NTgxMAotCi1UaHUgSnVuICA3IDIxOjI5OjM5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmM6IGZpeGVkIHhtbEdldE5zUHJvcCgpIHRvIGNsb3NlIGJ1ZyAjNTU2ODMKLQkgIE5vdGUgdGhpcyByZXF1aXJlcyBsaWJ4c2x0IHRvIHVzZSBpdCdzIG93biBmdW5jdGlvbiBpbnN0ZWFkLgotCi1UaHUgSnVuICA3IDE4OjA2OjM0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1MdHJlZS5jOiB3aGVuIGluIGEgcHJlIGVsZW1lbnQgbm8gZm9ybWF0dGluZyBzcGFjZSBzaG91bGQKLQkgIGJlIGFkZGVkLgotCSogdGVzdC9IVE1ML3ByZS5odG1sIHJlc3VsdC9IVE1ML3ByZS5odG1sKjogYWRkZWQgYSByZWdyZXNzaW9uIHRlc3QKLQotVGh1IEp1biAgNyAxNzoyOTozOCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBhZGRlZCB0ZXN0cyBmb3Igc2lnbmFsKCkgYW5kIHNpZ25hbC5oCi0KLUZyaSBKdW4gIDggMTA6MTc6MTUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IHJvYmVydCBwb2ludGVkIG91dCB4bWxYUGF0aE5JTkYgd2FzIG5vdCBpbml0aWFsaXplZAotCi1GcmkgSnVuICA4IDEwOjAxOjQ1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBkb2MvbGlieG1sLWRvYy5lbDogRmVsaXggTmF0dGVyIHByb3ZpZGVkIGEgbmV3IHZlcnNpb24gZm9yCi0JICBsaWJ4bWwyCi0KLUZyaSBKdW4gIDggMDc6MjA6NDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLmM6IHdoZW4gaW4gYSBwcmUgZWxlbWVudCBubyBmb3JtYXR0aW5nIHNwYWNlIHNob3VsZAotCSAgYmUgYWRkZWQuCi0KLVdlZCBKdW4gIDYgMTg6MDc6MzYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogYWRkIC1taWVlZSB0byBDRkxBR1Mgd2hlbiBjb21waWxpbmcgb24gTGludXgvYWxwaGEKLQotVGh1IEp1biAgNyAwNjo0NDowMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogRE9DQnBhcnNlci5jOiBpbXBsZW1lbnRlZCB0aGUgPD9zZ21sLWRlY2xhcmF0aW9uIGVuY29kaW5nPSJ4eHgiPz4KLQkgIGhhY2sKLQkqIHRyZWUuW2NoXTogYWRkZWQgeG1sSGFzTnNQcm9wIGFzIHN1Z2dlc3RlZCBpbiBidWcgcmVwb3J0ICM1NTY1MyAKLQkqIHVyaS5jOiBmaXhlZCBhIHdhcm5pbmcKLQotVHVlIEp1biAgNSAyMjo1NDoyMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogSFRNTHRyZWUuYzogdHJ5aW5nIHRvIGNsb3NlIGJ1ZyAjNTU3NzIgZXNjYXBpbmcgaW4gc2NyaXB0Ci0JICBlbGVtZW50cwotCSogZG9jL3htbC5odG1sOiBzdWdnZXN0IHRvIHNlbmQgbWFpbCB0byB0aGUgbGlzdAotCi1UdWUgSnVuICA1IDE5OjExOjAyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBlcnJvci5jOiBhdHRlbXB0IHRvIGZpeCB0aGUgeG1sR2V0VmFyU3RyIGJyZWFrYWdlIG9uY2UgYW5kIGZvcgotCSAgZ29vZC4gVXNlIGEgbWFjcm8gYW5kIGJhc2VkIG9uIHRoZSBzb2x1dGlvbiBwcm92aWRlZCBpbiAKLQkgIHZzbnByaW50ZiBtYW51YWwgcGFnZSBmcm9tIEdOVS4KLQotVHVlIEp1biAgNSAxNDo0NjoxMCBDRVNUIDIwMDEgQmpvcm4gUmVlc2UgPGJyZWVzZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLQkqIGVycm9yLmM6IFdvcmthcm91bmQgZm9yIG5vbi1wcmVzZXJ2aW5nIHZhcmlhZGljIGxpc3QuCi0JKiB0cmlvLmMgdHJpby5oIHRyaW9wLmggc3RyaW8uYyBzdHJpby5oOiBVcGdyYWRlZCB0byB0cmlvIGJhc2VsaW5lIDEuNAotCi1TYXQgSnVuICAyIDA2OjEyOjMzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBkb2MveG1sLmh0bWw6IGFkZGVkIDIuMy4xMCByZWxlYXNlCi0KLUZyaSBKdW4gIDEgMTE6Mjc6MTEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcmVsZWFzaW5nIDIuMy4xMAotCi1UaHUgTWF5IDMxIDIwOjQyOjM5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWxJTy5jOiBHYXJ5IFBlbm5pbmd0b24gc3BvdHRlZCBhIGZldyB0cm91YmxlcyB3aXRoIGZpbGU6Ly8vCi0KLVRodSBNYXkgMzEgMjA6MTg6NTkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGVuY29kaW5nLmM6IFJvYmVydCBDb2xsaW5zIHByb3ZpZGVkIGEgcGF0Y2ggdG8gYWRkIHRoZQotCSAgIlVTLUFTQ0lJIiBlbmNvZGluZyBhbGlhcwotCi1XZWQgTWF5IDMwIDIxOjEyOjQ1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jIGVuY29kaW5nLltjaF06IFdpbGxpYW0gTS4gQnJhY2sgcHJvdmlkZWQgYSBzZXQgb2YgVVRGOAotCSAgc3RyaW5nIG9yaWVudGVkIGZ1bmN0aW9ucyBhbmQgc3RhcnRlZCBjbGVhbmluZyB0aGUgcmVsYXRlZCBhcmVhcwotCSAgaW4geHBhdGguYyB3aGljaCBuZWVkZWQgZml4aW5nIGluIHRoaXMgcmVzcGVjdAotCi1XZWQgTWF5IDMwIDIwOjMwOjQ3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1MdHJlZS5jOiBhcHBsaWVkIHBhdGNoIGZyb20gSmFyb3NsYXcgS29sYWtvd3NraSB0byBjbG9zZSBidWcKLQkgICM1NTM4MAotCSogdHJlZS5jOiBwYXRjaCB0byB4bWxOb2RlR2V0Q29udGVudCgpIHRvIGdldCBDREFUQSBzZWN0aW9uIGNvbnRlbnQKLQotTW9uIE1heSAyOCAxMjo1NjoyOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogVE9ETzogdXBkYXRlZAotCSogbmFub2h0dHAuW2NoXSA6IHN0YXJ0ZWQgYWRkaW5nIEFQSXMgdG8gZ2V0IHRoZSByZWRpcmVjdGVkIFVSTAotCSAgd2hlbiB0aGlzIG9jY3VycyAobmVlZGVkIGZvciBmdXJ0aGVyIGJhc2UgY29tcHV0YXRpb24KLQkqIHRyZWUuaDogY2xlYW51cAotCSogZW5jb2RpbmcuYzogY2xlYW51cAotCSogU0FYLmM6IG1pbm9yIGNoYW5nZSBhcm91bmQgY3R4dC0+bG9hZHN1YnNldAotCi1GcmkgTWF5IDI1IDA5OjM2OjI2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBNYWtlZmlsZS5hbSBpbmNsdWRlL01ha2VmaWxlLmFtOiBzbWFsbCBjaGFuZ2UgdG8gaGF2ZQotCSAgaW5jbHVkZS9saWJ4bWwgcmVidWlsdCBpZiB3b3JraW5nIGZyb20gQ1ZTLgotCSogdXJpLmM6IGFwcGxpZWQgYW5vdGhlciBwYXRjaCBmcm9tIENhcmwgRG91Z2xhcyBmb3IgVVJJIGVzY2FwaW5nLAotCSAgdGhpcyBzaG91bGQgY2xvc2UgYnVnICM1MTg3NgotCi1XZWQgTWF5IDIzIDE1OjQwOjI3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4aW5jbHVkZS5jOiBmaXhlZCBYSW5jbHVkZSByZWN1cnNpdmUgYmVoYXZpb3VyIGJ1ZyAjNTQ2NzgKLQkqIHJlc3VsdC9YSW5jbHVkZS9yZWN1cnNpdmUueG1sIHRlc3QvWEluY2x1ZGUvZG9jcy9yZWN1cnNpdmUueG1sCi0JICB0ZXN0L1hJbmNsdWRlL2VudHMvaW5jLnR4dCB0ZXN0L1hJbmNsdWRlL2VudHMvc3ViLWluYy5lbnQ6Ci0JICBhZGRlZCBzcGVjaWZpYyByZWdyZXNzaW9uIHRlc3QKLQkqIHBhcnNlci5oOiBwcmVwYXJpbmcgZm9yIHRoZSBYU0xUIG1vZGUgd2hlcmUgRFREIGluaGVyaXRlZAotCSAgYXR0cmlidXRlcyBhcmUgYWRkZWQgdG8gdGhlIHRyZWUuCi0KLVdlZCBNYXkgMjMgMTM6NTk6MTkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhpbmNsdWRlLltjaF06IFVwZGF0ZWQgdGhlIG5hbWVzcGFjZSBmb3IgdGhlIExhc3QgQ2FsbCB2ZXJzaW9uCi0JKiByZXN1bHQvWEluY2x1ZGUvaW5jbHVkZSB0ZXN0L1hJbmNsdWRlL2luY2x1ZGU6IHVwZGF0ZWQgdGhlCi0JICB0ZXN0c3VpdGUgYWNjb3JkaW5nbHkKLQotV2VkIE1heSAyMyAxMjoyNzo0NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdXJpLltjaF06IGFwcGxpZWQgYSBwYXRjaCBmcm9tIENhcmwgRG91Z2xhcyBmb3IgVVJJIGVzY2FwaW5nLAotCSAgcmVsYXRlZCB0byBidWcgIzUxODc2Ci0KLVR1ZSBNYXkgMjIgMTg6NDY6NTYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogZml4ZWQgYSBncm9zcyBtaXN0YWtlIGluIGJhc2UgY29tcHV0YXRpb24sIHhtbDpiYXNlIGlzCi0JICBub3QgY29tcGxldGVseSBjb3JyZWN0IHlldCAobmVlZCBjYXNjYWRlKS4KLQkqIHhwYXRoLltjaF06IGFkZGVkIHRoZSBmZXcgdGhpbmdzIG5lZWRlZCB0byBmaW5kIGEgZnVuY3Rpb24gbmFtZQotCSAgYW5kIFVSSSBmcm9tIHRoZSBYUGF0aCBjb250ZXh0IHdoZW4gaXQgaXMgY2FsbGVkLgotCi1UdWUgTWF5IDIyIDE3OjAwOjM2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjYXRhbG9nLltjaF06IGZpeGVzIGFuZCBhZGQgeG1sTG9hZENhdGFsb2dzKCkKLQkqIERPQ0JwYXJzZXIuYzogc21hbGwgY2xlYW51cAotCSogeG1sbGludC5jOiBhZGRlZCBhIC0tY2F0YWxvZ3Mgb3B0aW9uIHRvIGxvYWQgY2F0YWxvZ3MgZnJvbQotCSAgJFNHTUxfQ0FUQUxPR19GSUxFUwotCSogdHJlZS5jOiBjbGVhbnVwCi0JKiBjb25maWd1cmUuaW46IGljb252IGxpYnJhcnkgZml4dXAsIElDT05WX0xJQlMgCi0KLU1vbiBNYXkgMjEgMTY6MDU6MjIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNhdGFsb2cuYzogaGFuZGxpbmcgb2YgQ0FUQUxPRyBlbnRyaWVzLiBkZXRlY3Rpb24gb2YgcmVjdXJzaW9uLAotCSAgYW5kIGEgZmV3IGJ1Z2ZpeGVzCi0JKiB4cGF0aC5jOiBmaXhpbmcgYnVnICM1NDk1MSBRTkFNRSB3aXRoIG5vIHByZWZpeCBzaG91bGQgbm90IG1hdGNoCi0JICBhZ2FpbnN0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZQotCi1Nb24gTWF5IDIxIDEwOjE0OjA3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBKb2UgT3J0b24gcmVwb3J0ZWQgYSBidWcgZm91bmQgd2l0aCBJUkl4IGNvbXBpbGVyLgotCi1TdW4gTWF5IDIwIDE1OjE1OjQ2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgcHJvcGFnYXRpb24gY29udGV4dCBpbmZvIHdoZW4gcGFyc2luZyBhbgotCSAgZXh0ZXJuYWwgZW50aXR5LgotCSogZG9jL2h0bWwvKi5odG1sOiByZWdlbmVyYXRlZCBhIGNvdXBsZSBvZiBkb2NzCi0KLVNhdCBNYXkgMTkgMTc6MTE6MTUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy94bWwuaHRtbDogdXBkYXRlIHdpdGggMi4zLjkgaW5mb3JtYXRpb25zCi0KLVNhdCBNYXkgMTkgMTY6NTA6NDcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLmggZGVidWdYTUwuaCBwYXJzZXJJbnRlcm5hbHMuaCB0cmVlLmggdmFsaWQuYwotCSAgeG1sdmVyc2lvbi5oLmluIHhwYXRoSW50ZXJuYWxzLmggeHBhdGguaDogc29tZSBjbGVhbnVwIGZvciBndGstZG9jCi0JKiBkb2MvaHRtbC8qIDogcmVidWlsdCB0aGUgZG9jcwotCSogdmFsaWQuYzogc21hbGwgcGF0Y2ggd2hpY2ggbWF5IGltcHJvdmUgc29tZSBjYXNlIHdoZW4KLQkgIHZhbGlkYXRpbmcuCi0KLVNhdCBNYXkgMTkgMTU6MjA6MDMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuYzogQ2xvc2VkIGJ1ZyAjNTQ4OTEKLQkqIHJlc3VsdC9IVE1ML2NmXzEyOC5odG1sKiB0ZXN0L0hUTUwvY2ZfMTI4Lmh0bWw6IGFkZGVkIHRoZSB0ZXN0Ci0JICB0byB0aGUgc3VpdGUKLQotVGh1IE1heSAxNyAxNDoxNTowNyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZW5jb2RpbmcuaCBoYXNoLmMgbmFub2Z0cC5oIHBhcnNlci5oIHRyZWUuaCB1cmkuaCB4bGluay5oIHhwb2ludGVyLmM6Ci0JICBhcHBsaWVkIGEgZG9jdW1lbnRhdGlvbiBwYXRjaCBmcm9tIExvdFIgYW5kIGZpbGxlZCBpbiBhIGZldyBtaXNzaW5nCi0JICBkZXNjcmlwdGlvbnMKLQotV2VkIE1heSAxNiAyMzowMjo0MSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYyB0cmVlLmMgcGFyc2VyLmM6IHNwZWVkIG9wdGltaXphdGlvbnMgYXQgdGhlIHBhcnNlciBsZXZlbAotCSAgZG9jdW1lbnQgdHJlZSBmcmVlaW5nIGFuZCB4cGF0aCBldmFsdWF0aW9uCi0KLVdlZCBNYXkgMTYgMTI6NTU6NDggQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jIHBhcnNlci5oIHBhcnNlckludGVybmFscy5oOiBmaXhlZCBhIGNvdXBsZSBvZgotCSAgaW50ZXJmYWNlcyBmb3IgaGFuZGxpbmcgbWVtb3J5IGJ1ZmZlciBpbnB1dCB0byBjb25zdCBjaGFyICoKLQkgIHVwb24gc3VnZ2VzdGlvbiBvZiBKYW1lc0guCi0KLVR1ZSBNYXkgMTUgMTc6MjI6MjcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogTG9UUiBzZW50IGEgcGF0Y2ggZml4aW5nIHRoZSBwcmV2aW91cyBjb21taXQgCi0KLVR1ZSBNYXkgMTUgMTQ6NDA6MDQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogdHJ5aW5nIHRvIGRlYWwgYWdhaW4gd2l0aCB0aGUgc3Rvb3BpZCAtUiBsaW5raW5nCi0JICBmbGFnIG9mIFNvbGFyaXMKLQotVHVlIE1heSAxNSAxMjo0OTo1MCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguaDogdHdvIG5vZGVzZXQgYWNjZXNzIG1hY3JvcyBmcm9tIFRob21hcyBCcm95ZXIKLQotVHVlIE1heSAxNSAxMTo0MjozOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYyB4cGF0aC5oIHhwYXRoSW50ZXJuYWxzLmg6IGFwcGx5IGFuIFhQYXRoIEFQSSBjbGVhbnVwCi0JICBwYXRjaCBmcm9tIFRob21hcyBCcm95ZXIKLQotVHVlIE1heSAxNSAxMDo1MjoxOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuYyB0ZXN0L1ZDTS92MlszNF0ueG1sOiBGaXhlZCBidWcgIzU0NjMxIGFkZGVkIHNwZWNpZmljIHRlc3QKLQkgIGNhc2UKLQkqIElOU1RBTEw6IHdhcyBlbXB0eSBhZGRlZCBzdHVmZiBmcm9tIHRoZSBGQVEKLQotRnJpIE1heSAxMSAxOTozNzozMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5bY2hdOiBmaXhpbmcgYnVnICM1NDQ0NiwgYnkgY2xlYW5pbmcgc29tZSBidWdzIGluIHRoZQotCSAgYXR0cmlidXRlcyBoYW5kbGluZyBhbmQgIzU0NDMzIGJ5IGFkZGluZyB4bWxVbnNldFByb3AoKQotCSAgYW5kIHhtbFVuc2V0TnNQcm9wKCkKLQotRnJpIE1heSAxMSAxNjowNzoxMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogSFRNTHBhcnNlci5jOiBQYXRjaCBmcm9tIEpvbmFzIEJvcmdzdHL2bQotCShodG1sR2V0RW5kUHJpb3JpdHkpOiBOZXcgZnVuY3Rpb24sIHJldHVybnMgCi0JdGhlIHByaW9yaXR5IG9mIGEgY2VydGFpbiBlbGVtZW50LgotCShodG1sQXV0b0Nsb3NlT25DbG9zZSk6IE9ubHkgY2xvc2UgaW5saW5lIGVsZW1lbnRzIGlmIHRoZXkgCi0JYWxsIGhhdmUgbG93ZXIgb3IgZXF1YWwgcHJpb3JpdHkuCi0JKiByZXN1bHQvSFRNTDogdGhpcyBvZiBjb3Vyc2UgY2hhbmdlZCBhIG51bWJlciBvZiB0ZXN0cyByZXN1bHRzLgotCi1UaHUgTWF5IDEwIDE3OjMwOjIyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWxJTy5jIGNhdGFsb2cuYzogcGx1Z2dlZCBpbiB0aGUgZGVmYXVsdCBjYXRhbG9nIHJlc29sdXRpb24KLQkqIGRvYy9nbm9tZS14bWwuc2dtbDogbGlua2VkIGluIHRoZSBEb2Nib29rIHBhcnNlciBhbmQgY2F0YWxvZwotCSAgZG9jdW1lbnRhdGlvbnMKLQkqIGRvYy9odG1sL2xpYnhtbC0qLmh0bWw6IHJlYnVpbGQgYWRkZWQgdGhlIG1pc3Npbmcgb25lcyB0byBDVlMKLQotVGh1IE1heSAxMCAxNjoxNDozNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW0geG1sdmVyc2lvbi5oLmluIGNvbmZpZ3VyZS5pbiBpbmNsdWRlL01ha2VmaWxlLmFtOgotCSAgaW50ZWdyYXRpbmcgY2F0YWxvZ3MKLQkqIGNhdGFsb2cuW2NoXSB0ZXN0Q2F0YWxvZy5jOiBhZGRpbmcgYSBzbWFsbCBjYXRhbG8gQVBJCi0JICAob25seSBTR01MIGNhdGFsb2cgc3VwcG9ydCkuCi0JKiBwYXJzZXIuYzogcmVzdGF1cmVkIHhtbEtlZXBCbGFua3NEZWZhdWx0KDApIEFQSQotCi1XZWQgTWF5ICA5IDEyOjUwOjE1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmM6IHpiQGJpc3AuY29tIHJlcG9ydGVkIGFuIGVycm9yIGluIHhtbE5vZGVHZXRMYW5nKCkKLQotVHVlIE1heSAgOCAxMjozMTo0MCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IGFkZGVkIHhtbFBhcnNlRXh0ZXJuYWxFbnRpdHlQcml2YXRlKCkgdG8gYWxsb3cKLQkgIHByb3BhZ2F0aW9uIG9mIGN0eHQtPl9wcml2YXRlIHdoZW4gcGFyc2luZyBleHRlcm5hbCBlbnRpdGllcwotCi1UdWUgTWF5ICA4IDEwOjI2OjIyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1MdHJlZS5jOiBmaXhlZCB0aGUgYnVnIHJlcG9ydGVkIGJ5IEJqb3JuIGluIGh0bWxOb2RlRHVtcAotCi1UdWUgTWF5ICA4IDA5OjMwOjEyIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IGZpeGVkIGEgc21hbGwgcG9ydGFiaWxpdHkgcHJvYmxlbSB3aXRoIEFNX0NPTkRJVElPTkFMCi0KLU1vbiBNYXkgIDcgMjI6NDQ6NDUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IHdhcm4gd2hlbiBpbmRldGVybWluaXN0IGNvbnRlbnQgbW9kZWwgaXMgZGV0ZWN0ZWQKLQkqIHJlc3VsdC9WQy9FbGVtZW50VmFsaWQ4OiB0aGlzIGFkZHMgYSBtZXNzYWdlCi0JKiBNYWtlZmlsZS5hbTogYWRkIC0tbm92YWxpZCBmb3IgVkNNIHRlc3RzCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogYWRkZWQgYSBjYWxsIHRvIEluaXQgbWVtb3J5IAotCi1GcmkgTWF5ICA0IDE5OjUxOjE1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIGh0bWxOZXdEb2MgU1lTVEVNIGFuZCBQVUJMSUMgSUQgaW52ZXJzaW9uCi0JICB3aGVuIGJvdGggcGFyYW1ldGVycyBhcmUgTlVMTC4KLQotRnJpIE1heSAgNCAxNzoxOTozOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuYzogYXBwbGllZCBzbWFsbCBwYXRjaCBmcm9tIEdhcnkgUGVubmluZ3RvbiwgcmVpbmRlbnRlZAotCSAgc29tZSBwYXJ0IG9mIHRoZSBjb2RlLgotCi1UaHUgTWF5ICAzIDEzOjEwOjQzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW4gZG9jL3htbC5odG1sIGRvYy9odG1sLyo6IHByZXBhcmluZyBmb3IgMi4zLjgKLQkgIHJlbGVhc2UsIHVwZGF0ZWQgYW5kIHJlZ2VuZXJhdGVkIHRoZSBkb2NzCi0KLVRodSBNYXkgIDMgMTI6NDc6NDYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmMgcmVzdWx0L1hQYXRoL2V4cHIvZmxvYXRzIDogY2xhcmlmaWVkIGFuZCBjbGVhbnVwCi0JICBwcmludGluZyBvZiBhYm5vcm1hbCBmbG9hdHMgaW4gdGVzdHMuCi0KLVRodSBNYXkgIDMgMTA6MjU6MTkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuYzogdHJ5aW5nIHRvIGZpeCB0aGUgcHJvYmxlbSByZXBvcnRlZCBieSBKb25hcyBCb3Jnc3Ry9m0KLQkqIHJlc3VsdHMvSFRNTC8gOiBhIGZldyBjaGFuZ2VzIGluIHRoZSBvdXRwdXQgb2YgdGhlIEhUTUwgdGVzdHMgYXMKLQkgIGEgcmVzdWx0LgotCSogY29uZmlndXJlLmluOiB0eWluZyB0byBmaXggLWxpY29udiB3aGVyZSBuZWVkZWQKLQotV2VkIE1heSAgMiAxOToxMDoyNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW06IGZpeGVkIGEgc3R1cGlkIGVycm9yCi0KLVdlZCBNYXkgIDIgMTg6Mzk6MzkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5hbTogbWFrZSB0aGUgaW5jbHVzaW9uIG9mIHRoZSB0cmlvCi0JICBtb2R1bGVzIGluIHRoZSBsaWJyYXJ5IGNvbmRpdGlvbmFsCi0KLVdlZCBNYXkgIDIgMTQ6Mzk6NTcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIERPQ0JwYXJzZXIuYzogcGF0Y2hlIGZyb20gIEzhc3ps8yBLb3bhY3MsIGZpeGVkIGVudGl0aWVzIHJlZnMKLQkgIGluIGF0dHJpYnV0ZXMgaGFuZGxpbmcKLQotV2VkIE1heSAgMiAxMjo1NjowNCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sSU8uYzogQmpvcm4gUmVlc2UgcHJvdmlkZWQgYSBmaXggZm9yIGEgcHJvYmxlbSBvbiBidWZmZXIKLQkgZmx1c2hpbmcKLQotTW9uIEFwciAzMCAyMjoyOTozNCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4IG9mIGFuIFhTTFQgbmFtZXNwYWNlIGJ1ZyByZXBvcnRlZCBvbiB0aGUgbGlzdAotCSAgZ2VuZXJhbC9idWctOC0KLQotTW9uIEFwciAzMCAxOTo0Mjo1OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogc3RyaW8uaCB0cmlvLmM6IERhbiBNY05pY2hvbCBzdWdnZXN0ZWQgYSBjb3VwbGUgb2Ygc21hbGwKLQkgIGZpeGVzIGZvciBBSVggNC4zLjMgdXNpbmcgVmlzdWFsIEFnZSA1LjAuMiBjb21waWxlcgotCi1Nb24gQXByIDMwIDEzOjQ0OjQ4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmMgcGFyc2VyLmMgZW5jb2RpbmcuYzogc3BlbnQgYSBiaXQgbW9yZSB0aW1lIGxvb2tpbmcKLQkgIGF0IHRoZSBwYXJzaW5nIHNwZWVkIGFuZCBET00gaGFuZGxpbmcuIEFkZGVkIGEgZmV3IG1vcmUKLQkgIHNwZWVkdXBzLgotCi1TdW4gQXByIDI5IDIxOjUzOjQ3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogc21hbGwgYnV0IGVmZmVjdGl2ZSBwYXJzaW5nIHNwZWVkIGltcHJvdmVtZW50Ci0KLVN1biBBcHIgMjkgMTk6MDI6MTMgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogZGVmYXVsdCBvbiB0aGUgRG9jQm9vayBwYXJzZXIgaW5jbHVzaW9uIChmb3IgR25vbWUpCi0JKiBET0NCcGFyc2VyLmg6IGZpeGVkIGEgaGVhZGVyIHJlZmVyZW5jZQotCi1TYXQgQXByIDI4IDE5OjAwOjM5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW4geHBhdGguYzogYXBwbGllZCBCam9ybiBwYXRjaGVzIGZvciBGUEUgb24gdGhlCi0JICBhbHBoYQotCi1TYXQgQXByIDI4IDE4OjU0OjI4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLltjaF0geG1sSU8uaDogYXBwbGllZCBwYXRjaCBmcm9tIEpvZSBNY0FsZXJuZXkgdG8gYWRkCi0JICB4bWxTYXZlRm9ybWF0RmlsZVRvKCkKLQotU2F0IEFwciAyOCAxNjozMzowNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogc2ltcGxlIGFuZCBlZmZpY2llbnQgb3B0aW1pemF0aW9uLCBYUGF0aCBmdW5jdGlvbnMKLQkgIGF3YXlzIGJpbmQgdG8gdGhlIHNhbWUgY29kZSwgY2FjaGUgdGhpcwotCSogVE9ETzogdXBkYXRlZCAoYnkgc2F5aW5nIHNvbWUgaXMgb2Jzb2xldGUpCi0KLVNhdCBBcHIgMjggMTQ6MjM6MzAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IG1vcmUgY2xlYW51cCB3b3JrIG9uIFhQYXRoIG5hbWUgcGFyc2luZyByb3V0aW5lcwotCi1GcmkgQXByIDI3IDE5OjA2OjEzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXJJbnRlcm5hbHMuYyB4cGF0aC5bY2hdOiBzb21lIFVURjggY2xlYW51cCBvbgotCSAgeG1sWFBhdGhQYXJzZU5hbWUKLQkqIHhwYXRoLmM6IElnb3IgWmxhdGtvdmljIHN1Z2dlc3RlZCBhIGNoYW5nZSBmb3IgTkFOIGFuZCBNU0MKLQkqIGRlYnVnWE1MLmM6IGF2b2lkIGNvbXBpbGF0aW9uIHByb2JsZW1zIGlmIGNvbXBpbGluZyB3aXRob3V0Ci0JICBIVE1MIHN1cHBvcnQsIElnb3IgWmxhdGtvdmljCi0JKiB3aW4zMi9saWJ4bWwyL2xpYnhtbDIuZGVmLnNyYzogYmVpbmcgYWJsZSB0byBjb21waWxlIHdpdGhvdXQKLQkgIFhQYXRoIG9uIFdpbmRvd3MKLQotVGh1IEFwciAyNiAyMjo1MzowMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogbGlieG1sLm00OiB5ZXQgYW5vdGhlciBwYXRjaCBmcm9tIFRvc2hpbyBLdXJhdG9taQotCi1UaHUgQXByIDI2IDIxOjI3OjQzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBsaWJ4bWwubTQgbGlieG1sMi1zcGVjLmluOiBuZXcgcGF0Y2hlcyBmcm9tIFRvc2hpbyBLdXJhdG9taQotCi1UaHUgQXByIDI2IDIwOjUzOjQ4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLltjaF06IGFkZGVkIHhtbFNhdmVGb3JtYXRGaWxlIGludGVyZmFjZSBmb3Igc2F2aW5nCi0JICBhbmQgaW5kZW50aW5nIGEgZmlsZS4KLQotVGh1IEFwciAyNiAxNjozNTo1MyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4ZWQgYnVnICM1MzY4OSByZWxhdGVkIHRvIHByb2Nlc3NpbmctaW5zdHJ1Y3Rpb24oKQotCi1UaHUgQXByIDI2IDEyOjU3OjU4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBET0NCcGFyc2VyLmM6IHBhdGNoZSBmcm9tICBM4XN6bPMgS2924WNzCi0KLVRodSBBcHIgMjYgMTE6MzE6NTQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBhcHBsaWVkIGZpeGVzIGZyb20gQ2hyaXN0aWFuIEdsYWhuIGJ1ZyByZXBvcnQgIzUzMzkxCi0KLVRodSBBcHIgMjYgMTE6MTQ6NTYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGVycm9yLmM6IEplYW4gRnJhbudvaXMgTGVjb210ZSBwcm92aWRlZCBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uCi0JICBhbmQgYSBmaXggdG8gYnVnICM1MzUzNwotCi1UaHUgQXByIDI2IDA5OjQyOjU4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBsaWJ4bWwubTQ6IGFkZGVkIEFNX1BBVEhfWE1MMiBwcm92aWRlZCBieSBUb3NoaW8gS3VyYXRvbWkKLQotV2VkIEFwciAyNSAyMTowNTozMSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogRE9DQnBhcnNlci5jIFNBWC5jOiBhIGJpdCBtb3JlIHdvcmsgb24gZW50aXRpZXMgcHJvY2Vzc2luZy4KLQkgIFN0aWxsIE5lZWQgdG8gY2xlYW51cCBYTUwgb3V0cHV0IGFuZCByZWZlcmVuY2VzIGluIGF0dHJpYnV0ZXMKLQotV2VkIEFwciAyNSAxNzo1MjoyNyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogRE9DQnBhcnNlci5jIGluY2x1ZGUvTWFrZWZpbGUuYW06IHR3byBwYXRjaGVzIGZyb20gIEzhc3ps8yBLb3bhY3MKLQotV2VkIEFwciAyNSAxNDo1NjoyNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jOiB0cnlpbmcgdG8gZml4ICM1MzU3NCwgbm90IGNvbXBsZXRlbHkgY29tcGxldGUsCi0JICBJIHdvdWxkIGxpa2UgeG1sbGludCAtLWNvcHkgLS1kZWJ1ZyB0ZXN0L2VudDEgYW5kCi0JICB4bWxsaW50IC0tZGVidWcgdGVzdC9lbnQxIHRvIHNob3cgdGhlIHNhbWUgcmVzdWx0LgotCSogeHBhdGguYzogZml4IGEgYnVnIHdoZW4gdHJ5aW5nIHRvIHNvcnQgbmFtZXNwYWNlIG5vZGVzCi0KLVdlZCBBcHIgMjUgMTI6Mjg6NTcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLmM6IHJlYWwgZml4IGZvciAgIzUzNDAyCi0KLVR1ZSBBcHIgMjQgMTc6MzY6MzUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUx0cmVlLmMgSFRNTHRyZWUuaCA6IGNsb3NpbmcgIzUzNDAyIGkuZS4gb3V0cHV0IG9mCi0JICBQSXMgd2hlbiB1c2luZyB4c2w6b3V0cHV0Ci0JKiB2YWxpZC5jOiBjbG9zaW5nICM1MzUzNyBzb21lIGNhc2UgZ2VuZXJhdGUgc2VnZmF1bHRzIGlmIHRoZXJlCi0JICBpcyB2YWxpZGl0eSBlcnJvcnMKLQotVHVlIEFwciAyNCAxNToxOTo1MyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogU0FYLmMgdGVzdERvY2Jvb2suYyBET0NCcGFyc2VyLmM6IG1vcmUgd29yayBvbiB0aGUgc3VwcG9ydAotCSAgb2YgZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzLCBhZGRlZCAtLW5vZW50IHRvIHRlc3REb2Nib29rCi0JKiB2YWxpZC5jOiBHYXJyeSBQZW5uaW5ndG9uIGZvdW5kIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUKLQkgIGFjY2VzcyBpbiB4bWxWYWxpZGF0ZUVsZW1lbnRDb250ZW50KCkKLQotVHVlIEFwciAyNCAxNDo0MToyNSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogSFRNTHBhcnNlci5jIDogSFRNTCBwYXJzaW5nIHN0aWxsIHN1Y2tzIC4uLiB0cnlpbmcgdG8gZGVhbAotCSAgd2l0aCBtYWRuZXNzCi0JKiByZXN1bHQvSFRNTC8gOiB0aGlzIG1vZGlmaWVkIHRoZSByZXN1bHQgb2YgdGhlIHJlZ3Jlc3Npb24gdGVzdHMKLQkgIGEgbG90LgotCi1UdWUgQXByIDI0IDE0OjEwOjM4IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBlbnRpdGllcy5jOiB4bWxFbmNvZGVFbnRpdGllc1JlZW50cmFudCBmaXhlZCBhIGZldyBhY2Nlc3NlcwotCSAgdG8gZG9jIHdoZXJlIGl0IHdhc24ndCBjaGVja2VkIGFnYWluc3QgTlVMTCByZXBvcnRlZCBieQotCSAgSmVucyBMYWFzCi0KLVR1ZSBBcHIgMjQgMTM6MjE6MzYgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuYzogSm9uYXMgQm9yZ3N0cvZtIHBhdGNoLCB0aGUgPHRkPiwgYW5kIDx0aD4gZWxlbWVudHMKLQkgIG5vdyBtZWFucyB0aGUgZW5kIG9mIGFueSBvcGVuIDxzcGFuPiw8Zm9udD4sPGE+LDxiPiw8aT4sPHU+LgotCi1Nb24gQXByIDIzIDE1OjQwOjA0IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBET0NCcGFyc2VyLmMgRE9DQnBhcnNlci5oIHRlc3REb2Nib29rLmMgY29uZmlndXJlLmluIE1ha2VmaWxlLmFtCi0JICB4bWx2ZXJzaW9uLmguaW46IHN0YXJ0ZWQgKHJlKWludGVncmF0aW5nIHRoZSBEb2NCb29rIFNHTUwgcGFyc2VyLgotCSogU0FYLltjaF06IGNsZWFudXAgYW5kIHVwZGF0ZXMgZm9yIERvY0Jvb2sKLQkqIGRlYnVnWE1MLmMgcGFyc2VyLmggdHJlZS5bY2hdIHZhbGlkLmMgeHBhdGguYzogc21hbGwgbWFjcm8gb3IKLQkgIGV4IFNHTUwgaWRlbnRpZmllciBjaGFuZ2VzCi0JKiB2YWxpZC5jOiByZW1vdmVkIGEgc3RhdGljIHVudXNlZCBmdW5jdGlvbi4KLQotTW9uIEFwciAyMyAxMTowNTo1NiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogSFRNTHRyZWUuYzogYXBwbGllZCBjaGFuZ2UgZm9yIFBhdWwgU3BvbmFnbCBvbiBzY3JpcHQgc2F2aW5nCi0JKiBNYWtlZmlsZS5hbTogdGhlIHdhcm5pbmcgYWJvdXQgZW50aXR5IHRpdGxlLnhtbCBhcmUgbm9ybWFsLgotCi1TdW4gQXByIDIyIDIyOjA5OjM1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IHJlbGVhc2Ugb2YgMi4zLjcKLQkqIE1ha2VmaWxlLmFtOiBmaXhpbmcgbWFrZSBkaXN0Y2hlY2sKLQotU3VuIEFwciAyMiAyMToyOTo1MiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL2h0bWwvKiBkb2MveG1sLmh0bWw6IHVwZGF0ZWQgYW5kIHJlZ2VuZXJhdGVkIHRoZSBkb2NzCi0KLVN1biBBcHIgMjIgMjE6MTE6NDUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIHRoZSBYUG9pbnRlciBwcm9ibGVtIGludHJvZHVjZWQgaW4gMi4zLjYKLQotU3VuIEFwciAyMiAxNDoxMTo1OCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jOiBmaXhlZCAjNTMzODggd2l0aCB0aGUgcHJvdmlkZWQgcGF0Y2gKLQotU3VuIEFwciAyMiAxMjozNDo0MSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuYzogQmpvcm4gZGV0ZWN0ZWQgYW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLiBGaXhlZAotCSAgdnN0YXRlVlB1c2goKQotCi1TdW4gQXByIDIyIDEwOjQ5OjIzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBmaXhlZCB4bWxYUGF0aENvbXBpbGUgdG8gZGV0ZWN0ZWQgdW5wcm9wZXJseSBlbmRlZCBleHByCi0KLVNhdCBBcHIgMjEgMTg6Mjc6NTEgQ0VTVCAyMDAxIEJqb3JuIFJlZXNlIDxicmVlc2VAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi0JKiBsaWJ4bWwuaDogbmV3IGhlYWRlciB1c2VkIG9ubHkgZm9yIHRoZSBjb21waWxhdGlvbiBvZiBsaWJ4bWwKLQkqIEhUTUxwYXJzZXIuYyBIVE1MdHJlZS5jIFNBWC5jIGRlYnVnWE1MLmMgZW5jb2RpbmcuYyBlbnRpdGllcy5jCi0JICBlcnJvci5jIGhhc2guYyBsaXN0LmMgbmFub2Z0cC5jIG5hbm9odHRwLmMgcGFyc2VyLmMKLQkgIHBhcnNlckludGVybmFscy5jIHRlc3RIVE1MLmMgdGVzdFNBWC5jIHRlc3RVUkkuYyB0ZXN0WFBhdGguYwotCSAgdHJlZS5jIHVyaS5jIHZhbGlkLmMgeGluY2x1ZGUuYyB4bGluay5jIHhtbElPLmMgeG1sbGludC5jCi0JICB4bWxtZW1vcnkuYyB4cGF0aC5jIHhwb2ludGVyLmM6IGxpYnhtbC5oIGludGVncmF0aW9uCi0JKiB0cmlvLltjaF0gdHJpb3AuaCBzdHJpby5bY2hdOiB1cGdyYWRlZCB0byB0aGUgbGF0ZXN0IHRyaW8KLQkgIGJhc2VsaW5lICh2ZXJzaW9uIDEuMiBwbHVzIGEgc2luZ2xlIHBhdGNoKS4KLQkqIHhwYXRoLmMgcmVzdWx0L1hQYXRoL2V4cHIvZmxvYXRzIHRlc3QvWFBhdGgvZXhwci9mbG9hdHM6IHBhcnNlcwotCSAgc2NpZW50aWZpYyBub3RhdGlvbiBmb3IgbnVtYmVycy4gVGVzdHMgYWRkZWQuCi0JKiB4cGF0aC5jOiBmb3JtYXR0aW5nIG9mIG51bWJlcnMgY2hhbmdlZCB0byB1c2Ugc3ByaW50ZgotCSAgKGNvbnRyaWJ1dGlvbiBmcm9tIFdpbGxpYW0gQnJhY2spCi0KLVNhdCBBcHIgMjEgMTY6MTI6NTkgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IGNsZWFudXAsIG1vcmUgdXNlZnVsIGRlYnVnZ2luZwotCSogcGFyc2VySW50ZXJuYWxzLmM6IGNsZWFudXAgdmN0eHQubm9kZVRhYiAoZGUpYWxsb2NhdGlvbgotCSogeG1sSU8uYzogZW50aXR5IGxvYWRpbmcgaXMgcHJpbnRlZCBhcyBhbiBlcnJvciB3aGVuIHZhbGlkYXRpbmcKLQotU2F0IEFwciAyMSAxMjoyNTo0OSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuYzogZml4ZWQgdG8gdmFsaWRhdGUgd2l0aGluIGVudGl0aWVzCi0JKiB0ZXN0L1ZDTS92MjIueG1sOiBhZGRlZCBhIHNwZWNpZmljIHRlc3RjYXNlCi0KLUZyaSBBcHIgMjAgMTc6NDU6NDcgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IGZvcmdvdCBhbiBlcHNpbG9uIHRyYW5zaXRpb24gaW4gZm9yICgpKwotCSogdGVzdC9WQ00vdjIxLnhtbCA6IGFkZGVkIGEgc3BlY2lmaWMgdGVzdCBjYXNlCi0KLUZyaSBBcHIgMjAgMTU6NDY6MDQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IHJlbW92ZWQgYSBzdGF0ZSBleHBsb3Npb24gZXhoaWJpdGVkIGJ5IFJTUwotCSogdGVzdC92YWxpZC9yc3MueG1sIHJlc3VsdC92YWxpZC9yc3MueG1sKjogYWRkZWQgdGhlIHRlc3RjYXNlCi0JICBmcm9tIGJ1ZyAjNTE4NzIKLQotRnJpIEFwciAyMCAxNDo1Mjo0NCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdmFsaWQuW2NoXSB0cmVlLmg6IHdvcmtlZCAqaGFyZCogdG8gZ2V0IG5vbi1kZXRlcm1pbmlzdCBjb250ZW50Ci0JICB2YWxpZGF0aW9uIHdpdGhvdXQgdXNpbmcgYW4gdWdseSBORkEgLT4gREZBIGFsZ28gaW4gdGhlIHNvdXJjZS4KLQkgIE1hZGUgYSBzcGVjaWZpYyBhbGdvcml0aG0gZWFzaWVyIHRvIG1haW50YWluLCB1c2luZyBhIHNpbmdsZQotCSAgc3RhY2sgYW5kIHdpdGhvdXQgcmVjdXJzaW9uLgotCSogTWFrZWZpbGUuYW0gdGVzdC9WQ00vKi54bWw6IGFkZGVkIG1vcmUgdGVzdHMgdG8gIm1ha2UgVmFsaWR0ZXN0cyIKLQkqIGhhc2guYzogbWFkZSB0aGUgZ3Jvd2luZyByb3V0aW5lIHN0YXRpYwotCSogdHJlZS5oIHBhcnNlci5jOiBhZGRlZCB0aGUgcGFyZW50IGluZm9ybWF0aW9uIHRvIGFuCi0JICB4bWxFbGVtZW50Q29udGVudCBub2RlLgotCi1XZWQgQXByIDE4IDIzOjMzOjExIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBTQVguYyBwYXJzZXIuYyB4cGF0aC5jOiBnZW5lcmF0aW5nIElEcyB3aGVuIG5vdCB2YWxpZGF0aW5nCi0JICBmcm9tIGFuIGV4dGVybmFsIHBhcnNlZCBlbnRpdHkgd2FzIHBvaXNvbmluZyB0aGUgSUQgaGFzIHRhYmxlCi0JICB3aXRoIHJlbW92ZWQgdmFsdWVzLiBUaGlzIHdhcyBraWxsaW5nIFhTTFQgb24gdGhlIEtERSBoZWxwCi0JICBicm93c2VyLgotCi1XZWQgQXByIDE4IDE3OjA5OjE1IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBlbnRpdGllcy5oOiBhbmRyZXdAdWdoLm5ldC5hdSBkZXRlY3RlZCBhIGRvdWJsZSBkZWNsYXJhdGlvbgotCi1XZWQgQXByIDE4IDE1OjA2OjMwIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBkZWJ1Z1hNTC5jIGhhc2guYyB0cmVlLmggdmFsaWQuYyA6IHNvbWUgY2hhbmdlcyByZWxhdGVkIHRvCi0JICB0aGUgdmFsaWRhdGlvbiBzdXBvcnQgdG8gaW1wcm92ZSBzcGVlZCB3aXRoIERvY0Jvb2sKLQkqIHJlc3VsdC9WQy9PbmVJRDIgcmVzdWx0L1ZDL09uZUlEMyA6IHRoaXMgc2xpZ2h0bHkgY2hhbmdlcwotCSAgdGhlIHdheSB2YWxpZGF0aW9uIGVycm9ycyBnZXQgcmVwb3J0ZWQKLQotV2VkIEFwciAxOCAxMTo0Mjo0NyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogSFRNTHBhcnNlci5jIEhUTUx0cmVlLmM6IGFwcGxpZWQgcGFydCBvZiB0aGUgcGF0Y2hlcyBwcm92aWRlZAotCSAgYnkgUCBDIENob3cgYW5kIFdpbGxpYW0gTS4gQnJhY2sgZm9yIFhTTFQgSFRNTCBvdXRwdXQKLQotTW9uIEFwciAxNiAxOTo0NDozNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sdmVyc2lvbi5oLmluIHdpbjMyY29uZmlnLmggd2luMzIvbGlieG1sMi8qOiBhcHBsaWVkIAotCSAgSWdvciBabGF0a292aWMgcGF0Y2hlcyBmb3IgTVNDIGNvbXBpbGF0aW9uIGFuZCBhZGRlZCBoaXMKLQkgIHVwZGF0ZXMKLQotVHVlIEFwciAxNyAxMDowODoxOSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4ZWQgeG1sWFBhdGhOb2RlQ29sbGVjdEFuZFRlc3QoKSB0byBkbyBwcm9wZXIKLQkgIHByZWZpeCBsb29rdXAuCi0JKiBwYXJzZXJJbnRlcm5hbHMuYzogZml4ZWQgdGhlIGJ1ZyByZXBvcnRlZCBieSBNb3J1cyBXYWx0ZXIKLQkgIGR1ZSB0byBhbiBvZmYgYnkgb25lIHR5cG8gaW4geG1sU3RyaW5nQ3VycmVudENoYXIoKQotCi1UaHUgQXByIDEyIDE3OjQxOjA5IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1McGFyc2VyLmMgcmVzdWx0L0hUTUwvKjogcmV2YW1wZWQgdGhlIHdheSB0aGUgSFRNTAotCSAgcGFyc2VyIGhhbmRsZXMgZW5kIG9mIHRhZ3Mgb3IgZW5kIG9mIGlucHV0Ci0KLVRodSBBcHIgMTIgMTA6NTA6MzQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuW2NoXSA6IGFkZGVkIHhtbERvY0NvcHlOb2RlIGZvciBnZG9tZTIgc3VwcG9ydAotCi1XZWQgQXByIDExIDE2OjM3OjUwIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmg6IGluY2x1ZGUgeG1sbWVtb3J5LmggdGhpcyBzZWVtcyB0byBoYXZvaWQgYSBuYXN0eSBnbGliYwotCSAgYnVnIHdoZXJlIHRoZSBsaW5rdGltZSB2ZXJpb25zIG9mIGZyZWUoKSB3b24ndCB3b3JrIC4uLgotCi1XZWQgQXByIDExIDE0OjIxOjMxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWcuaC5pbiBjb25maWd1cmUuaW4geG1sdmVyc2lvbi5oLmluOiBhZGRlZCBhbnNpZGVjbC5oIHRlc3QKLQotV2VkIEFwciAxMSAxMzo1MDo0MiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL3htbC5odG1sOiBhZGRlZCAyLjMuNiByZWxlYXNlCi0KLVdlZCBBcHIgMTEgMTM6MjY6MzQgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogZml4ZWQgeG1sU3RyaW5nR2V0Tm9kZUxpc3QoKSB0byBoYW5kbGUgY2hhcnJlZnMKLQkqIHJlc3VsdC93bWwueG1sOiByZXN1bHRlZCBpbiBhIHNtYWxsIG91dHB1dCBjaGFuZ2UKLQotV2VkIEFwciAxMSAwOTo0Nzo1NSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdHJlZS5jOiB4bWxOZXdEb2Mgd2FzIG1pc3NpbmcgdGhlIGNoYXJzZXQgaW5pdGlhbGl6YXRpb24KLQkqIHhtbGxpbnQuYzogYWRkZWQgLS1hdXRvIHRvIGF1dG9nZW5lcmF0ZSBhIGRvYywgYWxsb3cgdG8KLQkgIHJlcHJvZHVjZSB0aGUgcHJvYmxlbSBmaXhlZCBvbiB4bWxOZXdEb2MKLQotVHVlIEFwciAxMCAxODoxMzoxMCBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogdHJ5aW5nIHRvIGdldCA1Mjk3OSBzb2x2ZWQKLQkqIHRyZWUuYyByZXN1bHQvIHJlc3VsdC9ub2VudC86IHRyeWluZyB0byBnZXQgNTI3MTIgc29sdmVkLCB0aGlzCi0JICBhbHNvIG1hZGUgbWUgY2xlYW4gdXAgdGhlIGZhY3QgdGhhdCBYTUwgb3V0cHV0IGluIGdlbmVyYWwgc2hvdWxkCi0JICBub3QgYWRkIGZvcm1hdGluZyBibGFua3MgYnkgZGVmYXVsdCwgdGhpcyBjaGFuZ2VkIHRoZSBvdXRwdXQgb2YKLQkgIGEgZmV3IHRlc3RzCi0KLVR1ZSBBcHIgMTAgMTY6MzA6MjAgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IEJpbGwgQnJhY2sgcG9pbnRlciBhbiBlcnJvciBpbiBkZXRlY3RpbmcgYSBudWxsIG5vZGVzZXQKLQotU3VuIEFwciAgOCAxNTowNzoxNiBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBmaW5hbGx5IHJlbGVhc2VkIDIuMy42Ci0KLVN1biBBcHIgIDggMTE6Mzk6MjEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGNoZWNraW5nIGZvciBudWxsIHBvaW50ZXIgZ2VuZXJhdGVkIGJ5IG5ldyBjb2RlCi0KLUZyaSBBcHIgIDYgMTI6NTM6MDUgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIGEgW10gZXZhbHVhdGlvbiBwcm9ibGVtIHJlcG9ydGVkCi0JKiB0ZXN0L1hQYXRoL3Rlc3RzL3NpbXBsZWFkZHI6IGV4dGVuZGVkIHRlc3QKLQkqIHJlc3VsdC9YUGF0aC9zaW1wbGVhZGRyOiB1cGRhdGVkIHJlc3VsdAotCi1XZWQgQXByICA0IDAyOjA3OjUzIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWxsaW50LmM6IERhbiBUaW1pcyByZXBvcnRlZCBhIHBvcnRhYmlsaXR5IHByb2JsZW0KLQkgIG9uIE1hY3Mgd2l0aG91dCBtbWFwLCBmaXhlZCBpdC4KLQotVHVlIEFwciAgMyAyMDoyMDo1MSBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdGVzdFhQYXRoLmMgOiBhZGRlZCBhIC0tdHJlZSBvcHRpb24gYWxsb3dpbmcgdG8gZGlzcGxheSB0aGUKLQkgIHRyZWUgZHVtcCBvZiB0aGUgWFBhdGggZXhwcmVzc2lvbgotCi1Nb24gQXByICAyIDE3OjEzOjUxIENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBhIG1lbWxlYWsgd2hlbiBjb21wYXJpbmcgbm9kZXNldHMKLQkqIEhUTUx0cmVlLmM6IGRvbid0IGludmVudCB0aGUgSFRNTCBkb2N0eXBlIGlmIG5vdCBhdmFpbGFibGUgKFhTTFQpCi0JKiB0cmVlLmM6IGFkZGVkIGEgVE9ETwotCi1UdWUgTWFyIDI3IDE0OjMyOjA2IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW4gTWFrZWZpbGUuYW0gY29uZmlnLmguaW4geG1sdmVyc2lvbi5oLmluOiBkZXRlY3QgaWYKLQkgIHdlIG5lZWQgc3RyaW5nIGZ1bmN0aW9ucwotCSogdHJpby5bY2hdIHN0cmlvLltjaF06IGVtYmVkZGVkIHRoZSBUcmlvLTAuMjMgc3RyaW5nIGZ1bmN0aW9ucwotCSAgdG8gYmUgYWJsZSB0byB1c2UgdGhlbSB3aGVyZSBuZWVkZWQuIEFwcGxpZWQgc29tZSBjaGFuZ2VzCi0JICB0byByZWR1Y2UgbmFtZSBsaW5raW5nIHBvbGx1dGlvbiBhbmQgY29tcGlsZSBpbiBvbmx5IHdoYXQncwotCSAgbmVlZGVkLgotCSogSFRNTHRyZWUuYyBkZWJ1Z1hNTC5jIGVudGl0aWVzLmMgZXJyb3IuYyBuYW5vZnRwLmMgdmFsaWQuYwotCSAgeGxpbmsuYyB4bWx2ZXJzaW9uLmguaW4geHBhdGguYzogZ290IHJpZCBvZiB0aGUgI2lmZGVmIAotCSAgZm9yIHRoZSBzdHJpbmcgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucwotCSogeG1sbWVtb3J5LltjaF06IHJlbW92ZWQgREVCVUdfTUVNT1JZX0ZSRUVEIGFuZCBhZGRlZCBpdCBhdXRvbWF0aWNhbGx5Ci0JICB0byB0aGUgZnJlZSgpIGZ1bmN0aW9uIG9mIHhtbG1lbW9yeS5jCi0JKiBlbnRpdGllcy5jIEhUTUx0cmVlLmMgcGFyc2VySW50ZXJuYWxzLmMgdHJlZS5jIHVyaS5jIHZhbGlkLmMKLQkgIHhpbmNsdWRlLmMgeG1sSU8uYyB4cGF0aC5jIHhwb2ludGVyLmM6IHJlbW92ZWQgdGhlIE1FTV9DTEVBTlVQCi0JICB1c2FnZS4KLQotVHVlIE1hciAyNyAwMjozMDoyMyBDRVNUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZXJyb3IuYzogYXBwbGllZCB0aGUgY29udGV4dCBvdXRwdXQgcGF0Y2ggb2YgdGhlIGVycm9yCi0JICBoYW5kbGluZyBzdWJtaXR0ZWQgYnkgQ2h1Y2sgR3JpZmZpdGgKLQkqIGVycm9yL1ZDLyo6IHRoaXMgc2xpZ2h0bHkgY2hhbmdlIHNvbWUgZXJyb3IgbG9ncwotCi1UdWUgTWFyIDI3IDAwOjUxOjI3IENFU1QgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgbGluZSBudW1iZXIgcmVwb3J0aW5nIG9uIGVycm9yCi0KLU1vbiBNYXIgMjYgMjM6MjE6NDEgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBTdWxsaXZhbiBhbmQgRGFyaW4gZm91bmQgYSBwYXJzZXIgYnVnLAotCSAgYXBwbGllZCB0aGUgcGF0Y2guCi0KLU1vbiBNYXIgMjYgMTg6MjQ6NTIgQ0VTVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuYyBIVE1MdHJlZS5jIFNBWC5jIGRlYnVnWE1MLmMgZXJyb3IuYyBwYXJzZXJJbnRlcm5hbHMuYwotCSAgdGVzdEhUTUwuYyB0ZXN0U0FYLmMgdHJlZS5jIHZhbGlkLmMgeG1sSU8uYyB4bWxtZW1vcnkuYwotCSAgeG1sdmVyc2lvbi5oLmluIHhwb2ludGVyLmM6IG9mIGNvdXJzZSB0aGUgd2F5IEkgZGVmaW5lZAotCSAgVU5VU0VEIGJyZWFrcyBvbiBvbGQgZ2NjIHZlcnNpb24uIFRyeSB0byBiZSBzbWFydCBhbmQKLQkgIGFsc28gZGVmaW5lIGl0IGRpcmVjdGx5IGluIHhtbHZlcnNpb24uaAotCSogY29uZmlndXJlLmluOiByZW1vdmVkIC1hbnNpIGZsYWcgZnJvbSB0aGUgcGVkYW50aWMgc2V0Ci0KLVNhdCBNYXIgMjQgMTc6NDU6MzYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQlIdWdlIGNsZWFudXAsIEkgc3dpdGNoZWQgdG8gY29tcGlsZSB3aXRoCi0JLVdhbGwgLWcgLU8gLWFuc2kgLXBlZGFudGljIC1XIC1XdW51c2VkIC1XaW1wbGljaXQKLQktV3JldHVybi10eXBlIC1Xc3dpdGNoIC1XY29tbWVudCAtV3RyaWdyYXBocyAtV2Zvcm1hdAotCS1XY2hhci1zdWJzY3JpcHRzIC1XdW5pbml0aWFsaXplZCAtV3BhcmVudGhlc2VzIC1Xc2hhZG93Ci0JLVdwb2ludGVyLWFyaXRoIC1XY2FzdC1hbGlnbiAtV3dyaXRlLXN0cmluZ3MgLVdhZ2dyZWdhdGUtcmV0dXJuCi0JLVdzdHJpY3QtcHJvdG90eXBlcyAtV21pc3NpbmctcHJvdG90eXBlcyAtV25lc3RlZC1leHRlcm5zIC1XaW5saW5lCi0JKiBIVE1McGFyc2VyLltjaF0gSFRNTHRyZWUuYyBTQVguYyBkZWJ1Z1hNTC5jIGVuY29kaW5nLltjaF0KLQkgIGVuY29kaW5nLmggZW50aXRpZXMuYyBlcnJvci5jIGxpc3QuW2NoXSBuYW5vZnRwLmMKLQkgIG5hbm9odHRwLmMgcGFyc2VyLltjaF0gcGFyc2VySW50ZXJuYWxzLltjaF0gdGVzdEhUTUwuYwotCSAgdGVzdFNBWC5jIHRlc3RVUkkuYyB0ZXN0WFBhdGguYyB0cmVlLltjaF0gdXJpLmMKLQkgIHZhbGlkLltjaF0geGluY2x1ZGUuYyB4bWxJTy5bY2hdIHhtbGxpbnQuYyB4bWxtZW1vcnkuYwotCSAgeHBhdGguYyB4cGF0aEludGVybmFscy5oIHhwb2ludGVyLltjaF0gZXhhbXBsZS9nam9icmVhZC5jOgotCSAgQ2xlYW51cCwgc3RhdGljZmllZCBhIG51bWJlciBvZiBub24tZXhwb3J0ZWQgZnVuY3Rpb25zLAotCSAgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgYSBkb3plbiBvZiBwcm9ibGVtIGZvdW5kIHRoaXMgd2F5LAotCSAgYXZvaWRlZCBhIGxvdCBvZiBwdWJsaWMgZnVuY3Rpb24gbmFtZS90eXBlZGVmL3N5c3RlbSBuYW1lcyBjbGFzaGVzCi0JKiBkb2MveG1sLmh0bWw6IHVwZGF0ZWQKLQkqIGNvbmZpZ3VyZS5pbjogc3dpdGNoZWQgcHJpdmF0ZSBmbGFncyB0byB0aGUgcmVhbGx5IHBlZGFudGljIG9uZXMuCi0KLVRodSBNYXIgMjIgMjI6NDQ6MTUgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiAyLjMuNQotCSogZG9jL2h0bWwvKjogcmVidWlsdCB0aGUgZG9jcwotCi1UaHUgTWFyIDIyIDE1OjM2OjQ1IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBmaXhlZCBhIHJlcG9ydGVkIGJ1ZyBpbiBOT1RBVElPTiBwYXJzaW5nCi0JKiB1cmkuYzogYWNjZXB0ZWQgYnV0IG5vdCBmaXhlZCBidWcgNTE4NzYsIGFkZGVkIFRPRE8gCi0JKiBNYWtlZmlsZS5hbTogZml4ZWQgYnVnIDUxODc2Ci0KLVRodSBNYXIgMjIgMTM6NDE6MjIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlnLmguaW4gY29uZmlndXJlLmluIGVycm9yLmM6IGZpeCBhIGNvbXBpbGF0aW9uIHByb2JsZW0KLQkgIG9uIHBsYXRmb3JtcyB3aXRob3V0IHZzbnByaW50ZiAoeG1sQHRoZXdyaXR0ZW53b3JkLmNvbSkKLQotV2VkIE1hciAyMSAxOTowNDozNCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBmdW5jdGlvbiBuYW1lIGhlYWRlciB0eXBvCi0JKiBTQVguYzogbm90YXRpb25zIGNhbiBhbHNvIG9jY3VyIGluIGV4dGVybmFsIHN1YnNldC4KLQotVHVlIE1hciAyMCAxNDoyMToyOCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBlcnJvci5jOiByZW1vdmVkIGEgQysrIGxpa2UgY29tbWVudAotCi1UdWUgTWFyIDIwIDEyOjIyOjM2IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBmaXhpbmcgYnVnIDUyMjk5IHN0cmFuZ2UgY29uZGl0aW9uIGxlYWRpbmcKLQkgIHRvIGEgcGFyc2VyIGNyYXNoIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdwotCSogcmVzdWx0L25vZW50L2F0dHJpYi54bWwgcmVzdWx0L2F0dHJpYi54bWwgdGVzdC9hdHRyaWIueG1sOgotCSAgYWRkZWQgdGhlIHNwZWNpZmljIHRlc3QgY2FzZQotCi1Nb24gTWFyIDE5IDE2OjUwOjUyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLltjaF06IHN0aWxsIGEgbG90IG9mIGNsZWFudXAgYmFzZWQgb24gWFNMVCwgYWRkZWQKLQkgIHhtbFhQYXRoQ29udmVydHtTdHJpbmcsTnVtYmVyLEJvb2xlYW59IHRvIGJlIGFibGUgdG8gbWFrZQotCSAgdHlwZSBjYXN0cyB3aXRob3V0IGEgY29udGV4dCBzdGFjaywgZml4ZWQgc29tZSBpbXBsZW1lbnRhdGlvbgotCSAgcHJvYmxlbXMgcmVsYXRlZCB0byB0aGUgYWJzZW5jZSBvZiBjb250ZXh0IGF0IHBhcnNlLXRpbWUsCi0JICBhZGRlZCB4bWxYUGF0aEV2YWxQcmVkaWNhdGUoKSBhbmQgeG1sWFBhdGhGcmVlQ29tcEV4cHIoKQotCSAgaW4gdGhlIHB1YmxpYyBBUEkgdG9vCi0JKiB4cG9pbnRlci5jIHhwYXRoSW50ZXJuYWxzLmg6IHdlIG5lZWQgdG8ga25vdyBhdCBwYXJzZSB0aW1lCi0JICB3aGV0aGVyIHdlIGFyZSBjb21waWxpbmcgYW4gWFBvaW50ZXIKLQotTW9uIE1hciAxOSAxMTo1NDozMSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5bY2hdIHhwb2ludGVyLmM6IHJlc3RhdXJlZCB0aGUgQmluYXJ5IGFuZCBBUEkgY29tcGF0aWJpbGl0eQotCSAgY2xlYW5lZCB1cCB0aGUgcGFyc2VyIGludGVybmFscywgcmVmYWN0b3JlZCBYUGF0aCBjb2RlLCBhZGRlZAotCSAgbmV3IGNvbXBpbGF0aW9uIGJhc2VkIEFQSXMgYW5kIGNsZWFubHkgc2VwYXJhdGVkIHB1YmxpYyBhbmQKLQkgIHByaXZhdGUgQVBJcy4KLQotTW9uIE1hciAxOSAwMDo1OToyNSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5oOiB0aGUgY29tcCBmaWVsZCBtdXN0IGJlIGFkZGVkIGF0IHRoZSBlbmQgdG8gYXZvaWQKLQkgIGtpbGxpbmcgYmluYXJ5IGNvbXBhdC4KLQotTW9uIE1hciAxOSAwMDoxMToxOCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBNYWtlZmlsZS5hbTogZGV0ZWN0IFhQYXRoIG1lbWxlYWtzIGluIHJlZ3Jlc29uIHRlc3RzCi0JKiBlcnJvci5jOiBmaXhlZCBhbmQgZXJyb3Igdy5yLnQuIGVycm9yIHJlcG9ydGluZyBzdGlsbCB1c2luZwotCSAgc3RkZXJyCi0JKiBoYXNoLmM6IGFkZGVkIG5ldyBsaW5lIGF0IGVuZCBvZiBmaWxlCi0JKiB0cmVlLmg6IG1pbm9yIGNsZWFudXAKLQkqIHhwYXRoLltjaF0geHBvaW50ZXIuW2NoXTogTWFqb3IgY2hhbmdlcyAhIFNlcGFyYXRlZCBYUGF0aAotCSAgZXhwcmVzc2lvbiBwYXJzaW5nIGZyb20gZXZhbHVhdGlvbiwgcmVzdWx0ZWQgaW4gYSBudW1iZXIgb2YKLQkgIGNoYW5nZXMgaW50ZXJuYWxseSwgYW5kIGluIFhQb2ludGVyLiBMaWtlbHkgdG8gYnJlYWsgc3R1ZmYKLQkgIHVzaW5nIHhwYXRoSW50ZXJuYWxzLmggYnV0IHNob3VsZCByZW1haW4gYmluYXJ5IGNvbXBhdGlibGUsCi0JICBuZXcgaW50ZXJmYWNlcyB3aWxsIGJlIGFkZGVkLgotCi1XZWQgTWFyIDE0IDIwOjM0OjAyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogZml4ZWQgYSBjb3VwbGUgb2YgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgCi0JICBva2lkZGxlQHlhaG9vLmNvLnVrIGFuZCBhbGxhbmNAY2hpY2tlbmFuZHBvcm4uY29tIHdoZW4gY29tcGlsaW5nCi0JICB3aXRob3V0IGdjYyBvbiBub24gbGludXggcGxhdGZvcm1zLgotCi1XZWQgTWFyIDE0IDIwOjEzOjU0IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy9NYWtlZmlsZS5hbSBjb25maWd1cmUuaW46IHllYXJrZUBlbmcuYnVmZmFsby5lZHUgc3VnZ2VzdGVkCi0JICBhIGZpeCBmb3IgLS13aXRoLWh0bWwtZGlyPSBjb25maWd1cmUgc3VwcG9ydC4gSSBob3BlIGl0IHdvbid0Ci0JICBicmVhayBycG0gZ2VuZXJhdGlvbgotCi1XZWQgTWFyIDE0IDE3OjI4OjQ5IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhtbElPLmM6IG9uZSBmdW5jdGlvbiBjb21tZW50IGNsZWFudXAuCi0KLVdlZCBNYXIgMTQgMTQ6NTU6NDYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogU0FYLmM6IGV4dGVybmFsIHN1YnNldCBub3RhdGlvbnMgd2VyZSBpbXByb3Blcmx5IHJlZ2lzdGVyZWQKLQkgIGluIHRoZSBpbnRlcm5hbCBzdWJzZXQuCi0KLVR1ZSBNYXIgMTMgMTA6Mjg6NDkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogUkVBRE1FLmN2cy1jb21taXRzOiBhZGRlZCwgcG9pbnRpbmcgdG8gSEFDS0lORwotCSogSEFDS0lORzogdXBkYXRlZAotCi1Nb24gTWFyIDEyIDIyOjA5OjQwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jOiBhbmQgTWF0dCBTZXJnZWFudCBmb3VuZCBvbmUgaW4gdGhlIFhNTCBwdXNoCi0JICBwYXJzZXIgKGVycm9uZW91cyBjaGVjayBJIGZvcmdvdCB0byByZW1vdmUgd2hlbiBJIGZpeGVkIHRoZQotCSAgbWFpbiBwYXJzZXIpLgotCi1Nb24gTWFyIDEyIDE5OjE5OjA0IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IHB0aXR0b20gZm91bmQgYSBzbWFsbCBidWcgaW4gVW5hcnlFeHByCi0KLVNhdCBNYXIgMTAgMTM6MDk6NTMgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBidW1wZWQgdG8gMi4zLjQKLQkqIGVycm9yLmM6IGZpeGVkIGJ1ZyAjNTE4NjAKLQkqIHRyZWUuYzogZml4ZWQgYnVnICM1MTg2MQotCSogdmFsaWQuYzogY2xlYW51cCwgbW9yZSBkZWJ1ZywgZmFpbGVkIHRvIGZpeCBvbmUgYnVnIGNyYXAgLi4uCi0JKiB0cmVlLltjaF0gOiBhZGRlZCB4bWxEZWZhdWx0QnVmZmVyU2l6ZQotCSogbmFub2Z0cC5jOiB0eXBvIGluIGZ1bmN0aW9uIG5hbWUgaGVhZGVyIGJsb2NrCi0JKiBkb2MveG1sLmh0bWwgOiB1cGRhdGVkLCBhZGRlZCBsaW5rIHRvIFhNTDo6TGliWFNMVAotCSogZG9jL2h0bWwvKiA6IHJlYnVpbHQgdGhlIGRvY3MKLQotV2VkIE1hciAgNyAyMDo0Mzo0NyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYyBTQVguYzogdGhlIG5ldyBjb250ZW50IHBhcnNpbmcgY29kZSByYWlzZWQgYW4KLQkgIHVnbHkgYnVnIGluIHRoZSBjaGFyYWN0ZXJzKCkgU0FYIGNhbGxiYWNrLiBGb3VuZCBpdAotCSAganVzdCBiZWNhdXNlIG9mIHN0cmFuZ2VuZXNzIGluIFhTTFQgWE1MIFJlYyBvdXB0dXQgOi0oCi0KLVdlZCBNYXIgIDcgMTY6NTA6MjIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW06IE1hcnRpbiBCYXVsaWcgc3VnZ2VzdGVkIHRvIGFkZCAtbG0KLQkqIHRyZWUuYzogZm91bmQgYW5vdGhlciBidWcgaW4geG1sTm9kZUdldENvbnRlbnQoKQotCi1UdWUgTWFyICA2IDA5OjIxOjMwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IEJqb3JuIGZvdW5kIHRoZSBlcnJvciByZWxhdGVkIHRvIHN0cmljdG5lc3Mgb2YgY29tcGFyaXNvbi4KLQotTW9uIE1hciAgNSAyMTo0NzozMSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogdHJ5aW5nIHRvIGZpeCB0aGUgRHRkIHBhcnNpbmcgcHJvYmxlbSByZXBvcnRlZAotCSAgYnkgR2FyeSwgc2lkZSBlZmZlY3Qgb2YgbGFzdCB3ZWVrIHNwZWVkIG9wdGltaXphdGlvbnMuCi0KLVNhdCBNYXIgIDMgMTk6NDU6NTkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sMkNvbmYuc2guaW46IGZpeGVzIHBvaW50ZWQgb3V0IGJ5IEZyZWRyaWsgSGFsbGVuYmVyZwotCSogcGFyc2VySW50ZXJuYWxzLmM6IHJlbW92ZWQgdW5uZWVkZWQgdGVzdCByYWlzZWQgYnkgU3RyaWMKLQotU2F0IE1hciAgMyAxMzowNDozNyBDRVQgMjAwMSBCam9ybiBSZWVzZSA8YnJlZXNlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotCSogeHBhdGguYzogRml4ZWQgeG1sWFBhdGhOb2RlQ29sbGVjdEFuZFRlc3QgKHByb2JsZW0gcmVwb3J0ZWQKLQkgIGFuZCBmaXhlZCBieSBXaWxsaWFtIEJyYWNrKS4gQWRkZWQgeG1sWFBhdGhGb3JtYXROdW1iZXIuCi0JICBDaGFuZ2VkIHRoZSBzb3J0aW5nIHNsaWdodGx5LgotCSogY29uZmlndXJlLmluIE1ha2VmaWxlLmFtIGV4YW1wbGUvTWFrZWZpbGUuYW06IEFkZGVkIC1sbS4KLQkgIFBsZWFzZSBub3RlIHRoYXQgYXBwbGljYXRpb25zIGxpbmtpbmcgd2l0aCBsaWJ4bWwyLCBtdXN0Ci0JICBhbHNvIGxpa2Ugd2l0aCB0aGUgbWF0aCBsaWJyYXJ5IGZyb20gbm93IG9uLgotCi1TYXQgTWFyICAzIDA3OjM4OjU4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgbG9vcCByZXBvcnRlZCBieSBNYXJjIFNhbmZhY29uCi0KLVNhdCBNYXIgIDMgMDI6MTA6MjQgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IG9uZSBtdXN0IHJlcG9ydCBzcGFjZXMgZXZlbiBpZiB0aGUgRHRkIGVsZW1lbnQKLQkgIGNvbnRlbnQgcHJvdmVzIHRoYXQgdGhpcyBpcyBub3QgcGFydCBvZiB0aGUgZWxlbWVudCBjb250ZW50LgotCSogcmVzdWx0L3ZhbGlkLyoueG1sOiB0aGlzIGNoYW5nZWQgdGhlIG91cHR1IHNsaWdodGx5Ci0KLVRodSBNYXIgIDEgMTc6NTM6MzkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBidW1wZWQgdG8gMi4zLjMKLQkqIGRvYy94bWwuaHRtbDogdXBkYXRlZAotCi1XZWQgRmViIDI4IDAwOjQzOjU4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRyZWUuYzogbWlub3IgZG9jIGZpeAotCSogeHBhdGguYzogZGVhbGxvY2F0aW9uIGlzc3VlcyB3aGVuIGEgcmVzdWx0IHRyZWUgaGFzIGJlZW4KLQkgIGNvbnZlcnRlZCB0byBhIG5vZGUtc2V0Ci0KLU1vbiBGZWIgMjYgMjI6MDk6NDUgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL3htbC5odG1sOiBvb3BzIGNvcnJlY3RlZCBkYXRlcyBzLzIwMDAvMjAwMQotCi1Nb24gRmViIDI2IDEyOjQ4OjM1IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IG5ldyBwYXRjaCBmcm9tIEdhcnkgUGVubmluZ3RvbgotCi1Nb24gRmViIDI2IDA5OjMwOjIzIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy94bWwuaHRtbDogYXBwbGllZCBwYXRjaCBmcm9tIEFua2gKLQotTW9uIEZlYiAyNiAwMzozNDo0MyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4aW5jbHVkZS5jOiBmaXhlZCBhIHByb2JsZW0gYnVpbGRpbmcgb24gTWFjCi0KLVN1biBGZWIgMjUgMjE6NTI6MzAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogcGFyc2VyLmM6IG1vcmUgd29yayBvbiBpbmNyZWFzaW5nIHBhcnNpbmcgZmVyZm9ybWFuY2VzCi0KLVN1biBGZWIgMjUgMTg6MDM6NDIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sbWVtb3J5LmggSFRNTHBhcnNlci5jIEhUTUx0cmVlLmMgZW50aXRpZXMuYyBwYXJzZXIuYwotCSAgeHBhdGguYyB4cG9pbnRlci5jIHRyZWUuYyB1cmkuYyB2YWxpZC5jIHhpbmNsdWRlLmMgeG1sSU8uYzoKLQkgIGF2b2lkaW5nIG1lbWNweSBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBNRU1fQ0xFQU5VUCBtYWNybyB1c2UKLQkqIHBhcnNlci5bY2hdIHBhcnNlckludGVybmFscy5jOiBvcHRpbWl6YXRpb25zIG9mIHRoZSB0aWdodGVzdAotCSAgaW50ZXJuYWwgbG9vcHMgaW5zaWRlIHRoZSBwYXJzZXIuIEJldHRlciBjaGVja2luZyBvZiBJL08KLQkgIGZsdXNoaW5nL2xvYWRpbmcgY29uZGl0aW9ucwotCSogeG1sbGludC5jIDogYWRkZWQgLS10aW1pbmcKLQotU3VuIEZlYiAyNSAwNTo0ODo1MSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IGJ1bXBlZCB0byAyLjMuMgotCSogZG9jL3htbC5odG1sOiB1cGRhdGVkIGZvciByZWxlYXNlCi0KLVNhdCBGZWIgMjQgMTQ6MDc6NTIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZm91bmQgYSBtZW1sZWFrIGFuZCBmaXhlZCBhIG5hc3R5IGJ1ZwotCi1TYXQgRmViIDI0IDAzOjM1OjQ4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhtbGxpbnQuW2MxXSA6IGFkZGVkIHJldHVybiBjb2RlIGVycm9ycyBmb3IgeG1sbGludAotCSogeHBhdGguYzogc3BlY2lmaWMgZGVidWcgZHVtcCBmdW5jdGlvbiBmb3IgcmVzdWx0IHZhbHVlIHRyZWVzCi0KLVRodSBGZWIgMjIgMDc6NTI6MjcgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZmluYWxseSBpbXBsZW1lbnRlZCB4bWxYUGF0aENvbXBhcmVOb2RlU2V0cwotCSogdGVzdC9YUGF0aC9leHByL2Zsb2F0cyByZXN1bHRzL1hQYXRoL2V4cHIvZmxvYXRzOiBhZGRlZCAKLQkgIGEgdGVzdCBmb3IgZmxvYXQgZXhwcmVzc2lvbnMKLQotVHVlIEZlYiAyMCAxODo1Nzo1NCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmM6IGZpeGVkIHhtbE5vZGVHZXRDb250ZW50LCBpdCB3YXMgbm90IHJlY3Vyc2luZyBvbiBjaGlsZAotCSogcGFyc2VySW50ZXJuYWxzLltjaF06IHRyeWluZyB0byBzcGVlZCB1cCBwYXJzaW5nCi0JKiB4cGF0aC5jIDogc3BlZWRlZCB1cCBub2RlIHNldCBlcXVhbGl0eSBvcAotCi1Nb24gRmViIDE5IDE5OjAxOjU3IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIE1ha2VmaWxlLmFtIHZhbGlkLmMgbGlzdC5bY2hdOiBHYXJ5IFBlbm5pbmd0b24gcHJvdmlkZWQgYQotCSAgYmV0dGVyIGhhbmRsaW5nIG9mIElEL0lEUkVGIGFuZCB0aGUgbGlzdCBtb2R1bGVzIGFzc29jaWF0ZWQKLQkqIGNvbmZpZ3VyZS5pbjogc21hbGwgQ0ZMQUdTIGNsZWFudXAKLQotTW9uIEZlYiAxOSAxNjoxMzoyMiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IGZpeGVkIGljb252IGRldGVjdGlvbiBvbiBBSVggKHN0cmljKQotCi1Nb24gRmViIDE5IDEwOjU5OjQxIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkICIqIiAodW5iZWxpZXZhYmxlICEpIGFuZCBhIGNvdXBsZSBvZiB3YXJuaW5ncwotCi1TdW4gRmViIDE4IDE3OjUyOjM3IE1FVCAyMDAxIEJqb3JuIFJlZXNlIDxicmVlc2VAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi0JKiB4cGF0aC5jOiBmaXhlZCB3aGl0ZXNwYWNlIGhhbmRsaW5nIGluIHhtbFhQYXRoU3RyaW5nRXZhbE51bWJlciwKLQkgIGFuZCBvcHRpbWl6ZWQgeG1sWFBhdGhOb2RlU2V0U29ydAotCi1TYXQgRmViIDE3IDE0OjE4OjQyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGJ1ZyBmaXggd2hlbiBjb250ZXh0IHNpemUgaXMgMAotCSogcGFyc2VyLmM6IEkgbGlrZSBOb3JtJ3MgRHRkIGJlY2F1c2UgdGhleSBzdGlsbCBtYW5hZ2UgdG8gYnJlYWsKLQkgIHRoZSBwYXJzZXIgb2NjYXNpb25hbGx5Ci0KLUZyaSBGZWIgMTYgMTQ6MjA6MzUgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogeG1sWFBhdGhFcXVhbE5vZGVTZXRGbG9hdCB0aGUgYXJnIGlzIHJlYWxseSBhIGRvdWJsZSBub3cKLQotRnJpIEZlYiAxNiAwMToxMDowNiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLltjaF0gcGFyc2VyLmMgeHBhdGguYzogZml4ZWQgdGhlIHByb2JsZW0gb2YgYWRkcmVzc2luZwotCSAgYXR0cmlidXRlcyB3aXRoaW4gdGhlIFhNTC0xLjAgbmFtZXNwYWNlCi0KLVRodSBGZWIgMTUgMTY6NTM6MjAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGhJbnRlcm5hbHMuaDogZXhwb3J0ZWQgYSBmZXcgYXhpcyBmdW5jdGlvbnMKLQkqIGRvYy94bWwuaHRtbDogdXBkYXRlZCB0aGUgZG9jCi0KLVRodSBGZWIgMTUgMTU6NTc6MTQgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogY29uZmlndXJlLmluOiBhcHBsaWVkIHBhdGNoIGZyb20gRGFuaWVsIHZhbiBCYWxlbiBmb3IgT3BlbkJTRAotCSAgYW5kIGJ1bXBlZCB2ZXJzaW9uIHRvIDIuMy4xCi0JKiBIVE1MdHJlZS5jIHJlc3VsdC9IVE1ML2RvYzMuaHRtIHJlc3VsdC9IVE1ML3dpcmVkLmh0bWw6IHRoZQotCSAgYXR0ZW1wdCB0byBmaW5kIGF1dG9jbG9zaW5nIHdhcyBzaW1wbHkgYnJva2VuLCByZW1vdmVkIGl0LAotCSAgdXBkYXRlZCB0aGUgZXhhbXBsZXMsIHRoaXMgaXMgYmV0dGVyCi0KLVdlZCBGZWIgMTQgMTE6MzU6MzkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogaGFzaC5bY2hdOiBhZGRlZCBQYW9sbyBDYXNhcmluaSBwYXRjaCB0byBwcm92aWRlIERlbGV0ZSBmcm9tCi0JICBoYXNoIGZ1bmN0aW9ubmFsaXRpZXMuCi0JKiBkb2MvaHRtbC8qIDogcmVidWlsZCB0aGUgZG9jCi0KLVR1ZSBGZWIgMTMgMTg6MDE6NDggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYyByZXN1bHQvWFBhdGgvdGVzdHMvY2hhcHRlcnNwcmVmb2w6IGJ1Z2ZpeGVzIG9uIG9yZGVyIGFuZAotCSAgb24gcHJlZGljYXRlCi0JKiBIVE1McGFyc2VyLltjaF0gSFRNTHRyZWUuYyByZXN1bHQvSFRNTC9kb2MzLmh0bS5lcnIKLQkgIHJlc3VsdC9IVE1ML2RvYzMuaHRtLnNheCByZXN1bHQvSFRNTC93aXJlZC5odG1sOiBzb21ldGltZXMgb25lCi0JICByZWFsbHkgd2FudCB0byBoYXZlIHRhZ3MgY2xvc2VkIG9uIG91dHB1dCBldmVuIGlmIHdlIGFjY2VwdAotCSAgdW5jbG9zZWQgb25lcyBvbiBpbnB1dAotCi1Nb24gRmViIDEyIDE4OjMzOjIwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IG91Y2ggZG9uJ3QgZnJlZSBOVUxMLCByYXJlIGNhc2UgZml4ZWQKLQkqIHRyZWUuYzogZG9uJ3QgY29hbGVzY2UgdGV4dCBub2RlcyBpZiB0aGV5IGRvbid0IGhhdmUgdGhlCi0JICBzYW1lIGJlaGF2aW91ciB3cnQgZXNjYXBpbmcgb24gb3V0cHV0Ci0KLVN1biBGZWIgMTEgMjE6MTU6NDEgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogc21hbGwgZml4dXAKLQkqIFNBWC5jOiBkb24ndCB3YXJuIG9uIGVtcHR5IG5hbWVzcGFjZXMuCi0KLVRodSBGZWIgIDggMTE6Mjg6NTggQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogUkVBRE1FOiBhIGJpdCBvZiBjbGVhbnVwCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyBmb3IgMi4zLjAgcmVsZWFzZQotCi1UaHUgRmViICA4IDEwOjM3OjAwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGhhc2guW2NoXTogYWRkZWQgYSBmaXJzdCB2ZXJzaW9uIG9mIHhtbEhhc2hTaXplKCkKLQkqIHZhbGlkLmM6IGFub3RoZXIgYnVnIGZpeCBmcm9tIEdhcnkgUGVubmluZ3RvbgotCi1XZWQgRmViICA3IDE5OjIyOjM3IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHZhbGlkLmM6IGNvdXBsZSBvZiBidWcgZml4ZXMgcG9pbnRlZCBieSBHYXJ5IFBlbm5pbmd0b24KLQkqIEhUTUx0cmVlLmM6ICNpZiAwIGNsZWFudXAKLQotVHVlIEZlYiAgNiAxNDowMjo1NiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBzdGFydGVkIHByb2ZpbGluZyBYU0xULCBhZGRlZCB4bWxYUGF0aE5vZGVTZXRBZGRVbmlxdWUoKQotCSAgd2hpY2ggcmVtb3ZlcyBhIHRpbWUgY29uc3VtaW5nIGNoZWNrIG9mIHhtbFhQYXRoTm9kZVNldEFkZCgpCi0JICBhbmQgdXNlIGl0IGluIHBsYWNlcyB3aGVyZSB3ZSBhcmUgc3VyZSB0byBub3QgYnJlYWsgdW5pY2l0eQotCi1Nb24gRmViICA1IDE4OjUxOjM2IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGJ1ZyBmaXhlcyBmb3VuZCBmcm9tIFhTTFQKLQkqIHRyZWUuYzogcHJlc2VydmUgbm9kZS0+bmFtZSBzcGVjaWFsIHZhbHVlcyB3aGVuIGNvcHlpbmcgbm9kZXMuCi0JKiBwYXJzZXJJbnRlcm5hbHMuW2NoXSBwYXJzZXIuW2NoXSBTQVguYyA6IGFkZGVkIGEgbW9kZSB3aGVyZQotCSAgZXh0ZXJuYWwgc3Vic2V0IGFyZSBmZXRjaGVkIHdoZW4gYXZhaWxhYmxlIGJ1dCB3aXRob3V0IGZ1bGwKLQkgIHZhbGlkYXRpb24uIEFkZGVkIHhtbExvYWRFeHREdGREZWZhdWx0VmFsdWUsIG5lZWQgYSBmdW5jdGlvbi4KLQkqIEhUTUx0cmVlLmM6IGFkZCBzdXBwb3J0IGZvciB4bWxTdHJpbmdUZXh0Tm9lbmMgZm9yIFhTTHQgSFRNTAotCSAgb3V0cHV0IHdpdGggZW5jb2RpbmcgZGlzYWJsZWQuCi0KLVNhdCBGZWIgIDMgMDk6NTA6MjkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1saU8uYzogSGFycnkgQmx1bmRlbGwgcG9pbnRlZCBvdXQgdGhhdCB4bWxDaGVja0ZpbGVuYW1lCi0JICB4bWxDaGVja0ZpbGVuYW1lIHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20geG1sRmlsZU9wZW5XCi0JICBhbmQgeG1sR3pmaWxlT3BlblcKLQotRnJpIEZlYiAgMiAxODowNDozNSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB1cmkuYzogcmV3cml0ZSBvZiB4bWxOb3JtYWxpemVVUklQYXRoIGZyb20gUGF1bCBELiBTbWl0aAotCSogdGVzdC9VUkkvc21pdGgudXJpIHJlc3VsdC9VUkkvc21pdGgudXJpIE1ha2VmaWxlLmFtOgotCSAgYWRkZWQgdGhlIG5ldyB0ZXN0cyBmb3IgVVJJIG5vcm1hbGl6YXRpb24KLQkqIHRlc3RVUkkuYzogZml4ZWQgc3Rvb3BpZCBidWdzCi0JKiByZXN1bHQvVkMvT25lSUQzIHJlc3VsdC9WQy9VbmlxdWVFbGVtZW50VHlwZURlY2xhcmF0aW9uOgotCSAgdGhlIFVSSSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMgYXJlIG5vdyBwcm9wZXJseSBub3JtYWxpemVkCi0KLUZyaSBGZWIgIDIgMDk6MTg6NTMgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogdXJpLmM6IGFwcGxpZWQgTWFyYyBTYW5mYWNvbidzIHBhdGNoIGZvciB4bWxOb3JtYWxpemVVUklQYXRoCi0KLVRodSBGZWIgIDEgMDU6Mjg6NTUgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogZml4ZWQgYSBudW1iZXIgb2YgcHJvYmxlbXMgaW4gWFBBVEhfWFNMVF9UUkVFIHByb2Nlc3NpbmcKLQotV2VkIEphbiAzMSAyMTo0NTozNyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiBmaXhlZCBtb2Qgb3BlcmF0b3IKLQotV2VkIEphbiAzMSAxNjo1MDo0MiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgeG1sU3RyY2F0IGRvYwotCSogdHJlZS5jOiAyIGZpeGVzIGZvcm0gQW5kZXJzIENhcmxzb24gZm9yIGNvcHlpbmcgbm9kZXMgYW5kCi0JICB0cmVlcy4KLQotV2VkIEphbiAzMSAxNDoxOToxNiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jIHJlc3VsdC9YUGF0aC90ZXN0cy9jaGFwdGVyc2Jhc2UKLQkgIHJlc3VsdC9YUGF0aC90ZXN0cy9zaW1wbGViYXNlOiBmaXhlZCBYUGF0aCBub2RlKCkgCi0JKiB0cmVlLmM6IHNtYWxsIGZpeCBpbiB4bWxOZXdOcygpCi0JKiBNYWtlZmlsZS5hbTogcmVtb3ZlZCBleHRyYW5lb3VzIHhtbDJDb25mLnNoIHJ1bGUKLQotU3VuIEphbiAyOCAwODozNzowMyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW4gbGlieG1sLnNwZWMuaW4gZXhhbXBsZS9NYWtlZmlsZS5hbToKLQkgIENoYW5nZWQgdGhlIGxpYnJhcnkgbmFtZSwgaW4gb3JkZXIgdG8gZ2V0IGxpYnhtbC1kZXZlbCBhbmQKLQkgIGxpYnhtbDItZGV2ZWwgdG8gY29leGlzdCBvbiBhIHNpbmdsZSBzeXN0ZW0KLQkqIHhtbC1jb25maWcuMSB4bWwtY29uZmlnLmluIHhtbENvbmYuc2guaW46IHJlbmFtZWQKLQkqIHhtbDItY29uZmlnLjEgeG1sMi1jb25maWcuaW4geG1sMkNvbmYuc2guaW46IG5ldyBmaWxlcwotCi1TYXQgSmFuIDI3IDE5OjU4OjIyIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIE1ha2VmaWxlLmFtIGNvbmZpZ3VyZS5pbiBsaWJ4bWwtMi4wLnBjLmluOiBzdGFydGVkIHdvcmtpbmcgb24gZ2V0dGluZwotCSAgbGlieG1sMi1kZXZlbCBpbnN0YWxsYWJsZSBpbiAvLyBhcyBsaWJ4bWwtZGV2ZWwuCi0KLVNhdCBKYW4gMjcgMTg6NDk6MDIgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZG9jL01ha2VmaWxlLmFtOiBmaXhlZCBtYWtlIHJlYnVpbGQgaW4gZG9jCi0JKiBkb2MvaHRtbC8qLmh0bWw6IHJlYnVpbHQgdGhlIGRvY3MKLQotRnJpIEphbiAyNiAxMDozMDo1OCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmM6IHBhdGNoIGZyb20gQmpvcm4gUmVlc2Ugb24geG1sQnVmZmVyQ0NhdAotCi1UaHUgSmFuIDI1IDE5OjIyOjI1IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIE1ha2VmaWxlLmFtIGRvYy9NYWtlZmlsZS5hbSBsaWJ4bWwuc3BlYy5pbjogcGFpbmZ1bCB3b3JrIHRvIGdldAotCSAgdGhlIEhUTUwgZG9jIHRvIGdvIGludG8gdGhlIC1kZXZlbCBSUE0gLi4uCi0JKiBhY2xvY2FsLm00IGNvbmZpZy5oLmluOiBzb21lIHVwZGF0ZXMgZHVlIHRvIGF1dG8qIG1hZ2ljCi0KLVRodSBKYW4gMjUgMTk6MTE6NDkgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguaDogYWRkZWQgYSBob29rIGluIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBhbGxvd2luZyB0bwotCSAgbGluayB0byBleHRyYSBzdXBwb3J0LCBuZWVkZWQgZm9yIFhTTFQKLQotVGh1IEphbiAyNSAxMzozNDoxMSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5bY2hdIHhwb2ludGVyLmM6IGFkZGVkIHhtbFhQYXRoQ21wTm9kZXMsIGNoYW5nZWQKLQkgIHhtbFhQdHJDbXBQb2ludHMgdG8gdXNlIGl0LgotCSogcHJvcGFnYXRlZCB0aGUgZm9sbG93aW5nIHBhdGNoIGZyb20gQWxlamFuZHJvIEZvcmVybwotCSogaW5jbHVkZS93aW4zMmNvbmZpZy5oIHhtbElPLmM6IGFwcGxpZWQgZnVydGhlciBzdWdnZXN0aW9ucwotCSAgZnJvbSBJZ29yIFpsYXRrb3ZpYyA8aWdvcnpAZGlhbHVwLm5hY2FtYXIuZGU+IGFuZCBjbGVhbnVwCi0JKiBleGFtcGxlL2dqb2JyZWFkLmM6IGZpeGVkIHdhcm5pbmdzLCBub3cgdGhhdCBpdCBidWlsZHMKLQotV2VkIEphbiAyNCAyMDoyNzoyOCBDT1QgMjAwMSBBbGVqYW5kcm8gRm9yZXJvIDxiYWNodWVAYmFjaHVlLmNvbT4KLQotCSogeG1sSU8uYyAoeG1sRmlsZU9wZW4sIHhtbEZpbGVPcGVuVyk6IFJlbW92ZWQgdW5uZWNlc2FyeSBjaGVja3MuCi0KLQkqIHhtbElPLmMgKHhtbENoZWNrRmlsZW5hbWUpOiBGdW5jdGlvbiBhZGRlZCB0byBrbm93IHdoZXRoZXIgYSBnaXZlbgotCSAgZmlsZW5hbWUgcG9pbnRzIHRvIGEgdmFsaWQgZmlsZSAobm90IGEgZGlyZWN0b3J5KS4KLQkqIHhtbElPLmMgKHhtbEZpbGVPcGVuLCB4bWxGaWxlT3BlblcsIHhtbEd6ZmlsZU9wZW4sIHhtbEd6ZmlsZU9wZW5XKToKLQkgIEFkZGVkIGNhbGxzIHRvIHhtbENoZWNrRmlsZW5hbWVEaXIuCi0KLQkqIHhtbElPLmMgKHhtbEd6ZmlsZU9wZW4sIHhtbEd6ZmlsZU9wZW5XLCB4bWxGZE9wZW4sIHhtbEZkT3BlblcpOiBQYXNzCi0JICBgcGF0aCcgKHJhdGhlciB0aGFuIGBmaWxlbmFtZScpIGFzIHRoZSBwYXJhbWV0ZXIgdG8gZ3pvcGVuIGFuZCBvcGVuLgotCi1UdWUgSmFuIDIzIDE2OjI2OjMwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIE1ha2VmaWxlLmFtOiBmaXhlZCBhIHByb2JsZW0gd2l0aCBFWFRSQV9ESVNUCi0KLU1vbiBKYW4gMjIgMjM6NDI6MTcgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogTWFrZWZpbGUuYW0gZXhhbXBsZS9NYWtlZmlsZS5hbTogZmluYWxseSBmb3VuZCB0aGUgdHJpY2sKLQkgIHRvIGJ1aWxkIHRoZSBleGFtcGxlLCBpLmUuIGFkZCAiLiIgaW4gU1VCRElSUyBiZWZvcmUgZXhhbXBsZQotCSAgaW4gdGhlIGxpc3QgPGdyaW4vPgotCi1Nb24gSmFuIDIyIDE2OjMwOjM3IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGRvYy94bWwuaHRtbDogdXBkYXRlZCB3aXRoIGFuIFhTTFQgc2VjdGlvbiwgcmVtb3ZlZCBwb2ludGVyIHRvCi0JICBXM0MgQ1ZTIGJhc2UuCi0KLU1vbiBKYW4gMjIgMTE6NDM6MjEgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogd2hlbiBjb3B5aW5nIGEgWFNMVCB0cmVlIG9iamVjdCB0ZWggdHJlZSBuZWVkIHRvIGJlIGNvcGllZAotCSAgdG9vLCBhbmQgZGVhbGxvY2F0aW9uIG5lZWQgdG8gb2NjdXIgdGhlIHNhbWUgd2F5LgotCi1Nb24gSmFuIDIyIDEwOjM1OjQwIENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoSW50ZXJuYWxzLmggeHBhdGguW2NoXSBkZWJ1Z1hNTC5jOiBhZGRlZCB0aGUgWFBBVEhfWFNMVF9UUkVFCi0JICB0eXBlIGNvcnJlcG9uZGluZyB0byBhbiBYU0xUIHJlc3VsdCB0cmVlIGZyYWdtZW50LiBTaGFyZSBtb3N0Ci0JICBvZiB0aGUgZGF0YSBmb3JtYXQgd2l0aCBub2RlIHNldCwgYXMgd2VsbCBhcyBvcGVyYXRvcnMuCi0JKiBIVE1MdHJlZS5jOiBhZGRlZCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdHlwZSBvdXRwdXQKLQkgIHdoZSB0aGlzIG9uZSBpcyBub3QgcHJlc2VudCBpbml0aWFsbHkuCi0JKiB0cmVlLmM6IG1ha2Ugc3VyZSB0YWh0IHRoZSBwYXJlbnQgYW5kIGRvYyBwb2ludGVycyBhcmUgcHJvcGVybHkKLQkgIHNldCB3aGVuIGNvcHlpbmcgYXR0cmlidXRlcyAobGlzdHMpLgotCi1TdW4gSmFuIDIxIDEwOjQ3OjM4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIGh0bWxUcmVlLltjaF0geG1sSU8uaDogZXhwb3J0ZWQgaHRtbERvY0NvbnRlbnREdW1wT3V0cHV0Ci0KLUZyaSBKYW4gMTkgMTg6MTU6NTAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeHBhdGguYzogc2VlbXMgSSBmaW5hbGx5IGtpbGxlZCB0aGF0IHVnbHkgcGF0aCBldmFsdWF0aW9uCi0JICBjb250ZXh0IGJ1ZyAodGFnZ2VkIDk5OTkgaW4gY2FzZSBpcyBpcyB3cm9uZykKLQotRnJpIEphbiAxOSAwNjozMDozOCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5bY2hdIHhwYXRoSW50ZXJuYWxzLmg6IGFkZGVkIHhtbFhQYXRoUmVnaXN0ZXJWYXJpYWJsZUxvb2t1cCgpCi0JICBmb3IgWFNMVAotCi1UaHUgSmFuIDE4IDE2OjE5OjQ3IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhtbElPLmM6IEdhcnkgUGVubmluZ3RvbiA8R2FyeS5QZW5uaW5ndG9uQHVrLnN1bi5jb20+IGZpeAotCSAgZm9yIHhtbEd6ZmlsZU9wZW4oKSBidWcKLQotVGh1IEphbiAxOCAxMzoxMTo1MCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4cGF0aC5jOiByZW1vdmVkIGFuIGVycm9yIGZvdW5kIGJ5IFhTTFQgdXNhZ2UKLQkqIHRyZWUuYyBwYXJzZXJJbnRlcm5hbHMuaDogdXNlIGEgcHJlZGVmaW5lZCBzdGF0aWMgc3RyaW5nCi0JICBmb3IgdGV4dCBhbmQgY29tbWVudCBub2RlcywgYXZvaWQgZnJlZWluZyB0aGVtIGluIHhtbEZyZWVOb2RlLAotCSAgZXhwb3J0ZWQgdGhlIHN0cmluZyBuYW1lIGluIHBhcnNlckludGVybmFscy5oIGFuZCBhZGRlZAotCSAgYW5vdGhlciB2YWx1ZSB0byBkaXNhYmxlIGVuY29kaW5nIGF0IG91dHB1dCAoZm9yIFhTTFQpLAotCSAgZ2FpbiBtZW1vcnksIHRpbWUuCi0KLVdlZCBKYW4gMTcgMDk6MTU6MTYgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogd2luMzIvUkVBRE1FLk1TRGV2IHdpbjMyL2xpYnhtbDIvbGlieG1sMl9hLmRzcAotCSAgd2luMzIvbGlieG1sMi9saWJ4bWwyX3NvLmRzcDogbmV3IG1ha2VmaWxlcyBhbmQgdXBkYXRlCi0JICBwcm92aWRlZCBieSBJZ29yIFpsYXRrb3ZpYyA8aWdvckBzdHVkLmZoLWZyYW5rZnVydC5kZT4KLQotVHVlIEphbiAxNiAxODoyNDo0NiBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmMgOiB4bWxTYXZlRmlsZSwgeG1sU2F2ZUZpbGVFbmMsIGFwcGxpZWQgcGF0Y2ggZnJvbSAKLQkgIEdhcnkgUGVubmluZ3RvbgotCi1Nb24gSmFuIDE1IDIwOjI0OjE4IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHhwYXRoLmM6IGZpeGVkIHRoZSBjb21hcHJpc2lvbiBvZiB2YWx1ZXMgYW5kIG5vZGVsaXN0cywKLQkgIG5lZWQgdG8gY29tcGFyZSBub2RlbGlzdCBzdGlsbCAuLi4KLQkqIGRlYnVnWE1MLmM6IGF2b2lkZWQgYSBwb3NzaWJsZSBjb3JlIGR1bXAKLQkqIEhUTUxwYXJzZXIuYzogY2xlYW51cAotCSogbmFub2h0dHAuYzogY29udHJpYnV0ZWQgZml4LgotCSogdHJlZS5jOiBmaXhlcyBpbiBwcm9wZXJ0aWVzIGhhbmRsaW5nIGFkZGVkIHhtbFNldE5zUHJvcAotCSAgbmVlZGVkIGJ5IGxpYnhzbHQKLQkqIHhwYXRoSW50ZXJuYWxzLmg6IGV4cG9ydGVkIHhtbFhQYXRoQm9vbGVhbkZ1bmN0aW9uLCBhZGRlZCBhIAotCSAgY29tbWVudAotCSogVE9ETzogdXBkYXRlZAotCi1TYXQgSmFuICA2IDIyOjA1OjA5IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHBhcnNlci5jIHBhcnNlckludGVybmFscy5jOiBhcHBsaWVkIEJqb3JuIFJlZXNlIG9wdGltaXphdGlvbgotCSAgcGF0Y2gKLQotU2F0IEphbiAgNiAxOToxMzoyNyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBNYWtlZmlsZS5hbTogYXBwbGllZCBwYXRjaCBmcm8gbWFrZSBjaGVjayBmcm9tIE1hcnRpbiBWaWRuZXIKLQotVGh1IEphbiAgNCAxOTowNzo0OSBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyAyLjIuMTEKLQkqIGRvYy9odG1sLyo6IHJlYnVpbGQgdGhlIEhUTUwgZmlsZXMKLQkqIGRvYy94bWwuaHRtbCA6IHVwZGF0ZWQKLQotVGh1IEphbiAgNCAxNDowOTo1OCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB0cmVlLmM6IGZpeGVkIGEgc3R1cGlkIGJ1ZwotCSogdmFsaWQuYzogYXBwbGllZCAiUGF1bCBELiBTbWl0aCIgPHBhdXNtaXRoQG5vcnRlbG5ldHdvcmtzLmNvbT4KLQkgIHBhdGNoZXMgcmVsYXRlZCB0byB2YWxpZGF0aW9uIG9mIGFuIFhJbmNsdWRlIHByb2Nlc3NpbmcgcmVzdWx0Ci0JKiBUT0RPOiB1cGRhdGVkCi0KLVRodSBKYW4gIDQgMTE6NDY6NDAgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogZW5jb2RpbmcuYyB4bWxJTy5jOiBGaXhpbmcgdGhlIHByb2JsZW0gcmVwb3J0ZWQgYnkgTWFyYyBTYW5mYWNvbgotCSAgb24gbGFyZ2UgZmlsZXMKLQotV2VkIEphbiAgMyAyMTo1MToxMyBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiB4bWxJTy5jOiBmaXhlZCB4bWxQYXJzZXJJbnB1dEJ1ZmZlckNyZWF0ZU1lbSBkb2MKLQotV2VkIEphbiAgMyAxODo1NjowMCBDRVQgMjAwMSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEBpbWFnLmZyPgotCi0JKiBIVE1McGFyc2VyLmM6IGh0bWxDaGVja1BhcmFncmFwaCB0byBjaGVjayBodG1sT21pdHRlZERlZmF1bHRWYWx1ZSwKLQkgIHJlcG9ydGVkIGJ5IEpvbmFzIEJvcmdzdHL2bQotCSogbmFub2h0dHAuYzogQXBwbGllZCBCam9ybiBSZWVzZScgSVBWNiBmaXJzdCBwYXRjaAotCi1XZWQgSmFuICAzIDE2OjE5OjM5IENFVCAyMDAxIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQGltYWcuZnI+Ci0KLQkqIHRlc3RYUGF0aC5jIHhwYXRoLmM6IGZpeGluZyB0aGUgWFBhdGggdW5pb24gZXhwcmVzc2lvbnMgcHJvYmxlbQotCSAgcmVwb3J0ZWQgYnkgIE1hcnRpbiBWaWRuZXIgPG1hcnRpbkBhcnRheC5rYXJsaW4ubWZmLmN1bmkuY3o+Ci0KLVdlZCBKYW4gIDMgMTQ6MjI6MzMgQ0VUIDIwMDEgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAaW1hZy5mcj4KLQotCSogeG1sbGludC5jOiBNYWRlIGlzIHNvIGlmIHRoZSBmaWxlIG5hbWUgaXMgIi0iIGlzIHdpbGwgcmVhZCBmb3JtCi0JICBzdGFuZGFyZCBpbnB1dC4gU3ZlbiBIZWluaWNrZSAgPHN2ZW5AemVuLm9yZz4KLQkqIHRyZWUuYzogZml4ZWQgYSBwcm9ibGVtIHdoZW4gZ3Jvd2luZyBidWZmZXIKLQkqIHRyZWUuaDogZml4ZWQgdGhlIGNvbW1lbnQgb2YgdGhlIG5vZGUgdHlwZXMgZm9sbG93aW5nIGFuZGVyc2NhCi0JICBjb21tZW50Ci0JKiBUT0RPOiB1cGRhdGVkCi0KLVdlZCBEZWMgMjcgMTI6MzU6NDkgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLltjaF06IGFkZGVkIGEgd2F5IHRvIGF2b2lkIGFkZGluZyBhdXRvbWF0aWNhbGx5Ci0JICBvbWl0dGVkIHRhZ3MuIGh0bWxIYW5kbGVPbWl0dGVkRWxlbSgpIGFsbG93cyB0byBjaGFuZ2UgdGhlCi0JICBkZWZhdWx0IGhhbmRsaW5nLgotCSogdHJlZS5bY2hdIHhtbGxpbnQuYzogYWRkZWQgeG1sRG9jRHVtcEZvcm1hdE1lbW9yeSgpIGFuZCAKLQkgIHhtbERvY0R1bXBGb3JtYXRNZW1vcnlFbmMoKSwgdXNlcyBtZW1vcnkgZnVuY3Rpb25zIGZvciBvdXRwdXQKLQkgIG9mIHhtbGxpbnQgdG9vIHdoZW4gdXNpbmcgLS1tZW1vcnkgZmxhZywgYWRkZWQgYSBtZW1vcnkgdGVzdAotCSAgc3VpdGUgYXQgdGhlIE1ha2VmaWxlIGxldmVsLgotCSogeHBhdGhJbnRlcm5hbHMuaCB4cGF0aC5bY2hdIHhwb2ludGVyLmM6IGZpeGVkIHByb2JsZW1zCi0JICB3aXRoIG5hbWVzcGFjZSB1c2Ugd2hlbiBlbmNvdW50ZXJpbmcgUU5hbWVzIGluIFhQYXRoIGV2YWxhdGlvbiwKLQkgIGFkZGVkIHhtbG5zKCkgc2NoZW1lIGluIFhQb2ludGVyLgotCSogbmFub2Z0cC5jIDogaW5jb3Jwb3JhdGVkIGEgZml4Ci0JKiBwYXJzZXIuYyB4bWxJTy5jOiBmaXhlZCBwcm9ibGVtcyByYWlzZWQgd2l0aCBlbmNvZGluZyB3aGVuIHVzaW5nCi0JICB0aGUgbWVtb3J5IEkvTwotCSogcGFyc2VySW50ZXJuYWxzLmM6IGNsb3NlZCBidWcgMjU5MzQgcmVwb3J0ZWQgYnkgCi0JICB0b3JzdGVuLmxhbmRzY2hvZmZAaW5ub21pbmF0ZS5kZQotCSogVE9ETzogdXBkYXRlZAotCi1TYXQgTm92IDI1IDExOjQ2OjI3IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluIGRvYy9odG1sLyogZG9jL3htbC5odG1sOiBtYWRlIGEgMi4yLjkgcmVsZWFzZQotCSAgb24gYSBub24tdXBkYXRlZCB0cmVlIDotKCwgbWFkZSBhIDIuMi4xMCByZWxlYXNlIHRvIGNvcnJlY3QgdGhlCi0JICBzaXR1YXRpb24KLQotU2F0IE5vdiAyNSAxMDo0MTozNyBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9odHRwLmMgcGFyc2VyLltjaF0gdHJlZS5bY2hdIHhtbElPLltjaF0geG1sbGludC5jIHhwYXRoLmMKLQkgIHBhcnNlckludGVybmFscy5oIHZtcy9idWlsZF9saWJ4bWwuY29tIHZtcy9jb25maWcudm1zIE1ha2VmaWxlLmFtOgotCSAgaW50ZWdyYXRlZCBhIHNldCBvZiBPcGVuVk1TIGNoYW5nZXMgZnJvbSBIb3dhcmQgVGF5bG9yCi0JICA8SG93YXJkLlRheWxvckBwYWNvYXN0LmNvbT4KLQotU2F0IE5vdiAyNSAwMToyMTowMSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuW2NoXSB4bWxJTy5jOiBhZGRlZCB4bWxEb2NEdW1wTWVtb3J5RW5jKCkgZnJvbSBKb2huIEtyb2xsCi0JKiBlcnJvci5jOiBhcHBsaWVkIGZpeCBzdWdnZXN0ZWQgYnkgIkxlbyBEYXZpZHNvbiIgPGxlb0BveC5jb21wc29jLm5ldD4KLQotU2F0IE5vdiAyNSAwMDoyNDo0OSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYzogc29tZSBmaXhlcyBvbiBhdXRvLW9wZW4gb2YgaHRtbC9oZWFkL2JvZHkKLQkqIGVuY29kaW5nLmM6IGZpeGVkIGEgY29tcGlsYXRpb24gZXJyb3Igb24gc29tZSBnY2MgZW52Ci0JKiB4cGF0aC5jIHhwb2ludGVyLltjaF0geHBhdGhJbnRlcm5hbHMuaDogaW1wcm92ZWQgdGhlCi0JICBYUG9pbnRlciBpbXBsZW1lbnRhdGlvbgotCSogdGVzdC9YUGF0aC94cHRyL3N0cnBvaW50IHRlc3QvWFBhdGgveHB0ci9zdHJyYW5nZTM6IGFkZGVkCi0JICByZWxhdGVkIFhQb2ludGVyIHRlc3RzIGFuZCBhc3NvY2lhdGVkIHJlc3VsdHMKLQotRnJpIE5vdiAyNCAxNDowMTo0NCBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWxkdGQuaHRtbCBkb2MveG1sLmh0bWw6IGZvbGxvd2luZyBhIHNob3J0IHN0ZXAgYnkgc3RlcAotCSAgZ3VpZGFuY2Ugb24gSVJDIHRvIGhlbHAgbWFjaWVqIHdpdGggRFREcyBJIHN0YXJ0ZWQgYSBzbWFsbAotCSAgcGFnZSBvbiB0aGUgc3ViamVjdC4KLQotRnJpIE5vdiAxNyAxNzoyODowNiBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgaGFuZGxpbmcgb2YgYnJva2VuIGNoYXJyZWZzCi0JKiB4bWxtZW1vcnkuaCBsaWJ4bWwyLmRzcCBpbmNsdWRlL3dpbjMyY29uZmlnLmg6IHJlcG9ydGluZyBXaW5kb3dzCi0JICBwYXRjaGVzCi0KLU1vbiBOb3YgMTMgMTk6MTc6MjAgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MveG1sLmh0bWwgZG9jL2h0bWwvKiA6IHJlYnVpbHQgdGhlIGRvY3MgYWZ0ZXIgYWRkaW5nCi0JICB4aW5jbHVkZSBhbmQgdXBkYXRlZCBwYWdlIGZvciAyLjIuNyBhbmQgMi4yLjgKLQkqIGNvbmZpZ3VyZS5pbjogcmVsZWFzaW5nIDIuMi44Ci0KLU1vbiBOb3YgMTMgMTI6Mzk6MzggQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuW2NoXSBwYXJzZXJJbnRlcm5hbHMuYzogYXBwbGllZCB0aGUgY29uZGl0aW9uYWwKLQkgIHNlY3Rpb24gcHJvY2Vzc2luZyBmaXggZnJvbSBKb25hdGhhbiBQIFNwcmluZ2VyCi0JICA8am9uYXRoYW4uc3ByaW5nZXIyQGd0ZS5uZXQ+Ci0JKiB4bWx2ZXJzaW9uLmguaW4gd2luMzIvbGlieG1sMi9saWJ4bWwyLmRzcCA6IFVwZGF0ZWQgTVMKLQkgIHByb2plY3QgZmlsZSwgZml4ZWQgaWNvbnYgZGVmYXVsdCBub24gc3VwcG9ydAotCSogeHBhdGguYzogZml4ZWQgdGhlIHByb2JsZW0gb2YgZXZhbHVhdGluZyByZWxhdGl2ZSBleHByZXNzaW9ucwotCSAgd2hlbiBhIG5vZGUgY29udGV4dCBpcyBwcm92aWRlZC4KLQotU3VuIE5vdiAxMiAxNjozMToxOSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9mdHAuYzogZml4ZWQgZ2NjIDIuOTUgbmV3IHdhcm5pbmdzCi0JKiBTQVguYzogZml4ZWQgYSBzdHVwaWQgYnVnCi0JKiB0cmVlLmM6IGZpeGVkIGEgZm9ybWF0dGluZyBwcm9ibGVtIHdoZW4gcm91bmQtdHJpcHBpbmcKLQkgIGZyb20vdG8gbWVtb3J5Ci0JKiB4aW5jbHVkZS5jOiBjaGFzZWQgbWVtbGVhaywgZml4ZWQgYSBiYXNlIHByb2JsZW0KLQkqIHhwb2ludGVyLmM6IGFkZGVkIHhtbFhQdHJCdWlsZFJhbmdlTm9kZUxpc3QoKSwgZmluaXNoZWQgPyAKLQkgIHhtbFhQdHJCdWlsZE5vZGVMaXN0KCkKLQkqIFRPRE86IHVwZGF0ZWQKLQkqIE1ha2VmaWxlLmFtIHRlc3QvWEluY2x1ZGUvZG9jcyB0ZXN0L1hJbmNsdWRlL2VudHMgcmVzdWx0L1hJbmNsdWRlOgotCSAgYWRkaW5nIGEgZmlyc3Qgc21hbGwgc2V0IG9mIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIFhJbmNsdWRlCi0KLVR1ZSBOb3YgIDcgMTU6MTE6MzQgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vaHR0cC5bY2hdOiBhcHBsaWVkIFdheW5lIERhdmlzb24gcGF0Y2hlcyB0byBhY2Nlc3MKLQkgIHRoZSBXV1ctQXV0aG9yaXphdGlvbiBoZWFkZXIuCi0JKiBwYXJzZXIuYzogQ2xvc2VkIEJ1ZyMzMDg0NzogUHJvYmxlbXMgd2hlbiBzd2l0Y2hpbmcgZW5jb2RpbmcKLQkgIGluIHNob3J0IGZpbGVzIGJ5IGFwcGx5aW5nIFNpbW9uIEJlcmcncyBwYXRjaC4KLQkqIHZhbGlkLmM6IGZpeGVkIGEgdmFsaWRhdGlvbiBwcm9ibGVtCi0JKiBoYXNoLmMgcGFyc2VyLmggcGFyc2VySW50ZXJuYWxzLmggdGVzdEhUTUwuYyB0ZXN0U0FYLmMgdHJlZS5oCi0JICB4bWxlcnJvci5oIHhtbG1lbW9yeS5oIHhtbHZlcnNpb24uaC5pbjogYXBwbGllZCBhIERMTCBwYXRjaCBmcm9tCi0JICBXYXluZSBEYXZpc29uCi0JKiB4cG9pbnRlci5bY2hdOiBhZGRlZCBmaXJzdCB2ZXJzaW9uIG9mIHhtbFhQdHJCdWlsZE5vZGVMaXN0KCkKLQkgIG5lZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbm9uIGZ1bGwgbm9kZXMgc2VsZWN0aW9ucy4KLQkqIHhpbmNsdWRlLmM6IHN0YXJ0cyB0byB3b3JrIGRlY2VudGx5Ci0KLU1vbiBOb3YgIDYgMTc6MjI6NDYgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLltjaF0geGluY2x1ZGUuW2NoXSB4bWxsaW50LmMgY29uZmlndXJlLmluIHZhbGlkLmMKLQkgIGRlYnVnWE1MLmMgeG1sdmVyc2lvbi5oLmluOiBTdGFydGVkIGFkZGluZyBYSW5jbHVkZSBzdXBwb3J0LAotCSAgdGhpcyBpcyBhIG5ldyB4bWxsaW50IG9wdGlvbgotCSogdHJlZS5jIHhwYXRoLmM6IGFwcGxpZWQgVE9NIHBhdGNoZXMgZm9yIFhQYXRoCi0JKiB4cG9pbnRlci5jOiBmaXhlZCBhIGNvdXBsZSBvZiBlcnJvcnMuCi0JKiB1cmkuYzogYWRkZWQgYW4gZXNjYXBpbmcgZnVuY3Rpb24gbmVlZGVkIGZvciB4aW5jbHVkZQotCSogdGVzdFhQYXRoLmMgaGFzaC5jIEhUTUx0cmVlLmM6IG1pbm9yIGNsZWFudXBzIHJhaXNlZCBieQotCSAgbmV3IHdhcm5pbmcgZnJvbSBSSDcwIGdjYydzIHZlcnNpb24KLQotVHVlIE9jdCAzMSAxNDoxNDoxMyBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgbG9vcCBvbiBpbnZhbGlkIGNoYXIgaW4gc2NyaXB0cwotCSogcGFyc2VyLmM6IHVwZGF0ZSB0byBkZXNjcmlwdGlvbiBvZiB4bWxJT1BhcnNlRFREKCkKLQkqIGxpYnhtbC5tNCB4bWx2ZXJzaW9uLmguaW46IGNoYW5nZXMgY29udHJpYnV0ZWQgYnkKLQkgIE1pY2hhZWwgU2NobWVpbmcgPG0uc2NobWVpbmdAaW50ZXJuZXQtZmFjdG9yeS5kZT4KLQkqIGNvbmZpZ3VyZS5pbjogcHJlcGFyaW5nIGZvciAyLjIuNwotCSogTWFrZWZpbGUuYW06IHRyeWluZyB0byBhdm9pZCAgY29uZmlnLmggYW5kIGFjY29uZmlnLmgKLQkgIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBkaXN0cmliCi0JKiBjb25maWd1cmUuaW46IHJlbGVhc2VkIDIuMi43Ci0KLU1vbiBPY3QgMzAgMTc6MDg6MTAgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLltjaF0gZGVidWdYTUwuYyBwYXJzZXJJbnRlcm5hbHMuYyB4cGF0aC5jOiBEZXByZWNhdGVkIFBpJ3MKLQkgIGxpa2UgbmFtZXNwYWNlcyBmb3IgZ29vZC4gVW5pZmllZCB4bWxOcyBhbmQgeG1sTm9kZSBzb21ld2hhdC4KLQotTW9uIE9jdCAzMCAxNjoyNjo0OSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5bY2hdOiBhZGRlZCB4bWxJT1BhcnNlRFREKCkKLQkqIHhwb2ludGVyLmM6IGFkZGVkIHN1cHBvcnQgZm9yIHRoZSAyIGV4dHJhIHBhcmFtZXRlcnMgb2YKLQkgIHN0cmluZy1yYW5nZSwgZml4ZWQgYSBzdG9vcGlkIGVycm9yIHdoZW4gJzAnIHdhcyBwcmVzZW50Ci0JICBpbiBYUG9pbnRlciBleHByZXNzaW9ucwotCSogdGVzdC9YUGF0aC94cHRyL3N0cnJhbmdlMiByZXN1bHQvWFBhdGgveHB0ci9zdHJyYW5nZTI6IGFkZGVkCi0JICB0ZXN0c3VpdGUgZm9yIHRoZSBhYm92ZQotCi1Nb24gT2N0IDMwIDEwOjI2OjQzIENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbGlieG1sLnNwZWMuaW46IGltcHJvdmVkIHBhY2thZ2UgZGVzY3JpcHRpb25zCi0KLVN1biBPY3QgMjkgMTk6MDM6MTEgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5jIHhwYXRoSW50ZXJuYWxzLmg6IGFwcGxpZWQgYSBsYXJnZSBjbGVhbmluZyBwYXRjaAotCSAgZnJvbSBUT00gPHB0aXR0b21AZnJlZS5mcj4sIGl0IGFsc28gYWRkIG5hbWVzcGFjZSBzdXBwb3J0Ci0JICBmb3IgZnVuY3Rpb24gYW5kIHZhcmlhYmxlcyByZWdpc3RyYXRpb24uCi0KLVN1biBPY3QgMjkgMTg6NTE6NDYgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB1cmkuYzogV2F5bmUgRGF2aXNvbidzIHBhdGNoIGZpeGluZyB4bWxCdWlsZFVSSSgpCi0JKiBNYWtlZmlsZS5taW5ndzogV2F5bmUgRGF2aXNvbidzIHVwZGF0ZSBhZGRpbmcgaGFzaC5jCi0KLVN1biBPY3QgMjkgMTg6Mzg6MTIgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5jOiBmaXhlZCB0aGUgcm9vdCBldmFsdWF0aW9uIHByb2JsZW1zCi0JKiBIVE1McGFyc2VyLmMgcmVzdWx0L0hUTUwvZG9jMy5odG06IGZpeGVkIHRoZSBwcm9ibGVtIG9mIG5vbgotCSAgaWdub3JhYmxlIHNwYWNlcyB3aXRoIDxiPiA8Ym9sZD4gPGVtPgotCSogdHJlZS5jOiBmaXhlZCBhIGxvb3AgaW4geG1sU2VhcmNoTnNCeUhyZWYoKQotCi1GcmkgT2N0IDI3IDE4OjU3OjMyIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHhwYXRoLmM6IGFwcGxpZWQgYW5vdGhlciBYUGF0aCBwYXRjaCBmcm9tIFRPTSAKLQkqIHhwYXRoLmMgaW5jbHVkZS9tYWtlZmlsZS5hbTogYXBwbGllZCBhbm90aGVyIHBhdGNoIGZyb20gCi0JICBjaGluYUB0aGV3cml0dGVud29yZC5jb20gKGNsZWFudXAgb24gSVJJWCkuCi0KLUZyaSBPY3QgMjcgMTM6NDU6MjggQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sLWNvbmZpZy4xOiByZWNlaXZlZCBhIGZpeGVkIHZlcnNpb24gZnJvbSBGcmVkcmlrIEhhbGxlbmJlcmcKLQkgIDxoYWxsb25AbHlzYXRvci5saXUuc2U+Ci0KLVRodSBPY3QgMjYgMTY6MDU6MjUgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeHBhdGguYyB0ZXh0WFBhdGguYyB4cGF0aEludGVybmFscy5oOiBhcHBsaWVkIFRPTSA8cHRpdHRvbUBmcmVlLmZyPgotCSAgY2xlYW51cCBwYXRjaCBmb3IgWFBhdGgKLQotV2VkIE9jdCAyNSAyMTozMToxMCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXRjaGVkIHRvIHJlZGlycmVjdCBhbGwgIm91dCBvZiBjb250ZXh0IiBlcnJvciBtZXNzYWdlcyB0bwotCSAgYSByZWNvbmZpZ3VyYWJsZSByb3V0aW5lLiBUaGUgY2hhbmdlcyBhcmU6Ci0JKiB4bWxlcnJvci5oIDogYWRkZWQgdGhlIGV4cG9ydCBvZiBhbiBlcnJvciBjb250ZXh0IHR5cGUgKHZvaWQgKikKLQkgIGFuIGVycm9yIGhhbmRsZXIgdHlwZSB4bWxHZW5lcmljRXJyb3JGdW5jIHRoZXJlIGlzIGFuIGludGVyZmFjZQotCSAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYyh2b2lkICpjdHgsIHhtbEdlbmVyaWNFcnJvckZ1bmMgaGFuZGxlcik7Ci0JICB0byByZXNldCB0aGUgZXJyb3IgaGFuZGxpbmcgcm91dGluZSBhbmQgaXRzIGFyZ3VtZW50Ci0JICAoYnkgZGVmYXVsdCBpdCdzIGVxdWl2YWxlbnQgdG8gcmVzcGVjdGl2ZWx5IGZwcmludGYgYW5kIHN0ZGVyci4KLQkqIGFsbCB0aGUgYyBmaWxlczogYWxsIHdpbGQgYWNjZXNzZXMgdG8gc3RkZXJyIG9yIHN0ZG91dCB3aXRoaW4KLQkgIHRoZSBsaWJyYXJ5IGhhdmUgYmVlbiByZXBsYWNlZCB0byBjYWxscyB0byB0aGUgaGFuZGxlci4KLQotV2VkIE9jdCAyNSAxNToyNzoxOSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW46IHJlbGVhc2UgMi4yLjYKLQkqIHhwYXRoLltjaF0geHBvaW50ZXIuYyB4cGF0aEludGVybmFscy5oOiBhZGRlZCB4cGF0aEludGVybmFscy5oCi0JICBleHBvcnRpbmcgdGhlIGlubmVyIGZ1bmN0aW9ucyBvZiB4cGF0aCBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKLQkqIGRvYy8qOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2MKLQotV2VkIE9jdCAyNSAxMjo0ODo1NSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vaHR0cC5jIDogYXBwbGllZCBXYXluZSBIVFRQIGNsZWFudXAgcGF0Y2gKLQkqIHRyZWUuW2NoXTogYXBwbGllZCBUT00gPHB0aXR0b21AZnJlZS5mcj4gZm9yIHhtbE5vZGVTZXRCYXNlKCkKLQkgIGFuZCB4bWxOb2RlU2V0U3BhY2VQcmVzZXJ2ZSgpCi0KLVdlZCBPY3QgMjUgMTI6MTE6MDMgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeHBhdGguYzogY2xvc2luZyBidWcgIzI5MjYwCi0KLVR1ZSBPY3QgMjQgMTg6NDk6MzQgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogaGFzaC5bY2hdIGRlYnVnWE1MLmM6IGV4cGFuZGVkL2VuaGFuY2VkIHRoZSBBUEksIGFkZGVkCi0JICBtdWx0aWtleSB0dXBsZXMsIG1hZGUgaGFzaCBzdHJ1Y3R1cmUgb3BhcXVlCi0JKiB2YWxpZC5bY2hdOiBtb3ZlZCBlbGVtZW50cywgYXR0cmlidXRlcywgbm90YXRpb25zIGRlY2FsYXJhdGlvbnMKLQkgIGFzIHdlbGwgYXMgSUQgYW5kIHJlZnMgdG8gaGFzaCB0YWJsZXMuCi0JKiBlbnRpdGllcy5jOiBoYXNoIGNsZWFudXAKLQkqIHhtbG1lbW9yeS5jOiBmaXhlZCBhIGR1bXAgcHJvYmxlbSBpbiBkZWJ1ZyBtb2RlCi0JKiBpbmNsdWRlL01ha2VmaWxlLmFtOiBwcm9ibGVtIHBhc3NpbmcgaW4gREVTVERJUj0gdmFsdWVzIHBhdGNoCi0JICBmcm9tIE1hcmMgQ2hyaXN0ZW5zZW4gPG1hcmNAY2FsZGVyYXN5c3RlbXMuY29tPgotCSogbmFub2h0dHAuYzogcmVtb3ZlZCBkZWJ1Z2dpbmcgcmVtYWlucwotCSogSFRNTHBhcnNlci5jOiB0aGUgYm9ndXMgdGFnIHNob3VsZCBiZSBpZ25vcmVkIChXYXluZSkKLQkqIEhUTUxwYXJzZXIuYyBwYXJzZXIuYzogZml4aW5nIGEgbnVtYmVyIG9mIHByb2JsZW1zIHdpdGggdGhlCi0JICBtYWNyb3MgaW4gdGhlICpwYXJzZXIuYyBmaWxlcyAoV2F5bmUpLgotCSogSFRNTHBhcnNlci5jOiBjbG9zZSB0aGUgcHJldmlvdXMgb3B0aW9uIHdoZW4gb3BlbmluZyBhIG5ldyBvbmUKLQkgIChNYXJjIFNhbmZhY29uKS4KLQkqIHJlc3VsdC9IVE1MLyo6IHVwZGF0ZWQgdGhlIEhUTUwgcmVzdWx0cyBhY2NvcmRpbmdseQotCi1TdW4gT2N0IDIyIDE4OjM5OjE5IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGVudGl0aWVzLltjaF0geHBhdGguW2NoXSBoYXNoLltjaF0gZGVidWdYTUwuYyB0cmVlLmg6IGFkZGVkL2hhY2tlZAotCSAgaGFzaCB0YWJsZXMgZnJvbSBCam9ybiBSZWVzZSA8YnJlZXNlQG1haWwxLnN0b2ZhbmV0LmRrPi4gU3dpdGNoZWQKLQkgIFhQYXRoIGZ1bmN0aW9ucyBhbmQgWE1MIGVudGl0aWVzIHRhYmxlIHRvIHRoZW0uIE1vcmUgdG8gY29tZS4uLgotCSogeG1sSU8uYzogZml4ZWQgbGlieG1sIGNsb3NpbmcgRklMRXMgaXQgZGlkbid0IG9wZW4uCi0KLVN1biBPY3QgMjIgMTM6NTk6NTAgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jOiBjb2FsZXNjZSBhZGphY2VudCB0ZXh0IG5vZGVzCi0JKiB2YWxpZC5jOiBoYW5kbGluZyBvZiBibGFuayBub2RlcyBpbiBEVGQgdmFsaWRhdGlvbiAocmFpc2VkCi0JICBieSBwcm9ibGVtcyB3aXRoIGEgcG9zdGVyaW9yaSB2YWxpZGF0aW9uKS4KLQkqIG5hbm9odHRwLmM6IGNoYW5naW5nIGJlaGF2aW91ciBvbiBIVFRQIHdyaXRlIHN0dWZmLgotCSogSFRNTHRyZWUuYzogZm9yY2VkIGJvZHkgYW5kIGh0bWwgdG8gYmUgZXhwbGljaXRlbHkgY2xvc2VkLgotCSogeHBhdGguaDogZXhwb3J0ZWQgbW9yZSBYUGF0aCBmdW5jdGlvbnMuCi0KLVN1biBPY3QgMTUgMjI6Mjg6MzIgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogUmVsZWFzZSBvZiAyLjIuNQotCSogeHBvaW50ZXIuYzogcmFuZ2UoKSByYW5nZS1pbnNpZGUgYW5kIG90aGVyIGhlbHBlciBmdW5jdGlvbnMKLQkqIHBhcnNlckludGVybmFscy5jOiBmaXhlZCBwZXJmIHByb2JsZW0gcmFpc2VkIGJ5IHJvbGZAcG9pbnRzbWFuLmRlCi0KLVN1biBPY3QgMTUgMTY6MjE6MjcgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogU0FYLmM6IEhUTUwgYXR0cmlidXRlcyBuZWVkIG5vcm1hbGl6YXRpb24gdG9vIChCam9ybiBSZWVzZSkKLQkqIEhUTUxwYXJzZXIuW2NoXTogYWRkZGVkIGh0bWxJc1NjcmlwdEF0dHJpYnV0ZSgpCi0KLVN1biBPY3QgMTUgMTM6MTg6MzYgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jLyo6IHJlYnVpbHQgZG9jcyBwcmVwYXJpbmcgZm9yIDIuMi41IHJlbGVhc2UsIGFkZGVkIFVSSQotCSAgYW5kIFhQb2ludGVyIG1vZHVsZXMKLQotU3VuIE9jdCAxNSAxMjoxMzozMCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBTQVguaDogY2xvc2VkICMyNTEwNwotCi1TdW4gT2N0IDE1IDEyOjA2OjE2IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRlc3RTQVguYzogZml4ZWQgcHJvYmxlbSB3aXRoIGNkYXRhIHJlcG9ydGluZwotCSogU0FYcmVzdWx0LyogOiB1cGRhdGVkCi0KLVN1biBPY3QgMTUgMTI6MDA6MjQgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMgdGVzdC93YXAueG1sIHJlc3VsdC9ub2VudC93YXAueG1sIHJlc3VsdC93YXAueG1sOgotCSAgQ2xvc2VkIGJ1ZyAjMjc0OTksIGFkZGVkIHRvIHJlZ3Jlc3Npb24gdGVzdHMKLQkqIFRPRE86IHVwZGF0ZWQKLQotU3VuIE9jdCAxNSAwMTozNDozNyBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmMgSFRNTHRyZWUuW2NoXSBTQVguYyB0ZXN0SFRNTC5jIHRyZWUuYzogZml4ZWQgSFRNTAotCSAgc3VwcG9ydCBmb3IgU0NSSVBUIGFuZCBTVFlMRSB3aXRoIGhlbHAgZnJvbSBCam9ybiBSZWVzZQotCSogdGVzdC9IVE1MLyogcmVzdWx0L0hUTUwvKjogYWRkZWQgc2ltcGxlIHRlc3RjYXNlIGFuZCB1cGRhdGVkCi0JICB0aGUgZXhpc3Rpbmcgb25lcy4KLQotRnJpIE9jdCAxMyAxODoyNDozMSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5jIHhwb2ludGVyLmM6IFhQb2ludGVyIHJlb3JkZXIgb2YgcmFuZ2VzIHN0YXJ0L2VuZCBhbmQKLQkgIHN0cmluZy1yYW5nZSBmb3IgZW1wdHkgc3RyaW5ncwotCSogdGVzdC9YUGF0aC9kb2NzL3N0ciB0ZXN0L1hQYXRoL3hwdHIvY2hhcHRlcnNyYW5nZQotCSAgdGVzdC9YUGF0aC94cHRyL3N0cnJhbmdlOiBhdWdtZW50ZWQgdGhlIFhQb2ludGVyIHRlc3RzdWl0ZQotCi1GcmkgT2N0IDEzIDEyOjIxOjQ4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWwuaHRtbCBkb2MveG1sbWVtLmh0bWw6IGFkZGVkIGEgbW9kdWxlIGRlc2NyaWJpbmcgbWVtb3J5Ci0JICBpbnRlcmZhY2VzIGFuZCB1c2UsIHVwZGF0ZWQgdGhlIG1haW4gcGFnZS4KLQotRnJpIE9jdCAxMyAwMToyMzo0OCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vZnRwLmMgbmFub2h0dHAuYyB4bWxJTy5jOiBXYXluZSBEYXZpc29uIFdpbjMyIHBhdGNoCi0JICBuYW5vZnRwIGNvZGUgd29yayBvbiBXaW5kb3dzIHRvbyBub3cKLQotRnJpIE9jdCAxMyAwMDo1NDozNyBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0ZXN0WFBhdGguYyB4cGF0aC5bY2hdOiBtb3ZlZCBzb21lIGRlYnVnIGZ1bmN0aW9ucyB0byB4cGF0aCBjb3JlCi0JKiB4cG9pbnRlci5jOiBpbXBsZW1lbnRlZCBzdHJpbmctcmFuZ2UoKSBhdCBsZWFzdCBhIGdvb2QgZmlyc3QgdmVyc2lvbgotCSogdGVzdC9YUGF0aC9kb2NzL3N0ciB0ZXN0L1hQYXRoL3hwdHIvc3RycmFuZ2UKLQkgIHJlc3VsdC9YUGF0aC94cHRyL3N0cnJhbmdlOiB0aGUgc3RyaW5nLXJhbmdlKCkgdGVzdHMKLQotVGh1IE9jdCAxMiAxMDowMjo1OSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBNYWtlZmlsZS5hbSBpbmNsdWRlL01ha2VmaWxlLmFtIGluY2x1ZGUvd2luMzJjb25maWcuaAotCSAgd2luMzIvTWFrZWZpbGUubWluZ3c6IGZpeGVkIHByb2JsZW1zIHJlcG9ydGVkIGJ5IFdheW5lIERhdmlzb24KLQkgIGFuZCBtYWtlIGRpc3RjaGVjawotCi1UaHUgT2N0IDEyIDAxOjQ0OjA4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9odHRwLmM6IGFkZGVkIHhtbE5hbm9IVFRQVGltZW91dChpbnQgZGVsYXkpLCByZW1vdmVkIGEgYnVnCi0JICB4bWxOYW5vSFRUUE1ldGhvZCBvbiBpbnB1dCBNaW1lVHlwZSBUb255IExhbSA8VG9ueS5MYW1AZW5nLnN1bi5jb20+Ci0JKiB4cG9pbnRlci5jOiBzbGlnaHQgZXh0ZW5zaW9uIG9mIHhtbFhQdHJMb2NhdGlvblNldE1lcmdlCi0KLVRodSBPY3QgMTIgMDE6Mzc6NTMgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlnLmguaW4gY29uZmlndXJlLmluIG5hbm9mdHAuYyBuYW5vaHR0cC5jIHhtbHZlcnNpb24uaC5pbiA6Ci0JICBwYXRjaCBmb3Igc29ja2xlbl90IGRldGVjdGlvbiBieQotCSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgotCi1XZWQgT2N0IDExIDE3OjUzOjU3IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuYyB2YWxpZC5jIHhtbGxpbnQuYzogRml4ZWQgYSBmZXcgcG9zdHZhbGlkYXRpb24gYnVncwotCSAgYW5kIGFkZGVkIGEgLS1kdGR2YWxpZCBvcHRpb24gdG8geG1sbGludCB1c2VkIHRvIHRlc3QgaXQKLQotV2VkIE9jdCAxMSAxNTowMToyOSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWwtY29uZmlnLjEgTWFrZWZpbGUuYW0gbGlieG1sLnNwZWMuaW46IGFkZGluZyBhIG1hbiBwYWdlIGZvcgotCSAgeG1sLWNvbmZpZyBieSBGcmVkcmlrIEhhbGxlbmJlcmcgPGhhbGxvbkBseXNhdG9yLmxpdS5zZT4KLQotV2VkIE9jdCAxMSAxMjo0MTozMCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5bY2hdIHhwb2ludGVyLltjaF06IHdvcmtlZCBvbiBYUGF0aCBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlCi0JICBoYW5kbGluZ3MgKHJlZ2lzdHJhdGlvbiwgbG9va3VwLCBjbGVhbnVwKQotCi1XZWQgT2N0IDExIDAxOjQ2OjQ0IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5hbSBpbmNsdWRlL21ha2VmaWxlLmFtOiBhZGRpbmcgWFBvaW50ZXIKLQkgIGFuZCBYUHRydGVzdHMgdGFyZ2V0Ci0JKiB4cG9pbnRlci5bY2hdIDogbmV3IGZpbGVzIGZvciBYUG9pbnRlciBzdXBwb3J0Ci0JKiB0ZXN0L1hQYXRoL3hwdHIgcmVzdWx0L1hQYXRoL3hwdHI6IGFkZGVkIFhQb2ludGVyIHRlc3RzdWl0ZSBhbmQKLQkgIG1vcmUgWFBhdGggdGVzdHMKLQotV2VkIE9jdCAxMSAwMToyMzoyNSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW46IGZpeGVkLCB2ZXJ5IGJyb2tlbiwgbWFrZSBkaXN0Y2hlY2sgd29ya3MgYWdhaW4KLQotV2VkIE9jdCAxMSAwMjo1MzoxMCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBNb3JlIHdvcmsgdG93YXJkIDIuMi41LCBpbnRlZ3JhdGVkIGEgbnVtYmVyIG9mIHBhdGNoZXMKLQkqIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5hbSB3aW4zMmNvbmZpZy5oLmluOiB0cnlpbmcgdG8gY2xlYW51cAotCSAgbWFrZSBkaXN0Y2hlY2sgLi4uLiBodWggLi4uCi0JKiBpbmNsdWRlL01ha2VmaWxlLmFtIGluY2x1ZGUvd2luMzJjb25maWcuaDogbmV3IGRpcmVjdG9yeQotCSAgZm9yIGluY2x1ZGVzCi0JKiB3aW4zMi9NYWtlZmlsZS5taW5ndyB3aW4zMi9SRUFETUUuTVNEZXYgd2luMzIvbGlieG1sMi9saWJ4bWwyLmRzcAotCSAgdXBkYXRlZCB0ZWggbWFrZWZpbGVzIGFuZCBpbnN0cnVjdGlvbnMgZm9yIFdJTjMyCi0JKiB4cGF0aC5jOiBzbWFsbCBmaXhlcwotCSogdGVzdC9YUGF0aC8gcmVzdWx0cy9YUGF0aDogdXBkYXRlZCB0aGUgdGVzdGNhc2VzIGFuZCByZXN1bHRzCi0JKiBIVE1McGFyc2VyLmMgbmFub2h0dHAuYyB0ZXN0WFBhdGguYzogaW5jb3Jwb3JhdGVkIHByb3ZpZGVkIG9yCi0JICBzdWdnZXN0ZWQgcGF0Y2hlcwotCSogdmFsaWQuYzogZml4ZWQgYW4gSUQgYnVnCi0KLU1vbiBPY3QgIDkgMTQ6Mjg6NTYgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbW92ZWQgeG1sLWVycm9yLmggdG8geG1sZXJyb3IuaDogc2VlbXMgdGhpcyBhbGxvd2VkIHRvIGJ5cGFzcwotCSAgdGhlIGF1dG9tYWtlIGJ1ZyB3aGVyZSB3cm9uZyBkZXBlbmRlbmNpZXMgd2VyZSBnZW5lcmF0ZWQuCi0JKiB4cGF0aC5bY2hdOiB3b3JrZWQgb24gWFBvaW50ZXIKLQotRnJpIE9jdCAgNiAxMjo1ODowNCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW4gTWFrZWZpbGUuYW06IDIuMi41LCBzaGlwIHRoZSBpbmNsdWRlIGluIGFuCi0JICBpbmNsdWRlL2xpYnhtbCBzdWJkaXJlY3RvcnksIHVzZSBzeW1saW5rcyB3aGVuIHVzaW5nIENWUwotCSogdGVzdFNBWC5jOiBmaXhlZCBzbWFsbCBidWcKLQkqIHRlc3RYUGF0aC5jOiBjaGFuZ2VkIHRoZSB3YXkgdGVzdGZpbGVzIGFyZSBwYXJzZWQKLQkqIGRlYnVnWE1MLmM6IHNhbWUga2luZCBvZiBjbGVhbnVwIHdoZW4gcGFyc2luZyBhbiBhcmd1bWVudCBleHByZXNzaW9uCi0JICBYUGF0aC9YUG9pbnRlcnMgY2FuIGhhdmUgYmxhbmtzIGVtYmVkZGVkCi0JKiB4cGF0aC5bY2hdOiBtb3JlIGNsZWFudXAsIHJlb3JncyBmb3IgWFBvaW50ZXIgd29yawotCSogcGFyc2VySW50ZXJuYWxzLmMgcGFyc2VyLmMgSFRNTHBhcnNlci5jOiBmaXhlZCB3cm9uZyBpbmNsdWRlCi0JKiB3aW4zMi9SRUFETUUuTVNEZXYgd2luMzIvbGlieG1sMi9saWJ4bWwyLmRzcDogV2luZG93cyBzdHVmZgotCi1UaHUgT2N0ICA1IDE4OjEzOjE1IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRlYnVnWE1MLmMgdGVzdFhQYXRoLmMgeHBhdGguW2NoXTogZ290IHBpc3NlZCBieSBzb21lIG5hc3R5bmVzcwotCSAgaW4gdGhlIFhQYXRoIGVuZ2luZSwgcmV3cm90ZSBsYXJnZSBwYXJ0cyBvZiBpdCwgbm93IGl0J3MgZmFyCi0JICBjbGVhbmVyIGFuZCBpbiBzeW5jIHdpdGggdGhlIFJFQyBub3QgYW4gb2xkIFdELiBGaXhlZCBhIHBhcnNpbmcKLQkgIHByb2JsZW0gaW4gdGhlIGludGVyYWN0aXZlIFhNTCBzaGVsbCBmb3VuZCB3aGVuIHRlc3RpbmcgWFBhdGguCi0KLVdlZCBPY3QgIDQgMTU6MjU6NTMgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZGVidWdYTUwuYyB0ZXN0WFBhdGguYyB4cGF0aC5bY2hdOiBNb3JlIHdvcmsgb24gWFBhdGgvWHBvaW50ZXIsCi0JICBpbmNvcnBvcmF0ZWQgIihUT00pIiA8cHRpdHRvbUBmcmVlLmZyPiBwYXRjaGVzIHJlYnVpbHQgdGhlIFhQYXRoCi0JICBleGFtcGxlcyB3aXRoIHRoZSBleHRyYSB0ZXN0Ci0KLVdlZCBPY3QgIDQgMTQ6Mzk6MDEgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMgeG1sSU8uYyB4bWxJTy5oOiBmaXhlZCBidWcgMjY2NTAsIGFuZCBpbXByb3ZlZAotCSAgdGhlIGdsb2JhbCBpbml0IGZ1bmN0aW9uLgotCi1UdWUgT2N0ICAzIDExOjI4OjUyIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYzogRG9vaGhoLCBhdHRyaWJ1dGUgbmFtZSBwYXJzaW5nIHdhcyBzdGlsbCBjYXNlCi0JICBzZW5zaXRpdmUgISBGaXhlZCB0aGlzIC4uLgotCSogcmVzdWx0L0hUTUwvKiA6IHVwZGF0ZWQgdGhlIHRlc3RzIHJlc3VsdHMgYWNjb3JkaW5nbHkKLQotTW9uIE9jdCAgMiAyMzo0NzozMiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5bY2hdIGRlYnVnWE1MLmMgdGVzdFhQYXRoLmM6IGZpeGVkIHRoZSBYUGF0aCBldmFsdWF0aW9uCi0JICBlbmdpbmUsIHNob3VsZCBiZSBmYXIgbW9yZSBzdGFibGUsIGluY29ycG9yYXRlZCBhIG5ldyB2ZXJzaW9uIG9mCi0JICBwcmVjZWRpbmcvZm9sbG93aW5nIGF4aXMsIG5lZWQgdGVzdGluZwotCSogdXJpLmM6IGZpeGVkIGZpbGU6Ly8vYzovYS9iL2MgcHJvYmxlbQotCSogdGVzdC9YUGF0aC90ZXN0cy9pZHNpbXBsZTogYXVnbWVudGVkIHRoZSBYUGF0aCB0ZXN0cwotCi1TdW4gT2N0ICAxIDIyOjMzOjAwIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy8qIHJlYnVpbGRpbmcgZG9jcyBmb3IgMi4yLjQgcmVsZWFzZQotCi1TdW4gT2N0ICAxIDIyOjE2OjMzIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcmVsZWFzaW5nIDIuMi40Ci0JKiBwYXJzZXIuW2NoXTogYWRkZWQgeG1sU3RyRXF1YWwoKQotCSogSFRNTHBhcnNlci5jIEhUTUx0cmVlLmMgU0FYLmMgZGVidWdYTUwuYyBlbnRpdGllcy5jIHBhcnNlci5jCi0JICB0cmVlLmMgdmFsaWQuYyB4bGluay5jIHhwYXRoLmM6IGNvbnZlcnRlZCBhbGwgIXhtbFN0cmNtcCB0bwotCSAgdXNlIHhtbFN0ckVxdWFsIGluc3RlYWQKLQkqIFRPRE86IHVwZGF0ZWQKLQkqIGFkZGVkIGFuIFhQYXRoIHRlc3QKLQotU3VuIE9jdCAgMSAyMDoxOTozOSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIGh0bWxTdGFydENsb3NlSW5kZXhpbml0aWFsaXplZCBpbml0Ci0JKiBlbnRpdGllcy5oOiBleHBvcnRlZCB4bWxJbml0aWFsaXplUHJlZGVmaW5lZEVudGl0aWVzCi0JKiBwYXJzZXIuW2NoXSA6IGFkZGVkIHhtbEluaXRQYXJzZXIoKQotCSogcGFyc2VySW50ZXJuYWxzLmggOiBoYWQgdG8gZXhwb3J0IGh0bWxJbml0QXV0b0Nsb3NlKCkKLQotU3VuIE9jdCAgMSAxNjoyODoyMiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4cGF0aC5bY2hdIDogZml4ZWQgc29tZSBzZXJpb3VzIFhQYXRoIFByZWRpY2F0ZSBldmFsdWF0aW9uCi0JICBwcm9ibGVtcwotCSogTWFrZWZpbGUuYW0gOiBhZGRlZCBYUGF0aCByZWdyZXNzaW9uIHRlc3RzIHRvIG5vcm1hbCB0ZXN0cwotCSogdXJpLmM6IGZpeGVkIGEgcHJvYmxlbSB3aXRoIGxvY2FsIHBhdGhzLCBjbGVhbnVwCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBwcm9ibGVtIHdpdGggbGFyZ2UgQ0RhdGEgc2VjdGlvbnMKLQotU2F0IFNlcCAzMCAxNjozNTo1NCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW4geG1sLWNvbmZpZy5pbjogcGF0Y2ggZnJvbSAiQmVuIFRheWxvciIKLQkgIDxzb2w3eDg2QGhvdG1haWwuY29tPiBmb3Igc29sYXJpcyBzaGFyZWQgbGlicyBsb29rdXAKLQotMjAwMC0wOS0zMCAgTWFydGluIEJhdWxpZyAgPGJhdWxpZ0BzdXNlLmRlPgotCi0JKiBsaWJ4bWwtMi4wLnBjLmluOiBQcm92aWRlIHBrZy1jb25maWcgc2NyaXB0LgotCi0JKiBjb25maWd1cmUuaW46IENyZWF0ZSB0aGUgbGlieG1sLTIuMC5wYyBzY3JpcHQgZnJvbSB0aGUKLQlsaWJ4bWwtMi4wLnBjLmluIHRlbXBsYXRlcy4KLQkqIE1ha2VmaWxlLmFtIChwa2djb25maWdfREFUQSk6IEluc3RhbGwgdGhlIGxpYnhtbC0yLjAucGMKLQlzY3JpcHQgaW4gYCQobGliZGlyKS9wa2djb25maWcnLgotCi1Nb24gU2VwIDI1IDE2OjIzOjQxIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYyBwYXJzZXIuYyB0cmVlLmMgdHJlZS5oOiBBdm9pZGluZyBhIGZldyB3YXJuaW5nCi0JICB3aGVuIGNvbXBpbGluZyB3aXRoIE1TQwotCi1TdW4gU2VwIDI0IDIwOjMyOjUyIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHhwYXRoLmM6IHBhdGNoIGZvciBub3JtYWxpemUtc3RyaW5nKCkgc3Vic3RyaW5nLWJlZm9yZSgpLAotCSAgc3Vic3RyaW5nLWFmdGVyKCkgYW5kIHRyYW5zbGF0ZSgpIGZ1bmN0aW9ucyBmcm9tIEJqb3JuIFJlZXNlCi0JICA8YnJlZXNlQG1haWwxLnN0b2ZhbmV0LmRrPgotCSogbGlieG1sLm00IE1ha2VmaWxlLmFtOiBhZGRlZCBsaWJ4bWwubTQgZnJvbSBEZWJpYW4gPwotCSAgRnJlZHJpayBIYWxsZW5iZXJnIDxoYWxsb25AbHlzYXRvci5saXUuc2U+Ci0JKiBUT0RPOiB1cGRhdGVkCi0KLVN1biBTZXAgMjQgMTA6MDA6NDkgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sdmVyc2lvbi5oLmluIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiB0cmF5aW5nIHRvIHdvcmsgb3V0IHRoZQotCSAgcHJvYmxlbSBvZiBzb2NrbGVuX3QgYmVpbmcgdW5kZWZpbmVkIG9uIGEgbnVtYmVyIG9mIHBsYXRmb3JtcwotCSogZGVidWdYTUwuYzogZml4ZWQgYSBjb21waWxhdGlvbiBwcm9ibGVtIHdoZW4gd2l0aG91dCBzbnByaW50ZgotCi1TYXQgU2VwIDIzIDEyOjE5OjQ1IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYyB1cmkuYzogQW5vdGhlciBwYXRjaCBmcm9tIFdheW5lIERhdmlzb24sIGNvcnJlY3RpbmcKLQkgIGFuIFVSSSBidWcgYW5kIGEgZml4IGZvciB0aGUgY29udHJvbC1jaGFyYWN0ZXItaW5kdWNlZCBpbmZpbml0ZSBsb29wCi0JKiBuYW5vaHR0cC5jOiBwcmV2ZW50aXZlIGZpeCBmb3IgY29tcGlsaW5nIG9uIFdJTjMyCi0KLUZyaSBTZXAgMjIgMTg6MDY6MDggQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1saW50LmM6IGNsb3NpbmcgYnVnICMyNTAwMAotCi1GcmkgU2VwIDIyIDE0OjE3OjUzIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHhtbElPLmggdHJlZS5oOiBtYWRlIHhtbE5vZGVEdW1wKCkgYW5kIHhtbE5vZGVEdW1wT3V0cHV0KCkgcHVibGljCi0JKiBwYXJzZXIuW2NoXSBuYW5vaHR0cC5jIEhUTUx0cmVlLmMgSFRNTHBhcnNlci5jIHRyZWUuYzogYXBwbGllZCBhbmQKLQkgIG1vZGlmaWVkIHNsaWdodGx5IFdheW5lIERhdmlzb24gcGF0Y2ggYWRkaW5nIHhtbFN0cmNhc2VjbXAgYW5kCi0JICByZWxhdGVkIGZ1bmN0aW9uLCBmaXhpbmcgeG1sU3RybmNtcCgpLCBhbmQgYXNzb2NpYXRlZCBjbGVhbnVwCi0JKiByZXN1bHQvSFRNTC9lbnRpdGllcy5odG1sLnNheDogdXBkYXRpbmcgcmVzdWx0Ci0KLVR1ZSBTZXAgMTkgMTQ6MjA6MTAgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdXJpLmM6IGFwcGxpZWQgcGF0Y2ggZm9yIFVSSSBlc2NhcGluZyBmcm9tIFdheW5lIERhdmlzb24KLQkgIDx3YXluZWRAYmxvcmYubmV0PgotCSogdHJlZS5jIHBhcnNlckludGVybmFscy5jIEhUTUxwYXJzZXIuYzogbWVtc2V0IGNoZWNrcyBwYXRjaGVzCi0JICBmcm9tIERlbmlzIEJhcmJpZXIgPGJhcmJpZXJAaW1hY3MucG9seXRlY2huaXF1ZS5mcj4KLQkqIEhUTUxwYXJzZXIuYzogVVRGOCBjaGFyYWN0ZXJzIGluIEhUTUwgdGFnLWF0dHJpYnV0ZSB2YWx1ZXMKLQkgIHBhdGNoIGZyb20gV2F5bmUgRGF2aXNvbgotCi1TdW4gU2VwIDE3IDE4OjM3OjAzIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWwuaHRtbCA6IHVwZGF0ZWQgd2l0aCBuZXcgcmVsZWFzZXMsIGFkZGluZyAiaG93IHRvIGhlbHAiCi0KLVN1biBTZXAgMTcgMTc6NTg6MzcgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogU0FYLmMgZGVidWdYTUwuYyBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuYyB0cmVlLmMgdmFsaWQuYyB4cGF0aC5jOgotCSAgcmVtb3ZlZCBhIGZldyB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2RlIC4uLgotCSogcGFyc2VySW50ZXJuYWxzLmMgcGFyc2VyLmM6IG1vdmVkIGVuY29kaW5nIHN3aXRjaGluZyBmdW5jdGlvbgotCSAgdG8gcGFyc2VySW50ZXJuYWxzLmMKLQkqIGNvbmZpZ3VyZS5pbiwgZG9jL01ha2VmaWxlLmFtIGxpYnhtbC5zcGVjLmluOiByZWxlYXNlZCAyLjIuMwotCi1TYXQgU2VwIDE2IDIwOjEyOjQxIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYyBwYXJzZXIuYzogc2V0IGN0eHQtPmVyck5vIGJlZm9yZSBjYWxsaW5nIHRoZQotCSAgZXJyb3Igb3Igd2FybmluZyBoYW5kbGVycwotCi1XZWQgU2VwIDEzIDIyOjAzOjE4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlckludGVybmFscy5jIHBhcnNlckludGVybmFscy5oIHBhcnNlci5jIE1ha2VmaWxlLmFtOgotCSAgY3JlYXRlZCBhIG5ldyBtb2R1bGUgcGFyc2VySW50ZXJuYWxzLmMsIG1vdmVkIG1vc3Qgb2YgdGhlCi0JICBjb2RlIHNoYXJlZCBieSB0aGUgdmFyaW91cyBwYXJzZXJzIHRoZXJlLCBhcyB3ZWxsIGFzCi0JICBkZXByZWNhdGVkICBjb2RlIGZyb20gcGFyc2VyLmMuIE1vcmUgY2xlYW51cCBvZiBwYXJzZXIuYwotCSogdXJpLmM6IGZpeGVkIGEgcHJvYmxlbSB3aGVuIFVSSSBpcyBOVUxMCi0JKiB2YWxpZC5jOiBzcGVlZHVwIHdoZW4gbG9va2luZyBmb3IgYW4gYXR0cmlidXRlIGRlY2xhcmF0aW9uCi0KLVN1biBTZXAgMTAgMTc6NTM6NDggQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdXJpLmMgdHJlZS5jIFNBWC5jIHBhcnNlci5jIGVudGl0aWVzLmMgZGVidWdYTUwuYzogZmluaXNoZWQKLQkgIHRoZSBjbGVhbnVwIG9mIHRoZSBjb21wdXRhdGlvbiBvZiBVUkkgcmVmZXJlbmNlcyB3aGVuIHNlZWtpbmcKLQkgIGV4dGVybmFsIGVudGl0aWVzLiBUaGUgVVJJIHJlZmVyZW5jZSBzdHJpbmcgYW5kIHRoZSByZXN1bHRpbmcKLQkgIFVSSSBhcmUgYm90aCBzdG9yZWQgbm93LgotCSogcGFyc2VyLmMgSFRNTHBhcnNlci5jIHZhbGlkLmMgbmFub2Z0cC5jIG5hbm9odHRwLmMgeHBhdGguYzoKLQkgIGxhcmdlIHMobilwcmludGYgY2hlY2tzIGFuZCBjbGVhbnVwIGZyb20gRGVuaXMgQmFyYmllcgotCSAgPGJhcmJpZXJAaW1hY3MucG9seXRlY2huaXF1ZS5mcj4KLQkqIHhtbHZlcnNpb24uaC5pbiB0cmVlLmg6IGNvdXBsZSBvZiBTR01MIGRlY2xhcmF0aW9ucyBmb3IgYQotCSAgcG9zc2libGUgZG9jYm9vayBtb2R1bGUuCi0JKiByZXN1bHQvVkMvIDogYSBjb3VwbGUgb2YgdGVzdCBvdXRwdXQgY2hhbmdlZCBkdWUgdG8gdGhlIGNoYW5nZQotCSAgb2YgdGhlIGVudGl0aWVzIFVSSQotCi1TdW4gU2VwIDEwIDE1OjU5OjU4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5oOiBhZGRlZCBhIF9wcml2YXRlIGZpZWxkIGZvciBsaW5raW5nIHVzZXIncyBkYXRhCi0KLVN1biBTZXAgMTAgMTU6MTQ6NDMgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMgcGFyc2VySW50ZXJuYWxzLmg6IGRlbWFjcm9pZmllZCBtb3N0IG9mIHRoZSBJU19YWFgKLQkgIHRoZSBnYWluIGluIHNpemUgaXMgc2lnbmlmaWNhbnQgc28gLi4uCi0KLUZyaSBTZXAgIDggMjA6NDg6MjkgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZW50aXRpZXMuYzogY2FzZXMgd2hlcmUgbG9va2luZyB1cCBlbnRpdGllcyB3aXRoIGRvYz09TlVMTAotCSAgY292ZXJlZAotCi1UdWUgU2VwICA1IDEyOjQxOjE1IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHVyaS5jOiBhcHBsaWVkIFdheW5lIERhdmlzb24gcGF0Y2gKLQkqIE1ha2VmaWxlLmluIHRlc3QvVVJJL3VyaS5kYXRhIHJlc3VsdC9VUkkvdXJpLmRhdGE6IHVwZGF0ZWQgVVJJIHRlc3RzCi0KLU1vbiBTZXAgIDQgMTM6MDE6NDUgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdXJpLmMgdGVzdFVyaS5jOiBhcHBsaWVkIFdheW5lIERhdmlzb24gcGF0Y2hlcwotCSogdGVzdC9VUkkvdXJpLmRhdGEgcmVzdWx0L1VSSS91cmkuZGF0YTogZmlyc3Qgc2V0IG9mIHRlc3RzL3Jlc3VsdHMKLQkqIE1ha2VmaWxlLmluOiBhZGRlZCBVUkl0ZXN0IGFuZCBpbmNsdWRlZCB0aGVuaW4gIm1ha2UgdGVzdHMiCi0KLVN1biBTZXAgIDMgMTk6MTk6MjkgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sdmVyc2lvbi5oLmluOiBjbG9zZWQgYnVnIDIyOTQxCi0KLVRodSBBdWcgMzEgMTY6NTU6NTUgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL3htbGlvLmh0bWw6IGFkZGVkIGRvYyBhbmQgZXhhbXBsZSBmb3IgZW50aXR5IGxvYWRlcgotCSAgcmVkZWZpbml0aW9uLgotCi1UaHUgQXVnIDMxIDE0OjU5OjI4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWxpby5odG1sIGRvYy94bWwuaHRtbDogYWRkZWQgYSBkb2Mgb24gdGhlIEkvTyBtZWNoYW5pc20KLQkgIHVzZWQgYnkgbGlieG1sCi0KLVR1ZSBBdWcgMjkgMjA6MjI6NTMgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmM6IEZpeGVkIGJ1ZyBvbiBpbnZhbGlkIG9udGVudCBjaGFyYWN0ZXJzIGFuZCB3aGVuIHVzaW5nCi0JICBwdXNoLgotCSogeG1sbGludC5jOiBmaXhlZCB4bWxsaW50IGVuZGxpbmcgb2YgZXJyb3JzIGluIHB1c2ggbW9kZQotCi1UdWUgQXVnIDI5IDExOjI0OjQ4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuYyB0ZXN0SFRNTC5jOiBhcHBsaWVkIHR3byBuZXcgcGF0Y2hlcyBmcm9tCi0JICBXYXluZSBEYXZpc29uIDx3YXluZWRAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCSogcmVzdWx0L0hUTUwvKi5zYXg6IHJlZ2VuZXJhdGVkIEhUTUwgU0FYIG91dHB1dAotCSogcGFyc2VyLmM6IG1vcmUgY2xlYW51cC4KLQotTW9uIEF1ZyAyOCAxMTo1ODoxMiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLltjaF0gdGVzdEhUTUwuYzogYXBwbGllZCB0aGUgc2Vjb25kIHNldCBvZgotCSAgcGF0Y2hlcyBmcm9tIFdheW5lIERhdmlzb24gPHdheW5lZEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+LAotCSAgYWRkaW5nIGh0bWxFbmNvZGVFbnRpdGllcygpCi0JKiBIVE1McGFyc2VyLmM6IGZpeGVkIGFuIGlnbm9yYWJsZSB3aGl0ZSBzcGFjZSBkZXRlY3Rpb24gYnVnCi0JICBvY2N1cmluZyB3aGVuIHBhcnNpbmcgd2l0aCBTQVggb25seQotCSogcmVzdWx0L0hUTUwvKi5zYXg6IHVwZGF0ZWQgc2luY2UgdGhlIG91dHB1dCBpcyBub3cgSFRNTAotCSAgZW5jb2RlZC4uLgotCi1Nb24gQXVnIDI4IDAwOjM4OjMxIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuW2NoXTogYXBwbGllZCBzb21lIG9mIFdheW5lIERhdmlzb24KLQkgIDx3YXluZWRAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBwYXRjaGVzCi0KLVN1biBBdWcgMjcgMjI6MTQ6MDEgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogU0FYLmMgdHJlZS5jIGRlYnVnWE1MLmM6IGZpeGVkIGJvZ3VzIGJlaGF2aW91ciB3aGVuIGFuCi0JICB1bmRlY2xhcmVkIG5hbWVzcGFjZSBwcmVmaXggd2FzIHVzZWQsIGFkZGVkIGEgd2FybmluZy4KLQkgIENsZWFuZWQgdXAgc3VwcG9ydCB3LnIudC4gZW50aXRpZXMsIHNwaWxsaW5nIG91dCBhIHdhcm5pbmcKLQkgIGFuZCBiZWluZyBwZWRhbnRpYyBvbiBsb29rdXBzLgotCSogdGVzdC93YXJuaW5nL2VudDkgOiBhZGRlZCB0ZXN0Y2FzZSBmb3IgcHJldmlvdXMgZXhhbXBsZS4KLQkqIFRPRE86IHVwZGF0ZWQKLQkqIHBhcnNlckludGVybmFscy5oIHBhcnNlci5jOiBjaGFuZ2VkIHRoZSB3YXkgbmFtZXMgYXJlIHBhcnNlZAotCSAgbm93IGFsbG93IGluZmluaXRlIHNpemUgYW5kIGRlY3JlYXNlIHBlbmFsdHkgZm9yIG5vcm1hbCB1c2UKLQkqIHBhcnNlci5jOiBTdGFydGVkIGEgYmlnIGNsZWFudXAvY2hlY2sgb2YgdGhlIHBhcnNlciBjb2RlLAotCSAgZml4ZWQgc29tZSBvZiB0aGUgbW9zdCB0b3J0dW91cyBlbnRpdHkgY29kZSwgc3BvdHRlZCBjb2RlCi0JICB1bnVzZWQgYW55bW9yZQotCSogdGVzdC8qOiBhZGRlZCB0ZXN0cyBmb3IgdmVyeSBsb25nIG5hbWVzIGFuZCByZWxhdGVkIG5hc3R5Ci0JICB0aGluZ3MuCi0KLVNhdCBBdWcgMjYgMjM6MzE6MDQgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL2VuY29kaW5nLmh0bWw6IGFkZGVkIGVuY29kaW5nIGFsaWFzZXMgZG9jCi0JKiBkb2MveG1sLmh0bWw6IHVwZGF0ZXMKLQkqIGVuY29kaW5nLltjaF06IGFkZGVkIEVuY29kaW5nQWxpYXNlcyBmdW5jdGlvbnMKLQkqIGVudGl0aWVzLltjaF0gdmFsaWQuW2NoXSBkZWJ1Z1hNTC5jOiByZW1vdmVkIHR3byBzZXJpb3VzCi0JICBib3R0bGVuZWNrIGFmZmVjdGluZyBsYXJnZSBEVERzIGxpa2UgRG9jYm9vawotCSogcGFyc2VyLltjaF0geG1sbGludC5jOiBhZGRlZCBhIHBlZGFudGljIG9wdGlvbiwgd2lsbCBiZQotCSAgdXNlZnVsCi0JKiBTQVguYzogcmVkZWZpbml0aW9uIG9mIGVudGl0aWVzIGlzIHJlcG9ydGVkIGluIHBlZGFudGljIG1vZGUKLQkqIHRlc3RIVE1MLmM6IHVuaW5pdGlhbGl6ZWQgd2FybmluZyBmcm9tIGdjYwotCSogdXJpLmM6IGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MKLQkqIFRPRE86IGFkZGVkIGlzc3VlIHJhaXNlZCBieSBNaWNoYWVsCi0KLVdlZCBBdWcgMjMgMDE6NTA6NTEgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL2VuY29kaW5nLmh0bWw6IHByb3BhZ2F0ZWQgTWFydGluIER1ZXJzdCBzdWdnZXN0aW9ucwotCi1XZWQgQXVnIDIzIDAwOjIzOjQxIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jOiBGaXhlZCBCdWcjMjE1NTI6IGxpYnhtbCBmYWlscyB0byBkZWNvZGUgJmFtcDsKLQkqIHVyaS5jIHRlc3RVcmkuYyBwYXRjaGVzLCBieSBNYXJjIFNhbmZhY29uICgxIGxlZnQpCi0JKiBwYXJzZXIuYyBIVE1McGFyc2VyLmM6IEhUTUwvZW5jb2RpbmcgcHVzaCBwcm9ibGVtcyByZXBvcnRlZGkKLQkgIGJ5IFdheW5lIERhdmlzb24KLQotU3VuIEF1ZyAyMCAxNzowMzozOCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vZnRwLmMgbmFub2h0dHAuYzogc21hbGwgY2xlYW51cAotCSogVE9ETzogdXBkYXRlZAotCi1TYXQgQXVnIDE5IDIyOjU3OjAyIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGFkZGVkIGFuIG9sZCBWQyB0ZXN0Y2FzZSBhbmQgdXBkYXRlZCB0aXRsZS54bWwgZW50aXR5Ci0KLVNhdCBBdWcgMTkgMjE6MDI6MDggQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jIFNBWC5jIHRyZWUuYyBIVE1MdHJlZS5oIHJlc3VsdC9IVE1MLyo6IHdvcmsKLQkgIGRvbmUgb24gYXV0by1vcGVuaW5nIG9mIDxwPiB0YWdzIGFuZCBjbGVhbnVwIG9mIFNBWCBvdXRwdXQKLQotU2F0IEF1ZyAxOSAxODo0NTo0MCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBsaWJ4bWwuNCAgeG1sbGludC4xIE1ha2VmaWxlLmFtIGxpYnhtbC5zcGVjLmluOiBhZGRlZCBtYW4gcGFnZXMKLQotU2F0IEF1ZyAxOSAxODozODo1MyBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MveG1sLmh0bWwgbGlieG1sLiogc3RydWN0dXJlLio6IHVwZGF0ZWQgdGhlIGRvYyBhIGJpdAotCi1UaHUgQXVnIDE3IDE1OjUwOjAwIENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRlc3RTQVguYyB0ZXN0SFRNTC5jIHJlc3VsdC9IVE1MLzogY2xlYW51cCBvZiB0aGUgb3V0cHV0Ci0JICBvZiBTQVggdGVzdHMKLQotTW9uIEF1ZyAxNCAxMzo1NjozMyBFRFQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIFBhdGNoIGZyb20gQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPjoKLQkqIHhtbGxpbnQuYzogd29ya2Fyb3VuZCBhIE1BUF9GQUlMRWQgZGVmaW5pdGlvbiBidWcgaW4gRFUtNC4wCi0KLU1vbiBBdWcgMTQgMTE6MTA6MjAgRURUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBQYXRjaCBmcm9tIERhdmUgWWVhcmtlIDx5ZWFya2VAZW5nLmJ1ZmZhbG8uZWR1PjoKLQkqIHRlc3RIVE1MLmM6IGZpeCBjb3JlIGR1bXAgb24gU29sYXJpcyAyLnggc3lzdGVtcwotCSogSFRNTHBhcnNlci5jOiBmaXggc2VnZmF1bHQgaWYgY3R4dC0+c2F4LT5jaGFyYWN0ZXJzKCkgaXMgTlVMTAotCSogcmVzdWx0L0hUTUwvKi5zYXg6IHByZXZpb3VzIGJ1ZyBmaXggbGVhZCB0byBuZXcgcmVzdWx0cwotCi1Nb24gQXVnIDE0IDEwOjI2OjA5IEVEVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogUGF0Y2ggZnJvbSBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+OgotCSogY29uZmlndXJlLmluOiBhZGRlZCAtLXdpdGgtcmVhZGxpbmU9RElSIHRvIGFjY2VwdCBhbHRlcm5hdGUKLQkgIHBhdGggZm9yIHJlYWRsaW5lIGluY2x1ZGUvbGlicmFyeQotCSogY29uZmlndXJlLmluOiBhZGRlZCBBTV9DX1BST1RPVFlQRVMgdG8gYWRkIC1BYSAtRF9IUFVYX1NPVVJDRQotCSAgZm9yIEFOU0kgdW5kZXIgSFAtVVgKLQkqIGNvbmZpZy5pbjogUmVtb3ZlZCBATElCU0AgZnJvbSB4bWwtY29uZmlnIGJlY2F1c2UgQFhNTF9MSUJTQAotCSAgaW5jbHVkZXMgQExJQlNACi0KLVNhdCBBdWcgMTIgMjM6MTk6NDIgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jLyogOiByZWJ1aWx0IHRoZSBkb2NzCi0JKiBnZXR0aW5nIHJlYWR5IGZvciAyLjIuMiByZWxlYXNlCi0KLVNhdCBBdWcgMTIgMTY6NDI6MzcgRURUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuW2NoXTogYWRkZWQgeG1sR2V0RmVhdHVyZXNMaXN0KCkgeG1sR2V0RmVhdHVyZSgpCi0JICBhbmQgeG1sQWRkRmVhdHVyZSgpCi0JKiB0cmVlLltjaF06IGFkZGVkIHhtbEFkZENoaWxkTGlzdCgpCi0JKiB4bWxsaW50LmM6IE1BUF9GQUlMRUQgbWFjcm8gdGVzdAotCSogcGFyc2VyLmg6IGFkZGVkIHhtbFBhcnNlQ3R4dEV4dGVybmFsRW50aXR5KCkKLQkqIHZhbGlkLmM6IGFwcGxpZWQgYnVnIGZpeGVzIHJlbW92ZWQgd2FybmluZwotCSogdHJlZS5jOiBhZGRlZCBDREFUQSBibG9jayB0byBlbGVtZW50cyBjb250ZW50Ci0JKiB0ZXN0U0FYLmM6IGNsZWFudXAgb2Ygb3V0cHV0Ci0JKiB0ZXN0SFRNTC5jOiBhZGRlZCBTQVggdGVzdGluZwotCSogZW5jb2RpbmcuYzogYmV0dGVyIGVycm9yIHJlY292ZXJ5Ci0JKiBTQVguYywgcGFyc2VyLmM6IGZpeGVkIG9uZSBvZiB0aGUgZXh0ZXJuYWwgZW50aXR5IHByb2Nlc3NpbmcKLQkgIG9mIHRoZSBPQVNpcyB0ZXN0c3VpdGUKLQkqIE1ha2VmaWxlLmFtOiBhZGRlZCBIVE1MIFNBWCByZWdyZXNzaW9uIHRlc3RzCi0JKiBjb25maWd1cmUuaW46IGJ1bXBlZCB0byAyLjIuMgotCSogdGVzdC9IVE1MLyByZXN1bHQvSFRNTDogYWRkZWQgYSBmZXcgb2YgSFRNTCB0ZXN0cywgYW5kIGFkZGVkIHRoZQotCSAgU0FYIHJlc3VsdHMKLQotRnJpIEF1ZyAgNCAxMToyMTo1MCBQRFQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogcGF0Y2ggZm9yIEhQIGNvbXBpbGVyCi0KLTIwMDAtMDgtMDQgIFN2ZW4gSGVpbmlja2UgIDxzdmVuQHplbi5vcmc+Ci0KLQkqIHhtbGxpbnQuYzogV2FzIGNvcmVkdW1waW5nIHNvbWV0aW1lcyB3aGVuIHRoZSBmaWxlIGdpdmVuIGRpZG4ndAotCWV4aXN0LgotCi1TYXQgSnVsIDIyIDA1OjU5OjA1IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jIHhtbElPLltjaF06IGZpeGVkIHRoZSBwcm9ibGVtIG9mIGVuY29kaW5nIHN1cHBvcnQKLQotCSAgd2hlbiB1c2luZyBpbiBtZW1vcnkgcGFyc2luZy4gTmVlZCBzb21lIGNsZWFudXAuCi0JKiB4bWxsaW50LmMgY29uZmlndXJlLmluOiBhZGRlZCBhIC0tbWVtb3J5IGZsYWcgdG8gdGVzdCBtZW1vcnkKLQkgIHBhcnNpbmcKLQotRnJpIEp1bCAyMSAxNzowOTo1NyBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vaHR0cC5jOiBmaXhlZCBzb2NrbGVuX3QgcmVwbGFjZW1lbnQgdG8gdW5zaWduZWQgaW50Ci0JKiBwYXJzZXIuYzogZml4ZWQgYSBzcGFjZSBoYW5kZGxpbmcgbWlzc2luZyBhdCB0aGUgZW5kIG9mCi0JICBwcm9kdWN0aW9uIDI4IERPQ1RZUEUuCi0JKiB4bWxtZW1vcnkuYzogZml4ZWQgYSBzdHVwaWQgYnVnIG9uIHRoZSByb3V0aW5lIHRvIG92ZXJyaWRlCi0JICBhbGxvY2F0aW9uIGZ1bmN0aW9ucwotCSogVE9ETzogdXBkYXRlZAotCi1GcmkgSnVsIDE0IDE3OjAxOjE0IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy8gcmVnZW5lcmF0ZWQgdGhlIGRvY3MKLQotRnJpIEp1bCAxNCAxNjoxMjoyMCBNRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MvZW5jb2RpbmcuaHRtbCBkb2MveG1sLmh0bWw6IGFkZGVkIEkxOE4gZG9jCi0JKiBlbmNvZGluZy5bY2hdIEhUTUx0cmVlLltjaF0gcGFyc2VyLmMgSFRNTHBhcnNlci5jOiBJMThOIGVuY29kaW5nCi0JICBpbXByb3ZlbWVudHMsIGJvdGggcGFyc2VyIGFuZCBmaWx0ZXJzLCBhZGRlZCBBU0NJSSAmIEhUTUwsCi0JICBmaXhlZCB0aGUgSVNPLUxhdGluLTEgb25lCi0JKiB4bWxsaW50LmMgdGVzdEhUTUwuYzogYWRkZWQvbWFkZSB2aXNpYmxlIC0tZW5jb2RlCi0JKiBkZWJ1Z1hNTC5jIDogY2xlYW51cAotCSogbW9zdCAuYyBmaWxlczogYXBwbGllZCBwYXRjaGVzIGR1ZSB0byB3YXJuaW5nIG9uIFdpbmRvd3MgYW5kCi0JICB3aGVuIHVzaW5nIFN1biBQcm8gY2MgY29tcGlsZXIKLQkqIHhwYXRoLmMgOiBjbGVhbnVwIG1lbWxlYWtzCi0JKiBuYW5vZnRwLmMgOiBhZGRlZCBhIFRFU1RJTkcgcHJlcHJvY2Vzc29yIGZsYWcgZm9yIHN0YW5kYWxvbmcKLQkgIGNvbXBpbGUgc28gdGhhdCBwZW9wbGUgY2FuIHJlcG9ydCBidWdzIG1vcmUgZWFzaWxseQotCSogbmFub2h0dHAuYyA6IGRpdGNoZWQgc29ja2xlbl90IHdoaWNoIHdhcyBhIHBvcnRhYmlsaXR5IG1lc3MKLQkgIGFuZCByZXBsYWNlZCBpdCB3aXRoIHVuc2lnbmVkIGludC4KLQkqIHRyZWUuW2NoXTogYWRkZWQgeG1sSGFzUHJvcCgpCi0JKiBUT0RPOiB1cGRhdGVkCi0JKiB0ZXN0LyA6IGFkZGVkIG1vcmUgdGVzdCBmb3IgZW50aXRpZXMsIE5TLCBlbmNvZGluZywgSFRNTCwgd2FwCi0JKiBjb25maWd1cmUuaW46IHByZXBhcmluZyBmb3IgMi4yLjAgcmVsZWFzZQotCi1Nb24gSnVsIDEwIDE2OjE3OjE4IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9mdHAuYzogZml4ZWQgdGhlIHdheSB0aGUgY29udHJvbCBjb25uZWN0aW9uIGlzIGhhbmRsZWQKLQkqIGxpYnhtbC5zcGVjLmluOiBmaXhlZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjbGVhbnVwCi0KLU1vbiBKdWwgIDMgMTQ6Mzc6MDcgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL3htbC5odG1sOiBjaGFuZ2VkIHRoZSB4bWxzb2Z0Lm9yZyBzdHJ1Y3R1cmUsIHVwZGF0ZWQgdGhlCi0JICBleGFtcGxlcyB3LnIudC4gcm9vdCBhbmQgY2hpbGRzCi0KLVN1biBKdWwgIDIgMjA6NTE6NDMgTUVTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbGlieG1sLnNwZWMuaW46IGZpeGVkIGJ1ZyAjNzQxOSwgZGVwZW5kZW5jaWVzIGZvdWxlZCBmb3IgbGlieG1sLWRldmVsCi0KLVN1biBKdWwgIDIgMDk6NTI6NDUgTUVTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jOiBXb3JrIG9uIGNoYXJhY3RlciBlbmNvZGluZyBzdXBwb3J0IGZvciB0aGUgSFRNTCBwYXJzZXIKLQkqIEhUTUxwYXJzZXIuYzogRml4ZWQgc29tZSBhdXRvb3Blbi9hdXRvY2xvc2UgcHJvYnMgZm9yIHRoZSBIVE1MIHBhcnNlcgotCSogZW5jb2RpbmcuYzogRml4ZWQgYSBwb3RlbnRpYWwgbWVtbGVhayBpbiB0aGUgZW5jb2Rpbmcgc3R1ZmYKLQotU2F0IEp1bCAgMSAxMzo0NDoyMiBNRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MvRkFRLmh0bWwgZG9jL01ha2VmaWxlLmFtIDogYWRkZWQgYSBGQVEKLQotRnJpIEp1biAzMCAyMDoyOTowOCBNRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmMgSFRNTHRyZWUuYyBTQVguYyB2YWxpZC5jIHRyZWUuaCA6IG1vcmUgY2xlYW51cAotCSAgb2YgdGhlIEhUTUwgcGFyc2VyIHRvIGZvcmNlIGl0IHRvIG5vdCBieXBhc3MgU0FYCi0KLUZyaSBKdW4gMzAgMTE6MTk6NTkgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogd2luMzJjb25maWcuaC5pbjogdXBkYXRlZAotCSogeG1sdmVyc2lvbi5oLmluOiBjcmFwIGZvcmdvdCB0byB1cGRhdGUgdGhpcywgdGhpcyBtZWFuIDIuMS4wCi0JICBsYWNrcyBpY29udiBzdXBwb3J0IDotKCBuZWVkIHRvIHJlbGVhc2UgMi4xLjEKLQkqIGNvbmZpZ3VyZS5pbjogcmVsZWFzZSAyLjEuMQotCSogSFRNTHBhcnNlcjogZml4ZWQgYnVnICMxNDc4NAotCSogeHBhdGguYyBIVE1McGFyc2VyLmMgZW5jb2RpbmcuYyBwYXJzZXIuYzogZml4IHdhcm5pbmcgcmFpc2VkCi0JICBieSBXaW5kb3dzIGNvbXBpbGVyCi0JKiBIVE1McGFyc2VyLmMgU0FYLmMgSFRNTHRyZWUuaCB0cmVlLmg6IGNyZWF0ZSBIVE1MIGRvY3VtZW50IGluCi0JICB0aGUgU0FYIHN0YXJ0RG9jdW1lbnQoKSBjYWxsYmFjay4KLQkqIFRPRE86IHVwZGF0ZWQKLQotVGh1IEp1biAyOSAxMjowNjo0OCBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBhZGRlZCB4bWxTdG9wUGFyc2VyKCkKLQotV2VkIEp1biAyOCAyMzoxMDoyNiBNRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW46IDIuMS4wIHByZXJlbGVhc2UKLQkqIExhcmdlIHJlc3luYyBiZXR3ZWVuIFczQyBhbmQgR25vbWUgdHJlZQotCSogbmFub2Z0cCwgbmFub2h0dHAuYzogZml4ZWQgc3RhbGxlZCBjb25uZWN0aW9ucyBwcm9icwotCSogSFRNTHRyZWUuYyBTQVguYyA6IHN1cHBvcnQgZm9yIGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlcyBpbgotCSAgSFRNTCBmb3IgYW5kZXJzY2EKLQkqIHZhbGlkLmM6IEZpeGVkIG1vc3QgdmFsaWRhdGlvbiArIG5hbWVzcGFjZSBwcm9ibGVtcwotCSogSFRNTHBhcnNlci5jOiBzdGFydCBkb2N1bWVudCBjYWxsYmFjayBmb3IgYW5kZXJzY2EKLQkqIGRlYnVnWE1MLmMgeHBhdGguYzogbG90cyBvZiBYUGF0aCBmaXh1cHMgZnJvbSBQaWNkYXIgVGVjaG5vbG9neQotCSogcGFyc2VyLmgsIFNBWC5jOiBzZXJpb3VzIHNwZWVkIGltcHJvdmVtZW50IGZvciBsYXJnZQotCSAgQ0RBVEEgYmxvY2tzCi0JKiBlbmNvZGluZy5bY2hdIHhtbElPLltjaF06IEltcHJvdmVkIHNlcmlvdXNseSBzYXZpbmcgdG8KLQkgIGRpZmZlcmVudCBlbmNvZGluZwotCSogZXhhbXBsZS9NYWtlZmlsZS5hbSBleGFtcGxlL2dqb2JyZWFkLmMgdHJlZS5oOiB3b3JrIG9uIAotCSAgbGlieG1sMSBsaWJ4bWwyIGNvbnZlcmdlbmNlLgotCSogY29uZmlnLmguaW4gcGFyc2VyLmMgeG1sbGludC5jOiBhZGRlZCB4bWxDaGVja1ZlcnNpb24oKQotCSAgYW5kIHRoZSBMSUJYTUxfVEVTVF9WRVJTSU9OIG1hY3JvCi0KLUZyaSBKdW4gMjMgMjI6MjY6MDcgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL3htbC5odG1sOiB2YXJpb3VzIHBhdGNoZXMgYW5kIGltcHJvdmVtZW50cyB0eXBvIGZpeGVkIGJ5Ci0JICBGZWxpeCBOYXR0ZXIKLQkqIGRvYy9saWJ4bWwtZG9jLmVsOiBFbWFjcyBtb2R1bGUgdG8gbG9va3VwIHRoZSBsaWJ4bWwgZG9jdW1lbnRhdGlvbgotCSAgZnJvbSBGZWxpeCBOYXR0ZXIgPGZuYXR0ZXJAZ214Lm5ldD4KLQotU2F0IE1heSAgNiAxMDowOTo0NSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MvdXBncmFkZS5odG1sOiB1cGRhdGVkIHdpdGggaW5zdHJ1Y3Rpb25zIGZvciBzdXBwb3J0IG9mIGJvdGgKLQkgIGxpYnhtbC0xLnggYW5kIGxpYnhtbC0yLngKLQkqIGRvYy9nam9icmVhZC5jIDogYXBwbGllZCBUb2RkIER1a2VzIDx0ZHVrZXNAaWJtb3RvLmNvbT4gcGF0Y2gKLQkgIGZvciAyLnggc3VwcG9ydCBhbmQgYWxzbyBmaXhlZCBpbmNsdWRlcwotCi1XZWQgTWF5ICAzIDE0OjIxOjI1IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGVuY29kaW5nLltjaF0sIHhtbElPLltjaF0sIHBhcnNlci5jLCBjb25maWd1cmUuaW4gOiByZXZhbXBlZAotCSAgdGhlIGVuY29kaW5nIHN1cHBvcnQsIGFkZGVkIGljb252IHN1cHBvcnQsIHNvIG5vdyBsaWJ4bWwgaWYKLQkgIGNvbXBpbGVkIHdpdGggaWNvbnYgYXV0b21hdGljYWxseSBzdXBwb3J0IGphcGFuZXNlIGVuY29kaW5ncwotCSAgYW1vbmcgb3RoZXJzLiBXb3JrIGJhc2VkIG9uIGluaXRpYWwgcGF0Y2ggZnJvbSBZdWFuLUNoZW4gQ2hlbmcKLQkgIEkgbWF5IGhhdmUgYnJva2VuIGJpbmFyeSBjb21wYXQgaW4gdGhlIGVuY29kaW5nIGhhbmRsZXIKLQkgIHJlZ2lzdHJhdGlvbiBzY2hlbWUsIGJ1dCB0aGF0IHdhcyBzbyB1dHRlcmx5IGJyb2tlbiBJIGRvbid0Ci0JICBleHBlY3QgYW55Ym9keSB0byBoYXZlIHVzZWQgdGhpcyBmZWF0dXJlIHVudGlsIG5vdy4KLQkqIHBhcnNlckludGVybmFscy5oOiBmaXh1cCBvbiB0aGUgQ0hBUiByYW5nZSBtYWNybwotCSogeG1sLWVycm9yLmgsIHBhcnNlci5jOiBjYXRjaCBVUkwvVVJJIGVycm9ycyB1c2luZyB0aGUgdXJpLmMKLQkgIGNvZGUuCi0JKiB0cmVlLltjaF06IGFkZGVkIHhtbEJ1ZmZlckdyb3coKSwgd2FzIG5lZWRlZCBmb3IgaWNvbnYKLQkqIHVyaS5jOiBhZGRlZCB4bWxQYXJzZVVSSSgpIEkgY2FuJ3QgYmVsaWV2ZSBJIGZvcmdvdCB0bwotCSAgaW1wbGVtZW50IHRoaXMgb25lIGluIDIuMCAhISEKLQkqIFNBWC5jOiBtb3ZlZCBkb2MtPmVuY29kaW5nIHVwZGF0ZSBpbiB0aGUgZW5kRG9jdW1lbnQoKSBjYWxsLgotCSogVE9ETzogdXBkYXRlZC4KLQotTW9uIEFwciAyNCAxMzozMDoxMyBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLmg6IHJlbW92ZWQgZXh0cmFuZW91cyB4bWxSZW1vdmVQcm9wIGRlZmluaXRpb24KLQkqIFRPRE86IGFkZGVkIGl0ZW0gYWJvdXQgLS1kaXNhYmxlLWNvcmJhIGNvbmZpZ3VyZSBzd2l0Y2gKLQkqIHRyZWUuYyBwYXJzZXIuYzogZml4ZWQgcHJvYmxlbXMgZm9yIHhtbENvcHlEb2MgYW5kIHBvc3R2YWxpZGF0aW9uCi0JKiBuYW5vZnRwLmM6IGZpeGVkIGluY2x1ZGUgcHJvYmxlbXMgZ2l2aW5nIHRyb3VibGVzIG9uIEFJWCBhbmQgCi0JICBzbG93bGFyaXMKLQkqIHhtbElPLltjaF0gdmFsaWQuaCB0cmVlLltjaF0geGxpbmsuYyB4bWxtZW1vcnkuYyB1cmkuYyAKLQkgIHBhcnNlci5jIG5hbm9mdHAuYyBuYW5vaHR0cC5jIFNBWC5jIHRlc3RTQVguYyA6Ci0JICBjb21tZW50IGFuZCBoZWFkZXJzIGNoYW5nZXMgdG8gbG93ZXIgZ3RrLWRvYyBudW1iZXIgb2Ygd2FybmluZ3MKLQkqIGRvYy9odG1sLyo6IHJlYnVpbHQgZG9jcwotCi1TdW4gQXByIDE2IDExOjIzOjI5IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhBQ0tJTkc6IGRvY3VtZW50ZWQgdGhlIHRhZyBmb3IgMS54IGFuZCBpbnN0cnVjdGlvbnMKLQotV2VkIEFwciAxMiAxNTo0NzoyMiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxJTy5bY2hdIHBhcnNlci5bY2hdOiBNb3JlIGludGVyZmFjZXMgZm9yIG5ldyBJL08gZnVuY3Rpb25zCi0JICB4bWxOZXdJT0lucHV0U3RyZWFtLCB4bWxQYXJzZXJJbnB1dEJ1ZmZlckNyZWF0ZUlPLAotCSAgeG1sQ3JlYXRlSU9QYXJzZXJDdHh0Ci0JKiBwYXJzZXIuYyBwYXJzZXJJbnRlcm5hbHMuaDogc3BlZWR1cCBvZiBJU19DSEFSIGxpa2UgbWFjcm9zLAotCSAgc2lnbmlmaWNhbnQgb3ZlcmFsbCBpbXByb3ZlbWVudAotCSogeG1sbGludC5jOiBhZGRlZCBJL08gdGVzdCB0byB4bWxsaW50Ci0JKiB0ZXN0U0FYLmM6IGFkZGVkIGEgc3BlZWQgdGVzdAotCSogZG9jLyogOiB1cGRhdGVkL3JlZ2VuZXJhdGVkCi0KLVNhdCBBcHIgIDggMTQ6NTQ6NTQgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeHBhdGguYyB1cmkuaCBwYXJzZXJJbnRlcm5hbHMuaDogY29zbWV0aWMgY2hhbmdlcyBmcm9tCi0JICAiVGltdXIgSS4gQmFrZXlldiIgPHRpbXVyQGJhdC5ydT4sIGluY2x1ZGluZyBtYWtpbmcgCi0JICB4bWxDcmVhdGVVUkkoKSBwdWJsaWMKLQotRnJpIEFwciAgNyAxODozNTowMiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxJTy5bY2hdIHBhcnNlci5jOiBjbGVhbmUgdXAgdGhlIHhtbFBhcnNlcklucHV0QnVmZmVyIG1lc3MKLQkgIGFuZCB0aGUgY29kZSBhdCB0aGUgc2FtZSB0aW1lLiBBZGRlZCBhIGNsZWFuIG1lY2hhbmlzbSBmb3IKLQkgIG92ZXJsb2FkIG9yIGFkZGVkIGlucHV0IG1ldGhvZHM6IHhtbFJlZ2lzdGVySW5wdXRDYWxsYmFja3MoKQotCSogdHJlZS5jOiBmaXhlZCB4bWxQcmV2U2libGluZyBhbmQgeG1sTmV4dFNpYmxpbmcgcGVyIAotCSAgQ2hyaXN0b3BoZSBMZSBHYWwgKENocmlzdG9waGUuTGUtR2FsQGltYWcuZnIpIGlucHV0Ci0JKiBUT0RPOiB1cGRhdGVkCi0JKiBkb2MvKiA6IHVwZGF0ZWQvcmVnZW5lcmF0ZWQKLQkqIGRvYy9NYWtlZmlsZS5hbTogdHdlYWtzIHRvIGF2b2lkIHByb2JsZW0gd2l0aCBsaWJ4bWwgbGluayBpbiB0aGUKLQkgIHNvdXJjZSBkaXIKLQotV2VkIEFwciAgNSAyMToxMTozNSBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0ZXN0VVJJLmM6IHlldCBhbm90aGVyIGZvcmdvdHRlbiBjb21taXQsIEkgc2hvdWxkIGdldCBzb21lIHNsZWVwICEKLQotV2VkIEFwciAgNSAyMDozNjo0NiBDRVNUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxsaW50LmM6IGZvcmdvdCB0byBjb21taXQgdGhpcyB0b28gPwotCi1XZWQgQXByICA1IDE2OjIyOjQ0IENFU1QgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHhtbHZlcnNpb24uaC5pbiA6IGZvcmdvdCB0byBjb21taXQgdGhpcyBwcmV2aW91c2x5Ci0KLU1vbiBBcHIgIDMgMjE6NDc6MTAgQ0VTVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJpbmcgbGlieG1sLTIuMC4wIHZlcnNpb24gbG9va3MgT2sgc28gZmFyCi0JKiBSRUFETUUgVE9ETzogdXBkYXRlZCBmb3IgcmVsZWFzZQotCSogdXJpLmMgdXJpLmg6IGFkZGVkIGF1dGhvcml0eSBwYXJzaW5nL3NhdmluZwotCSogdXJpLmMgdGVzdFVSSS5jIE1ha2VmaWxlLmFtOiBtb3ZlZCB0aGUgdGVzdGluZyBjb2RlIHRvIHRlc3RVUkkuYwotCSogeG1sdmVyc2lvbi5oLmluIGNvbmZpZ3VyZS5pbiBuYW5vZnRwLltjaF0gbmFub2h0dHAuW2NoXSBlbmNvZGluZy5oCi0JICBkZWJ1Z1hNTC5bY2hdIHhwYXRoLltjaF0geG1sSU8uYyB0ZXN0ZXIuYyB0ZXN0WFBhdGguYyB0ZXN0SFRNTC5jCi0JICB0cmVlLmMgSFRNTHRyZWUuYyBIVE1McGFyc2VyLmMgdHJlZS5jIHRyZWUuaCBwYXJzZXIuYwotCSAgTWFrZWZpbGUuYW0gOiBhZGRlZCBjb21waWxlLXRpbWUgY3VzdG9taXphdGlvbiBvZiBsaWJ4bWwKLQkgIC0td2l0aC1mdHAgLS13aXRoLWh0dHAgLS13aXRoLWh0bWwgLS13aXRoLXhwYXRoIC0td2l0aC1kZWJ1ZwotCSAgLS13aXRoLW1lbS1kZWJ1ZwotCSogKi5bY2hdIGF1dG9jb25mLnNoIDogbW92ZWQgdG8gYW4gYWJzb2x1dGUgYWRyZXNzaW5nIG9mIGluY2x1ZGVzIDogCi0JICAjaW5jbHVkZSA8bGlieG1sL3h4eC5oPiBJIGhvcGUgaXQgd29uJ3QgYnJlYWsgdG9vIG11Y2ggc3R1ZmYKLQkgIGFuZCB3aWxsIGJlIG1hbmFnZWFibGUgaW4gdGhlIGZ1dHVyZS4uLgotCSogeG1sbGludC5jIE1ha2VmaWxlLmFtIGxpYnhtbC5zcGVjLmluIDogcmVuYW1lZCB0ZXN0ZXIuYyB0byB4bWxsaW50LmMKLQkgIGFuZCBhZGRlZCB4bWxsaW50IHRvIHRoZSBpbnN0YWxsZWQgcHJvZ3JhbXMKLQkqIHVyaS5oOiBhZGRlZCB4bWxGcmVlVVJJKCkKLQotRnJpIE1hciAyNCAxNDozNToyMSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHVyaS5jIHVyaS5oOiBmaW5pc2hlZCB0aGUgZXNjYXBpbmcgaGFuZGxpbmcsIHRoZSBiYXNlIHN1cHBvcnQKLQkgIGFuZCB0aGUgVVJJIHBhdGggbm9ybWFsaXphdGlvbi4gTG9va3MgZ29vZCBqdXN0IGxhY2tzIHRoZQotCSAgYXV0aG9yaXR5IGNvbnRlbnQgcGFyc2luZyBjb2RlLgotCSogTWFrZWZpbGUuYW06IGFkZGVkIGluc3RydWN0aW9ucyB0byBnZW5lcmF0ZSB0ZXN0VVJJCi0JKiBUT0RPOiB1cGRhdGVkCi0JKiBkb2MveG1sLmh0bWwsIGRvYy9zbWFsbGZvb3Rvbmx5LmdpZiBkb2MvdzNjLnBuZzogdXBkYXRlZCwKLQkgIGFkZGVkIGxpbmtzIGFuZCBpY29ucyBmb3IgVzNDIGFuZCBHbm9tZQotCi1Nb24gTWFyIDIwIDE0OjA1OjI2IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sbWVtb3J5LltjaF0gOiBzZWVtcyBJIGZvcmdvdCB0byBhY3R1YWxseSB1cGRhdGUgdGhlIGZpbGVzIGluCi0JICB0aGUgbGFzdCBjb21taXQgOi0pCi0JKiBkb2MveG1sLmh0bWwgZG9jL2h0bWwvKiA6IHVwZGF0ZWQgYW5kIHVwbG9hZGVkIHRoZSBkb2NzCi0KLU1vbiBNYXIgMjAgMTI6MzM6NTEgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0ZXN0L3ZhbGlkL2R0ZHMveGh0bWwqOiByZW1vdmVkIFJDUyBpbmZvcyAocGFpbiB3aXRoIENWUykKLQkqIFRPRE86IHVwZGF0ZWQKLQkqIHhtbG1lbW9yeS5bY2hdIDogYWRkZWQgeG1sTWVtU2V0dXAoKSBhbmQgeG1sTWVtR2V0KCkgdG8gb3ZlcnJpZGUKLQkgIGxpYnhtbCBkZWZhdWx0IGFsbG9jYXRpb24gZnVuY3Rpb24gd2l0aCBhbm90aGVyIHNldCAobGlrZSBnbWFsbG9jLwotCSAgZ2ZyZWUpLgotCSogTWFrZWZpbGUuYW0sIHVyaS5jLCB1cmkuaDogYWRkZWQgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIGRvCi0JICBleGFjdCAobGl0dGVyYWx5IGNvcGllZCBmcm9tIHRoZSBSRkMgMjM5NiBwcm9kdWN0aW9ucykgcGFyc2luZwotCSAgYW5kIGhhbmRsaW5nIG9mIFVSSS4gV2lsbCBiZSBuZWVkZWQgZm9yIFhMaW5rLCBvbmUgWE1MIFdGQywgCi0JICBYTUwgQmFzZSBhbmQgcmV1c2VkIGluIHRoZSBuYW5vW2Z0cC9odHRwXSBtb2R1bGVzLiBTdGlsbCB3b3JrCi0JICB0byBiZSBkb25lLgotCi1UdWUgTWFyIDE0IDIwOjUyOjM1IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluLCBsaWJ4bWwuc3BlYy5pbiA6IGxpYnhtbDIKLQkqIGRvYy8qIDogdXBkYXRlZCB0aGUgZG9jIHBhZ2UsIHJlYnVpbHQgdGhlIGRvY3MKLQotVHVlIE1hciAxNCAxOToxMToyOSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGFsbDogdGFnZ2VkIExJQl9YTUxfMV9YCi0JKiAqLmMgKi5oIDogdXBkYXRlZCBmcm9tIFczQyBDVlMgdHJlZQotCSogY29uZmlndXJlLmluIDogMi4wLjAtYmV0YQotCSogbGlieG1sLnNwZWMuaW4gOiBsaWJ4bWwyIHBhY2thZ2UgbmFtCi0JKiByZXN1bHQvKiA6IG5ldyB2ZXJzaW9uIG9mIHRoZSB0ZXN0cyBvdXRwdXQKLQotTW9uIE1hciAgNiAwOTozNDo1MiBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWwuaHRtbCwgZG9jL3VwZGF0ZS5odG1sOiB1cGRhdGVkIGRvY3MsIDEuOC43Ci0KLVNhdCBNYXIgIDQgMTY6MTQ6NDIgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MvKiA6IHJlYnVpbHQgdGhlIGRvY3MKLQkqIHBhcnNlci5jOiBmaW5hbCBwYXRjaCBvbiAjNjc2NgotCSogdmFsaWQuYzogc21hbGwgcGF0Y2ggb24gdmFsaWRpdHkgY2hlY2tzLgotCi1TYXQgTWFyICA0IDEyOjM4OjQxIENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZG9jL3VwZ3JhZGUuaHRtbDogaW5zdHJ1Y3Rpb24gb24gaG93IHRvIHVwZ3JhZGUgZnJvbSAxLnggdG8gMi54Ci0JICBhZGRlZAotCSogcGFyc2VyLmM6IGFkZGluZyB4bWxLZWVwQmxhbmtzRGVmYXVsdCgpIGFzIGEgd2F5IHRvIG1hbmFnZQotCSAgY29tcGF0aWJpbGl0eSB3LnIudC4gWE1MIHNwZWMgYW5kIGV4aXN0aW5nIGNvZGUuCi0KLVRodSBNYXIgIDIgMDQ6NDU6MTUgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYzogc2VlbXMgYSBiZXR0ZXIgc29sdXRpb24gdG8gPGE+ICAgPC9hPiBleGlzdHMsCi0JICB3aWxsIHRyeSBpdCBmb3IgYSB3aGlsZQotCi1UaHUgTWFyICAyIDAyOjI2OjEzIENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmM6IHRyaWVkIHRvIHJlbW92ZSB0aGUgPGE+ICAgPC9hPiBnZW5lcmF0aW5nIDxhLz4KLQkgIHRoaXMgaXMgaGFyZC4gTGVmdCBhIGZsYWcgZm9yIHRoYXQgcHVycG9zZS4gRml4ZWQgYnVnICM2NzY2Ci0JKiBjb25maWd1cmUuaW46IHByZXBhcmVkIDEuOC43IG5vdCByZWxlYXNlZCwgZHVlIHRvIHByZXZpb3VzCi0JICBwcm9ibGVtCi0KLVRodSBNYXIgIDIgMDM6MDM6NTAgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MveG1sLmh0bWwgOiBhcHBsaWVkIHNlY29uZCBwYXRjaCBmcm9tIFBhdWwgRHVCb2lzCi0KLVR1ZSBGZWIgMjkgMjM6NTU6MTMgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MveG1sLmh0bWwgOiBhcHBsaWVkIHBhdGNoIGZyb20gUGF1bCBEdUJvaXMKLQotVGh1IEZlYiAgMyAxNjozNjozOSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jIEhUTUxwYXJzZXIuYzogZG8gYSBiaXQgb2YgYnVmZmVyaXphdGlvbiBpbiBwdXNoIG1vZGUuCi0KLVRodSBGZWIgIDMgMTU6NTk6MzcgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vZnRwLmMgbmFub2h0dHAuYyB0cmVlLmMgSFRNTHRyZWUuW2NoXSBkZWJ1Z1hNTC5jIHhwYXRoLmM6IEZpeGVkCi0JICBjb21waWxhdGlvbiB3YXJuaW5ncyBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4KLQkqIHBhcnNlci5jOiBGaXhlZCAjNTI4MSB2YWxpZGl0eSBlcnJvciBjYWxsYmFja3MgYXJlIG5vdyBkZXNhY3RpdmVkCi0JICBieSBkZWZhdWx0IGlmIG5vdCB2YWxpZGF0aW5nLgotCi1UaHUgRmViICAzIDEzOjQ2OjE0IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbmFub2Z0cC5jLCB3aW4zMmNvbmZpZy5oLmluOiBwYXRjaGVzIHRvIGNvbXBpbGUgb24gV0lOMzIKLQotV2VkIEZlYiAgMiAyMjo1MToxNiBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9mdHAuYzogc25wcmludGYvc3ByaW50ZiBwYXRjaCBjb3VydGVzeSBHZW9yZ2UgS2F0c2lyZWxvcwotCSAgPGdrYXRzaUBjcy50b3JvbnRvLmVkdT4KLQotTW9uIEphbiAzMSAxODo1ODoyMSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiBGaXhlZCAnIycgYW5kICc/JyBzdHJpcHBpbmcgd2hlbgotCSAgcHJvY2Vzc2luZyBVUkxzCi0KLU1vbiBKYW4gMzEgMTQ6MjU6NTcgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBuYW5vZnRwLltjaF06IGNsZWFudXAsIGJ1ZyBmaXhlcywgaW50ZWdyYXRpb24gaW4gcnBtZmluZCwgYWRkZWQKLQkgIHhtbE5hbm9GVFBVcGRhdGVVUkwgZm9yIHBlcnNpc3RlbnQgY29udHJvbCBjb25uZWN0aW9ucy4KLQkqIGNvbmZpZ3VyZS5pbjogMS44LjYKLQotVGh1IEphbiAyNyAxNzo1MjoyOSBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9odHRwLltjaF0sIG5hbm9mdHAuW2NoXTogY2xlYW51cCwgYWRkZWQgcHJveHkgc3VwcG9ydAotCSogdHJlZS5bY2hdIDogYWRkZWQgeG1sU2F2ZU5vRW1wdHlUYWdzCi0KLTIwMDAtMDEtMjkgIEphbWVzIEhlbnN0cmlkZ2UgPGphbWVzQGRhYS5jb20uYXU+Ci0KLQkqIG5hbm9mdHAuYzogaW5jbHVkZSA8bmV0aW5ldC9pbi5oPiBmb3IgSVBQUk9UT19UQ1AuCi0KLQkqIE1ha2VmaWxlLmFtOiBhZGRlZCBuYW5vZnRwLltjaF0gdG8gdGhlIGJ1aWxkLgotCi1XZWQgSmFuIDI2IDE4OjE0OjU1IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbmFub2Z0cC5bY2hdOiBjbGVhbnVwLCBjb21tZW50cywgQVBJCi0JKiBkZWJ1Z1hNTC5jIDogZml4ZWQgYSBidWcgaW4gdGhlIGNhdCBjb21tYW5kCi0JKiBkb2MvKjogcmVnZW5lcmF0ZWQgdGhlIGRvY3MKLQotV2VkIEphbiAyNiAxNjo1Mjo1MCBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9mdHAuW2NoXSBwYXJzZXIuYyB4bWxJTy5bY2hdOiBhZGRlZCBhIE5hbm8gRlRQIGltcGxlbWVudGF0aW9uCi0JKiBkZWJ1Z1hNTC5jIDogZml4ZWQgYSBidWcgaW4gdGhlIGNhdCBjb21tYW5kCi0JKiB2YWxpZC5jOiBmaXhpbmcgc29tZSBzbWFsbCBwcm9icwotCSogbGlieG1sLnNwZWMuaW46IGdldCByaWQgb2YgdGhlIFNOQVAgc3VmZml4Ci0JKiBkb2MveG1sLmh0bWw6IHVwZGF0ZWQgdGhlIHN0YXR1cwotCi1Nb24gSmFuIDI0IDE0OjMxOjA5IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sLWNvbmZpZy5pbjogeG1sLWNvbmZpZyAtLXZlcnNpb24gdG8ganVzdCByZXR1cm4gdGhlCi0JICB2ZXJzaW9uIG51bWJlcgotCSogeHBhdGguYzogc29tZSBjbGVhbnVwIHcuci50LiBheGlzIHdoZW4gdGhlIGN1cnJlbnQgbm9kZSBpcwotCSAgYW4gYXR0cmlidXRlLgotCSogVE9ETzogdXBkYXRlZAotCi1UdWUgSmFuIDE4IDE4OjQ2OjA2IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluOiBwcmVwYXJlZCBmb3IgbGlieG1sLTEuOC41Ci0JKiBkb2MvKiByZWNvbXBpbGVkIHRoZSBkb2N1bWVudGF0aW9uCi0KLTIwMDAtMDEtMTcgIEpvZHkgR29sZGJlcmcgPGpnb2xkYmVyZ0Bob21lLmNvbT4KLQotCSogY29uZmlndXJlLmluIDogV0FSTklORyBhdXRvY29uZiBzdWJ0bGV0eSBhbGVydCA6Ci0JICBVc2UgQUNfQ0hFQ0tfSEVBREVSUyByYXRoZXIgdGhhbiBBQ19DSEVDS19IRUFERVIKLQkgIHdoZW4gbG9va2luZyBmb3IgemxpYi5oIHNvIHRoYXQgSEFWRV9aTElCX0ggaXMgZGVmaW5lZC4KLQkqIGNvbmZpZy5oLmluIDogSGF2ZSBhICN1bmRlZiBmb3IgSEFWRV9aTElCX0ggc28gdGhhdCBpdCB3aWxsCi0JICBnZXQgZGVmaW5lZCBieSBBQ19DSEVDS19IRUFERVJTLgotCi1Nb24gSmFuIDE3IDE3OjA0OjEyIENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jOiBmaXhlZCBhIGhpZGVvdXMgYnVnIGluIHhtbEdldFByb3AoKSB0aGFua3MgdG8KLQkgIFJ1bmUuRGp1cmh1dXNAZmFzdC5ubwotCi1TYXQgSmFuIDE1IDE1OjA5OjA2IENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogVE9ETzogdXBkYXRlZAotCSogdHJlZS5jLCBwYXJzZXIuYzogbWFkZSBzdXJlIHRoYXQgb25seSBtZW1vcnkgYWxsb2MgcHJvYmxlbXMKLQkgIGFuZCBpbnRlcm5hbCBwYXJzZXIgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIHdyaXRlIHRvIHN0ZG91dCBvcgotCSAgc3RkZXJyLgotCi1UaHUgSmFuIDEzIDExOjQ5OjExIENFVCAyMDAwIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jIDogcmVzdG9yZWQgeG1sTmV3R2xvYmFsTnMgc2luY2UgdGhpcyBzZWVtcyB1c2VkIGJ5Ci0JICBhIGxvdCBvZiBleGlzdGluZyBjb2RlIDotKCwgZml4ZWQgYSBidWcgaW4geG1sTmV3TnMKLQkqIG5hbm9odHRwLmM6IGZpeGVkIGEgcHJvYmxlbSB3aXRoIElOQ0xVREVfV0lOU09DSwotCSogSFRNTHBhcnNlci5jLCBwYXJzZXIuYywgZW50aXRpZXMuYywgdmFsaWQuYyA6IHJlbW92ZWQgYWxsIGNhbGxzCi0JICB0byBleGl0KCkgZnJvbSB0aGUgbGlicmFyeSBjb2RlLgotCSogeHBhdGguYywgcGFyc2VyLmM6IHJlbW92ZWQgYnVncyBvciB1bnVzZWQgY29kZSBkZXRlY3RlZCBieSAKLQkgIFdpbmRvd3MgY29tcGlsZXJzCi0JKiBwYXJzZXIuYzogc3RhcnRlZCBhZGRpbmcgaW50ZXJmYWNlcyBmb3IgcGFyc2luZyB3ZWxsIGJhbGFuY2VkCi0JICBYTUwgZnJhZ21lbnRzCi0JKiBjb25maWd1cmUuaW46IHJlbGVhc2luZyAxLjguNAotCSogZG9jLyogOiByZWJ1aWx0IHRoZSBkb2NzCi0KLVN1biBKYW4gIDkgMjM6MDM6MjAgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLltjaF0gOiBhZGRlZCB4bWxOZXdEb2NGcmFnbWVudCgpIGZvciBET00KLQkqIHRlc3RIVE1MLmM6IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi0KLVdlZCBKYW4gIDUgMTc6Mjk6MTcgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBkb2MvKiA6IHJlYnVpbGQgdGhlIGRvY3MKLQotV2VkIEphbiAgNSAxNzowODo0MyBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGFjY29uZmlnLmg6IHJlYWRsaW5lIGFuZCBoaXN0b3J5IHBhdGNoCi0JKiB2YWxpZC5bY2hdOiBhZGRlZCB4bWxSZW1vdmVJRCgpIGFuZCB4bWxSZW1vdmVSZWYoKQotCSogdHJlZS5jOiBhZGRlZCBjaGVjayBhbmQgaGFuZGxpbmcgd2hlbiBwb3NzaWJseSByZW1vdmluZyBhbiBJRAotCSogdHJlZS5jLCBIVE1McGFyc2VyLmgsIEhUTUx0cmVlLmg6IGZpeGVkIGVudGl0aWVzIHBhcnNpbmcKLQkgICAgIGFuZCBzYXZpbmcuCi0JKiB0ZXN0L0hUTUwvZW50aXRpZXMuaHRtbCByZXN1bHQvSFRNTC9lbnRpdGllcy5odG1sKiA6IHRlc3QgZm9yCi0JICAgICB2YXJpb3VzIGVudGl0aWVzIHJlZmVyZW5jZSBjYXNlcwotCSogcmVzdWx0L0hUTUwvKiA6IGFzIGEgcmVzdWx0IG91dHB1dCBvZiBzb21lIHRlc3RjYXNlIGhhdmUKLQkgICAgIGNoYW5nZWQKLQkqIEhUTUxwYXJzZXIuYywgcGFyc2VyLmM6IGZpeGVkIGEgYnVnIGluIHRoZSBwdXNoIG1vZGUgdHJpZ2dlcmVkCi0JICAgICBieSBwcmV2aW91cyBleGFtcGxlLiBhZGRlZCB4bWxQYXJzZVRyeU9yRmluaXNoKCkuCi0JKiB4cGF0aC5oIHRyZWUuaCBwYXJzZXIuaCB2YWxpZC5oIHhtbElPLmggeGxpbmsuaCBlbmNvZGluZy5oCi0JICBlbnRpdGllcy5oIGRlYnVnWE1MLmggSFRNTHBhcnNlci5oOiBjaGFuZ2VkIHRoZSB3YXkgc3RydWN0IGFyZSAKLQkgIGRlY2xhcmVkIHRvIGFsbG93IGd0ay1kb2MgdG8gZXhwb3NlIHRob3NlCi0JKiBwYXJzZXIuYzogY2xvc2VkIGJ1ZyAjNDk2MCAgCi0JKiBNYWtlZmlsZS5hbSBjb25maWd1cmUuaW46IEFwcGxpZWQgcGF0Y2ggZnJvbSAKLQkgIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4gZm9yIGJldHRlciB6bGliCi0JICBhbmQgbWF0aC9zb2NrZXQgbGlicyBkZXRlY3Rpb24KLQotTW9uIEphbiAgMyAxODoyOTo0MyBDRVQgMjAwMCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuYW06IGxpbmsgdGVzdGVyIGFnYWluc3QgcmVhZGxpbmUKLQkqIGRvYy94bWwuaHRtbCBkb2MvKi8qOiB1cGRhdGVkIGFuZCByZWJ1aWx0IHRoZSBkb2N1bWVudGF0aW9uIHBhZ2VzCi0KLU1vbiBKYW4gIDMgMTE6NTg6MDUgQ0VUIDIwMDAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLltjaF06IGFkZGVkIHhtbFJlbW92ZVByb3AKLQkqIHdpbjMyY29uZmlnLmguaW4gbmFub2h0dHAuYzogYXZvaWQgaW5jbHVkaW5nIHRoZSBXaW5kb3dzCi0JICAgIHNvY2tldCBzdHVmZiBpbiBldmVyeSBDIGZpbGVzCi0JKiBwYXJzZXIuYzogcmVtb3ZlZCBhbiBpbmRldGVybWluYXRpb24geG1MRGVjbC9QSSh4bWwuLi4pIGluCi0JICAgIHRoZSBYbUwgcGFyc2VyKHMpCi0JKiB0ZXN0L25zNCByZXN1bHQvbnM0IGV0Yy4uLjogYWRkZWQgdGVzdCBjYXNlIGZvciBwcmV2aW91cyBwcm9iICAgIAotCSogdHJlZS5jOiB4bWxOZXdOcyB3YXNuJ3QgY2hlY2tpbmcgZm9yIGRvdWJsZSBkZWZpbml0aW9uCi0JKiBNYWtlZmlsZS5pbjogZml4ZWQgYSBwcm9ibGVtIHdpdGggZGlzdC1ob29rIGR1cGxpY2F0ZXMKLQkqIHBhcnNlci5baGNdLCB4bWxJTy5jOiBmaXhlZCB0aGUgbG9hZGluZyBvZiBleHRlcm5hbCBlbnRpdGllcwotCSAgICBBUElzLCBub3cgeG1sTG9hZEV4dGVybmFsRW50aXR5KCkgaXMgdXNlZCBldmVyeXdoZXJlIGFuZAotCSAgICBzZXR0aW5nIHVwIGFuIGFwcCBzcGVjaWZpYyBmcm9udC1lbmQgdXNpbmcgdGhlIAotCSogU0FYLmMgcGFyc2VyLmM6IHNvbWUgZml4ZXMsIG5vdyB0aGUgeGh0bWwgc3BlYyB2YWxpZGF0ZXMKLQkgICAgd2l0aCB0aGUgeGh0bWwgRFRELgotCSogZXJyb3IuYzogZml4ZWQgY3Jhc2hlcyBpbiBjYXNlIG9mIG5vIGlucHV0IHN0cmVhbSAgICAKLQkqIHRlc3QvdmFsaWQvW2R0ZHMvXS94aHRtbCogOiBhZGRlZCB0aGUgeGh0bWwgc3BlYyBhbmQgZHRkcwotCSAgICB0byB0aGUgdmFsaWRhdGlvbiB0ZXN0cyBhbmQgcmVzdWx0cwotCi1XZWQgRGVjIDI5IDE1OjI5OjUyIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5bY2hdIHRlc3RIVE1MLmM6IGFkZGVkIHB1c2ggbW9kZSBmb3IgdGhlIEhUTUwgcGFyc2VyCi0JICB0b28gaHRtbENyZWF0ZVB1c2hQYXJzZXJDdHh0KCkgYW5kIGh0bWxQYXJzZUNodW5rKCkKLQkqIHBhcnNlci5jOiBhIGJpdCBvZiBjbGVhbnVwLgotCSogU0FYLmMsIEhUTUxwYXJzZXIuYzogc29tZSBhdHRyaWJ1dGVzIG1heSBub3QgaGF2ZSB2YWx1ZXMgKGNvbnRyYXJ5Ci0JICB0byBYTUwpIHJlbW92ZWQgdGhlIGxhc3QgbWVtIGxlYWsga25vd24KLQkqIEhUTUx0cmVlLmM6IG91dHB1dCBtZXNzYWdlIGNsZWFudXAKLQkqIHhtbG1lbW9yeS5jOiBkaXNwbGF5IGNvbnRlbnQgaW5mbyBhYm91dCBtZW1vcnkgYmxvY2tzCi0JKiByZXN1bHQvSFRNTC93aXJlZC4qIDogbWlzc2luZyBhdHQgdmFsdWUgd2FybmluZyBjaGFuZ2UKLQotVHVlIERlYyAyOCAxNzo0Mjo0MSBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy8qIDogcmVidWlsdCB0aGUgZG9jdW1lbnRhdGlvbgotCi1UdWUgRGVjIDI4IDE4OjQ0OjIyIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLltjaF0gcGFyc2VySW50ZXJuYWxzLmg6IFB1c2ggcGFyc2VyIGZvciBYTUwsCi0JICAgICBzZWVtcyB0byB3b3JrIGZpbmUgbm93Ci0JKiB0ZXN0ZXIuYyBkZWJ1Z1hNTC5bY2hdOiBBZGRlZCBhbiBYTUwgc2hlbGwgZGVidWcgZmFjaWxpdHkgYW5kCi0JICAgICAtLXB1c2ggZm9yIHB1c2ggdGVzdGluZwotCSogeHBhdGguW2NoXSA6IGNsZWFuZWQgdXAgZm9yIFNoZWxsIHVzYWdlLCBhZGRlZCBtaXNzaW5nIEFQSXMKLQkqIHRlc3RTQVguYzogYWRkZWQgLS1wdXNoCi0JKiBIVE1MdHJlZS5bY2hdIHRyZWUuW2NoXTogbmV3IGZ1bmN0aW9ucyBmb3IgZHVtcGluZyBwYXJ0cyBvZiB0aGUKLQkgICAgIHN1YnRyZWUKLQkqIHhtbElPLltjaF0gOiBlbnJpY2hlZCBBUEkgKyBmaXhlcyBmb3IgcHVzaCBtb2RlICAgICAKLQkqIGVudGl0aWVzLltjaF06IGFkZGVkIHRoZSBlbnRpdHkgY29udGVudCBsZW5ndGggdG8gdGhlIHN0cnVjdC4KLQkqIHhtbG1lbW9yeS5bY2hdOiBuZXcgQVBJIHRvIHNob3cgdGhlIGxhc3QgZW50cmllcyBmb3IgdGhlIHNoZWxsCi0JKiB2YWxpZC5jOiBhZGRlZCByZXF1aXJlZCBhdHRyaWJ1dGUgdGVzdGluZwotCSogU0FYLmM6IHRoZSBjZGF0YSBjYWxsYmFjayBub3cgbWVyZ2UgY29udGlndW91cyBmcmFnbWVudHMKLQkqIEhUTUxwYXJzZXIuYzogY2xlYW51cCBvZiBzb21lIG1hY3JvcwotCi1XZWQgRGVjIDIyIDEyOjIwOjUzIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmM6IGZpeCBmb3IgUElzIG5hbWUgc3RhcnRpbmcgd2l0aCB4bWwKLQkqIHRyZWUuYzogZml4ZWQgYSBwb3RlbnRpYWwgcHJvYmxlbSB3aXRoIHx8IGFuZCAmJiBvcHMKLQkqICouYywgY29uZmlndXJlLmluIHdpbjMyY29uZmlnLmguaW4gOiBnZW5lcmF0ZSB3aW4zMmNvbmZpZy5oIGZvcgotCSAgdGhvc2Ugb24gdGhlIE90aGVyIFNpZGUgIQotCi1UdWUgRGVjIDIxIDE3OjIyOjE3IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmM6IGZpeGVkIGEgc3R1cGlkID0gdnMuID09IGJ1ZyA6LSgKLQkqIGRvYy9nbm9tZS14bWwuc2dtbDogcy9nbGFkZS94bWwvCi0KLVR1ZSBEZWMgMjEgMTQ6Mjk6MzQgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW4sIGRvYy94bWwuaHRtbCA6IGJ1ZyBmaXggcmVsZWFzZSAxLjguMgotCSogZGVidWdYTUwuaCBuYW5vaHR0cC5oIHhtbC1lcnJvci5oIHhtbG1lbW9yeS5oIHhwYXRoLmggOiAKLQkgIEhvcGVmdWxseSB0aGUgZW5kIG9mIHRoYXQgc2lsbHkgQysrIGluY2x1ZGUgcHJvYmxlbQotCSogdHJlZS5bY2hdOiBBZGRlZCBhIGZldyBmdW5jdGlvbnM6IHhtbFJlcGxhY2VOb2RlLCB4bWxBZGRQcmV2U2libGluZywKLQkgICAgICB4bWxBZGROZXh0U2libGluZywgeG1sTm9kZVNldE5hbWUgYW5kIHhtbERvY1NldFJvb3RFbGVtZW50Ci0JKiBIVE1McGFyc2VyLmMgSFRNTHBhcnNlci5oIEhUTUx0cmVlLmM6IFdoZW4gc2F2aW5nIEhUTUwgdHJ5IHRvIGF2b2lkIAotCSAgICAgIHRyb3VibGVzIHdpdGggYXV0b2Nsb3NlZCBlbGVtZW50cyB3aGVuIHRoZSBzdHJlZSBzaGFwZSBkb2Vzbid0Ci0JICAgICAgZm9sbG93IHRoZSBEdEQgc3BlY3MuIEFkZGVkIGh0bWxJc0F1dG9DbG9zZWQoKSBhbmQKLQkgICAgICBodG1sQXV0b0Nsb3NlVGFnKCkKLQkqIHJlc3VsdC9IVE1MLyouaHRtKjogVXBkYXRlZCB0aGUgSFRNTCBleGFtcGxlcyByZWdyZXNzaW9uIHRlc3RzIG91dHB1dAotCSogU0FYLmMgdHJlZS5jOiBmaXhlZCBidWcgb24gZGVmYXVsdGluZyBuYW1lc3BhY2VzIG9uIGF0dHJpYnV0ZXMKLQkqIGRlYnVnWE1MLmM6IGZpeGVkIGEgYnVnIG9uIHByaW50aW5nIGRlZmF1bHQgbmFtZXNwYWNlcy4KLQkqIEhUTUx0cmVlLmM6IGZpeGVkIGEgcHJvYmxlbSB3aGVuIG91dHB1dGluZyBYTUwgcGFyc2VkIGRvY3MgYXMgSFRNTAotCi1Nb24gRGVjIDIwIDE2OjIwOjU1IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcmVzdWx0L0hUTUwvKi5odG1bbF0gOiB1cGRhdGVkIHRoZSBIVE1MIHJlZ3Jlc3Npb24gdGVzdHMgYWNjb3JkaW5nCi0JICB0byB0aGUgbmV3IG91dHB1dAotCSogeHBhdGguaCB4bWwtZXJyb3IuaCB2YWxpZC5oIHRyZWUuaCBwYXJzZXIuaCBlbnRpdGllcy5oIFNBWC5oCi0JICBIVE1MdHJlZS5oIHRyZWUuYyBlbnRpdGllcy5jOiBoZWFkZXJzIHR3ZWFraW5ncyB0byBhdm9pZCBhIG5hc3R5Ci0JICBwcm9ibGVtIGR1ZSB0byBpbnRlcm1peCBvZiBleHRlcm4gIkMiIHsgLi4uIH0gZGVjbGFyYXRpb25zIGZvciBDKysKLQkgIGFuZCByZWN1cnNpdmUgaW5jbHVkZXMgaW4gdGhlIGhlYWRlcnMKLQotMTk5OS0xMi0yMCAgQ2hyaXMgTGFoZXkgIDxjbGFoZXlAdW1pY2guZWR1PgotCi0JKiBIVE1MdHJlZS5jOiBNYWRlIGl0IHNvIHRoYXQgaHRtbCBub2RlcyB3aXRoIGEgc2luZ2xlIGNoaWxkIGRvCi0Jbm90IGluc2VydCBhIGNhcnJpYWdlIHJldHVybiBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkIG5vZGUuCi0KLVNhdCBEZWMgMTggMTY6MDc6MDMgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW4sIGRvYy94bWwuaHRtbCA6IGJ1ZyBmaXggcmVsZWFzZSAxLjguMQotCSogcGFyc2VyLmM6IGZpeGVkIGJ1ZyAjNDM0NAotCSogeHBhdGguaCB4bWwtZXJyb3IuaCB4bGluay5oIG5hbm9odHRwLmggZGVidWdYTUwuaCBTQVguaCBIVE1McGFyc2VyLmgKLQkgIGFkZGVkIHRoZSBnbHVlIHRvIGF2b2lkIEMrKyBwcm9ibGVtcwotCSogZG9jLyogOiByZWdlbmVyYXRlZCB0aGUgZG9jdW1lbnRhdGlvbgotCi1UaHUgRGVjIDE2IDE2OjE5OjI5IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jOiBmaXhlZCBhIGJ1ZyBpbnRyb2R1Y2VkIGluIDEuOC4wIGFuZCBicmVha2luZyBkZWZhdWx0Ci0JICBuYW1lc3BhY2UgcmVjb2duaXRpb24sIGFuZCBEaWEgYXMgYSByZXN1bCA6LSgKLQkqIGVuY29kaW5nLmM6IGNsb3NlZCBidWcgIzM5NTAKLQotV2VkIERlYyAxNSAxOToyMjoyMyBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHZhbGlkLmM6IGRlYnVnZ2luZyBhIHBvc3RlcmlvcmkgdmFsaWRhdGlvbiwgZXhjZXB0IFVSSSBleHBhbnNpb24KLQkgIHN0dWZmIHRoaXMgc2hvdWxkIGJlIGZpeGVkIG5vdwotCSogcGFyc2VySW50ZXJuYWxzLmg6IGZpeGVkIGEgYnVnIGluIElTX0JBU0VDSEFSIHJlcG9ydGVkIGJ5Ci0JICBDYXJsIE55Z2FyZCA8Y255Z2FyZEBiZWxsYXRsYW50aWMubmV0PgotCSogdGVzdGVyLmM6IGFkZGVkIC0tcG9zdHZhbGlkLCBjbGVhbmluZyBvZiB0aGUgY29kZQotCSogdHJlZS5bY2hdOiBhZGRlZCB4bWxEb2NHZXRSb290RWxlbWVudCgpCi0KLVR1ZSBEZWMgMTQgMjA6MzA6MzQgUFNUIDE5OTkgUmFtaXJvIEVzdHJ1Z28gPHJhbWlyb0BlYXplbC5jb20+Ci0KLQkqIFNBWC5oLCB0cmVlLmggOiBjaGFuZ2VkICduYW1lc3BhY2UnIHRvICduYW1lU3BhY2UnIHRvIHdvcmthcm91bmQKLQljKysgbG9zYWdlLgotCi1TdW4gRGVjIDEyIDEzOjA4OjE1IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluLCBkb2MveG1sLmh0bWwgOiBidW1wZWQgdG8gMS44LjAKLQkqIHhsaW5rLltjaF0sIE1ha2VmaWxlLmFtIDogYWRkZWQgZnJhbWV3b3JrIGZvciBsaW5rIGRldGVjdGlvbgotCSogcGFyc2VyLmg6IGFkZGVkIG5iQ2hhcnMgdG8gcGFyc2VyIGNvbnRleHQsIG5lZWRlZCBmb3IgY2xlYW51cC4KLQkqIHhtbG1lbW9yeS5jOiByZW1vdmVkIGEgbmFzdHkgYnVnIHdoZW4gb3V0IG9mIG1lbQotCSogdmFsaWQuW2NoXTogYWRkaW5nIG5hbWVzcGFjZSBzdXBwb3J0IGZvciBhdHRyaWJ1dGUgZGVjbAotCSogdGVzdGVyLmM6IGFkZGVkIC0tZGVidWdlbnQgb3B0aW9uCi0JKiBkZWJ1Z1hNTC5bY2hdOiBhZGRlZCB4bWxEZWJ1Z0R1bXBFbnRpdGllcygpCi0JKiBwYXJzZXIuYzogY2xlYW51cCwgYXZvaWRpbmcgdXNlIG9mIENVUl9QVFIgbGlrZSBwbGFndWUsIHVzaW5nCi0JICBidWZmZXJzIGluc3RlYWQsIHRoaXMgd2FzIHJlYWxseSBuZWVkZWQsIHZhbGlkYXRpb24gd2FzIGJyZWFraW5nCi0JICBpbiBzdHJhbmdlIHdheXMgZHVlIHRvIHRoYXQuIEFkZGVkIHhtbFBhcnNlU3RyaW5nUEVSZWZlcmVuY2UoKQotCSAgYW5kIG90aGVyIHBhcnNpbmcgZnJvbSBzdHJpbmdzIGZ1bmN0aW9ucy4gRW50aXRpZXMgcHJvY2Vzc2luZwotCSAgbW9kaWZpZWQgYWdhaW4sIGJ1dCBQRVJlZiBhcmUgc3RpbGwgbm90IGhhbmRsZWQgY29ycmVjbHkgYnV0Ci0JICB1bmxlc3MgeW91J3JlIEV2ZSBNYWxsZXIgeW91IHdvbid0IG5vdGljZSA6LSkKLQkqIEhUTUxwYXJzZXIuYzogbGFyZ2UgY2hhbmdlcyB0b3dhcmQgcmVsaWFiaWxpdHksIGFuZCBzd2l0Y2hlZCB0bwotCSAgbG93ZXJjYXNlIGludGVybmFsIHRhZ3MsIFhIVE1MIGlzIGxvd2VyY2FzZSwgc28gaXQgd2lsbCBoZWxwCi0JICB0aGF0IG91dHB1dCBpcyBjbG9zZXIgdG8gbmV4dCB2ZXJzaW9uLgotCSogZG9jLyogOiByZWdlbmVyYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiwgaXQgaXMgbm93IGhvc3RlZCBhdAotCSAgaHR0cDovL3htbHNvZnQub3JnLyAoc2FtZSBiaXRzIEkganVzdCBib3VnaHQgdGhlIGRvbWFpbiA6LSkKLQotRnJpIERlYyAgMyAxMzo0NjozMiBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIFNBWC5oLCBTQVguYywgbWFrZWZpbGUuYW06IGFkZGVkIFNBWC5oIG1vc3RseSB1c2VmdWwgZm9yIHRoZQotCSAgICAgICAgIGRvYyBnZW5lcmF0aW9uCi0JKiBwYXJzZXIuYzogZml4ZWQgYnVncyAjMzkwOCBhbmQgIzM5MzcgYW5kIGEgbWVtb3J5IGxlYWsKLQkgICAgICAgICBpbiB0aGUgU0FYIEFQSQotCSogZG9jLyo6IHJlYnVpbHQgdGhlIGRvYyBtYWtpbmcgc3VyZSBldmVyeXRoaW5nIGFwcGVhcnMgaW4gdGhlCi0JICAgICAgICAgSFRNTCBmaWxlcwotCi1XZWQgRGVjICAxIDEwOjI3OjQ3IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5bY2hdIEhUTUx0cmVlLmMsIGRlYnVnWE1MLmMsIGNvbmZpZ3VyZS5pbiwgeG1sLWNvbmZpZy5pbjoKLQkgICAgIGFkZGVkIHRoZSBwYXRjaCBmcm9tIENhcmwgTnlnYXJkIDxjbnlnYXJkQGJlbGxhdGxhbnRpYy5uZXQ+Ci0JICAgICB3aGljaCBhbGxvdyBpbXByZXNzaXZlIHNwZWVkIGltcHJvdmVtZW50IG9uIGRhdGFzZXQgd2l0aAotCSAgICAgbGFyZ2UgdGV4dCBwaWVjZXMsIGJ1dCBhdCB0aGUgY29zdCBvZiBicm9rZW4gYmluYXJ5Ci0JICAgICBjb21wYXRpYmlsaXR5IGFuZCBzbGlnaHRseSBiaWdnZXIgbWVtb3J5IHVzYWdlLgotCSAgICAgQ29uZmlndXJlIHdpdGggLS13aXRoLWJ1ZmZlcnMgdG8gYWN0aXZhdGUgdGhlbSwgdGhleQotCSAgICAgYXJlIHByb3RlY3RlZCB3aXRoIFhNTF9VU0VfQlVGRkVSX0NPTlRFTlQgZGVmaW5lLgotCSogZW50aXRpZXMuW2NoXSwgcGFyc2VyLmM6IGFkZGVkIHhtbENsZWFudXBQcmVkZWZpbmVkRW50aXRpZXMoKSwKLQkgICAgIGdvYWwgaXMgMCBtZW1vcnkgbGVmdCBhbGxvY2F0ZWQgb25jZSBwYXJzZXIgaXMgbm8gbW9yZSB1c2VkCi0JKiB0ZXN0REFWLmMsIHRlc3RIVE1MLmMsIHRlc3RTQVguYywgdGVzdFhQYXRoLmM6IG1ha2Ugc3VyZSB3ZQotCSAgICAgY2FsbCB4bWxDbGVhbnVwUGFyc2VyKCkgYW5kIHhtbE1lbW9yeUR1bXAoKQotCi1XZWQgTm92IDI0IDE5OjAwOjA2IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5bY2hdIHhtbElPLltjaF0gcGFyc2VyLmMgdmFsaWQuYzogY29kZSBjbGVhbnVwIHdpdGggLXBlZGFudGljCi0JKiBwYXJzZXIuW2NoXSBlbmNvZGluZy5bY2hdOiBhZGRlZCBtZW1vcnkgY2xlYW51cCByb3V0aW5lcwotCSogcGFyc2VyLmM6IGNsb3NpbmcgYnVnICMzNzg4Ci0JKiBkb2MvKjogcmVidWlsdCB0aGUgZG9jCi0KLVR1ZSBOb3YgMjMgMTE6MjM6NTUgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLltjaF06IGNsb3NpbmcgYnVnIDM3NDgsIGFkZGVkIHhtbE5ld0RvY1Jhd05vZGUoKSwgCi0JICAgICAgICAgICAgIHhtbE5ld1RleHRDaGlsZCgpIGFuZCB4bWxTZXRDb21wcmVzc01vZGUoKSBiZWhhdmlvdXIuCi0JKiB0ZXN0ZXIuYzogYWRkZWQgLS1jb21wcmVzcyBvcHRpb24KLQkqIGRvYy8qOiByZWJ1aWx0IHRoZSBkb2N1bWVudGF0aW9uCi0KLUZyaSBOb3YgMTkgMTg6NDE6MjggQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmM6IGJ1Z2ZpeGluZywgdGhlIGRhbW4gdGhpbmcgTVVTVCBub3QgY3Jhc2ggZXZlbgotCSAgICAgICAgICAgICAgICBpZiBnaXZlbiAvcHJvYy9rY29yZSBhcyBpbnB1dCAhCi0JKiBkb2MveG1sLmh0bWwgZG9jLyo6IHVwZGF0ZWQgYW5kIHJlYnVpbHQgdGhlIGRvY3VtZW50YXRpb24KLQotVGh1IE5vdiAxOCAxNDo1NzoxOCBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jOiBGaXhlZCBzb21lIHdyb25nbHkgc3BhY2UgY29sbGFwc2luZyBjb2RlIGR1ZSB0bwotCSAgICAgICAgICAgIGEgbWlzcmVhZGluZyBvZiB0aGUgc3BlYy4KLQkqIHJlc3VsdC8qOiBmaXhlZCB0aGUgb3V0cHV0IGFjY29yZGluZ2x5CSAgICAKLQotV2VkIE5vdiAxNyAxODoyODowNiBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGVuY29kaW5nLmM6IGJ1ZyBmaXggYW5kIHR5cG9zCi0JKiB4bWxJTy5bY2hdIHBhcnNlci5jOiBmaXJzdCBiaXRzIHRvd2FyZCByZWFsIHByb2dyZXNzaXZlIHBhcnNpbmcKLQkqIHBhcnNlci5jOiBhZGRlZCBhdHRyaWJ1dGUgbm9ybWFsaXphdGlvbiBjbG9zaW5nIGJ1ZyAjMzU5NwotCSogdGVzdC9hdHQqIHJlc3VsdC9hdHQqIFNBWHJlc3VsdC9hdHQqOiB0ZXN0Y2FzZSBmb3IgYXR0cmlidXRlCi0JICAgIG5vcm1hbGl6YXRpb24KLQotTW9uIE5vdiAxNSAxODo1MDo1NiBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogY2xvc2luZyBidWcgIzMxNjMgYnkgYWRkaW5nIGV4dHJhIGZsYWdzIGZvciB0aGUKLQkgICAgICAgICAgICAgICAgY2MgY29tcGlsZXIgb24gSFAtVVgKLQotRnJpIE5vdiAxMiAxNzo0MToyMCBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHZhbGlkLltjaF0gOiByZW1vdmVkIGEgdHlwbyBhbmQgYW4gZW51bWVyYXRlZCB0eXBlIGJ1ZyBpbiB0aGUKLQkgICAgICAgICAgICAgICB4bWxBZGRFbGVtZW50RGVjbCgpIGZ1bmN0aW9uCi0JKiB0cmVlLmMgOiBJIGNoYW5nZWQgeG1sU2V0UHJvcCgpIGFuZCB4bWxOZXdQcm9wKCkgdG8gZG8gdGhlCi0JICAgIGNhbGwgdG8geG1sRW5jb2RlRW50aXRpZXNSZWVudHJhbnQoKSBzbyB0aGF0IHRoZSBmdW5jdGlvbnMgCi0JICAgIE5ldywgU2V0IGFuZCBHZXQgYXJlIGF0IHRoZSBzYW1lIGxldmVsLgotCSogcGFyc2VyLmMgSFRNTHBhcnNlci5jOiBleHRyYSBtZW1vcnkgYWxsb2NhdGlvbiBidWcgZm9yCi0JICAgIGF0dHJpYnV0ZXMgZGV0ZWN0ZWQgYnkgc29tZW9uZSB1c2luZyBsaWJ4bWwgaW4gZW1iZWRkZWQgc3lzdGVtcyA6LSkKLQotVGh1IE9jdCAyOCAxNzo0OToyNiBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxtZW1vcnkuaDogdHVybmVkIG9mZiBtZW0gZGVidWcgOi1cCi0KLU1vbiBPY3QgMjUgMTI6MTM6MjUgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmM6IGNsb3NlZCBidWcgIzI3ODQgYSBvbmUgbGluZSBmaXgsIGJ1dCB3b3J0aCBwdXNoaW5nCi0JICAgICAgICAgICAgYSBuZXcgcmVsZWFzZSBvdXQKLQkqIEhUTUxwYXJzZXIuYzogZml4ZWQgYXV0by1jbG9zZSBidWdzIG9uIGxpc3QgaXRlbXMsIHplcm9pbmcKLQkgICAgICAgICAgICBzb21lIHN0cnVjdHVyZXMsIGNvbW1lbnRzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCi0JCSAgICBtYWluIGVsZW1lbnQsIGFuZCBvdGhlciBuYXN0eW5lc3MKLQkqIEhUTUx0cmVlLmMgdHJlZS5jOiBhY2NvbW9kYXRlIHRoZSBleHRlbmRlZCBIVE1MIHN1cHBvcnRlZAkgICAgCi0JKiBjb25maWd1cmUuaW46IHB1c2hpbmcgMS43LjQKLQkqIHRlc3QvZW50OCBhbmQgcmVsYXRlZCBvdXRwdXRzIDogYWRkZWQgYSBuZXcgdGVzdCBmb3IgYnVnICMyNzg0Ci0JKiB0ZXN0L0hUTUwvd2lyZWQuaHRtbCBhbmQgcmVsYXRlZCBvdXRwdXQ6IGEgbmFzdHkgSFRNTCBleGFtcGxlCi0JKiBNYWtlZmlsZS5hbTogaW1wcm92ZWQgdGhlIHRlc3Qgc2NyaXB0cwotCSogZG9jcy8qIDogcmVyYW4gdGhlIGRvY3VtZW50YXRpb24gZXh0cmFjdG9yLCB1cGRhdGVkIHhtbC5odG1sCi0KLVRodSBPY3QgMTQgMTA6Mjk6NTYgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jLCBIVE1MdHJlZS5jLCB0cmVlLmg6IGNvbXBsZXRlbHkgcmV2YW1wZWQgdGhlCi0JICAgICBIVE1McGFyc2VyIGFuZCBkZWJ1Z2dlZCB0aGUgSFRNTCByZWxhdGVkIGNvZGUuIEhUTUwgZG9jdW1lbnRzCi0JICAgICBub3cgaGF2ZSB0aGVpciBvd24gdHlwZQotCSogZW50aXRpZXMuYzogZG8gbm90IGR1bXAgJmFwb3M7IGZvciBIVE1MIG91dHB1dAotCSogeG1sbWVtb3J5LmM6IGltcHJvdmVtZW50LCBicmVha3BvaW50IG1lY2hhbmlzbQotCSogdGVzdEhUTUwuYzogYWRkZWQgLS1zYXggLS1yZXBlYXQgLi4uCi0JKiBNYWtlZmlsZS5hbTogaW1wcm92ZWQgdGhlIEhUTUwgdGVzdHMKLQkqIHZhbGlkLltjaF06IGFkZGVkIHhtbFZhbGlkR2V0VmFsaWRFbGVtZW50cyBhbmQKLQkgICAgICAgICAgICAgIHhtbFZhbGlkR2V0UG90ZW50aWFsQ2hpbGRyZW4KLQkqIHRlc3Rlci5jOiBhZGRlZCAtLWluc2VydCB0byB0ZXN0IHRoZSAyIG5ldyBmdW5jdGlvbnMKLQkqIHRlc3QvLyogcmVzdWx0Ly8qIFNBWHJlc3VsdC8vKiA6IHJlZ3Jlc3Npb24gdGVzdCBjbGVhbnVwCi0JICAgICAgICAgICAgICAgYW5kIGV4dGVuc2lvbi4KLQkqIGRvYy9odG1sIDogYWRkZWQgZG9jIGZvciBuZXcgbW9kdWxlcyBnbm9tZS14bWwteG1sbWVtb3J5Lmh0bWwgYW5kCi0JICAgICAgICAgICAgIGdub21lLXhtbC1uYW5vaHR0cC5odG1sCi0KLU1vbiBPY3QgMTEgMTQ6MzE6NTggQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jOiBmaXhlZCBwcm9ibGVtcyB3aXRoIHNvbWUgYXV0b2Nsb3NlIHRhZ3MKLQkqIHRyZWUuYzogZml4ZWQgWE1MIG91dHB1dCBwcm9ibGVtcy4gCi0JKiByZXN1bHQvKiBTQVhyZXN1bHQvKjogdXBkYXRlIG9mIHRoZSB0ZXN0cyBvdXRwdXQKLQotU2F0IE9jdCAgOSAxMTowMjo1NyBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBNYWtlZmlsZS5hbTogQXJ0dXJvIHBhdGNoIGZvciB4bWxDb25mLnNoIHZlcnNpb24gaW5mbwotCSogcGFyc2VyLmM6IFRpbSBKb3NsaW5nIHBhdGNoIGZvciBzaW5nbGUgcXVvdGVkIGl0ZW1zCi0JKiB0ZXN0ZXIuYzogVGltIEpvc2xpbmcgcGF0Y2ggZm9yIHRlc3RlciBvcHRpb25zIHVzYWdlCi0JKiB0cmVlLmg6IGluZGVudCBjbGVhbnVwCi0KLUZyaSBPY3QgIDggMTY6MzU6MzcgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jIHBhcnNlci5oIDogRml4ZWQgcHJvYmxlbXMgd2l0aCBIVE1MIHBhcnNpbmcKLQkgICAgcmVwb3J0ZWQgYnkgS3Jpc3RpYW4gSG9nc2JlcmcgS3Jpc3RlbnNlbiA8aG9nc2JlcmdAZGFpbWkuYXUuZGs+Ci0KLUZyaSBPY3QgIDggMTE6Mzc6MTEgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jIDogUmFwaCBwYXRjaCBmb3IgaW5pdGlhbGl6YXRpb24gb2YgQ09SQkEgZmllbGRzCi0JKiBwYXJzZXIuYywgeHBhdGguYywgLi4uOiBtb2RpZmljYXRpb24gb2YgZG9jIGNvbW1lbnRzCi0JKiB4cGF0aC5jIDogYWxsb3cgc3BhY2VzIGluIHhwYXRoIGV4cHJlc3Npb25zCi0KLU1vbiBTZXAgMjcgMTA6MTY6NDMgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeG1sbWVtb3J5Lmg6IHR1cm5pbmcgb2ZmIG1lbW9yeSBkZWJ1ZyA6LSgKLQotU3VuIFNlcCAyNiAxMzoxNjo1NCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuW2NoXSA6IGFkZGVkIHhtbFNBWFVzZXJQYXJzZUZpbGUoKSBhbmQgeG1sU0FYVXNlclBhcnNlTWVtb3J5KCkKLQkgICAgICAgICAgICAgICAgYmV0dGVyIFNBWCBpbnRlcmZhY2VzLgotCSogdGVzdFNBWC5jOiB1c2VzIHRoZSBuZXcgU0FYIHJvdXRpbmUsIGF2b2lkIGZldGNoaW5nIGFueSByZW1vdGUKLQkgICAgICAgICAgICAgZW50aXR5LgotCSogY29uZmlndXJlLmluOiAxLjcuMgotCi1GcmkgU2VwIDI0IDE2OjAxOjAxIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGxpYnhtbC5zcGVjLmluOiBmaXhlZCB0aGUgVVJMCi0JKiBkb2MveG1sLmh0bWw6IGltcHJvdmVkIHRoZSBkb2N1bWVudGF0aW9uIGZyb250LWVuZAotCi1GcmkgU2VwIDI0IDAxOjA2OjM2IENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIG5hbm9odHRwLmM6IGNvbmRpdGlvbm5lZCByZWZlcmVuY2VzIHRvIHNucHJpbnRmIHdpdGggSEFWRV9TTlBSSU5URgotCi1GcmkgU2VwIDI0IDAwOjE1OjU4IENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGxpYnhtbC5zcGVjLmluOiBmaXhlZCB0aGUgYWxwaGEgY29tcGlsZSBwcm9ibGVtCi0JKiBwYXJzZXIuW2NoXTogY2hhbmdlZCBlcnJubyB0byBlcnJObyBpbiB0aGUgcGFyc2VyIGNvbnRleHQgOi0oCi0JKiAqLltjaF06IGNoYW5nZWQgQ0hBUiB0byB4bWxDaGFyIHRvIGF2b2lkIHByb2JsZW0gb24gV0lOMzIKLQkqIGRvYy94bWwuaHRtbDogY2hhbmdlZCBDSEFSIHRvIHhtbENoYXIKLQkqIGRvYy9odG1sLyo6IHJlY29tcGlsZWQgdGhlIGRvY3VtZW50YXRpb24KLQkqIGNvbmZpZ3VyZS5pbjogMS43LjEKLQotV2VkIFNlcCAyMiAxMTo0MDozMSBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuaDogbW9kaWZpZWQgdGhlIHBhcnNlciBjb250ZXh0IHN0cnVjdCB0byByZWdhaW4gMS40LjAKLQkgICAgICAgICAgICBiaW5hcnkgY29tcGF0aWJpbGl0eQotCSogcGFyc2VyLmMsIHhtbC1lcnJvci5oOiBhZGRlZCBlcnJubyBvdCB0ZWggY29udGV4dCBhbmQgZGVmaW5lZAotCSAgICAgICAgICAgIGEgc2V0IG9mIGVycm9ycyB2YWx1ZXMgd2l0aCB1cGRhdGUgb2YgZXJybm8KLQkqIG5hbm9odHRwLltjaF06IG1pbmltYWxpc3QgSFRUUCBmcm9udC1lbmQgZm9yIGZldGNoaW5nIHJlbW90ZQotCSAgICAgICAgICAgIERURHMgYW5kIGVudGl0aWVzCi0JKiAqLmgsICouYzogY29tcGxldGUgY2xlYW51cCBvZiB0aGUgdXNlIG9mIGNvbmZpZy5oIGFuZCBpbmNsdWRlCi0JICAgICAgICAgICAgcHJvdGVjdGlvbiBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgc2V0dXAuCi0JKiBvdmVyYWxsbCBkZWJ1Z2dpbmcsIG1haW50ZW5hbmNlIGFuZCBidWctZml4aW5nIG9uIGFsbCBtb2R1bGVzCi0JKiB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uCi0JKiByZWFkeSBmb3IgMS43LjAKLQotV2VkIFNlcCAgOCAyMjo0NjoxNCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmMgOiBjbGVhbnVwCi0JKiBTQVguYyB2YWxpZC5jIHZhbGlkLmg6IGFkZGVkIElEL0lEUkVGIGNoZWNraW5nCi0JKiB0cmVlLmMgdHJlZS5oOiBleHRlbmRlZCBkb2Mgc3RydWN0dXJlIGZvciByZWZzCi0JKiBjb25maWd1cmUuaW46IDEuNi4yCi0JKiBwYXJzZXIuYzogcGF0Y2hlZCBidWcgaW4gU0FYIHVzZXIgYXJnIGNhbGwKLQkqIHBhcnNlckludGVybmFscy5oOiBwYXRjaGVkIG1pc3NpbmcgY2xvc2UgaW4gQysrIHdyYXBwaW5nCi0JKiB0ZXN0WFBhdGguYyB4cGF0aC5jIHhwYXRoLmg6IHByZXBhcmVkIGZvciBleHRlbnNpYmlsaXR5LAotCSAgZXNwZWNpYWxseSB1cGNvbWluZyBYUG9pbnRlciBpbXBsZW1lbnRhdGlvbi4KLQkqIGRvYy94bWwuaHRtbDogYXVnbWVudGVkLCB0eXBvCi0KLVNhdCBTZXAgIDQgMjI6NDg6MDUgQ0VTVCAxOTk5IFRpbXVyIEJha2V5ZXYgPG1jQGJhdC5ydT4KLQotCSogZG9jL01ha2VmaWxlLmFtOiByZXBsYWNlZCAiaW5zdGFsbCAtZCAiIHdpdGggIm1raW5zdGFsbGRpcnMiIC0KLQlub3QgYWxsIGludm9jYXRpb25zIG9mIGluc3RhbGwgdW5kZXJzdGFuZCAtZC4KLQotU2F0IFNlcCAgNCAyMjoyMDowNyBDRVNUIDE5OTkgVGltdXIgQmFrZXlldiA8bWNAYmF0LnJ1PgotCi0JKiBNYWtlZmlsZS5hbTogcHJlcGVuZCBhbGwgdGhlIHRlc3QqIGNhbGxzIHdpdGggJCh0b3BfYnVpbGRkaXIpIC0KLQl0byBtYWtlICdjaGVjaycgd29ya3MsIHdoZW4gYnVpbGRkaXIgIT0gc3JjZGlyLgotCi1TYXQgU2VwICA0IDIwOjI1OjQ2IENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRvYy94bWwuaHRtbCA6IHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24KLQotRnJpIFNlcCAgMyAwMDowMTowOCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxtZW1vcnkuW2NoXSBNYWtlZmlsZS5hbSAgOmFkZGVkIGEgbWVtb3J5IHdyYXBwZXIgdG8gY2hhc2UKLQkgICAgICBub3QgZGVhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrcwotCSogKi5jIDogcmVwbGFjZXMgYWxsIGNhbGxzIHRvIG1hbGxvYygpIGZyZWUoKSBhbmQgcmVhbGxvYygpIHRvCi0JICAgICAgdGhlIHdyYXBwZXIgZnVuY3Rpb25zL21hY3JvcwotCSogdHJlZS5jIDogcmVtb3ZlZCBtZW1vcnkgbGVha3MgZHVlcyB0byBjYWxsaW5nIHhtbEZyZWVOb2RlKCkKLQkgICAgICBpbnN0ZWFkIG9mIHhtbEZyZWVOb2RlTGlzdCgpCi0KLVdlZCBTZXAgIDEgMTQ6MTU6MDkgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogSFRNTHBhcnNlci5jOiBjb3JyZWN0ZWQgYSBzdHVwaWQgYnVnIGxlYWRpbmcgdG8gY29yZSBkdW1wIGF0Ci0JICAgICAgICAgICAgICAgIHRyZWUgZGVhbGxvY2F0aW9uLiBSZW1vdmVkIHdhcm5pbmdzIGluZGljYXRlZCBieQotCQkJU3RlcGhhbmUuQ29udmVyc3lAbHJpLmZyCi0JKiBlbnRpdGllcy5jOiBGaXhlcyBZZXQgQW5vdGhlciBTdHVwaWQgQnVnLCBlbnRpdGllcyB3ZXJlIG5vdAotCSAgICAgICAgICAgICAgbG9va2VkIGZvciBpbiB0aGUgZXh0ZXJuYWwgc3Vic2V0Ci0KLU1vbiBBdWcgMzAgMTM6MjI6MjYgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMgdmFsaWQuW2NoXSB4cGF0aC5jOiBwYXRjaGVkIGNvbXBpbGF0aW9uIHdhcm5pbmdzIHJlcG9ydGVkCi0JICBvbiBTR0kgYnkgU3RlcGhhbmUuQ29udmVyc3lAbHJpLmZyCi0KLVN1biBBdWcgMjkgMjI6Mjc6MjkgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogYWxsIC5oIDogY2hhbmdlZCB0aGUgcHJvdG90eXBlIGRlY2xhcmF0aW9uIGluZGVudCBhcyBpbiBndGsKLQkqIG1vc3QgLmMgOiB3b3JraW5nIG9uIHJlZHVjaW5nIHRoZSBUT0RPcyBpbiB0aGUgY29kZQotCSogbW9zdCAuYyA6IGNsZWFudXAgdGhvdWdoIC1wZWRhbnRpYyBhbmQgSW5zdXJlKysKLQkqIGltcHJvdmVtZW50cyBvbiB2YWxpZGF0aW9uIElEIGNoZWNraW5ncy4KLQkqIHRyZWUuW2NoXSBTQVguYzogYWRkZWQgc3VwcG9ydCBmb3IgbmFtZXNwYWNlIG9uIGF0dHJpYnV0ZXMgIzIwMjIKLQkqIHhtbC1jb25maWcuaW46IGNsb3NlZCAjMTgxMAotCi1Nb24gQXVnIDE2IDAzOjI3OjM4IENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuaCwgdmFsaWQuYywgdmFsaWQuaDogbW9yZSB3b3JrIG9uIHZhbGlkaXR5LCBJRHMKLQkqIHhwYXRoLmM6IGFkZGVkL2ZpeGVkIGNvbXBhcmlkb24gYW5kIGVxdWxpdHksIGFkZGVkIGEgbmV3IGlzaW5mCi0JICBkZWZpbml0aW9uIGZvciBBSVgKLQotU3VuIEF1ZyAxNSAyMToxNToxNyBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBNYWtlZmlsZS5hbSBsaWJ4bWwuc3BlYy5pbjogY29ycmVjdGVkIG1pc3NpbmcgeG1sQ29uZi5zaCBpbgotCSAgdGhlIGRpc3RyaWJ1dGlvbiBkdWUgdG8gYSBjdXQnbiBwYXN0ZSBlcnJvciBhdCBsYXN0IGNvbW1pdAotCi1UdWUgQXVnIDEwIDIwOjI4OjA5IENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGNvbmZpZ3VyZS5pbjogdXBncmFkZWQgdG8gdmVyc2lvbiAxLjQuMAotCSogdmFsaWQuW2NoXSwgU0FYLmMsIHBhcnNlci5bY2hdIHBhcnNlckludGVybmFscy5oIC4uLgotCSAgQmlnIHVwZGF0ZSwgYWRkZWQgYSBsYXJnZSBwYXJ0IG9mIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MsCi0JICBpdCBzaG91bGQgYmUgdXNhYmxlLCBidXQgc29tZSBwYXJ0cyBhcmUgbWlzc2luZwotCSogeHBhdGguYzogaW1wcm92ZWQgdGhlIGltcGxlbWVudGF0aW9uIHcuci50LiByb290LgotCSogTWFrZWZpbGUuYW06IGFkZGVkIG1vcmUgdGVzdHMKLQkqIHRlc3QgYW5kIHJlc3VsdCB0cmVlczogYWRkZWQgYSBsb3Qgb2YgdGVzdHMKLQkqIGxpYnhtbC5zcGVjLmluOiBleHBvcnQgbGlieG1sLnNvLjAgYW5kIGxpYnhtbC5zby4xCi0KLVR1ZSBBdWcgMTAgMTE6MzM6NDEgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogQWRkZWQgYW4gSEFDS0lORyBmaWxlCi0KLVR1ZSBKdWwgMjcgMjE6NDM6MDAgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogeHBhdGguW2NoXSA6IGltcHJvdmVtZW50cyBhbmQgZGVidWcgb2YgdGhlIFhQYXRoIGltcGxlbWVudGF0aW9uCi0JKiBwYXJzZXIuYywgSFRNTHBhcnNlci5jIDogbW9kaWZpZWQgdGhlIHBhcnNlcnMgdG8gYmUgcHJvZ3Jlc3NpdmUKLQkqIHRyZWUuW2NoXSA6IGV4dGVuZGVkIHRoZSBCdWZmZXIgcHJvbWl0aXZlcwotCSogeG1sSU8uW2NoXSA6IGFkZGVkIGJhc2ljIEkvTyByb3V0aW5lcyBwcm92aWRpbmcgcHJvZ3Jlc3NpdmUKLQkgIHBhcnNpbmcgYW5kIHJlYWR5IGZvciBJMThOIGNvbnZlcnNpb24gcGx1Z2lucwotCSogU0FYcmVzdWx0LyogOiB0aGUgU0FYIGNhbGxiYWNrIHNlcXVlbmNlIG1heWJlIHNsaWdodGx5IGRpZmZlcmVudAotCSAgbm93Ci0JKiB0ZXN0Ki5jIDogaW1wcm92ZWQvdXBkYXRlZCB0aGUgdGVzdHMgcHJvZ3JhbXMKLQkqIGRvYy8qIDogcmVjb21waWxlZCB0aGUgZG9jcy4KLQotMTk5OS0wNy0yNiAgTWljaGFlbCBNZWVrcyAgPG1pY2hhZWxAZWRlbnByb2plY3Qub3JnPgotCi0JKiB0cmVlLmg6IEFkZCBjb25zdCB0byAnY29udGVudCcgaW4geG1sTmV3RG9jTm9kZSwgeG1sTmV3Q2hpbGQKLQotCSogdHJlZS5jOiBEaXR0by4KLQotVGh1IEp1bCAxNSAxNjoxNzoxNiBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW46IHVwZ3JhZGVkIHRvIHZlcnNpb24gMS40LjAKLQkqIHhwYXRoLmMsIHhwYXRoLmgsIHRlc3RYUGF0aC5jLCBtYWtlZmlsZS5hbTogYWRkZWQgY29kZSBmb3IgdGhlIFhQYXRoCi0JICBkcmFmdCBmcm9tIFczQy4gV2lsbCBiZSB1c2VkIGJ5IFhQb2ludGVyLCBYbGluaywgWFNMLCBhbmQgcG9zc2libHkKLQkgIFhNTCBxdWVyeSBsYW5ndWFnZSwgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL3hwYXRoIGZvciBtb3JlIGRldGFpbHMuCi0JKiBwYXJzZXIuYywgcGFyc2VyLmg6IGFkZGVkIENIQVIqIHJlbGF0ZWQgc3RyaW5nIGZ1bmN0aW9ucyBmb3IgWFBhdGgKLQkqIEhUTUxwYXJzZXIuW2NoXSwgSFRNTHRyZWUuYzogYSBiaXQgb2YgY2xlYW51cCBvbiBlbnRpdGllcy4KLQkqIGRvYy9nbm9tZS14bWwuc2dtbCwgZG9jL2h0bWwvKiA6IGFkZGVkIFhQYXRoIGFuZCBIVE1MIGRvY3VtZW50YXRpb24sCi0JICByZWJ1aWxkIHRoZSBkb2NzLgotCSogTWFrZWZpbGUuYW0sIHRlc3QvWFBhdGgvKiwgcmVzdWx0L1hQYXRoLyo6IGFkZGVkIGFuIFhQYXRodGVzdHMgdGFyZ2V0Ci0JICBhbmQgcmVncmVzc2lvbiB0ZXN0aW5nIGNhcGFiaWxpdGllcyBmb3IgWFBhdGguCi0KLU1vbiBKdWwgMTIgMTI6MzY6MzkgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMsIEhUTUxwYXJzZXIuYzogYXBwbGllZCBwYXRjaCBmcm9tIEpvaG4gRWxsc29uIDxlbGxzb25AbHVjZW50LmNvbT4KLQkgIGNsb3NpbmcgYnVnICMxNjQ2Ci0KLU1vbiBKdWwgMTIgMTE6MDQ6NDQgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogTWFrZWZpbGUuYW0sIGV4YW1wbGUvTWFrZWZpbGUuYW06IGNsb3NlZCBidWcgIzE2ODMKLQotU3VuIEp1bCAxMSAxODoxNjozNCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBleGFtcGxlL01ha2VmaWxlLmFtLCBjb25maWd1cmUuaW46IGFkZGVkIHRoZSBtYWtlZmlsZSBmb3IgdGhlCi0JICBnam9icmVhZCBleGFtcGxlCi0KLVNhdCBKdWwgMTAgMTQ6MTk6MTEgQ0VTVCAxOTk5IFRvbWFzeiBLs29jemtvICA8a2xvY3pla0BwbGQub3JnLnBsPgotCi0JKiBkb2MvTWFrZWZpbGUuYW06Ci0JLSBmaXggd2hpY2ggYWxsb3cgIm1ha2UgaW5zdGFsbCBERVNURElSPTwvaW5zdGFsbC9wcmVmaXg+Ii4KLQotRnJpIEp1bCAgOSAxMjoxMDoyNCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBIVE1McGFyc2VyLmMgcGFyc2VyLmM6IGFwcGxpZWQgcGF0Y2ggZnJvbSBKb2huIEVsbHNvbiA8ZWxsc29uQGx1Y2VudC5jb20+Ci0JICB3aGljaCBmaXhlZCBhIHByb2JsZW0gb24gdGhlIGZpbGUgcmVhZGluZy1jb2RlLgotCi1XZWQgSnVsICA3IDA5OjI4OjQzIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIEhUTUxwYXJzZXIuW2NoXSwgSFRNTHRyZWUuW2NoXTogbW9yZSB3b3JrIGZvciBIVE1MIHBhcnNpbmcgYW5kCi0JICBvdXRwdXQuCi0JKiBNYWtlZmlsZS5hbSwgdGVzdC9IVE1MLyosIHJlc3VsdC9IVE1MLyo6IGFkZGVkIEhUTUx0ZXN0cyB0YXJnZXRlc3RIVE1MdAotCi1XZWQgSnVsICA3IDAwOjI1OjQyIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5oIDogT29wcyByZW1vdmVkIHRoZSBiaW5hcnkgY29tcGF0aWJpbGl0eSBwcm9ibGVtCi0JKiBIVE1McGFyc2VyLltjaF0sIEhUTUx0cmVlLmggOiBNb3JlIHdvcmsgb24gdGhlIEhUTUwgcGFyc2UvZHVtcAotCSogcGFyc2VyLmMsIEhUTUxwYXJzZXIuYzogYXBwbGllZCBwYXRjaGVzIGZvciByZWFkaW5nIGZyb20gc3RkaW4KLQotTW9uIEp1bCAgNSAxODo0NTozMSBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYywgZW50aXRpZXMuYywgdmFsaWQuYzogY2xlYW51cCBidWcgIzE1OTEKLQkqIGNvbmZpZ3VyZS5pbjogY2xlYW51cCBidWcgIzE1OTIKLQkqIEhUTUxwYXJzZXIuW2NoXSwgdGVzdEhUTUwuYzogc3RhcnRlZCBhZGRpbmcgYW4gSFRNTCBwYXJzZXIgdXNpbmcKLQkgIHRoZSBzYW1lIHRyZWUgYmFjay1lbmQuIEhlbmNlIGdkb21lIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBpdC4KLQkqIGRvYy9NYWtlZmlsZS5hbTogY2xvc2UgYnVnICM2MTcKLQotU2F0IEp1biAyNiAyMzozNjozOCBFRFQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jOiBhbGxvY3RhdGUgYSBwZXIgcGFyc2VyIGNvbnRleHQgU0FYIGludGVyZmFjZSBibG9jawotCi1UdWUgSnVuIDIyIDIzOjQ2OjMyIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHJlbGVhc2VkIDEuMy4wIHdpdGggeG1sRW5jb2RlRW50aXRpZXMgcmVzdG9yaW5nIG9sZCBiZWhhdmlvdXIKLQkgIGFuZCB4bWxFbmNvZGVFbnRpdGllc1JlZW50cmFudCB3aXRoIHRoZSBjb3JyZWN0IG9uZSA6LVwKLQotTW9uIEp1biAyMSAxNDowNzo1MyBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb21taXQgb2YgbXkgaW50ZXJuYWwgWE1MIGJhc2UgY2hhbmdlcywgcXVpdGUgYSBsb3Qgb2YKLQkgIGNoYW5nZXMsIGNsZWFudXBzLCBiZXR0ZXIgZW50aXRpZXMgc3VwcG9ydCwgZnJhbWV3b3JrIGZvcgotCSAgbmV3IEkvTyBhbmQgY2hhcnNldCBkZXRlY3Rpb24gYW5kIGhhbmRsaW5nCi0JKiBGaXhlZCB0aGUgY29uZmlndXJlL01ha2VmaWxlIHN0dWZmIHRvIGdlbmVyYXRlIHNoYXJlZCBsaWJzCi0JICB3aXRoIHRoZSBwcm9wZXIgdmVyc2lvbiBpbmZvLCBzbyB3ZSBqdW1wZWQgb24gcmV2IGZyb20KLQkgIDAuMC4wIHRvIDEuMi4wICEgVGhlIGJpbmFyeSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBicm9rZW4sCi0JICB4bWxFbmNvZGVFbnRpdGllcygpIHJlc3VsdCBuZWVkIHRvIGJlIGZyZWVkIG5vdywgYW5kIGEgc3RyaW5nCi0JICB4bWxQYXJzZXJWZXJzaW9uIHByb3ZpZGUgdGhlIGN1cnJlbnQgbGlicmFyeSB2ZXJzaW9uLgotCi1UdWUgSnVuIDE1IDE0OjI0OjE5IDE5OTkgIFJhcGggTGV2aWVuICA8cmFwaEBhY20ub3JnPgotCi0JKiBwYXJzZXIuYzogZml4ZWQgYSBidWZmZXIgb3ZlcnJ1biBmb3Igd2hlbiB5b3UgaGF2ZSBhIHZlcnkgbG9uZwotCWF0dHJpYnV0ZSB3aXRoIG5vIGVudGl0aWVzIGluIGl0LgotCi1Nb24gSnVuIDE0IDAwOjE3OjUwIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGFkZGVkIGV4YW1wbGUgZGlyZWN0b3J5Ci0JKiBhZGRlZCBleGFtcGxlL2dqb2JzLnhtbCBnam9icmVhZC5jLCBzdGlsbCBuZWVkIGEgTWFrZWZpbGUuaW4KLQotV2VkIEp1biAgMiAxOTo0MDo1OCBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBSZWxlYXNlIG9mIGxpYnhtbC0xLjEsIG5lYXJseSBldmVyeXRoaW5nIGhhcyBiZWVuIHRvdWNoZWQgZm9yCi0JICB0aGlzLgotCSogQWRkZWQgbW9yZSByZWdyZXNzaW9uIHRlc3RzCi0JKiBVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uCi0KLVNhdCBNYXkgMjkgMTM6MzQ6NDIgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5bY2hdOiB1bmlmaWVkIHRoZSBYTUxfTk9fQ09SQkEgZGVmaW5lcy4KLQkqIHBhcnNlci5jIGVuY29kaW5nLltjaF06IHN0YXJ0ZWQgcGx1Z2dpbmcgaW4gY2hhciBlbmNvZGluZyBkZXRlY3Rpb24KLQotRnJpIE1heSAyOCAyMjo1ODo0MiBFRFQgMTk5OSBNYW5pc2ggVmFjaGhhcmFqYW5pIDxtdmFjaGhhckB2Z2VyLnJ1dGdlcnMuZWR1PgotCi0JKiB0cmVlLmM6ICh4bWxTYXZlRmlsZSkgLSByZW1vdmVkIGRvdWJsZSBjYWxsIG9mIHhtbENvbnRlbnREdW1wLiAgCi0JICBBbHNvIGZyZWVkIGFsbG9jYXRlZCBidWZmZXIuCi0KLVdlZCBBcHIgMjEgMjI6MDc6MzUgQ0VTVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQkqIHBhcnNlci5bY2hdIHRyZWUuW2NoXSBlbnRpdGllcy5bY2hdIHZhbGlkLltjaF0gOiByZW1vdmVkIHRoZSBtYWluCi0JICByZWVudHJhbmN5IHByb2JsZW0gYXQgcHJpbnRpbmcuIE9uZSBpcyBsZWZ0IGluIGVudGl0aWVzLmMsIHRvCi0JICByZW1vdmUgQVNBUAotCSogdGVzdFNBWC5jIDogYWRkZWQgYSB0ZXN0IGV4YW1wbGUgc2hvd2luZyB0aGUgdXNlIG9mIHRoZSBTQVggCi0JICBpbnRlcmZhY2UgaWYgb25lIGRvZXNuJ3Qgd2FudCB0byBidWlsZCB0aGUgRE9NIHRyZWUuCi0JKiBodG1sL2dub21lLXhtbC0qLmh0bWwgaHRtbC9pbmRleC5zZ21sOiByZWdlbmVyYXRlZCB0aGUgZG9jdW1lbnRhdGlvbgotCi1Nb24gQXByICA1IDE0OjE0OjQwIENFU1QgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5bY2hdIHRyZWUuW2NoXSBTQVguYywgcGFyc2VySW50ZXJuYWxzLmggdmFsaWQuW2NoXToKLQkgIGxhcmdlIHJldmFtcGluZyBvZiB0aGUgcGFyc2VyIHRvIHVzZSBTQVggY2FsbGJhY2tzCi0JICBodHRwOi8vd3d3Lm1lZ2dpbnNvbi5jb20vU0FYLyAob3IgYXQgbGVhc3QgYSBDIGxpa2UgaW50ZXJmYWNlCi0JICBhIGxhIEV4cGF0KS4gSXQncyBub3cgcG9zc2libGUgdG8gc2V0IHVwIHlvdXIgb3duIGNhbGxiYWNrcwotCSAgYW5kIHRoZSBwYXJzZXIgd2lsbCBub3QgYnVpbGQgYSBET00gdHJlZS4KLQkqIHRlc3QvKiByZXN1bHQvKjogdXBkYXRlZCB0aGUgdGVzdCBzdWl0ZSwgSSBmaW5hbGx5IHJlbW92ZWQKLQkgIHRoZSBvbGQgTmFtZXNwYWNlIGRyYWZ0IHN1cHBvcnQgKFBJIGJhc2VkKS4KLQotRnJpIEFwciAgMiAxNzo1NzozMiBDRVNUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBNYWtlZmlsZS5hbTogYWRkZWQgdGVzdCByZXN1bHQgdG8gRVhUUkFfRElTVCBmb3IgbWFrZSB0ZXN0cwotCi1XZWQgTWFyIDI0IDIxOjM3OjAyIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogcGFyc2VyLmMsIHBhcnNlckludGVybmFscy5oOiBtb3ZlZCB0aGUgY2hhcnMgbWFjcm8gZGVmaW5pdGlvbnMKLQkgIHRvIHBhcnNlckludGVybmFscy5oCi0JKiBwYXJzZXIuYywgZXJyb3IuYzogYXBwbGllZCBwYXRjaGVzIGZyb20gIktudXQgxWtlc3NvbiIKLQkgIDxrYUBzMi5jaGFsbWVycy5zZT4gZm9yIGNsZWFuIGNvbXBpbGF0aW9uIHVuZGVyIE1TVkMgNiA6LW8KLQotVHVlIE1hciAyMyAxMToxMDoxNSBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHhtbC1jb25maWcuaW4gOiBhcHBsaWVkIHBhdGNoIHRvIG1ha2UgLS12ZXJzaW9uIHdvcmsKLQotMTk5OS0wMy0wNSAgUmFqYSBSIEhhcmluYXRoICA8aGFyaW5hdGhAY3MudW1uLmVkdT4KLQotCSogTWFrZWZpbGUuYW0gKGNoZWNrLWxvY2FsKTogQWxpYXMgZm9yIGB0ZXN0cycgdGFyZ2V0LiAgVGhpcyB3aWxsCi0JY2F1c2UgYG1ha2UgY2hlY2snIHRvIGRvIHRoZSByaWdodCB0aGluZy4KLQkodGVzdHMpOiBEb24ndCBydW4gdGVzdHMgaW4gc3JjZGlyLiAgQWxzbywgcmVwbGFjZWQgY2FsbHMgdG8KLQliYXNlbmFtZSB3aXRoIGEgYHNlZCcgImVxdWl2YWxlbnQiLgotCi1GcmkgTWFyICA1IDA3OjIzOjUzIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogUmVuYW1lZCBlcnJvci5oIHRvIHhtbC1lcnJvci5oLCBjb3JyZWN0ZWQgTWFrZWZpbGUuYW0gdG8gbGlzdAotCSAgaXQgaW4gdGhlIGhlYWRlciBhbmQgbm90IHRoZSBzb3VyY2VzLCB1cGRhdGVkIHRoZSBkb2MuCi0JICBUaGFua3MgdG8gVGltIE1vb25leSA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5ub2Rhay5lZHU+IGZvcgotCSAgcG9pbnRpbmcgdGhpcyBvdXQuCi0KLU1vbiBNYXIgIDEgMTM6Mjc6MTcgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYywgcGFyc2VyLmgsIHBhcnNlckludGVybmFscy5oOiBtZW1vcnkgbGVhayBodW50aW5nLAotCSAgZXhwb3J0ZWQgdGhlIGlucHV0U3RyZWFtIHJvdXRpbmVzLgotCSogZG9jL2h0bWwvKiA6IHVwZGF0ZWQgYWNjb3JkaW5nbHkKLQotU3VuIEZlYiAyOCAyMjo1MTozMyBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jLCBwYXJzZXIuaCwgcGFyc2VySW50ZXJuYWxzLmg6IGFkZGVkIGEgZmV3IGV4dHJhCi0JICBpbnRlcm5hbCBjYWxscyB0byBhbGxvY2F0ZSBhbmQgZnJlZSBwYXJzZXIgY29udGV4dHMgLi4uCi0JKiBkb2MvaHRtbC8qIDogdXBkYXRlZCBhY2NvcmRpbmdseQotCi1UaHUgRmViIDI1IDExOjUyOjI0IENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogY29uZmlndXJlLmluLCBNYWtlZmlsZS5hbSwgZG9jL21ha2VmaWxlLmFtIDogR2VuZXJhbCBjaGFuZ2VzIGZvcgotCSAgMS4wLjAgcmVsZWFzZSBhbmQgaW5jbHVkaW5nIHRoZSBnZW5lcmF0ZWQgSFRNTCBkb2N1bWVudGF0aW9uLgotCi1UaHUgRmViIDI1IDA5OjQ0OjUyIENFVCAxOTk5IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogbWFrZWZpbGUuYW0gOiBhZGRlZCBwYXJzZXJJbnRlcm5hbHMuaCwgb29wcy4KLQotTW9uIEZlYiAyMiAxMToyNDo1NiBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlckludGVybmFscy5oOiBhZGRlZCB0aGlzIGhlYWRlciBnaXZpbmcgYWNjZXNzIHRvIHRoZSBwYXJzZXIKLQkgIGludGVybmFsIGZ1bmN0aW9ucy4KLQkqIGRvYy9NYWtlZmlsZS5hbSA6IGFkZGVkIGEgcmVidWlsZCB0YXJnZXQgd2hpY2ggcmVidWlsZHMgdGhlIGZ1bGwKLQkgIHNldCBvZiBkb2N1bWVudGF0aW9ucwotCSogcGFyc2VyLltjaF0gdHJlZS5bY2hdIHZhbGlkLltjaF06IHNlcmlvdXMgdXBkYXRlcyB3LnIudC4gcGFyc2luZwotCSAgdGhlIGludGVybmFsIHN1YnNldC4gCi0JKiAqLmMgKi5oOiBtb2RpZmljYXRpb25zIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbiB1c2luZwotCSAgZ3RrLWRvYywgY2xlYW51cCBvZiBmdW5jdGlvbnMgYmxvY2tzLCByZW9yZ2FuaXNhdGlvbiBvZiBzdHJ1Y3QKLQkgIGRlY2xhcmF0aW9ucy4KLQotVHVlIEZlYiAxNiAxNzoyNzoyOSBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIE1ha2VmaWxlLmFtLCBzcGVjLCBkb2MvTWFrZWZpbGUuYW0gOiB1cGdyYWRpbmcgdG8gMC45OS44LCBmaXhpbmcKLQkgIHRoZSB0YXIgYW5kIHNwZWMgZmlsZSB0byBpbmNsdWRlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvYy4KLQotMTk5OS0wMi0xMyAgTnVubyBGZXJyZWlyYSAgPG5tcmZAcm5sLmlzdC51dGwucHQ+Ci0KLQkqIGRvYy8uY3ZzaWdub3JlOiBBZGRlZCB0aGlzIGZpbGUuCi0KLU1vbiBGZWIgIDggMTk6Mjc6NTYgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLmM6IGZpeGVkIHhtbEdldFByb3AgdG8gcmV0dXJuICIiIHdoZW4gdGhlIGF0dHJpYnV0ZQotCSAgZXhpc3RzLCBldmVuIGlmIHRoZSBub2RlLWxpc3QgaXMgTlVMTC4KLQotTW9uIEZlYiAgOCAxNjoxMDoxNSBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuYzogcGF0Y2hlZCBhbiBlcnJvciBvdXRwdXR0aW5nIGVtcHR5IGF0dHJpYnV0ZSB2YWx1ZXMuCi0JKiBNYWtlZmlsZS5hbSBhbmQgZG9jL21ha2VmaWxlLmFtOiBoYXZlIGJlZW4gdXBkYXRlZCBkdXJpbmcgdGhlCi0JICB3ZWVrLWVuZC4gU29ycnkgZm9yIGFuIGVtcHR5IENWUyBsb2csIEkgZ290IGEgc2hlbGwgcHJvYmxlbS4KLQotTW9uIEZlYiAgMSAxMjoxMDoxMyBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuaDogY2xlYW5lZCB1cCB1c2luZyBlbnVtcyBpbnN0ZWFkIG9mIGRlZmluZXMKLQkqIHBhcnNlci5jLCB2YWxpZC5bY2hdOiBtb3JlIHdvcmsgb24gcGFyc2luZy9vdXRwdXQgb2YgZWxlbWVudAotCSAgZGVjbGFyYXRpb25zCi0KLVN1biBKYW4gMzEgMjI6MDY6NDggQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB2YWxpZC5bY2hdLCB0cmVlLmMsIHBhcnNlci5jIDogbW9yZSB3b3JrIHRvd2FyZCBmdWxsIHBhcnNpbmcKLQkgIG9mIFhNTCBEVERzLgotCSogUkVBRE1FOiBhZGRlZCBpbmZvcm1hdGlvbnMgYWJvdXQgbWFpbGluZy1saXN0IGFuZCBvbi1saW5lCi0JICBkb2N1bWVudGF0aW9uCi0KLTE5OTktMDEtMjcgIFJhamEgUiBIYXJpbmF0aCAgPGhhcmluYXRoQGNzLnVtbi5lZHU+Ci0KLQkqIGNvbmZpZ3VyZS5pbiAoWE1MX0lOQ0xVREVESVIpOiBVc2UgLUkgbm90IC1MIGZvciBpbmNsdWRlcy4KLQotU3VuIEphbiAxNyAyMDowNjozNiBDRVQgMTk5OSBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5jLCB0cmVlLltjaF0gOiBtb3JlIHdvcmsgdG93YXJkIGNvbmZvcm1hbmNlIHRlc3RpbmcsCi0JICBhZGRlZCBhIGxhc3QgZWxlbWVudCB0byBhY2NlbGVyYXRlIHBhcnNpbmcgb2YgdmVyeSBmbGF0IHN0cnVjdHVyZXMKLQkgIHN0YXJ0ZWQgd29ya2luZyBvbiBpbnRlcm5hbCBzdWJzZXQgRWxlbWVudCBjb250ZW50IGRlY2xhcmF0aW9uLgotCSogdmFsaWQuW2NoXSA6IGZpcnN0IGN1dCBhdCBhZGRpbmcgY29kZSB0b3dhcmQgdmFsaWRhdGlvbi4KLQkqIHByZXZpb3VzIGNoYW5nZXMgaGFkIGFsc28gc21hbGwgaW1wYWN0IG9uIG1vc3QgZmlsZXMsIGVzcGVjaWFsbHkKLQkgIHRoZSBjb25mb3JtYW5jZSB0ZXN0aW5nIHVzaW5nIEphbWVzIENsYXJrIHRlc3Qgc3VpdGUuCi0KLVN1biBKYW4gMTcgMTQ6NDU6MDYgQ0VUIDE5OTkgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0ZXN0LyogOiB1cGRhdGVkIHRoZSBleGFtcGxlcywgbW9zdCBvZiB0aGVtIHdlcmUgbm90IHdlbGwKLQkgICAgICAgICAgIGZvcm1lZCAoaHVtbSksIGFuZCBhZGRlZCByZGYyLgotCSogcmVzdWx0LyogOiByZXN1bHRpbmcgY2hhbmdlcyBpbiB0aGUgb3V0cHV0LgotCi1TdW4gRGVjICA2IDEzOjA2OjU4IEVTVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jOiBjaGFuZ2VkIHRoZSBiZWhhdmlvdXIgb2YgeG1sR2V0UHJvcCBvbiBOVUxMIHZhbHVlcy4KLQotU2F0IERlYyAgNSAxMjoyNTowOSBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuYzogcGF0Y2hlZCBhIGJ1ZyBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBlbXB0eSBhdHRyaWJ1dGVzCi0KLUZyaSBOb3YgMjcgMDE6MzY6NTQgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBlbnRpdGllcy5bY2hdLCB0cmVlLltjaF0sIHRlc3Rlci5jOiBhZGRlZCBjb3B5IGludGVyZmFjZXMKLQkgIGZvciBub2RlL3RyZWVzL2RvY3VtZW50cy8uLi4gQmlnZ2VzdCBwcm9ibGVtIGlzIG5hbWVzcGFjZQotCSAgc3VwcG9ydCB3aGVuIGNvcHlpbmcgc3VidHJlZXMuCi0KLVN1biBOb3YgMTUgMTk6NTk6NDcgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYywgZW50aXRpZXMuYzogaW1wcm92ZSBlbnRpdGllcyBhbmQgY2hhciByZWYgZW5jb2RpbmcsCi0JICBhbmQgY2xlYW51cHMgb2YgZXJyb3IgbWVzc2FnZXMuCi0KLUZyaSBOb3YgMTMgMTM6MDM6MTAgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYywgZW50aXRpZXMuYzogc2ltcGxlIGJ1ZyBodW50aW5nIGRvbmUgZHVyaW5nIHJwbTJodG1sIGFuZAotCSAgcnBtZmluZCBpbnRlZ3JhdGlvbi4KLQotU3VuIE5vdiAgOCAxMzoxMTowNyBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5bY2hdOiBBZGRlZCBpbnRlcmZhY2VzIGFsbG93aW5nIHRvIHNwZWNpZnkgYSBTQVgKLQkgIGhhbmRsZXIgYmVmb3JlIHBhcnNpbmcuCi0KLVN1biBOb3YgIDggMDk6Mzk6MTcgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYzogcmVkaXJyZWN0IGFsbCBlcnJvcnMgcmVwb3J0aW5nIHRocm91Z2ggdGhlIFNBWAotCSAgZXJyb3IgZnVuY3Rpb24KLQotV2VkIE5vdiAgNCAxNDoyMTo1NCBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGVudGl0aWVzLmM6IHJhdGhlciB1c2UgSEFWRV9TTlBSSU5URiBhbmQgbm90IGRlcGVuZCBvbiBnbGliCi0JKiBsaWJ0b29sLCB0bG1haW4gLi4uOiB1cGRhdGUgb2YgdGhlIGxpYnRvb2wgZmlsZXMKLQotMTk5OC0xMS0wNCAgTWlndWVsIGRlIEljYXphICA8bWlndWVsQG51Y2xlY3UudW5hbS5teD4KLQotCSogZW50aXRpZXMuYzogVXNlIGdfc25wcmludGYgaW5zdGVkYSBvZiBzbnByaW50Zi4KLQotU3VuIE5vdiAgMSAxNDozMTowNiBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGVudGl0aWVzLmMsIHBhcnNlci5jOiBkZWJ1ZyBhbmQgY2xlYW51cCBvZiBDaGFyUmVmIGhhbmRsaW5nL3NhdmluZy4KLQkgIGFkZGVkIGVudDUgdGVzdCBmb3IgdGhpcyBwdXJwb3NlLgotCSogcGFyc2VyLmMsIHBhcnNlci5oOiBmb3JtYXR0aW5nLCBjb21tZW50cyBhbmQgVVRGLTggcGxhbm5pbmcuCi0KLUZyaSBPY3QgMzAgMDE6MzY6NTIgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYzogZml4ZWQ/IGEgc3RyYW5nZSBlcnJvciBkdWUgdG8gY29tcHJlc3Npb24gb24gYSBHV1AKLQkgIGRvY3VtZW50LgotCi1UaHUgT2N0IDI5IDAwOjQ4OjQ1IEVTVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5bY2hdOiBidWcgZml4aW5nCi0JKiBlbnRpdGllcy5bY2hdOiBkZWZpbmVkIGEgc3BlY2lmaWMgdHlwZSBmb3IgcHJlZGVmaW5lZCBlbnRpdGllcwotCSogZG9jL3htbC5odG1sOiBtb3JlIGRvY3VtZW50YXRpb24gb24gdGhlIGxpYnJhcnksIGhvdyB0byB1c2UgaXQsCi0JICBvdmVydmlldyBvZiB0aGUgaW50ZXJmYWNlcy4KLQotV2VkIE9jdCAyOCAxNzo1NjozNSBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuW2NoXTogbW9yZSBjbGVhbnVwIG9uIHRoZSBBUEksIG1hZGUgdGhlIHRyZWUgbW9yIGNvbmZvcm1hbnQuCi0KLVR1ZSBPY3QgMjcgMTc6NTQ6MDAgRVNUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLmM6IGNvcnJlY3RlZCBhIHNtYWxsIGJ1ZwotCSogZG9jL3htbC5odG1sOiBjb250aW51aW5nIHdyaXRpbmcgZG9jdW1lbnRhdGlvbi4KLQotVHVlIE9jdCAyNyAxNzo1NDowMCBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGRlYnVnWE1MLmggZGVidWdYTUwuYzogYWRkZWQgZGVidWdnaW5nIHV0aWxpdGllcy4KLQkqIHRlc3Rlci5jOiBhZGRlZCAtLWRlYnVnIHN3aXRjaC4KLQkqIHRyZWUuYzogcGF0Y2hlZCBhbiBpbmNvcnJlY3Qgbm9kZS0+dHlwZSBhc3NpZ25tZW50LgotCSogcGFyc2VyLmM6IGZvcm1hdHRpbmcsIGVuc3VyZSB0aGF0IG5vZGUtPmRvYyAhPSBOVUxMIGluIGF0dHJpYnV0ZXMKLQotVHVlIE9jdCAyNyAwMToxNTozOSBFU1QgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHBhcnNlci5bY2hdIFNBWC5jIHRyZWUuW2NoXTogbGFyZ2UgYW1vdW50IG9mIGNoYW5nZXMgdG8gaW1wcm92ZQotCSAgZW50aXR5IHN1cHBvcnQgYW5kIHByb3ZpZGUgYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gY2xvc2UgdG8KLQkgIERPTSBvbmUgKGVudGl0eSByZWYgbm9kZXMsIGFuZCBhdHRyaWJ1dGUgdmFsdWUgYXMgdHJlZSkuIEkgdHJpZWQKLQkgIHRvIHByZXNlcnZlIHRoZSBpbnRlcmZhY2UgYnV0IHRoaXMgd2lsbCBzdXJlbHkgYnJlYWsgc29tZSBhcHBzCi0JICAoSSBoYXZlIHRvIGNoYW5nZSBycG0yaHRtbC9ycG1maW5kIGZvciBleGFtcGxlKS4gSSBoYWQgdG8gY2hhbmdlCi0JICB0d28gaW50ZXJmYWNlcywgYW5kIHRoZSBnZW5lcmF0ZWQgdHJlZSBpcyBzb21ld2hhdCBkaWZmZXJlbnQuCi0JKiBkb2MvKiA6IHN0YXJ0ZWQgZG9jdW1lbnRpbmcgdGhlIFhNTCBsaWJyYXJ5LCB0aGUgdHJlZSBhbmQKLQkgIERPTS9Db3JiYS4gVGhpcyBpcyBhIGZpcnN0IHN0ZXAuCi0KLVNhdCBPY3QgMjQgMTQ6MjM6NTEgRURUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYzogU2V0IHVwIHRoZSBmb25jdGlvbnMgY29tbWVudCBibG9jaywgYm9yaW5nIGJ1dCB1c2VmdWwuCi0JKiBwYXJzZXIuaCwgU0FYLmMsIHBhcnNlci5jOiBub3cgYXR0cmlidXRlcyBhcmUgcHJvY2Vzc2VkIHRocm91Z2gKLQkgIHRoZSBTQVggaW50ZXJmYWNlLiBUaGUgcHJvYmxlbSBpcyB0aGF0IG15IFNBWCBpbnRlcmZhY2UgZGl2ZXJnZWQKLQkgIHF1aXRlIGEgYml0IGZyb20gdGhlIG9yaWdpbmFsIG9uZSwgd2VsbCB0aGlzIGlzIG5vdCBhbiBvZmZpY2lhbAotCSAgc3BlYywgYW5kIHRyYW5zbGF0aW5nIGl0IGZyb20gSmF2YSB0byBDIGlzIGhhaXJ5IGFueXdheS4uLgotCi1UdWUgT2N0IDIwIDAyOjExOjIxIEVEVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogU0FYLmMsIGVudGl0aWVzLmMsIHRyZWUuYywgZW5jb2RpbmcuYywgZXJyb3IuYzogU2V0IHVwIHRoZQotCSAgZm9uY3Rpb25zIGNvbW1lbnQgYmxvY2ssIGJvcmluZyBidXQgdXNlZnVsLgotCi1TdW4gT2N0IDE4IDIwOjQwOjU4IEVEVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogZW5jb2RpbmcuW2NoXSwgTWFrZWZpbGUuYW06IEFkZGVkIHRoZSBVVEYtOCwgVVRGLTE2IGFuZCBJU08gTGF0aW4gMQotCSAgY29udmVyc2lvbiByb3V0aW5lcy4gSG93ZXZlciB0aGV5IGFyZSBub3QgeWV0IHVzZWQgdG8gY29udmVydCB0aGUKLQkgIGlucHV0cy4gVGhlIGNvcmUgd2lsbCBydW4gd2l0aCBVVEYtOC4KLQotU3VuIE9jdCAxOCAxNTowODoxOSBFRFQgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuYyA6IG1ha2Ugc3VyZSB0aGF0IHRoZSB0eXBlIGlkIGlzIHByb3Blcmx5IHNldC11cCB3aGVuCi0JICBhIG5ldyBvYmplY3QgaXMgYWxsb2NhdGVkLCBuZWVkZWQgZm9yIERPTS4KLQotU2F0IE9jdCAxNyAwMjo0MzoyMSBFRFQgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIHRyZWUuaCwgdHJlZS5jOiBPaywgdGhlIG1haW4gb2JqZWN0cyBpbiB0aGUgdHJlZSB3aWxsIGJlIG5hdGl2ZQotCSAgY29yYmEgb2JqZWN0cywgaXQgY29zdHMgOCBieXRlcyBwZXIgTm9kZSwgQXR0cmlidXRlIGFuZCBEb2N1bWVudAotCSAgYnV0IGl0IHNpbXBsaWZpZXMgdGhlIENvcmJhIGludGVncmF0aW9uIGEgbG90IChubyBleHRyYSBpbnRlcmZhY2UKLQkgIG9iamVjdHMgdG8gYWxsb2NhdGUvZnJlZSkuCi0KLVR1ZSBPY3QgMTMgMjE6NDY6NTcgRURUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB0cmVlLmgsIHRyZWUuYywgcGFyc2VyLmM6IGFkZGVkIHByZXYgYW5kIGRvYyBwb2ludGVycyB0byBOb2RlLAotCSAgYW5kIGNoYW5nZWQgTk9ERXMgY29udGFudHMgZm9yIGNvbmZvcm1pdHkgd2l0aCBET00gTGV2ZWwgMQotCi1XZWQgT2N0ICA3IDIzOjQyOjQ2IEVEVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogYWRkZWQgaG9va3MgdG8ga2VlcCB0cmFjayBvZiBzZXJ2YW50cyB3aGVuIGNyZWF0aW5nIG9iamVjdHMKLQkgIHhtbERvYyBhbmQgeG1sTm9kZSAoZm9yIENvcmJhIGV4cG9ydCkuCi0KLVN1biBPY3QgIDQgMDM6MTg6MDkgRURUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBhZGRlZCB4bWwtY29uZmlnIHNjcmlwdC4KLQotVGh1IE9jdCAgMSAxNjoyMjozNyBFRFQgMTk5OCBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGF1dG9nZW4uc2ggOiBhcHBsaWVkIHBhdGNoIGZyb20gRnJlZGVyaWMgRGV2ZXJuYXkgPGRldmVybmF5QGlzdGFyLmZyPgotCSAgdG8gYXV0b3VwZGF0ZSBsaWJ0b29sIGFuZCBhdXRvbWFrZSBjb25mIGZpbGVzLgotCi0xOTk4LTA5LTMwICBNaWd1ZWwgZGUgSWNhemEgIDxtaWd1ZWxAbnVjbGVjdS51bmFtLm14PgotCi0JKiBNYWtlZmlsZS5hbTogVXNlICc/JyB0byBzZXBhcmF0ZSB0aGUgc2VkCi0JY29tbWFuZHMgYXMgJywnIGlzIHVzZWQgd2hlbiBwZW9wbGUgcGFzcyAtV2wsc29tZXRoaW5nLgotCi1UaHUgU2VwIDI0IDE1OjEzOjI5IEVEVCAxOTk4IERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogdHJlZS5jLCB0cmVlLmg6IGFkZGVkIGEgcGVyLWRvY3VtZW50IGNvbXByZXNzaW9uIGludGVyZmFjZS4KLQotVHVlIFNlcCAyMiAyMDo0NzozOCBFRFQgMTk5OAotCi0JKiB0cmVlLmMsIHRyZWUuaDogYWRkZWQgc2F2aW5nIHdpdGggY29tcHJlc3Npb24gYW5kIGFkZGVkIGludGVyZmFjZXMKLQkgIHRvIGNvbnRyb2wgdGhlIGNvbXByZXNzaW9uIGxldmVsICh4bWxHZXRDb21wcmVzc01vZGUsCi0JICB4bWxTZXRDb21wcmVzc01vZGUpIGFuZCBhIG5ldyBzYXZlIHRvIGZpbGVuYW1lIGZ1bmN0aW9uICh4bWxTYXZlRmlsZSkuCi0KLU1vbiBTZXAgMjEgMjA6MTE6MTMgRURUIDE5OTggRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBwYXJzZXIuYzogY29ycmVjdGVkIGEgbG9vcCBmb3IgZmlsZXMgb2Ygc2l6ZSAwCi0KLTE5OTgtMDgtMjAgIFJhamEgUiBIYXJpbmF0aCAgPGhhcmluYXRoQGNzLnVtbi5lZHU+Ci0KLQkqIGVycm9yLmg6IE5ldyBmaWxlLiAgQ29udGFpbnMgcHJvdG90eWVzIGZyb20gYGVycm9yLmMnLgotCi1UaHUgQXVnIDEzIDE5OjAyOjM0IDE5OTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KLQotCSogTWFrZWZpbGUuYW0gKHhtbGluY2Rpcik6IE5ldyBtYWNyby4KLQkoeG1saW5jX0hFQURFUlMpOiBSZW5hbWVkIGZyb20gaW5jbHVkZV9IRUFERVJTLgotCi1UaHUgQXVnIDEzIDAwOjQwOjE0IEVEVCAxOTk4ICBEYW5pZWwgVmVpbGxhcmQgPERhbmllbC5WZWlsbGFyZEB3My5vcmc+Ci0KLQkqIGFwcGxpZWQgc21hbGwgcGF0Y2ggb24gbnVtZXJpYyBlbnRpdGllcyBmcm9tCi0JICBDaHJpc3RvcGhlciBCbGl6emFyZCA8YmxpenphcmRAYXBwbGllZHRoZW9yeS5jb20+Ci0KLVdlZCBBdWcgMTIgMjM6MTI6NTggRURUIDE5OTggIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogTmV3IHJlbGVhc2UgMC4yLCByZW1vdmVkIHRoZSBvbGQgeG1sXyogZmlsZXMgc28gdGhhdCBpdCdzCi0JICAgIGNvaGVyZW50IHdpdGggdGhlIG90aGVyIENWUyBiYXNlIChXM0MpLCBmYXIgYmV0dGVyIGNvbmZvcm1hbmNlCi0JICAgIHRvIHN0YW5kYXJkLCBuZXcgbmFtZXNwYWNlcywgZGVjZW50IGVudGl0aWVzIHN1cHBvcnQsIGJlZ2lubmluZwotCSAgICBvZiBhIFNBWC1saWtlIGludGVyZmFjZS4gTmVhcmx5IG5vdGhpbmcgbGVmdCBpbnRhY3QsIGV2ZW4gdGhlCi0JICAgIHRlc3QgZXhhbXBsZXMgLi4uCi0KLTE5OTgtMDctMzAgIENocmlzdG9waGVyIEJsaXp6YXJkICA8YmxpenphcmRAYXBwbGllZHRoZW9yeS5jb20+Ci0KLQkqIC5jdnNpZ25vcmU6IEFkZCAuZGVwcyBkaXIKLQotU3VuIEp1bCAyNiAxNzoyOTo1MiBFRFQgMTk5OCAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiB4bWxfdHJlZTogY2hhbmdlZCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGZvciBuYW1lIGluIHhtbE5ld05vZGUKLQotU3VuIEp1bCAyNiAwMDoxNzo1MSBFRFQgMTk5OCAgRGFuaWVsIFZlaWxsYXJkIDxEYW5pZWwuVmVpbGxhcmRAdzMub3JnPgotCi0JKiBjb25maWd1cmUuaW46IGFkZGVkIHRlc3QgZm9yIENQUAotCSogQVVUSE9SUywgQ2hhbmdlbG9nOiB0aGUgb3JpZ2luYWwgb25lcyBkaWRuJ3QgZ2V0IGNvbW1pdGVkIGJ1dCB0aGUKLQkgICAgZ2xpYiBvbmVzIGluc3RlYWQsIGZpeGVkLgotCSogTWFrZWZpbGUuYW06IGNvcnJlY3RlZCBhbiBlcnJvciBpbiBsaWJyYXJ5IG5hbWluZwotCi1GcmkgSnVsIDI0IDE2OjQ3OjE0IDE5OTggIERhbmllbCBWZWlsbGFyZCA8RGFuaWVsLlZlaWxsYXJkQHczLm9yZz4KLQotCSogaW50ZWdyYXRlZCBjb2RlIGRldmVsb3BwZWQgYXQgVzNDCi0JKiBjaGFuZ2VkIHRoZSBvcmlnaW5hbCBDb3B5cmlnaHQKLQkqIG1pZ3JhdGVkIHRvIGF1dG9tYWtlCi0JKiBwcmVmaXhlZCB0aGUgZmlsZW5hbWVzIGJ5IHhtbF8gdG8gYXZvaWQgZmlsZW5hbWUgY2xhc2hlcwotCg==